From a98d24030fb6d603f5bd05a609214722932a9bf0 Mon Sep 17 00:00:00 2001 From: suobset Date: Sun, 19 May 2024 12:02:10 -0400 Subject: [PATCH] Add new build with Estimated Time of Completion --- .DS_Store | Bin 6148 -> 0 bytes .nojekyll | 0 1.png | Bin 713350 -> 0 bytes 404.html | 12 +- CNAME | 1 - README.md | 7 - assets/js/0e5d29c6.71123a3d.js | 1 + assets/js/0e5d29c6.d79f182d.js | 1 - ...96441.3c6437ae.js => 17896441.09ad3e46.js} | 2 +- ...91b9e.78f69afa.js => 1f391b9e.21d823d1.js} | 2 +- assets/js/376.3bd71d03.js | 1 + assets/js/3cc330c4.e99720cc.js | 1 - assets/js/455.c9bcea77.js | 1 - assets/js/81cbbac2.7fb1e018.js | 1 - assets/js/81cbbac2.abb2e1c9.js | 1 + assets/js/9cdb66f6.1f491dea.js | 1 + ...50ff2.d66f7554.js => a649dc75.a8b533b6.js} | 2 +- ...03007.508d10b3.js => b2e03007.3c3a4290.js} | 2 +- ...a8d8d.3d00f8c6.js => c1ca8d8d.276c4e10.js} | 2 +- ...564cb.1d8fd072.js => d93564cb.aaec1f3b.js} | 2 +- assets/js/main.3c3a3d96.js | 2 + ...CENSE.txt => main.3c3a3d96.js.LICENSE.txt} | 0 assets/js/main.ee8df3a2.js | 2 - assets/js/runtime~main.1cdde959.js | 1 - assets/js/runtime~main.80684fdb.js | 1 + communicationDesign/index.html | 12 +- docs/category/definitions/index.html | 12 +- docs/category/thesis-milestones/index.html | 12 +- docs/definitions/cpp/index.html | 12 +- docs/definitions/llvm/index.html | 12 +- docs/definitions/rust/index.html | 12 +- docs/definitions/x86/index.html | 12 +- docs/definitions/x86asm/index.html | 12 +- docs/intro/index.html | 12 +- docs/thesis/pt2init/index.html | 12 +- docs/thesis/sem1/index.html | 12 +- docs/thesis/syslab/index.html | 12 +- iCons4-backend/docusaurus.config.js | 6 +- index.html | 12 +- markdown-page/index.html | 12 +- massurc/index.html | 12 +- server.bundle.js | 98321 ---------------- sitemap.xml | 1 + 43 files changed, 113 insertions(+), 98441 deletions(-) delete mode 100644 .DS_Store create mode 100644 .nojekyll delete mode 100644 1.png delete mode 100644 CNAME delete mode 100644 README.md create mode 100644 assets/js/0e5d29c6.71123a3d.js delete mode 100644 assets/js/0e5d29c6.d79f182d.js rename assets/js/{17896441.3c6437ae.js => 17896441.09ad3e46.js} (99%) rename assets/js/{1f391b9e.78f69afa.js => 1f391b9e.21d823d1.js} (93%) create mode 100644 assets/js/376.3bd71d03.js delete mode 100644 assets/js/3cc330c4.e99720cc.js delete mode 100644 assets/js/455.c9bcea77.js delete mode 100644 assets/js/81cbbac2.7fb1e018.js create mode 100644 assets/js/81cbbac2.abb2e1c9.js create mode 100644 assets/js/9cdb66f6.1f491dea.js rename assets/js/{4da50ff2.d66f7554.js => a649dc75.a8b533b6.js} (64%) rename assets/js/{b2e03007.508d10b3.js => b2e03007.3c3a4290.js} (97%) rename assets/js/{c1ca8d8d.3d00f8c6.js => c1ca8d8d.276c4e10.js} (70%) rename assets/js/{d93564cb.1d8fd072.js => d93564cb.aaec1f3b.js} (82%) create mode 100644 assets/js/main.3c3a3d96.js rename assets/js/{main.ee8df3a2.js.LICENSE.txt => main.3c3a3d96.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.ee8df3a2.js delete mode 100644 assets/js/runtime~main.1cdde959.js create mode 100644 assets/js/runtime~main.80684fdb.js delete mode 100644 server.bundle.js create mode 100644 sitemap.xml diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 64bf17e88148beaee5e992c28a54d3f141e4bd73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK&2G~`5T0#a;!siL08%eVmbivC2^9r#G5I-gfJ2Swfudm7QEJuoMzKQ5B)YS>P1GPF7s}||Me`S7KkEfq zGnN`q@EosFc^suO!k8ztVi~XuTyF;W+jVG%#*|P|{eHzy_`d#9qBgNXZA4Beqj5Eo zUc$dqiR{rESYOj%CGy)!shmGyU;>oji)9dVamQ8Q*ywhrWdrw=-W!-)7X!pgz z@H9Qkp?$4SvaoLs8Z0F>sWR8D&B@FfzRU(&^K6W Sgau-M1QZRnu?+lI27Uvp%8zOQ diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/1.png b/1.png deleted file mode 100644 index b6739673b9923fa6ef3aeacb8c4efd0e8735445e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 713350 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྾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 z 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

TF1|$DJLm>zWRtx;m5p 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

y zuq`!WN3t3nxYjLB*+O&F(_GfXn9a}rmJMxE zq?dL-YKT|4TzB`y;=1^5TI8d|4L4+uW!<>WF%XE2PnDuLu+RNc)3dmK~gVXTrmMSzL> z8{N=Jc|Z6K--F+&9^&h<9>vU6B|y2IdnEXtTVBy!L50K{J$H=7R-Bbwk)(*?ssP0O{0xFOUooxy9?M> zV4n30cazSlz8l-Sd@7HE>G6^}=Jh0be)jE*CgLICwkc(%l3LG0dcomAxh?B(7S?>h zhKhA4O9aP=LP+`xB}Cr?{2FwvYOnWBAg%qN#3WdAlr_s!%e`@eyPIW~#OvgieE3(> z&@W|SlIcsddh}+31X0vRAiOYUTFKeqQ~9X-32P=fx>tJU=F;X;9Sj!zT%%j$-1}qr z2;&O^eyvUh?AgGs>D3I`9hI; zh1G!jx(Je43v@AXyIY~k=`*rwA&A;lc(JF(L8$Eu_($ksOLEN2?Czt7_A*S^=BwHB zR;g7)2h0!0{oowdi?6b=BY@%WNAap!4oW2-$<~KZe@qaxR~EPLyKS8#fJ}UUX;{l6 z!CgOf7#J1fEj~9`I{(jSAJ3SW-&cfprOL35$vgdc7`JIwjgC zlQY}CcByPO=Z1r|Q^yN&PDGzni0TIsU=Wt%NF7g~Sy|7Ex^goVUT|={?)^*buQ{j# z+g-GUvE_Wak>h(NUKK|6^s-c^e2zEwg^biUSwy_|`-*D3k~kQZkO-+0ax))+0l#909 zE;t%*GFwqAvd~P~^sWZ+RO@AP|%wsz46f0f(lu{sD9iQR^Uw(}bJ2{WD90TiMywQf{3d;U|iH`oB$%n|Uk**aejwc=5^@cbq(e{WYm9fh zlOsa-rweC+*2MqL8rCzSIdkY7P|PM^ufI^I7EOZ#o}PeiL}~IQPFxLr8wLINAm>3g z(Rh_U#I~}WYuGpIWbLUmI;!OaX*6=l=GCQCU`*)&zrvxt&1StOCsg@WFz#BxeUMDF zaJ0Ff<{m>63!;*13shfJs3cKgfF1{CL2Rq8!GYSlkrEL}FuO_hG#$cml2WoV0WtN; zk&QIlYo-!vW0w00i%!;ifNpAC2UuA`AlwwxPdaeTdkz{u2E8|)5A6O~De$H4_pay* zm&x>Db8jY&<0fBty$8OykE`(d?~TrQrMC(@TB!X1!R5&*v(cE@ESQ7n>@Tw{Vl+=@ z0vflm$!A9L%WpYBWnLMzNe<%>8O3wS%~`HX5! zF*A;-OhJ!9iT3(eY2{}5;YgS*>Qb6bhG?sN!@oRZAR-|rkKf}toESN6?Fm@LdMU0vK>tC`eYBtrQ7i{ifI&#)hcFp;#Q4X|v|is>m}3RX#52)Jb)%J+)}FyXdLz?v;i+f7 zsxAe^-Z#dJq0O=N+8jYA!|R1v=oh^K6It1tA9b#AglD;303*r~q`&`OJl?y%>0&62>vaa<48XKrW$FlPX z*elmgZe^HGlfRXx{iX0eO~ri%;i&wxcH6K;R8MZrXyf5uUTd!MKNq7CRHN}$;{rDs zA(?BHKBJifv9kS)9KySR52mQz2LpcTj0Tx~X+!g3erKDT;?q(GpCOF{dBAfoIjUD< z65y*An414)O;Evo9eU0#hT%L_3sv#fdH*YQO%Ul?QP7DuZXOjX$+Ag6`c?hsxl-N7 zto}w2wb(@sFk%uCa%p;>i+^MAF{tthx;(r~<_-B4%+aL10JJpO%~Cr3eD{Nu9KpMv zugT_2uljhMc%RA;NFPyMZ3-RA`&5r%fer8h&-xqFG|4!V-yhFwc~80x6kCVaN))xD zUe&~IIYvAk7>(i?z52@4FF6_oFD_;7>q8<8jR{uYSwaG?T8p7azih!FvS!pT?dA+9 z>%-Ak$hz5uJ|Vp1u=n*n@tqMuACsuhpl#kto}`J#ojBY}dYqQCQg<6th5X}-(4`oc z3tCLS0I!{jdql;zWsvyZ(2P~Mx%sFwN`H|qpnAn#3T6*e;cnxPvG$B;G@B>dAz1Hk z<2Gq#`fSvu7DBP!OJ3xX8a2jdHG0Rs<+vpZ#OySasu>kV4*PWBIbt=^ch*+jJ&{5< z##(i}{=AfrGvJvm@?j&!HtlQlFgeoU;z{?Na$f3{{; zIT|npyWJ9+^zvAQ#PSQ;xCPa3LkGQo-t-!JNLqg05M|r~_NwC;Mmwe$yDL+0M-TQY z;=IhayFaj%%HZ0NT(yl=VVzEh`L=KH(ll`eWXiO+t@!Yr7(I%5Uqh_YCqn*w=1;1| zMFGg(2V&#P(Ke&yQ@?bmF6&?ZBg;?E9vj@D^?Sa{_CV;X)#K62YA1zs(Hzc-?3_Wi ze-~Me3I4;Fow^(~Xr_s)nhMZpN_YXfG^C3BW1@2>Pwj^=tzxgePMcS-n3QAJ5S0jY zeUbV);KP;@Ba1Q3f_SC3Rj4E9Eyd&6P)1V;Q3Xmtk>tm;Q{2yD?ClEVmI=Nwl6B)c z&T_3l-8H9Hw6Dsr9cf(BKg==+&h|)*eG#u`FEy={d?wjwM((jb_BQ+=il|TV&P6@- zZ19o5H&(u?v^|3~Fn5$+;cRzxeAp+vy^K8NoYpdtDv^`^Z1W*y+0GB+ymflVVLWsS zl(C}TuI%5-x>>Xm=+slx;{uv`q-H7obfWvCnK(MV;loi~IrmPz^~ts0vdJd3#8xQpXB{S2Kox^jxCRAz znCecBy217PXyX{onmpTITbD5BC)(ylU66Pz;qbh0X z`6jJRAU$6QdZRJU+x|lIj{TDoR)yuI;QG(I5195W4`pjZu&aIKSvLS~r9yfhtFE2C zaTl&Hd8JwtMaXK?Lx>7w(Nwfp8JUFYj-(@-R~deRx@*`Ae2_P>uYC& z+)=x{upFwRI><1>DL-n5Nu3qI89{%ZjLt3-@jm?Bz1h!;b!wa45gcCWq=xosvVB*- z2)281?fN28XZYG6mGRJlyd0jhzFi2q zNqa#QRgTH;#*KKg-wu*0SMf+C+_S1U5IUCxxZmqz`$0Q)>eG(wd^cLR8-V$2o3D?z z2pR#{Y)AH60m3WJ0V+AjrR_wbCJH|c4E1-Ip&P;+m%9E12Y=ETa_aX7{tN}>Ek_9Q zga-Bm(UITRE3Hku3&Ezl(D;{d#t;|B>V^n4kn#Q49RsdNw)~Gq@bM+3;8Q`dD4qGm zZkvkiwobP`+7uwew(zzHr9#|o6MmE?R}5x?PG8!br$%010>urLlbnkj7QHgS76B0) z8uv|`liPxzCnrS2c6_AHQyDp@mKkJ7{Z3u2L@&ktokI*5r?uS>KIe&R@zNc4JQoor z$h7cIr`E1RHM)S-@V16ELe27zV$jKrJ&ktH8 zyO+nQtU`U3RXg2l>Wx!n14!yoa{bDhH}*2ZqHnHWoNTO+VOjnb;2lv`^)>|mwOnKE zHNsUl8UiE^*cL`AFoaf*=)^6Xtx%e+#(tRGz7T+tlJD{@;OCaK*We;bj)xnDmUqhh z9>G*;v|m*{>0+<%H65?&{i`__Jn0rS2gvZteJ1mnTzf82+%{MHR&qo@5WGPNn`5gg zdA4oX{n}Wgo00bmgIPkOSPjPRs>y9qABSckFkMMOw5;6o%i%4mZZ_;bx>>Pd+U$ZE zB(Fzt&iU$><`1qE$S`}*7JV;^$6xiI+645WTnfM$2Eor83k#3&HhQTEoDP)jp=HL+ zE(zg+qgu>@prQ(UFc{cqXY9WoC@HjgcGt>7x1neHkFu)xk3-IzxT9Rm1zo?9&=L^^ zS;u(e-yFY?*MA53>(wN?4mbou(_bh_3SZI*GB<=T&yu4z>!y$v@84e~GZHd^x!)&+ zaJxPfP>Y>j{^)I7y2L~G%HZ^Kw21Zl$Uv&+%F^9SCilD&rRjB9bHvPzUb3Fi5{KMC zWng&(AZxNbo7M(Ke&rPbh>}1|hbvdmBr)*H3%udwSoi42sXtzv_xxSSX)$R#o*glc z1s3Hflro`)w9O4$2pl$uocvW{x`Bbh{c%>3%Y{hXLv~}V*I38hUGmoLe|6mpPsd(^ z6J(T&oTKeI3!gO#+9Uzhifuta^83yN$dWcXE*0i`+0tNtT!UyVDza0&zKr#v1aC#S zE*bTP_ofDU4_JG263ucwquj_&HKsOY|82N(a9vWoK^;r+x9*hkn)|BWNVvWq<#GLB zSKnC7q%g;A+Dd;^CL*BVC<&k@$k@1^zY(Pb7oZfJK|I0<0c zkFI?E`1NB>{cG}{YBo`h4RHDb4Iu6| zxWG>ETm{iJ|3p7lH&&4iCcN!aL?=*(AD(MlK&z0qTa{{~5kT*BNts}@pku_aE3!ZQ z?GhlfO_0y9C7dOqBac3I%`U>J++lEymc8#B-?D+gEmwt=aYuEPSk=uU7_*FiA)IPnoDLJfxMnAe%=me4QLn61Fc+xLpw9Q>K zM*Qm{krE1+<2a%{=Sz`%Z?=zrV%rCJOG>nf(mE^w@&vWb&JRjGzhvH{$#~r_47bci@mMlo zp0}LcbJiV_m*N42e=(X^I##1m5@8)E8$<`Grp~i(`*oTEjA6JeZ$%{?WTM<(yKFp-kecA0w(^?0hR0JPr_d8d5ET|ef3O-UUQ{!BD zPxQW{Jc8o>M?2z&6-QQh>qvKz<8!`fC(`IKfxbpb&~lDEJTlm=eHVQaZj|6pDsJE| zPx){jBm}{H?Ve4Ha(;PrR2hS9f$8PU@lFq-mQ$B|*9)zzSco(0e<iR2RZ!J)Tpah5!z|w;*@_QFE=h+J5B$e3%ct=vZQ@cAcQO0oIYGwh1Uz~Gq zJZz~NpDE4=7>Y7q`eX-ARZejf_o6-Et9l*6wdIfCBFb2yjGJSxPosVdg^$m2{(pRZ zWmsHIw`Bq$xD#9(w*Wzc2X_hX?k9{D=7=5`pKJHpeL&bUCHO?Dq~W9@d&4bFQYV zm_fru8YAI>E6wG;ZYqHk9c8o0!Hzu^Iqb~&pylc>z+`7}In;;FX{pefF!KkM!_ z^?EDW5YnN!ecSGO!KJ+Ec42)|KHZ3!^*+75!?TbIA}unm63DMiMbnv*4zAh zP4$vwHJNbd(aN*rM!UsVa&NohC2!*ElXzFLh#NL+l zvSw?A2ybuJp|l!$-jAuRr$=q-Gi?{?r(p`Ilgdi!BR~bMYN~W{N#@vJGTurlq1b3{ zT}TCPG-hf1(4iHUU~GeWgkuDIgayq5trU6;DUea;^J2N{yao&gd?4->?u^;g zhSnQnl6C-TH^jQ7?OIgn487O|XdUV;Q{8Eu&EnOVl0Td(@{X*G<4lIg3b1z#WXI7C z-e)J|pceIyYq;Ll@)zWEnjEi*4@K!7fF8hg0LwAeOj8_&^73)+ne zHy!Pzk?RMF5uwWCr(%KJ@NBMDR0>HF@Xl&L9*O!NACw6i-Vz051V zU4GiXDGy}i%X$9UpFzb%D~6@~RL%LJzlA(*FG6sXLV@hD!XW$W9{bTUyPgTWxU!Q! zrQO2~Sv0P2IoVN#lxMg?G$Az8d`Wc~x`0@`ALqTNT6z)rikuX~`9Vs1RTcTrxn61D5sDm%HXWGF3BEH9HH!c_7c58X5j z_s8~8m#v1wGPCfqRUb9^R;^Pjx)9Gi>=tU@2o28%(5#5wd{(ReWE?j<`ZfOk&+)b? z>^Zca$XSq`hukOe24#sU*QjbuE@TLEP6L_clJVj-Z=j{=DuxPcP2tx_p|55{y?$%0 zbGRGN;^FfSN<@H&=o1%Qn#{1kr<^E$LM}V|)XQ=KT$75rH!))9>snN~6{7&MEdwy= z3~q{84#Z{9yWbta6w|TrnxgK*^}}$*X-r}l&BJJIa*o-9HrZmEqHe@^okJT(PbJBH z;cqdL+b??{r;3H%OBFG|Q`YRXr)I)j?#DlPmOAl-5{;MVr;U!N-M~L6R;wTEJ^Oe) zKSq#-<_y1B%5f%E;<4J=ifvsh-0tt*SO12{2WLHJoz`bEsTs$i?rw^JCyu>GOWUtI zzAoEI+lI-^;$6is-RJP61i`S@6+$H>@?>lWY@Mvq*vr|q#D>GpKRV1NF7%2N0{#KC zkFouo_mXs$F^)16SvFxU+v~eYhRUP!lkUi+$-xN7VWG>XkrC4evQK_bPpl4FjlF~@9SH9<`g7W zRjxg86k#-QiJx1lb^|8+4u3rxyV$2#UXD7AX6wrAPsjzDFZk&_G5rLR zy5TwTRn{6^=AvmDkFIi=G=!m|VV$Aa2q|56{Yu5pQlx0a3L0oCMRQ_VTtSa!}PiR70Zzp7nrLJm<$vkVTr1HR65Jxdvps#ba(}B}UyQ_P+*Cufq zhIINhl4K4Kb%Cdv;oDCas$gj<+-z*&7-=G2@KPXUfro`SS@um@5P&3)XWRcqpkUjf z^j^OHF>Ej{M{To;p?bDGcL65O&Ne$`7R^H3duu)_%*SG6;^M1?xGwXn#sgYH zki4YUeUjUpavT5h1@>#pr{cPn#5MH%8cdinWY8 zB1baJ#@yJDh1adNpU%q{GUPREpUZ+i+ylH4T@%4gxDV3{9x<~0UHO6?XmdFWfKoXy zA2?%7V>A8vv0u^mLtg%`uHjHs{l&93lbmB{9ht%HG7H%Mtsv{GuhR0ww1d) z+l(k~G-}4!($-#Ze&s*HY%vx>)6HkiKKIR;8>{G0ad#Z~6X)LWXr zMwvcLy!mI7D5w0J&PGx(zqlF^`CQ$IaJx^a^|`Zjw?S78OP^9!-&$Pa0wjN)fF zu2@rd2;Ki6w^qzJ=tlbnN(9sx*26oAw0dQemm+X2u-Va7B@xux=@rsjmO^&&rc(R;=NzwP^mi0M8$!Pni zX1&5=C}J>GT}p#-P7gE;DkH=Ndrr1z8Q4M+px_~!l{>?$+JT3!zkH#>YkxR(rzNje zADnuxkf9QkWF&L~%2PWOAt)#X>AZk6=Yz97p&#hLoTvMysAUpLHQb=QL0(0B05kW; zXhSg^a(J2$G-DHZMz6WfK#D+rFzDG)1s zFJ|Y_<9Mzr0LhPhm~(n#E)swp$sS1=YqIE-?7RV5XxfUEZ48_ns<-i*brn!(IN9Tt z=yH^i0rk!^I3p>EMk9q{YKieO_Q@zo0l4y#b9+5knYXfQH|qVArY7CH_7uc$osoXi zXV=SAkHO{U7jkS>UegjsWlvgT4)uL*6yS-4;1ZEj59I(M$6<3~rs3t|ZC8j_(;?ih zJ`(rjbW@QRs`tG2PSEbk1%(a7Et6Qi0@Ah}pkrtB=jx{Cj^Hua4g8xmcA~Wm!|7By z2Sp6XHQRGj{TK|Q@ZPr|l6xK!H4RKbH32KFU8re#UcOmB@)cK|kma>%M_4S@V>TAf z&_e0pq9j@CMr%i>|5`YJ%oN{EN}dnZ)*gjHzOs=woWnH6cKQy+?Jys=M}X(jYq4*+ zs^!Lg;>WbVkLW9vgV_PPU4=3EvtiXFLY>Wz#Jm+p!;m9^6iRNAoVKv+chfVKJ~6=y zbgOX{s+px&{L_an*FI40mSRZs&poH+j{wmYC10 z_;{A8aP%?;MjdYCdC_rQxBNT{Y@1aN5*e}@HWloPk!RI-R1cH`tWl@a=Qq7KAiZYBdpsEuYPxyry$fie1H*pW=xY#&P=ELZ&(a2QZ;Cj^@21e%p8J z+hrb}mBRPAgPI$v*lF`Y=EO~ie;!MBHQ;7k0JqqaZPwM9QdGq8b zq3N=C%|Y1!megaVA$A_w8}n1mWIgN&VygtY&9UC>yVNL>#Y0mbmSueNrE*sOTQWWg z*PU~>>jfoa;B>R=dWFF#s^X)wS69R#N0(Gq+$UBFIc|0=$hearbAF%CBi?Y7ldd~8 z7rNhIpW_mwx3`7;P(|$Ebaj%m5iSQB^PB|!y%Vh3*2GXAcFJyMbU}OLD6QwlLDZL_ zCl2hLcx{)C#ELcrBQ~Sy)k`MW^qup4m^8ewJRR$nk2}%pLtD1nRG397vfNzaU!3x> zl`PVddtR)=-nTgcK=o?~?07={D;Rhm%`ET==yy>=ShGhRDtSX$*TkID1P~3N@SNVrFFJm3 z47qmv2RMAORbC){-|ouH2CN`F`Mp2vg- zp9jE$9V1Cxb&vQ#xhuwGkHR?gIZQ4a!Ytkuc|?<~ye1kQevO&)z${*E2A06}G%?`2 zNdjSwj{)ATuQi6sj@XXaKfQ?wx~=>4{h6V0)ZImi;WJnXtcYe{nlFx!mU(Z_oXt7w zpoj@cDW7V~E1cRP9#88>Fg=}4BDr|{dgSu*fK*YWCw2-boQJ&!dDPQm>7z@C=}0hkkzF^c+52pUDdKpka9jp)kZ+*3u+ zW%4rsQl0s%@y-nu^p$&pHV;QUvC+?N$c=ZFUrda)EnqcabY#AFvLZ?Ui&dBeaOnB{ z(ObT<(}P}@jGwHyR>j; zdhw{@c~jdnE55ZiL#uqPaVJfxz4*k!c=EBgSt-zslP~nJ3EnD|8E0(N6rEMQB8KGM zCIqLtN0=1dv)MhgA`U5s(2l={Y)_#klL-*sLX`S&{K67;&z!Gu6n zhak-5=mt$WUFIvRxr!D)!gkU1k&J+#T zaoOE%4YKt~=X|0$G(rGXLm_4nJx5$!<|w*SUeR1rcHig)DaA+cX3A@LrWSo~XfPoT z1Y`#$U6bboC7om|bv|$&Rj`90Q12c5&ziNnh3(<&;)sC{Df7;w*E^~%D(MhEZKHf# zk0Nnj+iKb--XLCIDjaCudu-X*FJzfXtoqHj`eg5{Od-gv{f8W-rYL>NQ=Y53<*^k{ zm1dmQla@;ytyTc)>s&JUG}v6kT&VKudOi=eRKp2UgP$-j>Ak{1Q3_1<8 z^+aRAZh|4oW2m z+-oIv9pi<^(Qngy5S;u0bDv*RV`jOVY%(OINiB^zd{|4D2ax0_FdGDh>FNCZY-2U)GkrMnqa#t zEO8`QGm!Jnn>unM=ZN@XBn#SeAu)pGYQtYJ@Z01qVot!lS{kpgxh*M4ZA$YwlH>!T z`{+XQWOC$boiJ;+(Nkr+j%v<|=S5@{?anp$+_cf<76He-+{Mdo5uFe%Gt zN(N2@G4-%N#br#zLNkR+%-V(NyX*Erx4xG43H+cp<9L`Kjy@+i{!~jUeJ+);ok(bY zVIqO@*n8A9!~0w^p|SsMIVH3LyBsG@tZZeCEMj45EcC$&NEO*g&d<_()*;43(IR+V z5kQn#`V={Gi~Gr&u8Q=4S*{F=UG$KahOO!Zx`%F<%oir%@8CweE^xQ@B9& ze8dVKuMs%6ofaJBYG~4qoU4Uy&a)*XUjat0-CvB&+sFR{KeGAX+jGTc07?Hkt#lky`2%5ua*ikg?IKjFh zzmMHaALCIXB@S|lrqm(|6O{O2=KR~?d53a5t4ZKo+ech+FKR#)-1tBWqRs(X4l>-G zejx)>J>4l{Lj>#Mt;xq@%GR3}vTmtUml+xXe_&5s0tBg{LwS8CF0 zD=jF9#y=QWL7@aXL%!knBG#3nxasA~T5nN_arDnR@N%C(K6OxOTgL)kxy(_dm(Gz$-8mWiqG^%G4;aYoEEk9)x11}i^fa$ zFm1$lR?B!228)-9nRVHe48vx+LXKo!+BAQ&CMa|`Eo|m=0SQC}gD31JIy6OofbyDB zoY_b6mz2@s2a%Dxhn#Y+qu}R33H(iG7izw*uO`v=u$vs#{ZG?PDq#4Gmx?4fG(hq` zda9;6py5P2R*Kj(+thmsUOfm{=ewy98Vt+LAT+`zI+pvSjg@#$eZJT%{emTb&{}-W zFxzgN)mUGrjtl&n$h-gXo_gb5g*{5cVJTnTRSkb4K~hW)u0=B0;V$lbO}QXqiEGAB zvNT-G2ST>bkGr2nKh@l8Q*%YO)P@!&e9+5(Yf{@#=G#-Nbu03rqNsG_o$Io4bZU=} zCgI0R+TJR5@qhI?eEtyE!$;?znWkH@2FCS*grZ1WCgyZQhf783iISSyupp5{wSi5o zoXkV5UwWldCfgh>@x3O-#&Q%z!@`g(oN|U8n&u1sv+95O^iS3Q4vosODlX%h6^brd4|JD9pp3FwSnZvSJgf_R@a141 zYAwD}OWhnH#0UF62^-C=!*9(K;4+LgKgypKPHiW~f^q_G&=xk1`j z=Fy#e)+w6_VYpM(#fR!DJ47nP@6eY)VR50BTbqtKCQL+juGmTJd@5#z6d`5j;d=yK~q1L!&|+d zsms4~>PuN^c@W#R!zSp`3OCFheBR5IDjJ4-v;%6^K6G#@jJbsZ#on$5zC#^o*wcOt zybrp@ZU=0jQS>1emziR!Nt1~gk9oS{RRDNpyc{=x=Rj7CAp1j$dnxAeQKO%q_OY|& z*Ir@Akl(-St+R}0BHqmAEKu-aI#`;it{0xtQ&^AS5M!vLLch4vuVPPr5^~Y(BG0pT zGt`Lsd8NNP^YIUkIgkLp>|)-(xEwRv9eSdAvfe4EmJ?;j&Lfe#prYxwfCrLyojSR6 z-y1WM&V)+K!hlK4C2PnY4gEQ0;l+Sed#6PWVM=u}_`}XrHZbcI->Lv=UBUuUue%v5-_rl|9{+t`6NC)dnyUb? zA!Ql!aXHw_iJ4`HY9^ci#(S_+pcz=`K)^h*-C6B<@|nlAGxn7j?K`33BHEanJgc_j zyID%gg%g}$C-Q2&%wx$r{Gte5dd~-d4V{-FB)+^>+qOo^?K#R*odK`aiwsA@YCYET zi_87ViMg3`?i7J9mwPEa(p)o-6v)}jFx7}L-`};<>jd2IA0l|XDPWr<#v_2_RdwZm z>GLo?vZ2Rq+_&j*(|NDS6urog4METiv>xR7R%sf+T2>t`q^xUtm2_tK%*40z3bW zgGpmE;#0>Trb0a9PGGNZvtvl&(Mgy2lYgV*nU-j05g9MP?R+yQzvtnGv#$MNgtodQ7v-q{OK1%L3bvmukLj2@Eg?I(_NRma29`OD< z^)jo7Hyu5x3Ean1&*K3=kq9p0B;U48aQ8T-t9$+a&d$hFD(&fptb#^vgiDGi*$1%m zIHvj&_W0*eMXI2}S7Hbu#tNQ6OzTVQrkHkJucJIR$F>UZ|InS3HJ$6p&BS1wvN6C0 zrr>^a=5=D+^VOzU;x_AjHx0P zd3$2@26iTNE8@Zox&bG za=G`zr9v>)2}FkyJF!39f5OTjnZTs`etii`^#kR0(H#}VE^A@NCx57Oxn?vQ*#I=K7@%q^aOAB)b+V1l#EsU z3>``W-D)HTe4qm68MXxJZhBW%(zd)IPi(YUkttVwnhq5aQi{l0d*4EbXK?33i6sKf z**=!b3)47W-0*psLG#zk*=#CTn)?Sy!SfhZvWpK|Xy;3Fr|HyOHL@c=$ZLFXH~l?R zf6r~u(K{Y{La4DJBOfz4^fmC%%hz2*9tP>!6Dh;~pNN2x(!ZFeh>q?IO&V$3XiB+*2*qa;WSi@X$+_7#AEEw+ghp z=l=tdy63#;JZO*y|NhA)mFKiPQ*P!u`R!t>Od-s4EqZKTfGft=M4y$F|7BA$s4=*) z+fE84dF3OvVllj4Yw#c?yTia=IHKL7%Q=K1GIE#{5V3$f^Z6 zLO{53*@I{_)hD<+Jun?03qZ}tN+(9`P zs4v&2*Mc^cH|all3h*W(HiKbfsxSij2o9@S+H-$wnC||FN5amEN&l?=q;q%djYiv* z#i2JqzJrLT=b{8qz@*MPc27x8?4T;@_wN2TSlBP+X z2qF?VX-}_*MY;31{ipI6q{tK)d&#AiKUPYTaOd&(8g?p~+N;Q`Pp1W9I zL)#IG-3{D=CyYf)wY`fFUs$%N&=-eOd8#1Q1_Z{r@KT`<6L24RB(Nu7$2~7QbZ;l{ z*+98!`K!d69=WEIzS>dZdP_AVYhw~rV~EL)hT5+_Q~$igj>!aAf`U-*qY>8e9HZ_}$^!2~5d1HRfpkPXNB%#W< zScipI_+myLz#sR^fGnV_&=yT^w&we5w@?$V0aqx&eVrw??<%G_dyv}?bbhIb-`ILx z!W(|!b96EbJ*n&VB91|DK(nGsy{@DSBoX$vASy-IR0SAM`_yv2V}20t#gIOtNt>tO zQv8(DbQzldl`TMgP=JdBxs3_RKSdUO^X9?fw;b+qY9<~Zw0qS1vTYklc`O)#guLc!MH8tWR+uH;n8BgZb48@cvIjN zTg>Xty92MQX^jFOoO!k<5D8|0JPU#{HvPByA4qMTvKvp7zv2_{?vuZf=LG=V>J6-=e%7i=QD`=;kYlRu`GUef+ml4Jn%zpvtP_$ z*DP9%mMR>jaf&MX=j=1g+CFbqK4<)iN}MlIO=uSpX*bg=M&^p`BB#%a7N!pbniNem z6fz-p;k6d4L$v3{MY^Zw+W*8O$D)75BlChw*InaKy=aBebZTRu;`bJGgU;N3SO}sj zZk$rd9S<^p^q0b_Pa?SJtfbF!wHa1j`Gv#N$TLBCQDq8mG&3n$I`%e00yBI};#Z61 zjsAcwH`}y`C#z2IyXT-~{a?8m>)&_L(4QnYcwVA^JV{=oQAXK?>FRR2>uCxC<%^@Z z=9){{n9@lnuk@fjgZfVZT<^GU=k!6JNt{$wT>K9KULU({09?mpyqi(s9ryF{^siLl z7+#K0jVHGs$X3{iuMV7y9=DW0xf1&C)1fGP5LHLwu#U*66yTCbz^LL`UzC}Z~kiNBW8^A%h&}ibTCw?yJ*HW48&K;Oc?|uH;L#JncPv_{>^yp zzd+rHlF`(mBns*sDN)`&+l&S&XWxtjR~>ewN8Cx*)3Dioz3v&O?FeFLF_2v*L4Wz9 z^>bg6)27{J9;Mk!X*`t^$~#NbN9QUe=A`NjHruT@G$53&l5@$&&Um(f79gf=>TU#V z*L(XV4Ti;eNRr-b5ps3olzS;30rOCKj(H;XYkfuF^9DsltdOs^G-skJ$s@VthpTGH zCSpt`0I$K8$0JI%0k3VWRt|6hQg{T)qYlnn&_>P37a?t1X9c%=s3K6~ZZ;84CxG<@D(A|*cP537*Zef^M$KPUac$mx0 zgpfqtW}!1X8H*a;-_=`Ev*5#!0OoJ?Y({@^i8QT}^nkTcD7N_)6(sMhp!lFFFI-Eh z$P=&HKj)zwNwEsckI|?z<~u^Av>h?bq?LU}ohrQ(W?>}@7w`}q~)&13a~)?0<;9{n4+No^6~ zGF<>xb z@&2piVe)r5k}udmBSURkX5!p5KKIca9Rh1N&UuUQQnygrhTl{D}~0=Qx4R%PWDd$ITW2R!Y!{ zuD|g<1(BT4zhoHvslK*LULu90vD09VKS^97T?wS7Io#oQ9W~DNWb=^SW!Beyh64S^ z;%6=B{w}(!*zsR6 zDdIfDDS)u(4+FT&|(l=P7Y<>=H=2;QeA)TC&jqyO*EDc5(gh z+9-L=C3cJGlrOMGnu;Ckoyd1DJ*HQ!TXxG60U!A`4cphL&!JR@!{$d4Iq~c*OU^(n zW90UT`ob_9awG11=P3;3L4Ac*+66_b1dbrP7C{SRnuOxnP1fpNbp`an^&w2UFrWd> zh@wZTn<6%(f?Wj_3T09^vIx3XHF6^vI=sUxJXa*3U z5(LePa3)vuVqH>!?iOFqvKJBf#IOq9$F@kRb?rw1+r35Yjs6D=^h zAP<4;UT+VXY$taqW3nT>SMTZ)%SuOmUDc?7gNHSbC@f+;i{Appv{ga!wR3DqJ#Z+Y zued~2!Mv0_N0{&qN`jSJzdA3pXX3Qo=;B<@l-z1XGwwpKN4G2o?`yA9^tfmC{WlNGDppJqf4?Mr_d>6{M@*}<){aFa$H|mY?`!!Uq!fW3Fx!8hpm6sp>nwj=8D#%e)1f;z<# zxZHHo%xG)B)S78V!=Cfw#YtifKl;L@XO^nNyH?{si>yB z?lMn98F4GHVudW>ECfRn+)kJHZa!|0WSpk4hsZ_%nGy~8*IW0i_tZ-lpIDSZK!0=khc6oVl(E3}h zZ)NsiD-bJ2`8{q~#0(7zm$y;-tB&0B+C_UHwoq#{E2z7CgF1r3TgeBinYyHdKX#kl z$x4>s z-%Gh0HMSv(TJw^F(3vu4o9H>ci?me{89JC@YeIgEWlik{aU zbf{6GXsu&!!@b8#o%_96bY$4ky`_J%xLAsW=E{ST0(P%m9LhZH3XXL2C|n6Ut{v%% z4GK{j3qz>T1r2Y178L@GJRmD7-+`Dic&vP99jXG7&B(Gugn4Xr?*?XOr=$~3fEx8J zs?t<*hOofs*5kwk+F=!EJtZ<^yC;%p zs&As)5>6EPt(*`tA}sn^jJR~h$M6Tk7e9*(&-@F7%_V$OgelsMz&q3j*1N0e@r{mnw zk;l%!3B1ZBriuv1KYXR0h*tK>5Z{5iIkZS)fxJg`6an;lifqU$LqD+O=gdfp?-Q@Z zW9|ur1{YyWg0(!>ANEofJ(f#g<$=ghtnGWGAze4$w-0a5bvrRoO)XBqzY}ZwobaVy zKGvilE{nR=L6-pdeeJ-iAhXbDt5>fd$vbtPzXFXP+Fxb`H|!N<@1Gifpd z4kqo}DV`9`3Bfmh@;Kj-TYok}beDt9Ps_d!$E7UyZL>?K9%JRd$nl{{a!d!m=Azzv zzjPp9Q!KwkvL!hY6rx4vJ8Y)NK6Lddl6*%up*e#%Mc3{`isH`@gq)RT|HPcZvLgtw zMA!GCF{N9@BRJH7^dV#X5>k9HeT_1UI#p|>Q7zrda_-$R7-s=<VnUDon=#SRQn*AYfFG^?i0i*?DQ;S#iO_aKhznkHknH- z6YzUU;uEfHOq7YgPz1pe?CviAmS|@pR+e3WQv@?H@|ZXDBvO08I1}!(zvpWpT?VX> z*Dsz?H{8Wn-N_~#@LWY(tDdS_<2Kn$V-tQ>HTcwWh*wlCjD0^tu>pJgKqwRfo8_SJ1O7aql7;ygf zOO)5EGZXY2pB&mRV`Sse6?InGQQu)V8AnrRUWxUn<0i4qDCzH@Rr~cw_E@@ziQ>kW z-;!f&-Tb2I{VZ5*s?Z_w<{<74&Q<7>1xl4EQZh`wKfR+Vk_Q(jEJQNjL~;vFElPez z_$?Qoh#sFslF~0S+mpL&A@$Z~`ST=I1poKGLV;6->kS-L+MVTYDLR#3Pc+Dx)HIrJ z5LBWjF@jQEl^g0LtgmYxsTaH0;lQ+T&3~G?kCaV2qQbB`ehwsL2jDmcmwf#G{&WA& z=pzA6>p2A5`u##>6CvXo?zcD*oB`^c?o%~UJ)Ue|O#C|-1J22$rGDioWz1y2b`reh ze)YPC_EjuiYi-SL`Q}&A*9Q~qV#a6ir4L@6ZzSn;-ou5XvH6?ezzKO~CF_h#-(?!V z$w&7Lwz!YUn_+xqXimHl;)LLkGxI8P#-JU{AA|F%5JQ2muwQd-dIy_US&wAc%Z%74 z0MQ?llG)tY2b_BOsH=#A&Kd5SWI6Hv*3i#3lDhF5YcTb_rAe}2w7bkj-&Iw;)i9(@m zq8Qk1$1F=!TT+ZJUp}^XmT0ya$<}jv5SaX5zjOURBC?lz@=q5phtnJW{l5PB7^}g7 z{%P&idt>A5cVU8?xD6F!2>1i)h=E#yD=OsWp3SRO%b9#Ccd3--|DG=m%oe~w?6VZnY9hx_%rGa93}T#CO2>U6l^e?}-o{`Zp!9k`r$2^u7ai$I$T z0}tCvSNfs1JK91jAA~-ePze2+d?-5wZz~K8S6?S2$@1XT?sQkq7AXC|U2#SVE zY=5eM;$UZIUnYfklxTnWdnWg|{~jcGvcAQ_JZczY82SV)NZPHNBCicxLQz`tn*xI$ zay>K}wtg@r7B9Q@cDKySL+A7t=;z;-U|a{=)w(#FA1A0ZCjB{pd4GnIJ)CmW$ib)|?e*zujA7cO9 zDgW2_=Ujj?w>+AnvW(sfqeTT=<(Vr2g%P(=mxNZ-6Wd7Ny43UT{{u7iW6l+YzgO3S{o~{QvPgse;!}*$KUhWrM!Un{~Z#> zze92q84teo?nR%A0D}{^woLbDenPssx}>bEinexlWrc+URMphr3{W*eymA41dvpW> zUn0`n7Oa$&^eHlZuZtFSTNrC#p>LTgGAuscXdy!dK*jN4>ZceTOJQsp3lg=vl2*vR zdl&6BD9{Z#CQIWgKD3^-e^HZ(hcPUVq3I-4(T7P9BOQ~bsB@Dl%OFCmD+I*C5$FRl zTiwB$7vwXrKEFbj%@@L8{A*#owV)P1Hb7sYTEz?|Y+41ET_mLd^`F|*nZEZ$M{^Z9-OblVXLQlY z$#l?4f6S7{W~8#RG5|^55TOh@MEZ zE*eq!{CVE()%?W}xAdo`5GwO788NxS+m3`8WwSGQW%$MqA>)znEThnZQ;`P`<#URsXsz~G{wIb1ul7UutKH{9?4H9y|p zbC*GGP>nsIox0X5W}eLm_Ov8(OUpe9nWUto!I5-6v-OUk4>mJQ^R;%16up-x%Q`&~ z1eBB#5z$$qAp`!eVW|KB5$}VE`#(Dmv^U23t6d6$S= zeb4Q8DO`4`-_nG&4BJG4#Db-w;*3o@mSOXBpmcv}PyK}Wxp#4vDsmz6v(;nt5K?$-ChvF$nvHtlC-eB;@8!1->qLIZccYE58 za4`QEDf7JN@G|<0( z`B${kK8x#(#8olwZWSdjGAj6Z*7?EhNV9)%5SV2#I53b~TdN)$8=EVMepRo0D$vYb zRat3zf4Pt5yxzZ0Z3u0-oUzZ(IXO8=GIlAr>3Xu%aDIPS##g5Ja&vsMruJ%0K3(7E zYFfnW`$~}{xqEp*xoRd#Go4z`YD`uZ;vwgeRZ&L+KmAhHabu-=@t{o}N0T-~)z>+l z&$D=e)OV%>qOjDw^dfF7i?lixyE0bh@*xAK;fOIO*e0e2IXTO&T+LOoGi?nz19jEU zjTG9~^;wwC_nn=&kl^p#qHd#jaIsaDpBXq%ShFl&59cjf=Z-WN^HvKUZ%LN^y>o48 zlMb`%dMm|xpL*qNrB!(~V$7xymETS4><<2jLa`;4|9PzYKTl${+UwDLsAK*);QIL6 z$mn2sYFc!>r@Nb>xlv+bVnVl2v!lDRz}(ff1`4{6e2Yp*rIIh_M4B8}pjTxc`FKCu z=0=*9(dBWqz6?)ghA#2SN>4BS@@RhYwGu2OLs{>z2HM4;adgL0qaYyO95Skd60ruYlr` zl4#J#uu2K(q5FUIT>%Pezp9D|=8mSU5j>nSPbvrqaTjU?xL{Yb;yyaG-kCQXRSxEA zl<8Nx9;!pTQ#=DQz0ajLm7wh=N_0KegV2nzDid3{DJdzp2N=uZ0|Vb&%-O0k)cb+J zU|e4WvZG8#+4qc$31ML}yV*xC1Z_b6m6m3huHQS}l?$}!DJqpI8?1pirER6^E+(jrYL)ed^z3_S`<|5iPF?zz z*#D{FgXH0rEBeIemR-`E&F%P*;0Dp!p#@5a;83D*P_h1oZVff+?AgG{^2f%Yy{oqw znZ=F`bz((z`!iA3eLYZen)J-;_4-WSk#S*#DvIJ9#nb)*ZRZz?h1}mbKWFdrNT!Oe zNnGs|X}tslasG-$zZD3cHdaB~Hk0L0QBo>o(z-6RiC)gXvnGYKtB9*({U34Ae+2>D z?eG4MNXjSzgGu1CEOjUuDWuDqPI&+Lv5N(hwr;`qu}(;BC(YG;QZ$q~%>Uub^Owr`+lagiibY_4D{`RT(AqhCuPV+|hpe zSbi$~i)rbY;ELrMZiAa0rf6r>EQVp6Pgh%({oHj07dXRuDs)=FaH`{YZfQs~RZ(YC z!v{57HQDDLto}#Cx}%5eY|MCxEA(jrdTc7I&$=cJ%?8({jIl>~-O4q5tcXWG`X8ad z+y0>W?WLf_LDOGa%Xtr>_E<@{+t;|mgG@0bnMVoBWOyWRr0Chbj4G2XECUsd8zp51 z#)7&0NdwRFhV+dyCn8T73YT<$zN%SYj_)6j^;JMmA`?oDCp|pq#5;+@y5eG9(4tYJ zekl5Z)#J@PIFoXx9Jd+~z0$q#8;M+j5SzM%hFZGvq(!nRGy;9rN6;o$^_14@PH_HF zxKy>GZFjuQ8+uBs^;PS&0~T}xyRZQTVK=(g4MDuX5oAeJd{qOcgNazud${l8XbPYS z$0I`})?bP4f6t%(xmx?zQws-L(`oO1&lT!x5MtJGT6|XQ+pLGkxE4dp)vu^(`0C_C8kIXTOijE^*LwJufz!BIrp)S{l@RyQU1&CH&*wwt7M7@t{DdsuH2=6SbwdP^WY7`h{vBuUn7nR zC!0b{-C25YNN!@%e*IEu(yqUJ=$wR8%3ogh^Mx(vbpM#2%7*bUSB}D7Q?>A0VJmA3 ze6v`LkSpDaUa1hL4p&QM9oxhALlv_#>K5WxuCRpnR$9^u=p4Uc{g)OuUY4omk;92v z^w~>g+_EhCB^7QC{LrSSCNmALy_M*~U+T3O+}^ycIoUYAWf2olm0Vttz0aK2%f`B~ zQAoM$8C&)&WhfkhLKrB*>SV`LMTLF%-rHz_P5!MaY*8({-xfqgL@(NtP=Ol#w^J-; z_E%QToR2wSx2W_&jk7HI+Q2{F{LgOi`(IfQf%kE{r|th@?Jc9??3S%jBzTYzJZSLX z5L^Sn9fEssC%8-SV8Oi`cW43xcMT96f&{n59UA98*?IRl_xsM>=hywo7>pj>OKMfk znl)$Hi0G#0v&=xaD{WGsp3-+7q~)~PWQdH2{`%c^b_g&4f7P{L)r5zSZ*E-6|LOCE z-|EJ0F_^VD%lXTBJq-;@Zuq=q^2s;PU8PJO#lS4Zm&WIXsfNzRiC=3Aa7Svnf<(!e^X5WjwNoSapw$m$Eoz-RkH+*xWlVO}@L@Ekh|bHmthGXB_cQbwD9onwF! z|{;>ghxxf_boDxaL6FNAq|5+uxiXb78+hgw%*s$f+aG=Bf^W=8L=_&%G7SadJ! zi@W{Do0WQ*F2bNoJBE@6M|9FOpt3wz{Dnh7@!B#go+jX~W2&IVJDJTei@xJ=#3pk3 z^i&W#=56(S(~PMW@4pd^|B<_|QX&C46OFXW!wUj(Mz`-ntg(dE^DQ2Z>Fg$-3yOphh{%}~Q5ejcst4t?4?FQg7 zf2^pSOTC@yk?fqwTfNalqdn*jLjWPxVWX56)KYwo%dll1GYE)}pu3sk%*B&fUju-JsD?y%Ymmo2Y4Mtyj2M$50LdUGP8TJ@u& zsxsa=9kZp0=H^QF5>2pLgV7i16|b<$Js1qDcA>7bemqn9^Mi5Wc3y@Oe0oB>wsJGU zypSr6=a6D8AEWsVE}fn+B`>FvU-4K!(LGL`mzvm>dsb6g1S}yVB_Zs)l^_GpWQSX) zxFkD1oR1A{v-Q3M4S%r<=&$pL7cb8C2k3{kQenwohIG9yCh*V30vu8YNj~3&ixSxb z*i`vImBYVLkN@#fbiVrokDkv7$)x05_k`xnB#`nNyBwr(I9DDO@_$-?zclbhEuh-~ zReHK#BJrg5zS`)c{9vbr{GMyf7~F!E{-@AI_uuyR2$>;wzE2OZtr*_rufT{!Q)bM# z;smPYeKN#XQrNzE`2GfLW%XOj{N`+n?6uVWi4(EE2E`y>M{%%kErkvvk}dulO>($& zMYaQM9v4mgp|Svn#5QmWFFAoAgF^ojh}Ex%rhL|-GT1^MH23Se2^J+f=jx=`wYp%f zqZaL9D%o=>(f#(PJ+JY{k`HzeRW>CySdi9LWHd1j9aMy8;m~hhH%_sWbIl_4-a2v9 zUw5G~)ndI-hWL}4(XNM7*>BT}sMPwwdh9Fil))BGr|);YMCrFXRy3Ds%8|!esf07y?+0ygZMq8ubEHekz^Y0k*JW8J5sA0ER1bBol&V<%% z&yXdwR4DApJ?t4oTGZ{4knbl>R_q0@x})HaDE;pHi%JSYUi;WSwLdodpPfq&$bM$M zxL)lsIO9Uflut_2nnI$5$l!w0gt}vypABdx$0cWH2@f6P)@zBZZl3isR?*I2O~ig zuBK^Te0KlwmFf(zdeOeU+%KkjM%W@ONXVi)O{GhUHdj$umdH|j_2W$R@M|-!C}j~X znVSb&sAU`emr(SR^Nr&Q(SrLJWA$210LV}AeiFKjr^e@R-oJV$7l_If42vrZvB;Z5kCYQR%4co!jq6w}R+Udsr0 z(_C!&t8D(`MG!mx+b0;Yoz?+|gq2C;J17EcsMxxTN;uU1B|bjBdpUA;ee718%F+?Y>yneDKcLbZ%}Z?>u6-WpK_c+r2Q8j7N-v1^cg zX~`i!7-q81G4Y$^WVf^BJ00hz2YE9O_u%rDpb=ATVt2;>RFbeG>HY)4%XP)BnNYQ} zpIUDYY#`eqPhwSj0itI=fJ~x_Y8BTEI+}epDbF?tl--DAN6P?gU-8ypJNWAJNX#qV zq4P0OHlPZzYSrq_cW$Q#d5Uv#a+=MQX<*p_%h+<7mVYxGA2@=GxzYSsX;8B}(-w|b zy3!ZPsUWdPhaH>fmnm=dxUpa8o7v4J%Ci$R0>D9o1_m@>q2^N@$PWo6($$!&&x)-a z4I?AT_{zsZI~72;m)O_bgE+u4>;wMn&SS!S&FyhZ?5pbeha@8Y2NY_W*8u)AY_l00 zt|>EbftZQHjc}K5@V7mCm~b4yxtl@MbiDkySIIATdl{F!xG2|jcNAKq4`W7lPGD^- zNEJHibRrfNk(HCT#q;)Ob%Acl7#hYTSrhHO`7H&D*z4p3ItKp-Qu*J1jg$XHXs=3U zzj>X^;Vso1HX>)r@cCXlHHfZHm#Q!MM}^?{9ef+e(3tJCsGW38$6mnTnS~e~cNPVt z%~w6+iK>Om)Tz0-Y?auv=`@!eHRa-<)7n zI8ug-l!*Zwnxt=dHRo$uT;XT$5v&`*lH8)zLLd=2Ej;;%|o*#j3U|-O`GZq#0YyVUPCnYzsH;f9}{zd^=om_xvN# zrkcnBYJA@NUm(tlnq}N%QmQ7~FJ_}2vvPik?BRwCx+pw^40FC^`#~eqXdKR0W6~}4 z8TB2xihz{>w!@43IW`3n8AY{Wl7?E3A4g^&HH<*U28|kb#VZfbMJ+ zk@zge@wv;VC&cV}J@G~wT1mcY9mrB!L8C4@Hw`SD%YD%3iA|k=l^HE*WSQ$f=DnSG zJ7RyA3k$C)yBOIH*SuEV$BvGkz9o}^g$2N_z67fMX)QSefqA$$@?~L3i3}>&?e#_+ zicktKrX3HHV(QK6d!)>~l+$eViIgY%{dYcZ!(baYqTY8tkLnSLt?G`Mo z=!VY2J2poxAJEd)BroUcofh3#)$qK%F;&naTzo5;%^@`*M)Ak_BUcFR-Qr`O8$Pl~ zCjN|w(?0}}DN3o>=%g3T`QEUDSHx&BF7%?n}b*tvq-H=nCoq!T4Eqlj#5!P&q)7 zl9R0&8b~4|BjX<*?uLPJKkAKvxYXX>_k*LODYHfa27faD;Ae-+Z7qM0Q#4#+VnzUE zjgMk$*IwV)*osPK+S=fEG3yD#WW|PV!xnTg87&zZ@F=5=#KrTg3DPB*2*u50_8! zrasioVtci+#Nwls%tM+ZRAs1>kLY64Kyf!B;_x&^y=0nr0+~SU-jp9xnpUZ%Qp+${ zJ93+aBB^QUmzx+~HhZ^a_&z|0>E?)yUn-A*=m&-eS4fy&d|Fd0HPq9yIEp93I4kh9 zOr9Dn9_QiY|DYB=AZyjA+*tgDj0c%)I`A+~;%@-Kj;CW-ZoDl!I_sf`PDxZ!Qgs|5 zx!J2c=f1DF@;U#7_2u@P`2R9Lkdx0}N=*14+8QMSTD)R&(k_6u zES3WSA)&m6Ml#N4cfcum5@IBZ!VeE((yaIj;5kadR6IPtWYYSh1cA1W+1_+1R&;1s zm>gKdPhVs-6AWe(^f+>bn5_#b3txVyCC`hYuQ!T~M3{bY$?bJ!78xr4W zyFOS*Ae-UV$fwIf`-`%g)O&f~6(Wx}VDY}RX_-MjNO8zOh}=Xh=b(-TgCx3!>;bh- zhB_5LI8|V*Cm)H2pVyopdio*(P^b4b5t(l&?LB1FO@Rcez^ckCE0Pag&X+)`m+-Hr z-I3=C7T1LRIMZH2!d+MiyV*do9z%$pq%=U4o(;Hs{LA*njhQ;+x z3%~;#Nh}h>W-7#k9OUh(Gn&RB@u%w(jMb$Mh$cG{jLu{{!)w_s$|NPV9XWMZ7t;QQO`v*^$qPOkP>uMEp>>cQ&J(HyeW@%&g@}Tcl)Tp! zHG52YxqcXd$IGlAX0#-Y3|djQ8M58V2UjF@yJ@Hy%|}P&60B#@hs(oM(bV)bp#E@C zCKG$@JE?O4wZ`(LX8vDUey_|!VS_mivJp16s>A`K{`I-X{!3=W$@fCeu z2bGZM2b%y{ay%pzxc?q&m+ z38&381EK$PaAs$T_mbn+SIo@JNn@fS)C(d#?w!pqiA!j$L&7&DM#4l zy8(d@{y*_M1<&u#$5Mel=|tDyFTB97y>Je2v{YaIG;W}4Ee=ZpUR%jpX7e@XF~zxx zaLNIvQARS}-p!v!G|(kiL{R;C$bIqrBZ-OVg4uQ%iJ?4!BXLhIF-Z=k?zwuIf^8@~ zr<+W3x^LF@PE$FV4ZG61g|>3t_NbcJYTy6rNT&7K=3Q|>(NCe-a8OLOK`Qg~t@8Kx zh!UG&Ql1Q9ATFZ(25o$QTuETGZ?i`OKzz)PJ({KSdh|Vx`=zkO;djIKE-q#O+>5dW zlMMY4D4$?N>l?=hP^M7v<-|qfCW;Wi$=wHbmTv2tCoN;gIukXPoCGgFcYwRNcQW# zT$9kmI^6L0l$XQ$U%t@r@@k!(osqznp1C5+g>Y>ZbE7rt zsH(1YTHD4pmJv3}H_1Yr3 zGVJRk#x}mvIjk1eoRMXtQ3#mcPxugCY_V#wF9H?Cwp)*HT03N(zj_yRohPX_&}(x& zBf$8h;%mlh;kdAm=HS8Ygcerz4=>j~&ZE?7$PybycuR(n?itV7xnDI`KqfhNMU7wI zkhN|!&xBhDme?&y2b$iyd|N5Xp~nC1Bp*ZJvedJ;+A8#2MnCH7ciqt*I@Z3n1Bl?U zr$=m0(yU-gjrS!*%4TAt;o7KAZF8&CkaKzAYdskH<QKqR>KihDdH zOa)3@BoTcDMK`F(jiZA3IHkB^_a)9O2Q}Whqk!GuHzD>rLLJsQqnaQ2szUkHJklX_m(LLEyJv zrkQZoTJ4{h?o`$Pa(rwO79#%}b@{KB+<%dEVqN}CsId~_X}JeFdGzJUKk)dj(4Rfa z9B3zUmjn_oRL;K$KV>-)Q|y1Hs}zZizxgME;NSR~ux9Li+W1E7i>nu@5M-Jk2$bac zwFZ57J2rnaL4(Teiq`*eBL81SRCeKCPLvM!_`O?C4|QlIGLYXw;{86NyP_eDK0Y|@ za=dwWWzQP#_B5J6c1-9R>8wWuP{wjh|ADDAEd^Wtm+#won*Z+&7$VPXh6n#4hm$bH zGmi5hNiEOF<4&0tn0bUA=qJ(N$TKatBM2`1p|;8YU5$+z@57@1ZEXd_{`T|{dxg8z z!@?vZ`t!J}y+Qy0F1A(K!`%8n_V8SX>A#j5J>x3;7{>?d9 zZ_@fc_fm8bW3yj7TJ0d4Ta~GKc@+fb;h~b&k8e{&-@H*h4{zDm z`mkyH7^9|LUD!=lZUmOvkT^yj{ zR{B9B#p>tY!sr_%dVSvBrGWSEv!;J(%4%pt`W%LQo}>MpD`saGebwUmr@COrlvOb_ zWDN}sRnygdf!r_g$x3*DCj@F66BO#}?{5}S)6m$u zl@2#LVKAZ;64Hkvqcsb#y$2WH2uOit#!B*;i?XW>&_nhJOA0p4W|1*4&cN7+2Y~Zt1#sT#fL_Tytn9T;gG096?_X!Id{*yrO}l>` zz*uc~@F*E;%K>L(T%4BAFT+1*1V9bjh#0f|H=XbQph#k=`md>Hj{mvUFB9LCmi83r zeGG{FBIn#6mXU$Z$TsXkSz)|FP+D4Q2QdsEAtatxRBMU*+S?0{i=SOV$vh1o|K-dN z%WP|_Ds?a8%wi1j$NqBgJu$B0<9K!0JwB4!*A7W%7cF@=xAPnLPfIOvu9U0-bdv9M zL#Agm0&09I)5pi_< z-jC)rXZ?$cqu&iWJPw{(^$zJvZ}m1-CMIMjx$Hj|SSlntEZsKm`xt*$`M#LMZ@|f` zeHBs;U3}gD&Pso0>2 z7cWlH-SZ3Ut90X7G}1u(w@waNe$_W3n*mC94|8vv0M?a_0c`S=Np_!I2@J2g&>{Z) zK~tcl2}sU$THGt`mYOvPCF|@u6*WyS$8#mjI|Jbt2wpG7ob^^HNyL_$KUaottR1%J@eYB;Sp6eP|0%;7tf#8?G!Cb*q1(i3f!m!x|2cAt>Fq7{JJ*k`WV zgjE!SfuRTB_8H7i9BUU)Nra(_Mn*DcpeOqQ4!A?fOqdL$h^IbR2fJcQKwWbwC|y?m zw7&jv7Ma)a*UcJ-zmf`w!?YjOFSz$L2)H9nJTI&`u%i%wi7IB`6K0N|FOkh{^2>_m zJ+KoG<6L^i<#&`blHIWkNd&>lxwnH;FrIF&^H$d9&dDnVK)d_VLK0 z!)0vc=TF76Q9;MyJW1)XB9~{9wH5z7IwK7KdboM0Rp{Ge5YyQ%_)h0~Yq3zdoyL(8 zvN*NZ6g;?ju1P~WYaM4t$1b9Vp3mnyRZ*|fQPwE0B%1vgA0{n8xQ6FxB2an8(8zc$ z5vqzo#%!Z|tg4D;QBG09p{`zN><%G$rD^ksZ8lJUgD#!!OJ;ZR zZ1Gaz6+N|-VZIdd2*e4QJ#;|FOQ&7D^gC9O{Sv1%#Hfm#3I&Rd9j7V*WgzC*(`|c{ zK|*Y!VHPTbkA9Pegp9Br=;c{GGt28K0(=xx{=gy);^df(xBSSXfqtF3$lV3;e7&1P z?Z9&~_oirKpG4PVe!0DU8?r2<>h&RnIsKMxx6u5k%n>lhi7zqlqo(Y>@bZ#vVYkWI zZ215Itj6K6!+hXMIb&o6@PU^rgCP133+_w`27ynL zvjr=GQ_}-)3%=b4T69`$_rvgG+o7$m2b5bC!?0S!W8{}IguzcJ$>?Rgwt9w*s|}Bi z4R;=^D=PL4es|fw<~*!g3=xj-36GL0D#i>RERPM{QHd^MG3#f$Bv?~a^BrCN5^7Xo zwU&?Cxm~Oe<+<4JrTPUUM66CEtBzgecUo2i8`d25>K>Xz(rV@E-{39PyD3TNEv%rB z#MV3s%ERX%-~iTt=c3v132e7Sx0!V9jjVe03KnA^79-!&P_A_zVPr(6ev_QO5VV(z zH+;Oim$OE*Y~W+Qz=^j;>`#aPdeaP941Dadz4l=Avd1DU!6QRo1a9syGB;B@^jQSm zf0520gzuR-UhHr<_u*^tp(3;nG)Dsl^cw7@0I{JaD2R#qBitK!BH6`Y6pNILpkW8X)J1fD+m^DkR-&mEVE{GAvEh2{E5>mEBDN|e>ee_5slGoYBXW(h=)-i(i)aqAWCo@v7Jz@c zQ6=hrFeg>=Oyv$RR-ZQy6qmN1o`4oEO+1c@KKah3v_cW>aU8jGgzUdwIaRC@JwW%$ zA?{-=N1{L(MDDfu0>v_eRc-Z#&;Q=DX*NO7FjK@g;Le}{mtYzezXjz#jo*-9ME!you{|9>J&5u;S~YE6 zmHy4<#4P_N{q7bl&)VyiyXaQTTUrO`R2)yf%HtX9L*Pt9l=j{f)X@xhy~6EIVlQw* zx2$Kv({DfU8dR0>eEU+R+URM@{Gd^9de||~utQ3V)pFl9`F+TMHPPfVk0#-HqaW*I zU=2#x&AU`=j3`Zs88c$uHFsz(sthB`Qhr#F95+Gl4xvML<&7D{+t>eUcZyXMlw^ot zeDwj+ftGkQ>72E8^eXKOKyb)1B%1mBxw1yaglKl)<(RyuJAwqg(qje*bCFGc$y9Qg z7ka2X8EH(kf-9tN@4K}BDzj7KbpC)9G5@Uqlz2BAvTG}0r7pDkaZ#F|pJ}UBa_lVz z0sqnTR7d&OE8Sv~+!UYLszL-Db9}yqBMlXKF9celLpsHFt;^OC>!1ckoI08F*)j*K zT90GhOYtRQhL$P2gGR{ECgX||W%7PPN3~PE|j6P~LaWe0ASgT(B90^*N5nEBh7wiBmsQEy1zFp@%AZ)^3lIj{(i;d|ojg^O#Tx z_9t@r?0h&W9U)|p|E)EQmICskd+g(QU&K(VwkD4c+y>ApO|_mX;_s>LfQO^*0y=@& zv+z=gW9m~aOo79hj_vbXLV172(-a|eaS!{Kvy5}TduEpkYBE*(j5RewuJ?SNpI#J} zRg`J))f<5PE%FbR{Vv4I5!gAx{^(x;@lc8%krfB|MEnVU&Wq`3_Z48|3+f)(rhY?; ziL{%_Onwb`@^0QT_$5Ene`dFSvjIL)Xk80?m35l+7|X%N#x^#B#(o5EB@;!+MzHz} z@`$!^$5@=Te#N-&n*ECu@Jo|@HuxN)V z`nrea?WG@ViM|-*ZL`4@#rXiJVtOE}2UHW|1nkE)m==1O8}t zhWnQRcO!_7j;Jvva%Tt2g2nw+<97n>NcffA7*ebTsQp1H{`BRMlhX@I_*U)OJtH+8 zRhqW9q`RH(pe;C=a2Txz+oLz3Bt5a9iE8OF4lE^1;@iRpN{5yT-J2Q`6zAzx5j9R^ z5EJ8Gs7`)$#7XIKhtJdFJ}(hZ(3kuH|GprhKw3D5%b_QzVPYbReDgMxB#=PdL@D4H zo_ntpw(cLt)%mkTmG=h`5Sq*TJ^14K5iXe(WQZttiJ>wX-od|SX02rOvK!m(0;|H7 zmr&hNMbY19vF|!)nd?(HA-6_N;S}!fLiyr&;svq~>{Ey-gevYNESm2*zAer0adaCL zH{H@P9|gi&@_3I_-mjbMwC&*w4-^IJG{cA(>9g-KLn|y>IGOcsvoIb=PFCR@aeukx zi340!RyR1?-Gq*zX6`8jQsV2%&CPe5nr*@p1$Aa|%sOY5sT3+p8Sfd^RZZI~?AOb6 zm62-9PQm*A*vNO_p5i-q1iVD`Faghlr}U@ehv`>9DKLRGITe<|sJ~bQ3YMlWEG<4x zQtvptLO`l__TOvz0MBk%Af_db@DfCLB1@5RKB4@*k|NV7^sq@U8?Gf41!8AMa>j6@a^bnV0^kQIT_7Y3;H1&4=Vp#b?OM zD>fE^s0>x~F3RY>I}~CXKp%bY%h6{g*C;ELDHTn$wu%`=&E5)F%Llj^8X7YCpCy9% zOql{vB)D@=*l9fBdOC}WliKPvf~2bFx#TdF+|DxTHTQ+K#=kCij+zgjncaL*BQwH6 z0^7F%2mc{hC1}>bBO8&>lh^-jkbX3nSR0;!I+_w~^(I{OzKgi%p{v8AD*yBgY^Ovu zf9sD*04V$sYKLXFo-B22@}o z1BZnO@kEJwqGJ~tj+n{2?3q7>!=}zAI)*5QW2zz@tk^lj+kT1(UFvsZ6y54%AKK$!t<3lbN*;i?pgcRH5EQ4lk$%6{Kd zkRSZ~hH4o-%egV}O>WwVNL9de5c~}r=O;9E_Fu1XF;|xNEKp=px}!KT!Tfea#Q4U zF%Y~EMtX1!Uomwe5HCK=j@ti?7YxS6wWhAZB$j>fjBlCi_Jc=c>6gllN~%(>9oh_j z{6abhJ5gD_dXFAoJNj4}cH6obM17T>#k~T_fj@q=F~x_Q*g7hWWgN({WzlCn$4 zET$cSA&dUDH?jKtyZIK!rH$4HA;>Tl`iE;FTJs1*6N-`hL4U}Qb1KCS=hid|cR(}= zuH0sJ!;u?#)b~4>fPxlWga_4~?HTzETCHxOkB+ln_Xddna=?Z!Vy0u?;L+|f@Z#$3 znXV%LB^8pT>2!`Npz7lPK_Yf^qNZ9+uSbe;n*aE-k+r|j>%Fa>-Ib+)$1uN&GzAxZ z7c{5gOSEJ?BcpQT3sJnGkttbPn1|Kg?9*FJM4yIWYaJ4C&&S1qY>$mxX=MN6hVFyY zy$87__^#UTB7t?4iq_T}_;&s?@WNN-**9yj8PvArA4WhlY(PU)6=c`J5&VXge^tso}n$i*@n5+6*@pfUVXgP$4SpHJP zx9R}}A+ys;Bm0|~ z4>i9$wUy_73j8qT6Ql`YhkmK{3&h^!A$Cm0Kvz^MdMpUX@ zT9JXqo}s5$nFCv?j^@i>df6PKPb4EjBNX?mC|HK;_$Y5bnjk=EwkhL89~%+5?iE)a zR-PV=Oge1dTv^x0tXh5Ttb8a(Eo+TYjLSVI(gg z!{iCF_#=|6Kc_r2a>wj6Tfz*@~{5q(H+bT#z#`G7R&BR zcs=}LZ$=#bHz72{Hy!` zhQ)z+FmY*>#r>gYsO5OWVBR#5yktn4PQ{<|m>27WN=-TRgSt|a5ll`< z=bLK8`Dgv6b=n*80GYPCtcqokU3B66tW=UU8${Yw>^s?YzaJuz2i%d;uc|-QcoW8w z_yrr*>S6|ghZHWYXre3p`_zMHouK?uCHn2x-^MlwnGErU;KUFJ5Z3zl{bR)>yJ!4Q z9vdzV=LTvFPv&~h9j||sb9an|iW@ZDOKLrGF8Of17SfdHGGwDyY+A_{bv#B+rEpXo zO-)NXx*{UwIE#QOf%Rxin~8JP0KYbT=Qo0e&I3Zho{uP{~c|m z+3Q^4a@>l&!pS$X+cbv+Y%Qda;QPbifq|U|L%4WXRSr!&T zXyGtQVxZHy)b?(vme4c=6z`SVeSN7NPm4XY13580F>rMvDdeobySk{^+*( zOZZlS)H1?7sTpn+aphYKlk^RI_8KE5SeHn#RlVMDe5Oz5>f!~dr)H?lhiUCZsCMg1vcI3JQcJsOq%S|^E-!|7_eZ6A zTfFOrlHg|e>As@0a-sbO3ziMqhjc6-N+9>bN8lXccJ3AegDIH{4lfrUGl}v~#k$7b z&PRA#B%a%O%gx*B;q#%|9lc2{wG3d;t0zaLU-@nIz#8RgSnGaO3yHG)6PyE3Dj0$32S-J zGp~Kjr0Xt4;P!Dn2BMt(476K>a2daI4$sb6u@lAkWgN$Ij}W~FAaWLrg&;%ZtA-7; ziOOXH2!vatIOc`8w(;vHr-&Wlo)BPdUP_Yv?wk!FsVvdMUGYJ&`Zn(uR8~xn+&=C#^t+pf^F!P@jzfyyn}vHvcO`#<5j~xDew-lLppViWr&q~q50db7cV@o( zJ>kgOdLqu-oV-^1&V1OA+ik25n6+S^9fG*$5i^c_i*g3GY>|FYokwtEi(f?`kK8! zyj36bjNag0ddu--v1lo3y1;yrE{Qtu@u{cC94)28i;jJJY9N(GugaxPYmu-2?){?Y zPHuQs)z9PT^&|og0Yp!TVGw42K%mIVT@K^@}bLB7^lrN~C(63J?(=8u8b1MlV&?7!)}hm29cFt4u@9`T1l9gFbq&9WD}1k zZ1s0qxo0cAdJgk1?y(!;un!O3r$@mod#AK`0QIt4$&@aSD5_WlT{-{oGzI4%slYJt||AUA` zE-eRL%MwIxHZ-EMB|g7CB8vcw4^0G=4;b_q76fv`Q9!o{d5s!kNDuX5;q5XQUS)YYx$8_N`>*!;*=;?SQAgG5I z9&m$yg)Mqt%@u9xL_ZM#ALD81g@%X&8@3F!X^oj)nb-nwYdicoGoc(`ID=L8Fdh^u zH+^7q%nGQAcY=8-`o%|sUl47up!Kk3a9qLR6WMa|TG)JuK|Du3Q%NNacOa@_XF#yy z2>Xs?_wl+r7~hmU(#7QK`RuSC&a) zLx`TkE3&m;=cz~V>>Rqt3dfhw51|V6vPX9%LD76ZAYcb>1OOv}i{F+5go3Tq#RwL7 z4x_8nJCVc!Q{gy>@)@yb^F_y5(bOY2xN+tRMuSp_Bz6-6`$PfPlOyfuR(;@6IG>OY zr0-Uns+Sd`&mp>LLUszNmyWPHI(9M!@;>nnmrIYEAPTDx@@N$OCnw`XkscS)4Hmzk z$Dcl)kUVUtgl#|Dm8|JlQxURBKhAdI^gCJEZ`}{bDtiUKDn%=(*5FlIM+^% zKj44vmxvx&c6~-V0}7oLcoX8S0wegJdwA`eOc7$#x7mcC1XF~d5kPK-P=qYbd?*|Q zN9;(NH}ajE!{J)O?MywDS?DaFz5cS5g)DA>$M5@h`v@elx=>(nW}T8xT=XNe$v5m~ zbq_0y>5slSk7-Pemgyo>tzK{sqP`PTniR zDF~tMN{De@ac#FmKas|Hw>>@Hk@>;`EXE;xv7fp{Kf}2&5oDf_L-UTg=(t9GHV~n? zU?)Y8&V?TCR?Z3>4Y5n>w~&o=_3?&X`uC~ExmmNwKQN5%7iQbH`|U?ZPN(^2&FqYs zH@rGM5wuZIk!|R+%2^`&grfmvf^;s+W+Z3*D2`Ogia)X(W82a|Yv?OSh|rGA?<-}Y z4Pq@uCcjWqPgZBP%{8x{HZA~ewqSD&s2+Sklq^MbH6xc7<|OcRK_cLThdoR|0v>D| zw6U{^6B}7?yg+wQlxb(k1=k+D?-F>a-4&fkd@e?MM#<3HXPCAjQ zetE3gA{ zUXCV@<|jQ+20=oq9$eQFv5wYfW({Ee&(dlJUe9jbiWrrgduI#YL2r>vsT$@#B9Maf z?s)0S-MMG*&yIe>1lS`jb5e0<$}cw6$(=x{ttcU}v)+*r5wnq>a+R*@8y{rbHqJjl zf5sfQ2&@YWkthpp+_8!ZNJ`Q--N(nHc`MV}kS=U?f>J3;8g#lASTFCX*G|3qbwq!$ zDa%%YP-RIVpjcH^*)r26gjGyT6Cbxc*}TU&OXq=o^C0BV>2vyRBzkpdZcKa$j?E*7 zzn7?EITJ)XJasY;(7Y(M`&i015+sC+uUqk9_HTE;Oj zvXsYT7ab=Iy;*{O%hO!5_|Do`@>Qc8!|Ydu5Q+dy)JE6mmLRT&FBTp*&Kx&PN({BU ze;0f9&4)&@m>8mbc81gEedC`eo&#Hp8OD0$@hrsTS@#cd2EFI0pswe9=&e1Sk*Wk@ ztMD%%fkfMZltigJnMAo@tsm$WaIPOwZP0l*Qa(lu5XmvfN56%%U1e~Iz_(R3ZR?^) zv48o*EJ_p~2v4M#DNhuzfWVUp3cqu}n0xkq?M2`_B0mmillK?VI*YHQ7^A%^s!x~0kV^Hmyxr$5Sr*O`sXcxwdRyO>FG**{0nrfTR}vBJ!Rw{y}+z-k9z30 zSHWccB4P+&c-K>OcmUDr;Ap6vwcYg;LT|G~C68u~?vjyhzTGR&9w0i&dX)GrroKnC z8u>0|j2*#rt{B89Xiw1@X_8Ps#=TQs_u?qK4@vCxLS*W=%UtyuYk^%@x7<-?AN&Q& zXdJIHW%Vu#1Duozd!gf0IL9RJ0!|#S;lymPhCX4=JFE6>T;!!+pGU-?oqWr>)v^z! z?=7-&!7gApwWDy(sc`lmiGfPdw6zu^(>G^9$FCHJ#mEC)EQ1sm(4*e%L`4t$)F7&D zDR!UjBaE*)L_~%|XFh@pndoOXLkttz;P?J&#k&*qDT^bvJvbips0b=mFK+JBts}!G z9Y-dzw366?cgi1G_Zs92X^4B`dw*9*1}{0D%|UVOcs5lPMAR7}W?kWJ@puI5@bC+< zRdFyZmA-`!OyvB!BkE~{zRm=YF8Gc^98HDI6@k$JP17|hJ z@^y1PpfhQx!|n>e``iRk%{_Y2p(teWJEGGD^7avD>hzEH5tSq-r1`#e%KdLvc~mmK z#Wub5vWi$4p zhQdmw#qt|=RK|}DT2Q=@pmpXwyJim67(FQWr`s<5PPd2hQ6B}Mi-7%J4aG_(n-g11 zbT7%4v&h?IZLnwV$N7|e@@>}ea^hjE<#T9L_nZQMS}hmY_{ePVFV{2250I0z13L`7 z*3$MY(5ss(?4rX7QK<^dwAT|&=>tEg(j)D=awZh5F$Ao4QaOc$NRt`b1(wYkHchk* z1ax*ypgSOAHH*=cYoJ$(IFsv`lW^kY1QnCO)r!Bv5i{Ri7u|nW`9tyj39IdiS!P9I zw?>T$47OO9%X9iDxK$UP1tWqht;rjQC!o{~eH^_+D_scaBxaqq>v${{WNW^m5G^v= z7MUHCNl*~k6&X|+M=W?<$GjXTCMfRR&V9(5{mfxJ^4H)VrdJd~rHh+*G7Ck(1y?Hg z;qB=&GR^~e0TYdlQt_$Hq%QAeyf*(Jg#Z|Q_9Cm>$xBB$@hyZGmSf(%hh!16YdhbJ zRFx;oFQY8e#HSTTL_eI8hA}?GPqnD_!gZ{oMbhuds<&^^MesMT(B8T51Xdvu zpEw*$xYQ|?P%mY|F&t%nE%V{tWFl{Tq!MKmg>8fu_ffMe!j5~9h~a)4NYo=-qb}*H zRBNQL`5B&5pc?f1t!GDtGowL%)YYNgA_>dYhVyx%;8`lGyfrwx0XlqiAR1%ccm(mz zw`f+F@3FK-ZnE1nQ3}A7?9Me)w_Kqk`e1KLcs;ay`G!_ttH4k&qNrKsppqq+@iAlEFZbkS<9HL8aRfA|(RSC5&ct^X~ipzVGw={@B0Uo;~}V zd+#~-o+F;XzhNI<2cg!-eH7FZ%luqS;RPIHlU$SlOgkP-e}8jb@k5s%VM&aQVRlOXFW;UYh<&C!RNL$n<5~lmLq^c^>7oxB;CEyw;X6-q>Uc+2!g)E6&Vy~hC4~Jb} z9%op3EPlM|s4$}S-!{8_x*wBAsV7RUA5dfeNZ!&8o{#@=#}}63{=&e|@?`Nh6q5B?pLC}4$WmV)y?1oClD+AMMMHb0Rd#N! zcW=xDjHp$?Ux{qNdB$-VJXJXLkW4$Fn$TnKQZI!_pEF^Z(C9;M^hXYWTQNYgW# z6sDMubTo_*h`m=`lTnFx!`apJr~}(ubkZ~IHotv#4p28mud0iVV2RTZrjxAiVLf%$ z8&sSKCmhWFX}98lD4;+j@E zFU5Ac8`HA%!5z{sTrSLMBU`WP#*_hFYX`MA88$bO#FAj*NhW_zbT95p<;w zmwBJ-3|pwXJ9JoE)^IeL2oBDu|@hMHAH)IPDYuUqyqY z8FkPQx*0RcE#3(kXh`v^93JNka38p zTRCf8p#+6?iYAH_V5?tnRf3Z%QmYI?$F{m%nR}TYgMV7ZM%Rb(Z++8S^bkG^*Ewfg zmcL5(zlEm9ro+?c8zATD!9lx-iXJlptnjCqS0miC2;!K@33}jHopjN|kDFq4TVE+7BkL2g zU7Gjr0$f9%IShZFFQrZSb-AG6X;3>As*BKMNFo!o`dD7=o)`XIuyKf!!ybv=F$kfo zzCGa15waNdyKVWnV{3Z%4nPe*H86Ennqu8ZQnFboO^BsjY={Mq878^*CiV@2q8L&*}D#-mrZ5n*I3TBidGi zhvO@G!d&8?k0CA(JCx;pl+pEpM3}QV9`2ry?YqhhxCa}zGV4~1NF?K?$g_hlSRKCdk_3&-gCkCu$(+!N z;I{;=f}3{Nb_NSpcsnHqxbyK?`24rr$;|QsyBheooz!VmoghB+MZvS5?Gi?c=T;%N zkv2R(Gyq$q23Gn%62ggN+^tJ&2S>%&-w+_qP@dX2`LkoEYjh0;LLH8aUQ1f*7(PT^ z?+`8rmZ6K3reOo2J8>s4@8!>tQ4c9_VI!Fmaqw*K=o(PhL$XI$A0i4edBpoZ-~isG zYe#ka6a(`jf>9TM-Qab%#&M!`N(ghJE1q-mtI)>QtK;dcwb%(V{FYTH5t;g2S2#-* z-@blMW|TkDqD30+>31e2{K97IM_25DZ2-1}QkyGS%PPsEww)NHd1D(q%&Wz?85UN{ zUi~BF=NXX|o4RR{P{@OGHX?3)nG~y}{c56+#!o>b6AHwgM0$jt{<2m7YEGY91Ut7n zT0@!v#yZxTCAp=1qux4ZOmbDIo7mctqa^v(=#5rl0dinbIoF591i>2!Yqc$TW!AwR ze=vH@%-Udi&ZZdC?T@^G@sY4NbhT@9n*COlZTF|^Qs`rix}-VNIdE0*ne#1XEttL~ z;W$kMWUNKna-DS8u=XpqebS@zW+Mlr5%1^^T~i43)P}&>>-Pym-A=Cjke7q#udmib z*hPfIRaMVY=%;1S5MRHRoH%O;9cgakMba4i; zYtpT%VYbSQ&O>$>+&HMemN^MJne~~KVlHWEq~@OtmYi`7KLFW5qfV|Ozx}$T`pm3% zdfnwA!pHY~-eod8J%avF(vx&G@ne_{mNol(h{K>dB^Ax@-C4m(i{76zv5iG+h$QKF zUtSCBbv8OVt^vF(aR9Cgk}g)5TnSv2K~OPIYoG-WX|g{Y`uG2^VY9%9!B2|X483z7 ztQAu`bT+5>+o4yOf88RRvp0K1O$yt;8VR;o1xn!EU*?frMc60%3?Z6Kz#U(uf(@%< zCPdnk&f-&zaoGCDa{2J955A45r?Ury$If1*B+QIv34L$G%z%C1_J#ZQsq=r|aKWvrMjFsP)! zvxr#QQ7MtKjG&QbeduV*`M;8;ApCs6{oa(aiCLa3@TbOkqoBO|!IDD=0m!1XdK^@B zO+RZv_(Ow7P+nx6K?81S{$4xtmwDM8->jLZKa&kPJS|X}A)AJ@1a;(uQjs)m@FSjN zjn4b}#(r13eWjwTIk>URZ~ndRXjYc4hH`IbO0^3yDVx_F_D7_TIJu-C`CQ!Z&`b3& z8Fai%uYk-$67F}sw4K$Y%AF~3sI7}RlcuD(lif?_f8KMIPrb@yTb}Z-A@mIXJlmbU zCd@s9H`yM-7kPg0?3Epwh_oNJ2bl-X6A%tV^E1rlI>TTFoy{G3T7x$?*AE`5KFBUY zmMg#5G1_h6-N4uTPl#M?WekcYQfCJQeBu^@(&1gZ4w5{F5LcMW3c{+?yX5$W;l*n0 z-3Jk4Ex4uNC&E}mPg};swVaE0^ay~Yex*U^jk2S4dWq_m;A2LnJMo@g{>P;^#Z}ue zm5T4beOGf@y8Ut0(<{;dB&IGH0#*+SNK9dV-gt zpjm`;J@}&>g*0o7x+iu znq_TN<1_spCk|$j6e7v3B_7f6eRcm+{OYHvi_wNzumE(z#0nPRno6feyV9d@T|;#h znM#G_r7i^L*UMi+^Ef*8FeCH^2}7K0_|a|{l`o1oNB*#oGH|y~(=)Bn2KGD(KP73G0N(Yz|fCsns0 zNke(Dc33v-7IHMB`&D%SR@eh@{z$F^V7+xw{TD}jkj9@GzJBF@UMh)@fV%Cayd1EB zsoO&%rI1R&)sRrOPS?R}9*#s@j1EHoZ|tdmB=lh)rVd03q6WF35Ts1Kn&{O84Ga2T zDpvh3LXE&-@|U`r-WsK*41CRxoyZV z%7qJklw_cE3$Q=VhihndkUm4+5_=zDz)7@j7|pkO%ab9%5%O|W9#NDQh4T=ui@JDd z!rGD$SzUhkQZE|#NGn)mD3_I7MpZ$%It21YjFfk-6$e_54$2KgZqy8^xkw*|Odwr@ z7MNEBc3Q~*hw;9nL(9li(cJ_EBy67GM>G9VU96cuaKM^ByI^;+RzIg}`>+44s;9pg z0!bi<@)5~n&}%w1s#n6~F#G6+YNSma?f!VETusXYD!X&8=mT|6nfhqYv23hQn?XIk- zVb2lYvL|`uP<+8XpX}M(K9FqZInNZowjl@KiVT4ci<36%Y>)nwpZrQK^b7-4Bpno+ ztvY^V<8jVx>AI+k?_P2KdG{xTsad#zfnlgU)v}qe3j_*5z4}p0eQPgIq4@@6MMbIB zOTi*@ROcwUp?19hK$jrtg zA#AkUJtWmhrwq{RAMpcn`cS%mUs`$uEbG~TcrKfAtqImhYg6d2^!2#7`hb>7HNl2E zJl)f~CP%t#l`Eq$ertR_Mg+2@WPH(RP{kShW8RJQ-X!8?CN(Rn;-}DH@Jy0);Q23+ zv%>PiCovYy@(oO4%y1h+&!nu+-G?Uo*TBoM#MFd{s;?9vd?O0-Z6)5wO!ju>KqEg(__jX|Cgo_ZM4 zW|)>fqmW-4nr#jCkV_9yigJrclu1#w8E`vi7rujb1xJ#X{)@>VJj2MCr9QPQ=q-5u zB0dyKVQZ2w$)o*%fBUM`cVoBcdyGzXCz1>w2B&)u4rlSW1IEjF+05m&f}SUQ%{wvvGVVo=ysnNU|HeH44y)O7!u}eN*yLuqGLbH;? z?-GVQKWR~N8f|0nwA>e$b0CIdVD`$dFA}~aSSGkA$>F^YtFk9i)kQj>5gdkJ0{A7&ti2{P84iGMHddl%S!>31j3*qK0B-|^k+sCno8O0_i88>G2e6e zn|tr8to6blGk)QNLt3xT+2n){qJR4wepqu0+pG!%0K+r9)8FkoKQhXXJ~y^j=C3oauRbT}3J~ z#l4Lm;G(UnER(8whsiUx0TpERaD|hyG2%LR7cJQ9dF+D>DA2>NGU_>rK$P^|LHy}m z8Eioz3B^u1jO_LdrIxOnwQ?A(<1|*{UAOKvkUIsxSGDsdEFbb8z>k+BOeBH6J=CC)X&KIh^Y&9+}Wck+uDAMF;yZc>W0IG&Sq=G9!83%uav!#`af z)Y8ya?)_9gfqTqrLP61=m5o%$4jg@W^F+!T5aaL z(rgvo>yI95tEr4gG|1ipM&@5>o2LDe95amfrzJqUv@#Ok1YF-_6J&GETzK@+NnmPp zl$oXV>F%ZTsl`yWsNO~O2MY1A) z<(RadR~yH^WfR(e^w%t&gm>nNKl6Gv3OCxhJb!w&r>@or;F$22XuG)j@tRzF>q)SK zE?xn;#fYUtOOlh4k-^ao;AB|zLPKZ`xvdD9Ci?SCO$@(U1sz2=OCIhts^)gbLik7) z9z`r5kU$GAhJ{#bgpGAaudDd7$4}ZdE8nBDp(jC*$x^$572ug}ilL1*(KZzZ!qF_$ z-z8r+rjV*t&+$pXh3Irse;*`}*TtU21V;z|^PmpR90c5Cb4i&01<3U8GTL06w@(OO zDa*n_3Vwqfp&MyUi90+J@Xp^pY-t_k^jwfH318snD%8V92#;B>32F03dQf2~eYi42 z)VuZis7e;Yw6DmSJNyr60Yw_CIF0J=5=Yd`Lk6YUYWhyOJvk%IsOQ;)+JDk45id(_ zvdXAmaE5SxGgg;Q2;ukUn#Jj0baw7#R4!-l`4trvIlnzw?p@wIeBl*lbRKgS7aUVq z6|J*6K=Ziy3$O#3-Rrj72$T(hlHTzrSZCo;UiXA8iN` zPM-aj_%>;6l4N|p#MJc8Ec7kLN9){M@jO=il@`ko_mu?0HWEt!URt%NJ*?U=)OBr` zOolY36ROmFx(*;GV4s|r9R){t#UfjRajR23suKKailZ7KbwT5t=LqM*-M=$f>-!rUDX=v+3lPjk)XSe7>Z{P=vJiVMCcv=osCb!!u>t&0Kbguu?UIH#t%4-$ui(QubP0@Pk&>)=R$v9==(R3M0@zOM=g+BK58&W3HH=Rv&Tfj|Vj;FYDRpMPg%o`6*)V4lN z4s}O%)d`y3#xKGTTCg@i^3Q)_y+v|cr6Qt>xpEt6%R~#_#&(w7)st~gcY8V725NWh z#27-}0l69ZyYT3ak~9tUq&5m2NVv*GbFe4AQ7|mCpe(MhSR0zY|9w_ouLaTQ+>ZBB zoyS+BT$MOYI3L25t-&|5#8ui@ib#5DnSo`HPymx&JqgV+pPB@!d9QG>ooJ3vsY4}k z*o=Uoy4F%ZhF4nvuzS{pUC}?Fr08RUX1G|v!In#!9`j4p_qclvY>AJ?RepxfYQbm$>aA(+!PVmL1080X!Pa#lfqKGwl1KmmyBNjpgh zE99YuE=ReoP*9+ka7=7CDM)l7LV{@sROkjfQWDTQH77zMkaDo!ONuVc@OX_8qqpf z?(O0LS{m43+Agzc5Qj1_J!;b99M4k4(Sj%R{HjrtB%C-rDZrcNru2(Tzny8K#4sif-&}j7xiT$Wecz`v-a1+@+jbjU9yDHI^wdSqGfHWX ze8mGHS*o?w+L`Jh)G`W0G4hs?9UvOJU6`?CwlPPMB$-=_momMg=r`l~(N4Y6>rWZZ&3wxvrpEQ zBI?qLvt!Gj%YSBlj{}M$I(0LG3Z}{FMHur1p6~BJUO9E!^&xfeK32>f3I04th4z1F zR3&pL_9r^g-a%lPHQ89E>Os@$s+#ZG=bPjY_c@GqBjk2Gnz0Yl@I!vLKKhqR^#9fi zun3Oc^~^KZdv4>oh2MRnHKgX*>KFOI^4dr}X#e(h^U5e>16U-KdVOZ!w$;2-e~|#n zM#lR&{*h^GTJT}$FM*n`_p``k8hC5^jB3mDLsAV^?STuS>1x;*yTUgg?j{sJRaI;{3S z@6vemXxUvSoSu&>st?K^b;rfLlUX^?dU$2zgL(DlO)Qna+1+Im8tIG=&q{2C4TA+F zrFOL}j6VBK{i0)o?Y&PoS-`U7z3m9QaBrwhP8eW&4_j{|2lZoIjlnsm#Bnv4-&HZ) z(Z5uCC)Z}<+K2P3&$@fmUrYV`Z9cA*x|1Y4cm9pV;e_4o3Aj`mPs7Z7XLmMS39w8P zS$(nFHqZPOu3_yEY8P{t`T+bGtPb{~L-Tcq^g9?*Ksi)dK&KWEvg@X++@cH9SzbCMcOW36U?PA{4JAbHfv zk#(#lCKSkhZ%(y2N-D|C!018S8B}!a(f*3FP;Ve93A~Zvj;mTR)JGu0jm(WK z2yDt+jyBz)prPb=0)7M?)1dm6Kn*$pIe}Oc3jY@%dlk<^@JgoeK^wx&WBA>)y=e+_ z&P*;;41e+xb3mZKU-)F9(4M;GSrjdu8q<5Wth_eZ`0rwzuwN{mB}^8Vk1j%kV zN61?1guS)T5IBZ$jcO&%b0}8_Z=#|VHY2Kpr1SiaEYK_2GT*)N;((i10#9c5z;;IE z-Lle8F!lTAW9etYeoF+LbSu-ed;?^Dozn!kfqTvv9vnOdMvRRhOS#w56`6^%A8Zv7;-<9=y z8JC+gOwn%_Oji1M{vcb9-Cv1ZJo;@gQ5-_9rjO-^l4L7JZny)i!c!scYjF)Hku{Hm1TUHAliaQXiEiC9*r}}oB!S~}i|%>Vd?h1Q>tglU+ML+lGwSPT zH(?Z~CRWMyAmHF%>1Mx!bq$`bZOIGq8tFphmrVaT1wl8-S!+PzH^<*>=@;j~tm3bg6ibcriIru>v90A3*DX#e}PHO*P*#I#_sd6fcMPk+?Diu>ptnU1~)yeCmyOH61} zf@YH?IX~Zx<^1Rs&0pr0S_ZDW80lz4vzqCPk8F!#j-x$C@xO#+Y$6gGYQ@a>3fDqH zi#FW+!VjEzED^uFQywHrzqo1HNc=l9lbg|{%pBYa_}6^UR+*8=$RvOG)u^qQbomt% zAA>TkFiBy#?8gZx#bxj+#y_Gy%!x(x*royZez%mEcV#q50qTBm5VaZj@n&HUzr8f~ z!)LB>D1x*|t}aLad+NXB_S?l!QASKjjWSK$t zw0h%%-@P)QrKKOh#)N+M#E;40*KSo03Xi=Jo;hvizaf`+&-zB!;`@FBNUrYvTD_}+ z_<1?ax2*+vNNF%gPLRcv@#F(N7t`!p$Hi;(J$9qG_zJVixhxb)jr^ai`;Mi1T`!n#Cw#R(Qa92uXlW`{rvfK$Rb;sfwD%vI^*Li+pvuLosja656D^O|^? zdXy>Mv=T4N*qhmams^oFl*h7=6O%IvgC$@*OP@m**}Aw^Sk?5h*GQ%8>?-nZ3sd#7 zL!L9*BCrC~3SbH7CZ}eYnrk$f?v!nHJb!{r0wcH*iGfm+(0lPHAS(AL+YLka={C0H zVql}zg^Q{(b8aYb_*jQ5sqpCkLSUp1dew@01RMI!XD^fn}4c{-Z5>}Vnnl=p0 z=>WJl7dQ^Sr4;7%U7yi{-e<;5y|@-@6%|jL(&2Bq@bmMAT4%|Gtsz z@;#J**FPenLK+mi+G9@z0hBGDY5~7e_&lB?Y#^yHySKxETCfkiB)3AN8pcFDII|X` ze&?v@(qmA%_;VEurHrs%(BWx$cMqjoO1;0=X+P0f!XQ*R10S zv9wP`S|@#vt?Q#g{y|iUID!rtJXqA+ua(rS0*bQ|=m-8KFq-2h?Y0!riXpIXlQ*u_ zyc&=5qLBH^SMmRO4>&q7BAU}v&>yjSMY#C?Zk}P2gSnD5u}QiPeHzBYNplrt&$Jxr z8(qWZ!qI6ck*#={0JvI=xVCTRT^3*a?YVlS5u>wO6?__nc_TIE!OlE%*#T7=cM=9! z3?v~vM)@mxK=+V${rUz5^jjdih+e6uw-fc`(H_U(0ri=`y_XC;CxPd-_`7B%ww(0o z+~1u3mdP;9axZoCEs94AjjQCVySfrN;YXuXUuCrsl8M<8qqCvgF~7c>X;`gBR+2Y% z$VZ;nVDXrJ=@M+7!799ppU_U~Cij?+DRq9>hiaxDq(SI{+J2>r7SHD0K8d*QX&u_N zKSf_@BY`% z46tswEj7CHa@SvJak)={c_8lR>XCr zbN=3wF?mM0JiFq?gi5AOU_RkYK0ukG{rexPIR8T32^#Ax`h4N03yHoiDh>-|xUPW# z;8ueE2h_G%Y2N(|TI4SpcJDH(6H3RYmTh_}(;Hb?8zvLO`b8WGXYt)KXUUs~J${uJ zPIJ?3`oc9mM}Hl_GQHEKe)CHd3{}I3&BNAy2fyftqYHvQ=gc=Hy9exvkNwD5AriF? z!%|GE9{b69jjvS#ltPq(p4gL%?c6PT(0l3I_WqyNP5!)#M=(QtQXMjdON&vV&?nS= zewpmVXHTJd>0vX@bZ1a^MWkvp;YN>YXBjZrvLY1Ecc@>3x%YcnQcKYbdRm@ZP4J*8;nkNzE|%yPL~p^qOv zH%eUx`(f!ayuRK&FOVDj=PF;*8ZUQkP~3wgGkQu;$oDLFTK~3lzjY}URpnkDpbC_K z);ID*MyBzz_7Ps= z{EOUxaWAvHcG}#g>})OLu-Qz>bn>U=vC>@+#QIz=#^!3(f&&!#*%aD zT&R4x9_B4hp*{CS!cZST4ZlCOU{Zk)Rvabj8SA7YYNcgC~!a`y!aWWoT zACkM`zuQ5b7+Nf<_KKW-ye!pneE#n15W=q3U+wAP;Bh`|*bu7?Q`f!u9){`;s^O^o zh&#FQ3%48<+2;rrVhuqjbDs&nR?r+t;nNsf^fEGu3yE0@q!$*etWt5I%K&MhmLrh2 zZvbPs0TvFi$Z#4`*wI>u+CBOV4oQo30Ib+@U4eRM?jlBF)IMQu#!%hT`ci@3Cdr*s z0zQ@`eDe9TdF{7ZVye|iy}*svOxKArEHxCA6^3-`HX^{qXT8}Bf#D%qV!+!J%MK5> zZ=&q*Mm(o3X%pmKu|CiBdI{)Ku{_{b;aJDc#T;{)mFAWJdYXdbBhaxsQWI!MN0L@bj8H8L)3M6^Mn^U`LXc@h) z8s)?(_jd@!*T+DAcXt1cOS23%C~{ClL7Af#@G2)VcL>x8>c(*=YKB>?sy}x6GQYe> z$B`N|uiY>Jv^?uKno&}o64z>Z7MOK9N8miUPvgbmNY1cBHvK#dbJUh-qkB90i#DNk z{EwKUN}#jMA7~glhkyNI$&k^m1=iXj5qc^tx-)4C+a+d_sVyy?oAr@CDtwd4&*EdW zBVfu?YcZ0*^pADQkF4rZ^AApb{P|QVs;9iRwZLvhf=0)`f%|r>)+Z^hgoNY-zb6KK zuM2sc)-*T%MMQCRQ&>AlIw7CcyD)rl4fAVXylbKlGtlF3CTs>>y^l;Z-__8#r^H-m z-J775@0ya@1t@xY-9DgWwjd@-AWsGQ zlAN2;%{Mc$<_7_zMKZ+W+AJCN$(ZGB8vT;y%J>)bJc3mQDoqX~C$6I-TiK=eg^Uys zCV~h5nA-Auf?F3iHt5+-fiGF4_K-B`{upW&k&#)=Ms11}UzX?JMcsuMGC*kltbor4 z$cVA7i{l1+=O+~f{D-tZp0t=#9$8c}&%0kmr9uPSRK4mR$2iXSpcK`ZC_JcQCJF;F zk`Kb->4LmR@9b#HJ_)wl@~~(*m_PeKUw-#o)!#N?Y_n#y9qej?!`>hz$$F!9fA%x> zPrF~R0AxJ)`!D-(-K^5r~ggf60&gARy@6Fl!*Ml4`nUejy9UvIQa2!)EKY!Mp zvJ_3127{{T%Dv3>dm8cb>|G#BOrFx~%@>|K?LY7F*gl3{tM#q9uvK}uX&ilfv~#}p zXumCZrle5kWI!04%1K6{8L32R%hQO#1Hu6u0$?X7(6}cMspDc7>Wb2D*9a?S;{c;? zYiOhIfvY)nz~NwiX46ck6aJsFw-WJ@#CJ%9ZIkK}1kts*Ae*<5a~F|`j^Xqs$fQ97 zTiWGJH!b!w0H+IlVS$%Lt5oWW)3;eL-_I{=>(M4-3}c17|Nm2%J3->uh>FI z&O6S4ZaoAR3eCMls`;7QphcYb2HW*bELx3vjC%k-ds)LJ=F$q+7HHM1JpWb^wzbv> zRx@u<%)BF@!wW5TmisSFIC3fc9 z^nm5;Gi~o9@yhbeJ>Xx~6liS4G%`DZgIWV4Ny%Ya*s#;MIU{Aw1`8@th=R1|xB=nO zP;i&nff?aPkwyiQ{8J$hVYhfde!%i3(531C4LqkcV3Q-Z-RMI^z}bbN8m5QkD%35EhS9o90Rq(k=_*jOOs1vT`H}m|qf@KU zRdd2C5F22Rl7V@17B&;+6%%w*b^?KdNDron>w~hbQhP@E#!I8|u@jiW+nS>g?zkQ3PddzteVerh|gnurRXU(%`!Jv>5fGaDkh-h3Uva}P@{PtXF2}l(C#;% zXW<`T)n)0O;9w;OdU{z60W!Kho}3#(SKYk#?fL>)RiQKxxP_TCy8Mq5=yLWEsocxU z+J}a~aYkW6$#@Uk1aC55NGiljZFO6Bj*c2IXH=MG&$iK9 zIw7rigKw4z3_5=O-+mf?YwnZx`b)^xsnW%_2|5kEAyH9COwIYoPYaE9fpUr zI?;Nq^F}qA7CC_!?jTOO#EuO*iI@G)2u9iSo0!6cCMJ(Ozh}zX)FZMm{8;y!3JZ#l z4>IPHnXbJvvhWDJ4$v7cGDE{K*e(=_TLV_Q8 zg^aHEi!k>zt2KgWXuY~ON=DYozKE4|*fq?ZAd9a{rWcaFw=CU8?w98L`JFORUtKcO z(KlPjD#>%q;iSce^dMA^BHM?a*|7xQIvy^r2O*$h4&RQ^~NE#ZEcL~{(ttIWoNJ{H8w>eZ)utN(3cd3Zj5*brVU z*Mn~9o(=zLJTh$2%UbT$h4nFQ? z#2RUZ(1)cd6@~%8wo*MBQBd$G7%0D?*IF1y^C*@$=yY!}{&Izxlq>3t;ua}}4D#;7 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%0A+2;z4Iv7*m~5UlC`$%P4b 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 -Page Not Found | LLVM Compilation Performance Metrics - - +Page Not Found | tra86: The Asembly Tracer Toolchain + +

-

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - +

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/CNAME b/CNAME deleted file mode 100644 index 9b997fb0..00000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -tra86.skushagra.com \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 055583cb..00000000 --- a/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# RUST-tracing-tool - -A tracing tool to get metrics for performance analysis between C++ and RUST. Proper Website Under Development, with an ETA of 04/17/2024. - -![Screenshot of Tracer](./1.png) - -Created by Kush S.: https://skushagra.com \ No newline at end of file diff --git a/assets/js/0e5d29c6.71123a3d.js b/assets/js/0e5d29c6.71123a3d.js new file mode 100644 index 00000000..29fca427 --- /dev/null +++ b/assets/js/0e5d29c6.71123a3d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[686],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=c(n),p=r,m=h["".concat(l,".").concat(p)]||h[p]||d[p]||o;return n?a.createElement(m,i(i({ref:t},u),{},{components:n})):a.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));const o={},i=void 0,s={type:"mdx",permalink:"/communicationDesign",source:"@site/src/pages/communicationDesign.md",description:"Disclaimer: All general-purpose graphics on this page were generated using Microsoft's Bing AI. For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same.",frontMatter:{}},l=[{value:"First, Some Background",id:"first-some-background",level:2},{value:"Hypothesis 1: Environmental Impacts",id:"hypothesis-1-environmental-impacts",level:2},{value:"Hypothesis 2: Lower the Barrier of Entry to Low-Level Development",id:"hypothesis-2-lower-the-barrier-of-entry-to-low-level-development",level:2},{value:"How do we go about it?",id:"how-do-we-go-about-it",level:2},{value:"Conclusion",id:"conclusion",level:2},{value:"Final Addition",id:"final-addition",level:2}],c={toc:l},u="wrapper";function h(e){let{components:t,...o}=e;return(0,r.kt)(u,(0,a.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Disclaimer: All general-purpose graphics on this page were generated using ",(0,r.kt)("a",{parentName:"p",href:"https://bing.com"},"Microsoft's Bing AI"),". For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same."),(0,r.kt)("h1",{id:"why-is-this-project-significant"},"Why is this project significant."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Intro",src:n(9597).Z,width:"1024",height:"1024"})),(0,r.kt)("p",null,"The following project, while accessible to everyone, is mainly targeted towards the millions of developers creating digital products on the daily. We attempt to reform low level systems in servers and mainframes, in an effort to have userland applications work more efficiently, increase server bandwidth, and give a little bit back to the environment."),(0,r.kt)("p",null,"Let's dive a little bit into each of these:"),(0,r.kt)("h2",{id:"first-some-background"},"First, Some Background"),(0,r.kt)("p",null,"This project attempts to compare and contrast performance differences between RUST and C++, two low level languages that were created at different points of time, and with different goals in mind."),(0,r.kt)("p",null,"While C++ was developed as an incremental upgrade to C, it follows a lot of compiler conventions from the 90s and has not changed much in structure. C++ is prone to various errors if users are not mindful: memory leaks, segmentation faults, kernel errors, and so on. Moreover, being an incremental upgrade to an already old language, C++ can sometimes not be the most efficient language out there."),(0,r.kt)("p",null,"On the other hand, we have RUST: a language whose development started in 2010, and is continuing today. RUST attempts to employ stricter typesetting, better error tracking, and more stringent memory usage to run more efficiently."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"C++",src:n(9747).Z,width:"529",height:"179"})),(0,r.kt)("p",null,"Credits: ",(0,r.kt)("a",{parentName:"p",href:"https://developer.ibm.com/articles/os-developers-know-rust/"},"IBM: Why You Should Learn The RUSt Programming Language.")),(0,r.kt)("p",null,'This is not to say that C++ is a "bad, outdated language". Simply put, most low level systems today still run on C++, mainly because the cost of refactoring to RUST is enormous, and benefits unknown.'),(0,r.kt)("p",null,"By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language."),(0,r.kt)("h2",{id:"hypothesis-1-environmental-impacts"},"Hypothesis 1: Environmental Impacts"),(0,r.kt)("p",null,"According to ",(0,r.kt)("a",{parentName:"p",href:"https://energyinnovation.org/2020/03/17/how-much-energy-do-data-centers-really-use/"},"Energy Innovation"),", global data centers consumed about 205 terawatt-hours (TWh) of electric power, or about 1% of Global Consumer Electricity Consumption."),(0,r.kt)("p",null,"Let us put this in perspective: given the world population, servers alone accounted for the electricity that would have been used by 70,000,000 people. This number is about twice the population of Canada, about 65% of Mexico's Population, and about 4 times the population of Australia."),(0,r.kt)("p",null,"Now, let us assume (hypothetically), that we have moved all low level systems to RUST, which means that all servers in the world run on RUST now. While this is a bit flawed in its nature, let us also assume that there is a direct co-relation between energy consumption and the effectiveness of a language."),(0,r.kt)("p",null,"If RUST enables, through it's various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/List_of_countries_by_electricity_consumption"},"119 countries of the world"),", even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration."),(0,r.kt)("p",null,"RUST would enable the same infrastructure to server exactly the bandwidth it is serving currently, while automatically providing back electricity worth of powering such a high number of countries. Moreover, the same infrastructure can also be utilized into serving an even higher bandwidth without putting new hardware into place, thus providing immense future-proofing and reliability."),(0,r.kt)("h2",{id:"hypothesis-2-lower-the-barrier-of-entry-to-low-level-development"},"Hypothesis 2: Lower the Barrier of Entry to Low-Level Development"),(0,r.kt)("p",null,"Low Level Systems: including, but not limited to, CPU/GPU Architectures, Compilers, Operating Systems, Networking Interfaces, Communication Protocols, and the like are a culmination of decades of work, most of which really gained traction in 1970s. As a result, there exists a high amount of legacy code, which can be unreadable and intimidating: thus making the development process inaccessible to many."),(0,r.kt)("p",null,"The manner in which languages such as C/C++ behave can also differ between systems, which is a result of the time that they were created in. Free/Libre, or Open Source software did not quite exist: which meant that companies shipping computer systems had full control over how a certain language would behave on their system. As a result, C behaves differently on different kernels, even today."),(0,r.kt)("p",null,"There are currently tremendous amounts of versions of C in circulation, and this is before we get into the forks of this language (such as Arduino-C, Objective-C, C#, and so on)."),(0,r.kt)("p",null,"RUST was developed from day 1 as an open source project, placing proper standardization across platforms. RUST behaves exactly the same, on every single piece of hardware. Thus, this lowers the barrier of entry incredibly. Paired with incredible documentation, and a unified compilation process on every system, RUST makes low level development significantly easier to novices and professionals alike."),(0,r.kt)("p",null,"On top of C++, RUST provides the following benefits (from the ",(0,r.kt)("a",{parentName:"p",href:"https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html"},"RUST Documentation"),"):"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"RUST has a more strong typesetting that prevents common errors such as NULL Pointer referencing, memory leaks, buffer overflows, and race conditions. Using the concept of ownership and borrowing to manage memory and resources during compilation, RUST can theoritically execute equally complex programs while using lesser resources."),(0,r.kt)("li",{parentName:"ul"},"RUST allows for more concise code, which makes readability easier for developers. Since low level systems get super complicated to execute even the most basic operations, the cleaner code syntax of RUST is crucial for continued development with the shortest learning curve. The syntax allows for less complexity, thus allowing for updates in low level code at a faster pace."),(0,r.kt)("li",{parentName:"ul"},"RUST is designed for parallel processing and concurrency, which means that any code written is extensible to any system imaginable: ranging from a Raspberry Pi to an IBM Mainframe.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Security Example: Race Conditions: ")),(0,r.kt)("p",null,"For example, here are code snippets in C and Rust that deliberately create a race condition, highlighting how C++ allows it while Rust prevents it with an error."),(0,r.kt)("p",null,"A race condition is a software flaw that occurs when the behavior of a program depends on the timing and order of execution of multiple concurrent operations, leading to unpredictable and often unintended outcomes. We will see a live version of said unpredictable outcomes with C++, and see how RUST fixes this flaw."),(0,r.kt)("p",null,"Let's start with C++:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-c"},'// Race Condition Demo, written by Kush.\n#include \n#include \n#include \n\nint shared_variable = 0;\n\nvoid *increment(void *arg) {\n for (int i = 0; i < 1000000; i++) {\n shared_variable++;\n }\n return NULL;\n }\n\n int main() {\n pthread_t thread1, thread2;\n\n if (pthread_create(&thread1, NULL, increment, NULL) != 0) {\n perror("pthread_create");\n return 1;\n }\n\n if (pthread_create(&thread2, NULL, increment, NULL) != 0) {\n perror("pthread_create");\n return 1;\n }\n\n pthread_join(thread1, NULL);\n pthread_join(thread2, NULL);\n\n printf("Shared variable: %d\\n", shared_variable);\n\n return 0;\n }\n\n')),(0,r.kt)("p",null,"In the C code, two threads are incrementing the shared_variable concurrently, leading to a race condition where the final value is unpredictable. However, C will let us run this with no issues or errors, as demonstrated below 10 times on my own system:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ gcc race.c\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1138441\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1339034\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1070599\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1103020\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1073974\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1233980\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1403249\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1200399\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1036593\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1115206\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$\n")),(0,r.kt)("p",null,"Now, let us try this with RUST:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-c"},'// Race Condition Demo, written by Kush\nuse std::thread;\n\nfn main() {\n let mut shared_variable = 0;\n\n let thread1 = thread::spawn(|| {\n for _ in 0..1_000_000 {\n shared_variable += 1;\n }\n });\n\n let thread2 = thread::spawn(|| {\n for _ in 0..1_000_000 {\n shared_variable += 1;\n }\n });\n\n thread1.join().unwrap();\n thread2.join().unwrap();\n\n println!("Shared variable: {}", shared_variable);\n}\n')),(0,r.kt)("p",null,"In the Rust code, the same scenario is presented, but Rust's ownership and borrowing system will prevent the code from compiling, raising an error like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"error[E0502]: cannot borrow `shared_variable` as mutable because it is also borrowed as immutable\n --\x3e src/main.rs:9:13\n |\n7 | let thread1 = thread::spawn(|| {\n | ---------------- immutable borrow occurs here\n8 | for _ in 0..1_000_000 {\n9 | shared_variable += 1;\n | ^^^^^^^^^^^^^^ mutable borrow occurs here\n...\n15| thread1.join().unwrap();\n | ------------------------ mutable borrow later used here\n")),(0,r.kt)("p",null,"If this undertaking of shifting away from C++ into RUST is fruitful, developers can expect:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"More readable, and less legacy code."),(0,r.kt)("li",{parentName:"ul"},"Faster kernel updates, and a higher ability to contribute to kernel source code."),(0,r.kt)("li",{parentName:"ul"},"More security in kernel code: since it becomes less prone to memory leaks, kernel panics, and the like. This also results in more reliable systems, overall."),(0,r.kt)("li",{parentName:"ul"},"Performance advantages in low level systems would result in faster performance of userland applications, without making a single change to any piece of code."),(0,r.kt)("li",{parentName:"ul"},"Increase bandwidth of servers, without paying for any newer servers.")),(0,r.kt)("p",null,"These are some of the many benefits that developers can expect. However, there's more..."),(0,r.kt)("h2",{id:"how-do-we-go-about-it"},"How do we go about it?"),(0,r.kt)("p",null,"During compilation, every programming language outputs a file called an assembly. For the x86 architecture, this assembly consists of 81 operations and 6 registers, and any combination of these yield to teh functioning of a program."),(0,r.kt)("p",null,'Since we want a platform agnostic way to measuring languages (so nothing that can be solved by throwing more hardware at the problem), we trace the execution of this assembly to find logical differences in how the two programming languages execute the same program. If one language uses more operations, then it performs worse. To do so, I am building my "x86 Asm Tracer", documentation for which can be found on the rest of the site.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"x86 Asm Tracer",src:n(6620).Z,width:"2000",height:"1125"})),(0,r.kt)("p",null,"As the assembly executes, we can see via GDB the current line it is at. I have written a Python program, that latches on to GDB and just writes down every command executed on a text file (displayed in the front of that page). "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-py"},'import gdb\n\n# Define the file path where you want to save the log\nlog_file_path = "./gdb.txt"\n\n# Initialize a flag to track whether a \'jne\' or \'jge\' instruction was executed\njmp_detected = False\n\ndef log_jmp_event(event):\n global jmp_detected # Use the global flag to track if \'jne\' or \'jge\' was detected\n pc = int(gdb.parse_and_eval("$pc"))\n instruction = gdb.execute("x/i " + hex(pc), to_string=True)\n \n if "jne" in instruction or "jge" in instruction:\n jmp_detected = True\n with open(log_file_path, "a") as log_file:\n log_file.write(f"{hex(pc)}: {instruction}\\n")\n\n# Connect the stop event to the log_jmp_event function\ngdb.events.stop.connect(log_jmp_event)\n\n# Define a command to check if \'jne\' or \'jge\' was executed and write to the log file\nclass CheckJmpCommand(gdb.Command):\n def __init__(self):\n super(CheckJmpCommand, self).__init__("checkjmp", gdb.COMMAND_USER)\n\n def invoke(self, arg, from_tty):\n global jmp_detected\n with open(log_file_path, "a") as log_file:\n if jmp_detected:\n log_file.write("jne/jge was executed.\\n")\n else:\n log_file.write("jne/jge was NOT executed.\\n")\n jmp_detected = False # Reset the flag for the next check\n\nCheckJmpCommand()\n')),(0,r.kt)("p",null,'This way, we can see the specific number of operations executed to run the same program, written on two different languages. We can compare this "trace" for both the languages, and determine which is faster performing. However, there can be caveats that have to be taken into account: for example, RUST\'s security may mean more operations take place, but it provides more peace of mind.'),(0,r.kt)("p",null,"This is a tradeoff that will have to be looked into at all times."),(0,r.kt)("h2",{id:"conclusion"},"Conclusion"),(0,r.kt)("p",null,"In conclusion, this project holds significant promise for the digital development community and the broader environment. By comparing the performance differences between the low-level languages C++ and RUST, it seeks to address multiple critical aspects:"),(0,r.kt)("p",null,"First, the project aims to lower the barrier of entry to low-level development by demonstrating how RUST's open-source nature, standardized behavior across platforms, and enhanced memory management can make low-level development more accessible and efficient. Shifting away from C++ to RUST could result in more readable code, faster kernel updates, increased security, and improved performance without the need for hardware upgrades."),(0,r.kt)("p",null,"Secondly, the environmental impact is a substantial consideration. If RUST, with its efficiency gains, were to become the standard for low-level systems, it could lead to massive energy savings, potentially surpassing the electricity consumption of many countries. This transition to RUST would not only reduce energy consumption but also offer future-proofing benefits, ensuring reliable infrastructure. Overall, this project is poised to benefit developers, users, and the environment by enhancing efficiency and sustainability in low-level systems."),(0,r.kt)("h2",{id:"final-addition"},"Final Addition"),(0,r.kt)("p",null,"I gave a 1 minute pitch on this project for iCons 4, and have attached it below :)"),(0,r.kt)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/oN9MKmiI1G4?si=teqXrn_0IZzwrpV2",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}h.isMDXComponent=!0},9597:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/3-e16c39f5fde8e9964acaca8b352409ba.jfif"},9747:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,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"},6620:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/5-b8b24f2e165b57406962d4338cf53db5.png"}}]); \ No newline at end of file diff --git a/assets/js/0e5d29c6.d79f182d.js b/assets/js/0e5d29c6.d79f182d.js deleted file mode 100644 index 8f74afe6..00000000 --- a/assets/js/0e5d29c6.d79f182d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[686],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},h="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),h=c(n),p=r,m=h["".concat(l,".").concat(p)]||h[p]||d[p]||o;return n?a.createElement(m,i(i({ref:t},u),{},{components:n})):a.createElement(m,i({ref:t},u))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[h]="string"==typeof e?e:r,i[1]=s;for(var c=2;c{n.r(t),n.d(t,{contentTitle:()=>i,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>l});var a=n(7462),r=(n(7294),n(3905));const o={},i=void 0,s={type:"mdx",permalink:"/communicationDesign",source:"@site/src/pages/communicationDesign.md",description:"Disclaimer: All general-purpose graphics on this page were generated using Microsoft's Bing AI. For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same.",frontMatter:{}},l=[{value:"First, Some Background",id:"first-some-background",level:2},{value:"Hypothesis 1: Environmental Impacts",id:"hypothesis-1-environmental-impacts",level:2},{value:"Hypothesis 2: Lower the Barrier of Entry to Low-Level Development",id:"hypothesis-2-lower-the-barrier-of-entry-to-low-level-development",level:2},{value:"How do we go about it?",id:"how-do-we-go-about-it",level:2},{value:"Conclusion",id:"conclusion",level:2},{value:"Final Addition",id:"final-addition",level:2}],c={toc:l},u="wrapper";function h(e){let{components:t,...o}=e;return(0,r.kt)(u,(0,a.Z)({},c,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Disclaimer: All general-purpose graphics on this page were generated using ",(0,r.kt)("a",{parentName:"p",href:"https://bing.com"},"Microsoft's Bing AI"),". For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same."),(0,r.kt)("h1",{id:"why-is-this-project-significant"},"Why is this project significant."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Intro",src:n(165).Z,width:"1024",height:"1024"})),(0,r.kt)("p",null,"The following project, while accessible to everyone, is mainly targeted towards the millions of developers creating digital products on the daily. We attempt to reform low level systems in servers and mainframes, in an effort to have userland applications work more efficiently, increase server bandwidth, and give a little bit back to the environment."),(0,r.kt)("p",null,"Let's dive a little bit into each of these:"),(0,r.kt)("h2",{id:"first-some-background"},"First, Some Background"),(0,r.kt)("p",null,"This project attempts to compare and contrast performance differences between RUST and C++, two low level languages that were created at different points of time, and with different goals in mind."),(0,r.kt)("p",null,"While C++ was developed as an incremental upgrade to C, it follows a lot of compiler conventions from the 90s and has not changed much in structure. C++ is prone to various errors if users are not mindful: memory leaks, segmentation faults, kernel errors, and so on. Moreover, being an incremental upgrade to an already old language, C++ can sometimes not be the most efficient language out there."),(0,r.kt)("p",null,"On the other hand, we have RUST: a language whose development started in 2010, and is continuing today. RUST attempts to employ stricter typesetting, better error tracking, and more stringent memory usage to run more efficiently."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"C++",src:n(2859).Z,width:"529",height:"179"})),(0,r.kt)("p",null,"Credits: ",(0,r.kt)("a",{parentName:"p",href:"https://developer.ibm.com/articles/os-developers-know-rust/"},"IBM: Why You Should Learn The RUSt Programming Language.")),(0,r.kt)("p",null,'This is not to say that C++ is a "bad, outdated language". Simply put, most low level systems today still run on C++, mainly because the cost of refactoring to RUST is enormous, and benefits unknown.'),(0,r.kt)("p",null,"By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language."),(0,r.kt)("h2",{id:"hypothesis-1-environmental-impacts"},"Hypothesis 1: Environmental Impacts"),(0,r.kt)("p",null,"According to ",(0,r.kt)("a",{parentName:"p",href:"https://energyinnovation.org/2020/03/17/how-much-energy-do-data-centers-really-use/"},"Energy Innovation"),", global data centers consumed about 205 terawatt-hours (TWh) of electric power, or about 1% of Global Consumer Electricity Consumption."),(0,r.kt)("p",null,"Let us put this in perspective: given the world population, servers alone accounted for the electricity that would have been used by 70,000,000 people. This number is about twice the population of Canada, about 65% of Mexico's Population, and about 4 times the population of Australia."),(0,r.kt)("p",null,"Now, let us assume (hypothetically), that we have moved all low level systems to RUST, which means that all servers in the world run on RUST now. While this is a bit flawed in its nature, let us also assume that there is a direct co-relation between energy consumption and the effectiveness of a language."),(0,r.kt)("p",null,"If RUST enables, through it's various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/List_of_countries_by_electricity_consumption"},"119 countries of the world"),", even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration."),(0,r.kt)("p",null,"RUST would enable the same infrastructure to server exactly the bandwidth it is serving currently, while automatically providing back electricity worth of powering such a high number of countries. Moreover, the same infrastructure can also be utilized into serving an even higher bandwidth without putting new hardware into place, thus providing immense future-proofing and reliability."),(0,r.kt)("h2",{id:"hypothesis-2-lower-the-barrier-of-entry-to-low-level-development"},"Hypothesis 2: Lower the Barrier of Entry to Low-Level Development"),(0,r.kt)("p",null,"Low Level Systems: including, but not limited to, CPU/GPU Architectures, Compilers, Operating Systems, Networking Interfaces, Communication Protocols, and the like are a culmination of decades of work, most of which really gained traction in 1970s. As a result, there exists a high amount of legacy code, which can be unreadable and intimidating: thus making the development process inaccessible to many."),(0,r.kt)("p",null,"The manner in which languages such as C/C++ behave can also differ between systems, which is a result of the time that they were created in. Free/Libre, or Open Source software did not quite exist: which meant that companies shipping computer systems had full control over how a certain language would behave on their system. As a result, C behaves differently on different kernels, even today."),(0,r.kt)("p",null,"There are currently tremendous amounts of versions of C in circulation, and this is before we get into the forks of this language (such as Arduino-C, Objective-C, C#, and so on)."),(0,r.kt)("p",null,"RUST was developed from day 1 as an open source project, placing proper standardization across platforms. RUST behaves exactly the same, on every single piece of hardware. Thus, this lowers the barrier of entry incredibly. Paired with incredible documentation, and a unified compilation process on every system, RUST makes low level development significantly easier to novices and professionals alike."),(0,r.kt)("p",null,"On top of C++, RUST provides the following benefits (from the ",(0,r.kt)("a",{parentName:"p",href:"https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html"},"RUST Documentation"),"):"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"RUST has a more strong typesetting that prevents common errors such as NULL Pointer referencing, memory leaks, buffer overflows, and race conditions. Using the concept of ownership and borrowing to manage memory and resources during compilation, RUST can theoritically execute equally complex programs while using lesser resources."),(0,r.kt)("li",{parentName:"ul"},"RUST allows for more concise code, which makes readability easier for developers. Since low level systems get super complicated to execute even the most basic operations, the cleaner code syntax of RUST is crucial for continued development with the shortest learning curve. The syntax allows for less complexity, thus allowing for updates in low level code at a faster pace."),(0,r.kt)("li",{parentName:"ul"},"RUST is designed for parallel processing and concurrency, which means that any code written is extensible to any system imaginable: ranging from a Raspberry Pi to an IBM Mainframe.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"}," Security Example: Race Conditions: ")),(0,r.kt)("p",null,"For example, here are code snippets in C and Rust that deliberately create a race condition, highlighting how C++ allows it while Rust prevents it with an error."),(0,r.kt)("p",null,"A race condition is a software flaw that occurs when the behavior of a program depends on the timing and order of execution of multiple concurrent operations, leading to unpredictable and often unintended outcomes. We will see a live version of said unpredictable outcomes with C++, and see how RUST fixes this flaw."),(0,r.kt)("p",null,"Let's start with C++:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-c"},'// Race Condition Demo, written by Kush.\n#include \n#include \n#include \n\nint shared_variable = 0;\n\nvoid *increment(void *arg) {\n for (int i = 0; i < 1000000; i++) {\n shared_variable++;\n }\n return NULL;\n }\n\n int main() {\n pthread_t thread1, thread2;\n\n if (pthread_create(&thread1, NULL, increment, NULL) != 0) {\n perror("pthread_create");\n return 1;\n }\n\n if (pthread_create(&thread2, NULL, increment, NULL) != 0) {\n perror("pthread_create");\n return 1;\n }\n\n pthread_join(thread1, NULL);\n pthread_join(thread2, NULL);\n\n printf("Shared variable: %d\\n", shared_variable);\n\n return 0;\n }\n\n')),(0,r.kt)("p",null,"In the C code, two threads are incrementing the shared_variable concurrently, leading to a race condition where the final value is unpredictable. However, C will let us run this with no issues or errors, as demonstrated below 10 times on my own system:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ gcc race.c\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1138441\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1339034\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1070599\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1103020\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1073974\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1233980\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1403249\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1200399\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1036593\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out\nShared variable: 1115206\nsuobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$\n")),(0,r.kt)("p",null,"Now, let us try this with RUST:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-c"},'// Race Condition Demo, written by Kush\nuse std::thread;\n\nfn main() {\n let mut shared_variable = 0;\n\n let thread1 = thread::spawn(|| {\n for _ in 0..1_000_000 {\n shared_variable += 1;\n }\n });\n\n let thread2 = thread::spawn(|| {\n for _ in 0..1_000_000 {\n shared_variable += 1;\n }\n });\n\n thread1.join().unwrap();\n thread2.join().unwrap();\n\n println!("Shared variable: {}", shared_variable);\n}\n')),(0,r.kt)("p",null,"In the Rust code, the same scenario is presented, but Rust's ownership and borrowing system will prevent the code from compiling, raising an error like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"error[E0502]: cannot borrow `shared_variable` as mutable because it is also borrowed as immutable\n --\x3e src/main.rs:9:13\n |\n7 | let thread1 = thread::spawn(|| {\n | ---------------- immutable borrow occurs here\n8 | for _ in 0..1_000_000 {\n9 | shared_variable += 1;\n | ^^^^^^^^^^^^^^ mutable borrow occurs here\n...\n15| thread1.join().unwrap();\n | ------------------------ mutable borrow later used here\n")),(0,r.kt)("p",null,"If this undertaking of shifting away from C++ into RUST is fruitful, developers can expect:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"More readable, and less legacy code."),(0,r.kt)("li",{parentName:"ul"},"Faster kernel updates, and a higher ability to contribute to kernel source code."),(0,r.kt)("li",{parentName:"ul"},"More security in kernel code: since it becomes less prone to memory leaks, kernel panics, and the like. This also results in more reliable systems, overall."),(0,r.kt)("li",{parentName:"ul"},"Performance advantages in low level systems would result in faster performance of userland applications, without making a single change to any piece of code."),(0,r.kt)("li",{parentName:"ul"},"Increase bandwidth of servers, without paying for any newer servers.")),(0,r.kt)("p",null,"These are some of the many benefits that developers can expect. However, there's more..."),(0,r.kt)("h2",{id:"how-do-we-go-about-it"},"How do we go about it?"),(0,r.kt)("p",null,"During compilation, every programming language outputs a file called an assembly. For the x86 architecture, this assembly consists of 81 operations and 6 registers, and any combination of these yield to teh functioning of a program."),(0,r.kt)("p",null,'Since we want a platform agnostic way to measuring languages (so nothing that can be solved by throwing more hardware at the problem), we trace the execution of this assembly to find logical differences in how the two programming languages execute the same program. If one language uses more operations, then it performs worse. To do so, I am building my "x86 Asm Tracer", documentation for which can be found on the rest of the site.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"x86 Asm Tracer",src:n(9581).Z,width:"2000",height:"1125"})),(0,r.kt)("p",null,"As the assembly executes, we can see via GDB the current line it is at. I have written a Python program, that latches on to GDB and just writes down every command executed on a text file (displayed in the front of that page). "),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-py"},'import gdb\n\n# Define the file path where you want to save the log\nlog_file_path = "./gdb.txt"\n\n# Initialize a flag to track whether a \'jne\' or \'jge\' instruction was executed\njmp_detected = False\n\ndef log_jmp_event(event):\n global jmp_detected # Use the global flag to track if \'jne\' or \'jge\' was detected\n pc = int(gdb.parse_and_eval("$pc"))\n instruction = gdb.execute("x/i " + hex(pc), to_string=True)\n \n if "jne" in instruction or "jge" in instruction:\n jmp_detected = True\n with open(log_file_path, "a") as log_file:\n log_file.write(f"{hex(pc)}: {instruction}\\n")\n\n# Connect the stop event to the log_jmp_event function\ngdb.events.stop.connect(log_jmp_event)\n\n# Define a command to check if \'jne\' or \'jge\' was executed and write to the log file\nclass CheckJmpCommand(gdb.Command):\n def __init__(self):\n super(CheckJmpCommand, self).__init__("checkjmp", gdb.COMMAND_USER)\n\n def invoke(self, arg, from_tty):\n global jmp_detected\n with open(log_file_path, "a") as log_file:\n if jmp_detected:\n log_file.write("jne/jge was executed.\\n")\n else:\n log_file.write("jne/jge was NOT executed.\\n")\n jmp_detected = False # Reset the flag for the next check\n\nCheckJmpCommand()\n')),(0,r.kt)("p",null,'This way, we can see the specific number of operations executed to run the same program, written on two different languages. We can compare this "trace" for both the languages, and determine which is faster performing. However, there can be caveats that have to be taken into account: for example, RUST\'s security may mean more operations take place, but it provides more peace of mind.'),(0,r.kt)("p",null,"This is a tradeoff that will have to be looked into at all times."),(0,r.kt)("h2",{id:"conclusion"},"Conclusion"),(0,r.kt)("p",null,"In conclusion, this project holds significant promise for the digital development community and the broader environment. By comparing the performance differences between the low-level languages C++ and RUST, it seeks to address multiple critical aspects:"),(0,r.kt)("p",null,"First, the project aims to lower the barrier of entry to low-level development by demonstrating how RUST's open-source nature, standardized behavior across platforms, and enhanced memory management can make low-level development more accessible and efficient. Shifting away from C++ to RUST could result in more readable code, faster kernel updates, increased security, and improved performance without the need for hardware upgrades."),(0,r.kt)("p",null,"Secondly, the environmental impact is a substantial consideration. If RUST, with its efficiency gains, were to become the standard for low-level systems, it could lead to massive energy savings, potentially surpassing the electricity consumption of many countries. This transition to RUST would not only reduce energy consumption but also offer future-proofing benefits, ensuring reliable infrastructure. Overall, this project is poised to benefit developers, users, and the environment by enhancing efficiency and sustainability in low-level systems."),(0,r.kt)("h2",{id:"final-addition"},"Final Addition"),(0,r.kt)("p",null,"I gave a 1 minute pitch on this project for iCons 4, and have attached it below :)"),(0,r.kt)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/oN9MKmiI1G4?si=teqXrn_0IZzwrpV2",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:!0}))}h.isMDXComponent=!0},165:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/3-e16c39f5fde8e9964acaca8b352409ba.jfif"},2859:(e,t,n)=>{n.d(t,{Z:()=>a});const a="data:image/png;base64,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"},9581:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/5-b8b24f2e165b57406962d4338cf53db5.png"}}]); \ No newline at end of file diff --git a/assets/js/17896441.3c6437ae.js b/assets/js/17896441.09ad3e46.js similarity index 99% rename from assets/js/17896441.3c6437ae.js rename to assets/js/17896441.09ad3e46.js index d03fb834..ea5e5884 100644 --- a/assets/js/17896441.3c6437ae.js +++ b/assets/js/17896441.09ad3e46.js @@ -1 +1 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[918],{1310:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(7462),l=a(7294),r=a(6010),o=a(5281),s=a(2802),c=a(8596),i=a(9960),d=a(5999),m=a(4996);function u(e){return l.createElement("svg",(0,n.Z)({viewBox:"0 0 24 24"},e),l.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const b={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function p(){const e=(0,m.Z)("/");return l.createElement("li",{className:"breadcrumbs__item"},l.createElement(i.Z,{"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},l.createElement(u,{className:b.breadcrumbHomeIcon})))}const E={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function h(e){let{children:t,href:a,isLast:n}=e;const r="breadcrumbs__link";return n?l.createElement("span",{className:r,itemProp:"name"},t):a?l.createElement(i.Z,{className:r,href:a,itemProp:"item"},l.createElement("span",{itemProp:"name"},t)):l.createElement("span",{className:r},t)}function v(e){let{children:t,active:a,index:o,addMicrodata:s}=e;return l.createElement("li",(0,n.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,l.createElement("meta",{itemProp:"position",content:String(o+1)}))}function g(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?l.createElement("nav",{className:(0,r.Z)(o.k.docs.docBreadcrumbs,E.breadcrumbsContainer),"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},l.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&l.createElement(p,null),e.map(((t,a)=>{const n=a===e.length-1;return l.createElement(v,{key:a,active:n,index:a,addMicrodata:!!t.href},l.createElement(h,{href:t.href,isLast:n},t.label))})))):null}},230:(e,t,a)=>{a.r(t),a.d(t,{default:()=>X});var n=a(7294),l=a(1944),r=a(902);const o=n.createContext(null);function s(e){let{children:t,content:a}=e;const l=function(e){return(0,n.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(a);return n.createElement(o.Provider,{value:l},t)}function c(){const e=(0,n.useContext)(o);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:a}=c();return n.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:a.image??t.image})}var d=a(6010),m=a(7524),u=a(4966);function b(){const{metadata:e}=c();return n.createElement(u.Z,{previous:e.previous,next:e.next})}var p=a(3120),E=a(4364),h=a(5281),v=a(5999);function g(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a}=e;return n.createElement(v.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function f(e){let{lastUpdatedBy:t}=e;return n.createElement(v.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function _(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a,lastUpdatedBy:l}=e;return n.createElement("span",{className:h.k.common.lastUpdated},n.createElement(v.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(g,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:l?n.createElement(f,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var Z=a(7462);const N={iconEdit:"iconEdit_Z9Sw"};function k(e){let{className:t,...a}=e;return n.createElement("svg",(0,Z.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,d.Z)(N.iconEdit,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function L(e){let{editUrl:t}=e;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:h.k.common.editThisPage},n.createElement(k,null),n.createElement(v.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}var C=a(9960);const T={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function U(e){let{permalink:t,label:a,count:l}=e;return n.createElement(C.Z,{href:t,className:(0,d.Z)(T.tag,l?T.tagWithCount:T.tagRegular)},a,l&&n.createElement("span",null,l))}const w={tags:"tags_jXut",tag:"tag_QGVx"};function x(e){let{tags:t}=e;return n.createElement(n.Fragment,null,n.createElement("b",null,n.createElement(v.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),n.createElement("ul",{className:(0,d.Z)(w.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:a}=e;return n.createElement("li",{key:a,className:w.tag},n.createElement(U,{label:t,permalink:a}))}))))}const y={lastUpdated:"lastUpdated_vwxv"};function A(e){return n.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterTagsRow,"row margin-bottom--sm")},n.createElement("div",{className:"col"},n.createElement(x,e)))}function M(e){let{editUrl:t,lastUpdatedAt:a,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return n.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterEditMetaRow,"row")},n.createElement("div",{className:"col"},t&&n.createElement(L,{editUrl:t})),n.createElement("div",{className:(0,d.Z)("col",y.lastUpdated)},(a||l)&&n.createElement(_,{lastUpdatedAt:a,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function B(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:a,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:o}=e,s=o.length>0,i=!!(t||a||r);return s||i?n.createElement("footer",{className:(0,d.Z)(h.k.docs.docFooter,"docusaurus-mt-lg")},s&&n.createElement(A,{tags:o}),i&&n.createElement(M,{editUrl:t,lastUpdatedAt:a,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var I=a(6043),V=a(3743);const H={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function P(e){let{collapsed:t,...a}=e;return n.createElement("button",(0,Z.Z)({type:"button"},a,{className:(0,d.Z)("clean-btn",H.tocCollapsibleButton,!t&&H.tocCollapsibleButtonExpanded,a.className)}),n.createElement(v.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const D={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function S(e){let{toc:t,className:a,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:o,toggleCollapsed:s}=(0,I.u)({initialState:!0});return n.createElement("div",{className:(0,d.Z)(D.tocCollapsible,!o&&D.tocCollapsibleExpanded,a)},n.createElement(P,{collapsed:o,onClick:s}),n.createElement(I.z,{lazy:!0,className:D.tocCollapsibleContent,collapsed:o},n.createElement(V.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const F={tocMobile:"tocMobile_ITEo"};function R(){const{toc:e,frontMatter:t}=c();return n.createElement(S,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(h.k.docs.docTocMobile,F.tocMobile)})}var z=a(9407);function O(){const{toc:e,frontMatter:t}=c();return n.createElement(z.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:h.k.docs.docTocDesktop})}var j=a(2503),G=a(1506);function W(e){let{children:t}=e;const a=function(){const{metadata:e,frontMatter:t,contentTitle:a}=c();return t.hide_title||void 0!==a?null:e.title}();return n.createElement("div",{className:(0,d.Z)(h.k.docs.docMarkdown,"markdown")},a&&n.createElement("header",null,n.createElement(j.Z,{as:"h1"},a)),n.createElement(G.Z,null,t))}var q=a(1310);const J={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function Q(e){let{children:t}=e;const a=function(){const{frontMatter:e,toc:t}=c(),a=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?n.createElement(R,null):void 0,desktop:!r||"desktop"!==a&&"ssr"!==a?void 0:n.createElement(O,null)}}();return n.createElement("div",{className:"row"},n.createElement("div",{className:(0,d.Z)("col",!a.hidden&&J.docItemCol)},n.createElement(p.Z,null),n.createElement("div",{className:J.docItemContainer},n.createElement("article",null,n.createElement(q.Z,null),n.createElement(E.Z,null),a.mobile,n.createElement(W,null,t),n.createElement(B,null)),n.createElement(b,null))),a.desktop&&n.createElement("div",{className:"col col--3"},a.desktop))}function X(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,a=e.content;return n.createElement(s,{content:e.content},n.createElement(l.FG,{className:t},n.createElement(i,null),n.createElement(Q,null,n.createElement(a,null))))}},4966:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7462),l=a(7294),r=a(5999),o=a(6010),s=a(9960);function c(e){const{permalink:t,title:a,subLabel:n,isNext:r}=e;return l.createElement(s.Z,{className:(0,o.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},n&&l.createElement("div",{className:"pagination-nav__sublabel"},n),l.createElement("div",{className:"pagination-nav__label"},a))}function i(e){const{previous:t,next:a}=e;return l.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&l.createElement(c,(0,n.Z)({},t,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&l.createElement(c,(0,n.Z)({},a,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},4364:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(7294),l=a(6010),r=a(5999),o=a(5281),s=a(4477);function c(e){let{className:t}=e;const a=(0,s.E)();return a.badge?n.createElement("span",{className:(0,l.Z)(t,o.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},3120:(e,t,a)=>{a.d(t,{Z:()=>h});var n=a(7294),l=a(6010),r=a(2263),o=a(9960),s=a(5999),c=a(143),i=a(5281),d=a(373),m=a(4477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function b(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function p(e){let{versionLabel:t,to:a,onClick:l}=e;return n.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(o.Z,{to:a,onClick:l},n.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function E(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:o}}=(0,r.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:m}=(0,d.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:E}=(0,c.Jo)(s),h=u??(v=E).docs.find((e=>e.id===v.mainDocId));var v;return n.createElement("div",{className:(0,l.Z)(t,i.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(b,{siteTitle:o,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(p,{versionLabel:E.label,to:h.path,onClick:()=>m(E.name)})))}function h(e){let{className:t}=e;const a=(0,m.E)();return a.banner?n.createElement(E,{className:t,versionMetadata:a}):null}}}]); \ No newline at end of file +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[918],{1310:(e,t,a)=>{a.d(t,{Z:()=>g});var n=a(7462),l=a(7294),r=a(6010),o=a(5281),s=a(2802),c=a(8596),i=a(9960),d=a(5999),m=a(4996);function u(e){return l.createElement("svg",(0,n.Z)({viewBox:"0 0 24 24"},e),l.createElement("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"}))}const b={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function p(){const e=(0,m.Z)("/");return l.createElement("li",{className:"breadcrumbs__item"},l.createElement(i.Z,{"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e},l.createElement(u,{className:b.breadcrumbHomeIcon})))}const E={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function h(e){let{children:t,href:a,isLast:n}=e;const r="breadcrumbs__link";return n?l.createElement("span",{className:r,itemProp:"name"},t):a?l.createElement(i.Z,{className:r,href:a,itemProp:"item"},l.createElement("span",{itemProp:"name"},t)):l.createElement("span",{className:r},t)}function v(e){let{children:t,active:a,index:o,addMicrodata:s}=e;return l.createElement("li",(0,n.Z)({},s&&{itemScope:!0,itemProp:"itemListElement",itemType:"https://schema.org/ListItem"},{className:(0,r.Z)("breadcrumbs__item",{"breadcrumbs__item--active":a})}),t,l.createElement("meta",{itemProp:"position",content:String(o+1)}))}function g(){const e=(0,s.s1)(),t=(0,c.Ns)();return e?l.createElement("nav",{className:(0,r.Z)(o.k.docs.docBreadcrumbs,E.breadcrumbsContainer),"aria-label":(0,d.I)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"})},l.createElement("ul",{className:"breadcrumbs",itemScope:!0,itemType:"https://schema.org/BreadcrumbList"},t&&l.createElement(p,null),e.map(((t,a)=>{const n=a===e.length-1;return l.createElement(v,{key:a,active:n,index:a,addMicrodata:!!t.href},l.createElement(h,{href:t.href,isLast:n},t.label))})))):null}},230:(e,t,a)=>{a.r(t),a.d(t,{default:()=>X});var n=a(7294),l=a(1944),r=a(902);const o=n.createContext(null);function s(e){let{children:t,content:a}=e;const l=function(e){return(0,n.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(a);return n.createElement(o.Provider,{value:l},t)}function c(){const e=(0,n.useContext)(o);if(null===e)throw new r.i6("DocProvider");return e}function i(){const{metadata:e,frontMatter:t,assets:a}=c();return n.createElement(l.d,{title:e.title,description:e.description,keywords:t.keywords,image:a.image??t.image})}var d=a(6010),m=a(7524),u=a(4966);function b(){const{metadata:e}=c();return n.createElement(u.Z,{previous:e.previous,next:e.next})}var p=a(3120),E=a(4364),h=a(5281),v=a(5999);function g(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a}=e;return n.createElement(v.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function f(e){let{lastUpdatedBy:t}=e;return n.createElement(v.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function _(e){let{lastUpdatedAt:t,formattedLastUpdatedAt:a,lastUpdatedBy:l}=e;return n.createElement("span",{className:h.k.common.lastUpdated},n.createElement(v.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(g,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:l?n.createElement(f,{lastUpdatedBy:l}):""}},"Last updated{atDate}{byUser}"),!1)}var Z=a(7462);const N={iconEdit:"iconEdit_Z9Sw"};function k(e){let{className:t,...a}=e;return n.createElement("svg",(0,Z.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,d.Z)(N.iconEdit,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))}function L(e){let{editUrl:t}=e;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:h.k.common.editThisPage},n.createElement(k,null),n.createElement(v.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}var C=a(9960);const T={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};function U(e){let{permalink:t,label:a,count:l}=e;return n.createElement(C.Z,{href:t,className:(0,d.Z)(T.tag,l?T.tagWithCount:T.tagRegular)},a,l&&n.createElement("span",null,l))}const w={tags:"tags_jXut",tag:"tag_QGVx"};function x(e){let{tags:t}=e;return n.createElement(n.Fragment,null,n.createElement("b",null,n.createElement(v.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),n.createElement("ul",{className:(0,d.Z)(w.tags,"padding--none","margin-left--sm")},t.map((e=>{let{label:t,permalink:a}=e;return n.createElement("li",{key:a,className:w.tag},n.createElement(U,{label:t,permalink:a}))}))))}const y={lastUpdated:"lastUpdated_vwxv"};function A(e){return n.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterTagsRow,"row margin-bottom--sm")},n.createElement("div",{className:"col"},n.createElement(x,e)))}function M(e){let{editUrl:t,lastUpdatedAt:a,lastUpdatedBy:l,formattedLastUpdatedAt:r}=e;return n.createElement("div",{className:(0,d.Z)(h.k.docs.docFooterEditMetaRow,"row")},n.createElement("div",{className:"col"},t&&n.createElement(L,{editUrl:t})),n.createElement("div",{className:(0,d.Z)("col",y.lastUpdated)},(a||l)&&n.createElement(_,{lastUpdatedAt:a,formattedLastUpdatedAt:r,lastUpdatedBy:l})))}function B(){const{metadata:e}=c(),{editUrl:t,lastUpdatedAt:a,formattedLastUpdatedAt:l,lastUpdatedBy:r,tags:o}=e,s=o.length>0,i=!!(t||a||r);return s||i?n.createElement("footer",{className:(0,d.Z)(h.k.docs.docFooter,"docusaurus-mt-lg")},s&&n.createElement(A,{tags:o}),i&&n.createElement(M,{editUrl:t,lastUpdatedAt:a,lastUpdatedBy:r,formattedLastUpdatedAt:l})):null}var I=a(6043),V=a(3743);const H={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function P(e){let{collapsed:t,...a}=e;return n.createElement("button",(0,Z.Z)({type:"button"},a,{className:(0,d.Z)("clean-btn",H.tocCollapsibleButton,!t&&H.tocCollapsibleButtonExpanded,a.className)}),n.createElement(v.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page"))}const D={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function S(e){let{toc:t,className:a,minHeadingLevel:l,maxHeadingLevel:r}=e;const{collapsed:o,toggleCollapsed:s}=(0,I.u)({initialState:!0});return n.createElement("div",{className:(0,d.Z)(D.tocCollapsible,!o&&D.tocCollapsibleExpanded,a)},n.createElement(P,{collapsed:o,onClick:s}),n.createElement(I.z,{lazy:!0,className:D.tocCollapsibleContent,collapsed:o},n.createElement(V.Z,{toc:t,minHeadingLevel:l,maxHeadingLevel:r})))}const F={tocMobile:"tocMobile_ITEo"};function R(){const{toc:e,frontMatter:t}=c();return n.createElement(S,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:(0,d.Z)(h.k.docs.docTocMobile,F.tocMobile)})}var z=a(9407);function O(){const{toc:e,frontMatter:t}=c();return n.createElement(z.Z,{toc:e,minHeadingLevel:t.toc_min_heading_level,maxHeadingLevel:t.toc_max_heading_level,className:h.k.docs.docTocDesktop})}var j=a(2503),G=a(3946);function W(e){let{children:t}=e;const a=function(){const{metadata:e,frontMatter:t,contentTitle:a}=c();return t.hide_title||void 0!==a?null:e.title}();return n.createElement("div",{className:(0,d.Z)(h.k.docs.docMarkdown,"markdown")},a&&n.createElement("header",null,n.createElement(j.Z,{as:"h1"},a)),n.createElement(G.Z,null,t))}var q=a(1310);const J={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function Q(e){let{children:t}=e;const a=function(){const{frontMatter:e,toc:t}=c(),a=(0,m.i)(),l=e.hide_table_of_contents,r=!l&&t.length>0;return{hidden:l,mobile:r?n.createElement(R,null):void 0,desktop:!r||"desktop"!==a&&"ssr"!==a?void 0:n.createElement(O,null)}}();return n.createElement("div",{className:"row"},n.createElement("div",{className:(0,d.Z)("col",!a.hidden&&J.docItemCol)},n.createElement(p.Z,null),n.createElement("div",{className:J.docItemContainer},n.createElement("article",null,n.createElement(q.Z,null),n.createElement(E.Z,null),a.mobile,n.createElement(W,null,t),n.createElement(B,null)),n.createElement(b,null))),a.desktop&&n.createElement("div",{className:"col col--3"},a.desktop))}function X(e){const t=`docs-doc-id-${e.content.metadata.unversionedId}`,a=e.content;return n.createElement(s,{content:e.content},n.createElement(l.FG,{className:t},n.createElement(i,null),n.createElement(Q,null,n.createElement(a,null))))}},4966:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(7462),l=a(7294),r=a(5999),o=a(6010),s=a(9960);function c(e){const{permalink:t,title:a,subLabel:n,isNext:r}=e;return l.createElement(s.Z,{className:(0,o.Z)("pagination-nav__link",r?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t},n&&l.createElement("div",{className:"pagination-nav__sublabel"},n),l.createElement("div",{className:"pagination-nav__label"},a))}function i(e){const{previous:t,next:a}=e;return l.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,r.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"})},t&&l.createElement(c,(0,n.Z)({},t,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")})),a&&l.createElement(c,(0,n.Z)({},a,{subLabel:l.createElement(r.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next"),isNext:!0})))}},4364:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(7294),l=a(6010),r=a(5999),o=a(5281),s=a(4477);function c(e){let{className:t}=e;const a=(0,s.E)();return a.badge?n.createElement("span",{className:(0,l.Z)(t,o.k.docs.docVersionBadge,"badge badge--secondary")},n.createElement(r.Z,{id:"theme.docs.versionBadge.label",values:{versionLabel:a.label}},"Version: {versionLabel}")):null}},3120:(e,t,a)=>{a.d(t,{Z:()=>h});var n=a(7294),l=a(6010),r=a(2263),o=a(9960),s=a(5999),c=a(143),i=a(5281),d=a(373),m=a(4477);const u={unreleased:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){let{siteTitle:t,versionMetadata:a}=e;return n.createElement(s.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function b(e){const t=u[e.versionMetadata.banner];return n.createElement(t,e)}function p(e){let{versionLabel:t,to:a,onClick:l}=e;return n.createElement(s.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(o.Z,{to:a,onClick:l},n.createElement(s.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function E(e){let{className:t,versionMetadata:a}=e;const{siteConfig:{title:o}}=(0,r.Z)(),{pluginId:s}=(0,c.gA)({failfast:!0}),{savePreferredVersionName:m}=(0,d.J)(s),{latestDocSuggestion:u,latestVersionSuggestion:E}=(0,c.Jo)(s),h=u??(v=E).docs.find((e=>e.id===v.mainDocId));var v;return n.createElement("div",{className:(0,l.Z)(t,i.k.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(b,{siteTitle:o,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(p,{versionLabel:E.label,to:h.path,onClick:()=>m(E.name)})))}function h(e){let{className:t}=e;const a=(0,m.E)();return a.banner?n.createElement(E,{className:t,versionMetadata:a}):null}}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.78f69afa.js b/assets/js/1f391b9e.21d823d1.js similarity index 93% rename from assets/js/1f391b9e.78f69afa.js rename to assets/js/1f391b9e.21d823d1.js index 67112c06..a1cf45a8 100644 --- a/assets/js/1f391b9e.78f69afa.js +++ b/assets/js/1f391b9e.21d823d1.js @@ -1 +1 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[85],{4247:(e,t,a)=>{a.r(t),a.d(t,{default:()=>d});var l=a(7294),n=a(6010),c=a(1944),r=a(5281),m=a(7961),i=a(1506),s=a(9407);const o={mdxPageWrapper:"mdxPageWrapper_j9I6"};function d(e){const{content:t}=e,{metadata:{title:a,description:d,frontMatter:p}}=t,{wrapperClassName:_,hide_table_of_contents:g}=p;return l.createElement(c.FG,{className:(0,n.Z)(_??r.k.wrapper.mdxPages,r.k.page.mdxPage)},l.createElement(c.d,{title:a,description:d}),l.createElement(m.Z,null,l.createElement("main",{className:"container container--fluid margin-vert--lg"},l.createElement("div",{className:(0,n.Z)("row",o.mdxPageWrapper)},l.createElement("div",{className:(0,n.Z)("col",!g&&"col--8")},l.createElement("article",null,l.createElement(i.Z,null,l.createElement(t,null)))),!g&&t.toc.length>0&&l.createElement("div",{className:"col col--2"},l.createElement(s.Z,{toc:t.toc,minHeadingLevel:p.toc_min_heading_level,maxHeadingLevel:p.toc_max_heading_level}))))))}}}]); \ No newline at end of file +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[85],{4247:(e,t,a)=>{a.r(t),a.d(t,{default:()=>d});var l=a(7294),n=a(6010),c=a(1944),r=a(5281),m=a(7961),i=a(3946),s=a(9407);const o={mdxPageWrapper:"mdxPageWrapper_j9I6"};function d(e){const{content:t}=e,{metadata:{title:a,description:d,frontMatter:p}}=t,{wrapperClassName:_,hide_table_of_contents:g}=p;return l.createElement(c.FG,{className:(0,n.Z)(_??r.k.wrapper.mdxPages,r.k.page.mdxPage)},l.createElement(c.d,{title:a,description:d}),l.createElement(m.Z,null,l.createElement("main",{className:"container container--fluid margin-vert--lg"},l.createElement("div",{className:(0,n.Z)("row",o.mdxPageWrapper)},l.createElement("div",{className:(0,n.Z)("col",!g&&"col--8")},l.createElement("article",null,l.createElement(i.Z,null,l.createElement(t,null)))),!g&&t.toc.length>0&&l.createElement("div",{className:"col col--2"},l.createElement(s.Z,{toc:t.toc,minHeadingLevel:p.toc_min_heading_level,maxHeadingLevel:p.toc_max_heading_level}))))))}}}]); \ No newline at end of file diff --git a/assets/js/376.3bd71d03.js b/assets/js/376.3bd71d03.js new file mode 100644 index 00000000..238d4335 --- /dev/null +++ b/assets/js/376.3bd71d03.js @@ -0,0 +1 @@ +(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[376],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>u,kt:()=>f});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=o.createContext({}),s=function(e){var t=o.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(i.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},p=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(n),p=r,f=m["".concat(i,".").concat(p)]||m[p]||d[p]||a;return n?o.createElement(f,c(c({ref:t},u),{},{components:n})):o.createElement(f,c({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,c=new Array(a);c[0]=p;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[m]="string"==typeof e?e:r,c[1]=l;for(var s=2;s{"use strict";n.d(t,{Z:()=>u});var o=n(7462),r=n(7294),a=n(6010),c=n(5999),l=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:m}}=(0,l.L)();if("h1"===t||!n)return r.createElement(t,(0,o.Z)({},u,{id:void 0}));const d=(0,c.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return r.createElement(t,(0,o.Z)({},u,{className:(0,a.Z)("anchor",m?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n}),u.children,r.createElement(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d},"\u200b"))}},3946:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ye});var o=n(7294),r=n(3905),a=n(7462),c=n(5742);var l=n(2389),i=n(6010),s=n(2949),u=n(6668);function m(){const{prism:e}=(0,u.L)(),{colorMode:t}=(0,s.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}var d=n(5281),p=n(7594),f=n.n(p);const h=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,y={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function v(e,t){const n=e.map((e=>{const{start:n,end:o}=y[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${o})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function b(e,t){let n=e.replace(/\n$/,"");const{language:o,magicComments:r,metastring:a}=t;if(a&&g.test(a)){const e=a.match(g).groups.range;if(0===r.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=r[0].className,o=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(o),code:n}}if(void 0===o)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return v(["js","jsBlock"],t);case"jsx":case"tsx":return v(["js","jsBlock","jsx"],t);case"html":return v(["js","jsBlock","html"],t);case"python":case"py":case"bash":return v(["bash"],t);case"markdown":case"md":return v(["html","jsx","bash"],t);default:return v(Object.keys(y),t)}}(o,r),l=n.split("\n"),i=Object.fromEntries(r.map((e=>[e.className,{start:0,range:""}]))),s=Object.fromEntries(r.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<l.length;){const e=l[p].match(c);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));s[t]?i[s[t]].range+=`${p},`:u[t]?i[u[t]].start=p:m[t]&&(i[m[t]].range+=`${i[m[t]].start}-${p-1},`),l.splice(p,1)}n=l.join("\n");const d={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{d[e]??=[],d[e].push(t)}))})),{lineClassNames:d,code:n}}const E={codeBlockContainer:"codeBlockContainer_Ckt0"};function k(e){let{as:t,...n}=e;const r=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[o,r]=e;const a=t[o];a&&"string"==typeof r&&(n[a]=r)})),n}(m());return o.createElement(t,(0,a.Z)({},n,{style:r,className:(0,i.Z)(n.className,E.codeBlockContainer,d.k.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return o.createElement(k,{as:"pre",tabIndex:0,className:(0,i.Z)(N.codeBlockStandalone,"thin-scrollbar",n)},o.createElement("code",{className:N.codeBlockLines},t))}var L=n(902);const w={attributes:!0,characterData:!0,childList:!0,subtree:!0};function B(e,t){const[n,r]=(0,o.useState)(),a=(0,o.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,o.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=w);const r=(0,L.zX)(t),a=(0,L.Ql)(n);(0,o.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const x={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var T={Prism:n(7410).Z,theme:x};function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(){return Z=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Z.apply(this,arguments)}var j=/\r\n|\r|\n/,_=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},H=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function S(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(n[o]=e[o]);return n}var A=function(e){function t(){for(var t=this,n=[],o=arguments.length;o--;)n[o]=arguments[o];e.apply(this,n),O(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,o=Object.create(null),r=e.styles.reduce((function(e,n){var o=n.languages,r=n.style;return o&&!o.includes(t)||n.types.forEach((function(t){var n=Z({},e[t],r);e[t]=n})),e}),o);return r.root=n,r.plain=Z({},n,{backgroundColor:null}),r}(e.theme,e.language):void 0;return t.themeDict=n})),O(this,"getLineProps",(function(e){var n=e.key,o=e.className,r=e.style,a=Z({},S(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(a.style=c.plain),void 0!==r&&(a.style=void 0!==a.style?Z({},a.style,r):r),void 0!==n&&(a.key=n),o&&(a.className+=" "+o),a})),O(this,"getStyleForToken",(function(e){var n=e.types,o=e.empty,r=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===r&&"plain"===n[0])return o?{display:"inline-block"}:void 0;if(1===r&&!o)return a[n[0]];var c=o?{display:"inline-block"}:{},l=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[c].concat(l))}})),O(this,"getTokenProps",(function(e){var n=e.key,o=e.className,r=e.style,a=e.token,c=Z({},S(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==r&&(c.style=void 0!==c.style?Z({},c.style,r):r),void 0!==n&&(c.key=n),o&&(c.className+=" "+o),c})),O(this,"tokenize",(function(e,t,n,o){var r={code:t,grammar:n,language:o,tokens:[]};e.hooks.run("before-tokenize",r);var a=r.tokens=e.tokenize(r.code,r.grammar,r.language);return e.hooks.run("after-tokenize",r),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,o=e.code,r=e.children,a=this.getThemeDict(this.props),c=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],o=[0],r=[e.length],a=0,c=0,l=[],i=[l];c>-1;){for(;(a=o[c]++)<r[c];){var s=void 0,u=t[c],m=n[c][a];if("string"==typeof m?(u=c>0?u:["plain"],s=m):(u=H(u,m.type),m.alias&&(u=H(u,m.alias)),s=m.content),"string"==typeof s){var d=s.split(j),p=d.length;l.push({types:u,content:d[0]});for(var f=1;f<p;f++)_(l),i.push(l=[]),l.push({types:u,content:d[f]})}else c++,t.push(u),n.push(s),o.push(0),r.push(s.length)}c--,t.pop(),n.pop(),o.pop(),r.pop()}return _(l),i}(void 0!==c?this.tokenize(t,o,c,n):[o]),className:"prism-code language-"+n,style:void 0!==a?a.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(o.Component);const I=A,P={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function z(e){let{line:t,classNames:n,showLineNumbers:r,getLineProps:c,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const s=c({line:t,className:(0,i.Z)(n,r&&P.codeLine)}),u=t.map(((e,t)=>o.createElement("span",(0,a.Z)({key:t},l({token:e,key:t})))));return o.createElement("span",s,r?o.createElement(o.Fragment,null,o.createElement("span",{className:P.codeLineNumber}),o.createElement("span",{className:P.codeLineContent},u)):u,o.createElement("br",null))}var M=n(5999);function D(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}))}function W(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}const R={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function V(e){let{code:t,className:n}=e;const[r,a]=(0,o.useState)(!1),c=(0,o.useRef)(void 0),l=(0,o.useCallback)((()=>{!function(e,{target:t=document.body}={}){if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const n=document.createElement("textarea"),o=document.activeElement;n.value=e,n.setAttribute("readonly",""),n.style.contain="strict",n.style.position="absolute",n.style.left="-9999px",n.style.fontSize="12pt";const r=document.getSelection(),a=r.rangeCount>0&&r.getRangeAt(0);t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let c=!1;try{c=document.execCommand("copy")}catch{}n.remove(),a&&(r.removeAllRanges(),r.addRange(a)),o&&o.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,o.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),o.createElement("button",{type:"button","aria-label":r?(0,M.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,M.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,M.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,i.Z)("clean-btn",n,R.copyButton,r&&R.copyButtonCopied),onClick:l},o.createElement("span",{className:R.copyButtonIcons,"aria-hidden":"true"},o.createElement(D,{className:R.copyButtonIcon}),o.createElement(W,{className:R.copyButtonSuccessIcon})))}function $(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"}))}const q={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function F(e){let{className:t,onClick:n,isEnabled:r}=e;const a=(0,M.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return o.createElement("button",{type:"button",onClick:n,className:(0,i.Z)("clean-btn",t,r&&q.wordWrapButtonEnabled),"aria-label":a,title:a},o.createElement($,{className:q.wordWrapButtonIcon,"aria-hidden":"true"}))}function U(e){let{children:t,className:n="",metastring:r,title:c,showLineNumbers:l,language:s}=e;const{prism:{defaultLanguage:d,magicComments:p}}=(0,u.L)(),f=s??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??d,g=m(),y=function(){const[e,t]=(0,o.useState)(!1),[n,r]=(0,o.useState)(!1),a=(0,o.useRef)(null),c=(0,o.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),l=(0,o.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return B(a,l),(0,o.useEffect)((()=>{l()}),[e,l]),(0,o.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),v=function(e){return e?.match(h)?.groups.title??""}(r)||c,{lineClassNames:E,code:C}=b(t,{metastring:r,language:f,magicComments:p}),L=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(r);return o.createElement(k,{as:"div",className:(0,i.Z)(n,f&&!n.includes(`language-${f}`)&&`language-${f}`)},v&&o.createElement("div",{className:N.codeBlockTitle},v),o.createElement("div",{className:N.codeBlockContent},o.createElement(I,(0,a.Z)({},T,{theme:g,code:C,language:f??"text"}),(e=>{let{className:t,tokens:n,getLineProps:r,getTokenProps:a}=e;return o.createElement("pre",{tabIndex:0,ref:y.codeBlockRef,className:(0,i.Z)(t,N.codeBlock,"thin-scrollbar")},o.createElement("code",{className:(0,i.Z)(N.codeBlockLines,L&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>o.createElement(z,{key:t,line:e,getLineProps:r,getTokenProps:a,classNames:E[t],showLineNumbers:L})))))})),o.createElement("div",{className:N.buttonGroup},(y.isEnabled||y.isCodeScrollable)&&o.createElement(F,{className:N.codeButton,onClick:()=>y.toggle(),isEnabled:y.isEnabled}),o.createElement(V,{className:N.codeButton,code:C}))))}function G(e){let{children:t,...n}=e;const r=(0,l.Z)(),c=function(e){return o.Children.toArray(e).some((e=>(0,o.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),i="string"==typeof c?U:C;return o.createElement(i,(0,a.Z)({key:String(r)},n),c)}var Y=n(9960);var Q=n(6043);const X={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function J(e){return!!e&&("SUMMARY"===e.tagName||J(e.parentElement))}function K(e,t){return!!e&&(e===t||K(e.parentElement,t))}function ee(e){let{summary:t,children:n,...r}=e;const c=(0,l.Z)(),s=(0,o.useRef)(null),{collapsed:u,setCollapsed:m}=(0,Q.u)({initialState:!r.open}),[d,p]=(0,o.useState)(r.open),f=o.isValidElement(t)?t:o.createElement("summary",null,t??"Details");return o.createElement("details",(0,a.Z)({},r,{ref:s,open:d,"data-collapsed":u,className:(0,i.Z)(X.details,c&&X.isBrowser,r.className),onMouseDown:e=>{J(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;J(t)&&K(t,s.current)&&(e.preventDefault(),u?(m(!1),p(!0)):m(!0))}}),f,o.createElement(Q.z,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},o.createElement("div",{className:X.collapsibleContent},n)))}const te={details:"details_b_Ee"},ne="alert alert--info";function oe(e){let{...t}=e;return o.createElement(ee,(0,a.Z)({},t,{className:(0,i.Z)(ne,te.details,t.className)}))}var re=n(2503);function ae(e){return o.createElement(re.Z,e)}const ce={containsTaskList:"containsTaskList_mC6p"};function le(e){if(void 0!==e)return(0,i.Z)(e,e?.includes("contains-task-list")&&ce.containsTaskList)}const ie={img:"img_ev3q"};const se="admonition_LlT9",ue="admonitionHeading_tbUL",me="admonitionIcon_kALy",de="admonitionContent_S0QG";const pe={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(M.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(M.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(M.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(M.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(M.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},fe={secondary:"note",important:"info",success:"tip",warning:"danger"};function he(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=o.Children.toArray(e),n=t.find((e=>o.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:r}}(e.children);return{...e,title:e.title??t,children:n}}const ge={head:function(e){const t=o.Children.map(e.children,(e=>o.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...r}=e.props;return o.createElement(e.props.originalType,r)}return e}(e):e));return o.createElement(c.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return o.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,o.isValidElement)(e)&&t.includes(e.props?.mdxType)))?o.createElement("code",e):o.createElement(G,e)},a:function(e){return o.createElement(Y.Z,e)},pre:function(e){return o.createElement(G,(0,o.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=o.Children.toArray(e.children),n=t.find((e=>o.isValidElement(e)&&"summary"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return o.createElement(oe,(0,a.Z)({},e,{summary:n}),r)},ul:function(e){return o.createElement("ul",(0,a.Z)({},e,{className:le(e.className)}))},img:function(e){return o.createElement("img",(0,a.Z)({loading:"lazy"},e,{className:(t=e.className,(0,i.Z)(t,ie.img))}));var t},h1:e=>o.createElement(ae,(0,a.Z)({as:"h1"},e)),h2:e=>o.createElement(ae,(0,a.Z)({as:"h2"},e)),h3:e=>o.createElement(ae,(0,a.Z)({as:"h3"},e)),h4:e=>o.createElement(ae,(0,a.Z)({as:"h4"},e)),h5:e=>o.createElement(ae,(0,a.Z)({as:"h5"},e)),h6:e=>o.createElement(ae,(0,a.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:r,icon:a}=he(e),c=function(e){const t=fe[e]??e,n=pe[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),pe.info)}(n),l=r??c.label,{iconComponent:s}=c,u=a??o.createElement(s,null);return o.createElement("div",{className:(0,i.Z)(d.k.common.admonition,d.k.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,se)},o.createElement("div",{className:ue},o.createElement("span",{className:me},u),l),o.createElement("div",{className:de},t))},mermaid:n(1875).Z};function ye(e){let{children:t}=e;return o.createElement(r.Zo,{components:ge},t)}},3743:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var o=n(7462),r=n(7294),a=n(6668);function c(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const o=n.slice(2,e.level);e.parentIndex=Math.max(...o),n[e.level]=t}));const o=[];return t.forEach((e=>{const{parentIndex:n,...r}=e;n>=0?t[n].children.push(r):o.push(r)})),o}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return t.flatMap((e=>{const t=l({toc:e.children,minHeadingLevel:n,maxHeadingLevel:o});return function(e){return e.level>=n&&e.level<=o}(e)?[{...e,children:t}]:t}))}function i(e){const t=e.getBoundingClientRect();return t.top===t.bottom?i(e.parentNode):t}function s(e,t){let{anchorTopOffset:n}=t;const o=e.find((e=>i(e).top>=n));if(o){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(i(o))?o:e[e.indexOf(o)-1]??null}return e[e.length-1]??null}function u(){const e=(0,r.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.L)();return(0,r.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,r.useRef)(void 0),n=u();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:o,linkActiveClassName:r,minHeadingLevel:a,maxHeadingLevel:c}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(o),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const o=[];for(let r=t;r<=n;r+=1)o.push(`h${r}.anchor`);return Array.from(document.querySelectorAll(o.join()))}({minHeadingLevel:a,maxHeadingLevel:c}),i=s(l,{anchorTopOffset:n.current}),u=e.find((e=>i&&i.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(r),e.classList.add(r),t.current=e):e.classList.remove(r)}(e,e===u)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function d(e){let{toc:t,className:n,linkClassName:o,isChild:a}=e;return t.length?r.createElement("ul",{className:a?void 0:n},t.map((e=>r.createElement("li",{key:e.id},r.createElement("a",{href:`#${e.id}`,className:o??void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(d,{isChild:!0,toc:e.children,className:n,linkClassName:o}))))):null}const p=r.memo(d);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:i="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:u,maxHeadingLevel:d,...f}=e;const h=(0,a.L)(),g=u??h.tableOfContents.minHeadingLevel,y=d??h.tableOfContents.maxHeadingLevel,v=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>l({toc:c(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}({toc:t,minHeadingLevel:g,maxHeadingLevel:y});return m((0,r.useMemo)((()=>{if(i&&s)return{linkClassName:i,linkActiveClassName:s,minHeadingLevel:g,maxHeadingLevel:y}}),[i,s,g,y])),r.createElement(p,(0,o.Z)({toc:v,className:n,linkClassName:i},f))}},9407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(7462),r=n(7294),a=n(6010),c=n(3743);const l={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},i="table-of-contents__link toc-highlight",s="table-of-contents__link--active";function u(e){let{className:t,...n}=e;return r.createElement("div",{className:(0,a.Z)(l.tableOfContents,"thin-scrollbar",t)},r.createElement(c.Z,(0,o.Z)({},n,{linkClassName:i,linkActiveClassName:s})))}},7594:(e,t)=>{function n(e){let t,n=[];for(let o of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(o))n.push(parseInt(o,10));else if(t=o.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,o,r,a]=t;if(o&&a){o=parseInt(o),a=parseInt(a);const e=o<a?1:-1;"-"!==r&&".."!==r&&"\u2025"!==r||(a+=e);for(let t=o;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/3cc330c4.e99720cc.js b/assets/js/3cc330c4.e99720cc.js deleted file mode 100644 index 686d53c6..00000000 --- a/assets/js/3cc330c4.e99720cc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[7],{5745:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/455.c9bcea77.js b/assets/js/455.c9bcea77.js deleted file mode 100644 index 20a8415e..00000000 --- a/assets/js/455.c9bcea77.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[455],{3905:(e,t,n)=>{"use strict";n.d(t,{Zo:()=>u,kt:()=>f});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,o,r=function(e,t){if(null==e)return{};var n,o,r={},a=Object.keys(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o<a.length;o++)n=a[o],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=o.createContext({}),s=function(e){var t=o.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):c(c({},t),e)),n},u=function(e){var t=s(e.components);return o.createElement(i.Provider,{value:t},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},p=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,i=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=s(n),p=r,f=m["".concat(i,".").concat(p)]||m[p]||d[p]||a;return n?o.createElement(f,c(c({ref:t},u),{},{components:n})):o.createElement(f,c({ref:t},u))}));function f(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,c=new Array(a);c[0]=p;var l={};for(var i in t)hasOwnProperty.call(t,i)&&(l[i]=t[i]);l.originalType=e,l[m]="string"==typeof e?e:r,c[1]=l;for(var s=2;s<a;s++)c[s]=n[s];return o.createElement.apply(null,c)}return o.createElement.apply(null,n)}p.displayName="MDXCreateElement"},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(7462),r=n(7294),a=n(6010),c=n(5999),l=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};function u(e){let{as:t,id:n,...u}=e;const{navbar:{hideOnScroll:m}}=(0,l.L)();if("h1"===t||!n)return r.createElement(t,(0,o.Z)({},u,{id:void 0}));const d=(0,c.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof u.children?u.children:n});return r.createElement(t,(0,o.Z)({},u,{className:(0,a.Z)("anchor",m?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,u.className),id:n}),u.children,r.createElement(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d},"\u200b"))}},1506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>ye});var o=n(7294),r=n(3905),a=n(7462),c=n(5742);var l=n(2389),i=n(6010),s=n(2949),u=n(6668);function m(){const{prism:e}=(0,u.L)(),{colorMode:t}=(0,s.I)(),n=e.theme,o=e.darkTheme||n;return"dark"===t?o:n}var d=n(5281),p=n(7594),f=n.n(p);const h=/title=(?<quote>["'])(?<title>.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,y={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}};function v(e,t){const n=e.map((e=>{const{start:n,end:o}=y[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${o})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function b(e,t){let n=e.replace(/\n$/,"");const{language:o,magicComments:r,metastring:a}=t;if(a&&g.test(a)){const e=a.match(g).groups.range;if(0===r.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${a}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const t=r[0].className,o=f()(e).filter((e=>e>0)).map((e=>[e-1,[t]]));return{lineClassNames:Object.fromEntries(o),code:n}}if(void 0===o)return{lineClassNames:{},code:n};const c=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return v(["js","jsBlock"],t);case"jsx":case"tsx":return v(["js","jsBlock","jsx"],t);case"html":return v(["js","jsBlock","html"],t);case"python":case"py":case"bash":return v(["bash"],t);case"markdown":case"md":return v(["html","jsx","bash"],t);default:return v(Object.keys(y),t)}}(o,r),l=n.split("\n"),i=Object.fromEntries(r.map((e=>[e.className,{start:0,range:""}]))),s=Object.fromEntries(r.filter((e=>e.line)).map((e=>{let{className:t,line:n}=e;return[n,t]}))),u=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.start,t]}))),m=Object.fromEntries(r.filter((e=>e.block)).map((e=>{let{className:t,block:n}=e;return[n.end,t]})));for(let p=0;p<l.length;){const e=l[p].match(c);if(!e){p+=1;continue}const t=e.slice(1).find((e=>void 0!==e));s[t]?i[s[t]].range+=`${p},`:u[t]?i[u[t]].start=p:m[t]&&(i[m[t]].range+=`${i[m[t]].start}-${p-1},`),l.splice(p,1)}n=l.join("\n");const d={};return Object.entries(i).forEach((e=>{let[t,{range:n}]=e;f()(n).forEach((e=>{d[e]??=[],d[e].push(t)}))})),{lineClassNames:d,code:n}}const E={codeBlockContainer:"codeBlockContainer_Ckt0"};function k(e){let{as:t,...n}=e;const r=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((e=>{let[o,r]=e;const a=t[o];a&&"string"==typeof r&&(n[a]=r)})),n}(m());return o.createElement(t,(0,a.Z)({},n,{style:r,className:(0,i.Z)(n.className,E.codeBlockContainer,d.k.common.codeBlock)}))}const N={codeBlockContent:"codeBlockContent_biex",codeBlockTitle:"codeBlockTitle_Ktv7",codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm",buttonGroup:"buttonGroup__atx"};function C(e){let{children:t,className:n}=e;return o.createElement(k,{as:"pre",tabIndex:0,className:(0,i.Z)(N.codeBlockStandalone,"thin-scrollbar",n)},o.createElement("code",{className:N.codeBlockLines},t))}var L=n(902);const w={attributes:!0,characterData:!0,childList:!0,subtree:!0};function B(e,t){const[n,r]=(0,o.useState)(),a=(0,o.useCallback)((()=>{r(e.current?.closest("[role=tabpanel][hidden]"))}),[e,r]);(0,o.useEffect)((()=>{a()}),[a]),function(e,t,n){void 0===n&&(n=w);const r=(0,L.zX)(t),a=(0,L.Ql)(n);(0,o.useEffect)((()=>{const t=new MutationObserver(r);return e&&t.observe(e,a),()=>t.disconnect()}),[e,r,a])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),a())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}const x={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","atrule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]};var T={Prism:n(7410).Z,theme:x};function O(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Z(){return Z=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},Z.apply(this,arguments)}var j=/\r\n|\r|\n/,_=function(e){0===e.length?e.push({types:["plain"],content:"\n",empty:!0}):1===e.length&&""===e[0].content&&(e[0].content="\n",e[0].empty=!0)},H=function(e,t){var n=e.length;return n>0&&e[n-1]===t?e:e.concat(t)};function S(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&-1===t.indexOf(o)&&(n[o]=e[o]);return n}var A=function(e){function t(){for(var t=this,n=[],o=arguments.length;o--;)n[o]=arguments[o];e.apply(this,n),O(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?function(e,t){var n=e.plain,o=Object.create(null),r=e.styles.reduce((function(e,n){var o=n.languages,r=n.style;return o&&!o.includes(t)||n.types.forEach((function(t){var n=Z({},e[t],r);e[t]=n})),e}),o);return r.root=n,r.plain=Z({},n,{backgroundColor:null}),r}(e.theme,e.language):void 0;return t.themeDict=n})),O(this,"getLineProps",(function(e){var n=e.key,o=e.className,r=e.style,a=Z({},S(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),c=t.getThemeDict(t.props);return void 0!==c&&(a.style=c.plain),void 0!==r&&(a.style=void 0!==a.style?Z({},a.style,r):r),void 0!==n&&(a.key=n),o&&(a.className+=" "+o),a})),O(this,"getStyleForToken",(function(e){var n=e.types,o=e.empty,r=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===r&&"plain"===n[0])return o?{display:"inline-block"}:void 0;if(1===r&&!o)return a[n[0]];var c=o?{display:"inline-block"}:{},l=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[c].concat(l))}})),O(this,"getTokenProps",(function(e){var n=e.key,o=e.className,r=e.style,a=e.token,c=Z({},S(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==r&&(c.style=void 0!==c.style?Z({},c.style,r):r),void 0!==n&&(c.key=n),o&&(c.className+=" "+o),c})),O(this,"tokenize",(function(e,t,n,o){var r={code:t,grammar:n,language:o,tokens:[]};e.hooks.run("before-tokenize",r);var a=r.tokens=e.tokenize(r.code,r.grammar,r.language);return e.hooks.run("after-tokenize",r),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,o=e.code,r=e.children,a=this.getThemeDict(this.props),c=t.languages[n];return r({tokens:function(e){for(var t=[[]],n=[e],o=[0],r=[e.length],a=0,c=0,l=[],i=[l];c>-1;){for(;(a=o[c]++)<r[c];){var s=void 0,u=t[c],m=n[c][a];if("string"==typeof m?(u=c>0?u:["plain"],s=m):(u=H(u,m.type),m.alias&&(u=H(u,m.alias)),s=m.content),"string"==typeof s){var d=s.split(j),p=d.length;l.push({types:u,content:d[0]});for(var f=1;f<p;f++)_(l),i.push(l=[]),l.push({types:u,content:d[f]})}else c++,t.push(u),n.push(s),o.push(0),r.push(s.length)}c--,t.pop(),n.pop(),o.pop(),r.pop()}return _(l),i}(void 0!==c?this.tokenize(t,o,c,n):[o]),className:"prism-code language-"+n,style:void 0!==a?a.root:{},getLineProps:this.getLineProps,getTokenProps:this.getTokenProps})},t}(o.Component);const I=A,P={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function z(e){let{line:t,classNames:n,showLineNumbers:r,getLineProps:c,getTokenProps:l}=e;1===t.length&&"\n"===t[0].content&&(t[0].content="");const s=c({line:t,className:(0,i.Z)(n,r&&P.codeLine)}),u=t.map(((e,t)=>o.createElement("span",(0,a.Z)({key:t},l({token:e,key:t})))));return o.createElement("span",s,r?o.createElement(o.Fragment,null,o.createElement("span",{className:P.codeLineNumber}),o.createElement("span",{className:P.codeLineContent},u)):u,o.createElement("br",null))}var M=n(5999);function D(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}))}function W(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}))}const R={copyButtonCopied:"copyButtonCopied_obH4",copyButtonIcons:"copyButtonIcons_eSgA",copyButtonIcon:"copyButtonIcon_y97N",copyButtonSuccessIcon:"copyButtonSuccessIcon_LjdS"};function V(e){let{code:t,className:n}=e;const[r,a]=(0,o.useState)(!1),c=(0,o.useRef)(void 0),l=(0,o.useCallback)((()=>{!function(e,t){let{target:n=document.body}=void 0===t?{}:t;if("string"!=typeof e)throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof e}\`.`);const o=document.createElement("textarea"),r=document.activeElement;o.value=e,o.setAttribute("readonly",""),o.style.contain="strict",o.style.position="absolute",o.style.left="-9999px",o.style.fontSize="12pt";const a=document.getSelection(),c=a.rangeCount>0&&a.getRangeAt(0);n.append(o),o.select(),o.selectionStart=0,o.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}o.remove(),c&&(a.removeAllRanges(),a.addRange(c)),r&&r.focus()}(t),a(!0),c.current=window.setTimeout((()=>{a(!1)}),1e3)}),[t]);return(0,o.useEffect)((()=>()=>window.clearTimeout(c.current)),[]),o.createElement("button",{type:"button","aria-label":r?(0,M.I)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,M.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),title:(0,M.I)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,i.Z)("clean-btn",n,R.copyButton,r&&R.copyButtonCopied),onClick:l},o.createElement("span",{className:R.copyButtonIcons,"aria-hidden":"true"},o.createElement(D,{className:R.copyButtonIcon}),o.createElement(W,{className:R.copyButtonSuccessIcon})))}function $(e){return o.createElement("svg",(0,a.Z)({viewBox:"0 0 24 24"},e),o.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"}))}const q={wordWrapButtonIcon:"wordWrapButtonIcon_Bwma",wordWrapButtonEnabled:"wordWrapButtonEnabled_EoeP"};function F(e){let{className:t,onClick:n,isEnabled:r}=e;const a=(0,M.I)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return o.createElement("button",{type:"button",onClick:n,className:(0,i.Z)("clean-btn",t,r&&q.wordWrapButtonEnabled),"aria-label":a,title:a},o.createElement($,{className:q.wordWrapButtonIcon,"aria-hidden":"true"}))}function U(e){let{children:t,className:n="",metastring:r,title:c,showLineNumbers:l,language:s}=e;const{prism:{defaultLanguage:d,magicComments:p}}=(0,u.L)(),f=s??function(e){const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(n)??d,g=m(),y=function(){const[e,t]=(0,o.useState)(!1),[n,r]=(0,o.useState)(!1),a=(0,o.useRef)(null),c=(0,o.useCallback)((()=>{const n=a.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[a,e]),l=(0,o.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=a.current,n=e>t||a.current.querySelector("code").hasAttribute("style");r(n)}),[a]);return B(a,l),(0,o.useEffect)((()=>{l()}),[e,l]),(0,o.useEffect)((()=>(window.addEventListener("resize",l,{passive:!0}),()=>{window.removeEventListener("resize",l)})),[l]),{codeBlockRef:a,isEnabled:e,isCodeScrollable:n,toggle:c}}(),v=function(e){return e?.match(h)?.groups.title??""}(r)||c,{lineClassNames:E,code:C}=b(t,{metastring:r,language:f,magicComments:p}),L=l??function(e){return Boolean(e?.includes("showLineNumbers"))}(r);return o.createElement(k,{as:"div",className:(0,i.Z)(n,f&&!n.includes(`language-${f}`)&&`language-${f}`)},v&&o.createElement("div",{className:N.codeBlockTitle},v),o.createElement("div",{className:N.codeBlockContent},o.createElement(I,(0,a.Z)({},T,{theme:g,code:C,language:f??"text"}),(e=>{let{className:t,tokens:n,getLineProps:r,getTokenProps:a}=e;return o.createElement("pre",{tabIndex:0,ref:y.codeBlockRef,className:(0,i.Z)(t,N.codeBlock,"thin-scrollbar")},o.createElement("code",{className:(0,i.Z)(N.codeBlockLines,L&&N.codeBlockLinesWithNumbering)},n.map(((e,t)=>o.createElement(z,{key:t,line:e,getLineProps:r,getTokenProps:a,classNames:E[t],showLineNumbers:L})))))})),o.createElement("div",{className:N.buttonGroup},(y.isEnabled||y.isCodeScrollable)&&o.createElement(F,{className:N.codeButton,onClick:()=>y.toggle(),isEnabled:y.isEnabled}),o.createElement(V,{className:N.codeButton,code:C}))))}function G(e){let{children:t,...n}=e;const r=(0,l.Z)(),c=function(e){return o.Children.toArray(e).some((e=>(0,o.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(t),i="string"==typeof c?U:C;return o.createElement(i,(0,a.Z)({key:String(r)},n),c)}var Y=n(9960);var Q=n(6043);const X={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function J(e){return!!e&&("SUMMARY"===e.tagName||J(e.parentElement))}function K(e,t){return!!e&&(e===t||K(e.parentElement,t))}function ee(e){let{summary:t,children:n,...r}=e;const c=(0,l.Z)(),s=(0,o.useRef)(null),{collapsed:u,setCollapsed:m}=(0,Q.u)({initialState:!r.open}),[d,p]=(0,o.useState)(r.open),f=o.isValidElement(t)?t:o.createElement("summary",null,t??"Details");return o.createElement("details",(0,a.Z)({},r,{ref:s,open:d,"data-collapsed":u,className:(0,i.Z)(X.details,c&&X.isBrowser,r.className),onMouseDown:e=>{J(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;J(t)&&K(t,s.current)&&(e.preventDefault(),u?(m(!1),p(!0)):m(!0))}}),f,o.createElement(Q.z,{lazy:!1,collapsed:u,disableSSRStyle:!0,onCollapseTransitionEnd:e=>{m(e),p(!e)}},o.createElement("div",{className:X.collapsibleContent},n)))}const te={details:"details_b_Ee"},ne="alert alert--info";function oe(e){let{...t}=e;return o.createElement(ee,(0,a.Z)({},t,{className:(0,i.Z)(ne,te.details,t.className)}))}var re=n(2503);function ae(e){return o.createElement(re.Z,e)}const ce={containsTaskList:"containsTaskList_mC6p"};function le(e){if(void 0!==e)return(0,i.Z)(e,e?.includes("contains-task-list")&&ce.containsTaskList)}const ie={img:"img_ev3q"};const se="admonition_LlT9",ue="admonitionHeading_tbUL",me="admonitionIcon_kALy",de="admonitionContent_S0QG";const pe={note:{infimaClassName:"secondary",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))},label:o.createElement(M.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:"success",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))},label:o.createElement(M.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:"danger",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 12 16"},o.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))},label:o.createElement(M.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:"info",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 14 16"},o.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))},label:o.createElement(M.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:"warning",iconComponent:function(){return o.createElement("svg",{viewBox:"0 0 16 16"},o.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))},label:o.createElement(M.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}},fe={secondary:"note",important:"info",success:"tip",warning:"danger"};function he(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=o.Children.toArray(e),n=t.find((e=>o.isValidElement(e)&&"mdxAdmonitionTitle"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return{mdxAdmonitionTitle:n,rest:r}}(e.children);return{...e,title:e.title??t,children:n}}const ge={head:function(e){const t=o.Children.map(e.children,(e=>o.isValidElement(e)?function(e){if(e.props?.mdxType&&e.props.originalType){const{mdxType:t,originalType:n,...r}=e.props;return o.createElement(e.props.originalType,r)}return e}(e):e));return o.createElement(c.Z,e,t)},code:function(e){const t=["a","abbr","b","br","button","cite","code","del","dfn","em","i","img","input","ins","kbd","label","object","output","q","ruby","s","small","span","strong","sub","sup","time","u","var","wbr"];return o.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")||(0,o.isValidElement)(e)&&t.includes(e.props?.mdxType)))?o.createElement("code",e):o.createElement(G,e)},a:function(e){return o.createElement(Y.Z,e)},pre:function(e){return o.createElement(G,(0,o.isValidElement)(e.children)&&"code"===e.children.props?.originalType?e.children.props:{...e})},details:function(e){const t=o.Children.toArray(e.children),n=t.find((e=>o.isValidElement(e)&&"summary"===e.props?.mdxType)),r=o.createElement(o.Fragment,null,t.filter((e=>e!==n)));return o.createElement(oe,(0,a.Z)({},e,{summary:n}),r)},ul:function(e){return o.createElement("ul",(0,a.Z)({},e,{className:le(e.className)}))},img:function(e){return o.createElement("img",(0,a.Z)({loading:"lazy"},e,{className:(t=e.className,(0,i.Z)(t,ie.img))}));var t},h1:e=>o.createElement(ae,(0,a.Z)({as:"h1"},e)),h2:e=>o.createElement(ae,(0,a.Z)({as:"h2"},e)),h3:e=>o.createElement(ae,(0,a.Z)({as:"h3"},e)),h4:e=>o.createElement(ae,(0,a.Z)({as:"h4"},e)),h5:e=>o.createElement(ae,(0,a.Z)({as:"h5"},e)),h6:e=>o.createElement(ae,(0,a.Z)({as:"h6"},e)),admonition:function(e){const{children:t,type:n,title:r,icon:a}=he(e),c=function(e){const t=fe[e]??e,n=pe[t];return n||(console.warn(`No admonition config found for admonition type "${t}". Using Info as fallback.`),pe.info)}(n),l=r??c.label,{iconComponent:s}=c,u=a??o.createElement(s,null);return o.createElement("div",{className:(0,i.Z)(d.k.common.admonition,d.k.common.admonitionType(e.type),"alert",`alert--${c.infimaClassName}`,se)},o.createElement("div",{className:ue},o.createElement("span",{className:me},u),l),o.createElement("div",{className:de},t))},mermaid:n(1875).Z};function ye(e){let{children:t}=e;return o.createElement(r.Zo,{components:ge},t)}},9407:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var o=n(7462),r=n(7294),a=n(6010),c=n(3743);const l={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"},i="table-of-contents__link toc-highlight",s="table-of-contents__link--active";function u(e){let{className:t,...n}=e;return r.createElement("div",{className:(0,a.Z)(l.tableOfContents,"thin-scrollbar",t)},r.createElement(c.Z,(0,o.Z)({},n,{linkClassName:i,linkActiveClassName:s})))}},3743:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var o=n(7462),r=n(7294),a=n(6668);function c(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const o=n.slice(2,e.level);e.parentIndex=Math.max(...o),n[e.level]=t}));const o=[];return t.forEach((e=>{const{parentIndex:n,...r}=e;n>=0?t[n].children.push(r):o.push(r)})),o}function l(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return t.flatMap((e=>{const t=l({toc:e.children,minHeadingLevel:n,maxHeadingLevel:o});return function(e){return e.level>=n&&e.level<=o}(e)?[{...e,children:t}]:t}))}function i(e){const t=e.getBoundingClientRect();return t.top===t.bottom?i(e.parentNode):t}function s(e,t){let{anchorTopOffset:n}=t;const o=e.find((e=>i(e).top>=n));if(o){return function(e){return e.top>0&&e.bottom<window.innerHeight/2}(i(o))?o:e[e.indexOf(o)-1]??null}return e[e.length-1]??null}function u(){const e=(0,r.useRef)(0),{navbar:{hideOnScroll:t}}=(0,a.L)();return(0,r.useEffect)((()=>{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function m(e){const t=(0,r.useRef)(void 0),n=u();(0,r.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:o,linkActiveClassName:r,minHeadingLevel:a,maxHeadingLevel:c}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(o),l=function(e){let{minHeadingLevel:t,maxHeadingLevel:n}=e;const o=[];for(let r=t;r<=n;r+=1)o.push(`h${r}.anchor`);return Array.from(document.querySelectorAll(o.join()))}({minHeadingLevel:a,maxHeadingLevel:c}),i=s(l,{anchorTopOffset:n.current}),u=e.find((e=>i&&i.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(r),e.classList.add(r),t.current=e):e.classList.remove(r)}(e,e===u)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}function d(e){let{toc:t,className:n,linkClassName:o,isChild:a}=e;return t.length?r.createElement("ul",{className:a?void 0:n},t.map((e=>r.createElement("li",{key:e.id},r.createElement("a",{href:`#${e.id}`,className:o??void 0,dangerouslySetInnerHTML:{__html:e.value}}),r.createElement(d,{isChild:!0,toc:e.children,className:n,linkClassName:o}))))):null}const p=r.memo(d);function f(e){let{toc:t,className:n="table-of-contents table-of-contents__left-border",linkClassName:i="table-of-contents__link",linkActiveClassName:s,minHeadingLevel:u,maxHeadingLevel:d,...f}=e;const h=(0,a.L)(),g=u??h.tableOfContents.minHeadingLevel,y=d??h.tableOfContents.maxHeadingLevel,v=function(e){let{toc:t,minHeadingLevel:n,maxHeadingLevel:o}=e;return(0,r.useMemo)((()=>l({toc:c(t),minHeadingLevel:n,maxHeadingLevel:o})),[t,n,o])}({toc:t,minHeadingLevel:g,maxHeadingLevel:y});return m((0,r.useMemo)((()=>{if(i&&s)return{linkClassName:i,linkActiveClassName:s,minHeadingLevel:g,maxHeadingLevel:y}}),[i,s,g,y])),r.createElement(p,(0,o.Z)({toc:v,className:n,linkClassName:i},f))}},7594:(e,t)=>{function n(e){let t,n=[];for(let o of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(o))n.push(parseInt(o,10));else if(t=o.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,o,r,a]=t;if(o&&a){o=parseInt(o),a=parseInt(a);const e=o<a?1:-1;"-"!==r&&".."!==r&&"\u2025"!==r||(a+=e);for(let t=o;t!==a;t+=e)n.push(t)}}return n}t.default=n,e.exports=n}}]); \ No newline at end of file diff --git a/assets/js/81cbbac2.7fb1e018.js b/assets/js/81cbbac2.7fb1e018.js deleted file mode 100644 index d5dc88dd..00000000 --- a/assets/js/81cbbac2.7fb1e018.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[789],{3905:(e,t,s)=>{s.d(t,{Zo:()=>h,kt:()=>f});var n=s(7294);function i(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function a(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,n)}return s}function r(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?a(Object(s),!0).forEach((function(t){i(e,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):a(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function o(e,t){if(null==e)return{};var s,n,i=function(e,t){if(null==e)return{};var s,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)s=a[n],t.indexOf(s)>=0||(i[s]=e[s]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)s=a[n],t.indexOf(s)>=0||Object.prototype.propertyIsEnumerable.call(e,s)&&(i[s]=e[s])}return i}var d=n.createContext({}),c=function(e){var t=n.useContext(d),s=t;return e&&(s="function"==typeof e?e(t):r(r({},t),e)),s},h=function(e){var t=c(e.components);return n.createElement(d.Provider,{value:t},e.children)},l="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var s=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,h=o(e,["components","mdxType","originalType","parentName"]),l=c(s),g=i,f=l["".concat(d,".").concat(g)]||l[g]||p[g]||a;return s?n.createElement(f,r(r({ref:t},h),{},{components:s})):n.createElement(f,r({ref:t},h))}));function f(e,t){var s=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=s.length,r=new Array(a);r[0]=g;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[l]="string"==typeof e?e:i,r[1]=o;for(var c=2;c<a;c++)r[c]=s[c];return n.createElement.apply(null,r)}return n.createElement.apply(null,s)}g.displayName="MDXCreateElement"},2279:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>c});var n=s(7462),i=(s(7294),s(3905));const a={sidebar_position:2},r="Semester 1: Thesis Presentation",o={unversionedId:"thesis/sem1",id:"thesis/sem1",title:"Semester 1: Thesis Presentation",description:"The following is the state of everything at the end of Fall 2023.",source:"@site/docs/thesis/sem1.md",sourceDirName:"thesis",slug:"/thesis/sem1",permalink:"/docs/thesis/sem1",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Semester 0: CICS Syslab",permalink:"/docs/thesis/syslab"},next:{title:"Semester 2: Part 2 Initial",permalink:"/docs/thesis/pt2init"}},d={},c=[{value:"Copyright and Protection Disclaimer",id:"copyright-and-protection-disclaimer",level:2}],h={toc:c},l="wrapper";function p(e){let{components:t,...a}=e;return(0,i.kt)(l,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"semester-1-thesis-presentation"},"Semester 1: Thesis Presentation"),(0,i.kt)("p",null,"The following is the state of everything at the end of Fall 2023."),(0,i.kt)("h2",{id:"copyright-and-protection-disclaimer"},"Copyright and Protection Disclaimer"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Copyright Notice:")),(0,i.kt)("p",null,"The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Protected Material:")),(0,i.kt)("p",null,"These slides are part of Kushagra Srivastava's Honors Thesis Presentation. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Usage Authorization:")),(0,i.kt)("p",null,"If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact ",(0,i.kt)("a",{parentName:"p",href:"https://skushagra.com"},"Kushagra Srivastava")," for authorization."),(0,i.kt)("p",null,"The code will be released under GNU GPL v3 once ready."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Slide",src:s(426).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(8163).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1659).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(4953).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(4346).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7840).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(207).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(253).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7791).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(5140).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(815).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(204).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1041).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1395).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(4423).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(323).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1554).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(3391).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1725).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(2801).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(859).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(3161).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7980).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(3938).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(9923).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7151).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(2209).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(2449).Z,width:"2000",height:"1125"})))}p.isMDXComponent=!0},426:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-01-e2d861dab77a76b4e2e15d7d39cf3a1a.png"},8163:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-02-91f4b3aed9d8c26cad3c24b94f4b0d30.png"},1659:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-03-4b5633746cc28112773f60b6e186ef2f.png"},4953:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-04-73854c7024c0b97485ca0847276dc5e0.png"},4346:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-05-4073f941038f68343f674d0ada3e3edb.png"},7840:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-06-8da75aceb0837a57728edb9039a83243.png"},207:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-07-7f20d0f6755062d4b7aca8d692e72c40.png"},253:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-08-348f885b525f0e7ae2b32d26d93a36c5.png"},7791:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-09-5a2e87ed9cb404215ea9388e73f8098d.png"},5140:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-10-0f181cefb491be66710ee63865396e77.png"},815:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-11-75e7ea07990e6f413fd3c3ce1a5f2e2e.png"},204:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-12-4a6ef56b42001f26c1e5ca729552a40d.png"},1041:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-13-040ec2ec1eff3700b2dba859dde6b6c1.png"},1395:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-14-dbedfd2844663dfc2c784d6041d5580e.png"},4423:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-15-ff28c8a73d59ce005b857df5639b3780.png"},323:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-16-0cdfbcd2716dc360560638e51f30c4c6.png"},1554:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-17-fbb781ac19d176463afda54a858b2e9e.png"},3391:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-18-58632889972fb17d4249430264a3e80a.png"},1725:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-19-fff13debf11c5058921ce664dd0c27fc.png"},2801:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-20-24022fff4dc3af9c6cc6efb41fd9dd4c.png"},859:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-21-551790e90b7430b22e2f37b2a772cd2b.png"},3161:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-22-ca2cd6db5ed6b05146fb09d9be8d5331.png"},7980:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-23-24cd6d040b26ecd043f09e596637f4c3.png"},3938:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-24-ab9795edbe17fb5044fc16a337696d8b.png"},9923:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-25-b8b24f2e165b57406962d4338cf53db5.png"},7151:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-26-25e0b4db24eada96fc21ad6c9f4bcae4.png"},2209:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-27-b200ffd38496023e6c5a2c62d404605e.png"},2449:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-28-e0ef2dae928558b414dd9a3ce72233f4.png"}}]); \ No newline at end of file diff --git a/assets/js/81cbbac2.abb2e1c9.js b/assets/js/81cbbac2.abb2e1c9.js new file mode 100644 index 00000000..823b3dde --- /dev/null +++ b/assets/js/81cbbac2.abb2e1c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[789],{3905:(e,t,s)=>{s.d(t,{Zo:()=>h,kt:()=>f});var n=s(7294);function i(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function a(e,t){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),s.push.apply(s,n)}return s}function r(e){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{};t%2?a(Object(s),!0).forEach((function(t){i(e,t,s[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):a(Object(s)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(s,t))}))}return e}function o(e,t){if(null==e)return{};var s,n,i=function(e,t){if(null==e)return{};var s,n,i={},a=Object.keys(e);for(n=0;n<a.length;n++)s=a[n],t.indexOf(s)>=0||(i[s]=e[s]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)s=a[n],t.indexOf(s)>=0||Object.prototype.propertyIsEnumerable.call(e,s)&&(i[s]=e[s])}return i}var d=n.createContext({}),c=function(e){var t=n.useContext(d),s=t;return e&&(s="function"==typeof e?e(t):r(r({},t),e)),s},h=function(e){var t=c(e.components);return n.createElement(d.Provider,{value:t},e.children)},l="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},g=n.forwardRef((function(e,t){var s=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,h=o(e,["components","mdxType","originalType","parentName"]),l=c(s),g=i,f=l["".concat(d,".").concat(g)]||l[g]||p[g]||a;return s?n.createElement(f,r(r({ref:t},h),{},{components:s})):n.createElement(f,r({ref:t},h))}));function f(e,t){var s=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=s.length,r=new Array(a);r[0]=g;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o[l]="string"==typeof e?e:i,r[1]=o;for(var c=2;c<a;c++)r[c]=s[c];return n.createElement.apply(null,r)}return n.createElement.apply(null,s)}g.displayName="MDXCreateElement"},2279:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>r,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>c});var n=s(7462),i=(s(7294),s(3905));const a={sidebar_position:2},r="Semester 1: Thesis Presentation",o={unversionedId:"thesis/sem1",id:"thesis/sem1",title:"Semester 1: Thesis Presentation",description:"The following is the state of everything at the end of Fall 2023.",source:"@site/docs/thesis/sem1.md",sourceDirName:"thesis",slug:"/thesis/sem1",permalink:"/docs/thesis/sem1",draft:!1,tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",previous:{title:"Semester 0: CICS Syslab",permalink:"/docs/thesis/syslab"},next:{title:"Semester 2: Part 2 Initial",permalink:"/docs/thesis/pt2init"}},d={},c=[{value:"Copyright and Protection Disclaimer",id:"copyright-and-protection-disclaimer",level:2}],h={toc:c},l="wrapper";function p(e){let{components:t,...a}=e;return(0,i.kt)(l,(0,n.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"semester-1-thesis-presentation"},"Semester 1: Thesis Presentation"),(0,i.kt)("p",null,"The following is the state of everything at the end of Fall 2023."),(0,i.kt)("h2",{id:"copyright-and-protection-disclaimer"},"Copyright and Protection Disclaimer"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Copyright Notice:")),(0,i.kt)("p",null,"The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Protected Material:")),(0,i.kt)("p",null,"These slides are part of Kushagra Srivastava's Honors Thesis Presentation. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws."),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"Usage Authorization:")),(0,i.kt)("p",null,"If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact ",(0,i.kt)("a",{parentName:"p",href:"https://skushagra.com"},"Kushagra Srivastava")," for authorization."),(0,i.kt)("p",null,"The code will be released under GNU GPL v3 once ready."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Slide",src:s(4508).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(9765).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(0).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(3191).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(2663).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(6431).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7945).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(2439).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1810).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1509).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(6646).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7066).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1899).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(8777).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(61).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7244).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(8621).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(6441).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(8908).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7443).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(7344).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(1757).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(5811).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(3092).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(5092).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(4400).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(3266).Z,width:"2000",height:"1125"}),"\n",(0,i.kt)("img",{alt:"Slide",src:s(2124).Z,width:"2000",height:"1125"})))}p.isMDXComponent=!0},4508:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-01-e2d861dab77a76b4e2e15d7d39cf3a1a.png"},9765:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-02-91f4b3aed9d8c26cad3c24b94f4b0d30.png"},0:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-03-4b5633746cc28112773f60b6e186ef2f.png"},3191:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-04-73854c7024c0b97485ca0847276dc5e0.png"},2663:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-05-4073f941038f68343f674d0ada3e3edb.png"},6431:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-06-8da75aceb0837a57728edb9039a83243.png"},7945:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-07-7f20d0f6755062d4b7aca8d692e72c40.png"},2439:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-08-348f885b525f0e7ae2b32d26d93a36c5.png"},1810:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-09-5a2e87ed9cb404215ea9388e73f8098d.png"},1509:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-10-0f181cefb491be66710ee63865396e77.png"},6646:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-11-75e7ea07990e6f413fd3c3ce1a5f2e2e.png"},7066:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-12-4a6ef56b42001f26c1e5ca729552a40d.png"},1899:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-13-040ec2ec1eff3700b2dba859dde6b6c1.png"},8777:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-14-dbedfd2844663dfc2c784d6041d5580e.png"},61:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-15-ff28c8a73d59ce005b857df5639b3780.png"},7244:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-16-0cdfbcd2716dc360560638e51f30c4c6.png"},8621:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-17-fbb781ac19d176463afda54a858b2e9e.png"},6441:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-18-58632889972fb17d4249430264a3e80a.png"},8908:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-19-fff13debf11c5058921ce664dd0c27fc.png"},7443:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-20-24022fff4dc3af9c6cc6efb41fd9dd4c.png"},7344:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-21-551790e90b7430b22e2f37b2a772cd2b.png"},1757:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-22-ca2cd6db5ed6b05146fb09d9be8d5331.png"},5811:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-23-24cd6d040b26ecd043f09e596637f4c3.png"},3092:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-24-ab9795edbe17fb5044fc16a337696d8b.png"},5092:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-25-b8b24f2e165b57406962d4338cf53db5.png"},4400:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-26-25e0b4db24eada96fc21ad6c9f4bcae4.png"},3266:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-27-b200ffd38496023e6c5a2c62d404605e.png"},2124:(e,t,s)=>{s.d(t,{Z:()=>n});const n=s.p+"assets/images/Hons. Thesis Presentation-28-e0ef2dae928558b414dd9a3ce72233f4.png"}}]); \ No newline at end of file diff --git a/assets/js/9cdb66f6.1f491dea.js b/assets/js/9cdb66f6.1f491dea.js new file mode 100644 index 00000000..73498c53 --- /dev/null +++ b/assets/js/9cdb66f6.1f491dea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[408],{5745:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/4da50ff2.d66f7554.js b/assets/js/a649dc75.a8b533b6.js similarity index 64% rename from assets/js/4da50ff2.d66f7554.js rename to assets/js/a649dc75.a8b533b6.js index 6b816429..3e4363b3 100644 --- a/assets/js/4da50ff2.d66f7554.js +++ b/assets/js/a649dc75.a8b533b6.js @@ -1 +1 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[366],{3769:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[256],{3769:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/b2e03007.508d10b3.js b/assets/js/b2e03007.3c3a4290.js similarity index 97% rename from assets/js/b2e03007.508d10b3.js rename to assets/js/b2e03007.3c3a4290.js index 6f7f9665..2f87a59c 100644 --- a/assets/js/b2e03007.508d10b3.js +++ b/assets/js/b2e03007.3c3a4290.js @@ -1 +1 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[137],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(n),d=i,f=u["".concat(s,".").concat(d)]||u[d]||m[d]||a;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var c=2;c<a;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},4196:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var r=n(7462),i=(n(7294),n(3905));const a={sidebar_position:5},o="LLVM (Low-Level Virtual Machine)",l={unversionedId:"definitions/llvm",id:"definitions/llvm",title:"LLVM (Low-Level Virtual Machine)",description:"LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability.",source:"@site/docs/definitions/llvm.md",sourceDirName:"definitions",slug:"/definitions/llvm",permalink:"/docs/definitions/llvm",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"x86 Assembly Language",permalink:"/docs/definitions/x86asm"},next:{title:"Thesis Milestones",permalink:"/docs/category/thesis-milestones"}},s={},c=[],p={toc:c},u="wrapper";function m(e){let{components:t,...a}=e;return(0,i.kt)(u,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"llvm-low-level-virtual-machine"},"LLVM (Low-Level Virtual Machine)"),(0,i.kt)("p",null,"LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability."),(0,i.kt)("p",null,"LLVM's compilation process typically involves several stages:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Frontend"),": The frontend is responsible for taking source code written in high-level programming languages like Rust and C++ and parsing it into an intermediate representation (IR). This IR is a low-level, platform-independent code that serves as the common language for further processing.")),(0,i.kt)("p",null,"Rust/C++ Source Code -> Intermediate Representation (IR)"),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Optimizer"),": LLVM includes a powerful optimizer that takes the IR and applies various optimization techniques to improve code performance. These optimizations may include inlining functions, eliminating dead code, and reordering instructions for better pipelining.")),(0,i.kt)("p",null,"Intermediate Representation (IR) -> Optimized Intermediate Representation (IR)"),(0,i.kt)("ol",{start:3},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Backend"),": The backend is responsible for translating the optimized IR into machine code for a specific target architecture, like x86, ARM, or MIPS.")),(0,i.kt)("p",null,"Optimized Intermediate Representation (IR) -> Target-Specific Machine Code"),(0,i.kt)("ol",{start:4},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Linker"),": If necessary, LLVM can invoke a linker to combine multiple object files into a single executable. The linker resolves external dependencies and generates the final binary.")),(0,i.kt)("p",null,"Object Files -> Executable Binary"),(0,i.kt)("p",null,"LLVM's modular design allows it to support multiple high-level programming languages, making it a preferred choice for a wide range of compilers, including Rust and Clang (for C and C++)."),(0,i.kt)("p",null,"Here is a complete flowchart of the LLVM Compilation architecture, wherein multiple languages feed their intermediate output to LLVM, and LLVM comes out with uniform Assembly code, which further gets parsed into an executable (program)"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"LLVM Flowchart",src:n(3111).Z,width:"558",height:"206"})))}m.isMDXComponent=!0},3111:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/LLVMCompiler1-1b4fcf3564a2aaf68783018c80d20e64.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[137],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(n),d=i,f=u["".concat(s,".").concat(d)]||u[d]||m[d]||a;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[u]="string"==typeof e?e:i,o[1]=l;for(var c=2;c<a;c++)o[c]=n[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},4196:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>o,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var r=n(7462),i=(n(7294),n(3905));const a={sidebar_position:5},o="LLVM (Low-Level Virtual Machine)",l={unversionedId:"definitions/llvm",id:"definitions/llvm",title:"LLVM (Low-Level Virtual Machine)",description:"LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability.",source:"@site/docs/definitions/llvm.md",sourceDirName:"definitions",slug:"/definitions/llvm",permalink:"/docs/definitions/llvm",draft:!1,tags:[],version:"current",sidebarPosition:5,frontMatter:{sidebar_position:5},sidebar:"tutorialSidebar",previous:{title:"x86 Assembly Language",permalink:"/docs/definitions/x86asm"},next:{title:"Thesis Milestones",permalink:"/docs/category/thesis-milestones"}},s={},c=[],p={toc:c},u="wrapper";function m(e){let{components:t,...a}=e;return(0,i.kt)(u,(0,r.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"llvm-low-level-virtual-machine"},"LLVM (Low-Level Virtual Machine)"),(0,i.kt)("p",null,"LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability."),(0,i.kt)("p",null,"LLVM's compilation process typically involves several stages:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Frontend"),": The frontend is responsible for taking source code written in high-level programming languages like Rust and C++ and parsing it into an intermediate representation (IR). This IR is a low-level, platform-independent code that serves as the common language for further processing.")),(0,i.kt)("p",null,"Rust/C++ Source Code -> Intermediate Representation (IR)"),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Optimizer"),": LLVM includes a powerful optimizer that takes the IR and applies various optimization techniques to improve code performance. These optimizations may include inlining functions, eliminating dead code, and reordering instructions for better pipelining.")),(0,i.kt)("p",null,"Intermediate Representation (IR) -> Optimized Intermediate Representation (IR)"),(0,i.kt)("ol",{start:3},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Backend"),": The backend is responsible for translating the optimized IR into machine code for a specific target architecture, like x86, ARM, or MIPS.")),(0,i.kt)("p",null,"Optimized Intermediate Representation (IR) -> Target-Specific Machine Code"),(0,i.kt)("ol",{start:4},(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("strong",{parentName:"li"},"Linker"),": If necessary, LLVM can invoke a linker to combine multiple object files into a single executable. The linker resolves external dependencies and generates the final binary.")),(0,i.kt)("p",null,"Object Files -> Executable Binary"),(0,i.kt)("p",null,"LLVM's modular design allows it to support multiple high-level programming languages, making it a preferred choice for a wide range of compilers, including Rust and Clang (for C and C++)."),(0,i.kt)("p",null,"Here is a complete flowchart of the LLVM Compilation architecture, wherein multiple languages feed their intermediate output to LLVM, and LLVM comes out with uniform Assembly code, which further gets parsed into an executable (program)"),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"LLVM Flowchart",src:n(9570).Z,width:"558",height:"206"})))}m.isMDXComponent=!0},9570:(e,t,n)=>{n.d(t,{Z:()=>r});const r=n.p+"assets/images/LLVMCompiler1-1b4fcf3564a2aaf68783018c80d20e64.png"}}]); \ No newline at end of file diff --git a/assets/js/c1ca8d8d.3d00f8c6.js b/assets/js/c1ca8d8d.276c4e10.js similarity index 70% rename from assets/js/c1ca8d8d.3d00f8c6.js rename to assets/js/c1ca8d8d.276c4e10.js index 6b2797b6..448d367a 100644 --- a/assets/js/c1ca8d8d.3d00f8c6.js +++ b/assets/js/c1ca8d8d.276c4e10.js @@ -1 +1 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[916],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>u});var i=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=i.createContext({}),l=function(e){var t=i.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=l(e.components);return i.createElement(c.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=l(r),g=n,u=d["".concat(c,".").concat(g)]||d[g]||h[g]||a;return r?i.createElement(u,s(s({ref:t},p),{},{components:r})):i.createElement(u,s({ref:t},p))}));function u(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,s=new Array(a);s[0]=g;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:n,s[1]=o;for(var l=2;l<a;l++)s[l]=r[l];return i.createElement.apply(null,s)}return i.createElement.apply(null,r)}g.displayName="MDXCreateElement"},9485:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var i=r(7462),n=(r(7294),r(3905));const a={sidebar_position:3},s="Semester 2: Part 2 Initial",o={unversionedId:"thesis/pt2init",id:"thesis/pt2init",title:"Semester 2: Part 2 Initial",description:"The following is the first presentation during the start of Spring 2024.",source:"@site/docs/thesis/pt2init.md",sourceDirName:"thesis",slug:"/thesis/pt2init",permalink:"/docs/thesis/pt2init",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Semester 1: Thesis Presentation",permalink:"/docs/thesis/sem1"}},c={},l=[{value:"Copyright and Protection Disclaimer",id:"copyright-and-protection-disclaimer",level:2}],p={toc:l},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"semester-2-part-2-initial"},"Semester 2: Part 2 Initial"),(0,n.kt)("p",null,"The following is the first presentation during the start of Spring 2024."),(0,n.kt)("h2",{id:"copyright-and-protection-disclaimer"},"Copyright and Protection Disclaimer"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Copyright Notice:")),(0,n.kt)("p",null,"The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Protected Material:")),(0,n.kt)("p",null,"These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Usage Authorization:")),(0,n.kt)("p",null,"If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact ",(0,n.kt)("a",{parentName:"p",href:"https://skushagra.com"},"Kushagra Srivastava")," for authorization."),(0,n.kt)("p",null,"The code will be released under GNU GPL v3 once ready."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Slide",src:r(4298).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(2761).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(5804).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(9347).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(4234).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(8562).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(9198).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(4746).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(8299).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(9660).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(5453).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(280).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(239).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(2506).Z,width:"2000",height:"1125"})))}h.isMDXComponent=!0},4298:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/01-88341fb94ec046c672f95bbd3909c8b5.png"},2761:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/02-b3fd4455563dfcdc0b1ccf690a306180.png"},5804:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/03-720f981d2afdbaecc3585a95bc655a3b.png"},9347:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/04-82892ab8fcc096aa26fcb3de8bc4afb0.png"},4234:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/05-27aa96f2358a894b2015dda641ce76f8.png"},8562:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/06-a8b2551fcab7123e67879df47709a923.png"},9198:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/07-4e2e603d7e016b806093a4329d35e8dd.png"},4746:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/08-2de595ea4341ed8644036f57006f2160.png"},8299:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/09-236c3ede7785c89f5eb711d03292e285.png"},9660:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/10-c7f1c02eb2ceafc967f317b99077bee9.png"},5453:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/11-9acacc4b98a3c9483c93a7f0f7bdc276.png"},280:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/12-6d35c699ff2aa880081e83a4f99e5d8b.png"},239:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/13-760622396e00564106ba9c8074d3151f.png"},2506:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/14-8fa9bb3157f7be4b72093c601a116a0e.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[916],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>u});var i=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?a(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):a(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,i,n=function(e,t){if(null==e)return{};var r,i,n={},a=Object.keys(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i<a.length;i++)r=a[i],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var c=i.createContext({}),l=function(e){var t=i.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=l(e.components);return i.createElement(c.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},g=i.forwardRef((function(e,t){var r=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=l(r),g=n,u=d["".concat(c,".").concat(g)]||d[g]||h[g]||a;return r?i.createElement(u,s(s({ref:t},p),{},{components:r})):i.createElement(u,s({ref:t},p))}));function u(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=r.length,s=new Array(a);s[0]=g;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o[d]="string"==typeof e?e:n,s[1]=o;for(var l=2;l<a;l++)s[l]=r[l];return i.createElement.apply(null,s)}return i.createElement.apply(null,r)}g.displayName="MDXCreateElement"},9485:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var i=r(7462),n=(r(7294),r(3905));const a={sidebar_position:3},s="Semester 2: Part 2 Initial",o={unversionedId:"thesis/pt2init",id:"thesis/pt2init",title:"Semester 2: Part 2 Initial",description:"The following is the first presentation during the start of Spring 2024.",source:"@site/docs/thesis/pt2init.md",sourceDirName:"thesis",slug:"/thesis/pt2init",permalink:"/docs/thesis/pt2init",draft:!1,tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"Semester 1: Thesis Presentation",permalink:"/docs/thesis/sem1"}},c={},l=[{value:"Copyright and Protection Disclaimer",id:"copyright-and-protection-disclaimer",level:2}],p={toc:l},d="wrapper";function h(e){let{components:t,...a}=e;return(0,n.kt)(d,(0,i.Z)({},p,a,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"semester-2-part-2-initial"},"Semester 2: Part 2 Initial"),(0,n.kt)("p",null,"The following is the first presentation during the start of Spring 2024."),(0,n.kt)("h2",{id:"copyright-and-protection-disclaimer"},"Copyright and Protection Disclaimer"),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Copyright Notice:")),(0,n.kt)("p",null,"The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Protected Material:")),(0,n.kt)("p",null,"These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws."),(0,n.kt)("p",null,(0,n.kt)("strong",{parentName:"p"},"Usage Authorization:")),(0,n.kt)("p",null,"If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact ",(0,n.kt)("a",{parentName:"p",href:"https://skushagra.com"},"Kushagra Srivastava")," for authorization."),(0,n.kt)("p",null,"The code will be released under GNU GPL v3 once ready."),(0,n.kt)("p",null,(0,n.kt)("img",{alt:"Slide",src:r(8115).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(2066).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(3484).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(4402).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(3964).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(5618).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(1869).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(3105).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(8038).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(154).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(6463).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(4310).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(5156).Z,width:"2000",height:"1125"}),"\n",(0,n.kt)("img",{alt:"Slide",src:r(828).Z,width:"2000",height:"1125"})))}h.isMDXComponent=!0},8115:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/01-88341fb94ec046c672f95bbd3909c8b5.png"},2066:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/02-b3fd4455563dfcdc0b1ccf690a306180.png"},3484:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/03-720f981d2afdbaecc3585a95bc655a3b.png"},4402:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/04-82892ab8fcc096aa26fcb3de8bc4afb0.png"},3964:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/05-27aa96f2358a894b2015dda641ce76f8.png"},5618:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/06-a8b2551fcab7123e67879df47709a923.png"},1869:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/07-4e2e603d7e016b806093a4329d35e8dd.png"},3105:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/08-2de595ea4341ed8644036f57006f2160.png"},8038:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/09-236c3ede7785c89f5eb711d03292e285.png"},154:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/10-c7f1c02eb2ceafc967f317b99077bee9.png"},6463:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/11-9acacc4b98a3c9483c93a7f0f7bdc276.png"},4310:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/12-6d35c699ff2aa880081e83a4f99e5d8b.png"},5156:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/13-760622396e00564106ba9c8074d3151f.png"},828:(e,t,r)=>{r.d(t,{Z:()=>i});const i=r.p+"assets/images/14-8fa9bb3157f7be4b72093c601a116a0e.png"}}]); \ No newline at end of file diff --git a/assets/js/d93564cb.1d8fd072.js b/assets/js/d93564cb.aaec1f3b.js similarity index 82% rename from assets/js/d93564cb.1d8fd072.js rename to assets/js/d93564cb.aaec1f3b.js index 5e22c099..b9b850af 100644 --- a/assets/js/d93564cb.1d8fd072.js +++ b/assets/js/d93564cb.aaec1f3b.js @@ -1 +1 @@ -"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[741],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var n=r(7294);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){s(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,n,s=function(e,t){if(null==e)return{};var r,n,s={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(s[r]=e[r]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(r),u=s,g=d["".concat(l,".").concat(u)]||d[u]||h[u]||i;return r?n.createElement(g,a(a({ref:t},p),{},{components:r})):n.createElement(g,a({ref:t},p))}));function g(e,t){var r=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=r.length,a=new Array(i);a[0]=u;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:s,a[1]=o;for(var c=2;c<i;c++)a[c]=r[c];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},9009:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var n=r(7462),s=(r(7294),r(3905));const i={sidebar_position:1},a="Semester 0: CICS Syslab",o={unversionedId:"thesis/syslab",id:"thesis/syslab",title:"Semester 0: CICS Syslab",description:"The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages.",source:"@site/docs/thesis/syslab.md",sourceDirName:"thesis",slug:"/thesis/syslab",permalink:"/docs/thesis/syslab",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Thesis Milestones",permalink:"/docs/category/thesis-milestones"},next:{title:"Semester 1: Thesis Presentation",permalink:"/docs/thesis/sem1"}},l={},c=[{value:"Copyright and Protection Disclaimer",id:"copyright-and-protection-disclaimer",level:2}],p={toc:c},d="wrapper";function h(e){let{components:t,...i}=e;return(0,s.kt)(d,(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"semester-0-cics-syslab"},"Semester 0: CICS Syslab"),(0,s.kt)("p",null,"The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages."),(0,s.kt)("h2",{id:"copyright-and-protection-disclaimer"},"Copyright and Protection Disclaimer"),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Copyright Notice:")),(0,s.kt)("p",null,"The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited."),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Protected Material:")),(0,s.kt)("p",null,"These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws."),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Usage Authorization:")),(0,s.kt)("p",null,"If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact ",(0,s.kt)("a",{parentName:"p",href:"https://skushagra.com"},"Kushagra Srivastava")," for authorization."),(0,s.kt)("p",null,"The code will be released under GNU GPL v3 once ready."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Slide",src:r(7576).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(8229).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(4060).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(4304).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(2311).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(9218).Z,width:"9600",height:"7200"})))}h.isMDXComponent=!0},7576:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-1-3138de3945002b71ebb1bcb3d0969326.png"},8229:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-2-7aec5d8808ab57616239ead3249b19c7.png"},4060:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-3-a986366c3d9b697090dc250b411c842b.png"},4304:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-4-04d4adaaa3b6e3a965cedf64aa582fd8.png"},2311:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-5-6f754321ddd4454a69823cc55e957b8f.png"},9218:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-6-de6dca83ad83ef1e278e7a160e94113d.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[741],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var n=r(7294);function s(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){s(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function o(e,t){if(null==e)return{};var r,n,s=function(e,t){if(null==e)return{};var r,n,s={},i=Object.keys(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||(s[r]=e[r]);return s}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)r=i[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}var l=n.createContext({}),c=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(l.Provider,{value:t},e.children)},d="mdxType",h={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),d=c(r),u=s,g=d["".concat(l,".").concat(u)]||d[u]||h[u]||i;return r?n.createElement(g,a(a({ref:t},p),{},{components:r})):n.createElement(g,a({ref:t},p))}));function g(e,t){var r=arguments,s=t&&t.mdxType;if("string"==typeof e||s){var i=r.length,a=new Array(i);a[0]=u;var o={};for(var l in t)hasOwnProperty.call(t,l)&&(o[l]=t[l]);o.originalType=e,o[d]="string"==typeof e?e:s,a[1]=o;for(var c=2;c<i;c++)a[c]=r[c];return n.createElement.apply(null,a)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},9009:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>o,toc:()=>c});var n=r(7462),s=(r(7294),r(3905));const i={sidebar_position:1},a="Semester 0: CICS Syslab",o={unversionedId:"thesis/syslab",id:"thesis/syslab",title:"Semester 0: CICS Syslab",description:"The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages.",source:"@site/docs/thesis/syslab.md",sourceDirName:"thesis",slug:"/thesis/syslab",permalink:"/docs/thesis/syslab",draft:!1,tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1},sidebar:"tutorialSidebar",previous:{title:"Thesis Milestones",permalink:"/docs/category/thesis-milestones"},next:{title:"Semester 1: Thesis Presentation",permalink:"/docs/thesis/sem1"}},l={},c=[{value:"Copyright and Protection Disclaimer",id:"copyright-and-protection-disclaimer",level:2}],p={toc:c},d="wrapper";function h(e){let{components:t,...i}=e;return(0,s.kt)(d,(0,n.Z)({},p,i,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("h1",{id:"semester-0-cics-syslab"},"Semester 0: CICS Syslab"),(0,s.kt)("p",null,"The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages."),(0,s.kt)("h2",{id:"copyright-and-protection-disclaimer"},"Copyright and Protection Disclaimer"),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Copyright Notice:")),(0,s.kt)("p",null,"The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited."),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Protected Material:")),(0,s.kt)("p",null,"These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws."),(0,s.kt)("p",null,(0,s.kt)("strong",{parentName:"p"},"Usage Authorization:")),(0,s.kt)("p",null,"If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact ",(0,s.kt)("a",{parentName:"p",href:"https://skushagra.com"},"Kushagra Srivastava")," for authorization."),(0,s.kt)("p",null,"The code will be released under GNU GPL v3 once ready."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Slide",src:r(7503).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(5444).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(3771).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(5286).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(273).Z,width:"9600",height:"7200"}),"\n",(0,s.kt)("img",{alt:"Slide",src:r(8974).Z,width:"9600",height:"7200"})))}h.isMDXComponent=!0},7503:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-1-3138de3945002b71ebb1bcb3d0969326.png"},5444:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-2-7aec5d8808ab57616239ead3249b19c7.png"},3771:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-3-a986366c3d9b697090dc250b411c842b.png"},5286:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-4-04d4adaaa3b6e3a965cedf64aa582fd8.png"},273:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-5-6f754321ddd4454a69823cc55e957b8f.png"},8974:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/SysLab1-6-de6dca83ad83ef1e278e7a160e94113d.png"}}]); \ No newline at end of file diff --git a/assets/js/main.3c3a3d96.js b/assets/js/main.3c3a3d96.js new file mode 100644 index 00000000..15fe5873 --- /dev/null +++ b/assets/js/main.3c3a3d96.js @@ -0,0 +1,2 @@ +/*! For license information please see main.3c3a3d96.js.LICENSE.txt */ +(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"0e384e19":[()=>n.e(671).then(n.bind(n,9881)),"@site/docs/intro.md",9881],"0e5d29c6":[()=>n.e(686).then(n.bind(n,1961)),"@site/src/pages/communicationDesign.md",1961],"14eb3368":[()=>Promise.all([n.e(532),n.e(817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],17896441:[()=>Promise.all([n.e(532),n.e(376),n.e(918)]).then(n.bind(n,230)),"@theme/DocItem",230],"1be78505":[()=>Promise.all([n.e(532),n.e(514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1f391b9e":[()=>Promise.all([n.e(532),n.e(376),n.e(85)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"22ee8902":[()=>n.e(580).then(n.t.bind(n,1309,19)),"~docs/default/category-docs-tutorialsidebar-category-definitions-b17.json",1309],"302ee866":[()=>n.e(959).then(n.bind(n,5719)),"@site/docs/definitions/x86asm.md",5719],"393be207":[()=>n.e(414).then(n.bind(n,9286)),"@site/src/pages/markdown-page.md",9286],"4f2c5a9d":[()=>n.e(822).then(n.bind(n,5798)),"@site/docs/definitions/cpp.md",5798],"5a8ad210":[()=>n.e(258).then(n.t.bind(n,5035,19)),"~docs/default/category-docs-tutorialsidebar-category-thesis-milestones-d57.json",5035],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"7fbde740":[()=>n.e(545).then(n.bind(n,7844)),"@site/docs/definitions/rust.md",7844],"81cbbac2":[()=>n.e(789).then(n.bind(n,2279)),"@site/docs/thesis/sem1.md",2279],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9cdb66f6":[()=>n.e(408).then(n.t.bind(n,5745,19)),"C:\\Users\\kushd\\Documents\\RUST-Tracing-Tool\\iCons4-backend\\.docusaurus\\docusaurus-plugin-content-pages\\default\\plugin-route-context-module-100.json",5745],a649dc75:[()=>n.e(256).then(n.t.bind(n,3769,19)),"C:\\Users\\kushd\\Documents\\RUST-Tracing-Tool\\iCons4-backend\\.docusaurus\\docusaurus-plugin-content-docs\\default\\plugin-route-context-module-100.json",3769],afc412d1:[()=>n.e(694).then(n.bind(n,2965)),"@site/docs/definitions/x86.md",2965],b2e03007:[()=>n.e(137).then(n.bind(n,4196)),"@site/docs/definitions/llvm.md",4196],b3ba932c:[()=>n.e(507).then(n.bind(n,9530)),"@site/src/pages/massurc.md",9530],c1ca8d8d:[()=>n.e(916).then(n.bind(n,9485)),"@site/docs/thesis/pt2init.md",9485],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(195)]).then(n.bind(n,3261)),"@site/src/pages/index.js",3261],d93564cb:[()=>n.e(741).then(n.bind(n,9009)),"@site/docs/thesis/syslab.md",9009]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/communicationDesign",component:f("/communicationDesign","2c5"),exact:!0},{path:"/markdown-page",component:f("/markdown-page","47e"),exact:!0},{path:"/massurc",component:f("/massurc","9e5"),exact:!0},{path:"/docs",component:f("/docs","11d"),routes:[{path:"/docs/category/definitions",component:f("/docs/category/definitions","e81"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/thesis-milestones",component:f("/docs/category/thesis-milestones","0ca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/cpp",component:f("/docs/definitions/cpp","335"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/llvm",component:f("/docs/definitions/llvm","39c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/rust",component:f("/docs/definitions/rust","f1b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/x86",component:f("/docs/definitions/x86","389"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/x86asm",component:f("/docs/definitions/x86asm","b4d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro",component:f("/docs/intro","aed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/thesis/pt2init",component:f("/docs/thesis/pt2init","d9f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/thesis/sem1",component:f("/docs/thesis/sem1","c19"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/thesis/syslab",component:f("/docs/thesis/syslab","1f3"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","4c9"),exact:!0},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(5742),h=n(2263),g=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(8780),S=n(197);function x(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,c.TH)();return e+(0,E.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function T(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(C,null),r.createElement(x,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const _=new Map;function A(e){if(_.has(e.pathname))return{...e,pathname:_.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return _.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return _.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),R=n(8940);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),N("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container",j="__DOCUSAURUS_INSERT_BASEURL_BANNER";function z(e){return`\nwindow['${j}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${j}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[j]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,z(e))),r.createElement("div",{id:M}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(U,null):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(4763),G=n(2389);function Z(){const e=(0,G.Z)();return r.createElement(m.Z,null,r.createElement("html",{"data-has-hydrated":e}))}function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.Z,null,r.createElement(R.M,null,r.createElement(L.t,null,r.createElement(f,null,r.createElement(q,null),r.createElement(T,null),r.createElement($,null),r.createElement(I,{location:A(t)},e)),r.createElement(Z,null))))}var W=n(6887);const Y=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(9670);const Q=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"definitions/cpp","path":"/docs/definitions/cpp","sidebar":"tutorialSidebar"},{"id":"definitions/llvm","path":"/docs/definitions/llvm","sidebar":"tutorialSidebar"},{"id":"definitions/rust","path":"/docs/definitions/rust","sidebar":"tutorialSidebar"},{"id":"definitions/x86","path":"/docs/definitions/x86","sidebar":"tutorialSidebar"},{"id":"definitions/x86asm","path":"/docs/definitions/x86asm","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"},{"id":"thesis/pt2init","path":"/docs/thesis/pt2init","sidebar":"tutorialSidebar"},{"id":"thesis/sem1","path":"/docs/thesis/sem1","sidebar":"tutorialSidebar"},{"id":"thesis/syslab","path":"/docs/thesis/syslab","sidebar":"tutorialSidebar"},{"id":"/category/definitions","path":"/docs/category/definitions","sidebar":"tutorialSidebar"},{"id":"/category/thesis-milestones","path":"/docs/category/thesis-milestones","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/intro","label":"intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(7961);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),E=(0,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const x=f||p;const C=(0,s.Z)(x),T=x?.replace("pathname://","");let _=void 0!==T?(A=T,v&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;_&&C&&(_=(0,i.applyTrailingSlash)(_,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),R=n?o.OL:o.rU,N=u.Z.canUseIntersectionObserver,P=(0,a.useRef)(),O=()=>{L.current||null==_||(window.docusaurus.preload(_),L.current=!0)};(0,a.useEffect)((()=>(!N&&C&&null!=_&&window.docusaurus.prefetch(_),()=>{N&&P.current&&P.current.disconnect()})),[P,_,N,C]);const D=_?.startsWith("#")??!1,I=!_||!C||D;return I||g||E.collectLink(_),I?a.createElement("a",(0,r.Z)({ref:S,href:_},x&&!C&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(R,(0,r.Z)({},b,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,N&&e&&C&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=_&&window.docusaurus.prefetch(_))}))})),P.current.observe(e))},to:_},n&&{isActive:h,activeClassName:m}))}const p=a.forwardRef(f)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>f,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>p});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function p(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>dt});var r=n(7294),a=n(6010),o=n(4763),i=n(1944),l=n(7462),s=n(6550),u=n(5999),c=n(5936);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const m=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5281),v=n(9727);const b={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:b.skipToContent})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const C={content:"content_knG7"};function T(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const _={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:_.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:_.announcementBarPlaceholder}),r.createElement(T,{className:_.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:_.announcementBarClose}))}var L=n(2961),R=n(2466);var N=n(902),P=n(3102);const O=r.createContext(null);function D(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,N.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(O.Provider,{value:n},t)}function I(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new N.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var B=n(2949),j=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,j.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(1327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(Y,null))}var Q=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,X.Z)(a),p=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(Q.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(6043),le=n(8596),se=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(xe,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(xe,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function fe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var pe=n(4711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_nlXk";var ge=n(1875);const ve={searchBox:"searchBox_ZlJk"};function be(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,ve.searchBox)},t)}var ye=n(143),we=n(2802);var ke=n(373);const Ee=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),f=(0,pe.l)(),{search:p,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(fe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(be,{className:n},r.createElement(ge.Z,null))},dropdown:fe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,we.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,ye.Iw)(n),m=(0,ye.gB)(n),{savePreferredVersionName:h}=(0,ke.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??Ee(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...i],v=(0,we.lO)(n)[0],b=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):v.label,y=t&&g.length>1?void 0:Ee(v).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:b,to:y,isActive:a?()=>!1:void 0})):r.createElement(fe,(0,l.Z)({},c,{mobile:t,label:b,to:y,items:g,isActive:a?()=>!1:void 0}))}};function xe(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Se[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ce(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(xe,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Te(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function _e(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Te,{onClick:()=>t.hide()}),t.content)}function Ae(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(F,{header:r.createElement(K,null),primaryMenu:r.createElement(Ce,null),secondaryMenu:r.createElement(_e,null)}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Re(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ne(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!s&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Re,{onClick:i.toggle}),r.createElement(Ae,null))}var Pe=n(8780);const Oe={errorBoundaryError:"errorBoundaryError_a6uf"};function De(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Ie(e){let{error:t}=e;const n=(0,Pe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Oe.errorBoundaryError},n)}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function Be(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function je(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Be,null))}const ze={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Me,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(xe,e)))))}function $e(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function qe(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement($e,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(je,null),r.createElement(W,null),r.createElement(Ue,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ue,{items:a}),r.createElement(Z,{className:ze.colorModeToggle}),!o&&r.createElement(be,null,r.createElement(ge.Z,null)))})}function He(){return r.createElement(Ne,null,r.createElement(qe,null))}function Ge(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ze(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(Ge,{item:t}))}function Ve(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ze,{key:t,item:e})))))}function We(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ve,{key:t,column:e}))))}function Ye(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Ke(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Ge,{item:t})}function Qe(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Ke,{item:e}),t.length!==n+1&&r.createElement(Ye,null))))))}function Xe(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(We,{columns:t}):r.createElement(Qe,{links:t})}var Je=n(941);const et={footerLogoLink:"footerLogoLink_BH7S"};function tt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Je.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function nt(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:et.footerLogoLink,target:t.target},r.createElement(tt,{logo:t})):r.createElement(tt,{logo:t})}function rt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function ot(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(at,{style:o,links:n&&n.length>0&&r.createElement(Xe,{links:n}),logo:a&&r.createElement(nt,{logo:a}),copyright:t&&r.createElement(rt,{copyright:t})})}const it=r.memo(ot),lt=(0,N.Qc)([B.S,k.pl,R.OC,ke.L5,i.VC,function(e){let{children:t}=e;return r.createElement(P.n2,null,r.createElement(L.M,null,r.createElement(D,null,t)))}]);function st(e){let{children:t}=e;return r.createElement(lt,null,t)}function ut(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(De,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Ie,{error:t})))))}const ct={mainWrapper:"mainWrapper_z2l0"};function dt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,v.t)(),r.createElement(st,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(He,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,ct.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(ut,e)},t)),!n&&r.createElement(it,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},p,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!o.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{c.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),a=n(3102),o=n(7524),i=n(6550),l=(n(1688),n(902));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{MN:()=>C,Wl:()=>m,_F:()=>b,cE:()=>f,jA:()=>h,xz:()=>p,hI:()=>x,lO:()=>k,vY:()=>S,oz:()=>E,s1:()=>w});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(4477),u=n(1116);function c(e){return Array.from(new Set(e))}var d=n(8596);const f=!!i._r;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function h(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),v=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||v(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>c([t,n,a].filter(Boolean))),[t,n,a])}function E(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function x(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function C(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>T,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var v="popstate",b="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,x=void 0===S?6:S,C=e.basename?d(s(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return C&&(o=c(o,C)),p(o,r,n)}function _(){return Math.random().toString(36).substr(2,x)}var A=m();function L(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(T(e.state))}function N(){O(T(y()))}var P=!1;function O(e){if(P)P=!1,L();else{A.confirmTransitionTo(e,"POP",E,(function(t){t?L({action:"POP",location:e}):function(e){var t=U.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(P=!0,F(a))}(e)}))}}var D=T(y()),I=[D.key];function M(e){return C+f(e)}function F(e){n.go(e)}var B=0;function j(e){1===(B+=e)&&1===e?(window.addEventListener(v,R),o&&window.addEventListener(b,N)):0===B&&(window.removeEventListener(v,R),o&&window.removeEventListener(b,N))}var z=!1;var U={length:n.length,action:"POP",location:D,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,_(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf(U.location.key),u=I.slice(0,s+1);u.push(o.key),I=u,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,_(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf(U.location.key);-1!==s&&(I[s]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function C(e){window.location.replace(S(window.location.href)+"#"+e)}function T(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,v=e.basename?d(s(e.basename)):"",b=E[u],y=b.encodePath,w=b.decodePath;function T(){var e=w(x());return v&&(e=c(e,v)),p(e)}var _=m();function A(e){(0,r.Z)(z,e),z.length=t.length,_.notifyListeners(z.location,z.action)}var L=!1,R=null;function N(){var e,t,n=x(),r=y(n);if(n!==r)C(r);else{var a=T(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===f(a))return;R=null,function(e){if(L)L=!1,A();else{var t="POP";_.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=I.lastIndexOf(f(t));-1===n&&(n=0);var r=I.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var P=x(),O=y(P);P!==O&&C(O);var D=T(),I=[f(D)];function M(e){t.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?window.addEventListener(k,N):0===F&&window.removeEventListener(k,N)}var j=!1;var z={length:t.length,action:"POP",location:D,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(v+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);if(x()!==a){R=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(f(z.location)),i=I.slice(0,o+1);i.push(t),I=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);x()!==a&&(R=t,C(a));var o=I.indexOf(f(z.location));-1!==o&&(I[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=_.setPrompt(e);return j||(B(1),j=!0),function(){return j&&(j=!1,B(-1)),t()}},listen:function(e){var t=_.appendListener(e);return B(1),function(){B(-1),t()}}};return z}function _(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=_(l,0,o.length-1),v=o.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),b=f;function y(e){var t=_(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[g],index:g,entries:v,createHref:b,push:function(e,t){var r="PUSH",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||h&&h[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},4779:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,x=n[2]||c,C=v||b;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+s(x)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,v=!!h.lookbehind,b=!!h.greedy,y=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var C,T=1;if(b){if(!(C=o(k,S,e,v))||C.index>=e.length)break;var _=C.index,A=C.index+C[0].length,L=S;for(L+=E.value.length;_>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(L<A||"string"==typeof R.value);R=R.next)T++,L+=R.value.length;T--,x=e.slice(S,L),C.index-=S}else if(!(C=o(k,0,x,v)))continue;_=C.index;var N=C[0],P=x.slice(0,_),O=x.slice(_+N.length),D=S+x.length;d&&D>d.reach&&(d.reach=D);var I=E.prev;if(P&&(I=s(t,I,P),S+=P.length),u(t,I,T),E=s(t,I,new a(f,g?r.tokenize(N,g):N,y,N)),O&&s(t,E,O),T>1){var M={cause:f+","+m,reach:D};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(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){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"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 t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,C=60108,T=60114,_=60109,A=60110,L=60112,R=60113,N=60120,P=60115,O=60116,D=60121,I=60128,M=60129,F=60130,B=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;E=j("react.element"),S=j("react.portal"),x=j("react.fragment"),C=j("react.strict_mode"),T=j("react.profiler"),_=j("react.provider"),A=j("react.context"),L=j("react.forward_ref"),R=j("react.suspense"),N=j("react.suspense_list"),P=j("react.memo"),O=j("react.lazy"),D=j("react.block"),j("react.scope"),I=j("react.opaque.id"),M=j("react.debug_trace_mode"),F=j("react.offscreen"),B=j("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Z(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case T:return"Profiler";case C:return"StrictMode";case R:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case P:return V(e.type);case D:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ue(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return he(e,t)}))}:he);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!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},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var Ee=a({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 Se(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;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}}function Ce(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Te=null,_e=null,Ae=null;function Le(e){if(e=na(e)){if("function"!=typeof Te)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Te(e.stateNode,e.type,t))}}function Re(e){_e?Ae?Ae.push(e):Ae=[e]:_e=e}function Ne(){if(_e){var e=_e,t=Ae;if(Ae=_e=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Pe(e,t){return e(t)}function Oe(e,t,n,r,a){return e(t,n,r,a)}function De(){}var Ie=Pe,Me=!1,Fe=!1;function Be(){null===_e&&null===Ae||(De(),Ne())}function je(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var qe=!1,He=null,Ge=!1,Ze=null,Ve={onError:function(e){qe=!0,He=e}};function We(e,t,n,r,a,o,i,l,s){qe=!1,He=null,$e.apply(Ve,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Qe(e){if(Ye(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Qe(a),e;if(o===r)return Qe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function Et(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:Et("Animation","AnimationEnd"),animationiteration:Et("Animation","AnimationIteration"),animationstart:Et("Animation","AnimationStart"),transitionend:Et("Transition","TransitionEnd")},xt={},Ct={};function Tt(e){if(xt[e])return xt[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ct)return xt[e]=n[t];return e}d&&(Ct=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var _t=Tt("animationend"),At=Tt("animationiteration"),Lt=Tt("animationstart"),Rt=Tt("transitionend"),Nt=new Map,Pt=new Map,Ot=["abort","abort",_t,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Rt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Pt.set(r,t),Nt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var It=8;function Mt(e){if(0!=(1&e))return It=15,1;if(0!=(2&e))return It=14,2;if(0!=(4&e))return It=13,4;var t=24&e;return 0!==t?(It=12,t):0!=(32&e)?(It=11,32):0!==(t=192&e)?(It=10,t):0!=(256&e)?(It=9,256):0!==(t=3584&e)?(It=8,t):0!=(4096&e)?(It=7,4096):0!==(t=4186112&e)?(It=6,t):0!==(t=62914560&e)?(It=5,t):67108864&e?(It=4,67108864):0!=(134217728&e)?(It=3,134217728):0!==(t=805306368&e)?(It=2,t):0!=(1073741824&e)?(It=1,1073741824):(It=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return It=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=It=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=It):0!==(l&=o)&&(r=Mt(l),a=It)}else 0!==(o=n&~i)?(r=Mt(o),a=It):0!==l&&(r=Mt(l),a=It);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=It)return t;It=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function jt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?jt(10,t):e;case 10:return 0===(e=zt(192&~t))?jt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Yt(e,t,n,r){Me||De();var a=Qt,o=Me;Me=!0;try{Oe(a,e,t,n,r)}finally{(Me=o)||Be()}}function Kt(e,t,n,r){Vt(Zt,Qt.bind(null,e,t,n,r))}function Qt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Dr(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=Ce(r);if(null!==(a=ta(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Dr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),mn=ln(pn),hn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_n,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(hn),vn=ln(a({},hn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=ln(wn),En=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Cn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Tn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Cn[e])&&!!t[e]}function _n(){return Tn}var An=a({},pn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_n,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=ln(An),Rn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_n})),Pn=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=a({},hn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Dn=ln(On),In=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,jn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==In.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Re(r),0<(t=Mr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Yn=null;function Kn(e){Ar(e,0)}function Qn(e){if(Q(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Yn=Wn=null)}function ar(e){if("value"===e.propertyName&&Qn(Yn)){var t=[];if(Vn(t,Yn,e,Ce(e)),e=Kn,Me)e(t);else{Me=!0;try{Pe(e,t)}finally{Me=!1,Be()}}}}function or(e,t,n){"focusin"===e?(rr(),Yn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Yn)}function lr(e,t){if("click"===e)return Qn(t)}function sr(e,t){if("input"===e||"change"===e)return Qn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,kr=!1;function Er(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==br||br!==X(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}Dt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Dt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Dt(Ot,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Sr.length;xr++)Pt.set(Sr[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Cr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Tr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Cr));function _r(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(We.apply(this,arguments),qe){if(!qe)throw Error(i(198));var c=He;qe=!1,He=null,Ge||(Ge=!0,Ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Ar(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;_r(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;_r(a,l,u),o=s}}}if(Ge)throw e=Ze,Ge=!1,Ze=null,e}function Lr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Or(t,e,2,!1),n.add(r))}var Rr="_reactListening"+Math.random().toString(36).slice(2);function Nr(e){e[Rr]||(e[Rr]=!0,l.forEach((function(t){Tr.has(t)||Pr(t,!1,e,null),Pr(t,!0,e,null)})))}function Pr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Tr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Or(o,e,a,t),i.add(l))}function Or(e,t,n,r){var a=Pt.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Kt;break;default:a=Qt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{return Ie(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=o,a=Ce(n),i=[];e:{var l=Nt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Ln;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case _t:case At:case Lt:s=yn;break;case Rt:s=Pn;break;case"scroll":s=mn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Rn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=je(m,f))&&c.push(Ir(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Ye(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Rn,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(h,m+"leave",s,n,a)).target=d,l.relatedTarget=p,h=null,ta(a)===r&&((c=new c(f,m+"enter",u,n,a)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=Fr(p))m++;for(p=0,h=f;h;h=Fr(h))p++;for(;0<m-p;)c=Fr(c),m--;for(;0<p-m;)f=Fr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=Fr(c),f=Fr(f)}c=null}else c=null;null!==s&&Br(i,l,s,c,!1),null!==u&&null!==d&&Br(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Xn;else if(Zn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Vn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Zn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Er(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":Er(i,n,a)}var b;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(jn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Hn=!0)),0<(v=Mr(r,y)).length&&(y=new En(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=qn(n))&&(y.data=b))),(b=Bn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return jn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new En("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Ar(i,t)}))}function Ir(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=je(e,n))&&r.unshift(Ir(e,o,a)),null!=(o=je(e,t))&&r.push(Ir(e,o,a))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=je(n,o))&&i.unshift(Ir(n,s,l)):a||null!=(s=je(n,o))&&i.push(Ir(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function jr(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Yr=0;var Kr=Math.random().toString(36).slice(2),Qr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Qr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Qr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Qr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Qr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=fa.current,ca(fa,e),ca(pa,pa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var Ea=null,Sa=null,xa=o.unstable_runWithPriority,Ca=o.unstable_scheduleCallback,Ta=o.unstable_cancelCallback,_a=o.unstable_shouldYield,Aa=o.unstable_requestPaint,La=o.unstable_now,Ra=o.unstable_getCurrentPriorityLevel,Na=o.unstable_ImmediatePriority,Pa=o.unstable_UserBlockingPriority,Oa=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Ia=o.unstable_IdlePriority,Ma={},Fa=void 0!==Aa?Aa:function(){},Ba=null,ja=null,za=!1,Ua=La(),$a=1e4>Ua?La:function(){return La()-Ua};function qa(){switch(Ra()){case Na:return 99;case Pa:return 98;case Oa:return 97;case Da:return 96;case Ia:return 95;default:throw Error(i(332))}}function Ha(e){switch(e){case 99:return Na;case 98:return Pa;case 97:return Oa;case 96:return Da;case 95:return Ia;default:throw Error(i(332))}}function Ga(e,t){return e=Ha(e),xa(e,t)}function Za(e,t,n){return e=Ha(e),Ca(e,t,n)}function Va(){if(null!==ja){var e=ja;ja=null,Ta(e)}Wa()}function Wa(){if(!za&&null!==Ba){za=!0;var e=0;try{var t=Ba;Ga(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ba=null}catch(n){throw null!==Ba&&(Ba=Ba.slice(e+1)),Ca(Na,Va),n}finally{za=!1}}}var Ya=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qa=sa(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Qa.current;ua(Qa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function mo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),ms(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:fa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:fa.current,a.context=ha(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var Eo=Array.isArray;function So(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function Co(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Zs(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Qs(t,e.mode,n)).return=e,t}if(Eo(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;xo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null}if(Eo(n)||$(n))return null!==a?null:d(e,t,n,r,null);xo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(Eo(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);xo(t,r)}return null}function h(a,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var v=p(a,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(a,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(a,l[h],s))&&(i=o(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=$(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(a,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(a,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===x&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case E:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===x){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=So(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===x?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Qs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(Eo(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(c&&xo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var To=Co(!0),_o=Co(!1),Ao={},Lo=sa(Ao),Ro=sa(Ao),No=sa(Ao);function Po(e){if(e===Ao)throw Error(i(174));return e}function Oo(e,t){switch(ca(No,t),ca(Ro,e),ca(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Lo),ca(Lo,t)}function Do(){ua(Lo),ua(Ro),ua(No)}function Io(e){Po(No.current);var t=Po(Lo.current),n=pe(t,e.type);t!==n&&(ca(Ro,e),ca(Lo,n))}function Mo(e){Ro.current===e&&(ua(Lo),ua(Ro))}var Fo=sa(0);function Bo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var jo=null,zo=null,Uo=!1;function $o(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if(Uo){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Vr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(jo=e);$o(jo,n)}jo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,jo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jo=e}function Zo(e){if(e!==jo)return!1;if(!Uo)return Go(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=jo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=jo=null,Uo=!1}var Wo=[];function Yo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=k.ReactCurrentDispatcher,Qo=k.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Pi:Oi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Di,e=n(r,a)}while(ri)}if(Ko.current=Ni,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Xo&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Ol;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-qt(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(m,n)&&ur(h,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Ri.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function mi(e,t,n){return pi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Ri.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function ki(e,t){return yi(516,4,e,t)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ci(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)}function Ti(){}function _i(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Li(e,t){var n=qa();Ga(98>n?98:n,(function(){e(!0)})),Ga(97<n?97:n,(function(){var n=Qo.transition;Qo.transition=1;try{e(!1),t()}finally{Qo.transition=n}}))}function Ri(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}ms(e,a,r)}}var Ni={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ri.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:hi,useDebugValue:Ti,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return ki((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return vi(e=Li.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:I,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:_i,useContext:oo,useEffect:Ei,useImperativeHandle:Ci,useLayoutEffect:Si,useMemo:Ai,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ti,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Di={readContext:oo,useCallback:_i,useContext:oo,useEffect:Ei,useImperativeHandle:Ci,useLayoutEffect:Si,useMemo:Ai,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ti,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Ii=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?_o(t,null,n,r):To(t,e.child,n,r)}function Bi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function ji(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ga(n)?ma:fa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Hi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ha(t,u=ga(n)?ma:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ka(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var m=t.memoizedState;l!==d||f!==m||pa.current||io?("function"==typeof p&&(go(t,n,p,r),m=t.memoizedState),(u=io||bo(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Gi(e,t,n,r,o,a)}function Gi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),ol(e,t,o);r=t.stateNode,Ii.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=To(t,e.child,null,o),t.child=To(t,null,l,o)):Fi(e,t,l,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Oo(e,t.containerInfo)}var Vi,Wi,Yi,Ki,Qi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=Fo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Fo,1&o),null===e?(void 0!==a.fallback&&Ho(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,t.lanes=33554432,e):((n=Ys({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Qi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ys(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Bo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Bo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Do(),ua(pa),ua(fa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=Po(No.current);if(n=t.type,null!==e&&null!=t.stateNode)Yi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Po(Lo.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Qr]=t,r[Xr]=l,n){case"dialog":Lr("cancel",r),Lr("close",r);break;case"iframe":case"object":case"embed":Lr("load",r);break;case"video":case"audio":for(e=0;e<Cr.length;e++)Lr(Cr[e],r);break;case"source":Lr("error",r);break;case"img":case"image":case"link":Lr("error",r),Lr("load",r);break;case"details":Lr("toggle",r);break;case"input":ee(r,l),Lr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Lr("invalid",r);break;case"textarea":se(r,l),Lr("invalid",r)}for(var u in Se(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Lr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=jr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Qr]=t,e[Xr]=r,Vi(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Lr("cancel",e),Lr("close",e),o=r;break;case"iframe":case"object":case"embed":Lr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Cr.length;o++)Lr(Cr[o],e);o=r;break;case"source":Lr("error",e),o=r;break;case"img":case"image":case"link":Lr("error",e),Lr("load",e),o=r;break;case"details":Lr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Lr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Lr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Lr("invalid",e);break;default:o=r}Se(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?ke(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Lr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=jr)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Po(No.current),Po(Lo.current),Zo(t)?(r=t.stateNode,n=t.memoizedProps,r[Qr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Qr]=t,t.stateNode=r)}return null;case 13:return ua(Fo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Bl&&(Bl=3):(0!==Bl&&3!==Bl||(Bl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&$l)||bs(Ol,Il))),(r||n)&&(t.flags|=4),null);case 4:return Do(),Wi(t),null===e&&Nr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Fo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Bl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Bo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Fo,1&Fo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Bo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=Fo.current,ca(Fo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Do(),ua(pa),ua(fa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ua(Fo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Fo),null;case 4:return Do(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Z(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(){},Yi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Po(Lo.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=jr)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Lr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===I?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Ql=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(Ea,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:Cl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=jr));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function Cl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Tl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,a),t=xe(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?ke(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=$a(),bl(t.child,!0)),void _l(t);case 19:return void _l(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function _l(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ll=Math.ceil,Rl=k.ReactCurrentDispatcher,Nl=k.ReactCurrentOwner,Pl=0,Ol=null,Dl=null,Il=0,Ml=0,Fl=sa(0),Bl=0,jl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Zl=1/0;function Vl(){Zl=$a()+500}var Wl,Yl=null,Kl=!1,Ql=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Pl)?$a():-1!==ls?ls:ls=$a()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Pl)&&98===e?e=jt(12,ss):e=jt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Ol&&($l|=t,4===Bl&&bs(e,Il));var r=qa();1===t?0!=(8&Pl)&&0==(48&Pl)?ys(e):(gs(e,n),0===Pl&&(Vl(),Va())):(0==(4&Pl)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Hl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-qt(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,Mt(u);var d=It;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Ol?Il:0),t=It,0===r)null!==n&&(n!==Ma&&Ta(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ta(n)}15===t?(n=ys.bind(null,e),null===Ba?(Ba=[n],ja=Ca(Na,Wa)):Ba.push(n),n=Ma):14===t?n=Za(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Za(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Pl))throw Error(i(327));var t=e.callbackNode;if(Is()&&e.callbackNode!==t)return null;var n=Ft(e,e===Ol?Il:0);if(0===n)return null;var r=n,a=Pl;Pl|=16;var o=Ts();for(Ol===e&&Il===r||(Vl(),xs(e,r));;)try{Ls();break}catch(s){Cs(e,s)}if(to(),Rl.current=o,Pl=a,null!==Dl?r=0:(Ol=null,Il=0,r=Bl),0!=(zl&$l))xs(e,0);else if(0!==r){if(2===r&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=_s(e,n))),1===r)throw t=jl,xs(e,0),bs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ps(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=Gl+500-$a())){if(0!==Ft(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Hr(Ps.bind(null,e),r);break}Ps(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-qt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ll(n/1960))-n)){e.timeoutHandle=Hr(Ps.bind(null,e),n);break}Ps(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Pl))throw Error(i(327));if(Is(),e===Ol&&0!=(e.expiredLanes&Il)){var t=Il,n=_s(e,t);0!=(zl&$l)&&(n=_s(e,t=Ft(e,t)))}else n=_s(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=_s(e,t))),1===n)throw n=jl,xs(e,0),bs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ps(e),gs(e,$a()),null}function ws(e,t){var n=Pl;Pl|=1;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function ks(e,t){var n=Pl;Pl&=-2,Pl|=8;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function Es(e,t){ca(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ua(Fl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Dl)for(n=Dl.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Do(),ua(pa),ua(fa),Yo();break;case 5:Mo(r);break;case 4:Do();break;case 13:case 19:ua(Fo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Ol=e,Dl=Zs(e.current,null),Il=Ml=zl=t,Bl=0,jl=null,ql=$l=Ul=0}function Cs(e,t){for(;;){var n=Dl;try{if(to(),Ko.current=Ni,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Nl.current=null,null===n||null===n.return){Bl=1,jl=t,Dl=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Il,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fo.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((V(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Bl&&(Bl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ns(n)}catch(S){t=S,Dl===n&&null!==n&&(Dl=n=n.return);continue}break}}function Ts(){var e=Rl.current;return Rl.current=Ni,null===e?Ni:e}function _s(e,t){var n=Pl;Pl|=16;var r=Ts();for(Ol===e&&Il===t||xs(e,t);;)try{As();break}catch(a){Cs(e,a)}if(to(),Pl=n,Rl.current=r,null!==Dl)throw Error(i(261));return Ol=null,Il=0,Bl}function As(){for(;null!==Dl;)Rs(Dl)}function Ls(){for(;null!==Dl&&!_a();)Rs(Dl)}function Rs(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Ns(e):Dl=t,Nl.current=null}function Ns(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Dl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Dl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Dl=t);Dl=t=e}while(null!==t);0===Bl&&(Bl=5)}function Ps(e){var t=qa();return Ga(99,Os.bind(null,e,t)),null}function Os(e,t){do{Is()}while(null!==es);if(0!=(48&Pl))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-qt(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Ol&&(Dl=Ol=null,Il=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Pl,Pl|=32,Nl.current=null,zr=Wt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(T){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++m===o&&(f=d),v===u&&++h===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Yl=r;do{try{Ds()}catch(T){if(null===Yl)throw Error(i(330));zs(Yl,T),Yl=Yl.nextEffect}}while(null!==Yl);cs=null,Yl=r;do{try{for(l=e;null!==Yl;){var y=Yl.flags;if(16&y&&ve(Yl.stateNode,""),128&y){var w=Yl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Yl),Yl.flags&=-3;break;case 6:El(Yl),Yl.flags&=-3,Tl(Yl.alternate,Yl);break;case 1024:Yl.flags&=-1025;break;case 1028:Yl.flags&=-1025,Tl(Yl.alternate,Yl);break;case 4:Tl(Yl.alternate,Yl);break;case 8:Cl(l,s=Yl);var E=s.alternate;wl(s),null!==E&&wl(E)}Yl=Yl.nextEffect}}catch(T){if(null===Yl)throw Error(i(330));zs(Yl,T),Yl=Yl.nextEffect}}while(null!==Yl);if(k=Ur,w=hr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=pr(y,E),o=pr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!zr,Ur=zr=null,e.current=n,Yl=r;do{try{for(y=e;null!==Yl;){var S=Yl.flags;if(36&S&&vl(y,Yl.alternate,Yl),128&S){w=void 0;var x=Yl.ref;if(null!==x){var C=Yl.stateNode;Yl.tag,w=C,"function"==typeof x?x(w):x.current=w}}Yl=Yl.nextEffect}}catch(T){if(null===Yl)throw Error(i(330));zs(Yl,T),Yl=Yl.nextEffect}}while(null!==Yl);Yl=null,Fa(),Pl=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Yl=r;null!==Yl;)t=Yl.nextEffect,Yl.nextEffect=null,8&Yl.flags&&((S=Yl).sibling=null,S.stateNode=null),Yl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(Ea,n,void 0,64==(64&n.current.flags))}catch(T){}if(gs(e,$a()),Kl)throw Kl=!1,e=Ql,Ql=null,e;return 0!=(8&Pl)||Va(),null}function Ds(){for(;null!==Yl;){var e=Yl.alternate;ds||null===cs||(0!=(8&Yl.flags)?Je(Yl,cs)&&(ds=!0):13===Yl.tag&&Al(e,Yl)&&Je(Yl,cs)&&(ds=!0));var t=Yl.flags;0!=(256&t)&&gl(e,Yl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Is(),null}))),Yl=Yl.nextEffect}}function Is(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ga(e,Bs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function Bs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Pl))throw Error(i(331));var t=Pl;Pl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Pl=t,Va(),!0}function js(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Ol===e&&(Il&n)===n&&(4===Bl||3===Bl&&(62914560&Il)===Il&&500>$a()-Gl?xs(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case C:l=8,a|=1;break;case T:return(e=Hs(12,n,t,8|a)).elementType=T,e.type=T,e.lanes=o,e;case R:return(e=Hs(13,n,t,a)).type=R,e.elementType=R,e.lanes=o,e;case N:return(e=Hs(19,n,t,a)).elementType=N,e.lanes=o,e;case F:return Ys(n,a,o,t);case B:return(e=Hs(24,n,t,a)).elementType=B,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:l=10;break e;case A:l=9;break e;case L:l=11;break e;case P:l=14;break e;case O:l=16,r=null;break e;case D:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ys(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=F,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Qs(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),ms(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Nr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}ks((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Io(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Qa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ca(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Fo,1&Fo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Fo,Fo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Gi(null,t,r,!0,o,n)}else t.tag=0,Fi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===P)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Hi(null,t,a,e,n);break e;case 11:t=Bi(null,t,a,e,n);break e;case 14:t=ji(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),jo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=_o(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Vo();t=t.child}return t;case 5:return Io(t),null===e&&Ho(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,qr(r,a)?l=null:null!==o&&qr(r,o)&&(t.flags|=16),$i(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xi(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=To(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Qa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),ji(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),ko(t,r,a,n),Gi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Te=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));Q(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Pe=ws,Oe=function(e,t,n,r,a){var o=Pl;Pl|=4;try{return Ga(98,e.bind(null,t,n,r,a))}finally{0===(Pl=o)&&(Vl(),Va())}},De=function(){0==(49&Pl)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Va()}(),Is())},Ie=function(e,t){var n=Pl;Pl|=2;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}};var lu={Events:[na,ra,aa,Re,Ne,Is,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Ea=cu.inject(uu),Sa=cu}catch(he){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},T=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},_=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},L=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},R=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],D=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+D(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+D(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+D(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},j=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,y),o=N(t,v),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return B(g.META,a.priority,r)+" "+B(g.LINK,o.priority,r)+" "+B(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:B(g.BASE,t,r),bodyAttributes:B("bodyAttributes",n,r),htmlAttributes:B("htmlAttributes",a,r),link:B(g.LINK,c,r),meta:B(g.META,d,r),noscript:B(g.NOSCRIPT,o,r),script:B(g.SCRIPT,f,r),style:B(g.STYLE,i,r),title:B(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),V(g.TITLE,t)}(c,d);var f={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:_(["href"],e),bodyAttributes:T("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:T("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:T("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){W(t,(function(){Y=null}))})):(W(t),Y=null)):j&&(a=j(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Q=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,Q),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case a:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6550),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(6550),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},m=o.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==m&&t||n,o.createElement("a",c)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||v:h.innerRef=v,o.createElement(a,h)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,x=e.to,C=e.innerRef,T=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,_=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=_?(0,r.LX)(n.pathname,{path:_,exact:h,sensitive:k,strict:E}):null,L=!!(y?y(A,n):A),R="function"==typeof m?m(L):m,N="function"==typeof S?S(L):S;L&&(R=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(R,c),N=(0,l.Z)({},N,p));var P=(0,l.Z)({"aria-current":L&&a||null,className:R,style:N,to:i},T);return v!==b?P.ref=t||C:P.innerRef=C,o.createElement(g,P)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>S,TH:()=>O,k6:()=>P,rs:()=>R,s6:()=>b});var r=n(5068),a=n(7294),o=n(5697),i=n.n(o),l=n(9318),s=n(8776),u=n(7462),c=n(4779),d=n.n(c),f=(n(9864),n(3366)),p=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=h();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,E=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return E<k&&(r[e]=o,E++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function C(e){return"/"===e.charAt(0)?e:"/"+e}function T(e,t){if(!e)return t;var n=C(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function _(e){return"string"==typeof e?e:(0,l.Ep)(e)}function A(e){return function(){(0,s.Z)(!1)}}function L(){}a.Component;var R=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var N=a.useContext;function P(){return N(v)}function O(){return N(b).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var C=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function _(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+T(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(C,"$&/")+"/"),_(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(C,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+T(l=e[u],u);s+=_(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=_(l=l.value,t,n,c=r+T(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return _(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var R={current:null};function N(){var e=R.current;if(null===e)throw Error(p(321));return e}var P={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=P,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<C(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>C(i,n))void 0!==s&&0>C(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>C(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function C(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var T=[],_=[],A=1,L=null,R=3,N=!1,P=!1,O=!1;function D(e){for(var t=S(_);null!==t;){if(null===t.callback)x(_);else{if(!(t.startTime<=e))break;x(_),t.sortIndex=t.expirationTime,E(T,t)}t=S(_)}}function I(e){if(O=!1,D(e),!P)if(null!==S(T))P=!0,n(M);else{var t=S(_);null!==t&&r(I,t.startTime-e)}}function M(e,n){P=!1,O&&(O=!1,a()),N=!0;var o=R;try{for(D(n),L=S(T);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,R=L.priorityLevel;var l=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===S(T)&&x(T),D(n)}else x(T);L=S(T)}if(null!==L)var s=!0;else{var u=S(_);null!==u&&r(I,u.startTime-n),s=!1}return s}finally{L=null,R=o,N=!1}}var F=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){P||N||(P=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return R},t.unstable_getFirstCallbackNode=function(){return S(T)},t.unstable_next=function(e){switch(R){case 1:case 2:case 3:var t=3;break;default:t=R}var n=R;R=t;try{return e()}finally{R=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=R;R=e;try{return t()}finally{R=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(_,e),null===S(T)&&e===S(_)&&(O?a():O=!0,r(I,i-l))):(e.sortIndex=s,E(T,e),P||N||(P=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=R;return function(){var n=R;R=t;try{return e.apply(this,arguments)}finally{R=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};void 0!==r.useSyncExternalStore&&r.useSyncExternalStore},1688:(e,t,n)=>{"use strict";n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"tra86: The Asembly Tracer Toolchain",tagline:"Website Under Construction | ETA 05/25/2023",favicon:"img/favicon.ico",url:"https://tra86.skushagra.com",baseUrl:"/",organizationName:"suobset",projectName:"iCons4",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"C:\\Users\\kushd\\Documents\\RUST-Tracing-Tool\\iCons4-backend\\sidebars.js"},blog:!1,theme:{customCss:"C:\\Users\\kushd\\Documents\\RUST-Tracing-Tool\\iCons4-backend\\src\\css\\custom.css"}}]],themeConfig:{image:"img/docusaurus-social-card.jpg",navbar:{title:"RUST & C++ Metrics",logo:{alt:"My Site Logo",src:"img/logo.svg"},items:[{type:"docSidebar",sidebarId:"tutorialSidebar",position:"left",label:"Research"},{to:"/communicationDesign",label:"About The Project",position:"left"},{to:"https://github.com/cics-syslab/RUST-Tracing-Tool",label:"Repository",position:"left"},{to:"https://skushagra.com",label:"Personal Website",position:"right"},{href:"https://github.com/suobset/iCons",label:"Source",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Docs",items:[{label:"Research",to:"/docs/intro"}]},{title:"Technologies",items:[{label:"GNU GCC",href:"https://stackoverflow.com/questions/tagged/docusaurus"},{label:"RUST",href:"https://google.com"}]},{title:"More",items:[{label:"Blog",to:"/blog"},{label:"GitHub",href:"https://github.com/suobset"}]}],copyright:"Copyright \xa9 2024 Kush S."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/communicationDesign-2c5":{"__comp":"1f391b9e","__context":{"plugin":"9cdb66f6"},"content":"0e5d29c6"},"/markdown-page-47e":{"__comp":"1f391b9e","__context":{"plugin":"9cdb66f6"},"content":"393be207"},"/massurc-9e5":{"__comp":"1f391b9e","__context":{"plugin":"9cdb66f6"},"content":"b3ba932c"},"/docs-11d":{"__comp":"1be78505","__context":{"plugin":"a649dc75"},"versionMetadata":"935f2afb"},"/docs/category/definitions-e81":{"__comp":"14eb3368","categoryGeneratedIndex":"22ee8902"},"/docs/category/thesis-milestones-0ca":{"__comp":"14eb3368","categoryGeneratedIndex":"5a8ad210"},"/docs/definitions/cpp-335":{"__comp":"17896441","content":"4f2c5a9d"},"/docs/definitions/llvm-39c":{"__comp":"17896441","content":"b2e03007"},"/docs/definitions/rust-f1b":{"__comp":"17896441","content":"7fbde740"},"/docs/definitions/x86-389":{"__comp":"17896441","content":"afc412d1"},"/docs/definitions/x86asm-b4d":{"__comp":"17896441","content":"302ee866"},"/docs/intro-aed":{"__comp":"17896441","content":"0e384e19"},"/docs/thesis/pt2init-d9f":{"__comp":"17896441","content":"c1ca8d8d"},"/docs/thesis/sem1-c19":{"__comp":"17896441","content":"81cbbac2"},"/docs/thesis/syslab-1f3":{"__comp":"17896441","content":"d93564cb"},"/-4c9":{"__comp":"c4f5d8e4","__context":{"plugin":"9cdb66f6"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=7221,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/main.ee8df3a2.js.LICENSE.txt b/assets/js/main.3c3a3d96.js.LICENSE.txt similarity index 100% rename from assets/js/main.ee8df3a2.js.LICENSE.txt rename to assets/js/main.3c3a3d96.js.LICENSE.txt diff --git a/assets/js/main.ee8df3a2.js b/assets/js/main.ee8df3a2.js deleted file mode 100644 index 24a8c42a..00000000 --- a/assets/js/main.ee8df3a2.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.ee8df3a2.js.LICENSE.txt */ -(self.webpackChunki_cons_4=self.webpackChunki_cons_4||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"0e384e19":[()=>n.e(671).then(n.bind(n,9881)),"@site/docs/intro.md",9881],"0e5d29c6":[()=>n.e(686).then(n.bind(n,1961)),"@site/src/pages/communicationDesign.md",1961],"14eb3368":[()=>Promise.all([n.e(532),n.e(817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],17896441:[()=>Promise.all([n.e(532),n.e(455),n.e(918)]).then(n.bind(n,230)),"@theme/DocItem",230],"1be78505":[()=>Promise.all([n.e(532),n.e(514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1f391b9e":[()=>Promise.all([n.e(532),n.e(455),n.e(85)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"22ee8902":[()=>n.e(580).then(n.t.bind(n,1309,19)),"~docs/default/category-docs-tutorialsidebar-category-definitions-b17.json",1309],"302ee866":[()=>n.e(959).then(n.bind(n,5719)),"@site/docs/definitions/x86asm.md",5719],"393be207":[()=>n.e(414).then(n.bind(n,9286)),"@site/src/pages/markdown-page.md",9286],"3cc330c4":[()=>n.e(7).then(n.t.bind(n,5745,19)),"/Users/suobset/Documents/RUST-Tracing-Tool/iCons4-backend/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"4da50ff2":[()=>n.e(366).then(n.t.bind(n,3769,19)),"/Users/suobset/Documents/RUST-Tracing-Tool/iCons4-backend/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"4f2c5a9d":[()=>n.e(822).then(n.bind(n,5798)),"@site/docs/definitions/cpp.md",5798],"5a8ad210":[()=>n.e(258).then(n.t.bind(n,5035,19)),"~docs/default/category-docs-tutorialsidebar-category-thesis-milestones-d57.json",5035],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"7fbde740":[()=>n.e(545).then(n.bind(n,7844)),"@site/docs/definitions/rust.md",7844],"81cbbac2":[()=>n.e(789).then(n.bind(n,2279)),"@site/docs/thesis/sem1.md",2279],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],afc412d1:[()=>n.e(694).then(n.bind(n,2965)),"@site/docs/definitions/x86.md",2965],b2e03007:[()=>n.e(137).then(n.bind(n,4196)),"@site/docs/definitions/llvm.md",4196],b3ba932c:[()=>n.e(507).then(n.bind(n,9530)),"@site/src/pages/massurc.md",9530],c1ca8d8d:[()=>n.e(916).then(n.bind(n,9485)),"@site/docs/thesis/pt2init.md",9485],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(195)]).then(n.bind(n,3261)),"@site/src/pages/index.js",3261],d93564cb:[()=>n.e(741).then(n.bind(n,9009)),"@site/docs/thesis/syslab.md",9009]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var c=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:f,modules:p,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const p=[{path:"/communicationDesign",component:f("/communicationDesign","e43"),exact:!0},{path:"/markdown-page",component:f("/markdown-page","a69"),exact:!0},{path:"/massurc",component:f("/massurc","8af"),exact:!0},{path:"/docs",component:f("/docs","af5"),routes:[{path:"/docs/category/definitions",component:f("/docs/category/definitions","e81"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/category/thesis-milestones",component:f("/docs/category/thesis-milestones","0ca"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/cpp",component:f("/docs/definitions/cpp","335"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/llvm",component:f("/docs/definitions/llvm","39c"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/rust",component:f("/docs/definitions/rust","f1b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/x86",component:f("/docs/definitions/x86","389"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/definitions/x86asm",component:f("/docs/definitions/x86asm","b4d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro",component:f("/docs/intro","aed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/thesis/pt2init",component:f("/docs/thesis/pt2init","d9f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/thesis/sem1",component:f("/docs/thesis/sem1","c19"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/thesis/syslab",component:f("/docs/thesis/syslab","1f3"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:f("/","041"),exact:!0},{path:"*",component:f("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(7462),m=n(5742),h=n(2263),g=n(4996),v=n(6668),b=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(8780),S=n(197);function x(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,c.TH)();return e+(0,E.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function T(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,v.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(b.d,{image:n}),r.createElement(C,null),r.createElement(x,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const _=new Map;function A(e){if(_.has(e.pathname))return{...e,pathname:_.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return _.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return _.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),R=n(8940);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];const a=s.map((t=>{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:a}),N("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const I=D,M="__docusaurus-base-url-issue-banner-container",F="__docusaurus-base-url-issue-banner",B="__docusaurus-base-url-issue-banner-suggestion-container",j="__DOCUSAURUS_INSERT_BASEURL_BANNER";function z(e){return`\nwindow['${j}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${j}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n<div id="${F}" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">${e}</span> ${"/"===e?" (default value)":""}</p>\n <p>We suggest trying baseUrl = <span id="${B}" style="font-weight: bold; color: green;"></span></p>\n</div>\n`}(e)).replace(/</g,"\\<")};\n bannerContainer.innerHTML = bannerHtml;\n var suggestionContainer = document.getElementById('${B}');\n var actualHomePagePath = window.location.pathname;\n var suggestedBaseUrl = actualHomePagePath.substr(-1) === '/'\n ? actualHomePagePath\n : actualHomePagePath + '/';\n suggestionContainer.innerHTML = suggestedBaseUrl;\n}\n`}function U(){const{siteConfig:{baseUrl:e}}=(0,h.Z)();return(0,r.useLayoutEffect)((()=>{window[j]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,z(e))),r.createElement("div",{id:M}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(U,null):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(4763),G=n(2389);function Z(){const e=(0,G.Z)();return r.createElement(m.Z,null,r.createElement("html",{"data-has-hydrated":e}))}function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.Z,null,r.createElement(R.M,null,r.createElement(L.t,null,r.createElement(f,null,r.createElement(q,null),r.createElement(T,null),r.createElement($,null),r.createElement(I,{location:A(t)},e)),r.createElement(Z,null))))}var W=n(6887);const Y=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(9670);const Q=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"definitions/cpp","path":"/docs/definitions/cpp","sidebar":"tutorialSidebar"},{"id":"definitions/llvm","path":"/docs/definitions/llvm","sidebar":"tutorialSidebar"},{"id":"definitions/rust","path":"/docs/definitions/rust","sidebar":"tutorialSidebar"},{"id":"definitions/x86","path":"/docs/definitions/x86","sidebar":"tutorialSidebar"},{"id":"definitions/x86asm","path":"/docs/definitions/x86asm","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"},{"id":"thesis/pt2init","path":"/docs/thesis/pt2init","sidebar":"tutorialSidebar"},{"id":"thesis/sem1","path":"/docs/thesis/sem1","sidebar":"tutorialSidebar"},{"id":"thesis/syslab","path":"/docs/thesis/syslab","sidebar":"tutorialSidebar"},{"id":"/category/definitions","path":"/docs/category/definitions","sidebar":"tutorialSidebar"},{"id":"/category/thesis-milestones","path":"/docs/category/thesis-milestones","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/intro","label":"intro"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(7961);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(u,{error:t}))}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(f,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:v=!0,...b}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),E=(0,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const x=f||p;const C=(0,s.Z)(x),T=x?.replace("pathname://","");let _=void 0!==T?(A=T,v&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;_&&C&&(_=(0,i.applyTrailingSlash)(_,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),R=n?o.OL:o.rU,N=u.Z.canUseIntersectionObserver,P=(0,a.useRef)(),O=()=>{L.current||null==_||(window.docusaurus.preload(_),L.current=!0)};(0,a.useEffect)((()=>(!N&&C&&null!=_&&window.docusaurus.prefetch(_),()=>{N&&P.current&&P.current.disconnect()})),[P,_,N,C]);const D=_?.startsWith("#")??!1,I=!_||!C||D;return I||g||E.collectLink(_),I?a.createElement("a",(0,r.Z)({ref:S,href:_},x&&!C&&{target:"_blank",rel:"noopener noreferrer"},b)):a.createElement(R,(0,r.Z)({},b,{onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,N&&e&&C&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=_&&window.docusaurus.prefetch(_))}))})),P.current.observe(e))},to:_},n&&{isActive:h,activeClassName:m}))}const p=a.forwardRef(f)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal <Translate> children",t),new Error("The Docusaurus <Translate> component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>f,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>p});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function p(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>dt});var r=n(7294),a=n(6010),o=n(4763),i=n(1944),l=n(7462),s=n(6550),u=n(5999),c=n(5936);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const m=(0,u.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){const t=e.children??m,{containerRef:n,onClick:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5281),v=n(9727);const b={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:b.skipToContent})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const C={content:"content_knG7"};function T(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(C.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const _={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:_.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:_.announcementBarPlaceholder}),r.createElement(T,{className:_.announcementBarContent}),i&&r.createElement(x,{onClick:n,className:_.announcementBarClose}))}var L=n(2961),R=n(2466);var N=n(902),P=n(3102);const O=r.createContext(null);function D(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,N.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(O.Provider,{value:n},t)}function I(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(O);if(!e)throw new N.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var B=n(2949),j=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,j.Z)(),s=(0,u.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,B.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(1327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,u.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(Y,null))}var Q=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const f=(0,X.Z)(a),p=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(Q.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(6043),le=n(8596),se=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(xe,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:f,toggleCollapsed:p,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),p()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(xe,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function fe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var pe=n(4711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const he="iconLanguage_nlXk";var ge=n(1875);const ve={searchBox:"searchBox_ZlJk"};function be(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,ve.searchBox)},t)}var ye=n(143),we=n(2802);var ke=n(373);const Ee=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),f=(0,pe.l)(),{search:p,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${m}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(fe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(be,{className:n},r.createElement(ge.Z,null))},dropdown:fe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,we.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,ye.Iw)(n),m=(0,ye.gB)(n),{savePreferredVersionName:h}=(0,ke.J)(n),g=[...o,...m.map((e=>{const t=p.alternateDocVersions[e.name]??Ee(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...i],v=(0,we.lO)(n)[0],b=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):v.label,y=t&&g.length>1?void 0:Ee(v).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:b,to:y,isActive:a?()=>!1:void 0})):r.createElement(fe,(0,l.Z)({},c,{mobile:t,label:b,to:y,items:g,isActive:a?()=>!1:void 0}))}};function xe(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Se[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Ce(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(xe,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Te(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function _e(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Te,{onClick:()=>t.hide()}),t.content)}function Ae(){const e=(0,L.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(F,{header:r.createElement(K,null),primaryMenu:r.createElement(Ce,null),secondaryMenu:r.createElement(_e,null)}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Re(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ne(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i<o.current)return void n(!0);if(a.current)return void(a.current=!1);const l=r?.scrollY,s=document.documentElement.scrollHeight-o.current,u=window.innerHeight;l&&i>=l?n(!1):i+u<s&&n(!0)})),(0,c.S)((t=>{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!s&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Re,{onClick:i.toggle}),r.createElement(Ae,null))}var Pe=n(8780);const Oe={errorBoundaryError:"errorBoundaryError_a6uf"};function De(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Ie(e){let{error:t}=e;const n=(0,Pe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Oe.errorBoundaryError},n)}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Fe="right";function Be(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function je(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Be,null))}const ze={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Me,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},r.createElement(xe,e)))))}function $e(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function qe(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??Fe)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement($e,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(je,null),r.createElement(W,null),r.createElement(Ue,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ue,{items:a}),r.createElement(Z,{className:ze.colorModeToggle}),!o&&r.createElement(be,null,r.createElement(ge.Z,null)))})}function He(){return r.createElement(Ne,null,r.createElement(qe,null))}function Ge(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ze(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(Ge,{item:t}))}function Ve(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ze,{key:t,item:e})))))}function We(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ve,{key:t,column:e}))))}function Ye(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Ke(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Ge,{item:t})}function Qe(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Ke,{item:e}),t.length!==n+1&&r.createElement(Ye,null))))))}function Xe(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(We,{columns:t}):r.createElement(Qe,{links:t})}var Je=n(941);const et={footerLogoLink:"footerLogoLink_BH7S"};function tt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Je.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function nt(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:et.footerLogoLink,target:t.target},r.createElement(tt,{logo:t})):r.createElement(tt,{logo:t})}function rt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function ot(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(at,{style:o,links:n&&n.length>0&&r.createElement(Xe,{links:n}),logo:a&&r.createElement(nt,{logo:a}),copyright:t&&r.createElement(rt,{copyright:t})})}const it=r.memo(ot),lt=(0,N.Qc)([B.S,k.pl,R.OC,ke.L5,i.VC,function(e){let{children:t}=e;return r.createElement(P.n2,null,r.createElement(L.M,null,r.createElement(D,null,t)))}]);function st(e){let{children:t}=e;return r.createElement(lt,null,t)}function ut(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(De,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Ie,{error:t})))))}const ct={mainWrapper:"mainWrapper_z2l0"};function dt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,v.t)(),r.createElement(st,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(He,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,ct.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(ut,e)},t)),!n&&r.createElement(it,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},p,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(6010),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},f)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function p(e){if(!o.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>p});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},f=e=>e===d.dark?d.dark:d.light,p=e=>a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{c.set(f(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(p(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>b,L5:()=>g});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const p=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(p.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(p);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function b(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),a=n(3102),o=n(7524),i=n(6550),l=(n(1688),n(902));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function f(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function p(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{MN:()=>C,Wl:()=>m,_F:()=>b,cE:()=>f,jA:()=>h,xz:()=>p,hI:()=>x,lO:()=>k,vY:()=>S,oz:()=>E,s1:()=>w});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(4477),u=n(1116);function c(e){return Array.from(new Set(e))}var d=n(8596);const f=!!i._r;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=m(t);if(e)return e}}}function h(){const{pathname:e}=(0,a.TH)(),t=(0,u.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const g=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),v=(e,t)=>e.some((e=>b(e,t)));function b(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||v(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>c([t,n,a].filter(Boolean))),[t,n,a])}function E(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${c(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function x(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}function C(e){return e.filter((e=>"category"!==e.type||!!m(e)))}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>c,VC:()=>p});var r=n(7294),a=n(6010),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?<name>\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&a<e)&&(t=requestAnimationFrame(r),window.scrollTo(0,Math.floor(.85*(a-e))+e))}(),()=>t&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=o(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),a({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),a({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},6010:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(n=r(e[t]))&&(a&&(a+=" "),a+=n);else for(t in e)e[t]&&(a&&(a+=" "),a+=t);return a}n.d(t,{Z:()=>a});const a=function(){for(var e,t,n=0,a="";n<arguments.length;)(e=arguments[n++])&&(t=r(e))&&(a&&(a+=" "),a+=t);return a}},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>T,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r<a;n+=1,r+=1)e[n]=e[r];e.pop()}const i=function(e,t){void 0===t&&(t="");var n,r=e&&e.split("/")||[],i=t&&t.split("/")||[],l=e&&a(e),s=t&&a(t),u=l||s;if(e&&a(e)?i=r:r.length&&(i.pop(),i=i.concat(r)),!i.length)return"/";if(i.length){var c=i[i.length-1];n="."===c||".."===c||""===c}else n=!1;for(var d=0,f=i.length;f>=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];t.forEach((function(e){return e.apply(void 0,n)}))}}}var h=!("undefined"==typeof window||!window.document||!window.document.createElement);function g(e,t){t(window.confirm(e))}var v="popstate",b="hashchange";function y(){try{return window.history.state||{}}catch(e){return{}}}function w(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t,n=window.history,a=(-1===(t=window.navigator.userAgent).indexOf("Android 2.")&&-1===t.indexOf("Android 4.0")||-1===t.indexOf("Mobile Safari")||-1!==t.indexOf("Chrome")||-1!==t.indexOf("Windows Phone"))&&window.history&&"pushState"in window.history,o=!(-1===window.navigator.userAgent.indexOf("Trident")),i=e,u=i.forceRefresh,w=void 0!==u&&u,k=i.getUserConfirmation,E=void 0===k?g:k,S=i.keyLength,x=void 0===S?6:S,C=e.basename?d(s(e.basename)):"";function T(e){var t=e||{},n=t.key,r=t.state,a=window.location,o=a.pathname+a.search+a.hash;return C&&(o=c(o,C)),p(o,r,n)}function _(){return Math.random().toString(36).substr(2,x)}var A=m();function L(e){(0,r.Z)(U,e),U.length=n.length,A.notifyListeners(U.location,U.action)}function R(e){(function(e){return void 0===e.state&&-1===navigator.userAgent.indexOf("CriOS")})(e)||O(T(e.state))}function N(){O(T(y()))}var P=!1;function O(e){if(P)P=!1,L();else{A.confirmTransitionTo(e,"POP",E,(function(t){t?L({action:"POP",location:e}):function(e){var t=U.location,n=I.indexOf(t.key);-1===n&&(n=0);var r=I.indexOf(e.key);-1===r&&(r=0);var a=n-r;a&&(P=!0,F(a))}(e)}))}}var D=T(y()),I=[D.key];function M(e){return C+f(e)}function F(e){n.go(e)}var B=0;function j(e){1===(B+=e)&&1===e?(window.addEventListener(v,R),o&&window.addEventListener(b,N)):0===B&&(window.removeEventListener(v,R),o&&window.removeEventListener(b,N))}var z=!1;var U={length:n.length,action:"POP",location:D,createHref:M,push:function(e,t){var r="PUSH",o=p(e,t,_(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.pushState({key:i,state:l},null,t),w)window.location.href=t;else{var s=I.indexOf(U.location.key),u=I.slice(0,s+1);u.push(o.key),I=u,L({action:r,location:o})}else window.location.href=t}}))},replace:function(e,t){var r="REPLACE",o=p(e,t,_(),U.location);A.confirmTransitionTo(o,r,E,(function(e){if(e){var t=M(o),i=o.key,l=o.state;if(a)if(n.replaceState({key:i,state:l},null,t),w)window.location.replace(t);else{var s=I.indexOf(U.location.key);-1!==s&&(I[s]=o.key),L({action:r,location:o})}else window.location.replace(t)}}))},go:F,goBack:function(){F(-1)},goForward:function(){F(1)},block:function(e){void 0===e&&(e=!1);var t=A.setPrompt(e);return z||(j(1),z=!0),function(){return z&&(z=!1,j(-1)),t()}},listen:function(e){var t=A.appendListener(e);return j(1),function(){j(-1),t()}}};return U}var k="hashchange",E={hashbang:{encodePath:function(e){return"!"===e.charAt(0)?e:"!/"+u(e)},decodePath:function(e){return"!"===e.charAt(0)?e.substr(1):e}},noslash:{encodePath:u,decodePath:s},slash:{encodePath:s,decodePath:s}};function S(e){var t=e.indexOf("#");return-1===t?e:e.slice(0,t)}function x(){var e=window.location.href,t=e.indexOf("#");return-1===t?"":e.substring(t+1)}function C(e){window.location.replace(S(window.location.href)+"#"+e)}function T(e){void 0===e&&(e={}),h||(0,l.Z)(!1);var t=window.history,n=(window.navigator.userAgent.indexOf("Firefox"),e),a=n.getUserConfirmation,o=void 0===a?g:a,i=n.hashType,u=void 0===i?"slash":i,v=e.basename?d(s(e.basename)):"",b=E[u],y=b.encodePath,w=b.decodePath;function T(){var e=w(x());return v&&(e=c(e,v)),p(e)}var _=m();function A(e){(0,r.Z)(z,e),z.length=t.length,_.notifyListeners(z.location,z.action)}var L=!1,R=null;function N(){var e,t,n=x(),r=y(n);if(n!==r)C(r);else{var a=T(),i=z.location;if(!L&&(t=a,(e=i).pathname===t.pathname&&e.search===t.search&&e.hash===t.hash))return;if(R===f(a))return;R=null,function(e){if(L)L=!1,A();else{var t="POP";_.confirmTransitionTo(e,t,o,(function(n){n?A({action:t,location:e}):function(e){var t=z.location,n=I.lastIndexOf(f(t));-1===n&&(n=0);var r=I.lastIndexOf(f(e));-1===r&&(r=0);var a=n-r;a&&(L=!0,M(a))}(e)}))}}(a)}}var P=x(),O=y(P);P!==O&&C(O);var D=T(),I=[f(D)];function M(e){t.go(e)}var F=0;function B(e){1===(F+=e)&&1===e?window.addEventListener(k,N):0===F&&window.removeEventListener(k,N)}var j=!1;var z={length:t.length,action:"POP",location:D,createHref:function(e){var t=document.querySelector("base"),n="";return t&&t.getAttribute("href")&&(n=S(window.location.href)),n+"#"+y(v+f(e))},push:function(e,t){var n="PUSH",r=p(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);if(x()!==a){R=t,function(e){window.location.hash=e}(a);var o=I.lastIndexOf(f(z.location)),i=I.slice(0,o+1);i.push(t),I=i,A({action:n,location:r})}else A()}}))},replace:function(e,t){var n="REPLACE",r=p(e,void 0,void 0,z.location);_.confirmTransitionTo(r,n,o,(function(e){if(e){var t=f(r),a=y(v+t);x()!==a&&(R=t,C(a));var o=I.indexOf(f(z.location));-1!==o&&(I[o]=t),A({action:n,location:r})}}))},go:M,goBack:function(){M(-1)},goForward:function(){M(1)},block:function(e){void 0===e&&(e=!1);var t=_.setPrompt(e);return j||(B(1),j=!0),function(){return j&&(j=!1,B(-1)),t()}},listen:function(e){var t=_.appendListener(e);return B(1),function(){B(-1),t()}}};return z}function _(e,t,n){return Math.min(Math.max(e,t),n)}function A(e){void 0===e&&(e={});var t=e,n=t.getUserConfirmation,a=t.initialEntries,o=void 0===a?["/"]:a,i=t.initialIndex,l=void 0===i?0:i,s=t.keyLength,u=void 0===s?6:s,c=m();function d(e){(0,r.Z)(w,e),w.length=w.entries.length,c.notifyListeners(w.location,w.action)}function h(){return Math.random().toString(36).substr(2,u)}var g=_(l,0,o.length-1),v=o.map((function(e){return p(e,void 0,"string"==typeof e?h():e.key||h())})),b=f;function y(e){var t=_(w.index+e,0,w.entries.length-1),r=w.entries[t];c.confirmTransitionTo(r,"POP",n,(function(e){e?d({action:"POP",location:r,index:t}):d()}))}var w={length:v.length,action:"POP",location:v[g],index:g,entries:v,createHref:b,push:function(e,t){var r="PUSH",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){if(e){var t=w.index+1,n=w.entries.slice(0);n.length>t?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t<w.entries.length},block:function(e){return void 0===e&&(e=!1),c.setPrompt(e)},listen:function(e){return c.appendListener(e)}};return w}},8679:(e,t,n)=>{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=p(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g<i.length;++g){var v=i[g];if(!(o[v]||r&&r[v]||h&&h[v]||l&&l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},1143:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'};function a(e,t,n){return e<t?t:e>n?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s<arguments.length;s++){for(var u in o=Object(arguments[s]))n.call(o,u)&&(l[u]=o[u]);if(t){i=t(o);for(var c=0;c<i.length;c++)r.call(o,i[c])&&(l[i[c]]=o[i[c]])}}return l}},4779:(e,t,n)=>{var r=n(5826);e.exports=p,e.exports.parse=o,e.exports.compile=function(e,t){return l(o(e,t),t)},e.exports.tokensToFunction=l,e.exports.tokensToRegExp=f;var a=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function o(e,t){for(var n,r=[],o=0,i=0,l="",c=t&&t.delimiter||"/";null!=(n=a.exec(e));){var d=n[0],f=n[1],p=n.index;if(l+=e.slice(i,p),i=p+d.length,f)l+=f[1];else{var m=e[i],h=n[2],g=n[3],v=n[4],b=n[5],y=n[6],w=n[7];l&&(r.push(l),l="");var k=null!=h&&null!=m&&m!==h,E="+"===y||"*"===y,S="?"===y||"*"===y,x=n[2]||c,C=v||b;r.push({name:g||o++,prefix:h||"",delimiter:x,optional:S,repeat:E,partial:k,asterisk:!!w,pattern:C?u(C):w?".*":"[^"+s(x)+"]+?"})}}return i<e.length&&(l+=e.substr(i)),l&&r.push(l),r}function i(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()}))}function l(e,t){for(var n=new Array(e.length),a=0;a<e.length;a++)"object"==typeof e[a]&&(n[a]=new RegExp("^(?:"+e[a].pattern+")$",d(t)));return function(t,a){for(var o="",l=t||{},s=(a||{}).pretty?i:encodeURIComponent,u=0;u<e.length;u++){var c=e[u];if("string"!=typeof c){var d,f=l[c.name];if(null==f){if(c.optional){c.partial&&(o+=c.prefix);continue}throw new TypeError('Expected "'+c.name+'" to be defined')}if(r(f)){if(!c.repeat)throw new TypeError('Expected "'+c.name+'" to not repeat, but received `'+JSON.stringify(f)+"`");if(0===f.length){if(c.optional)continue;throw new TypeError('Expected "'+c.name+'" to not be empty')}for(var p=0;p<f.length;p++){if(d=s(f[p]),!n[u].test(d))throw new TypeError('Expected all "'+c.name+'" to match "'+c.pattern+'", but received `'+JSON.stringify(d)+"`");o+=(0===p?c.prefix:c.delimiter)+d}}else{if(d=c.asterisk?encodeURI(f).replace(/[?#]/g,(function(e){return"%"+e.charCodeAt(0).toString(16).toUpperCase()})):s(f),!n[u].test(d))throw new TypeError('Expected "'+c.name+'" to match "'+c.pattern+'", but received "'+d+'"');o+=c.prefix+d}}else o+=c}return o}}function s(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}function u(e){return e.replace(/([=!:$\/()])/g,"\\$1")}function c(e,t){return e.keys=t,e}function d(e){return e&&e.sensitive?"":"i"}function f(e,t,n){r(t)||(n=t||n,t=[]);for(var a=(n=n||{}).strict,o=!1!==n.end,i="",l=0;l<e.length;l++){var u=e[l];if("string"==typeof u)i+=s(u);else{var f=s(u.prefix),p="(?:"+u.pattern+")";t.push(u),u.repeat&&(p+="(?:"+f+p+")*"),i+=p=u.optional?u.partial?f+"("+p+")?":"(?:"+f+"("+p+"))?":f+"("+p+")"}}var m=s(n.delimiter||"/"),h=i.slice(-m.length)===m;return a||(i=(h?i.slice(0,-m.length):i)+"(?:"+m+"(?=$))?"),i+=o?"$":a&&h?"":"(?="+m+"|$)",c(new RegExp("^"+i,d(n)),t)}function p(e,t,n){return r(t)||(n=t||n,t=[]),n=n||{},e instanceof RegExp?function(e,t){var n=e.source.match(/\((?!\?)/g);if(n)for(var r=0;r<n.length;r++)t.push({name:r,prefix:null,delimiter:null,optional:!1,repeat:!1,partial:!1,asterisk:!1,pattern:null});return c(e,t)}(e,t):r(e)?function(e,t,n){for(var r=[],a=0;a<e.length;a++)r.push(p(e[a],t,n).source);return c(new RegExp("(?:"+r.join("|")+")",d(n)),t)}(e,t,n):function(e,t,n){return f(o(e,n),t,n)}(e,t,n)}},7410:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function e(t,n){var a,o;switch(n=n||{},r.util.type(t)){case"Object":if(o=r.util.objId(t),n[o])return n[o];for(var i in a={},n[o]=a,t)t.hasOwnProperty(i)&&(a[i]=e(t[i],n));return a;case"Array":return o=r.util.objId(t),n[o]?n[o]:(a=[],n[o]=a,t.forEach((function(t,r){a[r]=e(t,n)})),a);default:return t}},getLanguage:function(t){for(;t;){var n=e.exec(t.className);if(n)return n[1].toLowerCase();t=t.parentElement}return"none"},setLanguage:function(t,n){t.className=t.className.replace(RegExp(e,"gi"),""),t.classList.add("language-"+n)},isActive:function(e,t,n){for(var r="no-"+t;e;){var a=e.classList;if(a.contains(t))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!n}},languages:{plain:n,plaintext:n,text:n,txt:n,extend:function(e,t){var n=r.util.clone(r.languages[e]);for(var a in t)n[a]=t[a];return n},insertBefore:function(e,t,n,a){var o=(a=a||r.languages)[e],i={};for(var l in o)if(o.hasOwnProperty(l)){if(l==t)for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);n.hasOwnProperty(l)||(i[l]=o[l])}var u=a[e];return a[e]=i,r.languages.DFS(r.languages,(function(t,n){n===u&&t!=e&&(this[t]=i)})),i},DFS:function e(t,n,a,o){o=o||{};var i=r.util.objId;for(var l in t)if(t.hasOwnProperty(l)){n.call(t,l,t[l],a||l);var s=t[l],u=r.util.type(s);"Object"!==u||o[i(s)]?"Array"!==u||o[i(s)]||(o[i(s)]=!0,e(s,n,l,o)):(o[i(s)]=!0,e(s,n,null,o))}}},plugins:{},highlight:function(e,t,n){var o={code:e,grammar:t,language:n};return r.hooks.run("before-tokenize",o),o.tokens=r.tokenize(o.code,o.grammar),r.hooks.run("after-tokenize",o),a.stringify(r.util.encode(o.tokens),o.language)},tokenize:function(e,t){var n=t.rest;if(n){for(var r in n)t[r]=n[r];delete t.rest}var a=new l;return s(a,a.head,e),i(e,a,t,a.head,0),function(e){var t=[],n=e.head.next;for(;n!==e.tail;)t.push(n.value),n=n.next;return t}(a)},hooks:{all:{},add:function(e,t){var n=r.hooks.all;n[e]=n[e]||[],n[e].push(t)},run:function(e,t){var n=r.hooks.all[e];if(n&&n.length)for(var a,o=0;a=n[o++];)a(t)}},Token:a};function a(e,t,n,r){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length}function o(e,t,n,r){e.lastIndex=t;var a=e.exec(n);if(a&&r&&a[1]){var o=a[1].length;a.index+=o,a[0]=a[0].slice(o)}return a}function i(e,t,n,l,c,d){for(var f in n)if(n.hasOwnProperty(f)&&n[f]){var p=n[f];p=Array.isArray(p)?p:[p];for(var m=0;m<p.length;++m){if(d&&d.cause==f+","+m)return;var h=p[m],g=h.inside,v=!!h.lookbehind,b=!!h.greedy,y=h.alias;if(b&&!h.pattern.global){var w=h.pattern.toString().match(/[imsuy]*$/)[0];h.pattern=RegExp(h.pattern.source,w+"g")}for(var k=h.pattern||h,E=l.next,S=c;E!==t.tail&&!(d&&S>=d.reach);S+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var C,T=1;if(b){if(!(C=o(k,S,e,v))||C.index>=e.length)break;var _=C.index,A=C.index+C[0].length,L=S;for(L+=E.value.length;_>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(L<A||"string"==typeof R.value);R=R.next)T++,L+=R.value.length;T--,x=e.slice(S,L),C.index-=S}else if(!(C=o(k,0,x,v)))continue;_=C.index;var N=C[0],P=x.slice(0,_),O=x.slice(_+N.length),D=S+x.length;d&&D>d.reach&&(d.reach=D);var I=E.prev;if(P&&(I=s(t,I,P),S+=P.length),u(t,I,T),E=s(t,I,new a(f,g?r.tokenize(N,g):N,y,N)),O&&s(t,E,O),T>1){var M={cause:f+","+m,reach:D};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a<n&&r!==e.tail;a++)r=r.next;t.next=r,r.prev=t,e.length-=a}return a.stringify=function e(t,n){if("string"==typeof t)return t;if(Array.isArray(t)){var a="";return t.forEach((function(t){a+=e(t,n)})),a}var o={type:t.type,content:e(t.content,n),tag:"span",classes:["token",t.type],attributes:{},language:n},i=t.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(o.classes,i):o.classes.push(i)),r.hooks.run("wrap",o);var l="";for(var s in o.attributes)l+=" "+s+'="'+(o.attributes[s]||"").replace(/"/g,""")+'"';return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+l+">"+o.content+"</"+o.tag+">"},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\s\S])*?-->/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^<!\[CDATA\[|\]\]>$/i;var r={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i<a.length;i++)o[a[i]]=e.languages.bash[a[i]];e.languages.shell=e.languages.bash}(a),a.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-]<PLAIN>)(?:[ \t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(/<PLAIN>/g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<<prop>>[ \t]+)?)(?:<<value>>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<value>>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<<prop>>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<<prop>>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<<prop>>[ \t]+)?)<<key>>(?=\s*:\s)/.source.replace(/<<prop>>/g,(function(){return r})).replace(/<<key>>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(/<inner>/g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\b|\*\*(?:(?!\*)<inner>|\*(?:(?!\*)<inner>)+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\b|\*(?:(?!\*)<inner>|\*\*(?:(?!\*)<inner>)+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~)<inner>)+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\])<inner>)+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\])<inner>)+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n<r;n++){var a=t[n];if("code"===a.type){var o=a.content[1],i=a.content[3];if(o&&i&&"code-language"===o.type&&"code-block"===i.type&&"string"==typeof o.content){var l=o.content.replace(/\b#/g,"sharp").replace(/\b\+\+/g,"pp"),s="language-"+(l=(/[a-z][\w-]*/i.exec(l)||[""])[0].toLowerCase());i.alias?"string"==typeof i.alias?i.alias=[i.alias,s]:i.alias.push(s):i.alias=[s]}}else e(a.content)}}(e.tokens)})),e.hooks.add("wrap",(function(t){if("code-block"===t.type){for(var n="",r=0,a=t.classes.length;r<a;r++){var o=t.classes[r],u=/language-(.+)/.exec(o);if(u){n=u[1];break}}var c,d=e.languages[n];if(d)t.content=e.highlight((c=t.content,c.replace(i,"").replace(/&(\w{1,8}|#x?[\da-f]{1,8});/gi,(function(e,t){var n;if("#"===(t=t.toLowerCase())[0])return n="x"===t[1]?parseInt(t.slice(2),16):Number(t.slice(1)),s(n);var r=l[t];return r||e}))),d,n);else if(n&&"none"!==n&&e.plugins.autoloader){var f="md-"+(new Date).valueOf()+"-"+Math.floor(1e16*Math.random());t.attributes.id=f,e.plugins.autoloader.loadLanguages(n,(function(){var t=document.getElementById(f);t&&(t.innerHTML=e.highlight(t.textContent,e.languages[n],n))}))}}}));var i=RegExp(e.languages.markup.tag.pattern.source,"gi"),l={amp:"&",lt:"<",gt:">",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n<t.length;){var r=t[n++];if("keyword"===r.type&&"mutation"===r.content){var a=[];if(d(["definition-mutation","punctuation"])&&"("===c(1).content){n+=2;var o=f(/^\($/,/^\)$/);if(-1===o)continue;for(;n<o;n++){var i=c(0);"variable"===i.type&&(p(i,"variable-input"),a.push(i.content))}n=o+1}if(d(["punctuation","property-query"])&&"{"===c(0).content&&(n++,p(c(0),"property-mutation"),a.length>0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s<l;s++){var u=t[s];"variable"===u.type&&a.indexOf(u.content)>=0&&p(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n<e.length;n++){var r=c(n+t);if(!r||r.type!==e[n])return!1}return!0}function f(e,r){for(var a=1,o=n;o<t.length;o++){var i=t[o],l=i.content;if("punctuation"===i.type&&"string"==typeof l)if(e.test(l))a++;else if(r.test(l)&&0===--a)return o}return-1}function p(e,t){var n=e.alias;n?Array.isArray(n)||(e.alias=n=[n]):e.alias=n=[],n.push(t)}})),a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),f=Object.keys(c);return i=0,function e(t){for(var n=0;n<t.length;n++){if(i>=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),p=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r<a;r++){var o=n[r];if("string"!=typeof o){var i=o.content;if(Array.isArray(i))if("template-string"===o.type){var l=i[1];if(3===i.length&&"string"!=typeof l&&"embedded-code"===l.type){var s=f(l),u=l.alias,d=Array.isArray(u)?u[0]:u,p=e.languages[d];if(!p)continue;i[1]=c(s,p,d)}}else t(i);else"string"!=typeof i&&t([i])}}}(t.tokens)}))}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(/<ID>/g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?<ID>/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r<n.length;r++){var a=n[r],o=e.languages.javascript[a];"RegExp"===e.util.type(o)&&(o=e.languages.javascript[a]={pattern:o});var i=o.inside||{};o.inside=i,i["maybe-class-name"]=/^[A-Z][\s\S]*/}}(a),function(e){var t=e.util.clone(e.languages.javascript),n=/(?:\s|\/\/.*(?!.)|\/\*(?:[^*]|\*(?!\/))\*\/)/.source,r=/(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])*\})/.source,a=/(?:\{<S>*\.{3}(?:[^{}]|<BRACES>)*\})/.source;function o(e,t){return e=e.replace(/<S>/g,(function(){return n})).replace(/<BRACES>/g,(function(){return r})).replace(/<SPREAD>/g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:<S>+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(/<SPREAD>/.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=<BRACES>/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r<t.length;r++){var a=t[r],o=!1;if("string"!=typeof a&&("tag"===a.type&&a.content[0]&&"tag"===a.content[0].type?"</"===a.content[0].content[0].content?n.length>0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r<t.length-1&&("string"==typeof t[r+1]||"plain-text"===t[r+1].type)&&(s+=i(t[r+1]),t.splice(r+1,1)),r>0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s<l.length&&!(a>=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),v=f.substring(m+p.length),b=[];h&&b.push.apply(b,i([h])),b.push(g),v&&b.push.apply(b,i([v])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to <a href="https://webplatform.github.io/docs/">WebPlatform.org documentation</a>. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (<code>.comment</code> can become <code>.namespace--comment</code>) or replace them with your defined ones (like <code>.editor__comment</code>). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the <code>highlightAll</code> and <code>highlightAllUnder</code> methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}function r(e){var n={},r=[];function a(r,o){if(!(r in n)){o.push(r);var i=o.indexOf(r);if(i<o.length-1)throw new Error("Circular dependency: "+o.slice(i).join(" -> "));var l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var f,p=r(s),m=c;a(m);){for(var h in f={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(f[e]=!0)}))}for(var v in d)if(!(v in c))for(var b in p(v))if(b in c){f[v]=!0;break}for(var y in m=f)c[y]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var f=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(f,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var f in s)d.push(l[f]);return i(d)}(p,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}if(!r)throw Error(i(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+"Capture",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p=Object.prototype.hasOwnProperty,m={},h={};function g(e,t,n,r,a,o,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var v={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){v[e]=new g(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){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var a=v.hasOwnProperty(t)?v[t]:null;(null!==a?0===a.type:!r&&(2<t.length&&("o"===t[0]||"O"===t[0])&&("n"===t[1]||"N"===t[1])))||(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&&(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&&"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,a,r)&&(n=null),r||null===a?function(e){return!!p.call(h,e)||!p.call(m,e)&&(f.test(e)?h[e]=!0:(m[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):a.mustUseProperty?e[a.propertyName]=null===n?3!==a.type&&"":n:(t=a.attributeName,r=a.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(a=a.type)||4===a&&!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"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 t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var k=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,E=60103,S=60106,x=60107,C=60108,T=60114,_=60109,A=60110,L=60112,R=60113,N=60120,P=60115,O=60116,D=60121,I=60128,M=60129,F=60130,B=60131;if("function"==typeof Symbol&&Symbol.for){var j=Symbol.for;E=j("react.element"),S=j("react.portal"),x=j("react.fragment"),C=j("react.strict_mode"),T=j("react.profiler"),_=j("react.provider"),A=j("react.context"),L=j("react.forward_ref"),R=j("react.suspense"),N=j("react.suspense_list"),P=j("react.memo"),O=j("react.lazy"),D=j("react.block"),j("react.scope"),I=j("react.opaque.id"),M=j("react.debug_trace_mode"),F=j("react.offscreen"),B=j("react.legacy_hidden")}var z,U="function"==typeof Symbol&&Symbol.iterator;function $(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=U&&e[U]||e["@@iterator"])?e:null}function q(e){if(void 0===z)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);z=t&&t[1]||""}return"\n"+z+e}var H=!1;function G(e,t){if(!e||H)return"";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&"string"==typeof s.stack){for(var a=s.stack.split("\n"),o=r.stack.split("\n"),i=a.length-1,l=o.length-1;1<=i&&0<=l&&a[i]!==o[l];)l--;for(;1<=i&&0<=l;i--,l--)if(a[i]!==o[l]){if(1!==i||1!==l)do{if(i--,0>--l||a[i]!==o[l])return"\n"+a[i].replace(" at new "," at ")}while(1<=i&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?q(e):""}function Z(e){switch(e.tag){case 5:return q(e.type);case 16:return q("Lazy");case 13:return q("Suspense");case 19:return q("SuspenseList");case 0:case 2:case 15:return e=G(e.type,!1);case 11:return e=G(e.type.render,!1);case 22:return e=G(e.type._render,!1);case 1:return e=G(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case S:return"Portal";case T:return"Profiler";case C:return"StrictMode";case R:return"Suspense";case N:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case A:return(e.displayName||"Context")+".Consumer";case _:return(e._context.displayName||"Context")+".Provider";case L:var t=e.render;return t=t.displayName||t.name||"",e.displayName||(""!==t?"ForwardRef("+t+")":"ForwardRef");case P:return V(e.type);case D:return V(e._render);case O:t=e._payload,e=e._init;try{return V(e(t))}catch(n){}}return null}function W(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}function Y(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function K(e){e._valueTracker||(e._valueTracker=function(e){var t=Y(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var a=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(e){r=""+e,o.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function Q(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Y(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function X(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return a({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=W(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,"checked",t,!1)}function ne(e,t){te(e,t);var n=W(t.value),r=t.type;if(null!=n)"number"===r?(0===n&&""===e.value||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ae(e,t.type,n):t.hasOwnProperty("defaultValue")&&ae(e,t.type,W(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&&"reset"!==r||void 0!==t.value&&null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&&(e.name=n)}function ae(e,t,n){"number"===t&&X(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}function oe(e,t){return e=a({children:void 0},t),(t=function(e){var t="";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ie(e,t,n,r){if(e=e.options,t){t={};for(var a=0;a<n.length;a++)t["$"+n[a]]=!0;for(n=0;n<e.length;n++)a=t.hasOwnProperty("$"+e[n].value),e[n].selected!==a&&(e[n].selected=a),a&&r&&(e[n].defaultSelected=!0)}else{for(n=""+W(n),t=null,a=0;a<e.length;a++){if(e[a].value===n)return e[a].selected=!0,void(r&&(e[a].defaultSelected=!0));null!==t||e[a].disabled||(t=e[a])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(i(93));n=n[0]}t=n}null==t&&(t=""),n=t}e._wrapperState={initialValue:W(n)}}function ue(e,t){var n=W(t.value),r=W(t.defaultValue);null!=n&&((n=""+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=""+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&""!==t&&null!==t&&(e.value=t)}var de={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg"};function fe(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function pe(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?fe(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var me,he,ge=(he=function(e,t){if(e.namespaceURI!==de.svg||"innerHTML"in e)e.innerHTML=t;else{for((me=me||document.createElement("div")).innerHTML="<svg>"+t.valueOf().toString()+"</svg>",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return he(e,t)}))}:he);function ve(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var be={animationIterationCount:!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},ye=["Webkit","ms","Moz","O"];function we(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||be.hasOwnProperty(e)&&be[e]?(""+t).trim():t+"px"}function ke(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),a=we(n,t[n],r);"float"===n&&(n="cssFloat"),r?e.setProperty(n,a):e[n]=a}}Object.keys(be).forEach((function(e){ye.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),be[t]=be[e]}))}));var Ee=a({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 Se(e,t){if(t){if(Ee[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&"object"!=typeof t.style)throw Error(i(62))}}function xe(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;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}}function Ce(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Te=null,_e=null,Ae=null;function Le(e){if(e=na(e)){if("function"!=typeof Te)throw Error(i(280));var t=e.stateNode;t&&(t=aa(t),Te(e.stateNode,e.type,t))}}function Re(e){_e?Ae?Ae.push(e):Ae=[e]:_e=e}function Ne(){if(_e){var e=_e,t=Ae;if(Ae=_e=null,Le(e),t)for(e=0;e<t.length;e++)Le(t[e])}}function Pe(e,t){return e(t)}function Oe(e,t,n,r,a){return e(t,n,r,a)}function De(){}var Ie=Pe,Me=!1,Fe=!1;function Be(){null===_e&&null===Ae||(De(),Ne())}function je(e,t){var n=e.stateNode;if(null===n)return null;var r=aa(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&"function"!=typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(d)try{var Ue={};Object.defineProperty(Ue,"passive",{get:function(){ze=!0}}),window.addEventListener("test",Ue,Ue),window.removeEventListener("test",Ue,Ue)}catch(he){ze=!1}function $e(e,t,n,r,a,o,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var qe=!1,He=null,Ge=!1,Ze=null,Ve={onError:function(e){qe=!0,He=e}};function We(e,t,n,r,a,o,i,l,s){qe=!1,He=null,$e.apply(Ve,arguments)}function Ye(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Ke(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Qe(e){if(Ye(e)!==e)throw Error(i(188))}function Xe(e){if(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ye(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var a=n.return;if(null===a)break;var o=a.alternate;if(null===o){if(null!==(r=a.return)){n=r;continue}break}if(a.child===o.child){for(o=a.child;o;){if(o===n)return Qe(a),e;if(o===r)return Qe(a),t;o=o.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=o;else{for(var l=!1,s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l){for(s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e),!e)return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function Je(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var et,tt,nt,rt,at=!1,ot=[],it=null,lt=null,st=null,ut=new Map,ct=new Map,dt=[],ft="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function pt(e,t,n,r,a){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:a,targetContainers:[r]}}function mt(e,t){switch(e){case"focusin":case"focusout":it=null;break;case"dragenter":case"dragleave":lt=null;break;case"mouseover":case"mouseout":st=null;break;case"pointerover":case"pointerout":ut.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":ct.delete(t.pointerId)}}function ht(e,t,n,r,a,o){return null===e||e.nativeEvent!==o?(e=pt(t,n,r,a,o),null!==t&&(null!==(t=na(t))&&tt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==a&&-1===t.indexOf(a)&&t.push(a),e)}function gt(e){var t=ta(e.target);if(null!==t){var n=Ye(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Ke(n)))return e.blockedOn=t,void rt(e.lanePriority,(function(){o.unstable_runWithPriority(e.priority,(function(){nt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function vt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=na(n))&&tt(t),e.blockedOn=n,!1;t.shift()}return!0}function bt(e,t,n){vt(e)&&n.delete(t)}function yt(){for(at=!1;0<ot.length;){var e=ot[0];if(null!==e.blockedOn){null!==(e=na(e.blockedOn))&&et(e);break}for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&ot.shift()}null!==it&&vt(it)&&(it=null),null!==lt&&vt(lt)&&(lt=null),null!==st&&vt(st)&&(st=null),ut.forEach(bt),ct.forEach(bt)}function wt(e,t){e.blockedOn===t&&(e.blockedOn=null,at||(at=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,yt)))}function kt(e){function t(t){return wt(t,e)}if(0<ot.length){wt(ot[0],e);for(var n=1;n<ot.length;n++){var r=ot[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==it&&wt(it,e),null!==lt&&wt(lt,e),null!==st&&wt(st,e),ut.forEach(t),ct.forEach(t),n=0;n<dt.length;n++)(r=dt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<dt.length&&null===(n=dt[0]).blockedOn;)gt(n),null===n.blockedOn&&dt.shift()}function Et(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var St={animationend:Et("Animation","AnimationEnd"),animationiteration:Et("Animation","AnimationIteration"),animationstart:Et("Animation","AnimationStart"),transitionend:Et("Transition","TransitionEnd")},xt={},Ct={};function Tt(e){if(xt[e])return xt[e];if(!St[e])return e;var t,n=St[e];for(t in n)if(n.hasOwnProperty(t)&&t in Ct)return xt[e]=n[t];return e}d&&(Ct=document.createElement("div").style,"AnimationEvent"in window||(delete St.animationend.animation,delete St.animationiteration.animation,delete St.animationstart.animation),"TransitionEvent"in window||delete St.transitionend.transition);var _t=Tt("animationend"),At=Tt("animationiteration"),Lt=Tt("animationstart"),Rt=Tt("transitionend"),Nt=new Map,Pt=new Map,Ot=["abort","abort",_t,"animationEnd",At,"animationIteration",Lt,"animationStart","canplay","canPlay","canplaythrough","canPlayThrough","durationchange","durationChange","emptied","emptied","encrypted","encrypted","ended","ended","error","error","gotpointercapture","gotPointerCapture","load","load","loadeddata","loadedData","loadedmetadata","loadedMetadata","loadstart","loadStart","lostpointercapture","lostPointerCapture","playing","playing","progress","progress","seeking","seeking","stalled","stalled","suspend","suspend","timeupdate","timeUpdate",Rt,"transitionEnd","waiting","waiting"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],a=e[n+1];a="on"+(a[0].toUpperCase()+a.slice(1)),Pt.set(r,t),Nt.set(r,a),u(a,[r])}}(0,o.unstable_now)();var It=8;function Mt(e){if(0!=(1&e))return It=15,1;if(0!=(2&e))return It=14,2;if(0!=(4&e))return It=13,4;var t=24&e;return 0!==t?(It=12,t):0!=(32&e)?(It=11,32):0!==(t=192&e)?(It=10,t):0!=(256&e)?(It=9,256):0!==(t=3584&e)?(It=8,t):0!=(4096&e)?(It=7,4096):0!==(t=4186112&e)?(It=6,t):0!==(t=62914560&e)?(It=5,t):67108864&e?(It=4,67108864):0!=(134217728&e)?(It=3,134217728):0!==(t=805306368&e)?(It=2,t):0!=(1073741824&e)?(It=1,1073741824):(It=8,e)}function Ft(e,t){var n=e.pendingLanes;if(0===n)return It=0;var r=0,a=0,o=e.expiredLanes,i=e.suspendedLanes,l=e.pingedLanes;if(0!==o)r=o,a=It=15;else if(0!==(o=134217727&n)){var s=o&~i;0!==s?(r=Mt(s),a=It):0!==(l&=o)&&(r=Mt(l),a=It)}else 0!==(o=n&~i)?(r=Mt(o),a=It):0!==l&&(r=Mt(l),a=It);if(0===r)return 0;if(r=n&((0>(r=31-qt(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0==(t&i)){if(Mt(t),a<=It)return t;It=a}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)a=1<<(n=31-qt(t)),r|=e[n],t&=~a;return r}function Bt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function jt(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=zt(24&~t))?jt(10,t):e;case 10:return 0===(e=zt(192&~t))?jt(8,t):e;case 8:return 0===(e=zt(3584&~t))&&(0===(e=zt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=zt(805306368&~t))&&(t=268435456),t}throw Error(i(358,e))}function zt(e){return e&-e}function Ut(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function $t(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-qt(t)]=n}var qt=Math.clz32?Math.clz32:function(e){return 0===e?32:31-(Ht(e)/Gt|0)|0},Ht=Math.log,Gt=Math.LN2;var Zt=o.unstable_UserBlockingPriority,Vt=o.unstable_runWithPriority,Wt=!0;function Yt(e,t,n,r){Me||De();var a=Qt,o=Me;Me=!0;try{Oe(a,e,t,n,r)}finally{(Me=o)||Be()}}function Kt(e,t,n,r){Vt(Zt,Qt.bind(null,e,t,n,r))}function Qt(e,t,n,r){var a;if(Wt)if((a=0==(4&t))&&0<ot.length&&-1<ft.indexOf(e))e=pt(null,e,t,n,r),ot.push(e);else{var o=Xt(e,t,n,r);if(null===o)a&&mt(e,r);else{if(a){if(-1<ft.indexOf(e))return e=pt(o,e,t,n,r),void ot.push(e);if(function(e,t,n,r,a){switch(t){case"focusin":return it=ht(it,e,t,n,r,a),!0;case"dragenter":return lt=ht(lt,e,t,n,r,a),!0;case"mouseover":return st=ht(st,e,t,n,r,a),!0;case"pointerover":var o=a.pointerId;return ut.set(o,ht(ut.get(o)||null,e,t,n,r,a)),!0;case"gotpointercapture":return o=a.pointerId,ct.set(o,ht(ct.get(o)||null,e,t,n,r,a)),!0}return!1}(o,e,t,n,r))return;mt(e,r)}Dr(e,t,r,null,n)}}}function Xt(e,t,n,r){var a=Ce(r);if(null!==(a=ta(a))){var o=Ye(a);if(null===o)a=null;else{var i=o.tag;if(13===i){if(null!==(a=Ke(o)))return a;a=null}else if(3===i){if(o.stateNode.hydrate)return 3===o.tag?o.stateNode.containerInfo:null;a=null}else o!==a&&(a=null)}}return Dr(e,t,r,a,n),null}var Jt=null,en=null,tn=null;function nn(){if(tn)return tn;var e,t,n=en,r=n.length,a="value"in Jt?Jt.value:Jt.textContent,o=a.length;for(e=0;e<r&&n[e]===a[e];e++);var i=r-e;for(t=1;t<=i&&n[r-t]===a[o-t];t++);return tn=a.slice(e,1<t?1-t:void 0)}function rn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function on(){return!1}function ln(e){function t(t,n,r,a,o){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=a,this.target=o,this.currentTarget=null,e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(a):a[i]);return this.isDefaultPrevented=(null!=a.defaultPrevented?a.defaultPrevented:!1===a.returnValue)?an:on,this.isPropagationStopped=on,this}return a(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var sn,un,cn,dn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},fn=ln(dn),pn=a({},dn,{view:0,detail:0}),mn=ln(pn),hn=a({},pn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:_n,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==cn&&(cn&&"mousemove"===e.type?(sn=e.screenX-cn.screenX,un=e.screenY-cn.screenY):un=sn=0,cn=e),sn)},movementY:function(e){return"movementY"in e?e.movementY:un}}),gn=ln(hn),vn=ln(a({},hn,{dataTransfer:0})),bn=ln(a({},pn,{relatedTarget:0})),yn=ln(a({},dn,{animationName:0,elapsedTime:0,pseudoElement:0})),wn=a({},dn,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),kn=ln(wn),En=ln(a({},dn,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},xn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Cn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function Tn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=Cn[e])&&!!t[e]}function _n(){return Tn}var An=a({},pn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=rn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?xn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:_n,charCode:function(e){return"keypress"===e.type?rn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?rn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),Ln=ln(An),Rn=ln(a({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Nn=ln(a({},pn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:_n})),Pn=ln(a({},dn,{propertyName:0,elapsedTime:0,pseudoElement:0})),On=a({},hn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Dn=ln(On),In=[9,13,27,32],Mn=d&&"CompositionEvent"in window,Fn=null;d&&"documentMode"in document&&(Fn=document.documentMode);var Bn=d&&"TextEvent"in window&&!Fn,jn=d&&(!Mn||Fn&&8<Fn&&11>=Fn),zn=String.fromCharCode(32),Un=!1;function $n(e,t){switch(e){case"keyup":return-1!==In.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qn(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var Hn=!1;var Gn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Zn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!Gn[e.type]:"textarea"===t}function Vn(e,t,n,r){Re(r),0<(t=Mr(t,"onChange")).length&&(n=new fn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var Wn=null,Yn=null;function Kn(e){Ar(e,0)}function Qn(e){if(Q(ra(e)))return e}function Xn(e,t){if("change"===e)return t}var Jn=!1;if(d){var er;if(d){var tr="oninput"in document;if(!tr){var nr=document.createElement("div");nr.setAttribute("oninput","return;"),tr="function"==typeof nr.oninput}er=tr}else er=!1;Jn=er&&(!document.documentMode||9<document.documentMode)}function rr(){Wn&&(Wn.detachEvent("onpropertychange",ar),Yn=Wn=null)}function ar(e){if("value"===e.propertyName&&Qn(Yn)){var t=[];if(Vn(t,Yn,e,Ce(e)),e=Kn,Me)e(t);else{Me=!0;try{Pe(e,t)}finally{Me=!1,Be()}}}}function or(e,t,n){"focusin"===e?(rr(),Yn=n,(Wn=t).attachEvent("onpropertychange",ar)):"focusout"===e&&rr()}function ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Qn(Yn)}function lr(e,t){if("click"===e)return Qn(t)}function sr(e,t){if("input"===e||"change"===e)return Qn(t)}var ur="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},cr=Object.prototype.hasOwnProperty;function dr(e,t){if(ur(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!cr.call(t,n[r])||!ur(e[n[r]],t[n[r]]))return!1;return!0}function fr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function pr(e,t){var n,r=fr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=fr(r)}}function mr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?mr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function hr(){for(var e=window,t=X();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=X((e=t.contentWindow).document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var vr=d&&"documentMode"in document&&11>=document.documentMode,br=null,yr=null,wr=null,kr=!1;function Er(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;kr||null==br||br!==X(r)||("selectionStart"in(r=br)&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},wr&&dr(wr,r)||(wr=r,0<(r=Mr(yr,"onSelect")).length&&(t=new fn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=br)))}Dt("cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange".split(" "),0),Dt("drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel".split(" "),1),Dt(Ot,2);for(var Sr="change selectionchange textInput compositionstart compositionend compositionupdate".split(" "),xr=0;xr<Sr.length;xr++)Pt.set(Sr[xr],0);c("onMouseEnter",["mouseout","mouseover"]),c("onMouseLeave",["mouseout","mouseover"]),c("onPointerEnter",["pointerout","pointerover"]),c("onPointerLeave",["pointerout","pointerover"]),u("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),u("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),u("onBeforeInput",["compositionend","keypress","textInput","paste"]),u("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),u("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Cr="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Tr=new Set("cancel close invalid load scroll toggle".split(" ").concat(Cr));function _r(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,a,o,l,s,u){if(We.apply(this,arguments),qe){if(!qe)throw Error(i(198));var c=He;qe=!1,He=null,Ge||(Ge=!0,Ze=c)}}(r,t,void 0,e),e.currentTarget=null}function Ar(e,t){t=0!=(4&t);for(var n=0;n<e.length;n++){var r=e[n],a=r.event;r=r.listeners;e:{var o=void 0;if(t)for(var i=r.length-1;0<=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==o&&a.isPropagationStopped())break e;_r(a,l,u),o=s}else for(i=0;i<r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==o&&a.isPropagationStopped())break e;_r(a,l,u),o=s}}}if(Ge)throw e=Ze,Ge=!1,Ze=null,e}function Lr(e,t){var n=oa(t),r=e+"__bubble";n.has(r)||(Or(t,e,2,!1),n.add(r))}var Rr="_reactListening"+Math.random().toString(36).slice(2);function Nr(e){e[Rr]||(e[Rr]=!0,l.forEach((function(t){Tr.has(t)||Pr(t,!1,e,null),Pr(t,!0,e,null)})))}function Pr(e,t,n,r){var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=n;if("selectionchange"===e&&9!==n.nodeType&&(o=n.ownerDocument),null!==r&&!t&&Tr.has(e)){if("scroll"!==e)return;a|=2,o=r}var i=oa(o),l=e+"__"+(t?"capture":"bubble");i.has(l)||(t&&(a|=4),Or(o,e,a,t),i.add(l))}function Or(e,t,n,r){var a=Pt.get(t);switch(void 0===a?2:a){case 0:a=Yt;break;case 1:a=Kt;break;default:a=Qt}n=a.bind(null,t,n,e),a=void 0,!ze||"touchstart"!==t&&"touchmove"!==t&&"wheel"!==t||(a=!0),r?void 0!==a?e.addEventListener(t,n,{capture:!0,passive:a}):e.addEventListener(t,n,!0):void 0!==a?e.addEventListener(t,n,{passive:a}):e.addEventListener(t,n,!1)}function Dr(e,t,n,r,a){var o=r;if(0==(1&t)&&0==(2&t)&&null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===a||8===l.nodeType&&l.parentNode===a)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&&((s=i.stateNode.containerInfo)===a||8===s.nodeType&&s.parentNode===a))return;i=i.return}for(;null!==l;){if(null===(i=ta(l)))return;if(5===(s=i.tag)||6===s){r=o=i;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(Fe)return e(t,n);Fe=!0;try{return Ie(e,t,n)}finally{Fe=!1,Be()}}((function(){var r=o,a=Ce(n),i=[];e:{var l=Nt.get(e);if(void 0!==l){var s=fn,u=e;switch(e){case"keypress":if(0===rn(n))break e;case"keydown":case"keyup":s=Ln;break;case"focusin":u="focus",s=bn;break;case"focusout":u="blur",s=bn;break;case"beforeblur":case"afterblur":s=bn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=gn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=vn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=Nn;break;case _t:case At:case Lt:s=yn;break;case Rt:s=Pn;break;case"scroll":s=mn;break;case"wheel":s=Dn;break;case"copy":case"cut":case"paste":s=kn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Rn}var c=0!=(4&t),d=!c&&"scroll"===e,f=c?null!==l?l+"Capture":null:l;c=[];for(var p,m=r;null!==m;){var h=(p=m).stateNode;if(5===p.tag&&null!==h&&(p=h,null!==f&&(null!=(h=je(m,f))&&c.push(Ir(m,h,p)))),d)break;m=m.return}0<c.length&&(l=new s(l,u,null,n,a),i.push({event:l,listeners:c}))}}if(0==(7&t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||0!=(16&t)||!(u=n.relatedTarget||n.fromElement)||!ta(u)&&!u[Jr])&&(s||l)&&(l=a.window===a?a:(l=a.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?ta(u):null)&&(u!==(d=Ye(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=gn,h="onMouseLeave",f="onMouseEnter",m="mouse","pointerout"!==e&&"pointerover"!==e||(c=Rn,h="onPointerLeave",f="onPointerEnter",m="pointer"),d=null==s?l:ra(s),p=null==u?l:ra(u),(l=new c(h,m+"leave",s,n,a)).target=d,l.relatedTarget=p,h=null,ta(a)===r&&((c=new c(f,m+"enter",u,n,a)).target=p,c.relatedTarget=d,h=c),d=h,s&&u)e:{for(f=u,m=0,p=c=s;p;p=Fr(p))m++;for(p=0,h=f;h;h=Fr(h))p++;for(;0<m-p;)c=Fr(c),m--;for(;0<p-m;)f=Fr(f),p--;for(;m--;){if(c===f||null!==f&&c===f.alternate)break e;c=Fr(c),f=Fr(f)}c=null}else c=null;null!==s&&Br(i,l,s,c,!1),null!==u&&null!==d&&Br(i,d,u,c,!0)}if("select"===(s=(l=r?ra(r):window).nodeName&&l.nodeName.toLowerCase())||"input"===s&&"file"===l.type)var g=Xn;else if(Zn(l))if(Jn)g=sr;else{g=ir;var v=or}else(s=l.nodeName)&&"input"===s.toLowerCase()&&("checkbox"===l.type||"radio"===l.type)&&(g=lr);switch(g&&(g=g(e,r))?Vn(i,g,n,a):(v&&v(e,l,r),"focusout"===e&&(v=l._wrapperState)&&v.controlled&&"number"===l.type&&ae(l,"number",l.value)),v=r?ra(r):window,e){case"focusin":(Zn(v)||"true"===v.contentEditable)&&(br=v,yr=r,wr=null);break;case"focusout":wr=yr=br=null;break;case"mousedown":kr=!0;break;case"contextmenu":case"mouseup":case"dragend":kr=!1,Er(i,n,a);break;case"selectionchange":if(vr)break;case"keydown":case"keyup":Er(i,n,a)}var b;if(Mn)e:{switch(e){case"compositionstart":var y="onCompositionStart";break e;case"compositionend":y="onCompositionEnd";break e;case"compositionupdate":y="onCompositionUpdate";break e}y=void 0}else Hn?$n(e,n)&&(y="onCompositionEnd"):"keydown"===e&&229===n.keyCode&&(y="onCompositionStart");y&&(jn&&"ko"!==n.locale&&(Hn||"onCompositionStart"!==y?"onCompositionEnd"===y&&Hn&&(b=nn()):(en="value"in(Jt=a)?Jt.value:Jt.textContent,Hn=!0)),0<(v=Mr(r,y)).length&&(y=new En(y,e,null,n,a),i.push({event:y,listeners:v}),b?y.data=b:null!==(b=qn(n))&&(y.data=b))),(b=Bn?function(e,t){switch(e){case"compositionend":return qn(t);case"keypress":return 32!==t.which?null:(Un=!0,zn);case"textInput":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Hn)return"compositionend"===e||!Mn&&$n(e,t)?(e=nn(),tn=en=Jt=null,Hn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return jn&&"ko"!==t.locale?null:t.data}}(e,n))&&(0<(r=Mr(r,"onBeforeInput")).length&&(a=new En("onBeforeInput","beforeinput",null,n,a),i.push({event:a,listeners:r}),a.data=b))}Ar(i,t)}))}function Ir(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Mr(e,t){for(var n=t+"Capture",r=[];null!==e;){var a=e,o=a.stateNode;5===a.tag&&null!==o&&(a=o,null!=(o=je(e,n))&&r.unshift(Ir(e,o,a)),null!=(o=je(e,t))&&r.push(Ir(e,o,a))),e=e.return}return r}function Fr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Br(e,t,n,r,a){for(var o=t._reactName,i=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,a?null!=(s=je(n,o))&&i.unshift(Ir(n,s,l)):a||null!=(s=je(n,o))&&i.push(Ir(n,s,l))),n=n.return}0!==i.length&&e.push({event:t,listeners:i})}function jr(){}var zr=null,Ur=null;function $r(e,t){switch(e){case"button":case"input":case"select":case"textarea":return!!t.autoFocus}return!1}function qr(e,t){return"textarea"===e||"option"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Hr="function"==typeof setTimeout?setTimeout:void 0,Gr="function"==typeof clearTimeout?clearTimeout:void 0;function Zr(e){1===e.nodeType?e.textContent="":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=""))}function Vr(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Wr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}var Yr=0;var Kr=Math.random().toString(36).slice(2),Qr="__reactFiber$"+Kr,Xr="__reactProps$"+Kr,Jr="__reactContainer$"+Kr,ea="__reactEvents$"+Kr;function ta(e){var t=e[Qr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Jr]||n[Qr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Wr(e);null!==e;){if(n=e[Qr])return n;e=Wr(e)}return t}n=(e=n).parentNode}return null}function na(e){return!(e=e[Qr]||e[Jr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function ra(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function aa(e){return e[Xr]||null}function oa(e){var t=e[ea];return void 0===t&&(t=e[ea]=new Set),t}var ia=[],la=-1;function sa(e){return{current:e}}function ua(e){0>la||(e.current=ia[la],ia[la]=null,la--)}function ca(e,t){la++,ia[la]=e.current,e.current=t}var da={},fa=sa(da),pa=sa(!1),ma=da;function ha(e,t){var n=e.type.contextTypes;if(!n)return da;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var a,o={};for(a in n)o[a]=t[a];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function ga(e){return null!=(e=e.childContextTypes)}function va(){ua(pa),ua(fa)}function ba(e,t,n){if(fa.current!==da)throw Error(i(168));ca(fa,t),ca(pa,n)}function ya(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(i(108,V(t)||"Unknown",o));return a({},n,r)}function wa(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||da,ma=fa.current,ca(fa,e),ca(pa,pa.current),!0}function ka(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=ya(e,t,ma),r.__reactInternalMemoizedMergedChildContext=e,ua(pa),ua(fa),ca(fa,e)):ua(pa),ca(pa,n)}var Ea=null,Sa=null,xa=o.unstable_runWithPriority,Ca=o.unstable_scheduleCallback,Ta=o.unstable_cancelCallback,_a=o.unstable_shouldYield,Aa=o.unstable_requestPaint,La=o.unstable_now,Ra=o.unstable_getCurrentPriorityLevel,Na=o.unstable_ImmediatePriority,Pa=o.unstable_UserBlockingPriority,Oa=o.unstable_NormalPriority,Da=o.unstable_LowPriority,Ia=o.unstable_IdlePriority,Ma={},Fa=void 0!==Aa?Aa:function(){},Ba=null,ja=null,za=!1,Ua=La(),$a=1e4>Ua?La:function(){return La()-Ua};function qa(){switch(Ra()){case Na:return 99;case Pa:return 98;case Oa:return 97;case Da:return 96;case Ia:return 95;default:throw Error(i(332))}}function Ha(e){switch(e){case 99:return Na;case 98:return Pa;case 97:return Oa;case 96:return Da;case 95:return Ia;default:throw Error(i(332))}}function Ga(e,t){return e=Ha(e),xa(e,t)}function Za(e,t,n){return e=Ha(e),Ca(e,t,n)}function Va(){if(null!==ja){var e=ja;ja=null,Ta(e)}Wa()}function Wa(){if(!za&&null!==Ba){za=!0;var e=0;try{var t=Ba;Ga(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Ba=null}catch(n){throw null!==Ba&&(Ba=Ba.slice(e+1)),Ca(Na,Va),n}finally{za=!1}}}var Ya=k.ReactCurrentBatchConfig;function Ka(e,t){if(e&&e.defaultProps){for(var n in t=a({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qa=sa(null),Xa=null,Ja=null,eo=null;function to(){eo=Ja=Xa=null}function no(e){var t=Qa.current;ua(Qa),e.type._context._currentValue=t}function ro(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ao(e,t){Xa=e,eo=Ja=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!=(e.lanes&t)&&(Mi=!0),e.firstContext=null)}function oo(e,t){if(eo!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(eo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ja){if(null===Xa)throw Error(i(308));Ja=t,Xa.dependencies={lanes:0,firstContext:t,responders:null}}else Ja=Ja.next=t;return e._currentValue}var io=!1;function lo(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function so(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function uo(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function co(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function fo(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var a=null,o=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===o?a=o=i:o=o.next=i,n=n.next}while(null!==n);null===o?a=o=t:o=o.next=t}else a=o=t;return n={baseState:r.baseState,firstBaseUpdate:a,lastBaseUpdate:o,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function po(e,t,n,r){var o=e.updateQueue;io=!1;var i=o.firstBaseUpdate,l=o.lastBaseUpdate,s=o.shared.pending;if(null!==s){o.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?i=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==i){for(f=o.baseState,l=0,d=c=u=null;;){s=i.lane;var p=i.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var m=e,h=i;switch(s=t,p=n,h.tag){case 1:if("function"==typeof(m=h.payload)){f=m.call(p,f,s);break e}f=m;break e;case 3:m.flags=-4097&m.flags|64;case 0:if(null==(s="function"==typeof(m=h.payload)?m.call(p,f,s):m))break e;f=a({},f,s);break e;case 2:io=!0}}null!==i.callback&&(e.flags|=32,null===(s=o.effects)?o.effects=[i]:s.push(i))}else p={eventTime:p,lane:s,tag:i.tag,payload:i.payload,callback:i.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(i=i.next)){if(null===(s=o.shared.pending))break;i=s.next,s.next=null,o.lastBaseUpdate=s,o.shared.pending=null}}null===d&&(u=f),o.baseState=u,o.firstBaseUpdate=c,o.lastBaseUpdate=d,Ul|=l,e.lanes=l,e.memoizedState=f}}function mo(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],a=r.callback;if(null!==a){if(r.callback=null,r=n,"function"!=typeof a)throw Error(i(191,a));a.call(r)}}}var ho=(new r.Component).refs;function go(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:a({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var vo={isMounted:function(e){return!!(e=e._reactInternals)&&Ye(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=fs(),a=ps(e),o=uo(r,a);o.tag=1,o.payload=t,null!=n&&(o.callback=n),co(e,o),ms(e,a,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=fs(),r=ps(e),a=uo(n,r);a.tag=2,null!=t&&(a.callback=t),co(e,a),ms(e,r,n)}};function bo(e,t,n,r,a,o,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,o,i):!t.prototype||!t.prototype.isPureReactComponent||(!dr(n,r)||!dr(a,o))}function yo(e,t,n){var r=!1,a=da,o=t.contextType;return"object"==typeof o&&null!==o?o=oo(o):(a=ga(t)?ma:fa.current,o=(r=null!=(r=t.contextTypes))?ha(e,a):da),t=new t(n,o),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=vo,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=a,e.__reactInternalMemoizedMaskedChildContext=o),t}function wo(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&vo.enqueueReplaceState(t,t.state,null)}function ko(e,t,n,r){var a=e.stateNode;a.props=n,a.state=e.memoizedState,a.refs=ho,lo(e);var o=t.contextType;"object"==typeof o&&null!==o?a.context=oo(o):(o=ga(t)?ma:fa.current,a.context=ha(e,o)),po(e,n,a,r),a.state=e.memoizedState,"function"==typeof(o=t.getDerivedStateFromProps)&&(go(e,t,o,n),a.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(t=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),t!==a.state&&vo.enqueueReplaceState(a,a.state,null),po(e,n,a,r),a.state=e.memoizedState),"function"==typeof a.componentDidMount&&(e.flags|=4)}var Eo=Array.isArray;function So(e,t,n){if(null!==(e=n.ref)&&"function"!=typeof e&&"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var a=""+e;return null!==t&&null!==t.ref&&"function"==typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=r.refs;t===ho&&(t=r.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if("string"!=typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function xo(e,t){if("textarea"!==e.type)throw Error(i(31,"[object Object]"===Object.prototype.toString.call(t)?"object with keys {"+Object.keys(t).join(", ")+"}":t))}function Co(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function a(e,t){return(e=Zs(e,t)).index=0,e.sibling=null,e}function o(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Ks(n,e.mode,r)).return=e,t):((t=a(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=a(t,n.props)).ref=So(e,t,n),r.return=e,r):((r=Vs(n.type,n.key,n.props,null,e.mode,r)).ref=So(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Qs(n,e.mode,r)).return=e,t):((t=a(t,n.children||[])).return=e,t)}function d(e,t,n,r,o){return null===t||7!==t.tag?((t=Ws(n,e.mode,r,o)).return=e,t):((t=a(t,n)).return=e,t)}function f(e,t,n){if("string"==typeof t||"number"==typeof t)return(t=Ks(""+t,e.mode,n)).return=e,t;if("object"==typeof t&&null!==t){switch(t.$$typeof){case E:return(n=Vs(t.type,t.key,t.props,null,e.mode,n)).ref=So(e,null,t),n.return=e,n;case S:return(t=Qs(t,e.mode,n)).return=e,t}if(Eo(t)||$(t))return(t=Ws(t,e.mode,n,null)).return=e,t;xo(e,t)}return null}function p(e,t,n,r){var a=null!==t?t.key:null;if("string"==typeof n||"number"==typeof n)return null!==a?null:s(e,t,""+n,r);if("object"==typeof n&&null!==n){switch(n.$$typeof){case E:return n.key===a?n.type===x?d(e,t,n.props.children,r,a):u(e,t,n,r):null;case S:return n.key===a?c(e,t,n,r):null}if(Eo(n)||$(n))return null!==a?null:d(e,t,n,r,null);xo(e,n)}return null}function m(e,t,n,r,a){if("string"==typeof r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,a);if("object"==typeof r&&null!==r){switch(r.$$typeof){case E:return e=e.get(null===r.key?n:r.key)||null,r.type===x?d(t,e,r.props.children,a,r.key):u(t,e,r,a);case S:return c(t,e=e.get(null===r.key?n:r.key)||null,r,a)}if(Eo(r)||$(r))return d(t,e=e.get(n)||null,r,a,null);xo(t,r)}return null}function h(a,i,l,s){for(var u=null,c=null,d=i,h=i=0,g=null;null!==d&&h<l.length;h++){d.index>h?(g=d,d=null):g=d.sibling;var v=p(a,d,l[h],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(a,d),i=o(v,i,h),null===c?u=v:c.sibling=v,c=v,d=g}if(h===l.length)return n(a,d),u;if(null===d){for(;h<l.length;h++)null!==(d=f(a,l[h],s))&&(i=o(d,i,h),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(a,d);h<l.length;h++)null!==(g=m(d,a,h,l[h],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?h:g.key),i=o(g,i,h),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(a,e)})),u}function g(a,l,s,u){var c=$(s);if("function"!=typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,h=l,g=l=0,v=null,b=s.next();null!==h&&!b.done;g++,b=s.next()){h.index>g?(v=h,h=null):v=h.sibling;var y=p(a,h,b.value,u);if(null===y){null===h&&(h=v);break}e&&h&&null===y.alternate&&t(a,h),l=o(y,l,g),null===d?c=y:d.sibling=y,d=y,h=v}if(b.done)return n(a,h),c;if(null===h){for(;!b.done;g++,b=s.next())null!==(b=f(a,b.value,u))&&(l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(h=r(a,h);!b.done;g++,b=s.next())null!==(b=m(h,a,g,b.value,u))&&(e&&null!==b.alternate&&h.delete(null===b.key?g:b.key),l=o(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&h.forEach((function(e){return t(a,e)})),c}return function(e,r,o,s){var u="object"==typeof o&&null!==o&&o.type===x&&null===o.key;u&&(o=o.props.children);var c="object"==typeof o&&null!==o;if(c)switch(o.$$typeof){case E:e:{for(c=o.key,u=r;null!==u;){if(u.key===c){if(7===u.tag){if(o.type===x){n(e,u.sibling),(r=a(u,o.props.children)).return=e,e=r;break e}}else if(u.elementType===o.type){n(e,u.sibling),(r=a(u,o.props)).ref=So(e,u,o),r.return=e,e=r;break e}n(e,u);break}t(e,u),u=u.sibling}o.type===x?((r=Ws(o.props.children,e.mode,s,o.key)).return=e,e=r):((s=Vs(o.type,o.key,o.props,null,e.mode,s)).ref=So(e,r,o),s.return=e,e=s)}return l(e);case S:e:{for(u=o.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=a(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Qs(o,e.mode,s)).return=e,e=r}return l(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=a(r,o)).return=e,e=r):(n(e,r),(r=Ks(o,e.mode,s)).return=e,e=r),l(e);if(Eo(o))return h(e,r,o,s);if($(o))return g(e,r,o,s);if(c&&xo(e,o),void 0===o&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(i(152,V(e.type)||"Component"))}return n(e,r)}}var To=Co(!0),_o=Co(!1),Ao={},Lo=sa(Ao),Ro=sa(Ao),No=sa(Ao);function Po(e){if(e===Ao)throw Error(i(174));return e}function Oo(e,t){switch(ca(No,t),ca(Ro,e),ca(Lo,Ao),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:pe(null,"");break;default:t=pe(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}ua(Lo),ca(Lo,t)}function Do(){ua(Lo),ua(Ro),ua(No)}function Io(e){Po(No.current);var t=Po(Lo.current),n=pe(t,e.type);t!==n&&(ca(Ro,e),ca(Lo,n))}function Mo(e){Ro.current===e&&(ua(Lo),ua(Ro))}var Fo=sa(0);function Bo(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var jo=null,zo=null,Uo=!1;function $o(e,t){var n=Hs(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function qo(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);default:return!1}}function Ho(e){if(Uo){var t=zo;if(t){var n=t;if(!qo(e,t)){if(!(t=Vr(n.nextSibling))||!qo(e,t))return e.flags=-1025&e.flags|2,Uo=!1,void(jo=e);$o(jo,n)}jo=e,zo=Vr(t.firstChild)}else e.flags=-1025&e.flags|2,Uo=!1,jo=e}}function Go(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;jo=e}function Zo(e){if(e!==jo)return!1;if(!Uo)return Go(e),Uo=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!qr(t,e.memoizedProps))for(t=zo;t;)$o(e,t),t=Vr(t.nextSibling);if(Go(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){zo=Vr(e.nextSibling);break e}t--}else"$"!==n&&"$!"!==n&&"$?"!==n||t++}e=e.nextSibling}zo=null}}else zo=jo?Vr(e.stateNode.nextSibling):null;return!0}function Vo(){zo=jo=null,Uo=!1}var Wo=[];function Yo(){for(var e=0;e<Wo.length;e++)Wo[e]._workInProgressVersionPrimary=null;Wo.length=0}var Ko=k.ReactCurrentDispatcher,Qo=k.ReactCurrentBatchConfig,Xo=0,Jo=null,ei=null,ti=null,ni=!1,ri=!1;function ai(){throw Error(i(321))}function oi(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!ur(e[n],t[n]))return!1;return!0}function ii(e,t,n,r,a,o){if(Xo=o,Jo=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Ko.current=null===e||null===e.memoizedState?Pi:Oi,e=n(r,a),ri){o=0;do{if(ri=!1,!(25>o))throw Error(i(301));o+=1,ti=ei=null,t.updateQueue=null,Ko.current=Di,e=n(r,a)}while(ri)}if(Ko.current=Ni,t=null!==ei&&null!==ei.next,Xo=0,ti=ei=Jo=null,ni=!1,t)throw Error(i(300));return e}function li(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===ti?Jo.memoizedState=ti=e:ti=ti.next=e,ti}function si(){if(null===ei){var e=Jo.alternate;e=null!==e?e.memoizedState:null}else e=ei.next;var t=null===ti?Jo.memoizedState:ti.next;if(null!==t)ti=t,ei=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ei=e).memoizedState,baseState:ei.baseState,baseQueue:ei.baseQueue,queue:ei.queue,next:null},null===ti?Jo.memoizedState=ti=e:ti=ti.next=e}return ti}function ui(e,t){return"function"==typeof t?t(e):t}function ci(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ei,a=r.baseQueue,o=n.pending;if(null!==o){if(null!==a){var l=a.next;a.next=o.next,o.next=l}r.baseQueue=a=o,n.pending=null}if(null!==a){a=a.next,r=r.baseState;var s=l=o=null,u=a;do{var c=u.lane;if((Xo&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,o=r):s=s.next=d,Jo.lanes|=c,Ul|=c}u=u.next}while(null!==u&&u!==a);null===s?o=r:s.next=l,ur(r,t.memoizedState)||(Mi=!0),t.memoizedState=r,t.baseState=o,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function di(e){var t=si(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,a=n.pending,o=t.memoizedState;if(null!==a){n.pending=null;var l=a=a.next;do{o=e(o,l.action),l=l.next}while(l!==a);ur(o,t.memoizedState)||(Mi=!0),t.memoizedState=o,null===t.baseQueue&&(t.baseState=o),n.lastRenderedState=o}return[o,r]}function fi(e,t,n){var r=t._getVersion;r=r(t._source);var a=t._workInProgressVersionPrimary;if(null!==a?e=a===r:(e=e.mutableReadLanes,(e=(Xo&e)===e)&&(t._workInProgressVersionPrimary=r,Wo.push(t))),e)return n(t._source);throw Wo.push(t),Error(i(350))}function pi(e,t,n,r){var a=Ol;if(null===a)throw Error(i(349));var o=t._getVersion,l=o(t._source),s=Ko.current,u=s.useState((function(){return fi(a,t,n)})),c=u[1],d=u[0];u=ti;var f=e.memoizedState,p=f.refs,m=p.getSnapshot,h=f.source;f=f.subscribe;var g=Jo;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=o(t._source);if(!ur(l,e)){e=n(t._source),ur(d,e)||(c(e),e=ps(g),a.mutableReadLanes|=e&a.pendingLanes),e=a.mutableReadLanes,a.entangledLanes|=e;for(var r=a.entanglements,i=e;0<i;){var s=31-qt(i),u=1<<s;r[s]|=e,i&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=ps(g);a.mutableReadLanes|=r&a.pendingLanes}catch(o){n((function(){throw o}))}}))}),[t,r]),ur(m,n)&&ur(h,t)&&ur(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:d}).dispatch=c=Ri.bind(null,Jo,e),u.queue=e,u.baseQueue=null,d=fi(a,t,n),u.memoizedState=u.baseState=d),d}function mi(e,t,n){return pi(si(),e,t,n)}function hi(e){var t=li();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:ui,lastRenderedState:e}).dispatch=Ri.bind(null,Jo,e),[t.memoizedState,e]}function gi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Jo.updateQueue)?(t={lastEffect:null},Jo.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function vi(e){return e={current:e},li().memoizedState=e}function bi(){return si().memoizedState}function yi(e,t,n,r){var a=li();Jo.flags|=e,a.memoizedState=gi(1|t,n,void 0,void 0===r?null:r)}function wi(e,t,n,r){var a=si();r=void 0===r?null:r;var o=void 0;if(null!==ei){var i=ei.memoizedState;if(o=i.destroy,null!==r&&oi(r,i.deps))return void gi(t,n,o,r)}Jo.flags|=e,a.memoizedState=gi(1|t,n,o,r)}function ki(e,t){return yi(516,4,e,t)}function Ei(e,t){return wi(516,4,e,t)}function Si(e,t){return wi(4,2,e,t)}function xi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ci(e,t,n){return n=null!=n?n.concat([e]):null,wi(4,2,xi.bind(null,t,e),n)}function Ti(){}function _i(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ai(e,t){var n=si();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&oi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Li(e,t){var n=qa();Ga(98>n?98:n,(function(){e(!0)})),Ga(97<n?97:n,(function(){var n=Qo.transition;Qo.transition=1;try{e(!1),t()}finally{Qo.transition=n}}))}function Ri(e,t,n){var r=fs(),a=ps(e),o={lane:a,action:n,eagerReducer:null,eagerState:null,next:null},i=t.pending;if(null===i?o.next=o:(o.next=i.next,i.next=o),t.pending=o,i=e.alternate,e===Jo||null!==i&&i===Jo)ri=ni=!0;else{if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=i(l,n);if(o.eagerReducer=i,o.eagerState=s,ur(s,l))return}catch(u){}ms(e,a,r)}}var Ni={readContext:oo,useCallback:ai,useContext:ai,useEffect:ai,useImperativeHandle:ai,useLayoutEffect:ai,useMemo:ai,useReducer:ai,useRef:ai,useState:ai,useDebugValue:ai,useDeferredValue:ai,useTransition:ai,useMutableSource:ai,useOpaqueIdentifier:ai,unstable_isNewReconciler:!1},Pi={readContext:oo,useCallback:function(e,t){return li().memoizedState=[e,void 0===t?null:t],e},useContext:oo,useEffect:ki,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,yi(4,2,xi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return yi(4,2,e,t)},useMemo:function(e,t){var n=li();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=li();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Ri.bind(null,Jo,e),[r.memoizedState,e]},useRef:vi,useState:hi,useDebugValue:Ti,useDeferredValue:function(e){var t=hi(e),n=t[0],r=t[1];return ki((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=hi(!1),t=e[0];return vi(e=Li.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=li();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},pi(r,e,t,n)},useOpaqueIdentifier:function(){if(Uo){var e=!1,t=function(e){return{$$typeof:I,toString:e,valueOf:e}}((function(){throw e||(e=!0,n("r:"+(Yr++).toString(36))),Error(i(355))})),n=hi(t)[1];return 0==(2&Jo.mode)&&(Jo.flags|=516,gi(5,(function(){n("r:"+(Yr++).toString(36))}),void 0,null)),t}return hi(t="r:"+(Yr++).toString(36)),t},unstable_isNewReconciler:!1},Oi={readContext:oo,useCallback:_i,useContext:oo,useEffect:Ei,useImperativeHandle:Ci,useLayoutEffect:Si,useMemo:Ai,useReducer:ci,useRef:bi,useState:function(){return ci(ui)},useDebugValue:Ti,useDeferredValue:function(e){var t=ci(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=ci(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return ci(ui)[0]},unstable_isNewReconciler:!1},Di={readContext:oo,useCallback:_i,useContext:oo,useEffect:Ei,useImperativeHandle:Ci,useLayoutEffect:Si,useMemo:Ai,useReducer:di,useRef:bi,useState:function(){return di(ui)},useDebugValue:Ti,useDeferredValue:function(e){var t=di(ui),n=t[0],r=t[1];return Ei((function(){var t=Qo.transition;Qo.transition=1;try{r(e)}finally{Qo.transition=t}}),[e]),n},useTransition:function(){var e=di(ui)[0];return[bi().current,e]},useMutableSource:mi,useOpaqueIdentifier:function(){return di(ui)[0]},unstable_isNewReconciler:!1},Ii=k.ReactCurrentOwner,Mi=!1;function Fi(e,t,n,r){t.child=null===e?_o(t,null,n,r):To(t,e.child,n,r)}function Bi(e,t,n,r,a){n=n.render;var o=t.ref;return ao(t,a),r=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,r,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function ji(e,t,n,r,a,o){if(null===e){var i=n.type;return"function"!=typeof i||Gs(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Vs(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,zi(e,t,i,r,a,o))}return i=e.child,0==(a&o)&&(a=i.memoizedProps,(n=null!==(n=n.compare)?n:dr)(a,r)&&e.ref===t.ref)?ol(e,t,o):(t.flags|=1,(e=Zs(i,r)).ref=t.ref,e.return=t,t.child=e)}function zi(e,t,n,r,a,o){if(null!==e&&dr(e.memoizedProps,r)&&e.ref===t.ref){if(Mi=!1,0==(o&a))return t.lanes=e.lanes,ol(e,t,o);0!=(16384&e.flags)&&(Mi=!0)}return qi(e,t,n,r,o)}function Ui(e,t,n){var r=t.pendingProps,a=r.children,o=null!==e?e.memoizedState:null;if("hidden"===r.mode||"unstable-defer-without-hiding"===r.mode)if(0==(4&t.mode))t.memoizedState={baseLanes:0},Es(t,n);else{if(0==(1073741824&n))return e=null!==o?o.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},Es(t,e),null;t.memoizedState={baseLanes:0},Es(t,null!==o?o.baseLanes:n)}else null!==o?(r=o.baseLanes|n,t.memoizedState=null):r=n,Es(t,r);return Fi(e,t,a,n),t.child}function $i(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function qi(e,t,n,r,a){var o=ga(n)?ma:fa.current;return o=ha(t,o),ao(t,a),n=ii(e,t,n,r,o,a),null===e||Mi?(t.flags|=1,Fi(e,t,n,a),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~a,ol(e,t,a))}function Hi(e,t,n,r,a){if(ga(n)){var o=!0;wa(t)}else o=!1;if(ao(t,a),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),yo(t,n,r),ko(t,n,r,a),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;"object"==typeof u&&null!==u?u=oo(u):u=ha(t,u=ga(n)?ma:fa.current);var c=n.getDerivedStateFromProps,d="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;d||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&&wo(t,i,r,u),io=!1;var f=t.memoizedState;i.state=f,po(t,r,i,a),s=t.memoizedState,l!==r||f!==s||pa.current||io?("function"==typeof c&&(go(t,n,c,r),s=t.memoizedState),(l=io||bo(t,n,l,r,f,s,u))?(d||"function"!=typeof i.UNSAFE_componentWillMount&&"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&&i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&&i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&&(t.flags|=4)):("function"==typeof i.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&&(t.flags|=4),r=!1)}else{i=t.stateNode,so(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ka(t.type,l),i.props=u,d=t.pendingProps,f=i.context,"object"==typeof(s=n.contextType)&&null!==s?s=oo(s):s=ha(t,s=ga(n)?ma:fa.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&&"function"!=typeof i.componentWillReceiveProps||(l!==d||f!==s)&&wo(t,i,r,s),io=!1,f=t.memoizedState,i.state=f,po(t,r,i,a);var m=t.memoizedState;l!==d||f!==m||pa.current||io?("function"==typeof p&&(go(t,n,p,r),m=t.memoizedState),(u=io||bo(t,n,u,r,f,m,s))?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&&"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&&i.componentWillUpdate(r,m,s),"function"==typeof i.UNSAFE_componentWillUpdate&&i.UNSAFE_componentWillUpdate(r,m,s)),"function"==typeof i.componentDidUpdate&&(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&&(t.flags|=256)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=m),i.props=r,i.state=m,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Gi(e,t,n,r,o,a)}function Gi(e,t,n,r,a,o){$i(e,t);var i=0!=(64&t.flags);if(!r&&!i)return a&&ka(t,n,!1),ol(e,t,o);r=t.stateNode,Ii.current=t;var l=i&&"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&i?(t.child=To(t,e.child,null,o),t.child=To(t,null,l,o)):Fi(e,t,l,o),t.memoizedState=r.state,a&&ka(t,n,!0),t.child}function Zi(e){var t=e.stateNode;t.pendingContext?ba(0,t.pendingContext,t.pendingContext!==t.context):t.context&&ba(0,t.context,!1),Oo(e,t.containerInfo)}var Vi,Wi,Yi,Ki,Qi={dehydrated:null,retryLane:0};function Xi(e,t,n){var r,a=t.pendingProps,o=Fo.current,i=!1;return(r=0!=(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!=(2&o)),r?(i=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===a.fallback||!0===a.unstable_avoidThisFallback||(o|=1),ca(Fo,1&o),null===e?(void 0!==a.fallback&&Ho(t),e=a.children,o=a.fallback,i?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,e):"number"==typeof a.unstable_expectedLoadTime?(e=Ji(t,e,o,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Qi,t.lanes=33554432,e):((n=Ys({mode:"visible",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,i?(a=tl(e,t,a.children,a.fallback,n),i=t.child,o=e.child.memoizedState,i.memoizedState=null===o?{baseLanes:n}:{baseLanes:o.baseLanes|n},i.childLanes=e.childLanes&~n,t.memoizedState=Qi,a):(n=el(e,t,a.children,n),t.memoizedState=null,n))}function Ji(e,t,n,r){var a=e.mode,o=e.child;return t={mode:"hidden",children:t},0==(2&a)&&null!==o?(o.childLanes=0,o.pendingProps=t):o=Ys(t,a,0,null),n=Ws(n,a,r,null),o.return=e,n.return=e,o.sibling=n,e.child=o,n}function el(e,t,n,r){var a=e.child;return e=a.sibling,n=Zs(a,{mode:"visible",children:n}),0==(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function tl(e,t,n,r,a){var o=t.mode,i=e.child;e=i.sibling;var l={mode:"hidden",children:n};return 0==(2&o)&&t.child!==i?((n=t.child).childLanes=0,n.pendingProps=l,null!==(i=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=i,i.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Zs(i,l),null!==e?r=Zs(e,r):(r=Ws(r,o,a,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function nl(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ro(e.return,t)}function rl(e,t,n,r,a,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:a,lastEffect:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=a,i.lastEffect=o)}function al(e,t,n){var r=t.pendingProps,a=r.revealOrder,o=r.tail;if(Fi(e,t,r.children,n),0!=(2&(r=Fo.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!=(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&nl(e,n);else if(19===e.tag)nl(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ca(Fo,r),0==(2&t.mode))t.memoizedState=null;else switch(a){case"forwards":for(n=t.child,a=null;null!==n;)null!==(e=n.alternate)&&null===Bo(e)&&(a=n),n=n.sibling;null===(n=a)?(a=t.child,t.child=null):(a=n.sibling,n.sibling=null),rl(t,!1,a,n,o,t.lastEffect);break;case"backwards":for(n=null,a=t.child,t.child=null;null!==a;){if(null!==(e=a.alternate)&&null===Bo(e)){t.child=a;break}e=a.sibling,a.sibling=n,n=a,a=e}rl(t,!0,n,null,o,t.lastEffect);break;case"together":rl(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function ol(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ul|=t.lanes,0!=(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=Zs(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Zs(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function il(e,t){if(!Uo)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ll(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:case 17:return ga(t.type)&&va(),null;case 3:return Do(),ua(pa),ua(fa),Yo(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Zo(t)?t.flags|=4:r.hydrate||(t.flags|=256)),Wi(t),null;case 5:Mo(t);var o=Po(No.current);if(n=t.type,null!==e&&null!=t.stateNode)Yi(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(i(166));return null}if(e=Po(Lo.current),Zo(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Qr]=t,r[Xr]=l,n){case"dialog":Lr("cancel",r),Lr("close",r);break;case"iframe":case"object":case"embed":Lr("load",r);break;case"video":case"audio":for(e=0;e<Cr.length;e++)Lr(Cr[e],r);break;case"source":Lr("error",r);break;case"img":case"image":case"link":Lr("error",r),Lr("load",r);break;case"details":Lr("toggle",r);break;case"input":ee(r,l),Lr("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!l.multiple},Lr("invalid",r);break;case"textarea":se(r,l),Lr("invalid",r)}for(var u in Se(n,l),e=null,l)l.hasOwnProperty(u)&&(o=l[u],"children"===u?"string"==typeof o?r.textContent!==o&&(e=["children",o]):"number"==typeof o&&r.textContent!==""+o&&(e=["children",""+o]):s.hasOwnProperty(u)&&null!=o&&"onScroll"===u&&Lr("scroll",r));switch(n){case"input":K(r),re(r,l,!0);break;case"textarea":K(r),ce(r);break;case"select":case"option":break;default:"function"==typeof l.onClick&&(r.onclick=jr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===o.nodeType?o:o.ownerDocument,e===de.html&&(e=fe(n)),e===de.html?"script"===n?((e=u.createElement("div")).innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),"select"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Qr]=t,e[Xr]=r,Vi(e,t,!1,!1),t.stateNode=e,u=xe(n,r),n){case"dialog":Lr("cancel",e),Lr("close",e),o=r;break;case"iframe":case"object":case"embed":Lr("load",e),o=r;break;case"video":case"audio":for(o=0;o<Cr.length;o++)Lr(Cr[o],e);o=r;break;case"source":Lr("error",e),o=r;break;case"img":case"image":case"link":Lr("error",e),Lr("load",e),o=r;break;case"details":Lr("toggle",e),o=r;break;case"input":ee(e,r),o=J(e,r),Lr("invalid",e);break;case"option":o=oe(e,r);break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=a({},r,{value:void 0}),Lr("invalid",e);break;case"textarea":se(e,r),o=le(e,r),Lr("invalid",e);break;default:o=r}Se(n,o);var c=o;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];"style"===l?ke(e,d):"dangerouslySetInnerHTML"===l?null!=(d=d?d.__html:void 0)&&ge(e,d):"children"===l?"string"==typeof d?("textarea"!==n||""!==d)&&ve(e,d):"number"==typeof d&&ve(e,""+d):"suppressContentEditableWarning"!==l&&"suppressHydrationWarning"!==l&&"autoFocus"!==l&&(s.hasOwnProperty(l)?null!=d&&"onScroll"===l&&Lr("scroll",e):null!=d&&w(e,l,d,u))}switch(n){case"input":K(e),re(e,r,!1);break;case"textarea":K(e),ce(e);break;case"option":null!=r.value&&e.setAttribute("value",""+W(r.value));break;case"select":e.multiple=!!r.multiple,null!=(l=r.value)?ie(e,!!r.multiple,l,!1):null!=r.defaultValue&&ie(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&&(e.onclick=jr)}$r(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)Ki(e,t,e.memoizedProps,r);else{if("string"!=typeof r&&null===t.stateNode)throw Error(i(166));n=Po(No.current),Po(Lo.current),Zo(t)?(r=t.stateNode,n=t.memoizedProps,r[Qr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Qr]=t,t.stateNode=r)}return null;case 13:return ua(Fo),r=t.memoizedState,0!=(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Zo(t):n=null!==e.memoizedState,r&&!n&&0!=(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&Fo.current)?0===Bl&&(Bl=3):(0!==Bl&&3!==Bl||(Bl=4),null===Ol||0==(134217727&Ul)&&0==(134217727&$l)||bs(Ol,Il))),(r||n)&&(t.flags|=4),null);case 4:return Do(),Wi(t),null===e&&Nr(t.stateNode.containerInfo),null;case 10:return no(t),null;case 19:if(ua(Fo),null===(r=t.memoizedState))return null;if(l=0!=(64&t.flags),null===(u=r.rendering))if(l)il(r,!1);else{if(0!==Bl||null!==e&&0!=(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Bo(e))){for(t.flags|=64,il(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return ca(Fo,1&Fo.current|2),t.child}e=e.sibling}null!==r.tail&&$a()>Zl&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Bo(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),il(r,!0),null===r.tail&&"hidden"===r.tailMode&&!u.alternate&&!Uo)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*$a()-r.renderingStartTime>Zl&&1073741824!==n&&(t.flags|=64,l=!0,il(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=$a(),n.sibling=null,t=Fo.current,ca(Fo,l?1&t|2:1&t),n):null;case 23:case 24:return Ss(),null!==e&&null!==e.memoizedState!=(null!==t.memoizedState)&&"unstable-defer-without-hiding"!==r.mode&&(t.flags|=4),null}throw Error(i(156,t.tag))}function sl(e){switch(e.tag){case 1:ga(e.type)&&va();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Do(),ua(pa),ua(fa),Yo(),0!=(64&(t=e.flags)))throw Error(i(285));return e.flags=-4097&t|64,e;case 5:return Mo(e),null;case 13:return ua(Fo),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return ua(Fo),null;case 4:return Do(),null;case 10:return no(e),null;case 23:case 24:return Ss(),null;default:return null}}function ul(e,t){try{var n="",r=t;do{n+=Z(r),r=r.return}while(r);var a=n}catch(o){a="\nError generating stack: "+o.message+"\n"+o.stack}return{value:e,source:t,stack:a}}function cl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}Vi=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Wi=function(){},Yi=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,Po(Lo.current);var i,l=null;switch(n){case"input":o=J(e,o),r=J(e,r),l=[];break;case"option":o=oe(e,o),r=oe(e,r),l=[];break;case"select":o=a({},o,{value:void 0}),r=a({},r,{value:void 0}),l=[];break;case"textarea":o=le(e,o),r=le(e,r),l=[];break;default:"function"!=typeof o.onClick&&"function"==typeof r.onClick&&(e.onclick=jr)}for(d in Se(n,r),n=null,o)if(!r.hasOwnProperty(d)&&o.hasOwnProperty(d)&&null!=o[d])if("style"===d){var u=o[d];for(i in u)u.hasOwnProperty(i)&&(n||(n={}),n[i]="")}else"dangerouslySetInnerHTML"!==d&&"children"!==d&&"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&"autoFocus"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=o?o[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if("style"===d)if(u){for(i in u)!u.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&u[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(l||(l=[]),l.push(d,n)),n=c;else"dangerouslySetInnerHTML"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):"children"===d?"string"!=typeof c&&"number"!=typeof c||(l=l||[]).push(d,""+c):"suppressContentEditableWarning"!==d&&"suppressHydrationWarning"!==d&&(s.hasOwnProperty(d)?(null!=c&&"onScroll"===d&&Lr("scroll",e),l||u===c||(l=[])):"object"==typeof c&&null!==c&&c.$$typeof===I?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push("style",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},Ki=function(e,t,n,r){n!==r&&(t.flags|=4)};var dl="function"==typeof WeakMap?WeakMap:Map;function fl(e,t,n){(n=uo(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Kl||(Kl=!0,Ql=r),cl(0,t)},n}function pl(e,t,n){(n=uo(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var a=t.value;n.payload=function(){return cl(0,t),r(a)}}var o=e.stateNode;return null!==o&&"function"==typeof o.componentDidCatch&&(n.callback=function(){"function"!=typeof r&&(null===Xl?Xl=new Set([this]):Xl.add(this),cl(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}var ml="function"==typeof WeakSet?WeakSet:Set;function hl(e){var t=e.ref;if(null!==t)if("function"==typeof t)try{t(null)}catch(n){zs(e,n)}else t.current=null}function gl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:case 5:case 6:case 4:case 17:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ka(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Zr(t.stateNode.containerInfo))}throw Error(i(163))}function vl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3==(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var a=e;r=a.next,0!=(4&(a=a.tag))&&0!=(1&a)&&(Fs(n,e),Ms(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ka(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&mo(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:case 1:e=n.child.stateNode}mo(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&$r(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:case 19:case 17:case 20:case 21:case 23:case 24:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&kt(n)))))}throw Error(i(163))}function bl(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)"function"==typeof(r=r.style).setProperty?r.setProperty("display","none","important"):r.display="none";else{r=n.stateNode;var a=n.memoizedProps.style;a=null!=a&&a.hasOwnProperty("display")?a.display:null,r.style.display=we("display",a)}}else if(6===n.tag)n.stateNode.nodeValue=t?"":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function yl(e,t){if(Sa&&"function"==typeof Sa.onCommitFiberUnmount)try{Sa.onCommitFiberUnmount(Ea,t)}catch(o){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,a=r.destroy;if(r=r.tag,void 0!==a)if(0!=(4&r))Fs(t,n);else{r=t;try{a()}catch(o){zs(r,o)}}n=n.next}while(n!==e)}break;case 1:if(hl(t),"function"==typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(o){zs(t,o)}break;case 5:hl(t);break;case 4:Cl(e,t)}}function wl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function kl(e){return 5===e.tag||3===e.tag||4===e.tag}function El(e){e:{for(var t=e.return;null!==t;){if(kl(t))break e;t=t.return}throw Error(i(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(i(161))}16&n.flags&&(ve(t,""),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||kl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?Sl(e,n,t):xl(e,n,t)}function Sl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=jr));else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function xl(e,t,n){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(xl(e,t,n),e=e.sibling;null!==e;)xl(e,t,n),e=e.sibling}function Cl(e,t){for(var n,r,a=t,o=!1;;){if(!o){o=a.return;e:for(;;){if(null===o)throw Error(i(160));switch(n=o.stateNode,o.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}o=o.return}o=!0}if(5===a.tag||6===a.tag){e:for(var l=e,s=a,u=s;;)if(yl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=a.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(a.stateNode)}else if(4===a.tag){if(null!==a.child){n=a.stateNode.containerInfo,r=!0,a.child.return=a,a=a.child;continue}}else if(yl(e,a),null!==a.child){a.child.return=a,a=a.child;continue}if(a===t)break;for(;null===a.sibling;){if(null===a.return||a.return===t)return;4===(a=a.return).tag&&(o=!1)}a.sibling.return=a.return,a=a.sibling}}function Tl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3==(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:case 12:case 17:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var a=null!==e?e.memoizedProps:r;e=t.type;var o=t.updateQueue;if(t.updateQueue=null,null!==o){for(n[Xr]=r,"input"===e&&"radio"===r.type&&null!=r.name&&te(n,r),xe(e,a),t=xe(e,r),a=0;a<o.length;a+=2){var l=o[a],s=o[a+1];"style"===l?ke(n,s):"dangerouslySetInnerHTML"===l?ge(n,s):"children"===l?ve(n,s):w(n,l,s,t)}switch(e){case"input":ne(n,r);break;case"textarea":ue(n,r);break;case"select":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(o=r.value)?ie(n,!!r.multiple,o,!1):e!==!!r.multiple&&(null!=r.defaultValue?ie(n,!!r.multiple,r.defaultValue,!0):ie(n,!!r.multiple,r.multiple?[]:"",!1))}}}return;case 6:if(null===t.stateNode)throw Error(i(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,kt(n.containerInfo)));case 13:return null!==t.memoizedState&&(Gl=$a(),bl(t.child,!0)),void _l(t);case 19:return void _l(t);case 23:case 24:return void bl(t,null!==t.memoizedState)}throw Error(i(163))}function _l(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new ml),t.forEach((function(t){var r=$s.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function Al(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var Ll=Math.ceil,Rl=k.ReactCurrentDispatcher,Nl=k.ReactCurrentOwner,Pl=0,Ol=null,Dl=null,Il=0,Ml=0,Fl=sa(0),Bl=0,jl=null,zl=0,Ul=0,$l=0,ql=0,Hl=null,Gl=0,Zl=1/0;function Vl(){Zl=$a()+500}var Wl,Yl=null,Kl=!1,Ql=null,Xl=null,Jl=!1,es=null,ts=90,ns=[],rs=[],as=null,os=0,is=null,ls=-1,ss=0,us=0,cs=null,ds=!1;function fs(){return 0!=(48&Pl)?$a():-1!==ls?ls:ls=$a()}function ps(e){if(0==(2&(e=e.mode)))return 1;if(0==(4&e))return 99===qa()?1:2;if(0===ss&&(ss=zl),0!==Ya.transition){0!==us&&(us=null!==Hl?Hl.pendingLanes:0),e=ss;var t=4186112&~us;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=qa(),0!=(4&Pl)&&98===e?e=jt(12,ss):e=jt(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),ss),e}function ms(e,t,n){if(50<os)throw os=0,is=null,Error(i(185));if(null===(e=hs(e,t)))return null;$t(e,t,n),e===Ol&&($l|=t,4===Bl&&bs(e,Il));var r=qa();1===t?0!=(8&Pl)&&0==(48&Pl)?ys(e):(gs(e,n),0===Pl&&(Vl(),Va())):(0==(4&Pl)||98!==r&&99!==r||(null===as?as=new Set([e]):as.add(e)),gs(e,n)),Hl=e}function hs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function gs(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-qt(l),u=1<<s,c=o[s];if(-1===c){if(0==(u&r)||0!=(u&a)){c=t,Mt(u);var d=It;o[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=Ft(e,e===Ol?Il:0),t=It,0===r)null!==n&&(n!==Ma&&Ta(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Ma&&Ta(n)}15===t?(n=ys.bind(null,e),null===Ba?(Ba=[n],ja=Ca(Na,Wa)):Ba.push(n),n=Ma):14===t?n=Za(99,ys.bind(null,e)):(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(i(358,e))}}(t),n=Za(n,vs.bind(null,e))),e.callbackPriority=t,e.callbackNode=n}}function vs(e){if(ls=-1,us=ss=0,0!=(48&Pl))throw Error(i(327));var t=e.callbackNode;if(Is()&&e.callbackNode!==t)return null;var n=Ft(e,e===Ol?Il:0);if(0===n)return null;var r=n,a=Pl;Pl|=16;var o=Ts();for(Ol===e&&Il===r||(Vl(),xs(e,r));;)try{Ls();break}catch(s){Cs(e,s)}if(to(),Rl.current=o,Pl=a,null!==Dl?r=0:(Ol=null,Il=0,r=Bl),0!=(zl&$l))xs(e,0);else if(0!==r){if(2===r&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(n=Bt(e))&&(r=_s(e,n))),1===r)throw t=jl,xs(e,0),bs(e,n),gs(e,$a()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(i(345));case 2:case 5:Ps(e);break;case 3:if(bs(e,n),(62914560&n)===n&&10<(r=Gl+500-$a())){if(0!==Ft(e,0))break;if(((a=e.suspendedLanes)&n)!==n){fs(),e.pingedLanes|=e.suspendedLanes&a;break}e.timeoutHandle=Hr(Ps.bind(null,e),r);break}Ps(e);break;case 4:if(bs(e,n),(4186112&n)===n)break;for(r=e.eventTimes,a=-1;0<n;){var l=31-qt(n);o=1<<l,(l=r[l])>a&&(a=l),n&=~o}if(n=a,10<(n=(120>(n=$a()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*Ll(n/1960))-n)){e.timeoutHandle=Hr(Ps.bind(null,e),n);break}Ps(e);break;default:throw Error(i(329))}}return gs(e,$a()),e.callbackNode===t?vs.bind(null,e):null}function bs(e,t){for(t&=~ql,t&=~$l,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-qt(t),r=1<<n;e[n]=-1,t&=~r}}function ys(e){if(0!=(48&Pl))throw Error(i(327));if(Is(),e===Ol&&0!=(e.expiredLanes&Il)){var t=Il,n=_s(e,t);0!=(zl&$l)&&(n=_s(e,t=Ft(e,t)))}else n=_s(e,t=Ft(e,0));if(0!==e.tag&&2===n&&(Pl|=64,e.hydrate&&(e.hydrate=!1,Zr(e.containerInfo)),0!==(t=Bt(e))&&(n=_s(e,t))),1===n)throw n=jl,xs(e,0),bs(e,t),gs(e,$a()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ps(e),gs(e,$a()),null}function ws(e,t){var n=Pl;Pl|=1;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function ks(e,t){var n=Pl;Pl&=-2,Pl|=8;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}}function Es(e,t){ca(Fl,Ml),Ml|=t,zl|=t}function Ss(){Ml=Fl.current,ua(Fl)}function xs(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Gr(n)),null!==Dl)for(n=Dl.return;null!==n;){var r=n;switch(r.tag){case 1:null!=(r=r.type.childContextTypes)&&va();break;case 3:Do(),ua(pa),ua(fa),Yo();break;case 5:Mo(r);break;case 4:Do();break;case 13:case 19:ua(Fo);break;case 10:no(r);break;case 23:case 24:Ss()}n=n.return}Ol=e,Dl=Zs(e.current,null),Il=Ml=zl=t,Bl=0,jl=null,ql=$l=Ul=0}function Cs(e,t){for(;;){var n=Dl;try{if(to(),Ko.current=Ni,ni){for(var r=Jo.memoizedState;null!==r;){var a=r.queue;null!==a&&(a.pending=null),r=r.next}ni=!1}if(Xo=0,ti=ei=Jo=null,ri=!1,Nl.current=null,null===n||null===n.return){Bl=1,jl=t,Dl=null;break}e:{var o=e,i=n.return,l=n,s=t;if(t=Il,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&"object"==typeof s&&"function"==typeof s.then){var u=s;if(0==(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!=(1&Fo.current),f=i;do{var p;if(p=13===f.tag){var m=f.memoizedState;if(null!==m)p=null!==m.dehydrated;else{var h=f.memoizedProps;p=void 0!==h.fallback&&(!0!==h.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0==(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=uo(-1,1);b.tag=2,co(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=o.pingCache;if(null===y?(y=o.pingCache=new dl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=Us.bind(null,o,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((V(l.type)||"A React component")+" suspended while rendering, but no fallback UI was specified.\n\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.")}5!==Bl&&(Bl=2),s=ul(s,l),f=i;do{switch(f.tag){case 3:o=s,f.flags|=4096,t&=-t,f.lanes|=t,fo(f,fl(0,o,t));break e;case 1:o=s;var k=f.type,E=f.stateNode;if(0==(64&f.flags)&&("function"==typeof k.getDerivedStateFromError||null!==E&&"function"==typeof E.componentDidCatch&&(null===Xl||!Xl.has(E)))){f.flags|=4096,t&=-t,f.lanes|=t,fo(f,pl(f,o,t));break e}}f=f.return}while(null!==f)}Ns(n)}catch(S){t=S,Dl===n&&null!==n&&(Dl=n=n.return);continue}break}}function Ts(){var e=Rl.current;return Rl.current=Ni,null===e?Ni:e}function _s(e,t){var n=Pl;Pl|=16;var r=Ts();for(Ol===e&&Il===t||xs(e,t);;)try{As();break}catch(a){Cs(e,a)}if(to(),Pl=n,Rl.current=r,null!==Dl)throw Error(i(261));return Ol=null,Il=0,Bl}function As(){for(;null!==Dl;)Rs(Dl)}function Ls(){for(;null!==Dl&&!_a();)Rs(Dl)}function Rs(e){var t=Wl(e.alternate,e,Ml);e.memoizedProps=e.pendingProps,null===t?Ns(e):Dl=t,Nl.current=null}function Ns(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(2048&t.flags)){if(null!==(n=ll(n,t,Ml)))return void(Dl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!=(1073741824&Ml)||0==(4&n.mode)){for(var r=0,a=n.child;null!==a;)r|=a.lanes|a.childLanes,a=a.sibling;n.childLanes=r}null!==e&&0==(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=sl(t)))return n.flags&=2047,void(Dl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Dl=t);Dl=t=e}while(null!==t);0===Bl&&(Bl=5)}function Ps(e){var t=qa();return Ga(99,Os.bind(null,e,t)),null}function Os(e,t){do{Is()}while(null!==es);if(0!=(48&Pl))throw Error(i(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null;var r=n.lanes|n.childLanes,a=r,o=e.pendingLanes&~a;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=a,e.mutableReadLanes&=a,e.entangledLanes&=a,a=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<o;){var u=31-qt(o),c=1<<u;a[u]=0,l[u]=-1,s[u]=-1,o&=~c}if(null!==as&&0==(24&r)&&as.has(e)&&as.delete(e),e===Ol&&(Dl=Ol=null,Il=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(a=Pl,Pl|=32,Nl.current=null,zr=Wt,gr(l=hr())){if("selectionStart"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,o=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(T){s=null;break e}var d=0,f=-1,p=-1,m=0,h=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==o&&3!==g.nodeType||(f=d+o),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++m===o&&(f=d),v===u&&++h===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Wt=!1,cs=null,ds=!1,Yl=r;do{try{Ds()}catch(T){if(null===Yl)throw Error(i(330));zs(Yl,T),Yl=Yl.nextEffect}}while(null!==Yl);cs=null,Yl=r;do{try{for(l=e;null!==Yl;){var y=Yl.flags;if(16&y&&ve(Yl.stateNode,""),128&y){var w=Yl.alternate;if(null!==w){var k=w.ref;null!==k&&("function"==typeof k?k(null):k.current=null)}}switch(1038&y){case 2:El(Yl),Yl.flags&=-3;break;case 6:El(Yl),Yl.flags&=-3,Tl(Yl.alternate,Yl);break;case 1024:Yl.flags&=-1025;break;case 1028:Yl.flags&=-1025,Tl(Yl.alternate,Yl);break;case 4:Tl(Yl.alternate,Yl);break;case 8:Cl(l,s=Yl);var E=s.alternate;wl(s),null!==E&&wl(E)}Yl=Yl.nextEffect}}catch(T){if(null===Yl)throw Error(i(330));zs(Yl,T),Yl=Yl.nextEffect}}while(null!==Yl);if(k=Ur,w=hr(),y=k.focusedElem,l=k.selectionRange,w!==y&&y&&y.ownerDocument&&mr(y.ownerDocument.documentElement,y)){null!==l&&gr(y)&&(w=l.start,void 0===(k=l.end)&&(k=w),"selectionStart"in y?(y.selectionStart=w,y.selectionEnd=Math.min(k,y.value.length)):(k=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(k=k.getSelection(),s=y.textContent.length,E=Math.min(l.start,s),l=void 0===l.end?E:Math.min(l.end,s),!k.extend&&E>l&&(s=l,l=E,E=s),s=pr(y,E),o=pr(y,l),s&&o&&(1!==k.rangeCount||k.anchorNode!==s.node||k.anchorOffset!==s.offset||k.focusNode!==o.node||k.focusOffset!==o.offset)&&((w=w.createRange()).setStart(s.node,s.offset),k.removeAllRanges(),E>l?(k.addRange(w),k.extend(o.node,o.offset)):(w.setEnd(o.node,o.offset),k.addRange(w))))),w=[];for(k=y;k=k.parentNode;)1===k.nodeType&&w.push({element:k,left:k.scrollLeft,top:k.scrollTop});for("function"==typeof y.focus&&y.focus(),y=0;y<w.length;y++)(k=w[y]).element.scrollLeft=k.left,k.element.scrollTop=k.top}Wt=!!zr,Ur=zr=null,e.current=n,Yl=r;do{try{for(y=e;null!==Yl;){var S=Yl.flags;if(36&S&&vl(y,Yl.alternate,Yl),128&S){w=void 0;var x=Yl.ref;if(null!==x){var C=Yl.stateNode;Yl.tag,w=C,"function"==typeof x?x(w):x.current=w}}Yl=Yl.nextEffect}}catch(T){if(null===Yl)throw Error(i(330));zs(Yl,T),Yl=Yl.nextEffect}}while(null!==Yl);Yl=null,Fa(),Pl=a}else e.current=n;if(Jl)Jl=!1,es=e,ts=t;else for(Yl=r;null!==Yl;)t=Yl.nextEffect,Yl.nextEffect=null,8&Yl.flags&&((S=Yl).sibling=null,S.stateNode=null),Yl=t;if(0===(r=e.pendingLanes)&&(Xl=null),1===r?e===is?os++:(os=0,is=e):os=0,n=n.stateNode,Sa&&"function"==typeof Sa.onCommitFiberRoot)try{Sa.onCommitFiberRoot(Ea,n,void 0,64==(64&n.current.flags))}catch(T){}if(gs(e,$a()),Kl)throw Kl=!1,e=Ql,Ql=null,e;return 0!=(8&Pl)||Va(),null}function Ds(){for(;null!==Yl;){var e=Yl.alternate;ds||null===cs||(0!=(8&Yl.flags)?Je(Yl,cs)&&(ds=!0):13===Yl.tag&&Al(e,Yl)&&Je(Yl,cs)&&(ds=!0));var t=Yl.flags;0!=(256&t)&&gl(e,Yl),0==(512&t)||Jl||(Jl=!0,Za(97,(function(){return Is(),null}))),Yl=Yl.nextEffect}}function Is(){if(90!==ts){var e=97<ts?97:ts;return ts=90,Ga(e,Bs)}return!1}function Ms(e,t){ns.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function Fs(e,t){rs.push(t,e),Jl||(Jl=!0,Za(97,(function(){return Is(),null})))}function Bs(){if(null===es)return!1;var e=es;if(es=null,0!=(48&Pl))throw Error(i(331));var t=Pl;Pl|=32;var n=rs;rs=[];for(var r=0;r<n.length;r+=2){var a=n[r],o=n[r+1],l=a.destroy;if(a.destroy=void 0,"function"==typeof l)try{l()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(n=ns,ns=[],r=0;r<n.length;r+=2){a=n[r],o=n[r+1];try{var s=a.create;a.destroy=s()}catch(u){if(null===o)throw Error(i(330));zs(o,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Pl=t,Va(),!0}function js(e,t,n){co(e,t=fl(0,t=ul(n,t),1)),t=fs(),null!==(e=hs(e,1))&&($t(e,1,t),gs(e,t))}function zs(e,t){if(3===e.tag)js(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){js(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r))){var a=pl(n,e=ul(t,e),1);if(co(n,a),a=fs(),null!==(n=hs(n,1)))$t(n,1,a),gs(n,a);else if("function"==typeof r.componentDidCatch&&(null===Xl||!Xl.has(r)))try{r.componentDidCatch(t,e)}catch(o){}break}}n=n.return}}function Us(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=fs(),e.pingedLanes|=e.suspendedLanes&n,Ol===e&&(Il&n)===n&&(4===Bl||3===Bl&&(62914560&Il)===Il&&500>$a()-Gl?xs(e,0):ql|=n),gs(e,t)}function $s(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0==(2&(t=e.mode))?t=1:0==(4&t)?t=99===qa()?1:2:(0===ss&&(ss=zl),0===(t=zt(62914560&~ss))&&(t=4194304))),n=fs(),null!==(e=hs(e,t))&&($t(e,t,n),gs(e,n))}function qs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Hs(e,t,n,r){return new qs(e,t,n,r)}function Gs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Zs(e,t){var n=e.alternate;return null===n?((n=Hs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Vs(e,t,n,r,a,o){var l=2;if(r=e,"function"==typeof e)Gs(e)&&(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Ws(n.children,a,o,t);case M:l=8,a|=16;break;case C:l=8,a|=1;break;case T:return(e=Hs(12,n,t,8|a)).elementType=T,e.type=T,e.lanes=o,e;case R:return(e=Hs(13,n,t,a)).type=R,e.elementType=R,e.lanes=o,e;case N:return(e=Hs(19,n,t,a)).elementType=N,e.lanes=o,e;case F:return Ys(n,a,o,t);case B:return(e=Hs(24,n,t,a)).elementType=B,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case _:l=10;break e;case A:l=9;break e;case L:l=11;break e;case P:l=14;break e;case O:l=16,r=null;break e;case D:l=22;break e}throw Error(i(130,null==e?e:typeof e,""))}return(t=Hs(l,n,t,a)).elementType=e,t.type=r,t.lanes=o,t}function Ws(e,t,n,r){return(e=Hs(7,e,r,t)).lanes=n,e}function Ys(e,t,n,r){return(e=Hs(23,e,r,t)).elementType=F,e.lanes=n,e}function Ks(e,t,n){return(e=Hs(6,e,null,t)).lanes=n,e}function Qs(e,t,n){return(t=Hs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Xs(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Ut(0),this.expirationTimes=Ut(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ut(0),this.mutableSourceEagerHydrationData=null}function Js(e,t,n,r){var a=t.current,o=fs(),l=ps(a);e:if(n){t:{if(Ye(n=n._reactInternals)!==n||1!==n.tag)throw Error(i(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(ga(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(i(171))}if(1===n.tag){var u=n.type;if(ga(u)){n=ya(n,u,s);break e}}n=s}else n=da;return null===t.context?t.context=n:t.pendingContext=n,(t=uo(o,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),co(a,t),ms(a,l,o),l}function eu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function tu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function nu(e,t){tu(e,t),(e=e.alternate)&&tu(e,t)}function ru(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Xs(e,t,null!=n&&!0===n.hydrate),t=Hs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,lo(t),e[Jr]=n.current,Nr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var a=(t=r[e])._getVersion;a=a(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,a]:n.mutableSourceEagerHydrationData.push(t,a)}this._internalRoot=n}function au(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function ou(e,t,n,r,a){var o=n._reactRootContainer;if(o){var i=o._internalRoot;if("function"==typeof a){var l=a;a=function(){var e=eu(i);l.call(e)}}Js(t,i,e,a)}else{if(o=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute("data-reactroot"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new ru(e,0,t?{hydrate:!0}:void 0)}(n,r),i=o._internalRoot,"function"==typeof a){var s=a;a=function(){var e=eu(i);s.call(e)}}ks((function(){Js(t,i,e,a)}))}return eu(i)}function iu(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!au(t))throw Error(i(200));return function(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:S,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}(e,t,null,n)}Wl=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||pa.current)Mi=!0;else{if(0==(n&r)){switch(Mi=!1,t.tag){case 3:Zi(t),Vo();break;case 5:Io(t);break;case 1:ga(t.type)&&wa(t);break;case 4:Oo(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var a=t.type._context;ca(Qa,a._currentValue),a._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!=(n&t.child.childLanes)?Xi(e,t,n):(ca(Fo,1&Fo.current),null!==(t=ol(e,t,n))?t.sibling:null);ca(Fo,1&Fo.current);break;case 19:if(r=0!=(n&t.childLanes),0!=(64&e.flags)){if(r)return al(e,t,n);t.flags|=64}if(null!==(a=t.memoizedState)&&(a.rendering=null,a.tail=null,a.lastEffect=null),ca(Fo,Fo.current),r)break;return null;case 23:case 24:return t.lanes=0,Ui(e,t,n)}return ol(e,t,n)}Mi=0!=(16384&e.flags)}else Mi=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=ha(t,fa.current),ao(t,n),a=ii(null,t,r,e,a,n),t.flags|=1,"object"==typeof a&&null!==a&&"function"==typeof a.render&&void 0===a.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,ga(r)){var o=!0;wa(t)}else o=!1;t.memoizedState=null!==a.state&&void 0!==a.state?a.state:null,lo(t);var l=r.getDerivedStateFromProps;"function"==typeof l&&go(t,r,l,e),a.updater=vo,t.stateNode=a,a._reactInternals=t,ko(t,r,e,n),t=Gi(null,t,r,!0,o,n)}else t.tag=0,Fi(null,t,a,n),t=t.child;return t;case 16:a=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,a=(o=a._init)(a._payload),t.type=a,o=t.tag=function(e){if("function"==typeof e)return Gs(e)?1:0;if(null!=e){if((e=e.$$typeof)===L)return 11;if(e===P)return 14}return 2}(a),e=Ka(a,e),o){case 0:t=qi(null,t,a,e,n);break e;case 1:t=Hi(null,t,a,e,n);break e;case 11:t=Bi(null,t,a,e,n);break e;case 14:t=ji(null,t,a,Ka(a.type,e),r,n);break e}throw Error(i(306,a,""))}return t;case 0:return r=t.type,a=t.pendingProps,qi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 1:return r=t.type,a=t.pendingProps,Hi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 3:if(Zi(t),r=t.updateQueue,null===e||null===r)throw Error(i(282));if(r=t.pendingProps,a=null!==(a=t.memoizedState)?a.element:null,so(e,t),po(t,r,null,n),(r=t.memoizedState.element)===a)Vo(),t=ol(e,t,n);else{if((o=(a=t.stateNode).hydrate)&&(zo=Vr(t.stateNode.containerInfo.firstChild),jo=t,o=Uo=!0),o){if(null!=(e=a.mutableSourceEagerHydrationData))for(a=0;a<e.length;a+=2)(o=e[a])._workInProgressVersionPrimary=e[a+1],Wo.push(o);for(n=_o(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Fi(e,t,r,n),Vo();t=t.child}return t;case 5:return Io(t),null===e&&Ho(t),r=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,l=a.children,qr(r,a)?l=null:null!==o&&qr(r,o)&&(t.flags|=16),$i(e,t),Fi(e,t,l,n),t.child;case 6:return null===e&&Ho(t),null;case 13:return Xi(e,t,n);case 4:return Oo(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=To(t,null,r,n):Fi(e,t,r,n),t.child;case 11:return r=t.type,a=t.pendingProps,Bi(e,t,r,a=t.elementType===r?a:Ka(r,a),n);case 7:return Fi(e,t,t.pendingProps,n),t.child;case 8:case 12:return Fi(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,a=t.pendingProps,l=t.memoizedProps,o=a.value;var s=t.type._context;if(ca(Qa,s._currentValue),s._currentValue=o,null!==l)if(s=l.value,0===(o=ur(s,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(s,o):1073741823))){if(l.children===a.children&&!pa.current){t=ol(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===s.tag&&((c=uo(-1,n&-n)).tag=2,co(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ro(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Fi(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,r=(o=t.pendingProps).children,ao(t,n),r=r(a=oo(a,o.unstable_observedBits)),t.flags|=1,Fi(e,t,r,n),t.child;case 14:return o=Ka(a=t.type,t.pendingProps),ji(e,t,a,o=Ka(a.type,o),r,n);case 15:return zi(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,a=t.pendingProps,a=t.elementType===r?a:Ka(r,a),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,ga(r)?(e=!0,wa(t)):e=!1,ao(t,n),yo(t,r,a),ko(t,r,a,n),Gi(null,t,r,!0,e,n);case 19:return al(e,t,n);case 23:case 24:return Ui(e,t,n)}throw Error(i(156,t.tag))},ru.prototype.render=function(e){Js(e,this._internalRoot,null,null)},ru.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Js(null,e,null,(function(){t[Jr]=null}))},et=function(e){13===e.tag&&(ms(e,4,fs()),nu(e,4))},tt=function(e){13===e.tag&&(ms(e,67108864,fs()),nu(e,67108864))},nt=function(e){if(13===e.tag){var t=fs(),n=ps(e);ms(e,n,t),nu(e,n)}},rt=function(e,t){return t()},Te=function(e,t,n){switch(t){case"input":if(ne(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var a=aa(r);if(!a)throw Error(i(90));Q(r),ne(r,a)}}}break;case"textarea":ue(e,n);break;case"select":null!=(t=n.value)&&ie(e,!!n.multiple,t,!1)}},Pe=ws,Oe=function(e,t,n,r,a){var o=Pl;Pl|=4;try{return Ga(98,e.bind(null,t,n,r,a))}finally{0===(Pl=o)&&(Vl(),Va())}},De=function(){0==(49&Pl)&&(function(){if(null!==as){var e=as;as=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,gs(e,$a())}))}Va()}(),Is())},Ie=function(e,t){var n=Pl;Pl|=2;try{return e(t)}finally{0===(Pl=n)&&(Vl(),Va())}};var lu={Events:[na,ra,aa,Re,Ne,Is,{current:!1}]},su={findFiberByHostInstance:ta,bundleType:0,version:"17.0.2",rendererPackageName:"react-dom"},uu={bundleType:su.bundleType,version:su.version,rendererPackageName:su.rendererPackageName,rendererConfig:su.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:k.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Xe(e))?null:e.stateNode},findFiberByHostInstance:su.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var cu=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!cu.isDisabled&&cu.supportsFiber)try{Ea=cu.inject(uu),Sa=cu}catch(he){}}t.hydrate=function(e,t,n){if(!au(t))throw Error(i(200));return ou(null,e,t,!0,n)}},3935:(e,t,n)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4448)},9590:e=>{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,a="function"==typeof ArrayBuffer&&!!ArrayBuffer.isView;function o(e,i){if(e===i)return!0;if(e&&i&&"object"==typeof e&&"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!o(e[s],i[s]))return!1;return!0}if(n&&e instanceof Map&&i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!o(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&&e instanceof Set&&i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(a&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&&e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf&&"function"==typeof e.valueOf&&"function"==typeof i.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString&&"function"==typeof e.toString&&"function"==typeof i.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&&e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&&"__v"!==u[s]&&"__o"!==u[s]||!e.$$typeof)&&!o(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&&i!=i}e.exports=function(e,t){try{return o(e,t)}catch(n){if((n.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw n}}},405:(e,t,n)=>{"use strict";n.d(t,{B6:()=>G,ql:()=>J});var r=n(7294),a=n(5697),o=n.n(a),i=n(9590),l=n.n(i),s=n(1143),u=n.n(s),c=n(6774),d=n.n(c);function f(){return f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},f.apply(this,arguments)}function p(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,m(e,t)}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function h(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(n=o[r])>=0||(a[n]=e[n]);return a}var g={BASE:"base",BODY:"body",HEAD:"head",HTML:"html",LINK:"link",META:"meta",NOSCRIPT:"noscript",SCRIPT:"script",STYLE:"style",TITLE:"title",FRAGMENT:"Symbol(react.fragment)"},v={rel:["amphtml","canonical","alternate"]},b={type:["application/ld+json"]},y={charset:"",name:["robots","description"],property:["og:type","og:title","og:url","og:image","og:image:alt","og:description","twitter:url","twitter:title","twitter:description","twitter:image","twitter:image:alt","twitter:card","twitter:site"]},w=Object.keys(g).map((function(e){return g[e]})),k={accesskey:"accessKey",charset:"charSet",class:"className",contenteditable:"contentEditable",contextmenu:"contextMenu","http-equiv":"httpEquiv",itemprop:"itemProp",tabindex:"tabIndex"},E=Object.keys(k).reduce((function(e,t){return e[k[t]]=t,e}),{}),S=function(e,t){for(var n=e.length-1;n>=0;n-=1){var r=e[n];if(Object.prototype.hasOwnProperty.call(r,t))return r[t]}return null},x=function(e){var t=S(e,g.TITLE),n=S(e,"titleTemplate");if(Array.isArray(t)&&(t=t.join("")),n&&t)return n.replace(/%s/g,(function(){return t}));var r=S(e,"defaultTitle");return t||r||void 0},C=function(e){return S(e,"onChangeClientState")||function(){}},T=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return f({},e,t)}),{})},_=function(e,t){return t.filter((function(e){return void 0!==e[g.BASE]})).map((function(e){return e[g.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),a=0;a<r.length;a+=1){var o=r[a].toLowerCase();if(-1!==e.indexOf(o)&&n[o])return t.concat(n)}return t}),[])},A=function(e,t,n){var r={};return n.filter((function(t){return!!Array.isArray(t[e])||(void 0!==t[e]&&console&&"function"==typeof console.warn&&console.warn("Helmet: "+e+' should be of type "Array". Instead found type "'+typeof t[e]+'"'),!1)})).map((function(t){return t[e]})).reverse().reduce((function(e,n){var a={};n.filter((function(e){for(var n,o=Object.keys(e),i=0;i<o.length;i+=1){var l=o[i],s=l.toLowerCase();-1===t.indexOf(s)||"rel"===n&&"canonical"===e[n].toLowerCase()||"rel"===s&&"stylesheet"===e[s].toLowerCase()||(n=s),-1===t.indexOf(l)||"innerHTML"!==l&&"cssText"!==l&&"itemprop"!==l||(n=l)}if(!n||!e[n])return!1;var u=e[n].toLowerCase();return r[n]||(r[n]={}),a[n]||(a[n]={}),!r[n][u]&&(a[n][u]=!0,!0)})).reverse().forEach((function(t){return e.push(t)}));for(var o=Object.keys(a),i=0;i<o.length;i+=1){var l=o[i],s=f({},r[l],a[l]);r[l]=s}return e}),[]).reverse()},L=function(e,t){if(Array.isArray(e)&&e.length)for(var n=0;n<e.length;n+=1)if(e[n][t])return!0;return!1},R=function(e){return Array.isArray(e)?e.join(""):e},N=function(e,t){return Array.isArray(e)?e.reduce((function(e,n){return function(e,t){for(var n=Object.keys(e),r=0;r<n.length;r+=1)if(t[n[r]]&&t[n[r]].includes(e[n[r]]))return!0;return!1}(n,t)?e.priority.push(n):e.default.push(n),e}),{priority:[],default:[]}):{default:e}},P=function(e,t){var n;return f({},e,((n={})[t]=void 0,n))},O=[g.NOSCRIPT,g.SCRIPT,g.STYLE],D=function(e,t){return void 0===t&&(t=!0),!1===t?String(e):String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},I=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},M=function(e,t){return void 0===t&&(t={}),Object.keys(e).reduce((function(t,n){return t[k[n]||n]=e[n],t}),t)},F=function(e,t){return t.map((function(t,n){var a,o=((a={key:n})["data-rh"]=!0,a);return Object.keys(t).forEach((function(e){var n=k[e]||e;"innerHTML"===n||"cssText"===n?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]})),r.createElement(e,o)}))},B=function(e,t,n){switch(e){case g.TITLE:return{toComponent:function(){return n=t.titleAttributes,(a={key:e=t.title})["data-rh"]=!0,o=M(n,a),[r.createElement(g.TITLE,o,e)];var e,n,a,o},toString:function(){return function(e,t,n,r){var a=I(n),o=R(t);return a?"<"+e+' data-rh="true" '+a+">"+D(o,r)+"</"+e+">":"<"+e+' data-rh="true">'+D(o,r)+"</"+e+">"}(e,t.title,t.titleAttributes,n)}};case"bodyAttributes":case"htmlAttributes":return{toComponent:function(){return M(t)},toString:function(){return I(t)}};default:return{toComponent:function(){return F(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var a=Object.keys(r).filter((function(e){return!("innerHTML"===e||"cssText"===e)})).reduce((function(e,t){var a=void 0===r[t]?t:t+'="'+D(r[t],n)+'"';return e?e+" "+a:a}),""),o=r.innerHTML||r.cssText||"",i=-1===O.indexOf(e);return t+"<"+e+' data-rh="true" '+a+(i?"/>":">"+o+"</"+e+">")}),"")}(e,t,n)}}}},j=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,a=e.htmlAttributes,o=e.noscriptTags,i=e.styleTags,l=e.title,s=void 0===l?"":l,u=e.titleAttributes,c=e.linkTags,d=e.metaTags,f=e.scriptTags,p={toComponent:function(){},toString:function(){return""}};if(e.prioritizeSeoTags){var m=function(e){var t=e.linkTags,n=e.scriptTags,r=e.encode,a=N(e.metaTags,y),o=N(t,v),i=N(n,b);return{priorityMethods:{toComponent:function(){return[].concat(F(g.META,a.priority),F(g.LINK,o.priority),F(g.SCRIPT,i.priority))},toString:function(){return B(g.META,a.priority,r)+" "+B(g.LINK,o.priority,r)+" "+B(g.SCRIPT,i.priority,r)}},metaTags:a.default,linkTags:o.default,scriptTags:i.default}}(e);p=m.priorityMethods,c=m.linkTags,d=m.metaTags,f=m.scriptTags}return{priority:p,base:B(g.BASE,t,r),bodyAttributes:B("bodyAttributes",n,r),htmlAttributes:B("htmlAttributes",a,r),link:B(g.LINK,c,r),meta:B(g.META,d,r),noscript:B(g.NOSCRIPT,o,r),script:B(g.SCRIPT,f,r),style:B(g.STYLE,i,r),title:B(g.TITLE,{title:s,titleAttributes:u},r)}},z=[],U=function(e,t){var n=this;void 0===t&&(t="undefined"!=typeof document),this.instances=[],this.value={setHelmet:function(e){n.context.helmet=e},helmetInstances:{get:function(){return n.canUseDOM?z:n.instances},add:function(e){(n.canUseDOM?z:n.instances).push(e)},remove:function(e){var t=(n.canUseDOM?z:n.instances).indexOf(e);(n.canUseDOM?z:n.instances).splice(t,1)}}},this.context=e,this.canUseDOM=t,t||(e.helmet=j({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}}))},$=r.createContext({}),q=o().shape({setHelmet:o().func,helmetInstances:o().shape({get:o().func,add:o().func,remove:o().func})}),H="undefined"!=typeof document,G=function(e){function t(n){var r;return(r=e.call(this,n)||this).helmetData=new U(r.props.context,t.canUseDOM),r}return p(t,e),t.prototype.render=function(){return r.createElement($.Provider,{value:this.helmetData.value},this.props.children)},t}(r.Component);G.canUseDOM=H,G.propTypes={context:o().shape({helmet:o().shape()}),children:o().node.isRequired},G.defaultProps={context:{}},G.displayName="HelmetProvider";var Z=function(e,t){var n,r=document.head||document.querySelector(g.HEAD),a=r.querySelectorAll(e+"[data-rh]"),o=[].slice.call(a),i=[];return t&&t.length&&t.forEach((function(t){var r=document.createElement(e);for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&("innerHTML"===a?r.innerHTML=t.innerHTML:"cssText"===a?r.styleSheet?r.styleSheet.cssText=t.cssText:r.appendChild(document.createTextNode(t.cssText)):r.setAttribute(a,void 0===t[a]?"":t[a]));r.setAttribute("data-rh","true"),o.some((function(e,t){return n=t,r.isEqualNode(e)}))?o.splice(n,1):i.push(r)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),i.forEach((function(e){return r.appendChild(e)})),{oldTags:o,newTags:i}},V=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute("data-rh"),a=r?r.split(","):[],o=[].concat(a),i=Object.keys(t),l=0;l<i.length;l+=1){var s=i[l],u=t[s]||"";n.getAttribute(s)!==u&&n.setAttribute(s,u),-1===a.indexOf(s)&&a.push(s);var c=o.indexOf(s);-1!==c&&o.splice(c,1)}for(var d=o.length-1;d>=0;d-=1)n.removeAttribute(o[d]);a.length===o.length?n.removeAttribute("data-rh"):n.getAttribute("data-rh")!==i.join(",")&&n.setAttribute("data-rh",i.join(","))}},W=function(e,t){var n=e.baseTag,r=e.htmlAttributes,a=e.linkTags,o=e.metaTags,i=e.noscriptTags,l=e.onChangeClientState,s=e.scriptTags,u=e.styleTags,c=e.title,d=e.titleAttributes;V(g.BODY,e.bodyAttributes),V(g.HTML,r),function(e,t){void 0!==e&&document.title!==e&&(document.title=R(e)),V(g.TITLE,t)}(c,d);var f={baseTag:Z(g.BASE,n),linkTags:Z(g.LINK,a),metaTags:Z(g.META,o),noscriptTags:Z(g.NOSCRIPT,i),scriptTags:Z(g.SCRIPT,s),styleTags:Z(g.STYLE,u)},p={},m={};Object.keys(f).forEach((function(e){var t=f[e],n=t.newTags,r=t.oldTags;n.length&&(p[e]=n),r.length&&(m[e]=f[e].oldTags)})),t&&t(),l(e,p,m)},Y=null,K=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).rendered=!1,t}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!d()(e,this.props)},n.componentDidUpdate=function(){this.emitChange()},n.componentWillUnmount=function(){this.props.context.helmetInstances.remove(this),this.emitChange()},n.emitChange=function(){var e,t,n=this.props.context,r=n.setHelmet,a=null,o=(e=n.helmetInstances.get().map((function(e){var t=f({},e.props);return delete t.context,t})),{baseTag:_(["href"],e),bodyAttributes:T("bodyAttributes",e),defer:S(e,"defer"),encode:S(e,"encodeSpecialCharacters"),htmlAttributes:T("htmlAttributes",e),linkTags:A(g.LINK,["rel","href"],e),metaTags:A(g.META,["name","charset","http-equiv","property","itemprop"],e),noscriptTags:A(g.NOSCRIPT,["innerHTML"],e),onChangeClientState:C(e),scriptTags:A(g.SCRIPT,["src","innerHTML"],e),styleTags:A(g.STYLE,["cssText"],e),title:x(e),titleAttributes:T("titleAttributes",e),prioritizeSeoTags:L(e,"prioritizeSeoTags")});G.canUseDOM?(t=o,Y&&cancelAnimationFrame(Y),t.defer?Y=requestAnimationFrame((function(){W(t,(function(){Y=null}))})):(W(t),Y=null)):j&&(a=j(o)),r(a)},n.init=function(){this.rendered||(this.rendered=!0,this.props.context.helmetInstances.add(this),this.emitChange())},n.render=function(){return this.init(),null},t}(r.Component);K.propTypes={context:q.isRequired},K.displayName="HelmetDispatcher";var Q=["children"],X=["children"],J=function(e){function t(){return e.apply(this,arguments)||this}p(t,e);var n=t.prototype;return n.shouldComponentUpdate=function(e){return!l()(P(this.props,"helmetData"),P(e,"helmetData"))},n.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case g.SCRIPT:case g.NOSCRIPT:return{innerHTML:t};case g.STYLE:return{cssText:t};default:throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")}},n.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren;return f({},r,((t={})[n.type]=[].concat(r[n.type]||[],[f({},e.newChildProps,this.mapNestedChildrenToProps(n,e.nestedChildren))]),t))},n.mapObjectTypeChildren=function(e){var t,n,r=e.child,a=e.newProps,o=e.newChildProps,i=e.nestedChildren;switch(r.type){case g.TITLE:return f({},a,((t={})[r.type]=i,t.titleAttributes=f({},o),t));case g.BODY:return f({},a,{bodyAttributes:f({},o)});case g.HTML:return f({},a,{htmlAttributes:f({},o)});default:return f({},a,((n={})[r.type]=f({},o),n))}},n.mapArrayTypeChildrenToProps=function(e,t){var n=f({},t);return Object.keys(e).forEach((function(t){var r;n=f({},n,((r={})[t]=e[t],r))})),n},n.warnOnInvalidChildren=function(e,t){return u()(w.some((function(t){return e.type===t})),"function"==typeof e.type?"You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.":"Only elements types "+w.join(", ")+" are allowed. Helmet does not support rendering <"+e.type+"> elements. Refer to our API for more information."),u()(!t||"string"==typeof t||Array.isArray(t)&&!t.some((function(e){return"string"!=typeof e})),"Helmet expects a string as a child of <"+e.type+">. Did you forget to wrap your children in braces? ( <"+e.type+">{``}</"+e.type+"> ) Refer to our API for more information."),!0},n.mapChildrenToProps=function(e,t){var n=this,a={};return r.Children.forEach(e,(function(e){if(e&&e.props){var r=e.props,o=r.children,i=h(r,Q),l=Object.keys(i).reduce((function(e,t){return e[E[t]||t]=i[t],e}),{}),s=e.type;switch("symbol"==typeof s?s=s.toString():n.warnOnInvalidChildren(e,o),s){case g.FRAGMENT:t=n.mapChildrenToProps(o,t);break;case g.LINK:case g.META:case g.NOSCRIPT:case g.SCRIPT:case g.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:o});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:o})}}})),this.mapArrayTypeChildrenToProps(a,t)},n.render=function(){var e=this.props,t=e.children,n=h(e,X),a=f({},n),o=n.helmetData;return t&&(a=this.mapChildrenToProps(t,a)),!o||o instanceof U||(o=new U(o.context,o.instances)),o?r.createElement(K,f({},a,{context:o.value,helmetData:void 0})):r.createElement($.Consumer,null,(function(e){return r.createElement(K,f({},a,{context:e}))}))},t}(r.Component);J.propTypes={base:o().object,bodyAttributes:o().object,children:o().oneOfType([o().arrayOf(o().node),o().node]),defaultTitle:o().string,defer:o().bool,encodeSpecialCharacters:o().bool,htmlAttributes:o().object,link:o().arrayOf(o().object),meta:o().arrayOf(o().object),noscript:o().arrayOf(o().object),onChangeClientState:o().func,script:o().arrayOf(o().object),style:o().arrayOf(o().object),title:o().string,titleAttributes:o().object,titleTemplate:o().string,prioritizeSeoTags:o().bool,helmetData:o().object},J.defaultProps={defer:!0,encodeSpecialCharacters:!0,prioritizeSeoTags:!1},J.displayName="Helmet"},9921:(e,t)=>{"use strict";var n="function"==typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,a=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,f=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,m=n?Symbol.for("react.suspense_list"):60120,h=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,b=n?Symbol.for("react.fundamental"):60117,y=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function k(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case l:case i:case p:return e;default:switch(e=e&&e.$$typeof){case u:case f:case g:case h:case s:return e;default:return t}}case a:return t}}}function E(e){return k(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=f,t.Fragment=o,t.Lazy=g,t.Memo=h,t.Portal=a,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return E(e)||k(e)===c},t.isConcurrentMode=E,t.isContextConsumer=function(e){return k(e)===u},t.isContextProvider=function(e){return k(e)===s},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return k(e)===f},t.isFragment=function(e){return k(e)===o},t.isLazy=function(e){return k(e)===g},t.isMemo=function(e){return k(e)===h},t.isPortal=function(e){return k(e)===a},t.isProfiler=function(e){return k(e)===l},t.isStrictMode=function(e){return k(e)===i},t.isSuspense=function(e){return k(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===o||e===d||e===l||e===i||e===p||e===m||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===h||e.$$typeof===s||e.$$typeof===u||e.$$typeof===f||e.$$typeof===b||e.$$typeof===y||e.$$typeof===w||e.$$typeof===v)},t.typeOf=k},9864:(e,t,n)=>{"use strict";e.exports=n(9921)},8356:(e,t,n)=>{"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function a(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(this,arguments)}var l=n(7294),s=n(5697),u=[],c=[];function d(e){var t=e(),n={loading:!0,loaded:null,error:null};return n.promise=t.then((function(e){return n.loading=!1,n.loaded=e,e})).catch((function(e){throw n.loading=!1,n.error=e,e})),n}function f(e){var t={loading:!1,loaded:{},error:null},n=[];try{Object.keys(e).forEach((function(r){var a=d(e[r]);a.loading?t.loading=!0:(t.loaded[r]=a.loaded,t.error=a.error),n.push(a.promise),a.promise.then((function(e){t.loaded[r]=e})).catch((function(e){t.error=e}))}))}catch(r){t.error=r}return t.promise=Promise.all(n).then((function(e){return t.loading=!1,e})).catch((function(e){throw t.loading=!1,e})),t}function p(e,t){return l.createElement((n=e)&&n.__esModule?n.default:n,t);var n}function m(e,t){var d,f;if(!t.loading)throw new Error("react-loadable requires a `loading` component");var m=i({loader:null,loading:null,delay:200,timeout:null,render:p,webpack:null,modules:null},t),h=null;function g(){return h||(h=e(m.loader)),h.promise}return u.push(g),"function"==typeof m.webpack&&c.push((function(){if((0,m.webpack)().every((function(e){return void 0!==e&&void 0!==n.m[e]})))return g()})),f=d=function(t){function n(n){var r;return o(a(a(r=t.call(this,n)||this)),"retry",(function(){r.setState({error:null,loading:!0,timedOut:!1}),h=e(m.loader),r._loadModule()})),g(),r.state={error:h.error,pastDelay:!1,timedOut:!1,loading:h.loading,loaded:h.loaded},r}r(n,t),n.preload=function(){return g()};var i=n.prototype;return i.UNSAFE_componentWillMount=function(){this._loadModule()},i.componentDidMount=function(){this._mounted=!0},i._loadModule=function(){var e=this;if(this.context.loadable&&Array.isArray(m.modules)&&m.modules.forEach((function(t){e.context.loadable.report(t)})),h.loading){var t=function(t){e._mounted&&e.setState(t)};"number"==typeof m.delay&&(0===m.delay?this.setState({pastDelay:!0}):this._delay=setTimeout((function(){t({pastDelay:!0})}),m.delay)),"number"==typeof m.timeout&&(this._timeout=setTimeout((function(){t({timedOut:!0})}),m.timeout));var n=function(){t({error:h.error,loaded:h.loaded,loading:h.loading}),e._clearTimeouts()};h.promise.then((function(){return n(),null})).catch((function(e){return n(),null}))}},i.componentWillUnmount=function(){this._mounted=!1,this._clearTimeouts()},i._clearTimeouts=function(){clearTimeout(this._delay),clearTimeout(this._timeout)},i.render=function(){return this.state.loading||this.state.error?l.createElement(m.loading,{isLoading:this.state.loading,pastDelay:this.state.pastDelay,timedOut:this.state.timedOut,error:this.state.error,retry:this.retry}):this.state.loaded?m.render(this.state.loaded,this.props):null},n}(l.Component),o(d,"contextTypes",{loadable:s.shape({report:s.func.isRequired})}),f}function h(e){return m(d,e)}h.Map=function(e){if("function"!=typeof e.render)throw new Error("LoadableMap requires a `render(loaded, props)` function");return m(f,e)};var g=function(e){function t(){return e.apply(this,arguments)||this}r(t,e);var n=t.prototype;return n.getChildContext=function(){return{loadable:{report:this.props.report}}},n.render=function(){return l.Children.only(this.props.children)},t}(l.Component);function v(e){for(var t=[];e.length;){var n=e.pop();t.push(n())}return Promise.all(t).then((function(){if(e.length)return v(e)}))}o(g,"propTypes",{report:s.func.isRequired}),o(g,"childContextTypes",{loadable:s.shape({report:s.func.isRequired}).isRequired}),h.Capture=g,h.preloadAll=function(){return new Promise((function(e,t){v(u).then(e,t)}))},h.preloadReady=function(){return new Promise((function(e,t){v(c).then(e,e)}))},e.exports=h},8790:(e,t,n)=>{"use strict";n.d(t,{H:()=>l,f:()=>i});var r=n(6550),a=n(7462),o=n(7294);function i(e,t,n){return void 0===n&&(n=[]),e.some((function(e){var a=e.path?(0,r.LX)(t,e):n.length?n[n.length-1].match:r.F0.computeRootMatch(t);return a&&(n.push({route:e,match:a}),e.routes&&i(e.routes,t,n)),a})),n}function l(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e?o.createElement(r.rs,n,e.map((function(e,n){return o.createElement(r.AW,{key:e.key||n,path:e.path,exact:e.exact,strict:e.strict,render:function(n){return e.render?e.render((0,a.Z)({},n,{},t,{route:e})):o.createElement(e.component,(0,a.Z)({},n,t,{route:e}))}})}))):null}},3727:(e,t,n)=>{"use strict";n.d(t,{OL:()=>y,VK:()=>c,rU:()=>g});var r=n(6550),a=n(5068),o=n(7294),i=n(9318),l=n(7462),s=n(3366),u=n(8776),c=function(e){function t(){for(var t,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(t=e.call.apply(e,[this].concat(r))||this).history=(0,i.lX)(t.props),t}return(0,a.Z)(t,e),t.prototype.render=function(){return o.createElement(r.F0,{history:this.history,children:this.props.children})},t}(o.Component);o.Component;var d=function(e,t){return"function"==typeof e?e(t):e},f=function(e,t){return"string"==typeof e?(0,i.ob)(e,null,null,t):e},p=function(e){return e},m=o.forwardRef;void 0===m&&(m=p);var h=m((function(e,t){var n=e.innerRef,r=e.navigate,a=e.onClick,i=(0,s.Z)(e,["innerRef","navigate","onClick"]),u=i.target,c=(0,l.Z)({},i,{onClick:function(e){try{a&&a(e)}catch(t){throw e.preventDefault(),t}e.defaultPrevented||0!==e.button||u&&"_self"!==u||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)||(e.preventDefault(),r())}});return c.ref=p!==m&&t||n,o.createElement("a",c)}));var g=m((function(e,t){var n=e.component,a=void 0===n?h:n,c=e.replace,g=e.to,v=e.innerRef,b=(0,s.Z)(e,["component","replace","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=e.history,r=f(d(g,e.location),e.location),s=r?n.createHref(r):"",h=(0,l.Z)({},b,{href:s,navigate:function(){var t=d(g,e.location),r=(0,i.Ep)(e.location)===(0,i.Ep)(f(t));(c||r?n.replace:n.push)(t)}});return p!==m?h.ref=t||v:h.innerRef=v,o.createElement(a,h)}))})),v=function(e){return e},b=o.forwardRef;void 0===b&&(b=v);var y=b((function(e,t){var n=e["aria-current"],a=void 0===n?"page":n,i=e.activeClassName,c=void 0===i?"active":i,p=e.activeStyle,m=e.className,h=e.exact,y=e.isActive,w=e.location,k=e.sensitive,E=e.strict,S=e.style,x=e.to,C=e.innerRef,T=(0,s.Z)(e,["aria-current","activeClassName","activeStyle","className","exact","isActive","location","sensitive","strict","style","to","innerRef"]);return o.createElement(r.s6.Consumer,null,(function(e){e||(0,u.Z)(!1);var n=w||e.location,i=f(d(x,n),n),s=i.pathname,_=s&&s.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1"),A=_?(0,r.LX)(n.pathname,{path:_,exact:h,sensitive:k,strict:E}):null,L=!!(y?y(A,n):A),R="function"==typeof m?m(L):m,N="function"==typeof S?S(L):S;L&&(R=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e})).join(" ")}(R,c),N=(0,l.Z)({},N,p));var P=(0,l.Z)({"aria-current":L&&a||null,className:R,style:N,to:i},T);return v!==b?P.ref=t||C:P.innerRef=C,o.createElement(g,P)}))}))},6550:(e,t,n)=>{"use strict";n.d(t,{AW:()=>x,F0:()=>y,LX:()=>S,TH:()=>O,k6:()=>P,rs:()=>R,s6:()=>b});var r=n(5068),a=n(7294),o=n(5697),i=n.n(o),l=n(9318),s=n(8776),u=n(7462),c=n(4779),d=n.n(c),f=(n(9864),n(3366)),p=(n(8679),1073741823),m="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:{};var h=a.createContext||function(e,t){var n,o,l="__create-react-context-"+function(){var e="__global_unique_id__";return m[e]=(m[e]||0)+1}()+"__",s=function(e){function n(){for(var t,n,r,a=arguments.length,o=new Array(a),i=0;i<a;i++)o[i]=arguments[i];return(t=e.call.apply(e,[this].concat(o))||this).emitter=(n=t.props.value,r=[],{on:function(e){r.push(e)},off:function(e){r=r.filter((function(t){return t!==e}))},get:function(){return n},set:function(e,t){n=e,r.forEach((function(e){return e(n,t)}))}}),t}(0,r.Z)(n,e);var a=n.prototype;return a.getChildContext=function(){var e;return(e={})[l]=this.emitter,e},a.componentWillReceiveProps=function(e){if(this.props.value!==e.value){var n,r=this.props.value,a=e.value;((o=r)===(i=a)?0!==o||1/o==1/i:o!=o&&i!=i)?n=0:(n="function"==typeof t?t(r,a):p,0!==(n|=0)&&this.emitter.set(e.value,n))}var o,i},a.render=function(){return this.props.children},n}(a.Component);s.childContextTypes=((n={})[l]=i().object.isRequired,n);var u=function(t){function n(){for(var e,n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];return(e=t.call.apply(t,[this].concat(r))||this).observedBits=void 0,e.state={value:e.getValue()},e.onUpdate=function(t,n){0!=((0|e.observedBits)&n)&&e.setState({value:e.getValue()})},e}(0,r.Z)(n,t);var a=n.prototype;return a.componentWillReceiveProps=function(e){var t=e.observedBits;this.observedBits=null==t?p:t},a.componentDidMount=function(){this.context[l]&&this.context[l].on(this.onUpdate);var e=this.props.observedBits;this.observedBits=null==e?p:e},a.componentWillUnmount=function(){this.context[l]&&this.context[l].off(this.onUpdate)},a.getValue=function(){return this.context[l]?this.context[l].get():e},a.render=function(){return(e=this.props.children,Array.isArray(e)?e[0]:e)(this.state.value);var e},n}(a.Component);return u.contextTypes=((o={})[l]=i().object,o),{Provider:s,Consumer:u}},g=function(e){var t=h();return t.displayName=e,t},v=g("Router-History"),b=g("Router"),y=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._pendingLocation=e}))),n}(0,r.Z)(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){var e=this;this._isMounted=!0,this.unlisten&&this.unlisten(),this.props.staticContext||(this.unlisten=this.props.history.listen((function(t){e._isMounted&&e.setState({location:t})}))),this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&(this.unlisten(),this._isMounted=!1,this._pendingLocation=null)},n.render=function(){return a.createElement(b.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},a.createElement(v.Provider,{children:this.props.children||null,value:this.props.history}))},t}(a.Component);a.Component;a.Component;var w={},k=1e4,E=0;function S(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,r=n.path,a=n.exact,o=void 0!==a&&a,i=n.strict,l=void 0!==i&&i,s=n.sensitive,u=void 0!==s&&s;return[].concat(r).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var r=function(e,t){var n=""+t.end+t.strict+t.sensitive,r=w[n]||(w[n]={});if(r[e])return r[e];var a=[],o={regexp:d()(e,a,t),keys:a};return E<k&&(r[e]=o,E++),o}(n,{end:o,strict:l,sensitive:u}),a=r.regexp,i=r.keys,s=a.exec(e);if(!s)return null;var c=s[0],f=s.slice(1),p=e===c;return o&&!p?null:{path:n,url:"/"===n&&""===c?"/":c,isExact:p,params:i.reduce((function(e,t,n){return e[t.name]=f[n],e}),{})}}),null)}var x=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n=e.props.location||t.location,r=e.props.computedMatch?e.props.computedMatch:e.props.path?S(n.pathname,e.props):t.match,o=(0,u.Z)({},t,{location:n,match:r}),i=e.props,l=i.children,c=i.component,d=i.render;return Array.isArray(l)&&function(e){return 0===a.Children.count(e)}(l)&&(l=null),a.createElement(b.Provider,{value:o},o.match?l?"function"==typeof l?l(o):l:c?a.createElement(c,o):d?d(o):null:"function"==typeof l?l(o):null)}))},t}(a.Component);function C(e){return"/"===e.charAt(0)?e:"/"+e}function T(e,t){if(!e)return t;var n=C(e);return 0!==t.pathname.indexOf(n)?t:(0,u.Z)({},t,{pathname:t.pathname.substr(n.length)})}function _(e){return"string"==typeof e?e:(0,l.Ep)(e)}function A(e){return function(){(0,s.Z)(!1)}}function L(){}a.Component;var R=function(e){function t(){return e.apply(this,arguments)||this}return(0,r.Z)(t,e),t.prototype.render=function(){var e=this;return a.createElement(b.Consumer,null,(function(t){t||(0,s.Z)(!1);var n,r,o=e.props.location||t.location;return a.Children.forEach(e.props.children,(function(e){if(null==r&&a.isValidElement(e)){n=e;var i=e.props.path||e.props.from;r=i?S(o.pathname,(0,u.Z)({},e.props,{path:i})):t.match}})),r?a.cloneElement(n,{location:o,computedMatch:r}):null}))},t}(a.Component);var N=a.useContext;function P(){return N(v)}function O(){return N(b).location}},2408:(e,t,n)=>{"use strict";var r=n(7418),a=60103,o=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var i=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if("function"==typeof Symbol&&Symbol.for){var d=Symbol.for;a=d("react.element"),o=d("react.portal"),t.Fragment=d("react.fragment"),t.StrictMode=d("react.strict_mode"),t.Profiler=d("react.profiler"),i=d("react.provider"),l=d("react.context"),s=d("react.forward_ref"),t.Suspense=d("react.suspense"),u=d("react.memo"),c=d("react.lazy")}var f="function"==typeof Symbol&&Symbol.iterator;function p(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n<arguments.length;n++)t+="&args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h={};function g(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=h,this.updater=n||m}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,"setState")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},k=Object.prototype.hasOwnProperty,E={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,n){var r,o={},i=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(i=""+t.key),t)k.call(t,r)&&!E.hasOwnProperty(r)&&(o[r]=t[r]);var s=arguments.length-2;if(1===s)o.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];o.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===o[r]&&(o[r]=s[r]);return{$$typeof:a,type:e,key:i,ref:l,props:o,_owner:w.current}}function x(e){return"object"==typeof e&&null!==e&&e.$$typeof===a}var C=/\/+/g;function T(e,t){return"object"==typeof e&&null!==e&&null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function _(e,t,n,r,i){var l=typeof e;"undefined"!==l&&"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case a:case o:s=!0}}if(s)return i=i(s=e),e=""===r?"."+T(s,0):r,Array.isArray(i)?(n="",null!=e&&(n=e.replace(C,"$&/")+"/"),_(i,t,n,"",(function(e){return e}))):null!=i&&(x(i)&&(i=function(e,t){return{$$typeof:a,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,n+(!i.key||s&&s.key===i.key?"":(""+i.key).replace(C,"$&/")+"/")+e)),t.push(i)),1;if(s=0,r=""===r?".":r+":",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+T(l=e[u],u);s+=_(l,t,n,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=f&&e[f]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=_(l=l.value,t,n,c=r+T(l,u++),i);else if("object"===l)throw t=""+e,Error(p(31,"[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t));return s}function A(e,t,n){if(null==e)return e;var r=[],a=0;return _(e,r,"","",(function(e){return t.call(n,e,a++)})),r}function L(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var R={current:null};function N(){var e=R.current;if(null===e)throw Error(p(321));return e}var P={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:A,forEach:function(e,t,n){A(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return A(e,(function(){t++})),t},toArray:function(e){return A(e,(function(e){return e}))||[]},only:function(e){if(!x(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=P,t.cloneElement=function(e,t,n){if(null==e)throw Error(p(267,e));var o=r({},e.props),i=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(i=""+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)k.call(t,c)&&!E.hasOwnProperty(c)&&(o[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)o.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];o.children=u}return{$$typeof:a,type:e.type,key:i,ref:l,props:o,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:i,_context:e},e.Consumer=e},t.createElement=S,t.createFactory=function(e){var t=S.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=x,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:L}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version="17.0.2"},7294:(e,t,n)=>{"use strict";e.exports=n(2408)},53:(e,t)=>{"use strict";var n,r,a,o;if("object"==typeof performance&&"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}if("undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,d=function(){if(null!==u)try{var e=t.unstable_now();u(!0,e),u=null}catch(n){throw setTimeout(d,0),n}};n=function(e){null!==u?setTimeout(n,0,e):(u=e,setTimeout(d,0))},r=function(e,t){c=setTimeout(e,t)},a=function(){clearTimeout(c)},t.unstable_shouldYield=function(){return!1},o=t.unstable_forceFrameRate=function(){}}else{var f=window.setTimeout,p=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills")}var h=!1,g=null,v=-1,b=5,y=0;t.unstable_shouldYield=function(){return t.unstable_now()>=y},o=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):b=0<e?Math.floor(1e3/e):5};var w=new MessageChannel,k=w.port2;w.port1.onmessage=function(){if(null!==g){var e=t.unstable_now();y=e+b;try{g(!0,e)?k.postMessage(null):(h=!1,g=null)}catch(n){throw k.postMessage(null),n}}else h=!1},n=function(e){g=e,h||(h=!0,k.postMessage(null))},r=function(e,n){v=f((function(){e(t.unstable_now())}),n)},a=function(){p(v),v=-1}}function E(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,a=e[r];if(!(void 0!==a&&0<C(a,t)))break e;e[r]=t,e[n]=a,n=r}}function S(e){return void 0===(e=e[0])?null:e}function x(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,a=e.length;r<a;){var o=2*(r+1)-1,i=e[o],l=o+1,s=e[l];if(void 0!==i&&0>C(i,n))void 0!==s&&0>C(s,i)?(e[r]=s,e[l]=n,r=l):(e[r]=i,e[o]=n,r=o);else{if(!(void 0!==s&&0>C(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function C(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var T=[],_=[],A=1,L=null,R=3,N=!1,P=!1,O=!1;function D(e){for(var t=S(_);null!==t;){if(null===t.callback)x(_);else{if(!(t.startTime<=e))break;x(_),t.sortIndex=t.expirationTime,E(T,t)}t=S(_)}}function I(e){if(O=!1,D(e),!P)if(null!==S(T))P=!0,n(M);else{var t=S(_);null!==t&&r(I,t.startTime-e)}}function M(e,n){P=!1,O&&(O=!1,a()),N=!0;var o=R;try{for(D(n),L=S(T);null!==L&&(!(L.expirationTime>n)||e&&!t.unstable_shouldYield());){var i=L.callback;if("function"==typeof i){L.callback=null,R=L.priorityLevel;var l=i(L.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?L.callback=l:L===S(T)&&x(T),D(n)}else x(T);L=S(T)}if(null!==L)var s=!0;else{var u=S(_);null!==u&&r(I,u.startTime-n),s=!1}return s}finally{L=null,R=o,N=!1}}var F=o;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){P||N||(P=!0,n(M))},t.unstable_getCurrentPriorityLevel=function(){return R},t.unstable_getFirstCallbackNode=function(){return S(T)},t.unstable_next=function(e){switch(R){case 1:case 2:case 3:var t=3;break;default:t=R}var n=R;R=t;try{return e()}finally{R=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=F,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=R;R=e;try{return t()}finally{R=n}},t.unstable_scheduleCallback=function(e,o,i){var l=t.unstable_now();switch("object"==typeof i&&null!==i?i="number"==typeof(i=i.delay)&&0<i?l+i:l:i=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:A++,callback:o,priorityLevel:e,startTime:i,expirationTime:s=i+s,sortIndex:-1},i>l?(e.sortIndex=i,E(_,e),null===S(T)&&e===S(_)&&(O?a():O=!0,r(I,i-l))):(e.sortIndex=s,E(T,e),P||N||(P=!0,n(M))),e},t.unstable_wrapCallback=function(e){var t=R;return function(){var n=R;R=t;try{return e.apply(this,arguments)}finally{R=n}}}},3840:(e,t,n)=>{"use strict";e.exports=n(53)},6774:e=>{e.exports=function(e,t,n,r){var a=n?n.call(r,e,t):void 0;if(void 0!==a)return!!a;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var o=Object.keys(e),i=Object.keys(t);if(o.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<o.length;s++){var u=o[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(a=n?n.call(r,c,d,u):void 0)||void 0===a&&c!==d)return!1}return!0}},3250:(e,t,n)=>{"use strict";var r=n(7294);var a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,i=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!a(e,n)}catch(r){return!0}}var c="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=o({inst:{value:n,getSnapshot:t}}),a=r[0].inst,c=r[1];return l((function(){a.value=n,a.getSnapshot=t,u(a)&&c({inst:a})}),[e,n,t]),i((function(){return u(a)&&c({inst:a}),e((function(){u(a)&&c({inst:a})}))}),[e]),s(n),n};void 0!==r.useSyncExternalStore&&r.useSyncExternalStore},1688:(e,t,n)=>{"use strict";n(3250)},6809:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});const r={title:"LLVM Compilation Performance Metrics",tagline:"Kush Srivastava | Fall 2023 iCons 4 | CHC Honors Thesis",favicon:"img/favicon.ico",url:"https://tra86.skushagra.com",baseUrl:"/",organizationName:"suobset",projectName:"iCons4",onBrokenLinks:"throw",onBrokenMarkdownLinks:"warn",i18n:{defaultLocale:"en",locales:["en"],path:"i18n",localeConfigs:{}},presets:[["classic",{docs:{sidebarPath:"/Users/suobset/Documents/RUST-Tracing-Tool/iCons4-backend/sidebars.js"},blog:!1,theme:{customCss:"/Users/suobset/Documents/RUST-Tracing-Tool/iCons4-backend/src/css/custom.css"}}]],themeConfig:{image:"img/docusaurus-social-card.jpg",navbar:{title:"LLVM Metrics",logo:{alt:"My Site Logo",src:"img/logo.svg"},items:[{type:"docSidebar",sidebarId:"tutorialSidebar",position:"left",label:"Research"},{to:"/communicationDesign",label:"About The Project",position:"left"},{to:"https://github.com/cics-syslab/RUST-Tracing-Tool",label:"Repository",position:"left"},{to:"https://skushagra.com",label:"Personal Website",position:"right"},{href:"https://github.com/suobset/iCons",label:"Source",position:"right"}],hideOnScroll:!1},footer:{style:"dark",links:[{title:"Docs",items:[{label:"Research",to:"/docs/intro"}]},{title:"Technologies",items:[{label:"GNU GCC",href:"https://stackoverflow.com/questions/tagged/docusaurus"},{label:"RUST",href:"https://google.com"}]},{title:"More",items:[{label:"Blog",to:"/blog"},{label:"GitHub",href:"https://github.com/suobset"}]}],copyright:"Copyright \xa9 2024 Kush S."},prism:{theme:{plain:{color:"#393A34",backgroundColor:"#f6f8fa"},styles:[{types:["comment","prolog","doctype","cdata"],style:{color:"#999988",fontStyle:"italic"}},{types:["namespace"],style:{opacity:.7}},{types:["string","attr-value"],style:{color:"#e3116c"}},{types:["punctuation","operator"],style:{color:"#393A34"}},{types:["entity","url","symbol","number","boolean","variable","constant","property","regex","inserted"],style:{color:"#36acaa"}},{types:["atrule","keyword","attr-name","selector"],style:{color:"#00a4db"}},{types:["function","deleted","tag"],style:{color:"#d73a49"}},{types:["function-variable"],style:{color:"#6f42c1"}},{types:["tag","selector","keyword"],style:{color:"#00009f"}}]},darkTheme:{plain:{color:"#F8F8F2",backgroundColor:"#282A36"},styles:[{types:["prolog","constant","builtin"],style:{color:"rgb(189, 147, 249)"}},{types:["inserted","function"],style:{color:"rgb(80, 250, 123)"}},{types:["deleted"],style:{color:"rgb(255, 85, 85)"}},{types:["changed"],style:{color:"rgb(255, 184, 108)"}},{types:["punctuation","symbol"],style:{color:"rgb(248, 248, 242)"}},{types:["string","char","tag","selector"],style:{color:"rgb(255, 121, 198)"}},{types:["keyword","variable"],style:{color:"rgb(189, 147, 249)",fontStyle:"italic"}},{types:["comment"],style:{color:"rgb(98, 114, 164)"}},{types:["attr-name"],style:{color:"rgb(241, 250, 140)"}}]},additionalLanguages:[],magicComments:[{className:"theme-code-block-highlighted-line",line:"highlight-next-line",block:{start:"highlight-start",end:"highlight-end"}}]},colorMode:{defaultMode:"light",disableSwitch:!1,respectPrefersColorScheme:!1},docs:{versionPersistence:"localStorage",sidebar:{hideable:!1,autoCollapseCategories:!1}},metadata:[],tableOfContents:{minHeadingLevel:2,maxHeadingLevel:3}},baseUrlIssueBanner:!0,onDuplicateRoutes:"warn",staticDirectories:["static"],customFields:{},plugins:[],themes:[],scripts:[],headTags:[],stylesheets:[],clientModules:[],titleDelimiter:"|",noIndex:!1,markdown:{mermaid:!1}}},7462:(e,t,n)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:()=>r})},5068:(e,t,n)=>{"use strict";function r(e,t){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},r(e,t)}function a(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,r(e,t)}n.d(t,{Z:()=>a})},3366:(e,t,n)=>{"use strict";function r(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}n.d(t,{Z:()=>r})},8776:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=!0,a="Invariant failed";function o(e,t){if(!e){if(r)throw new Error(a);var n="function"==typeof t?t():t,o=n?"".concat(a,": ").concat(n):a;throw new Error(o)}}},7529:e=>{"use strict";e.exports={}},6887:e=>{"use strict";e.exports=JSON.parse('{"/communicationDesign-e43":{"__comp":"1f391b9e","__context":{"plugin":"3cc330c4"},"content":"0e5d29c6"},"/markdown-page-a69":{"__comp":"1f391b9e","__context":{"plugin":"3cc330c4"},"content":"393be207"},"/massurc-8af":{"__comp":"1f391b9e","__context":{"plugin":"3cc330c4"},"content":"b3ba932c"},"/docs-af5":{"__comp":"1be78505","__context":{"plugin":"4da50ff2"},"versionMetadata":"935f2afb"},"/docs/category/definitions-e81":{"__comp":"14eb3368","categoryGeneratedIndex":"22ee8902"},"/docs/category/thesis-milestones-0ca":{"__comp":"14eb3368","categoryGeneratedIndex":"5a8ad210"},"/docs/definitions/cpp-335":{"__comp":"17896441","content":"4f2c5a9d"},"/docs/definitions/llvm-39c":{"__comp":"17896441","content":"b2e03007"},"/docs/definitions/rust-f1b":{"__comp":"17896441","content":"7fbde740"},"/docs/definitions/x86-389":{"__comp":"17896441","content":"afc412d1"},"/docs/definitions/x86asm-b4d":{"__comp":"17896441","content":"302ee866"},"/docs/intro-aed":{"__comp":"17896441","content":"0e384e19"},"/docs/thesis/pt2init-d9f":{"__comp":"17896441","content":"c1ca8d8d"},"/docs/thesis/sem1-c19":{"__comp":"17896441","content":"81cbbac2"},"/docs/thesis/syslab-1f3":{"__comp":"17896441","content":"d93564cb"},"/-041":{"__comp":"c4f5d8e4","__context":{"plugin":"3cc330c4"},"config":"5e9f5e1a"}}')}},e=>{e.O(0,[532],(()=>{return t=7221,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/assets/js/runtime~main.1cdde959.js b/assets/js/runtime~main.1cdde959.js deleted file mode 100644 index af023299..00000000 --- a/assets/js/runtime~main.1cdde959.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,t,r,a,o,n={},c={};function f(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={id:e,loaded:!1,exports:{}};return n[e].call(r.exports,r,r.exports,f),r.loaded=!0,r.exports}f.m=n,f.c=c,e=[],f.O=(t,r,a,o)=>{if(!r){var n=1/0;for(b=0;b<e.length;b++){r=e[b][0],a=e[b][1],o=e[b][2];for(var c=!0,d=0;d<r.length;d++)(!1&o||n>=o)&&Object.keys(f.O).every((e=>f.O[e](r[d])))?r.splice(d--,1):(c=!1,o<n&&(n=o));if(c){e.splice(b--,1);var i=a();void 0!==i&&(t=i)}}return t}o=o||0;for(var b=e.length;b>0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[r,a,o]},f.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return f.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,f.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);f.r(o);var n={};t=t||[null,r({}),r([]),r(r)];for(var c=2&a&&e;"object"==typeof c&&!~t.indexOf(c);c=r(c))Object.getOwnPropertyNames(c).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,f.d(o,n),o},f.d=(e,t)=>{for(var r in t)f.o(t,r)&&!f.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},f.f={},f.e=e=>Promise.all(Object.keys(f.f).reduce(((t,r)=>(f.f[r](e,t),t)),[])),f.u=e=>"assets/js/"+({7:"3cc330c4",53:"935f2afb",85:"1f391b9e",137:"b2e03007",195:"c4f5d8e4",258:"5a8ad210",366:"4da50ff2",414:"393be207",507:"b3ba932c",514:"1be78505",545:"7fbde740",580:"22ee8902",671:"0e384e19",686:"0e5d29c6",694:"afc412d1",741:"d93564cb",789:"81cbbac2",817:"14eb3368",822:"4f2c5a9d",916:"c1ca8d8d",918:"17896441",959:"302ee866"}[e]||e)+"."+{7:"e99720cc",53:"380b9ada",85:"78f69afa",137:"508d10b3",195:"697fb752",258:"b4cf3bc3",366:"d66f7554",414:"690bd4eb",455:"c9bcea77",507:"72887a79",514:"ca7c7c66",545:"a41b51c5",580:"18840d9a",671:"f53a1b41",686:"d79f182d",694:"6d914eb7",741:"1d8fd072",789:"7fb1e018",817:"3d2d8148",822:"05a18aaf",916:"3d00f8c6",918:"3c6437ae",959:"c899db1b",972:"868aa5a2"}[e]+".js",f.miniCssF=e=>{},f.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),f.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},o="i-cons-4:",f.l=(e,t,r,n)=>{if(a[e])a[e].push(t);else{var c,d;if(void 0!==r)for(var i=document.getElementsByTagName("script"),b=0;b<i.length;b++){var u=i[b];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==o+r){c=u;break}}c||(d=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,f.nc&&c.setAttribute("nonce",f.nc),c.setAttribute("data-webpack",o+r),c.src=e),a[e]=[t];var l=(t,r)=>{c.onerror=c.onload=null,clearTimeout(s);var o=a[e];if(delete a[e],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),d&&document.head.appendChild(c)}},f.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.p="/",f.gca=function(e){return e={17896441:"918","3cc330c4":"7","935f2afb":"53","1f391b9e":"85",b2e03007:"137",c4f5d8e4:"195","5a8ad210":"258","4da50ff2":"366","393be207":"414",b3ba932c:"507","1be78505":"514","7fbde740":"545","22ee8902":"580","0e384e19":"671","0e5d29c6":"686",afc412d1:"694",d93564cb:"741","81cbbac2":"789","14eb3368":"817","4f2c5a9d":"822",c1ca8d8d:"916","302ee866":"959"}[e]||e,f.p+f.u(e)},(()=>{var e={303:0,532:0};f.f.j=(t,r)=>{var a=f.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=f.p+f.u(t),c=new Error;f.l(n,(r=>{if(f.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",c.name="ChunkLoadError",c.type=o,c.request=n,a[1](c)}}),"chunk-"+t,t)}},f.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,n=r[0],c=r[1],d=r[2],i=0;if(n.some((t=>0!==e[t]))){for(a in c)f.o(c,a)&&(f.m[a]=c[a]);if(d)var b=d(f)}for(t&&t(r);i<n.length;i++)o=n[i],f.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return f.O(b)},r=self.webpackChunki_cons_4=self.webpackChunki_cons_4||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})()})(); \ No newline at end of file diff --git a/assets/js/runtime~main.80684fdb.js b/assets/js/runtime~main.80684fdb.js new file mode 100644 index 00000000..76a174a2 --- /dev/null +++ b/assets/js/runtime~main.80684fdb.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,t,r,a,o,n={},c={};function d(e){var t=c[e];if(void 0!==t)return t.exports;var r=c[e]={id:e,loaded:!1,exports:{}};return n[e].call(r.exports,r,r.exports,d),r.loaded=!0,r.exports}d.m=n,d.c=c,e=[],d.O=(t,r,a,o)=>{if(!r){var n=1/0;for(b=0;b<e.length;b++){r=e[b][0],a=e[b][1],o=e[b][2];for(var c=!0,f=0;f<r.length;f++)(!1&o||n>=o)&&Object.keys(d.O).every((e=>d.O[e](r[f])))?r.splice(f--,1):(c=!1,o<n&&(n=o));if(c){e.splice(b--,1);var i=a();void 0!==i&&(t=i)}}return t}o=o||0;for(var b=e.length;b>0&&e[b-1][2]>o;b--)e[b]=e[b-1];e[b]=[r,a,o]},d.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return d.d(t,{a:t}),t},r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,d.t=function(e,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var o=Object.create(null);d.r(o);var n={};t=t||[null,r({}),r([]),r(r)];for(var c=2&a&&e;"object"==typeof c&&!~t.indexOf(c);c=r(c))Object.getOwnPropertyNames(c).forEach((t=>n[t]=()=>e[t]));return n.default=()=>e,d.d(o,n),o},d.d=(e,t)=>{for(var r in t)d.o(t,r)&&!d.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},d.f={},d.e=e=>Promise.all(Object.keys(d.f).reduce(((t,r)=>(d.f[r](e,t),t)),[])),d.u=e=>"assets/js/"+({53:"935f2afb",85:"1f391b9e",137:"b2e03007",195:"c4f5d8e4",256:"a649dc75",258:"5a8ad210",408:"9cdb66f6",414:"393be207",507:"b3ba932c",514:"1be78505",545:"7fbde740",580:"22ee8902",671:"0e384e19",686:"0e5d29c6",694:"afc412d1",741:"d93564cb",789:"81cbbac2",817:"14eb3368",822:"4f2c5a9d",916:"c1ca8d8d",918:"17896441",959:"302ee866"}[e]||e)+"."+{53:"380b9ada",85:"21d823d1",137:"3c3a4290",195:"697fb752",256:"a8b533b6",258:"b4cf3bc3",376:"3bd71d03",408:"1f491dea",414:"690bd4eb",507:"72887a79",514:"ca7c7c66",545:"a41b51c5",580:"18840d9a",671:"f53a1b41",686:"71123a3d",694:"6d914eb7",741:"aaec1f3b",789:"abb2e1c9",817:"3d2d8148",822:"05a18aaf",916:"276c4e10",918:"09ad3e46",959:"c899db1b",972:"868aa5a2"}[e]+".js",d.miniCssF=e=>{},d.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),d.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a={},o="i-cons-4:",d.l=(e,t,r,n)=>{if(a[e])a[e].push(t);else{var c,f;if(void 0!==r)for(var i=document.getElementsByTagName("script"),b=0;b<i.length;b++){var u=i[b];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==o+r){c=u;break}}c||(f=!0,(c=document.createElement("script")).charset="utf-8",c.timeout=120,d.nc&&c.setAttribute("nonce",d.nc),c.setAttribute("data-webpack",o+r),c.src=e),a[e]=[t];var l=(t,r)=>{c.onerror=c.onload=null,clearTimeout(s);var o=a[e];if(delete a[e],c.parentNode&&c.parentNode.removeChild(c),o&&o.forEach((e=>e(r))),t)return t(r)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),f&&document.head.appendChild(c)}},d.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},d.p="/",d.gca=function(e){return e={17896441:"918","935f2afb":"53","1f391b9e":"85",b2e03007:"137",c4f5d8e4:"195",a649dc75:"256","5a8ad210":"258","9cdb66f6":"408","393be207":"414",b3ba932c:"507","1be78505":"514","7fbde740":"545","22ee8902":"580","0e384e19":"671","0e5d29c6":"686",afc412d1:"694",d93564cb:"741","81cbbac2":"789","14eb3368":"817","4f2c5a9d":"822",c1ca8d8d:"916","302ee866":"959"}[e]||e,d.p+d.u(e)},(()=>{var e={303:0,532:0};d.f.j=(t,r)=>{var a=d.o(e,t)?e[t]:void 0;if(0!==a)if(a)r.push(a[2]);else if(/^(303|532)$/.test(t))e[t]=0;else{var o=new Promise(((r,o)=>a=e[t]=[r,o]));r.push(a[2]=o);var n=d.p+d.u(t),c=new Error;d.l(n,(r=>{if(d.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var o=r&&("load"===r.type?"missing":r.type),n=r&&r.target&&r.target.src;c.message="Loading chunk "+t+" failed.\n("+o+": "+n+")",c.name="ChunkLoadError",c.type=o,c.request=n,a[1](c)}}),"chunk-"+t,t)}},d.O.j=t=>0===e[t];var t=(t,r)=>{var a,o,n=r[0],c=r[1],f=r[2],i=0;if(n.some((t=>0!==e[t]))){for(a in c)d.o(c,a)&&(d.m[a]=c[a]);if(f)var b=f(d)}for(t&&t(r);i<n.length;i++)o=n[i],d.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return d.O(b)},r=self.webpackChunki_cons_4=self.webpackChunki_cons_4||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})()})(); \ No newline at end of file diff --git a/communicationDesign/index.html b/communicationDesign/index.html index 0d00b567..e913e618 100644 --- a/communicationDesign/index.html +++ b/communicationDesign/index.html @@ -3,14 +3,14 @@ <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.4.3"> -<title data-rh="true">LLVM Compilation Performance Metrics - - +tra86: The Asembly Tracer Toolchain + +
-

Disclaimer: All general-purpose graphics on this page were generated using Microsoft's Bing AI. For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same.

Why is this project significant.

Intro

The following project, while accessible to everyone, is mainly targeted towards the millions of developers creating digital products on the daily. We attempt to reform low level systems in servers and mainframes, in an effort to have userland applications work more efficiently, increase server bandwidth, and give a little bit back to the environment.

Let's dive a little bit into each of these:

First, Some Background

This project attempts to compare and contrast performance differences between RUST and C++, two low level languages that were created at different points of time, and with different goals in mind.

While C++ was developed as an incremental upgrade to C, it follows a lot of compiler conventions from the 90s and has not changed much in structure. C++ is prone to various errors if users are not mindful: memory leaks, segmentation faults, kernel errors, and so on. Moreover, being an incremental upgrade to an already old language, C++ can sometimes not be the most efficient language out there.

On the other hand, we have RUST: a language whose development started in 2010, and is continuing today. RUST attempts to employ stricter typesetting, better error tracking, and more stringent memory usage to run more efficiently.

C++

Credits: IBM: Why You Should Learn The RUSt Programming Language.

This is not to say that C++ is a "bad, outdated language". Simply put, most low level systems today still run on C++, mainly because the cost of refactoring to RUST is enormous, and benefits unknown.

By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language.

Hypothesis 1: Environmental Impacts

According to Energy Innovation, global data centers consumed about 205 terawatt-hours (TWh) of electric power, or about 1% of Global Consumer Electricity Consumption.

Let us put this in perspective: given the world population, servers alone accounted for the electricity that would have been used by 70,000,000 people. This number is about twice the population of Canada, about 65% of Mexico's Population, and about 4 times the population of Australia.

Now, let us assume (hypothetically), that we have moved all low level systems to RUST, which means that all servers in the world run on RUST now. While this is a bit flawed in its nature, let us also assume that there is a direct co-relation between energy consumption and the effectiveness of a language.

If RUST enables, through it's various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about 119 countries of the world, even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration.

RUST would enable the same infrastructure to server exactly the bandwidth it is serving currently, while automatically providing back electricity worth of powering such a high number of countries. Moreover, the same infrastructure can also be utilized into serving an even higher bandwidth without putting new hardware into place, thus providing immense future-proofing and reliability.

Hypothesis 2: Lower the Barrier of Entry to Low-Level Development

Low Level Systems: including, but not limited to, CPU/GPU Architectures, Compilers, Operating Systems, Networking Interfaces, Communication Protocols, and the like are a culmination of decades of work, most of which really gained traction in 1970s. As a result, there exists a high amount of legacy code, which can be unreadable and intimidating: thus making the development process inaccessible to many.

The manner in which languages such as C/C++ behave can also differ between systems, which is a result of the time that they were created in. Free/Libre, or Open Source software did not quite exist: which meant that companies shipping computer systems had full control over how a certain language would behave on their system. As a result, C behaves differently on different kernels, even today.

There are currently tremendous amounts of versions of C in circulation, and this is before we get into the forks of this language (such as Arduino-C, Objective-C, C#, and so on).

RUST was developed from day 1 as an open source project, placing proper standardization across platforms. RUST behaves exactly the same, on every single piece of hardware. Thus, this lowers the barrier of entry incredibly. Paired with incredible documentation, and a unified compilation process on every system, RUST makes low level development significantly easier to novices and professionals alike.

On top of C++, RUST provides the following benefits (from the RUST Documentation):

  • RUST has a more strong typesetting that prevents common errors such as NULL Pointer referencing, memory leaks, buffer overflows, and race conditions. Using the concept of ownership and borrowing to manage memory and resources during compilation, RUST can theoritically execute equally complex programs while using lesser resources.
  • RUST allows for more concise code, which makes readability easier for developers. Since low level systems get super complicated to execute even the most basic operations, the cleaner code syntax of RUST is crucial for continued development with the shortest learning curve. The syntax allows for less complexity, thus allowing for updates in low level code at a faster pace.
  • RUST is designed for parallel processing and concurrency, which means that any code written is extensible to any system imaginable: ranging from a Raspberry Pi to an IBM Mainframe.

Security Example: Race Conditions:

For example, here are code snippets in C and Rust that deliberately create a race condition, highlighting how C++ allows it while Rust prevents it with an error.

A race condition is a software flaw that occurs when the behavior of a program depends on the timing and order of execution of multiple concurrent operations, leading to unpredictable and often unintended outcomes. We will see a live version of said unpredictable outcomes with C++, and see how RUST fixes this flaw.

Let's start with C++:

// Race Condition Demo, written by Kush.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

int shared_variable = 0;

void *increment(void *arg) {
for (int i = 0; i < 1000000; i++) {
shared_variable++;
}
return NULL;
}

int main() {
pthread_t thread1, thread2;

if (pthread_create(&thread1, NULL, increment, NULL) != 0) {
perror("pthread_create");
return 1;
}

if (pthread_create(&thread2, NULL, increment, NULL) != 0) {
perror("pthread_create");
return 1;
}

pthread_join(thread1, NULL);
pthread_join(thread2, NULL);

printf("Shared variable: %d\n", shared_variable);

return 0;
}

In the C code, two threads are incrementing the shared_variable concurrently, leading to a race condition where the final value is unpredictable. However, C will let us run this with no issues or errors, as demonstrated below 10 times on my own system:

suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ gcc race.c
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1138441
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1339034
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1070599
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1103020
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1073974
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1233980
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1403249
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1200399
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1036593
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1115206
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$

Now, let us try this with RUST:

// Race Condition Demo, written by Kush
use std::thread;

fn main() {
let mut shared_variable = 0;

let thread1 = thread::spawn(|| {
for _ in 0..1_000_000 {
shared_variable += 1;
}
});

let thread2 = thread::spawn(|| {
for _ in 0..1_000_000 {
shared_variable += 1;
}
});

thread1.join().unwrap();
thread2.join().unwrap();

println!("Shared variable: {}", shared_variable);
}

In the Rust code, the same scenario is presented, but Rust's ownership and borrowing system will prevent the code from compiling, raising an error like:

error[E0502]: cannot borrow `shared_variable` as mutable because it is also borrowed as immutable
--> src/main.rs:9:13
|
7 | let thread1 = thread::spawn(|| {
| ---------------- immutable borrow occurs here
8 | for _ in 0..1_000_000 {
9 | shared_variable += 1;
| ^^^^^^^^^^^^^^ mutable borrow occurs here
...
15| thread1.join().unwrap();
| ------------------------ mutable borrow later used here

If this undertaking of shifting away from C++ into RUST is fruitful, developers can expect:

  • More readable, and less legacy code.
  • Faster kernel updates, and a higher ability to contribute to kernel source code.
  • More security in kernel code: since it becomes less prone to memory leaks, kernel panics, and the like. This also results in more reliable systems, overall.
  • Performance advantages in low level systems would result in faster performance of userland applications, without making a single change to any piece of code.
  • Increase bandwidth of servers, without paying for any newer servers.

These are some of the many benefits that developers can expect. However, there's more...

How do we go about it?

During compilation, every programming language outputs a file called an assembly. For the x86 architecture, this assembly consists of 81 operations and 6 registers, and any combination of these yield to teh functioning of a program.

Since we want a platform agnostic way to measuring languages (so nothing that can be solved by throwing more hardware at the problem), we trace the execution of this assembly to find logical differences in how the two programming languages execute the same program. If one language uses more operations, then it performs worse. To do so, I am building my "x86 Asm Tracer", documentation for which can be found on the rest of the site.

x86 Asm Tracer

As the assembly executes, we can see via GDB the current line it is at. I have written a Python program, that latches on to GDB and just writes down every command executed on a text file (displayed in the front of that page).

import gdb

# Define the file path where you want to save the log
log_file_path = "./gdb.txt"

# Initialize a flag to track whether a 'jne' or 'jge' instruction was executed
jmp_detected = False

def log_jmp_event(event):
global jmp_detected # Use the global flag to track if 'jne' or 'jge' was detected
pc = int(gdb.parse_and_eval("$pc"))
instruction = gdb.execute("x/i " + hex(pc), to_string=True)

if "jne" in instruction or "jge" in instruction:
jmp_detected = True
with open(log_file_path, "a") as log_file:
log_file.write(f"{hex(pc)}: {instruction}\n")

# Connect the stop event to the log_jmp_event function
gdb.events.stop.connect(log_jmp_event)

# Define a command to check if 'jne' or 'jge' was executed and write to the log file
class CheckJmpCommand(gdb.Command):
def __init__(self):
super(CheckJmpCommand, self).__init__("checkjmp", gdb.COMMAND_USER)

def invoke(self, arg, from_tty):
global jmp_detected
with open(log_file_path, "a") as log_file:
if jmp_detected:
log_file.write("jne/jge was executed.\n")
else:
log_file.write("jne/jge was NOT executed.\n")
jmp_detected = False # Reset the flag for the next check

CheckJmpCommand()

This way, we can see the specific number of operations executed to run the same program, written on two different languages. We can compare this "trace" for both the languages, and determine which is faster performing. However, there can be caveats that have to be taken into account: for example, RUST's security may mean more operations take place, but it provides more peace of mind.

This is a tradeoff that will have to be looked into at all times.

Conclusion

In conclusion, this project holds significant promise for the digital development community and the broader environment. By comparing the performance differences between the low-level languages C++ and RUST, it seeks to address multiple critical aspects:

First, the project aims to lower the barrier of entry to low-level development by demonstrating how RUST's open-source nature, standardized behavior across platforms, and enhanced memory management can make low-level development more accessible and efficient. Shifting away from C++ to RUST could result in more readable code, faster kernel updates, increased security, and improved performance without the need for hardware upgrades.

Secondly, the environmental impact is a substantial consideration. If RUST, with its efficiency gains, were to become the standard for low-level systems, it could lead to massive energy savings, potentially surpassing the electricity consumption of many countries. This transition to RUST would not only reduce energy consumption but also offer future-proofing benefits, ensuring reliable infrastructure. Overall, this project is poised to benefit developers, users, and the environment by enhancing efficiency and sustainability in low-level systems.

Final Addition

I gave a 1 minute pitch on this project for iCons 4, and have attached it below :)

- - +

Disclaimer: All general-purpose graphics on this page were generated using Microsoft's Bing AI. For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same.

Why is this project significant.

Intro

The following project, while accessible to everyone, is mainly targeted towards the millions of developers creating digital products on the daily. We attempt to reform low level systems in servers and mainframes, in an effort to have userland applications work more efficiently, increase server bandwidth, and give a little bit back to the environment.

Let's dive a little bit into each of these:

First, Some Background

This project attempts to compare and contrast performance differences between RUST and C++, two low level languages that were created at different points of time, and with different goals in mind.

While C++ was developed as an incremental upgrade to C, it follows a lot of compiler conventions from the 90s and has not changed much in structure. C++ is prone to various errors if users are not mindful: memory leaks, segmentation faults, kernel errors, and so on. Moreover, being an incremental upgrade to an already old language, C++ can sometimes not be the most efficient language out there.

On the other hand, we have RUST: a language whose development started in 2010, and is continuing today. RUST attempts to employ stricter typesetting, better error tracking, and more stringent memory usage to run more efficiently.

C++

Credits: IBM: Why You Should Learn The RUSt Programming Language.

This is not to say that C++ is a "bad, outdated language". Simply put, most low level systems today still run on C++, mainly because the cost of refactoring to RUST is enormous, and benefits unknown.

By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language.

Hypothesis 1: Environmental Impacts

According to Energy Innovation, global data centers consumed about 205 terawatt-hours (TWh) of electric power, or about 1% of Global Consumer Electricity Consumption.

Let us put this in perspective: given the world population, servers alone accounted for the electricity that would have been used by 70,000,000 people. This number is about twice the population of Canada, about 65% of Mexico's Population, and about 4 times the population of Australia.

Now, let us assume (hypothetically), that we have moved all low level systems to RUST, which means that all servers in the world run on RUST now. While this is a bit flawed in its nature, let us also assume that there is a direct co-relation between energy consumption and the effectiveness of a language.

If RUST enables, through it's various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about 119 countries of the world, even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration.

RUST would enable the same infrastructure to server exactly the bandwidth it is serving currently, while automatically providing back electricity worth of powering such a high number of countries. Moreover, the same infrastructure can also be utilized into serving an even higher bandwidth without putting new hardware into place, thus providing immense future-proofing and reliability.

Hypothesis 2: Lower the Barrier of Entry to Low-Level Development

Low Level Systems: including, but not limited to, CPU/GPU Architectures, Compilers, Operating Systems, Networking Interfaces, Communication Protocols, and the like are a culmination of decades of work, most of which really gained traction in 1970s. As a result, there exists a high amount of legacy code, which can be unreadable and intimidating: thus making the development process inaccessible to many.

The manner in which languages such as C/C++ behave can also differ between systems, which is a result of the time that they were created in. Free/Libre, or Open Source software did not quite exist: which meant that companies shipping computer systems had full control over how a certain language would behave on their system. As a result, C behaves differently on different kernels, even today.

There are currently tremendous amounts of versions of C in circulation, and this is before we get into the forks of this language (such as Arduino-C, Objective-C, C#, and so on).

RUST was developed from day 1 as an open source project, placing proper standardization across platforms. RUST behaves exactly the same, on every single piece of hardware. Thus, this lowers the barrier of entry incredibly. Paired with incredible documentation, and a unified compilation process on every system, RUST makes low level development significantly easier to novices and professionals alike.

On top of C++, RUST provides the following benefits (from the RUST Documentation):

  • RUST has a more strong typesetting that prevents common errors such as NULL Pointer referencing, memory leaks, buffer overflows, and race conditions. Using the concept of ownership and borrowing to manage memory and resources during compilation, RUST can theoritically execute equally complex programs while using lesser resources.
  • RUST allows for more concise code, which makes readability easier for developers. Since low level systems get super complicated to execute even the most basic operations, the cleaner code syntax of RUST is crucial for continued development with the shortest learning curve. The syntax allows for less complexity, thus allowing for updates in low level code at a faster pace.
  • RUST is designed for parallel processing and concurrency, which means that any code written is extensible to any system imaginable: ranging from a Raspberry Pi to an IBM Mainframe.

Security Example: Race Conditions:

For example, here are code snippets in C and Rust that deliberately create a race condition, highlighting how C++ allows it while Rust prevents it with an error.

A race condition is a software flaw that occurs when the behavior of a program depends on the timing and order of execution of multiple concurrent operations, leading to unpredictable and often unintended outcomes. We will see a live version of said unpredictable outcomes with C++, and see how RUST fixes this flaw.

Let's start with C++:

// Race Condition Demo, written by Kush.
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>

int shared_variable = 0;

void *increment(void *arg) {
for (int i = 0; i < 1000000; i++) {
shared_variable++;
}
return NULL;
}

int main() {
pthread_t thread1, thread2;

if (pthread_create(&thread1, NULL, increment, NULL) != 0) {
perror("pthread_create");
return 1;
}

if (pthread_create(&thread2, NULL, increment, NULL) != 0) {
perror("pthread_create");
return 1;
}

pthread_join(thread1, NULL);
pthread_join(thread2, NULL);

printf("Shared variable: %d\n", shared_variable);

return 0;
}

In the C code, two threads are incrementing the shared_variable concurrently, leading to a race condition where the final value is unpredictable. However, C will let us run this with no issues or errors, as demonstrated below 10 times on my own system:

suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ gcc race.c
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1138441
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1339034
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1070599
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1103020
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1073974
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1233980
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1403249
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1200399
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1036593
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out
Shared variable: 1115206
suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$

Now, let us try this with RUST:

// Race Condition Demo, written by Kush
use std::thread;

fn main() {
let mut shared_variable = 0;

let thread1 = thread::spawn(|| {
for _ in 0..1_000_000 {
shared_variable += 1;
}
});

let thread2 = thread::spawn(|| {
for _ in 0..1_000_000 {
shared_variable += 1;
}
});

thread1.join().unwrap();
thread2.join().unwrap();

println!("Shared variable: {}", shared_variable);
}

In the Rust code, the same scenario is presented, but Rust's ownership and borrowing system will prevent the code from compiling, raising an error like:

error[E0502]: cannot borrow `shared_variable` as mutable because it is also borrowed as immutable
--> src/main.rs:9:13
|
7 | let thread1 = thread::spawn(|| {
| ---------------- immutable borrow occurs here
8 | for _ in 0..1_000_000 {
9 | shared_variable += 1;
| ^^^^^^^^^^^^^^ mutable borrow occurs here
...
15| thread1.join().unwrap();
| ------------------------ mutable borrow later used here

If this undertaking of shifting away from C++ into RUST is fruitful, developers can expect:

  • More readable, and less legacy code.
  • Faster kernel updates, and a higher ability to contribute to kernel source code.
  • More security in kernel code: since it becomes less prone to memory leaks, kernel panics, and the like. This also results in more reliable systems, overall.
  • Performance advantages in low level systems would result in faster performance of userland applications, without making a single change to any piece of code.
  • Increase bandwidth of servers, without paying for any newer servers.

These are some of the many benefits that developers can expect. However, there's more...

How do we go about it?

During compilation, every programming language outputs a file called an assembly. For the x86 architecture, this assembly consists of 81 operations and 6 registers, and any combination of these yield to teh functioning of a program.

Since we want a platform agnostic way to measuring languages (so nothing that can be solved by throwing more hardware at the problem), we trace the execution of this assembly to find logical differences in how the two programming languages execute the same program. If one language uses more operations, then it performs worse. To do so, I am building my "x86 Asm Tracer", documentation for which can be found on the rest of the site.

x86 Asm Tracer

As the assembly executes, we can see via GDB the current line it is at. I have written a Python program, that latches on to GDB and just writes down every command executed on a text file (displayed in the front of that page).

import gdb

# Define the file path where you want to save the log
log_file_path = "./gdb.txt"

# Initialize a flag to track whether a 'jne' or 'jge' instruction was executed
jmp_detected = False

def log_jmp_event(event):
global jmp_detected # Use the global flag to track if 'jne' or 'jge' was detected
pc = int(gdb.parse_and_eval("$pc"))
instruction = gdb.execute("x/i " + hex(pc), to_string=True)

if "jne" in instruction or "jge" in instruction:
jmp_detected = True
with open(log_file_path, "a") as log_file:
log_file.write(f"{hex(pc)}: {instruction}\n")

# Connect the stop event to the log_jmp_event function
gdb.events.stop.connect(log_jmp_event)

# Define a command to check if 'jne' or 'jge' was executed and write to the log file
class CheckJmpCommand(gdb.Command):
def __init__(self):
super(CheckJmpCommand, self).__init__("checkjmp", gdb.COMMAND_USER)

def invoke(self, arg, from_tty):
global jmp_detected
with open(log_file_path, "a") as log_file:
if jmp_detected:
log_file.write("jne/jge was executed.\n")
else:
log_file.write("jne/jge was NOT executed.\n")
jmp_detected = False # Reset the flag for the next check

CheckJmpCommand()

This way, we can see the specific number of operations executed to run the same program, written on two different languages. We can compare this "trace" for both the languages, and determine which is faster performing. However, there can be caveats that have to be taken into account: for example, RUST's security may mean more operations take place, but it provides more peace of mind.

This is a tradeoff that will have to be looked into at all times.

Conclusion

In conclusion, this project holds significant promise for the digital development community and the broader environment. By comparing the performance differences between the low-level languages C++ and RUST, it seeks to address multiple critical aspects:

First, the project aims to lower the barrier of entry to low-level development by demonstrating how RUST's open-source nature, standardized behavior across platforms, and enhanced memory management can make low-level development more accessible and efficient. Shifting away from C++ to RUST could result in more readable code, faster kernel updates, increased security, and improved performance without the need for hardware upgrades.

Secondly, the environmental impact is a substantial consideration. If RUST, with its efficiency gains, were to become the standard for low-level systems, it could lead to massive energy savings, potentially surpassing the electricity consumption of many countries. This transition to RUST would not only reduce energy consumption but also offer future-proofing benefits, ensuring reliable infrastructure. Overall, this project is poised to benefit developers, users, and the environment by enhancing efficiency and sustainability in low-level systems.

Final Addition

I gave a 1 minute pitch on this project for iCons 4, and have attached it below :)

+ + \ No newline at end of file diff --git a/docs/category/definitions/index.html b/docs/category/definitions/index.html index b9891a6b..f3a57f07 100644 --- a/docs/category/definitions/index.html +++ b/docs/category/definitions/index.html @@ -3,14 +3,14 @@ -Definitions | LLVM Compilation Performance Metrics - - +Definitions | tra86: The Asembly Tracer Toolchain + +
-

Definitions

Tools of the trade, i.e. a complete primer on all technologies that we are using nin this project, with documentation included. This section will get you up to speed on what a basic low-level architecture looks like.

- - +

Definitions

Tools of the trade, i.e. a complete primer on all technologies that we are using nin this project, with documentation included. This section will get you up to speed on what a basic low-level architecture looks like.

+ + \ No newline at end of file diff --git a/docs/category/thesis-milestones/index.html b/docs/category/thesis-milestones/index.html index ada70069..356e5765 100644 --- a/docs/category/thesis-milestones/index.html +++ b/docs/category/thesis-milestones/index.html @@ -3,14 +3,14 @@ -Thesis Milestones | LLVM Compilation Performance Metrics - - +Thesis Milestones | tra86: The Asembly Tracer Toolchain + + - - + + + \ No newline at end of file diff --git a/docs/definitions/cpp/index.html b/docs/definitions/cpp/index.html index 8de18951..2c213e1d 100644 --- a/docs/definitions/cpp/index.html +++ b/docs/definitions/cpp/index.html @@ -3,14 +3,14 @@ -C++ | LLVM Compilation Performance Metrics - - +C++ | tra86: The Asembly Tracer Toolchain + +
-

C++

C++ is a versatile, statically-typed programming language that combines high-level abstractions with low-level system access. It was developed as an extension of the C programming language, adding object-oriented features and other modern concepts. C++ is widely used in a variety of applications, from systems programming to game development and high-performance software.

This document provides a concise overview of C++, including its key features, syntax, memory management, and unique aspects that make it a powerful and popular choice among developers.

Key Features

1. Object-Oriented Programming

C++ supports object-oriented programming (OOP) concepts such as classes, inheritance, polymorphism, and encapsulation. These features allow for modular and organized code, making it easier to manage complex projects.

2. Templates

Templates in C++ provide a powerful way to write generic code. They allow you to define functions and classes that can work with various data types without sacrificing performance. This is particularly useful for creating data structures and algorithms.

3. Standard Template Library (STL)

The STL is a collection of template classes and functions in C++. It provides a wide range of data structures (like vectors, lists, and maps) and algorithms (sorting, searching, etc.) that can be used efficiently in your programs.

4. Low-Level Memory Control

C++ offers direct memory manipulation through pointers and manual memory allocation and deallocation using new and delete. This level of control is essential for systems programming and creating custom data structures.

5. Multiple Inheritance

C++ allows a class to inherit from multiple base classes. While this feature can be powerful, it should be used carefully to prevent ambiguity and conflicts in your code.

6. Operator Overloading

C++ lets you overload operators for user-defined types, allowing you to create custom behaviors for operators like +, -, and *.

Syntax

C++ syntax shares similarities with C, but with additional features for OOP and generic programming:

Variables and Data Types

C++ provides a wide range of data types, from the fundamental types like int and double to more complex user-defined classes. Variables can be declared as follows:

int x = 42;               // Integer variable
double pi = 3.14159265; // Double-precision floating-point variable
string name = "John"; // String variable

// User-defined class
class MyClass {
public:
int data;
};
MyClass obj;
obj.data = 10;

Functions

Functions in C++ are defined using the function_name keyword. They can take parameters and return values:

#include <iostream>

int add(int a, int b) {
return a + b;
}

int main() {
int result = add(5, 7);
std::cout << "The sum is: " << result << std::endl;
return 0;
}
- - +

C++

C++ is a versatile, statically-typed programming language that combines high-level abstractions with low-level system access. It was developed as an extension of the C programming language, adding object-oriented features and other modern concepts. C++ is widely used in a variety of applications, from systems programming to game development and high-performance software.

This document provides a concise overview of C++, including its key features, syntax, memory management, and unique aspects that make it a powerful and popular choice among developers.

Key Features

1. Object-Oriented Programming

C++ supports object-oriented programming (OOP) concepts such as classes, inheritance, polymorphism, and encapsulation. These features allow for modular and organized code, making it easier to manage complex projects.

2. Templates

Templates in C++ provide a powerful way to write generic code. They allow you to define functions and classes that can work with various data types without sacrificing performance. This is particularly useful for creating data structures and algorithms.

3. Standard Template Library (STL)

The STL is a collection of template classes and functions in C++. It provides a wide range of data structures (like vectors, lists, and maps) and algorithms (sorting, searching, etc.) that can be used efficiently in your programs.

4. Low-Level Memory Control

C++ offers direct memory manipulation through pointers and manual memory allocation and deallocation using new and delete. This level of control is essential for systems programming and creating custom data structures.

5. Multiple Inheritance

C++ allows a class to inherit from multiple base classes. While this feature can be powerful, it should be used carefully to prevent ambiguity and conflicts in your code.

6. Operator Overloading

C++ lets you overload operators for user-defined types, allowing you to create custom behaviors for operators like +, -, and *.

Syntax

C++ syntax shares similarities with C, but with additional features for OOP and generic programming:

Variables and Data Types

C++ provides a wide range of data types, from the fundamental types like int and double to more complex user-defined classes. Variables can be declared as follows:

int x = 42;               // Integer variable
double pi = 3.14159265; // Double-precision floating-point variable
string name = "John"; // String variable

// User-defined class
class MyClass {
public:
int data;
};
MyClass obj;
obj.data = 10;

Functions

Functions in C++ are defined using the function_name keyword. They can take parameters and return values:

#include <iostream>

int add(int a, int b) {
return a + b;
}

int main() {
int result = add(5, 7);
std::cout << "The sum is: " << result << std::endl;
return 0;
}
+ + \ No newline at end of file diff --git a/docs/definitions/llvm/index.html b/docs/definitions/llvm/index.html index 14137bab..1efe62d7 100644 --- a/docs/definitions/llvm/index.html +++ b/docs/definitions/llvm/index.html @@ -3,14 +3,14 @@ -LLVM (Low-Level Virtual Machine) | LLVM Compilation Performance Metrics - - +LLVM (Low-Level Virtual Machine) | tra86: The Asembly Tracer Toolchain + +
-

LLVM (Low-Level Virtual Machine)

LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability.

LLVM's compilation process typically involves several stages:

  1. Frontend: The frontend is responsible for taking source code written in high-level programming languages like Rust and C++ and parsing it into an intermediate representation (IR). This IR is a low-level, platform-independent code that serves as the common language for further processing.

Rust/C++ Source Code -> Intermediate Representation (IR)

  1. Optimizer: LLVM includes a powerful optimizer that takes the IR and applies various optimization techniques to improve code performance. These optimizations may include inlining functions, eliminating dead code, and reordering instructions for better pipelining.

Intermediate Representation (IR) -> Optimized Intermediate Representation (IR)

  1. Backend: The backend is responsible for translating the optimized IR into machine code for a specific target architecture, like x86, ARM, or MIPS.

Optimized Intermediate Representation (IR) -> Target-Specific Machine Code

  1. Linker: If necessary, LLVM can invoke a linker to combine multiple object files into a single executable. The linker resolves external dependencies and generates the final binary.

Object Files -> Executable Binary

LLVM's modular design allows it to support multiple high-level programming languages, making it a preferred choice for a wide range of compilers, including Rust and Clang (for C and C++).

Here is a complete flowchart of the LLVM Compilation architecture, wherein multiple languages feed their intermediate output to LLVM, and LLVM comes out with uniform Assembly code, which further gets parsed into an executable (program)

LLVM Flowchart

- - +

LLVM (Low-Level Virtual Machine)

LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability.

LLVM's compilation process typically involves several stages:

  1. Frontend: The frontend is responsible for taking source code written in high-level programming languages like Rust and C++ and parsing it into an intermediate representation (IR). This IR is a low-level, platform-independent code that serves as the common language for further processing.

Rust/C++ Source Code -> Intermediate Representation (IR)

  1. Optimizer: LLVM includes a powerful optimizer that takes the IR and applies various optimization techniques to improve code performance. These optimizations may include inlining functions, eliminating dead code, and reordering instructions for better pipelining.

Intermediate Representation (IR) -> Optimized Intermediate Representation (IR)

  1. Backend: The backend is responsible for translating the optimized IR into machine code for a specific target architecture, like x86, ARM, or MIPS.

Optimized Intermediate Representation (IR) -> Target-Specific Machine Code

  1. Linker: If necessary, LLVM can invoke a linker to combine multiple object files into a single executable. The linker resolves external dependencies and generates the final binary.

Object Files -> Executable Binary

LLVM's modular design allows it to support multiple high-level programming languages, making it a preferred choice for a wide range of compilers, including Rust and Clang (for C and C++).

Here is a complete flowchart of the LLVM Compilation architecture, wherein multiple languages feed their intermediate output to LLVM, and LLVM comes out with uniform Assembly code, which further gets parsed into an executable (program)

LLVM Flowchart

+ + \ No newline at end of file diff --git a/docs/definitions/rust/index.html b/docs/definitions/rust/index.html index 1ed55a2d..c6681dd4 100644 --- a/docs/definitions/rust/index.html +++ b/docs/definitions/rust/index.html @@ -3,14 +3,14 @@ -RUST | LLVM Compilation Performance Metrics - - +RUST | tra86: The Asembly Tracer Toolchain + +
-

RUST

Rust is a statically-typed systems programming language known for its emphasis on memory safety, zero-cost abstractions, and high performance. It was first developed by Mozilla and released in 2010. Rust's design goals include providing a safe and concurrent alternative to C and C++, while maintaining low-level control over hardware and system resources.

This document provides an extensive overview of Rust, covering its core features, syntax, memory management, and unique aspects that set it apart from other programming languages.

Key Features

1. Memory Safety

Rust's most significant feature is its focus on memory safety. It eliminates common programming errors like null pointer dereferences and buffer overflows through its ownership system, borrow checker, and lifetime annotations. These mechanisms ensure that memory-related bugs are caught at compile time, rather than causing runtime errors.

2. Concurrency

Rust has built-in support for concurrent programming, making it easier to write safe and efficient concurrent code. The async and await keywords allow for asynchronous programming, while Rust's ownership system ensures that data races and deadlocks are prevented.

3. Zero-cost Abstractions

Rust provides high-level abstractions without sacrificing performance. The "zero-cost" philosophy means that abstractions like generics, traits, and pattern matching don't introduce runtime overhead.

4. Ownership System

Rust's ownership system is the foundation of its memory safety guarantees. It revolves around three key concepts:

  • Ownership: Each value in Rust has a single "owner" variable, which is responsible for cleaning up the value when it's no longer needed.

  • Borrowing: Multiple references (either mutable or immutable) to a value can exist simultaneously, but they must follow strict rules to prevent data races.

  • Lifetimes: Lifetimes annotate how long references are valid, ensuring that references don't outlive the data they point to.

5. Pattern Matching

Rust's pattern matching allows concise and expressive code for handling complex data structures. It's used extensively in control flow and destructuring.

6. Cargo

Cargo is Rust's package manager and build tool. It simplifies dependency management, building, testing, and publishing Rust projects. It also enforces conventions, making it easy to create and share libraries.

Syntax

Rust's syntax is similar to C and C++, but with some distinctive features:

Variables and Mutability

In Rust, variables are immutable by default. To make a variable mutable, you must explicitly declare it as such using the mut keyword:

let x = 42;         // Immutable variable
let mut y = 42; // Mutable variable
fn add(a: i32, b: i32) -> i32 {
a + b
}

Functions

Functions in Rust are defined using the fn keyword. They can take parameters and return values:

fn main() {
let s1 = String::from("Hello"); // s1 owns the String
let s2 = s1; // Ownership transferred to s2, s1 is no longer valid
// println!("{}", s1); // This would result in an error

let s3 = String::from("World");
let len = calculate_length(&s3); // Borrowing s3 immutably
println!("Length of '{}' is {}.", s3, len);
}

fn calculate_length(s: &String) -> usize {
s.len()
}
- - +

RUST

Rust is a statically-typed systems programming language known for its emphasis on memory safety, zero-cost abstractions, and high performance. It was first developed by Mozilla and released in 2010. Rust's design goals include providing a safe and concurrent alternative to C and C++, while maintaining low-level control over hardware and system resources.

This document provides an extensive overview of Rust, covering its core features, syntax, memory management, and unique aspects that set it apart from other programming languages.

Key Features

1. Memory Safety

Rust's most significant feature is its focus on memory safety. It eliminates common programming errors like null pointer dereferences and buffer overflows through its ownership system, borrow checker, and lifetime annotations. These mechanisms ensure that memory-related bugs are caught at compile time, rather than causing runtime errors.

2. Concurrency

Rust has built-in support for concurrent programming, making it easier to write safe and efficient concurrent code. The async and await keywords allow for asynchronous programming, while Rust's ownership system ensures that data races and deadlocks are prevented.

3. Zero-cost Abstractions

Rust provides high-level abstractions without sacrificing performance. The "zero-cost" philosophy means that abstractions like generics, traits, and pattern matching don't introduce runtime overhead.

4. Ownership System

Rust's ownership system is the foundation of its memory safety guarantees. It revolves around three key concepts:

  • Ownership: Each value in Rust has a single "owner" variable, which is responsible for cleaning up the value when it's no longer needed.

  • Borrowing: Multiple references (either mutable or immutable) to a value can exist simultaneously, but they must follow strict rules to prevent data races.

  • Lifetimes: Lifetimes annotate how long references are valid, ensuring that references don't outlive the data they point to.

5. Pattern Matching

Rust's pattern matching allows concise and expressive code for handling complex data structures. It's used extensively in control flow and destructuring.

6. Cargo

Cargo is Rust's package manager and build tool. It simplifies dependency management, building, testing, and publishing Rust projects. It also enforces conventions, making it easy to create and share libraries.

Syntax

Rust's syntax is similar to C and C++, but with some distinctive features:

Variables and Mutability

In Rust, variables are immutable by default. To make a variable mutable, you must explicitly declare it as such using the mut keyword:

let x = 42;         // Immutable variable
let mut y = 42; // Mutable variable
fn add(a: i32, b: i32) -> i32 {
a + b
}

Functions

Functions in Rust are defined using the fn keyword. They can take parameters and return values:

fn main() {
let s1 = String::from("Hello"); // s1 owns the String
let s2 = s1; // Ownership transferred to s2, s1 is no longer valid
// println!("{}", s1); // This would result in an error

let s3 = String::from("World");
let len = calculate_length(&s3); // Borrowing s3 immutably
println!("Length of '{}' is {}.", s3, len);
}

fn calculate_length(s: &String) -> usize {
s.len()
}
+ + \ No newline at end of file diff --git a/docs/definitions/x86/index.html b/docs/definitions/x86/index.html index e7517f6c..94295ab3 100644 --- a/docs/definitions/x86/index.html +++ b/docs/definitions/x86/index.html @@ -3,14 +3,14 @@ -x86 Architecture | LLVM Compilation Performance Metrics - - +x86 Architecture | tra86: The Asembly Tracer Toolchain + +
-

x86 Architecture

x86 is a widely used computer architecture that encompasses a family of instruction set architectures based on the Intel 8086 CPU. It has evolved over the years and includes several generations, such as the 80286, 80386, 80486, and the more recent x86-64 (also known as AMD64) architecture. x86 is the foundation of the majority of personal computers and servers, running operating systems like Windows and Linux.

This document provides a brief overview of the fundamental concepts of x86 architecture, including its history, key features, and components.

History

  • 8086: Introduced in 1978, the Intel 8086 was the first x86 processor, using a 16-bit instruction set and a segmented memory model.

  • 80286 (286): Released in 1982, it was the first x86 chip to support protected mode, allowing for memory protection and multitasking.

  • 80386 (386): Introduced in 1985, it brought 32-bit addressing, virtual memory, and support for multitasking.

  • 80486 (486): Released in 1989, it added an on-chip cache and introduced the concept of pipelining for improved performance.

  • x86-64 (AMD64): Launched in 2003 by AMD, it extended the architecture to 64-bit, allowing for larger memory addressing and improved performance.

Key Features

1. CISC Architecture

x86 follows a Complex Instruction Set Computer (CISC) architecture. This means that it supports a large and diverse set of instructions, making it capable of performing complex operations in a single instruction.

2. Segmentation

x86 uses a segmented memory model where the physical memory is divided into segments. Each segment has a base address and a size, allowing for memory protection.

3. Registers

x86 processors have several general-purpose registers (like EAX, EBX, ECX, EDX) and segment registers (CS, DS, SS, ES, FS, GS) that play various roles in executing instructions.

4. Stack

The x86 architecture uses a stack for function calls and data storage. The stack pointer (ESP) keeps track of the top of the stack, and operations like push and pop are used for managing the stack.

5. Memory Addressing Modes

x86 supports various memory addressing modes, enabling efficient access to memory. Modes include direct, register-indirect, immediate, and indexed addressing.

6. Protected Mode

x86 processors can operate in protected mode, which provides memory protection and multitasking capabilities. This is essential for modern operating systems.

7. x86-64 (AMD64)

The x86-64 architecture extends the 32-bit x86 architecture to 64 bits, allowing for larger memory addressing, more registers, and improved performance. It remains backward compatible with 32-bit x86 code.

Components

CPU

The central processing unit (CPU) is the core of the x86 architecture. It executes instructions, manages registers, and controls the flow of data within the system.

Memory

Memory in the x86 architecture is divided into segments, each with its base address and size. The architecture supports both physical and virtual memory.

Input/Output

The Input/Output (I/O) subsystem allows the CPU to communicate with external devices, including storage devices, keyboards, and displays.

Interrupts

Interrupts are essential for handling asynchronous events. x86 processors support a variety of interrupt types, including hardware and software interrupts.

Coprocessors

x86 processors often include coprocessors like the Floating-Point Unit (FPU) for handling floating-point arithmetic and the MMX and SSE units for multimedia instructions.

This is a high-level overview of the x86 architecture, which forms the foundation of many modern computing systems. Understanding its key features and components is crucial for anyone working with low-level programming or system development.

- - +

x86 Architecture

x86 is a widely used computer architecture that encompasses a family of instruction set architectures based on the Intel 8086 CPU. It has evolved over the years and includes several generations, such as the 80286, 80386, 80486, and the more recent x86-64 (also known as AMD64) architecture. x86 is the foundation of the majority of personal computers and servers, running operating systems like Windows and Linux.

This document provides a brief overview of the fundamental concepts of x86 architecture, including its history, key features, and components.

History

  • 8086: Introduced in 1978, the Intel 8086 was the first x86 processor, using a 16-bit instruction set and a segmented memory model.

  • 80286 (286): Released in 1982, it was the first x86 chip to support protected mode, allowing for memory protection and multitasking.

  • 80386 (386): Introduced in 1985, it brought 32-bit addressing, virtual memory, and support for multitasking.

  • 80486 (486): Released in 1989, it added an on-chip cache and introduced the concept of pipelining for improved performance.

  • x86-64 (AMD64): Launched in 2003 by AMD, it extended the architecture to 64-bit, allowing for larger memory addressing and improved performance.

Key Features

1. CISC Architecture

x86 follows a Complex Instruction Set Computer (CISC) architecture. This means that it supports a large and diverse set of instructions, making it capable of performing complex operations in a single instruction.

2. Segmentation

x86 uses a segmented memory model where the physical memory is divided into segments. Each segment has a base address and a size, allowing for memory protection.

3. Registers

x86 processors have several general-purpose registers (like EAX, EBX, ECX, EDX) and segment registers (CS, DS, SS, ES, FS, GS) that play various roles in executing instructions.

4. Stack

The x86 architecture uses a stack for function calls and data storage. The stack pointer (ESP) keeps track of the top of the stack, and operations like push and pop are used for managing the stack.

5. Memory Addressing Modes

x86 supports various memory addressing modes, enabling efficient access to memory. Modes include direct, register-indirect, immediate, and indexed addressing.

6. Protected Mode

x86 processors can operate in protected mode, which provides memory protection and multitasking capabilities. This is essential for modern operating systems.

7. x86-64 (AMD64)

The x86-64 architecture extends the 32-bit x86 architecture to 64 bits, allowing for larger memory addressing, more registers, and improved performance. It remains backward compatible with 32-bit x86 code.

Components

CPU

The central processing unit (CPU) is the core of the x86 architecture. It executes instructions, manages registers, and controls the flow of data within the system.

Memory

Memory in the x86 architecture is divided into segments, each with its base address and size. The architecture supports both physical and virtual memory.

Input/Output

The Input/Output (I/O) subsystem allows the CPU to communicate with external devices, including storage devices, keyboards, and displays.

Interrupts

Interrupts are essential for handling asynchronous events. x86 processors support a variety of interrupt types, including hardware and software interrupts.

Coprocessors

x86 processors often include coprocessors like the Floating-Point Unit (FPU) for handling floating-point arithmetic and the MMX and SSE units for multimedia instructions.

This is a high-level overview of the x86 architecture, which forms the foundation of many modern computing systems. Understanding its key features and components is crucial for anyone working with low-level programming or system development.

+ + \ No newline at end of file diff --git a/docs/definitions/x86asm/index.html b/docs/definitions/x86asm/index.html index 6329a031..e3f6287d 100644 --- a/docs/definitions/x86asm/index.html +++ b/docs/definitions/x86asm/index.html @@ -3,14 +3,14 @@ -x86 Assembly Language | LLVM Compilation Performance Metrics - - +x86 Assembly Language | tra86: The Asembly Tracer Toolchain + +
-

x86 Assembly Language

x86 Assembly Language is a low-level programming language that directly corresponds to the architecture of x86-based processors. It provides a human-readable representation of machine code instructions, enabling programmers to write code that directly controls the CPU and memory. Understanding x86 Assembly is crucial for tasks like system programming, reverse engineering, and optimizing critical software components.

This document offers a basic introduction to x86 Assembly, covering its history, syntax, registers, instructions, and its role in modern computing.

History

x86 Assembly language has a long history, dating back to the original Intel 8086 processor. Over the years, it has evolved to support new features and capabilities, including 32-bit and 64-bit modes. Key developments include:

  • 16-Bit x86 Assembly: Corresponding to the Intel 8086 processor.
  • 32-Bit x86 Assembly: Introduced with processors like the Intel 80386, featuring extended registers and instructions.
  • x86-64 Assembly (AMD64): Extending the architecture to 64 bits, providing more registers and a larger address space.

Syntax

x86 Assembly code is written using a combination of mnemonics, registers, and memory addresses. The basic structure of an x86 Assembly program is:

; Comment
section .data
; Data declarations go here

section .text
global _start

_start:
; Instructions go here
mov eax, 1 ; Syscall number for write
mov ebx, 1 ; File descriptor for stdout
mov ecx, message ; Address of the message to print
mov edx, 13 ; Message length
int 0x80 ; Call the Linux syscall

section .data
message db 'Hello, World!', 0

Comments:

Lines starting with ; are comments.

Sections:

Code is organized into sections, typically .data for data declarations and .text for executable code.

Labels:

_start is a label representing the program's entry point.

Instructions:

mov, add, sub, and other instructions perform various operations.

Registers:

x86 Assembly code makes extensive use of registers, which are fast, small storage locations inside the CPU. Common x86 registers include:

  • EAX, EBX, ECX, EDX: General-purpose registers for data manipulation.
  • ESP: Stack pointer for managing the stack.
  • EBP: Base pointer for stack frame management.
  • ESI, EDI: Index registers often used for string operations.

Instructions:

x86 Assembly instructions are mnemonics representing machine-level operations. Common instructions include:

  • mov: Move data between registers or memory locations.
  • add, sub, mul, div: Arithmetic operations.
  • jmp, je, jl, jg: Conditional and unconditional jumps for control flow.
  • push, pop: Push and pop values to/from the stack.

Role in Modern Computing:

While high-level languages like C and C++ are more commonly used for software development, x86 Assembly remains crucial for various tasks:

  • System Programming: Writing operating system components and device drivers.
  • Optimization: Optimizing critical sections of code for performance.
  • Reverse Engineering: Analyzing and modifying compiled code.
  • Embedded Systems: Developing software for resource-constrained devices.

Understanding x86 Assembly provides insight into how computers execute instructions and manage data at the lowest level, making it a valuable skill for certain domains of programming and computer science.

This is just a basic introduction to x86 Assembly language. As you delve deeper into this fascinating realm, you'll uncover the intricacies of low-level programming and its vital role in modern computing.

- - +

x86 Assembly Language

x86 Assembly Language is a low-level programming language that directly corresponds to the architecture of x86-based processors. It provides a human-readable representation of machine code instructions, enabling programmers to write code that directly controls the CPU and memory. Understanding x86 Assembly is crucial for tasks like system programming, reverse engineering, and optimizing critical software components.

This document offers a basic introduction to x86 Assembly, covering its history, syntax, registers, instructions, and its role in modern computing.

History

x86 Assembly language has a long history, dating back to the original Intel 8086 processor. Over the years, it has evolved to support new features and capabilities, including 32-bit and 64-bit modes. Key developments include:

  • 16-Bit x86 Assembly: Corresponding to the Intel 8086 processor.
  • 32-Bit x86 Assembly: Introduced with processors like the Intel 80386, featuring extended registers and instructions.
  • x86-64 Assembly (AMD64): Extending the architecture to 64 bits, providing more registers and a larger address space.

Syntax

x86 Assembly code is written using a combination of mnemonics, registers, and memory addresses. The basic structure of an x86 Assembly program is:

; Comment
section .data
; Data declarations go here

section .text
global _start

_start:
; Instructions go here
mov eax, 1 ; Syscall number for write
mov ebx, 1 ; File descriptor for stdout
mov ecx, message ; Address of the message to print
mov edx, 13 ; Message length
int 0x80 ; Call the Linux syscall

section .data
message db 'Hello, World!', 0

Comments:

Lines starting with ; are comments.

Sections:

Code is organized into sections, typically .data for data declarations and .text for executable code.

Labels:

_start is a label representing the program's entry point.

Instructions:

mov, add, sub, and other instructions perform various operations.

Registers:

x86 Assembly code makes extensive use of registers, which are fast, small storage locations inside the CPU. Common x86 registers include:

  • EAX, EBX, ECX, EDX: General-purpose registers for data manipulation.
  • ESP: Stack pointer for managing the stack.
  • EBP: Base pointer for stack frame management.
  • ESI, EDI: Index registers often used for string operations.

Instructions:

x86 Assembly instructions are mnemonics representing machine-level operations. Common instructions include:

  • mov: Move data between registers or memory locations.
  • add, sub, mul, div: Arithmetic operations.
  • jmp, je, jl, jg: Conditional and unconditional jumps for control flow.
  • push, pop: Push and pop values to/from the stack.

Role in Modern Computing:

While high-level languages like C and C++ are more commonly used for software development, x86 Assembly remains crucial for various tasks:

  • System Programming: Writing operating system components and device drivers.
  • Optimization: Optimizing critical sections of code for performance.
  • Reverse Engineering: Analyzing and modifying compiled code.
  • Embedded Systems: Developing software for resource-constrained devices.

Understanding x86 Assembly provides insight into how computers execute instructions and manage data at the lowest level, making it a valuable skill for certain domains of programming and computer science.

This is just a basic introduction to x86 Assembly language. As you delve deeper into this fascinating realm, you'll uncover the intricacies of low-level programming and its vital role in modern computing.

+ + \ No newline at end of file diff --git a/docs/intro/index.html b/docs/intro/index.html index 5e85485f..532ca374 100644 --- a/docs/intro/index.html +++ b/docs/intro/index.html @@ -3,14 +3,14 @@ -Introduction | LLVM Compilation Performance Metrics - - +Introduction | tra86: The Asembly Tracer Toolchain + +
-

Introduction

This project mainly compares and contrasts between the RUST Programming Language, and the C++ Programming Language. We focus on the Cargo and Clang Compilers respectively, since they are both based on the LLVM Architecture. Thus, the low-level assembly generated by the LLVM compiler remains uniform between the two languages, and comparisons can be made.

We focus on RUST and C++ as they are both languages which are used in low-level systems programming. While the low-level LLVM compiler supports virtually any language, and currently is used for R, Python, Swift, and countless others; RUST and C++ insights give data for low-level programs, i.e. the layer on top of which all other programs are run.

Before we begin: a definition of terms

- - +

Introduction

This project mainly compares and contrasts between the RUST Programming Language, and the C++ Programming Language. We focus on the Cargo and Clang Compilers respectively, since they are both based on the LLVM Architecture. Thus, the low-level assembly generated by the LLVM compiler remains uniform between the two languages, and comparisons can be made.

We focus on RUST and C++ as they are both languages which are used in low-level systems programming. While the low-level LLVM compiler supports virtually any language, and currently is used for R, Python, Swift, and countless others; RUST and C++ insights give data for low-level programs, i.e. the layer on top of which all other programs are run.

Before we begin: a definition of terms

+ + \ No newline at end of file diff --git a/docs/thesis/pt2init/index.html b/docs/thesis/pt2init/index.html index 9bb647d7..71e9955a 100644 --- a/docs/thesis/pt2init/index.html +++ b/docs/thesis/pt2init/index.html @@ -3,13 +3,13 @@ -Semester 2: Part 2 Initial | LLVM Compilation Performance Metrics - - +Semester 2: Part 2 Initial | tra86: The Asembly Tracer Toolchain + +
-

Semester 2: Part 2 Initial

The following is the first presentation during the start of Spring 2024.

Copyright Notice:

The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.

Protected Material:

These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.

Usage Authorization:

If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact Kushagra Srivastava for authorization.

The code will be released under GNU GPL v3 once ready.

Slide +

Semester 2: Part 2 Initial

The following is the first presentation during the start of Spring 2024.

Copyright Notice:

The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.

Protected Material:

These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.

Usage Authorization:

If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact Kushagra Srivastava for authorization.

The code will be released under GNU GPL v3 once ready.

Slide Slide Slide Slide @@ -23,7 +23,7 @@ Slide Slide Slide

- - + + \ No newline at end of file diff --git a/docs/thesis/sem1/index.html b/docs/thesis/sem1/index.html index 2d7de4ba..0cddd144 100644 --- a/docs/thesis/sem1/index.html +++ b/docs/thesis/sem1/index.html @@ -3,13 +3,13 @@ -Semester 1: Thesis Presentation | LLVM Compilation Performance Metrics - - +Semester 1: Thesis Presentation | tra86: The Asembly Tracer Toolchain + +
-

Semester 1: Thesis Presentation

The following is the state of everything at the end of Fall 2023.

Copyright Notice:

The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.

Protected Material:

These slides are part of Kushagra Srivastava's Honors Thesis Presentation. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.

Usage Authorization:

If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact Kushagra Srivastava for authorization.

The code will be released under GNU GPL v3 once ready.

Slide +

Semester 1: Thesis Presentation

The following is the state of everything at the end of Fall 2023.

Copyright Notice:

The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.

Protected Material:

These slides are part of Kushagra Srivastava's Honors Thesis Presentation. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.

Usage Authorization:

If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact Kushagra Srivastava for authorization.

The code will be released under GNU GPL v3 once ready.

Slide Slide Slide Slide @@ -37,7 +37,7 @@ Slide Slide Slide

- - + + \ No newline at end of file diff --git a/docs/thesis/syslab/index.html b/docs/thesis/syslab/index.html index 2f44184e..b0401204 100644 --- a/docs/thesis/syslab/index.html +++ b/docs/thesis/syslab/index.html @@ -3,19 +3,19 @@ -Semester 0: CICS Syslab | LLVM Compilation Performance Metrics - - +Semester 0: CICS Syslab | tra86: The Asembly Tracer Toolchain + +
-

Semester 0: CICS Syslab

The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages.

Copyright Notice:

The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.

Protected Material:

These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.

Usage Authorization:

If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact Kushagra Srivastava for authorization.

The code will be released under GNU GPL v3 once ready.

Slide +

Semester 0: CICS Syslab

The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages.

Copyright Notice:

The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.

Protected Material:

These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.

Usage Authorization:

If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact Kushagra Srivastava for authorization.

The code will be released under GNU GPL v3 once ready.

Slide Slide Slide Slide Slide Slide

- - + + \ No newline at end of file diff --git a/iCons4-backend/docusaurus.config.js b/iCons4-backend/docusaurus.config.js index a10894b8..a2d9e66e 100644 --- a/iCons4-backend/docusaurus.config.js +++ b/iCons4-backend/docusaurus.config.js @@ -6,8 +6,8 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); /** @type {import('@docusaurus/types').Config} */ const config = { - title: 'LLVM Compilation Performance Metrics', - tagline: 'Kush Srivastava | Fall 2023 iCons 4 | CHC Honors Thesis', + title: 'tra86: The Asembly Tracer Toolchain', + tagline: 'Website Under Construction | ETA 05/25/2023', favicon: 'img/favicon.ico', // Set the production url of your site here @@ -54,7 +54,7 @@ const config = { // Replace with your project's social card image: 'img/docusaurus-social-card.jpg', navbar: { - title: 'LLVM Metrics', + title: 'RUST & C++ Metrics', logo: { alt: 'My Site Logo', src: 'img/logo.svg', diff --git a/index.html b/index.html index 5d953409..644cd437 100644 --- a/index.html +++ b/index.html @@ -3,14 +3,14 @@ -Hello from LLVM Compilation Performance Metrics | LLVM Compilation Performance Metrics - - +Hello from tra86: The Asembly Tracer Toolchain | tra86: The Asembly Tracer Toolchain + +
-

LLVM Compilation Performance Metrics

Kush Srivastava | Fall 2023 iCons 4 | CHC Honors Thesis

The following website provides documentation for my research on comparing performance metrics on RUST and C++, two of the most widely-used low-level programming languages. While the documentation process in this website assumes an understanding of and experience with low-level systems programming, the content has been designed in a way to appeal to anyone doing software development.


Low-level Insights

The most major reasoning behind doing this project is to provide a comparison of older vs. newer languages when it comes to low-level programming, i.e. Systems Design.

Scalibility, and Performance

Operating System Developments are an amalgation of years of work, thus judging performance metrics can give an insight on potential ROIs for rewriting these systems in completely new languages.

Hardware Agnostic

Tests conducted under this research process are on the compiler itself, and not dependent on hardware or platform. If x runs 5% better than y, it will run 5% faster on all hardware.

- - +

tra86: The Asembly Tracer Toolchain

Website Under Construction | ETA 05/25/2023

The following website provides documentation for my research on comparing performance metrics on RUST and C++, two of the most widely-used low-level programming languages. While the documentation process in this website assumes an understanding of and experience with low-level systems programming, the content has been designed in a way to appeal to anyone doing software development.


Low-level Insights

The most major reasoning behind doing this project is to provide a comparison of older vs. newer languages when it comes to low-level programming, i.e. Systems Design.

Scalibility, and Performance

Operating System Developments are an amalgation of years of work, thus judging performance metrics can give an insight on potential ROIs for rewriting these systems in completely new languages.

Hardware Agnostic

Tests conducted under this research process are on the compiler itself, and not dependent on hardware or platform. If x runs 5% better than y, it will run 5% faster on all hardware.

+ + \ No newline at end of file diff --git a/markdown-page/index.html b/markdown-page/index.html index 7881aab1..f92e21af 100644 --- a/markdown-page/index.html +++ b/markdown-page/index.html @@ -3,14 +3,14 @@ -Markdown page example | LLVM Compilation Performance Metrics - - +Markdown page example | tra86: The Asembly Tracer Toolchain + +
-

Markdown page example

You don't need React to write simple standalone pages.

- - +

Markdown page example

You don't need React to write simple standalone pages.

+ + \ No newline at end of file diff --git a/massurc/index.html b/massurc/index.html index a632625a..596bb815 100644 --- a/massurc/index.html +++ b/massurc/index.html @@ -3,14 +3,14 @@ -MassURC Thesis Abstracts. | LLVM Compilation Performance Metrics - - +MassURC Thesis Abstracts. | tra86: The Asembly Tracer Toolchain + +
-

MassURC Thesis Abstracts.

This page contains all the possible thesis abstracts for MassURC.

Abstract 1

The following thesis is a meta-analysis of the Performance Differences between RUST and C++, two of the most widely used low-level programming languages. The key difference between the two languages are the years of advancements between the two: C++ originated in the 70s and has decades of research and development, making it the most widely adopted language in the development of low-level systems. On the other hand, RUST, released in 2013, was created primarily to fix C++’s shortcomings: memory management, error logging, and debugging.

By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language.

If RUST enables, through it’s various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about 119 countries of the world, even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration.

- - +

MassURC Thesis Abstracts.

This page contains all the possible thesis abstracts for MassURC.

Abstract 1

The following thesis is a meta-analysis of the Performance Differences between RUST and C++, two of the most widely used low-level programming languages. The key difference between the two languages are the years of advancements between the two: C++ originated in the 70s and has decades of research and development, making it the most widely adopted language in the development of low-level systems. On the other hand, RUST, released in 2013, was created primarily to fix C++’s shortcomings: memory management, error logging, and debugging.

By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language.

If RUST enables, through it’s various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about 119 countries of the world, even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration.

+ + \ No newline at end of file diff --git a/server.bundle.js b/server.bundle.js deleted file mode 100644 index fb172c23..00000000 --- a/server.bundle.js +++ /dev/null @@ -1,98321 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 6020: -/***/ (function(__unused_webpack_module, exports) { - -(function (global, factory) { - true ? factory(exports) : - 0; -})(this, (function (exports) { 'use strict'; - - const comma = ','.charCodeAt(0); - const semicolon = ';'.charCodeAt(0); - const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; - const intToChar = new Uint8Array(64); // 64 possible chars. - const charToInteger = new Uint8Array(128); // z is 122 in ASCII - for (let i = 0; i < chars.length; i++) { - const c = chars.charCodeAt(i); - charToInteger[c] = i; - intToChar[i] = c; - } - // Provide a fallback for older environments. - const td = typeof TextDecoder !== 'undefined' - ? new TextDecoder() - : typeof Buffer !== 'undefined' - ? { - decode(buf) { - const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength); - return out.toString(); - }, - } - : { - decode(buf) { - let out = ''; - for (let i = 0; i < buf.length; i++) { - out += String.fromCharCode(buf[i]); - } - return out; - }, - }; - function decode(mappings) { - const state = new Int32Array(5); - const decoded = []; - let line = []; - let sorted = true; - let lastCol = 0; - for (let i = 0; i < mappings.length;) { - const c = mappings.charCodeAt(i); - if (c === comma) { - i++; - } - else if (c === semicolon) { - state[0] = lastCol = 0; - if (!sorted) - sort(line); - sorted = true; - decoded.push(line); - line = []; - i++; - } - else { - i = decodeInteger(mappings, i, state, 0); // generatedCodeColumn - const col = state[0]; - if (col < lastCol) - sorted = false; - lastCol = col; - if (!hasMoreSegments(mappings, i)) { - line.push([col]); - continue; - } - i = decodeInteger(mappings, i, state, 1); // sourceFileIndex - i = decodeInteger(mappings, i, state, 2); // sourceCodeLine - i = decodeInteger(mappings, i, state, 3); // sourceCodeColumn - if (!hasMoreSegments(mappings, i)) { - line.push([col, state[1], state[2], state[3]]); - continue; - } - i = decodeInteger(mappings, i, state, 4); // nameIndex - line.push([col, state[1], state[2], state[3], state[4]]); - } - } - if (!sorted) - sort(line); - decoded.push(line); - return decoded; - } - function decodeInteger(mappings, pos, state, j) { - let value = 0; - let shift = 0; - let integer = 0; - do { - const c = mappings.charCodeAt(pos++); - integer = charToInteger[c]; - value |= (integer & 31) << shift; - shift += 5; - } while (integer & 32); - const shouldNegate = value & 1; - value >>>= 1; - if (shouldNegate) { - value = -0x80000000 | -value; - } - state[j] += value; - return pos; - } - function hasMoreSegments(mappings, i) { - if (i >= mappings.length) - return false; - const c = mappings.charCodeAt(i); - if (c === comma || c === semicolon) - return false; - return true; - } - function sort(line) { - line.sort(sortComparator$1); - } - function sortComparator$1(a, b) { - return a[0] - b[0]; - } - function encode(decoded) { - const state = new Int32Array(5); - let buf = new Uint8Array(1024); - let pos = 0; - for (let i = 0; i < decoded.length; i++) { - const line = decoded[i]; - if (i > 0) { - buf = reserve(buf, pos, 1); - buf[pos++] = semicolon; - } - if (line.length === 0) - continue; - state[0] = 0; - for (let j = 0; j < line.length; j++) { - const segment = line[j]; - // We can push up to 5 ints, each int can take at most 7 chars, and we - // may push a comma. - buf = reserve(buf, pos, 36); - if (j > 0) - buf[pos++] = comma; - pos = encodeInteger(buf, pos, state, segment, 0); // generatedCodeColumn - if (segment.length === 1) - continue; - pos = encodeInteger(buf, pos, state, segment, 1); // sourceFileIndex - pos = encodeInteger(buf, pos, state, segment, 2); // sourceCodeLine - pos = encodeInteger(buf, pos, state, segment, 3); // sourceCodeColumn - if (segment.length === 4) - continue; - pos = encodeInteger(buf, pos, state, segment, 4); // nameIndex - } - } - return td.decode(buf.subarray(0, pos)); - } - function reserve(buf, pos, count) { - if (buf.length > pos + count) - return buf; - const swap = new Uint8Array(buf.length * 2); - swap.set(buf); - return swap; - } - function encodeInteger(buf, pos, state, segment, j) { - const next = segment[j]; - let num = next - state[j]; - state[j] = next; - num = num < 0 ? (-num << 1) | 1 : num << 1; - do { - let clamped = num & 0b011111; - num >>>= 5; - if (num > 0) - clamped |= 0b100000; - buf[pos++] = intToChar[clamped]; - } while (num > 0); - return pos; - } - - // Matches the scheme of a URL, eg "http://" - const schemeRegex = /^[\w+.-]+:\/\//; - /** - * Matches the parts of a URL: - * 1. Scheme, including ":", guaranteed. - * 2. User/password, including "@", optional. - * 3. Host, guaranteed. - * 4. Port, including ":", optional. - * 5. Path, including "/", optional. - */ - const urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?/; - /** - * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start - * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive). - * - * 1. Host, optional. - * 2. Path, which may inclue "/", guaranteed. - */ - const fileRegex = /^file:(?:\/\/((?![a-z]:)[^/]*)?)?(\/?.*)/i; - function isAbsoluteUrl(input) { - return schemeRegex.test(input); - } - function isSchemeRelativeUrl(input) { - return input.startsWith('//'); - } - function isAbsolutePath(input) { - return input.startsWith('/'); - } - function isFileUrl(input) { - return input.startsWith('file:'); - } - function parseAbsoluteUrl(input) { - const match = urlRegex.exec(input); - return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/'); - } - function parseFileUrl(input) { - const match = fileRegex.exec(input); - const path = match[2]; - return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path); - } - function makeUrl(scheme, user, host, port, path) { - return { - scheme, - user, - host, - port, - path, - relativePath: false, - }; - } - function parseUrl(input) { - if (isSchemeRelativeUrl(input)) { - const url = parseAbsoluteUrl('http:' + input); - url.scheme = ''; - return url; - } - if (isAbsolutePath(input)) { - const url = parseAbsoluteUrl('http://foo.com' + input); - url.scheme = ''; - url.host = ''; - return url; - } - if (isFileUrl(input)) - return parseFileUrl(input); - if (isAbsoluteUrl(input)) - return parseAbsoluteUrl(input); - const url = parseAbsoluteUrl('http://foo.com/' + input); - url.scheme = ''; - url.host = ''; - url.relativePath = true; - return url; - } - function stripPathFilename(path) { - // If a path ends with a parent directory "..", then it's a relative path with excess parent - // paths. It's not a file, so we can't strip it. - if (path.endsWith('/..')) - return path; - const index = path.lastIndexOf('/'); - return path.slice(0, index + 1); - } - function mergePaths(url, base) { - // If we're not a relative path, then we're an absolute path, and it doesn't matter what base is. - if (!url.relativePath) - return; - normalizePath(base); - // If the path is just a "/", then it was an empty path to begin with (remember, we're a relative - // path). - if (url.path === '/') { - url.path = base.path; - } - else { - // Resolution happens relative to the base path's directory, not the file. - url.path = stripPathFilename(base.path) + url.path; - } - // If the base path is absolute, then our path is now absolute too. - url.relativePath = base.relativePath; - } - /** - * The path can have empty directories "//", unneeded parents "foo/..", or current directory - * "foo/.". We need to normalize to a standard representation. - */ - function normalizePath(url) { - const { relativePath } = url; - const pieces = url.path.split('/'); - // We need to preserve the first piece always, so that we output a leading slash. The item at - // pieces[0] is an empty string. - let pointer = 1; - // Positive is the number of real directories we've output, used for popping a parent directory. - // Eg, "foo/bar/.." will have a positive 2, and we can decrement to be left with just "foo". - let positive = 0; - // We need to keep a trailing slash if we encounter an empty directory (eg, splitting "foo/" will - // generate `["foo", ""]` pieces). And, if we pop a parent directory. But once we encounter a - // real directory, we won't need to append, unless the other conditions happen again. - let addTrailingSlash = false; - for (let i = 1; i < pieces.length; i++) { - const piece = pieces[i]; - // An empty directory, could be a trailing slash, or just a double "//" in the path. - if (!piece) { - addTrailingSlash = true; - continue; - } - // If we encounter a real directory, then we don't need to append anymore. - addTrailingSlash = false; - // A current directory, which we can always drop. - if (piece === '.') - continue; - // A parent directory, we need to see if there are any real directories we can pop. Else, we - // have an excess of parents, and we'll need to keep the "..". - if (piece === '..') { - if (positive) { - addTrailingSlash = true; - positive--; - pointer--; - } - else if (relativePath) { - // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute - // URL, protocol relative URL, or an absolute path, we don't need to keep excess. - pieces[pointer++] = piece; - } - continue; - } - // We've encountered a real directory. Move it to the next insertion pointer, which accounts for - // any popped or dropped directories. - pieces[pointer++] = piece; - positive++; - } - let path = ''; - for (let i = 1; i < pointer; i++) { - path += '/' + pieces[i]; - } - if (!path || (addTrailingSlash && !path.endsWith('/..'))) { - path += '/'; - } - url.path = path; - } - /** - * Attempts to resolve `input` URL/path relative to `base`. - */ - function resolve$1(input, base) { - if (!input && !base) - return ''; - const url = parseUrl(input); - // If we have a base, and the input isn't already an absolute URL, then we need to merge. - if (base && !url.scheme) { - const baseUrl = parseUrl(base); - url.scheme = baseUrl.scheme; - // If there's no host, then we were just a path. - if (!url.host) { - // The host, user, and port are joined, you can't copy one without the others. - url.user = baseUrl.user; - url.host = baseUrl.host; - url.port = baseUrl.port; - } - mergePaths(url, baseUrl); - } - normalizePath(url); - // If the input (and base, if there was one) are both relative, then we need to output a relative. - if (url.relativePath) { - // The first char is always a "/". - const path = url.path.slice(1); - if (!path) - return '.'; - // If base started with a leading ".", or there is no base and input started with a ".", then we - // need to ensure that the relative path starts with a ".". We don't know if relative starts - // with a "..", though, so check before prepending. - const keepRelative = (base || input).startsWith('.'); - return !keepRelative || path.startsWith('.') ? path : './' + path; - } - // If there's no host (and no scheme/user/port), then we need to output an absolute path. - if (!url.scheme && !url.host) - return url.path; - // We're outputting either an absolute URL, or a protocol relative one. - return `${url.scheme}//${url.user}${url.host}${url.port}${url.path}`; - } - - function resolve(input, base) { - // The base is always treated as a directory, if it's not empty. - // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327 - // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401 - if (base && !base.endsWith('/')) - base += '/'; - return resolve$1(input, base); - } - - /** - * Removes everything after the last "/", but leaves the slash. - */ - function stripFilename(path) { - if (!path) - return ''; - const index = path.lastIndexOf('/'); - return path.slice(0, index + 1); - } - - const COLUMN$1 = 0; - const SOURCES_INDEX$1 = 1; - const SOURCE_LINE$1 = 2; - const SOURCE_COLUMN$1 = 3; - const NAMES_INDEX$1 = 4; - - function maybeSort(mappings, owned) { - const unsortedIndex = nextUnsortedSegmentLine(mappings, 0); - if (unsortedIndex === mappings.length) - return mappings; - // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If - // not, we do not want to modify the consumer's input array. - if (!owned) - mappings = mappings.slice(); - for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) { - mappings[i] = sortSegments(mappings[i], owned); - } - return mappings; - } - function nextUnsortedSegmentLine(mappings, start) { - for (let i = start; i < mappings.length; i++) { - if (!isSorted(mappings[i])) - return i; - } - return mappings.length; - } - function isSorted(line) { - for (let j = 1; j < line.length; j++) { - if (line[j][COLUMN$1] < line[j - 1][COLUMN$1]) { - return false; - } - } - return true; - } - function sortSegments(line, owned) { - if (!owned) - line = line.slice(); - return line.sort(sortComparator); - } - function sortComparator(a, b) { - return a[COLUMN$1] - b[COLUMN$1]; - } - - let found = false; - /** - * A binary search implementation that returns the index if a match is found. - * If no match is found, then the left-index (the index associated with the item that comes just - * before the desired index) is returned. To maintain proper sort order, a splice would happen at - * the next index: - * - * ```js - * const array = [1, 3]; - * const needle = 2; - * const index = binarySearch(array, needle, (item, needle) => item - needle); - * - * assert.equal(index, 0); - * array.splice(index + 1, 0, needle); - * assert.deepEqual(array, [1, 2, 3]); - * ``` - */ - function binarySearch(haystack, needle, low, high) { - while (low <= high) { - const mid = low + ((high - low) >> 1); - const cmp = haystack[mid][COLUMN$1] - needle; - if (cmp === 0) { - found = true; - return mid; - } - if (cmp < 0) { - low = mid + 1; - } - else { - high = mid - 1; - } - } - found = false; - return low - 1; - } - function upperBound(haystack, needle, index) { - for (let i = index + 1; i < haystack.length; i++, index++) { - if (haystack[i][COLUMN$1] !== needle) - break; - } - return index; - } - function lowerBound(haystack, needle, index) { - for (let i = index - 1; i >= 0; i--, index--) { - if (haystack[i][COLUMN$1] !== needle) - break; - } - return index; - } - function memoizedState() { - return { - lastKey: -1, - lastNeedle: -1, - lastIndex: -1, - }; - } - /** - * This overly complicated beast is just to record the last tested line/column and the resulting - * index, allowing us to skip a few tests if mappings are monotonically increasing. - */ - function memoizedBinarySearch(haystack, needle, state, key) { - const { lastKey, lastNeedle, lastIndex } = state; - let low = 0; - let high = haystack.length - 1; - if (key === lastKey) { - if (needle === lastNeedle) { - found = lastIndex !== -1 && haystack[lastIndex][COLUMN$1] === needle; - return lastIndex; - } - if (needle >= lastNeedle) { - // lastIndex may be -1 if the previous needle was not found. - low = lastIndex === -1 ? 0 : lastIndex; - } - else { - high = lastIndex; - } - } - state.lastKey = key; - state.lastNeedle = needle; - return (state.lastIndex = binarySearch(haystack, needle, low, high)); - } - - const AnyMap = function (map, mapUrl) { - const parsed = typeof map === 'string' ? JSON.parse(map) : map; - if (!('sections' in parsed)) - return new TraceMap(parsed, mapUrl); - const mappings = []; - const sources = []; - const sourcesContent = []; - const names = []; - const { sections } = parsed; - let i = 0; - for (; i < sections.length - 1; i++) { - const no = sections[i + 1].offset; - addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, no.line, no.column); - } - if (sections.length > 0) { - addSection(sections[i], mapUrl, mappings, sources, sourcesContent, names, Infinity, Infinity); - } - const joined = { - version: 3, - file: parsed.file, - names, - sources, - sourcesContent, - mappings, - }; - return presortedDecodedMap(joined); - }; - function addSection(section, mapUrl, mappings, sources, sourcesContent, names, stopLine, stopColumn) { - const map = AnyMap(section.map, mapUrl); - const { line: lineOffset, column: columnOffset } = section.offset; - const sourcesOffset = sources.length; - const namesOffset = names.length; - const decoded = decodedMappings(map); - const { resolvedSources } = map; - append(sources, resolvedSources); - append(sourcesContent, map.sourcesContent || fillSourcesContent(resolvedSources.length)); - append(names, map.names); - // If this section jumps forwards several lines, we need to add lines to the output mappings catch up. - for (let i = mappings.length; i <= lineOffset; i++) - mappings.push([]); - // We can only add so many lines before we step into the range that the next section's map - // controls. When we get to the last line, then we'll start checking the segments to see if - // they've crossed into the column range. - const stopI = stopLine - lineOffset; - const len = Math.min(decoded.length, stopI + 1); - for (let i = 0; i < len; i++) { - const line = decoded[i]; - // On the 0th loop, the line will already exist due to a previous section, or the line catch up - // loop above. - const out = i === 0 ? mappings[lineOffset] : (mappings[lineOffset + i] = []); - // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the - // map can be multiple lines), it doesn't. - const cOffset = i === 0 ? columnOffset : 0; - for (let j = 0; j < line.length; j++) { - const seg = line[j]; - const column = cOffset + seg[COLUMN$1]; - // If this segment steps into the column range that the next section's map controls, we need - // to stop early. - if (i === stopI && column >= stopColumn) - break; - if (seg.length === 1) { - out.push([column]); - continue; - } - const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX$1]; - const sourceLine = seg[SOURCE_LINE$1]; - const sourceColumn = seg[SOURCE_COLUMN$1]; - if (seg.length === 4) { - out.push([column, sourcesIndex, sourceLine, sourceColumn]); - continue; - } - out.push([column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX$1]]); - } - } - } - function append(arr, other) { - for (let i = 0; i < other.length; i++) - arr.push(other[i]); - } - // Sourcemaps don't need to have sourcesContent, and if they don't, we need to create an array of - // equal length to the sources. This is because the sources and sourcesContent are paired arrays, - // where `sourcesContent[i]` is the content of the `sources[i]` file. If we didn't, then joined - // sourcemap would desynchronize the sources/contents. - function fillSourcesContent(len) { - const sourcesContent = []; - for (let i = 0; i < len; i++) - sourcesContent[i] = null; - return sourcesContent; - } - - const INVALID_ORIGINAL_MAPPING = Object.freeze({ - source: null, - line: null, - column: null, - name: null, - }); - Object.freeze({ - line: null, - column: null, - }); - const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)'; - const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)'; - const LEAST_UPPER_BOUND = -1; - const GREATEST_LOWER_BOUND = 1; - /** - * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field. - */ - let decodedMappings; - /** - * A higher-level API to find the source/line/column associated with a generated line/column - * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in - * `source-map` library. - */ - let originalPositionFor; - /** - * A helper that skips sorting of the input map's mappings array, which can be expensive for larger - * maps. - */ - let presortedDecodedMap; - class TraceMap { - constructor(map, mapUrl) { - this._decodedMemo = memoizedState(); - this._bySources = undefined; - this._bySourceMemos = undefined; - const isString = typeof map === 'string'; - if (!isString && map.constructor === TraceMap) - return map; - const parsed = (isString ? JSON.parse(map) : map); - const { version, file, names, sourceRoot, sources, sourcesContent } = parsed; - this.version = version; - this.file = file; - this.names = names; - this.sourceRoot = sourceRoot; - this.sources = sources; - this.sourcesContent = sourcesContent; - if (sourceRoot || mapUrl) { - const from = resolve(sourceRoot || '', stripFilename(mapUrl)); - this.resolvedSources = sources.map((s) => resolve(s || '', from)); - } - else { - this.resolvedSources = sources.map((s) => s || ''); - } - const { mappings } = parsed; - if (typeof mappings === 'string') { - this._encoded = mappings; - this._decoded = undefined; - } - else { - this._encoded = undefined; - this._decoded = maybeSort(mappings, isString); - } - } - } - (() => { - decodedMappings = (map) => { - return (map._decoded || (map._decoded = decode(map._encoded))); - }; - originalPositionFor = (map, { line, column, bias }) => { - line--; - if (line < 0) - throw new Error(LINE_GTR_ZERO); - if (column < 0) - throw new Error(COL_GTR_EQ_ZERO); - const decoded = decodedMappings(map); - // It's common for parent source maps to have pointers to lines that have no - // mapping (like a "//# sourceMappingURL=") at the end of the child file. - if (line >= decoded.length) - return INVALID_ORIGINAL_MAPPING; - const segment = traceSegmentInternal(decoded[line], map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND); - if (segment == null) - return INVALID_ORIGINAL_MAPPING; - if (segment.length == 1) - return INVALID_ORIGINAL_MAPPING; - const { names, resolvedSources } = map; - return { - source: resolvedSources[segment[SOURCES_INDEX$1]], - line: segment[SOURCE_LINE$1] + 1, - column: segment[SOURCE_COLUMN$1], - name: segment.length === 5 ? names[segment[NAMES_INDEX$1]] : null, - }; - }; - presortedDecodedMap = (map, mapUrl) => { - const clone = Object.assign({}, map); - clone.mappings = []; - const tracer = new TraceMap(clone, mapUrl); - tracer._decoded = map.mappings; - return tracer; - }; - })(); - function traceSegmentInternal(segments, memo, line, column, bias) { - let index = memoizedBinarySearch(segments, column, memo, line); - if (found) { - index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index); - } - else if (bias === LEAST_UPPER_BOUND) - index++; - if (index === -1 || index === segments.length) - return null; - return segments[index]; - } - - /** - * Gets the index associated with `key` in the backing array, if it is already present. - */ - let get; - /** - * Puts `key` into the backing array, if it is not already present. Returns - * the index of the `key` in the backing array. - */ - let put; - /** - * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the - * index of the `key` in the backing array. - * - * This is designed to allow synchronizing a second array with the contents of the backing array, - * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`, - * and there are never duplicates. - */ - class SetArray { - constructor() { - this._indexes = { __proto__: null }; - this.array = []; - } - } - (() => { - get = (strarr, key) => strarr._indexes[key]; - put = (strarr, key) => { - // The key may or may not be present. If it is present, it's a number. - const index = get(strarr, key); - if (index !== undefined) - return index; - const { array, _indexes: indexes } = strarr; - return (indexes[key] = array.push(key) - 1); - }; - })(); - - const COLUMN = 0; - const SOURCES_INDEX = 1; - const SOURCE_LINE = 2; - const SOURCE_COLUMN = 3; - const NAMES_INDEX = 4; - - const NO_NAME = -1; - /** - * Same as `addMapping`, but will only add the mapping if it generates useful information in the - * resulting map. This only works correctly if mappings are added **in order**, meaning you should - * not add a mapping with a lower generated line/column than one that came before. - */ - let maybeAddMapping; - /** - * Adds/removes the content of the source file to the source map. - */ - let setSourceContent; - /** - * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects - * a sourcemap, or to JSON.stringify. - */ - let toDecodedMap; - /** - * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects - * a sourcemap, or to JSON.stringify. - */ - let toEncodedMap; - // This split declaration is only so that terser can elminiate the static initialization block. - let addSegmentInternal; - /** - * Provides the state to generate a sourcemap. - */ - class GenMapping { - constructor({ file, sourceRoot } = {}) { - this._names = new SetArray(); - this._sources = new SetArray(); - this._sourcesContent = []; - this._mappings = []; - this.file = file; - this.sourceRoot = sourceRoot; - } - } - (() => { - maybeAddMapping = (map, mapping) => { - return addMappingInternal(true, map, mapping); - }; - setSourceContent = (map, source, content) => { - const { _sources: sources, _sourcesContent: sourcesContent } = map; - sourcesContent[put(sources, source)] = content; - }; - toDecodedMap = (map) => { - const { file, sourceRoot, _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; - removeEmptyFinalLines(mappings); - return { - version: 3, - file: file || undefined, - names: names.array, - sourceRoot: sourceRoot || undefined, - sources: sources.array, - sourcesContent, - mappings, - }; - }; - toEncodedMap = (map) => { - const decoded = toDecodedMap(map); - return Object.assign(Object.assign({}, decoded), { mappings: encode(decoded.mappings) }); - }; - // Internal helpers - addSegmentInternal = (skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name) => { - const { _mappings: mappings, _sources: sources, _sourcesContent: sourcesContent, _names: names, } = map; - const line = getLine(mappings, genLine); - const index = getColumnIndex(line, genColumn); - if (!source) { - if (skipable && skipSourceless(line, index)) - return; - return insert(line, index, [genColumn]); - } - const sourcesIndex = put(sources, source); - const namesIndex = name ? put(names, name) : NO_NAME; - if (sourcesIndex === sourcesContent.length) - sourcesContent[sourcesIndex] = null; - if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) { - return; - } - return insert(line, index, name - ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] - : [genColumn, sourcesIndex, sourceLine, sourceColumn]); - }; - })(); - function getLine(mappings, index) { - for (let i = mappings.length; i <= index; i++) { - mappings[i] = []; - } - return mappings[index]; - } - function getColumnIndex(line, genColumn) { - let index = line.length; - for (let i = index - 1; i >= 0; index = i--) { - const current = line[i]; - if (genColumn >= current[COLUMN]) - break; - } - return index; - } - function insert(array, index, value) { - for (let i = array.length; i > index; i--) { - array[i] = array[i - 1]; - } - array[index] = value; - } - function removeEmptyFinalLines(mappings) { - const { length } = mappings; - let len = length; - for (let i = len - 1; i >= 0; len = i, i--) { - if (mappings[i].length > 0) - break; - } - if (len < length) - mappings.length = len; - } - function skipSourceless(line, index) { - // The start of a line is already sourceless, so adding a sourceless segment to the beginning - // doesn't generate any useful information. - if (index === 0) - return true; - const prev = line[index - 1]; - // If the previous segment is also sourceless, then adding another sourceless segment doesn't - // genrate any new information. Else, this segment will end the source/named segment and point to - // a sourceless position, which is useful. - return prev.length === 1; - } - function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) { - // A source/named segment at the start of a line gives position at that genColumn - if (index === 0) - return false; - const prev = line[index - 1]; - // If the previous segment is sourceless, then we're transitioning to a source. - if (prev.length === 1) - return false; - // If the previous segment maps to the exact same source position, then this segment doesn't - // provide any new position information. - return (sourcesIndex === prev[SOURCES_INDEX] && - sourceLine === prev[SOURCE_LINE] && - sourceColumn === prev[SOURCE_COLUMN] && - namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)); - } - function addMappingInternal(skipable, map, mapping) { - const { generated, source, original, name } = mapping; - if (!source) { - return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null); - } - const s = source; - return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name); - } - - class SourceMapConsumer { - constructor(map, mapUrl) { - const trace = (this._map = new AnyMap(map, mapUrl)); - this.file = trace.file; - this.names = trace.names; - this.sourceRoot = trace.sourceRoot; - this.sources = trace.resolvedSources; - this.sourcesContent = trace.sourcesContent; - } - originalPositionFor(needle) { - return originalPositionFor(this._map, needle); - } - destroy() { - // noop. - } - } - class SourceMapGenerator { - constructor(opts) { - this._map = new GenMapping(opts); - } - addMapping(mapping) { - maybeAddMapping(this._map, mapping); - } - setSourceContent(source, content) { - setSourceContent(this._map, source, content); - } - toJSON() { - return toEncodedMap(this._map); - } - toDecodedMap() { - return toDecodedMap(this._map); - } - } - - exports.SourceMapConsumer = SourceMapConsumer; - exports.SourceMapGenerator = SourceMapGenerator; - - Object.defineProperty(exports, '__esModule', { value: true }); - -})); -//# sourceMappingURL=source-map.umd.js.map - - -/***/ }), - -/***/ 3905: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Zo: () => (/* binding */ MDXProvider), -/* harmony export */ kt: () => (/* binding */ createElement) -/* harmony export */ }); -/* unused harmony exports MDXContext, useMDXComponents, withMDXComponents */ -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); - - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; - }; - - return _extends.apply(this, arguments); -} - -function ownKeys(object, enumerableOnly) { - var keys = Object.keys(object); - - if (Object.getOwnPropertySymbols) { - var symbols = Object.getOwnPropertySymbols(object); - if (enumerableOnly) symbols = symbols.filter(function (sym) { - return Object.getOwnPropertyDescriptor(object, sym).enumerable; - }); - keys.push.apply(keys, symbols); - } - - return keys; -} - -function _objectSpread2(target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i] != null ? arguments[i] : {}; - - if (i % 2) { - ownKeys(Object(source), true).forEach(function (key) { - _defineProperty(target, key, source[key]); - }); - } else if (Object.getOwnPropertyDescriptors) { - Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); - } else { - ownKeys(Object(source)).forEach(function (key) { - Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); - }); - } - } - - return target; -} - -function _objectWithoutPropertiesLoose(source, excluded) { - if (source == null) return {}; - var target = {}; - var sourceKeys = Object.keys(source); - var key, i; - - for (i = 0; i < sourceKeys.length; i++) { - key = sourceKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - target[key] = source[key]; - } - - return target; -} - -function _objectWithoutProperties(source, excluded) { - if (source == null) return {}; - - var target = _objectWithoutPropertiesLoose(source, excluded); - - var key, i; - - if (Object.getOwnPropertySymbols) { - var sourceSymbolKeys = Object.getOwnPropertySymbols(source); - - for (i = 0; i < sourceSymbolKeys.length; i++) { - key = sourceSymbolKeys[i]; - if (excluded.indexOf(key) >= 0) continue; - if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; - target[key] = source[key]; - } - } - - return target; -} - -var isFunction = function isFunction(obj) { - return typeof obj === 'function'; -}; - -var MDXContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({}); -var withMDXComponents = function withMDXComponents(Component) { - return function (props) { - var allComponents = useMDXComponents(props.components); - return /*#__PURE__*/React.createElement(Component, _extends({}, props, { - components: allComponents - })); - }; -}; -var useMDXComponents = function useMDXComponents(components) { - var contextComponents = react__WEBPACK_IMPORTED_MODULE_0__.useContext(MDXContext); - var allComponents = contextComponents; - - if (components) { - allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components); - } - - return allComponents; -}; -var MDXProvider = function MDXProvider(props) { - var allComponents = useMDXComponents(props.components); - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(MDXContext.Provider, { - value: allComponents - }, props.children); -}; - -var TYPE_PROP_NAME = 'mdxType'; -var DEFAULTS = { - inlineCode: 'code', - wrapper: function wrapper(_ref) { - var children = _ref.children; - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, {}, children); - } -}; -var MDXCreateElement = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, ref) { - var propComponents = props.components, - mdxType = props.mdxType, - originalType = props.originalType, - parentName = props.parentName, - etc = _objectWithoutProperties(props, ["components", "mdxType", "originalType", "parentName"]); - - var components = useMDXComponents(propComponents); - var type = mdxType; - var Component = components["".concat(parentName, ".").concat(type)] || components[type] || DEFAULTS[type] || originalType; - - if (propComponents) { - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Component, _objectSpread2(_objectSpread2({ - ref: ref - }, etc), {}, { - components: propComponents - })); - } - - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Component, _objectSpread2({ - ref: ref - }, etc)); -}); -MDXCreateElement.displayName = 'MDXCreateElement'; -function createElement (type, props) { - var args = arguments; - var mdxType = props && props.mdxType; - - if (typeof type === 'string' || mdxType) { - var argsLength = args.length; - var createElementArgArray = new Array(argsLength); - createElementArgArray[0] = MDXCreateElement; - var newProps = {}; - - for (var key in props) { - if (hasOwnProperty.call(props, key)) { - newProps[key] = props[key]; - } - } - - newProps.originalType = type; - newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType; - createElementArgArray[1] = newProps; - - for (var i = 2; i < argsLength; i++) { - createElementArgArray[i] = args[i]; - } - - return react__WEBPACK_IMPORTED_MODULE_0__.createElement.apply(null, createElementArgArray); - } - - return react__WEBPACK_IMPORTED_MODULE_0__.createElement.apply(null, args); -} - - - - -/***/ }), - -/***/ 4162: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -var _path, _path2; -function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -const SvgHome1 = _ref => { - let { - title, - titleId, - ...props - } = _ref; - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({ - xmlns: "http://www.w3.org/2000/svg", - width: 300, - height: 300, - viewBox: "0 0 225 225", - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("title", { - id: titleId - }, title) : null, _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { - d: "M42.6 28.2c-5.2 1.4-12.8 9-14.4 14.4-1.7 5.9-1.7 133.9 0 139.8 1.7 5.7 9 12.8 14.8 14.4 3.4 1 20.4 1.2 71.5 1 66.9-.3 67-.3 71.1-2.5 5.1-2.7 8.7-6.9 10.8-12.5 1.5-3.9 1.6-11.4 1.4-71.8-.3-63.7-.4-67.7-2.2-71-2.6-4.9-5.5-7.9-10.1-10.3-4-2.2-4.5-2.2-71.5-2.4-44.7-.1-68.8.2-71.4.9zm139.3 9.6c1.9 1 4.3 3.4 5.3 5.3 1.7 3.2 1.8 7.4 1.8 69.8 0 64.8 0 66.4-2 69.6-4.1 6.7-1.7 6.5-75 6.5-65.5 0-66.3 0-69.7-2.1-6.6-4.1-6.3-.9-6.3-74.6 0-63.5.1-67 1.9-69.9 4-6.6 1.6-6.4 74.6-6.4 62.1 0 66.2.1 69.4 1.8z" - })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { - d: "M92.8 83c-12.8 3.9-16 16.5-6.3 25.5l3.4 3.3-4.1 3.2c-10 8-8.9 21.2 2.2 26.7 5.8 3 17.5 3.2 23.5.4 13.3-6.2 13.1-20.5-.4-29.2l-2.4-1.5 3.7-2.2c4.8-2.9 8-9.6 7-14.9-1.7-9.2-14.9-14.8-26.6-11.3zm12.8 10.6c3.2 3.1 2.6 6.8-1.4 10.1-3.5 2.9-4.4 2.9-8.2-.3-2.6-2.2-3.1-3.3-2.8-6.3.5-6.1 7.8-8.2 12.4-3.5zm-1.7 25.9c6.3 4.2 7.6 9 3.6 13-5.2 5.3-16.5 2.1-16.5-4.6 0-4.1 1.5-6.6 5.3-8.9 1.8-1.1 3.3-2 3.5-2 .1 0 2 1.1 4.1 2.5zM147.9 83.3c-13.6 3.8-19.4 13.9-19.4 33.7 0 12.1.9 15.4 5.9 20.8 5 5.6 16.6 8 24.3 5.1 9.9-3.7 15.2-19.3 10.1-29.4-4.9-9.6-18.4-12.4-25.9-5.4-1.7 1.6-3.2 2.9-3.4 2.9-.9 0 1.8-9.9 3.3-11.9 4-5.4 6.8-6.6 15.3-6.6h8l-.3-5-.3-5-6.5-.2c-3.6-.1-8.6.4-11.1 1zm7.8 32.9c1.8 1.7 2.3 3.2 2.3 7.3 0 7.1-2.6 10.5-8 10.5-6.8 0-11.8-8.6-8.6-14.9.9-1.6 2.4-3.5 3.3-4 3.1-1.8 8.5-1.3 11 1.1zM49.7 116.2c.6.7 2.8 3.8 5.1 6.9l4.1 5.7-5 7c-2.7 3.8-4.9 7.3-4.9 7.6 0 .3.9.6 2 .6 1.3 0 3.5-2.1 6.3-6l4.4-5.9 3.9 5.7c2.5 3.6 4.8 5.8 6.2 6 1.2.2 2.2 0 2.2-.3 0-.4-2.2-3.8-4.9-7.7l-5-7 4.9-6.7c4.5-6.1 4.7-6.6 2.7-6.9-2.1-.4-2.6 0-7.8 6.8l-2.6 3.4-3.4-5.2c-2.8-4.2-3.9-5.2-6.3-5.2-2.1 0-2.6.3-1.9 1.2z" - }))); -}; -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgHome1); - -/***/ }), - -/***/ 1536: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -var _path; -function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -const SvgHome2 = _ref => { - let { - title, - titleId, - ...props - } = _ref; - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({ - xmlns: "http://www.w3.org/2000/svg", - width: 209.333, - height: 312, - viewBox: "0 0 157 234", - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("title", { - id: titleId - }, title) : null, _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { - d: "M7.7 2.7C7.3 3 7 38.9 7 82.4l.1 79.1 7.8 6.3c4.3 3.5 11.7 9 16.5 12.3L40 186l27.3-.4c14.9-.2 27.9-.3 28.7-.4.8 0 5.1 0 9.5-.1 6.5 0 8.2-.4 9.3-1.8 1.1-1.5 1-2-.8-3.5-2.7-2.2-2.6-2.5 1.8-3.3 4.5-.7 7.4-4.2 4.8-5.7-2.4-1.4-1.9-2.6 1.4-3.3 3.5-.8 5.8-4.1 4.1-5.8-1.6-1.6-1.3-2.7.7-2.7 1.1 0 2.4-1.2 3.1-2.6 1-2.2.9-2.8-.6-3.9s-1.5-1.3.6-2c2.9-.9 5.1-5.3 3.2-6.5-1.1-.6-1-1 .4-1.8 1.1-.5 1.9-2.3 2-4.3.2-1.9.7-4.3 1.1-5.4.5-1.1.9-9 .8-17.5-.1-18.4-1.9-26.4-8.9-40.7-7.3-14.9-19.1-25.1-33-28.8-8-2-22.8-2-29.5.2-6.3 2-14.2 8.8-16.3 14-1.8 4.8-2.9 12.5-1.9 13.8.4.6 3.3 2.6 6.6 4.5C62 82.6 76 97.3 79.5 104.5c2.4 4.7 2.7 6.4 2.2 11.1-.7 7.2.3 9.8 6.6 16.1l5.1 5.3-3.9 4.1c-2.2 2.2-5.2 4.7-6.6 5.4-2.8 1.5-9.2 1.7-8.3.3.7-1.1-.9-1-4.2.2-3.4 1.3-4.4.4-1.6-1.5 2.1-1.5 2-1.6-3.9-9.5-6.2-8.3-8.1-9.4-9.9-6.1-1.6 3.1-1.1 8.1 1.6 15.6 4 11 4.1 12.3.9 13.5-3.9 1.5-10.2 1.2-13.7-.6-2.7-1.4-2.9-1.9-2.4-4.7 3.1-15.6 2-19.1-8.5-25.8-4.4-2.8-8.4-6-9-7.1-.6-1.1-1-6.8-.9-13.1.1-6.2-.1-16.8-.5-23.6C21.4 66 24 56.5 33.4 44.6c2.5-3.3 4.6-6.9 4.6-8 .1-1.2.7-3.5 1.5-5.1l1.3-3 .1 3.8c.1 4.3 2.1 4.7 3.2.6.3-1.4 1.5-4.3 2.5-6.5l1.9-3.9.5 3.9c.3 2.2 1 4.1 1.6 4.3.5.2 2-2.1 3.3-5.2 2.5-5.9 3.5-6.3 4.4-1.5.7 3.3 3.2 4.1 4.1 1.2.4-1 2-3.1 3.6-4.7l3-2.9v3.2c0 3.9 1.1 4 4.7.4 2.8-2.7 2.8-2.7 3.1-.5.4 2.5 2.2 2.9 5.4 1.2 1.3-.7 2.3-.8 2.7-.1.3.5 4.2 1.5 8.6 2.2 21.6 3.3 42.1 16.7 54.7 35.9l4.8 7.4V35.2c0-28.2-.2-32.1-1.6-32.6-2.1-.8-142.9-.8-143.7.1zM3.5 195c-.3.5.3 1 1.4 1 2.9 0 3.2 2.3 2.9 18.5-.3 13.7-.4 14-2.5 14.3-1.3.2-2.3.8-2.3 1.3s6.2.9 14.5.9h14.4l1.1-4.1c1.8-6.6.9-7.8-2.3-3.1-3 4.6-5.1 5.5-11.8 5l-4.4-.3-.3-14c-.3-16.1 0-18.5 2.8-18.5 1.1 0 2-.5 2-1 0-1.3-14.7-1.3-15.5 0zM36 195c0 .5.8 1 1.9 1 2.3 0 3.1 3.5 3.1 14.4 0 13.1-.9 18.6-3.1 18.6-1.1 0-1.9.4-1.9 1s5.5 1 14.4 1h14.4l1.1-4.4c2-7.9.9-8.9-2.7-2.6-2.5 4.4-4.6 5.3-11.3 4.8l-4.4-.3v-16c0-15.8 0-16 2.3-16.3 1.2-.2 2.2-.8 2.2-1.3s-3.6-.9-8-.9c-4.7 0-8 .4-8 1zM65 194.6c0 .3.9 1.3 1.9 2.2 1.1 1 4.8 9.2 8.1 18.4 3.4 9.3 6.5 16.8 7 16.8.4 0 2.4-4.2 4.5-9.3 7.6-18.4 11.2-25.5 13.4-26.2 1.1-.3 2.1-1.1 2.1-1.6 0-1.2-11.7-1.2-12.5.1-.3.5.1 1 1 1 .8 0 1.8.6 2.1 1.4.5 1.3-6.9 22.3-8.5 23.9-1 1-8.5-22.8-7.6-24.2.3-.6 1.5-1.1 2.6-1.1 1 0 1.9-.5 1.9-1 0-.6-3.3-1-8-1-4.4 0-8 .3-8 .6zM105 194.9c0 .5 1 1.1 2.3 1.3 2.1.3 2.2.6 2.5 14.6.3 15-.4 18.2-3.8 18.2-1.1 0-2 .4-2 1s3 1 7 1 7-.4 7-1-.9-1-1.9-1c-1.1 0-2.2-.8-2.5-1.8-1-3.6-1.6-17.9-.9-22.9l.8-5.3 6.4 15.5c3.5 8.5 6.7 15.5 7.1 15.5.5 0 3.9-7 7.6-15.7l6.9-15.6.3 13.8c.1 7.7 0 14.5-.2 15.2-.3.7-1.5 1.3-2.6 1.3s-2 .4-2 1 3.3 1 8 1 8-.4 8-1-.8-1-1.9-1c-1.5 0-1.9-1.1-2.5-7.7-.8-9.5-.8-20.1 0-23.1.4-1.4 1.4-2.2 2.7-2.2 1.5 0 1.8-.3 1-1.1-.5-.5-3.4-.9-6.3-.7l-5.3.3-5.5 12.8c-3 7-5.7 12.5-6.1 12.2-.3-.4-2.8-6.1-5.6-12.8l-5-12.2-6.8-.3c-3.9-.2-6.7.1-6.7.7z" - }))); -}; -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgHome2); - -/***/ }), - -/***/ 334: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -var _path, _path2; -function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } - -const SvgHome3 = _ref => { - let { - title, - titleId, - ...props - } = _ref; - return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", _extends({ - xmlns: "http://www.w3.org/2000/svg", - width: 682.667, - height: 682.667, - viewBox: "0 0 512 512", - "aria-labelledby": titleId - }, props), title ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("title", { - id: titleId - }, title) : null, _path || (_path = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { - d: "M76.5 5.5C38.4 9.2 11.6 18.2 2.9 30.3l-2.9 4v94.8c0 54.7.4 95.8.9 97.2 3.5 9.1 21.2 18.1 45.6 23.2 12.3 2.5 34.9 5.5 41.8 5.5 7.4 0 11.3-7.5 6.4-12.4-2-2-3.8-2.5-11.8-3.1-29.2-2.1-55.9-8.9-65.2-16.6l-3.7-3v-20.1c0-15.6.3-19.9 1.2-19.5 22.3 9.6 47.7 14.3 82.8 15.4 38.2 1.1 75.6-4 95.9-13.3 2.9-1.3 5.5-2.4 5.7-2.4.2 0 .4 9 .4 20 0 19.4-.1 20-2.2 22-8 7.6-33.5 14.7-61.1 17-6.7.6-13.4 1.6-14.9 2.1-3.4 1.4-5.2 5.6-3.9 9.2 1.8 4.6 4.5 5.2 19.3 3.8 39.9-3.8 66.8-13.1 74.8-25.8l3-4.7v-93.3c0-89.9-.1-93.5-1.9-97.1-7.5-14.5-35.9-24.5-80.6-28.2-15.7-1.3-39.7-1.1-56 .5zM131.1 20c37.1 2.9 68.9 12.7 68.9 21.2 0 3.8-14.2 10.6-30.5 14.7-34.7 8.6-92.6 8.4-126.4-.5-21-5.5-32-12.2-28-17 4.3-5.1 21.2-11.4 40.6-14.9 22.9-4.2 50.1-5.4 75.4-3.5zm-110 43.9C33.8 69.6 54.4 74 78.7 76.1c17.8 1.5 58.8.7 72.8-1.5 18.9-2.9 36.3-7.4 44.8-11.7L200 61v40.9l-3.3 2.5c-10.9 8.3-37.7 14.6-70.6 16.7-44.7 2.7-92.9-4.7-108.7-16.7l-3.4-2.6V81.4c0-11.2.2-20.4.4-20.4s3.2 1.3 6.7 2.9zM39 129.2c19.7 4.9 39.1 7 67.5 7.1 38.9.1 67.9-4.3 87.3-13.3l6.2-2.9v20.3c0 19.7-.1 20.3-2.2 22.3-7 6.4-25.3 12.2-50.3 16-17.1 2.5-63.9 2.5-81 0-22.1-3.3-38.5-8.2-47.2-14l-4.8-3.2-.3-20.7-.2-20.7 6.7 3.1c3.8 1.7 12 4.4 18.3 6zM231.1 86.9c-2.6 2.6-2.7 7.1-.3 10 1.3 1.7 3.8 2.5 11.2 3.6 20.4 3 34.9 7.5 52.5 16.4 16 8.1 28 16.6 40.9 29.1 21.6 20.8 38 48.9 45.6 77.7 2 7.7 7.2 10.3 12.4 6.2 3.6-2.9 3.4-6.4-1.4-21.1-13.9-42.5-43.3-78.5-82.8-101.2-20.1-11.7-47.1-20.5-67.9-22.2-7.4-.6-8.2-.5-10.2 1.5zM223.3 246c-8.5 1.7-15.1 6.9-19.2 15.2l-3.1 6.1v88.6c.1 70.1.4 89.4 1.4 92.2l1.3 3.7-5.5 1.1c-6.8 1.3-11.8 5.1-14.3 10.5-2.7 5.9-2.7 29.2 0 35.1 2 4.6 6.9 9.1 10.9 10.3 3.5.9 299.9.9 303.4 0 4-1.2 8.9-5.7 10.9-10.3 1.5-3.2 1.9-6.5 1.9-17.5 0-15.5-1.3-19.9-7.2-24.4-2.6-2-10.8-4.6-14.3-4.6-.2 0 .3-2.1 1.1-4.7 1.1-3.6 1.4-12.6 1.4-40.5 0-34.5-.1-35.9-2-37.8-3.3-3.3-7.5-3-10.7.6-2.3 2.5-2.3 2.6-2.3 37.5 0 38.3-.1 38.7-5.9 42.8-2.9 2.1-3 2.1-124.9 2.1H224.3l-2.7-2.1c-5.9-4.6-5.6-.1-5.6-93.9 0-96.9-.5-90.1 7.6-94 4-2 6-2 124-1.8 113.7.3 120.1.4 122.7 2.1 1.6 1 3.7 3.2 4.7 5 1.9 3 2 5.3 2 38.3 0 34 .1 35.2 2.1 37.8 2.7 3.4 7.7 3.6 10.7.3 2.2-2.3 2.2-2.7 2.2-38.3 0-20.9-.4-37.4-1-39.5-2.5-9.1-11.3-17.3-20.8-19.5-4.6-1.1-28.7-1.4-124.2-1.3-65.2.1-120.4.5-122.7.9zM285 471.5c0 8.7 4.9 15.3 13 17.5 2.6.7 20 1 50.7.8 52.1-.3 50.4-.1 55.8-7.3 2-2.5 2.8-5 3.2-9.5l.6-6.1 42.9.3c36.8.3 43 .5 43.8 1.8.5.8 1 6.5 1 12.7 0 10.1-.2 11.3-1.9 12.3-2.7 1.4-292.5 1.4-295.2 0-1.7-1-1.9-2.2-1.9-13.1 0-11.5.1-12 2.3-12.9 1.2-.5 21-.9 44-.9l41.7-.1v4.5zm107.5-.5v3.5h-92l-.3-3.8-.3-3.7 46.3.2 46.3.3v3.5z" - })), _path2 || (_path2 = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { - d: "M42.2 264.6c-4 1.6-4.6 4.2-3.8 14.7 5 61 39.1 114.5 92.1 144.5 11.7 6.6 29.3 13.9 41.8 17.2l8.8 2.3 2.7-2c3.1-2.3 4-6.5 2.1-10-.9-1.7-3.2-2.9-8.3-4.3-30.1-8.7-53-21.5-73.4-41.4-29.9-29-47.7-66.8-50.8-107.4-1-12.8-4.1-16.6-11.2-13.6zM230.3 274.4l-2.8 2.4v159.4l2.8 2.4 2.8 2.4h113.2c123.7 0 116.1.4 118.6-5.7.8-2.1 1.1-23.5.9-80.6l-.3-77.9-2.8-2.4-2.8-2.4H233.1l-2.8 2.4zM259 293v6h-17v-12h17v6zm192 0v6H274v-12h177v6zm0 77v56H242V314h209v56z" - }))); -}; -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (SvgHome3); - -/***/ }), - -/***/ 1234: -/***/ (function(__unused_webpack_module, exports) { - -(function (global, factory) { - true ? factory(exports) : - 0; -})(this, (function (exports) { 'use strict'; - - // This file was generated. Do not modify manually! - var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; - - // This file was generated. Do not modify manually! - var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191]; - - // This file was generated. Do not modify manually! - var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; - - // This file was generated. Do not modify manually! - var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; - - // These are a run-length and offset encoded representation of the - // >0xffff code points that are a valid part of identifiers. The - // offset starts at 0x10000, and each pair of numbers represents an - // offset to the next range, and then a size of the range. - - // Reserved word lists for various dialects of the language - - var reservedWords = { - 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", - 5: "class enum extends super const export import", - 6: "enum", - strict: "implements interface let package private protected public static yield", - strictBind: "eval arguments" - }; - - // And the keywords - - var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; - - var keywords$1 = { - 5: ecma5AndLessKeywords, - "5module": ecma5AndLessKeywords + " export import", - 6: ecma5AndLessKeywords + " const class extends export import super" - }; - - var keywordRelationalOperator = /^in(stanceof)?$/; - - // ## Character categories - - var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); - var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); - - // This has a complexity linear to the value of the code. The - // assumption is that looking up astral identifier characters is - // rare. - function isInAstralSet(code, set) { - var pos = 0x10000; - for (var i = 0; i < set.length; i += 2) { - pos += set[i]; - if (pos > code) { return false } - pos += set[i + 1]; - if (pos >= code) { return true } - } - return false - } - - // Test whether a given character code starts an identifier. - - function isIdentifierStart(code, astral) { - if (code < 65) { return code === 36 } - if (code < 91) { return true } - if (code < 97) { return code === 95 } - if (code < 123) { return true } - if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } - if (astral === false) { return false } - return isInAstralSet(code, astralIdentifierStartCodes) - } - - // Test whether a given character is part of an identifier. - - function isIdentifierChar(code, astral) { - if (code < 48) { return code === 36 } - if (code < 58) { return true } - if (code < 65) { return false } - if (code < 91) { return true } - if (code < 97) { return code === 95 } - if (code < 123) { return true } - if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } - if (astral === false) { return false } - return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) - } - - // ## Token types - - // The assignment of fine-grained, information-carrying type objects - // allows the tokenizer to store the information it has about a - // token in a way that is very cheap for the parser to look up. - - // All token type variables start with an underscore, to make them - // easy to recognize. - - // The `beforeExpr` property is used to disambiguate between regular - // expressions and divisions. It is set on all token types that can - // be followed by an expression (thus, a slash after them would be a - // regular expression). - // - // The `startsExpr` property is used to check if the token ends a - // `yield` expression. It is set on all token types that either can - // directly start an expression (like a quotation mark) or can - // continue an expression (like the body of a string). - // - // `isLoop` marks a keyword as starting a loop, which is important - // to know when parsing a label, in order to allow or disallow - // continue jumps to that label. - - var TokenType = function TokenType(label, conf) { - if ( conf === void 0 ) conf = {}; - - this.label = label; - this.keyword = conf.keyword; - this.beforeExpr = !!conf.beforeExpr; - this.startsExpr = !!conf.startsExpr; - this.isLoop = !!conf.isLoop; - this.isAssign = !!conf.isAssign; - this.prefix = !!conf.prefix; - this.postfix = !!conf.postfix; - this.binop = conf.binop || null; - this.updateContext = null; - }; - - function binop(name, prec) { - return new TokenType(name, {beforeExpr: true, binop: prec}) - } - var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; - - // Map keyword names to token types. - - var keywords = {}; - - // Succinct definitions of keyword token types - function kw(name, options) { - if ( options === void 0 ) options = {}; - - options.keyword = name; - return keywords[name] = new TokenType(name, options) - } - - var types$1 = { - num: new TokenType("num", startsExpr), - regexp: new TokenType("regexp", startsExpr), - string: new TokenType("string", startsExpr), - name: new TokenType("name", startsExpr), - privateId: new TokenType("privateId", startsExpr), - eof: new TokenType("eof"), - - // Punctuation token types. - bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), - bracketR: new TokenType("]"), - braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), - braceR: new TokenType("}"), - parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), - parenR: new TokenType(")"), - comma: new TokenType(",", beforeExpr), - semi: new TokenType(";", beforeExpr), - colon: new TokenType(":", beforeExpr), - dot: new TokenType("."), - question: new TokenType("?", beforeExpr), - questionDot: new TokenType("?."), - arrow: new TokenType("=>", beforeExpr), - template: new TokenType("template"), - invalidTemplate: new TokenType("invalidTemplate"), - ellipsis: new TokenType("...", beforeExpr), - backQuote: new TokenType("`", startsExpr), - dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), - - // Operators. These carry several kinds of properties to help the - // parser use them properly (the presence of these properties is - // what categorizes them as operators). - // - // `binop`, when present, specifies that this operator is a binary - // operator, and will refer to its precedence. - // - // `prefix` and `postfix` mark the operator as a prefix or postfix - // unary operator. - // - // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as - // binary operators with a very low precedence, that should result - // in AssignmentExpression nodes. - - eq: new TokenType("=", {beforeExpr: true, isAssign: true}), - assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), - incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), - prefix: new TokenType("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), - logicalOR: binop("||", 1), - logicalAND: binop("&&", 2), - bitwiseOR: binop("|", 3), - bitwiseXOR: binop("^", 4), - bitwiseAND: binop("&", 5), - equality: binop("==/!=/===/!==", 6), - relational: binop("/<=/>=", 7), - bitShift: binop("<>/>>>", 8), - plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), - modulo: binop("%", 10), - star: binop("*", 10), - slash: binop("/", 10), - starstar: new TokenType("**", {beforeExpr: true}), - coalesce: binop("??", 1), - - // Keyword token types. - _break: kw("break"), - _case: kw("case", beforeExpr), - _catch: kw("catch"), - _continue: kw("continue"), - _debugger: kw("debugger"), - _default: kw("default", beforeExpr), - _do: kw("do", {isLoop: true, beforeExpr: true}), - _else: kw("else", beforeExpr), - _finally: kw("finally"), - _for: kw("for", {isLoop: true}), - _function: kw("function", startsExpr), - _if: kw("if"), - _return: kw("return", beforeExpr), - _switch: kw("switch"), - _throw: kw("throw", beforeExpr), - _try: kw("try"), - _var: kw("var"), - _const: kw("const"), - _while: kw("while", {isLoop: true}), - _with: kw("with"), - _new: kw("new", {beforeExpr: true, startsExpr: true}), - _this: kw("this", startsExpr), - _super: kw("super", startsExpr), - _class: kw("class", startsExpr), - _extends: kw("extends", beforeExpr), - _export: kw("export"), - _import: kw("import", startsExpr), - _null: kw("null", startsExpr), - _true: kw("true", startsExpr), - _false: kw("false", startsExpr), - _in: kw("in", {beforeExpr: true, binop: 7}), - _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), - _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), - _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), - _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) - }; - - // Matches a whole line break (where CRLF is considered a single - // line break). Used to count lines. - - var lineBreak = /\r\n?|\n|\u2028|\u2029/; - var lineBreakG = new RegExp(lineBreak.source, "g"); - - function isNewLine(code) { - return code === 10 || code === 13 || code === 0x2028 || code === 0x2029 - } - - function nextLineBreak(code, from, end) { - if ( end === void 0 ) end = code.length; - - for (var i = from; i < end; i++) { - var next = code.charCodeAt(i); - if (isNewLine(next)) - { return i < end - 1 && next === 13 && code.charCodeAt(i + 1) === 10 ? i + 2 : i + 1 } - } - return -1 - } - - var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; - - var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; - - var ref = Object.prototype; - var hasOwnProperty = ref.hasOwnProperty; - var toString = ref.toString; - - var hasOwn = Object.hasOwn || (function (obj, propName) { return ( - hasOwnProperty.call(obj, propName) - ); }); - - var isArray = Array.isArray || (function (obj) { return ( - toString.call(obj) === "[object Array]" - ); }); - - function wordsRegexp(words) { - return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") - } - - function codePointToString(code) { - // UTF-16 Decoding - if (code <= 0xFFFF) { return String.fromCharCode(code) } - code -= 0x10000; - return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00) - } - - var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/; - - // These are used when `options.locations` is on, for the - // `startLoc` and `endLoc` properties. - - var Position = function Position(line, col) { - this.line = line; - this.column = col; - }; - - Position.prototype.offset = function offset (n) { - return new Position(this.line, this.column + n) - }; - - var SourceLocation = function SourceLocation(p, start, end) { - this.start = start; - this.end = end; - if (p.sourceFile !== null) { this.source = p.sourceFile; } - }; - - // The `getLineInfo` function is mostly useful when the - // `locations` option is off (for performance reasons) and you - // want to find the line/column position for a given character - // offset. `input` should be the code string that the offset refers - // into. - - function getLineInfo(input, offset) { - for (var line = 1, cur = 0;;) { - var nextBreak = nextLineBreak(input, cur, offset); - if (nextBreak < 0) { return new Position(line, offset - cur) } - ++line; - cur = nextBreak; - } - } - - // A second argument must be given to configure the parser process. - // These options are recognized (only `ecmaVersion` is required): - - var defaultOptions = { - // `ecmaVersion` indicates the ECMAScript version to parse. Must be - // either 3, 5, 6 (or 2015), 7 (2016), 8 (2017), 9 (2018), 10 - // (2019), 11 (2020), 12 (2021), 13 (2022), 14 (2023), or `"latest"` - // (the latest version the library supports). This influences - // support for strict mode, the set of reserved words, and support - // for new syntax features. - ecmaVersion: null, - // `sourceType` indicates the mode the code should be parsed in. - // Can be either `"script"` or `"module"`. This influences global - // strict mode and parsing of `import` and `export` declarations. - sourceType: "script", - // `onInsertedSemicolon` can be a callback that will be called - // when a semicolon is automatically inserted. It will be passed - // the position of the comma as an offset, and if `locations` is - // enabled, it is given the location as a `{line, column}` object - // as second argument. - onInsertedSemicolon: null, - // `onTrailingComma` is similar to `onInsertedSemicolon`, but for - // trailing commas. - onTrailingComma: null, - // By default, reserved words are only enforced if ecmaVersion >= 5. - // Set `allowReserved` to a boolean value to explicitly turn this on - // an off. When this option has the value "never", reserved words - // and keywords can also not be used as property names. - allowReserved: null, - // When enabled, a return at the top level is not considered an - // error. - allowReturnOutsideFunction: false, - // When enabled, import/export statements are not constrained to - // appearing at the top of the program, and an import.meta expression - // in a script isn't considered an error. - allowImportExportEverywhere: false, - // By default, await identifiers are allowed to appear at the top-level scope only if ecmaVersion >= 2022. - // When enabled, await identifiers are allowed to appear at the top-level scope, - // but they are still not allowed in non-async functions. - allowAwaitOutsideFunction: null, - // When enabled, super identifiers are not constrained to - // appearing in methods and do not raise an error when they appear elsewhere. - allowSuperOutsideMethod: null, - // When enabled, hashbang directive in the beginning of file is - // allowed and treated as a line comment. Enabled by default when - // `ecmaVersion` >= 2023. - allowHashBang: false, - // By default, the parser will verify that private properties are - // only used in places where they are valid and have been declared. - // Set this to false to turn such checks off. - checkPrivateFields: true, - // When `locations` is on, `loc` properties holding objects with - // `start` and `end` properties in `{line, column}` form (with - // line being 1-based and column 0-based) will be attached to the - // nodes. - locations: false, - // A function can be passed as `onToken` option, which will - // cause Acorn to call that function with object in the same - // format as tokens returned from `tokenizer().getToken()`. Note - // that you are not allowed to call the parser from the - // callback—that will corrupt its internal state. - onToken: null, - // A function can be passed as `onComment` option, which will - // cause Acorn to call that function with `(block, text, start, - // end)` parameters whenever a comment is skipped. `block` is a - // boolean indicating whether this is a block (`/* */`) comment, - // `text` is the content of the comment, and `start` and `end` are - // character offsets that denote the start and end of the comment. - // When the `locations` option is on, two more parameters are - // passed, the full `{line, column}` locations of the start and - // end of the comments. Note that you are not allowed to call the - // parser from the callback—that will corrupt its internal state. - onComment: null, - // Nodes have their start and end characters offsets recorded in - // `start` and `end` properties (directly on the node, rather than - // the `loc` object, which holds line/column data. To also add a - // [semi-standardized][range] `range` property holding a `[start, - // end]` array with the same numbers, set the `ranges` option to - // `true`. - // - // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 - ranges: false, - // It is possible to parse multiple files into a single AST by - // passing the tree produced by parsing the first file as - // `program` option in subsequent parses. This will add the - // toplevel forms of the parsed file to the `Program` (top) node - // of an existing parse tree. - program: null, - // When `locations` is on, you can pass this to record the source - // file in every node's `loc` object. - sourceFile: null, - // This value, if given, is stored in every node, whether - // `locations` is on or off. - directSourceFile: null, - // When enabled, parenthesized expressions are represented by - // (non-standard) ParenthesizedExpression nodes - preserveParens: false - }; - - // Interpret and default an options object - - var warnedAboutEcmaVersion = false; - - function getOptions(opts) { - var options = {}; - - for (var opt in defaultOptions) - { options[opt] = opts && hasOwn(opts, opt) ? opts[opt] : defaultOptions[opt]; } - - if (options.ecmaVersion === "latest") { - options.ecmaVersion = 1e8; - } else if (options.ecmaVersion == null) { - if (!warnedAboutEcmaVersion && typeof console === "object" && console.warn) { - warnedAboutEcmaVersion = true; - console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future."); - } - options.ecmaVersion = 11; - } else if (options.ecmaVersion >= 2015) { - options.ecmaVersion -= 2009; - } - - if (options.allowReserved == null) - { options.allowReserved = options.ecmaVersion < 5; } - - if (!opts || opts.allowHashBang == null) - { options.allowHashBang = options.ecmaVersion >= 14; } - - if (isArray(options.onToken)) { - var tokens = options.onToken; - options.onToken = function (token) { return tokens.push(token); }; - } - if (isArray(options.onComment)) - { options.onComment = pushComment(options, options.onComment); } - - return options - } - - function pushComment(options, array) { - return function(block, text, start, end, startLoc, endLoc) { - var comment = { - type: block ? "Block" : "Line", - value: text, - start: start, - end: end - }; - if (options.locations) - { comment.loc = new SourceLocation(this, startLoc, endLoc); } - if (options.ranges) - { comment.range = [start, end]; } - array.push(comment); - } - } - - // Each scope gets a bitset that may contain these flags - var - SCOPE_TOP = 1, - SCOPE_FUNCTION = 2, - SCOPE_ASYNC = 4, - SCOPE_GENERATOR = 8, - SCOPE_ARROW = 16, - SCOPE_SIMPLE_CATCH = 32, - SCOPE_SUPER = 64, - SCOPE_DIRECT_SUPER = 128, - SCOPE_CLASS_STATIC_BLOCK = 256, - SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK; - - function functionFlags(async, generator) { - return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) - } - - // Used in checkLVal* and declareName to determine the type of a binding - var - BIND_NONE = 0, // Not a binding - BIND_VAR = 1, // Var-style binding - BIND_LEXICAL = 2, // Let- or const-style binding - BIND_FUNCTION = 3, // Function declaration - BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding - BIND_OUTSIDE = 5; // Special case for function names as bound inside the function - - var Parser = function Parser(options, input, startPos) { - this.options = options = getOptions(options); - this.sourceFile = options.sourceFile; - this.keywords = wordsRegexp(keywords$1[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]); - var reserved = ""; - if (options.allowReserved !== true) { - reserved = reservedWords[options.ecmaVersion >= 6 ? 6 : options.ecmaVersion === 5 ? 5 : 3]; - if (options.sourceType === "module") { reserved += " await"; } - } - this.reservedWords = wordsRegexp(reserved); - var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; - this.reservedWordsStrict = wordsRegexp(reservedStrict); - this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); - this.input = String(input); - - // Used to signal to callers of `readWord1` whether the word - // contained any escape sequences. This is needed because words with - // escape sequences must not be interpreted as keywords. - this.containsEsc = false; - - // Set up token state - - // The current position of the tokenizer in the input. - if (startPos) { - this.pos = startPos; - this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; - this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; - } else { - this.pos = this.lineStart = 0; - this.curLine = 1; - } - - // Properties of the current token: - // Its type - this.type = types$1.eof; - // For tokens that include more information than their type, the value - this.value = null; - // Its start and end offset - this.start = this.end = this.pos; - // And, if locations are used, the {line, column} object - // corresponding to those offsets - this.startLoc = this.endLoc = this.curPosition(); - - // Position information for the previous token - this.lastTokEndLoc = this.lastTokStartLoc = null; - this.lastTokStart = this.lastTokEnd = this.pos; - - // The context stack is used to superficially track syntactic - // context to predict whether a regular expression is allowed in a - // given position. - this.context = this.initialContext(); - this.exprAllowed = true; - - // Figure out if it's a module code. - this.inModule = options.sourceType === "module"; - this.strict = this.inModule || this.strictDirective(this.pos); - - // Used to signify the start of a potential arrow function - this.potentialArrowAt = -1; - this.potentialArrowInForAwait = false; - - // Positions to delayed-check that yield/await does not exist in default parameters. - this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; - // Labels in scope. - this.labels = []; - // Thus-far undefined exports. - this.undefinedExports = Object.create(null); - - // If enabled, skip leading hashbang line. - if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") - { this.skipLineComment(2); } - - // Scope tracking for duplicate variable names (see scope.js) - this.scopeStack = []; - this.enterScope(SCOPE_TOP); - - // For RegExp validation - this.regexpState = null; - - // The stack of private names. - // Each element has two properties: 'declared' and 'used'. - // When it exited from the outermost class definition, all used private names must be declared. - this.privateNameStack = []; - }; - - var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },canAwait: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true },allowNewDotTarget: { configurable: true },inClassStaticBlock: { configurable: true } }; - - Parser.prototype.parse = function parse () { - var node = this.options.program || this.startNode(); - this.nextToken(); - return this.parseTopLevel(node) - }; - - prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; - - prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 && !this.currentVarScope().inClassFieldInit }; - - prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 && !this.currentVarScope().inClassFieldInit }; - - prototypeAccessors.canAwait.get = function () { - for (var i = this.scopeStack.length - 1; i >= 0; i--) { - var scope = this.scopeStack[i]; - if (scope.inClassFieldInit || scope.flags & SCOPE_CLASS_STATIC_BLOCK) { return false } - if (scope.flags & SCOPE_FUNCTION) { return (scope.flags & SCOPE_ASYNC) > 0 } - } - return (this.inModule && this.options.ecmaVersion >= 13) || this.options.allowAwaitOutsideFunction - }; - - prototypeAccessors.allowSuper.get = function () { - var ref = this.currentThisScope(); - var flags = ref.flags; - var inClassFieldInit = ref.inClassFieldInit; - return (flags & SCOPE_SUPER) > 0 || inClassFieldInit || this.options.allowSuperOutsideMethod - }; - - prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; - - prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; - - prototypeAccessors.allowNewDotTarget.get = function () { - var ref = this.currentThisScope(); - var flags = ref.flags; - var inClassFieldInit = ref.inClassFieldInit; - return (flags & (SCOPE_FUNCTION | SCOPE_CLASS_STATIC_BLOCK)) > 0 || inClassFieldInit - }; - - prototypeAccessors.inClassStaticBlock.get = function () { - return (this.currentVarScope().flags & SCOPE_CLASS_STATIC_BLOCK) > 0 - }; - - Parser.extend = function extend () { - var plugins = [], len = arguments.length; - while ( len-- ) plugins[ len ] = arguments[ len ]; - - var cls = this; - for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } - return cls - }; - - Parser.parse = function parse (input, options) { - return new this(options, input).parse() - }; - - Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { - var parser = new this(options, input, pos); - parser.nextToken(); - return parser.parseExpression() - }; - - Parser.tokenizer = function tokenizer (input, options) { - return new this(options, input) - }; - - Object.defineProperties( Parser.prototype, prototypeAccessors ); - - var pp$9 = Parser.prototype; - - // ## Parser utilities - - var literal = /^(?:'((?:\\.|[^'\\])*?)'|"((?:\\.|[^"\\])*?)")/; - pp$9.strictDirective = function(start) { - if (this.options.ecmaVersion < 5) { return false } - for (;;) { - // Try to find string literal. - skipWhiteSpace.lastIndex = start; - start += skipWhiteSpace.exec(this.input)[0].length; - var match = literal.exec(this.input.slice(start)); - if (!match) { return false } - if ((match[1] || match[2]) === "use strict") { - skipWhiteSpace.lastIndex = start + match[0].length; - var spaceAfter = skipWhiteSpace.exec(this.input), end = spaceAfter.index + spaceAfter[0].length; - var next = this.input.charAt(end); - return next === ";" || next === "}" || - (lineBreak.test(spaceAfter[0]) && - !(/[(`.[+\-/*%<>=,?^&]/.test(next) || next === "!" && this.input.charAt(end + 1) === "=")) - } - start += match[0].length; - - // Skip semicolon, if any. - skipWhiteSpace.lastIndex = start; - start += skipWhiteSpace.exec(this.input)[0].length; - if (this.input[start] === ";") - { start++; } - } - }; - - // Predicate that tests whether the next token is of the given - // type, and if yes, consumes it as a side effect. - - pp$9.eat = function(type) { - if (this.type === type) { - this.next(); - return true - } else { - return false - } - }; - - // Tests whether parsed token is a contextual keyword. - - pp$9.isContextual = function(name) { - return this.type === types$1.name && this.value === name && !this.containsEsc - }; - - // Consumes contextual keyword if possible. - - pp$9.eatContextual = function(name) { - if (!this.isContextual(name)) { return false } - this.next(); - return true - }; - - // Asserts that following token is given contextual keyword. - - pp$9.expectContextual = function(name) { - if (!this.eatContextual(name)) { this.unexpected(); } - }; - - // Test whether a semicolon can be inserted at the current position. - - pp$9.canInsertSemicolon = function() { - return this.type === types$1.eof || - this.type === types$1.braceR || - lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) - }; - - pp$9.insertSemicolon = function() { - if (this.canInsertSemicolon()) { - if (this.options.onInsertedSemicolon) - { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } - return true - } - }; - - // Consume a semicolon, or, failing that, see if we are allowed to - // pretend that there is a semicolon at this position. - - pp$9.semicolon = function() { - if (!this.eat(types$1.semi) && !this.insertSemicolon()) { this.unexpected(); } - }; - - pp$9.afterTrailingComma = function(tokType, notNext) { - if (this.type === tokType) { - if (this.options.onTrailingComma) - { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } - if (!notNext) - { this.next(); } - return true - } - }; - - // Expect a token of a given type. If found, consume it, otherwise, - // raise an unexpected token error. - - pp$9.expect = function(type) { - this.eat(type) || this.unexpected(); - }; - - // Raise an unexpected token error. - - pp$9.unexpected = function(pos) { - this.raise(pos != null ? pos : this.start, "Unexpected token"); - }; - - var DestructuringErrors = function DestructuringErrors() { - this.shorthandAssign = - this.trailingComma = - this.parenthesizedAssign = - this.parenthesizedBind = - this.doubleProto = - -1; - }; - - pp$9.checkPatternErrors = function(refDestructuringErrors, isAssign) { - if (!refDestructuringErrors) { return } - if (refDestructuringErrors.trailingComma > -1) - { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } - var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; - if (parens > -1) { this.raiseRecoverable(parens, isAssign ? "Assigning to rvalue" : "Parenthesized pattern"); } - }; - - pp$9.checkExpressionErrors = function(refDestructuringErrors, andThrow) { - if (!refDestructuringErrors) { return false } - var shorthandAssign = refDestructuringErrors.shorthandAssign; - var doubleProto = refDestructuringErrors.doubleProto; - if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } - if (shorthandAssign >= 0) - { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } - if (doubleProto >= 0) - { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } - }; - - pp$9.checkYieldAwaitInDefaultParams = function() { - if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) - { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } - if (this.awaitPos) - { this.raise(this.awaitPos, "Await expression cannot be a default value"); } - }; - - pp$9.isSimpleAssignTarget = function(expr) { - if (expr.type === "ParenthesizedExpression") - { return this.isSimpleAssignTarget(expr.expression) } - return expr.type === "Identifier" || expr.type === "MemberExpression" - }; - - var pp$8 = Parser.prototype; - - // ### Statement parsing - - // Parse a program. Initializes the parser, reads any number of - // statements, and wraps them in a Program node. Optionally takes a - // `program` argument. If present, the statements will be appended - // to its body instead of creating a new node. - - pp$8.parseTopLevel = function(node) { - var exports = Object.create(null); - if (!node.body) { node.body = []; } - while (this.type !== types$1.eof) { - var stmt = this.parseStatement(null, true, exports); - node.body.push(stmt); - } - if (this.inModule) - { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) - { - var name = list[i]; - - this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); - } } - this.adaptDirectivePrologue(node.body); - this.next(); - node.sourceType = this.options.sourceType; - return this.finishNode(node, "Program") - }; - - var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; - - pp$8.isLet = function(context) { - if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); - // For ambiguous cases, determine if a LexicalDeclaration (or only a - // Statement) is allowed here. If context is not empty then only a Statement - // is allowed. However, `let [` is an explicit negative lookahead for - // ExpressionStatement, so special-case it first. - if (nextCh === 91 || nextCh === 92) { return true } // '[', '/' - if (context) { return false } - - if (nextCh === 123 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } // '{', astral - if (isIdentifierStart(nextCh, true)) { - var pos = next + 1; - while (isIdentifierChar(nextCh = this.input.charCodeAt(pos), true)) { ++pos; } - if (nextCh === 92 || nextCh > 0xd7ff && nextCh < 0xdc00) { return true } - var ident = this.input.slice(next, pos); - if (!keywordRelationalOperator.test(ident)) { return true } - } - return false - }; - - // check 'async [no LineTerminator here] function' - // - 'async /*foo*/ function' is OK. - // - 'async /*\n*/ function' is invalid. - pp$8.isAsyncFunction = function() { - if (this.options.ecmaVersion < 8 || !this.isContextual("async")) - { return false } - - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, after; - return !lineBreak.test(this.input.slice(this.pos, next)) && - this.input.slice(next, next + 8) === "function" && - (next + 8 === this.input.length || - !(isIdentifierChar(after = this.input.charCodeAt(next + 8)) || after > 0xd7ff && after < 0xdc00)) - }; - - // Parse a single statement. - // - // If expecting a statement and finding a slash operator, parse a - // regular expression literal. This is to handle cases like - // `if (foo) /blah/.exec(foo)`, where looking at the previous token - // does not help. - - pp$8.parseStatement = function(context, topLevel, exports) { - var starttype = this.type, node = this.startNode(), kind; - - if (this.isLet(context)) { - starttype = types$1._var; - kind = "let"; - } - - // Most types of statements are recognized by the keyword they - // start with. Many are trivial to parse, some require a bit of - // complexity. - - switch (starttype) { - case types$1._break: case types$1._continue: return this.parseBreakContinueStatement(node, starttype.keyword) - case types$1._debugger: return this.parseDebuggerStatement(node) - case types$1._do: return this.parseDoStatement(node) - case types$1._for: return this.parseForStatement(node) - case types$1._function: - // Function as sole body of either an if statement or a labeled statement - // works, but not when it is part of a labeled statement that is the sole - // body of an if statement. - if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } - return this.parseFunctionStatement(node, false, !context) - case types$1._class: - if (context) { this.unexpected(); } - return this.parseClass(node, true) - case types$1._if: return this.parseIfStatement(node) - case types$1._return: return this.parseReturnStatement(node) - case types$1._switch: return this.parseSwitchStatement(node) - case types$1._throw: return this.parseThrowStatement(node) - case types$1._try: return this.parseTryStatement(node) - case types$1._const: case types$1._var: - kind = kind || this.value; - if (context && kind !== "var") { this.unexpected(); } - return this.parseVarStatement(node, kind) - case types$1._while: return this.parseWhileStatement(node) - case types$1._with: return this.parseWithStatement(node) - case types$1.braceL: return this.parseBlock(true, node) - case types$1.semi: return this.parseEmptyStatement(node) - case types$1._export: - case types$1._import: - if (this.options.ecmaVersion > 10 && starttype === types$1._import) { - skipWhiteSpace.lastIndex = this.pos; - var skip = skipWhiteSpace.exec(this.input); - var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); - if (nextCh === 40 || nextCh === 46) // '(' or '.' - { return this.parseExpressionStatement(node, this.parseExpression()) } - } - - if (!this.options.allowImportExportEverywhere) { - if (!topLevel) - { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } - if (!this.inModule) - { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } - } - return starttype === types$1._import ? this.parseImport(node) : this.parseExport(node, exports) - - // If the statement does not start with a statement keyword or a - // brace, it's an ExpressionStatement or LabeledStatement. We - // simply start parsing an expression, and afterwards, if the - // next token is a colon and the expression was a simple - // Identifier node, we switch to interpreting it as a label. - default: - if (this.isAsyncFunction()) { - if (context) { this.unexpected(); } - this.next(); - return this.parseFunctionStatement(node, true, !context) - } - - var maybeName = this.value, expr = this.parseExpression(); - if (starttype === types$1.name && expr.type === "Identifier" && this.eat(types$1.colon)) - { return this.parseLabeledStatement(node, maybeName, expr, context) } - else { return this.parseExpressionStatement(node, expr) } - } - }; - - pp$8.parseBreakContinueStatement = function(node, keyword) { - var isBreak = keyword === "break"; - this.next(); - if (this.eat(types$1.semi) || this.insertSemicolon()) { node.label = null; } - else if (this.type !== types$1.name) { this.unexpected(); } - else { - node.label = this.parseIdent(); - this.semicolon(); - } - - // Verify that there is an actual destination to break or - // continue to. - var i = 0; - for (; i < this.labels.length; ++i) { - var lab = this.labels[i]; - if (node.label == null || lab.name === node.label.name) { - if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } - if (node.label && isBreak) { break } - } - } - if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } - return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") - }; - - pp$8.parseDebuggerStatement = function(node) { - this.next(); - this.semicolon(); - return this.finishNode(node, "DebuggerStatement") - }; - - pp$8.parseDoStatement = function(node) { - this.next(); - this.labels.push(loopLabel); - node.body = this.parseStatement("do"); - this.labels.pop(); - this.expect(types$1._while); - node.test = this.parseParenExpression(); - if (this.options.ecmaVersion >= 6) - { this.eat(types$1.semi); } - else - { this.semicolon(); } - return this.finishNode(node, "DoWhileStatement") - }; - - // Disambiguating between a `for` and a `for`/`in` or `for`/`of` - // loop is non-trivial. Basically, we have to parse the init `var` - // statement or expression, disallowing the `in` operator (see - // the second parameter to `parseExpression`), and then check - // whether the next token is `in` or `of`. When there is no init - // part (semicolon immediately after the opening parenthesis), it - // is a regular `for` loop. - - pp$8.parseForStatement = function(node) { - this.next(); - var awaitAt = (this.options.ecmaVersion >= 9 && this.canAwait && this.eatContextual("await")) ? this.lastTokStart : -1; - this.labels.push(loopLabel); - this.enterScope(0); - this.expect(types$1.parenL); - if (this.type === types$1.semi) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, null) - } - var isLet = this.isLet(); - if (this.type === types$1._var || this.type === types$1._const || isLet) { - var init$1 = this.startNode(), kind = isLet ? "let" : this.value; - this.next(); - this.parseVar(init$1, true, kind); - this.finishNode(init$1, "VariableDeclaration"); - if ((this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { - if (this.options.ecmaVersion >= 9) { - if (this.type === types$1._in) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - } else { node.await = awaitAt > -1; } - } - return this.parseForIn(node, init$1) - } - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, init$1) - } - var startsWithLet = this.isContextual("let"), isForOf = false; - var refDestructuringErrors = new DestructuringErrors; - var init = this.parseExpression(awaitAt > -1 ? "await" : true, refDestructuringErrors); - if (this.type === types$1._in || (isForOf = this.options.ecmaVersion >= 6 && this.isContextual("of"))) { - if (this.options.ecmaVersion >= 9) { - if (this.type === types$1._in) { - if (awaitAt > -1) { this.unexpected(awaitAt); } - } else { node.await = awaitAt > -1; } - } - if (startsWithLet && isForOf) { this.raise(init.start, "The left-hand side of a for-of loop may not start with 'let'."); } - this.toAssignable(init, false, refDestructuringErrors); - this.checkLValPattern(init); - return this.parseForIn(node, init) - } else { - this.checkExpressionErrors(refDestructuringErrors, true); - } - if (awaitAt > -1) { this.unexpected(awaitAt); } - return this.parseFor(node, init) - }; - - pp$8.parseFunctionStatement = function(node, isAsync, declarationPosition) { - this.next(); - return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) - }; - - pp$8.parseIfStatement = function(node) { - this.next(); - node.test = this.parseParenExpression(); - // allow function declarations in branches, but only in non-strict mode - node.consequent = this.parseStatement("if"); - node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null; - return this.finishNode(node, "IfStatement") - }; - - pp$8.parseReturnStatement = function(node) { - if (!this.inFunction && !this.options.allowReturnOutsideFunction) - { this.raise(this.start, "'return' outside of function"); } - this.next(); - - // In `return` (and `break`/`continue`), the keywords with - // optional arguments, we eagerly look for a semicolon or the - // possibility to insert one. - - if (this.eat(types$1.semi) || this.insertSemicolon()) { node.argument = null; } - else { node.argument = this.parseExpression(); this.semicolon(); } - return this.finishNode(node, "ReturnStatement") - }; - - pp$8.parseSwitchStatement = function(node) { - this.next(); - node.discriminant = this.parseParenExpression(); - node.cases = []; - this.expect(types$1.braceL); - this.labels.push(switchLabel); - this.enterScope(0); - - // Statements under must be grouped (by label) in SwitchCase - // nodes. `cur` is used to keep the node that we are currently - // adding statements to. - - var cur; - for (var sawDefault = false; this.type !== types$1.braceR;) { - if (this.type === types$1._case || this.type === types$1._default) { - var isCase = this.type === types$1._case; - if (cur) { this.finishNode(cur, "SwitchCase"); } - node.cases.push(cur = this.startNode()); - cur.consequent = []; - this.next(); - if (isCase) { - cur.test = this.parseExpression(); - } else { - if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } - sawDefault = true; - cur.test = null; - } - this.expect(types$1.colon); - } else { - if (!cur) { this.unexpected(); } - cur.consequent.push(this.parseStatement(null)); - } - } - this.exitScope(); - if (cur) { this.finishNode(cur, "SwitchCase"); } - this.next(); // Closing brace - this.labels.pop(); - return this.finishNode(node, "SwitchStatement") - }; - - pp$8.parseThrowStatement = function(node) { - this.next(); - if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) - { this.raise(this.lastTokEnd, "Illegal newline after throw"); } - node.argument = this.parseExpression(); - this.semicolon(); - return this.finishNode(node, "ThrowStatement") - }; - - // Reused empty array added for node fields that are always empty. - - var empty$1 = []; - - pp$8.parseCatchClauseParam = function() { - var param = this.parseBindingAtom(); - var simple = param.type === "Identifier"; - this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); - this.checkLValPattern(param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); - this.expect(types$1.parenR); - - return param - }; - - pp$8.parseTryStatement = function(node) { - this.next(); - node.block = this.parseBlock(); - node.handler = null; - if (this.type === types$1._catch) { - var clause = this.startNode(); - this.next(); - if (this.eat(types$1.parenL)) { - clause.param = this.parseCatchClauseParam(); - } else { - if (this.options.ecmaVersion < 10) { this.unexpected(); } - clause.param = null; - this.enterScope(0); - } - clause.body = this.parseBlock(false); - this.exitScope(); - node.handler = this.finishNode(clause, "CatchClause"); - } - node.finalizer = this.eat(types$1._finally) ? this.parseBlock() : null; - if (!node.handler && !node.finalizer) - { this.raise(node.start, "Missing catch or finally clause"); } - return this.finishNode(node, "TryStatement") - }; - - pp$8.parseVarStatement = function(node, kind, allowMissingInitializer) { - this.next(); - this.parseVar(node, false, kind, allowMissingInitializer); - this.semicolon(); - return this.finishNode(node, "VariableDeclaration") - }; - - pp$8.parseWhileStatement = function(node) { - this.next(); - node.test = this.parseParenExpression(); - this.labels.push(loopLabel); - node.body = this.parseStatement("while"); - this.labels.pop(); - return this.finishNode(node, "WhileStatement") - }; - - pp$8.parseWithStatement = function(node) { - if (this.strict) { this.raise(this.start, "'with' in strict mode"); } - this.next(); - node.object = this.parseParenExpression(); - node.body = this.parseStatement("with"); - return this.finishNode(node, "WithStatement") - }; - - pp$8.parseEmptyStatement = function(node) { - this.next(); - return this.finishNode(node, "EmptyStatement") - }; - - pp$8.parseLabeledStatement = function(node, maybeName, expr, context) { - for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) - { - var label = list[i$1]; - - if (label.name === maybeName) - { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); - } } - var kind = this.type.isLoop ? "loop" : this.type === types$1._switch ? "switch" : null; - for (var i = this.labels.length - 1; i >= 0; i--) { - var label$1 = this.labels[i]; - if (label$1.statementStart === node.start) { - // Update information about previous labels on this node - label$1.statementStart = this.start; - label$1.kind = kind; - } else { break } - } - this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); - node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); - this.labels.pop(); - node.label = expr; - return this.finishNode(node, "LabeledStatement") - }; - - pp$8.parseExpressionStatement = function(node, expr) { - node.expression = expr; - this.semicolon(); - return this.finishNode(node, "ExpressionStatement") - }; - - // Parse a semicolon-enclosed block of statements, handling `"use - // strict"` declarations when `allowStrict` is true (used for - // function bodies). - - pp$8.parseBlock = function(createNewLexicalScope, node, exitStrict) { - if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; - if ( node === void 0 ) node = this.startNode(); - - node.body = []; - this.expect(types$1.braceL); - if (createNewLexicalScope) { this.enterScope(0); } - while (this.type !== types$1.braceR) { - var stmt = this.parseStatement(null); - node.body.push(stmt); - } - if (exitStrict) { this.strict = false; } - this.next(); - if (createNewLexicalScope) { this.exitScope(); } - return this.finishNode(node, "BlockStatement") - }; - - // Parse a regular `for` loop. The disambiguation code in - // `parseStatement` will already have parsed the init statement or - // expression. - - pp$8.parseFor = function(node, init) { - node.init = init; - this.expect(types$1.semi); - node.test = this.type === types$1.semi ? null : this.parseExpression(); - this.expect(types$1.semi); - node.update = this.type === types$1.parenR ? null : this.parseExpression(); - this.expect(types$1.parenR); - node.body = this.parseStatement("for"); - this.exitScope(); - this.labels.pop(); - return this.finishNode(node, "ForStatement") - }; - - // Parse a `for`/`in` and `for`/`of` loop, which are almost - // same from parser's perspective. - - pp$8.parseForIn = function(node, init) { - var isForIn = this.type === types$1._in; - this.next(); - - if ( - init.type === "VariableDeclaration" && - init.declarations[0].init != null && - ( - !isForIn || - this.options.ecmaVersion < 8 || - this.strict || - init.kind !== "var" || - init.declarations[0].id.type !== "Identifier" - ) - ) { - this.raise( - init.start, - ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") - ); - } - node.left = init; - node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); - this.expect(types$1.parenR); - node.body = this.parseStatement("for"); - this.exitScope(); - this.labels.pop(); - return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") - }; - - // Parse a list of variable declarations. - - pp$8.parseVar = function(node, isFor, kind, allowMissingInitializer) { - node.declarations = []; - node.kind = kind; - for (;;) { - var decl = this.startNode(); - this.parseVarId(decl, kind); - if (this.eat(types$1.eq)) { - decl.init = this.parseMaybeAssign(isFor); - } else if (!allowMissingInitializer && kind === "const" && !(this.type === types$1._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { - this.unexpected(); - } else if (!allowMissingInitializer && decl.id.type !== "Identifier" && !(isFor && (this.type === types$1._in || this.isContextual("of")))) { - this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); - } else { - decl.init = null; - } - node.declarations.push(this.finishNode(decl, "VariableDeclarator")); - if (!this.eat(types$1.comma)) { break } - } - return node - }; - - pp$8.parseVarId = function(decl, kind) { - decl.id = this.parseBindingAtom(); - this.checkLValPattern(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); - }; - - var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; - - // Parse a function declaration or literal (depending on the - // `statement & FUNC_STATEMENT`). - - // Remove `allowExpressionBody` for 7.0.0, as it is only called with false - pp$8.parseFunction = function(node, statement, allowExpressionBody, isAsync, forInit) { - this.initFunction(node); - if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { - if (this.type === types$1.star && (statement & FUNC_HANGING_STATEMENT)) - { this.unexpected(); } - node.generator = this.eat(types$1.star); - } - if (this.options.ecmaVersion >= 8) - { node.async = !!isAsync; } - - if (statement & FUNC_STATEMENT) { - node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types$1.name ? null : this.parseIdent(); - if (node.id && !(statement & FUNC_HANGING_STATEMENT)) - // If it is a regular function declaration in sloppy mode, then it is - // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding - // mode depends on properties of the current scope (see - // treatFunctionsAsVar). - { this.checkLValSimple(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } - } - - var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - this.enterScope(functionFlags(node.async, node.generator)); - - if (!(statement & FUNC_STATEMENT)) - { node.id = this.type === types$1.name ? this.parseIdent() : null; } - - this.parseFunctionParams(node); - this.parseFunctionBody(node, allowExpressionBody, false, forInit); - - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") - }; - - pp$8.parseFunctionParams = function(node) { - this.expect(types$1.parenL); - node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); - this.checkYieldAwaitInDefaultParams(); - }; - - // Parse a class declaration or literal (depending on the - // `isStatement` parameter). - - pp$8.parseClass = function(node, isStatement) { - this.next(); - - // ecma-262 14.6 Class Definitions - // A class definition is always strict mode code. - var oldStrict = this.strict; - this.strict = true; - - this.parseClassId(node, isStatement); - this.parseClassSuper(node); - var privateNameMap = this.enterClassBody(); - var classBody = this.startNode(); - var hadConstructor = false; - classBody.body = []; - this.expect(types$1.braceL); - while (this.type !== types$1.braceR) { - var element = this.parseClassElement(node.superClass !== null); - if (element) { - classBody.body.push(element); - if (element.type === "MethodDefinition" && element.kind === "constructor") { - if (hadConstructor) { this.raiseRecoverable(element.start, "Duplicate constructor in the same class"); } - hadConstructor = true; - } else if (element.key && element.key.type === "PrivateIdentifier" && isPrivateNameConflicted(privateNameMap, element)) { - this.raiseRecoverable(element.key.start, ("Identifier '#" + (element.key.name) + "' has already been declared")); - } - } - } - this.strict = oldStrict; - this.next(); - node.body = this.finishNode(classBody, "ClassBody"); - this.exitClassBody(); - return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") - }; - - pp$8.parseClassElement = function(constructorAllowsSuper) { - if (this.eat(types$1.semi)) { return null } - - var ecmaVersion = this.options.ecmaVersion; - var node = this.startNode(); - var keyName = ""; - var isGenerator = false; - var isAsync = false; - var kind = "method"; - var isStatic = false; - - if (this.eatContextual("static")) { - // Parse static init block - if (ecmaVersion >= 13 && this.eat(types$1.braceL)) { - this.parseClassStaticBlock(node); - return node - } - if (this.isClassElementNameStart() || this.type === types$1.star) { - isStatic = true; - } else { - keyName = "static"; - } - } - node.static = isStatic; - if (!keyName && ecmaVersion >= 8 && this.eatContextual("async")) { - if ((this.isClassElementNameStart() || this.type === types$1.star) && !this.canInsertSemicolon()) { - isAsync = true; - } else { - keyName = "async"; - } - } - if (!keyName && (ecmaVersion >= 9 || !isAsync) && this.eat(types$1.star)) { - isGenerator = true; - } - if (!keyName && !isAsync && !isGenerator) { - var lastValue = this.value; - if (this.eatContextual("get") || this.eatContextual("set")) { - if (this.isClassElementNameStart()) { - kind = lastValue; - } else { - keyName = lastValue; - } - } - } - - // Parse element name - if (keyName) { - // 'async', 'get', 'set', or 'static' were not a keyword contextually. - // The last token is any of those. Make it the element name. - node.computed = false; - node.key = this.startNodeAt(this.lastTokStart, this.lastTokStartLoc); - node.key.name = keyName; - this.finishNode(node.key, "Identifier"); - } else { - this.parseClassElementName(node); - } - - // Parse element value - if (ecmaVersion < 13 || this.type === types$1.parenL || kind !== "method" || isGenerator || isAsync) { - var isConstructor = !node.static && checkKeyName(node, "constructor"); - var allowsDirectSuper = isConstructor && constructorAllowsSuper; - // Couldn't move this check into the 'parseClassMethod' method for backward compatibility. - if (isConstructor && kind !== "method") { this.raise(node.key.start, "Constructor can't have get/set modifier"); } - node.kind = isConstructor ? "constructor" : kind; - this.parseClassMethod(node, isGenerator, isAsync, allowsDirectSuper); - } else { - this.parseClassField(node); - } - - return node - }; - - pp$8.isClassElementNameStart = function() { - return ( - this.type === types$1.name || - this.type === types$1.privateId || - this.type === types$1.num || - this.type === types$1.string || - this.type === types$1.bracketL || - this.type.keyword - ) - }; - - pp$8.parseClassElementName = function(element) { - if (this.type === types$1.privateId) { - if (this.value === "constructor") { - this.raise(this.start, "Classes can't have an element named '#constructor'"); - } - element.computed = false; - element.key = this.parsePrivateIdent(); - } else { - this.parsePropertyName(element); - } - }; - - pp$8.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { - // Check key and flags - var key = method.key; - if (method.kind === "constructor") { - if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } - if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } - } else if (method.static && checkKeyName(method, "prototype")) { - this.raise(key.start, "Classes may not have a static property named prototype"); - } - - // Parse value - var value = method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); - - // Check value - if (method.kind === "get" && value.params.length !== 0) - { this.raiseRecoverable(value.start, "getter should have no params"); } - if (method.kind === "set" && value.params.length !== 1) - { this.raiseRecoverable(value.start, "setter should have exactly one param"); } - if (method.kind === "set" && value.params[0].type === "RestElement") - { this.raiseRecoverable(value.params[0].start, "Setter cannot use rest params"); } - - return this.finishNode(method, "MethodDefinition") - }; - - pp$8.parseClassField = function(field) { - if (checkKeyName(field, "constructor")) { - this.raise(field.key.start, "Classes can't have a field named 'constructor'"); - } else if (field.static && checkKeyName(field, "prototype")) { - this.raise(field.key.start, "Classes can't have a static field named 'prototype'"); - } - - if (this.eat(types$1.eq)) { - // To raise SyntaxError if 'arguments' exists in the initializer. - var scope = this.currentThisScope(); - var inClassFieldInit = scope.inClassFieldInit; - scope.inClassFieldInit = true; - field.value = this.parseMaybeAssign(); - scope.inClassFieldInit = inClassFieldInit; - } else { - field.value = null; - } - this.semicolon(); - - return this.finishNode(field, "PropertyDefinition") - }; - - pp$8.parseClassStaticBlock = function(node) { - node.body = []; - - var oldLabels = this.labels; - this.labels = []; - this.enterScope(SCOPE_CLASS_STATIC_BLOCK | SCOPE_SUPER); - while (this.type !== types$1.braceR) { - var stmt = this.parseStatement(null); - node.body.push(stmt); - } - this.next(); - this.exitScope(); - this.labels = oldLabels; - - return this.finishNode(node, "StaticBlock") - }; - - pp$8.parseClassId = function(node, isStatement) { - if (this.type === types$1.name) { - node.id = this.parseIdent(); - if (isStatement) - { this.checkLValSimple(node.id, BIND_LEXICAL, false); } - } else { - if (isStatement === true) - { this.unexpected(); } - node.id = null; - } - }; - - pp$8.parseClassSuper = function(node) { - node.superClass = this.eat(types$1._extends) ? this.parseExprSubscripts(null, false) : null; - }; - - pp$8.enterClassBody = function() { - var element = {declared: Object.create(null), used: []}; - this.privateNameStack.push(element); - return element.declared - }; - - pp$8.exitClassBody = function() { - var ref = this.privateNameStack.pop(); - var declared = ref.declared; - var used = ref.used; - if (!this.options.checkPrivateFields) { return } - var len = this.privateNameStack.length; - var parent = len === 0 ? null : this.privateNameStack[len - 1]; - for (var i = 0; i < used.length; ++i) { - var id = used[i]; - if (!hasOwn(declared, id.name)) { - if (parent) { - parent.used.push(id); - } else { - this.raiseRecoverable(id.start, ("Private field '#" + (id.name) + "' must be declared in an enclosing class")); - } - } - } - }; - - function isPrivateNameConflicted(privateNameMap, element) { - var name = element.key.name; - var curr = privateNameMap[name]; - - var next = "true"; - if (element.type === "MethodDefinition" && (element.kind === "get" || element.kind === "set")) { - next = (element.static ? "s" : "i") + element.kind; - } - - // `class { get #a(){}; static set #a(_){} }` is also conflict. - if ( - curr === "iget" && next === "iset" || - curr === "iset" && next === "iget" || - curr === "sget" && next === "sset" || - curr === "sset" && next === "sget" - ) { - privateNameMap[name] = "true"; - return false - } else if (!curr) { - privateNameMap[name] = next; - return false - } else { - return true - } - } - - function checkKeyName(node, name) { - var computed = node.computed; - var key = node.key; - return !computed && ( - key.type === "Identifier" && key.name === name || - key.type === "Literal" && key.value === name - ) - } - - // Parses module export declaration. - - pp$8.parseExportAllDeclaration = function(node, exports) { - if (this.options.ecmaVersion >= 11) { - if (this.eatContextual("as")) { - node.exported = this.parseModuleExportName(); - this.checkExport(exports, node.exported, this.lastTokStart); - } else { - node.exported = null; - } - } - this.expectContextual("from"); - if (this.type !== types$1.string) { this.unexpected(); } - node.source = this.parseExprAtom(); - this.semicolon(); - return this.finishNode(node, "ExportAllDeclaration") - }; - - pp$8.parseExport = function(node, exports) { - this.next(); - // export * from '...' - if (this.eat(types$1.star)) { - return this.parseExportAllDeclaration(node, exports) - } - if (this.eat(types$1._default)) { // export default ... - this.checkExport(exports, "default", this.lastTokStart); - node.declaration = this.parseExportDefaultDeclaration(); - return this.finishNode(node, "ExportDefaultDeclaration") - } - // export var|const|let|function|class ... - if (this.shouldParseExportStatement()) { - node.declaration = this.parseExportDeclaration(node); - if (node.declaration.type === "VariableDeclaration") - { this.checkVariableExport(exports, node.declaration.declarations); } - else - { this.checkExport(exports, node.declaration.id, node.declaration.id.start); } - node.specifiers = []; - node.source = null; - } else { // export { x, y as z } [from '...'] - node.declaration = null; - node.specifiers = this.parseExportSpecifiers(exports); - if (this.eatContextual("from")) { - if (this.type !== types$1.string) { this.unexpected(); } - node.source = this.parseExprAtom(); - } else { - for (var i = 0, list = node.specifiers; i < list.length; i += 1) { - // check for keywords used as local names - var spec = list[i]; - - this.checkUnreserved(spec.local); - // check if export is defined - this.checkLocalExport(spec.local); - - if (spec.local.type === "Literal") { - this.raise(spec.local.start, "A string literal cannot be used as an exported binding without `from`."); - } - } - - node.source = null; - } - this.semicolon(); - } - return this.finishNode(node, "ExportNamedDeclaration") - }; - - pp$8.parseExportDeclaration = function(node) { - return this.parseStatement(null) - }; - - pp$8.parseExportDefaultDeclaration = function() { - var isAsync; - if (this.type === types$1._function || (isAsync = this.isAsyncFunction())) { - var fNode = this.startNode(); - this.next(); - if (isAsync) { this.next(); } - return this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync) - } else if (this.type === types$1._class) { - var cNode = this.startNode(); - return this.parseClass(cNode, "nullableID") - } else { - var declaration = this.parseMaybeAssign(); - this.semicolon(); - return declaration - } - }; - - pp$8.checkExport = function(exports, name, pos) { - if (!exports) { return } - if (typeof name !== "string") - { name = name.type === "Identifier" ? name.name : name.value; } - if (hasOwn(exports, name)) - { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } - exports[name] = true; - }; - - pp$8.checkPatternExport = function(exports, pat) { - var type = pat.type; - if (type === "Identifier") - { this.checkExport(exports, pat, pat.start); } - else if (type === "ObjectPattern") - { for (var i = 0, list = pat.properties; i < list.length; i += 1) - { - var prop = list[i]; - - this.checkPatternExport(exports, prop); - } } - else if (type === "ArrayPattern") - { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { - var elt = list$1[i$1]; - - if (elt) { this.checkPatternExport(exports, elt); } - } } - else if (type === "Property") - { this.checkPatternExport(exports, pat.value); } - else if (type === "AssignmentPattern") - { this.checkPatternExport(exports, pat.left); } - else if (type === "RestElement") - { this.checkPatternExport(exports, pat.argument); } - else if (type === "ParenthesizedExpression") - { this.checkPatternExport(exports, pat.expression); } - }; - - pp$8.checkVariableExport = function(exports, decls) { - if (!exports) { return } - for (var i = 0, list = decls; i < list.length; i += 1) - { - var decl = list[i]; - - this.checkPatternExport(exports, decl.id); - } - }; - - pp$8.shouldParseExportStatement = function() { - return this.type.keyword === "var" || - this.type.keyword === "const" || - this.type.keyword === "class" || - this.type.keyword === "function" || - this.isLet() || - this.isAsyncFunction() - }; - - // Parses a comma-separated list of module exports. - - pp$8.parseExportSpecifier = function(exports) { - var node = this.startNode(); - node.local = this.parseModuleExportName(); - - node.exported = this.eatContextual("as") ? this.parseModuleExportName() : node.local; - this.checkExport( - exports, - node.exported, - node.exported.start - ); - - return this.finishNode(node, "ExportSpecifier") - }; - - pp$8.parseExportSpecifiers = function(exports) { - var nodes = [], first = true; - // export { x, y as z } [from '...'] - this.expect(types$1.braceL); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - - nodes.push(this.parseExportSpecifier(exports)); - } - return nodes - }; - - // Parses import declaration. - - pp$8.parseImport = function(node) { - this.next(); - - // import '...' - if (this.type === types$1.string) { - node.specifiers = empty$1; - node.source = this.parseExprAtom(); - } else { - node.specifiers = this.parseImportSpecifiers(); - this.expectContextual("from"); - node.source = this.type === types$1.string ? this.parseExprAtom() : this.unexpected(); - } - this.semicolon(); - return this.finishNode(node, "ImportDeclaration") - }; - - // Parses a comma-separated list of module imports. - - pp$8.parseImportSpecifier = function() { - var node = this.startNode(); - node.imported = this.parseModuleExportName(); - - if (this.eatContextual("as")) { - node.local = this.parseIdent(); - } else { - this.checkUnreserved(node.imported); - node.local = node.imported; - } - this.checkLValSimple(node.local, BIND_LEXICAL); - - return this.finishNode(node, "ImportSpecifier") - }; - - pp$8.parseImportDefaultSpecifier = function() { - // import defaultObj, { x, y as z } from '...' - var node = this.startNode(); - node.local = this.parseIdent(); - this.checkLValSimple(node.local, BIND_LEXICAL); - return this.finishNode(node, "ImportDefaultSpecifier") - }; - - pp$8.parseImportNamespaceSpecifier = function() { - var node = this.startNode(); - this.next(); - this.expectContextual("as"); - node.local = this.parseIdent(); - this.checkLValSimple(node.local, BIND_LEXICAL); - return this.finishNode(node, "ImportNamespaceSpecifier") - }; - - pp$8.parseImportSpecifiers = function() { - var nodes = [], first = true; - if (this.type === types$1.name) { - nodes.push(this.parseImportDefaultSpecifier()); - if (!this.eat(types$1.comma)) { return nodes } - } - if (this.type === types$1.star) { - nodes.push(this.parseImportNamespaceSpecifier()); - return nodes - } - this.expect(types$1.braceL); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - - nodes.push(this.parseImportSpecifier()); - } - return nodes - }; - - pp$8.parseModuleExportName = function() { - if (this.options.ecmaVersion >= 13 && this.type === types$1.string) { - var stringLiteral = this.parseLiteral(this.value); - if (loneSurrogate.test(stringLiteral.value)) { - this.raise(stringLiteral.start, "An export name cannot include a lone surrogate."); - } - return stringLiteral - } - return this.parseIdent(true) - }; - - // Set `ExpressionStatement#directive` property for directive prologues. - pp$8.adaptDirectivePrologue = function(statements) { - for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { - statements[i].directive = statements[i].expression.raw.slice(1, -1); - } - }; - pp$8.isDirectiveCandidate = function(statement) { - return ( - this.options.ecmaVersion >= 5 && - statement.type === "ExpressionStatement" && - statement.expression.type === "Literal" && - typeof statement.expression.value === "string" && - // Reject parenthesized strings. - (this.input[statement.start] === "\"" || this.input[statement.start] === "'") - ) - }; - - var pp$7 = Parser.prototype; - - // Convert existing expression atom to assignable pattern - // if possible. - - pp$7.toAssignable = function(node, isBinding, refDestructuringErrors) { - if (this.options.ecmaVersion >= 6 && node) { - switch (node.type) { - case "Identifier": - if (this.inAsync && node.name === "await") - { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } - break - - case "ObjectPattern": - case "ArrayPattern": - case "AssignmentPattern": - case "RestElement": - break - - case "ObjectExpression": - node.type = "ObjectPattern"; - if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - for (var i = 0, list = node.properties; i < list.length; i += 1) { - var prop = list[i]; - - this.toAssignable(prop, isBinding); - // Early error: - // AssignmentRestProperty[Yield, Await] : - // `...` DestructuringAssignmentTarget[Yield, Await] - // - // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. - if ( - prop.type === "RestElement" && - (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") - ) { - this.raise(prop.argument.start, "Unexpected token"); - } - } - break - - case "Property": - // AssignmentProperty has type === "Property" - if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } - this.toAssignable(node.value, isBinding); - break - - case "ArrayExpression": - node.type = "ArrayPattern"; - if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - this.toAssignableList(node.elements, isBinding); - break - - case "SpreadElement": - node.type = "RestElement"; - this.toAssignable(node.argument, isBinding); - if (node.argument.type === "AssignmentPattern") - { this.raise(node.argument.start, "Rest elements cannot have a default value"); } - break - - case "AssignmentExpression": - if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } - node.type = "AssignmentPattern"; - delete node.operator; - this.toAssignable(node.left, isBinding); - break - - case "ParenthesizedExpression": - this.toAssignable(node.expression, isBinding, refDestructuringErrors); - break - - case "ChainExpression": - this.raiseRecoverable(node.start, "Optional chaining cannot appear in left-hand side"); - break - - case "MemberExpression": - if (!isBinding) { break } - - default: - this.raise(node.start, "Assigning to rvalue"); - } - } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } - return node - }; - - // Convert list of expression atoms to binding list. - - pp$7.toAssignableList = function(exprList, isBinding) { - var end = exprList.length; - for (var i = 0; i < end; i++) { - var elt = exprList[i]; - if (elt) { this.toAssignable(elt, isBinding); } - } - if (end) { - var last = exprList[end - 1]; - if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") - { this.unexpected(last.argument.start); } - } - return exprList - }; - - // Parses spread element. - - pp$7.parseSpread = function(refDestructuringErrors) { - var node = this.startNode(); - this.next(); - node.argument = this.parseMaybeAssign(false, refDestructuringErrors); - return this.finishNode(node, "SpreadElement") - }; - - pp$7.parseRestBinding = function() { - var node = this.startNode(); - this.next(); - - // RestElement inside of a function parameter must be an identifier - if (this.options.ecmaVersion === 6 && this.type !== types$1.name) - { this.unexpected(); } - - node.argument = this.parseBindingAtom(); - - return this.finishNode(node, "RestElement") - }; - - // Parses lvalue (assignable) atom. - - pp$7.parseBindingAtom = function() { - if (this.options.ecmaVersion >= 6) { - switch (this.type) { - case types$1.bracketL: - var node = this.startNode(); - this.next(); - node.elements = this.parseBindingList(types$1.bracketR, true, true); - return this.finishNode(node, "ArrayPattern") - - case types$1.braceL: - return this.parseObj(true) - } - } - return this.parseIdent() - }; - - pp$7.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowModifiers) { - var elts = [], first = true; - while (!this.eat(close)) { - if (first) { first = false; } - else { this.expect(types$1.comma); } - if (allowEmpty && this.type === types$1.comma) { - elts.push(null); - } else if (allowTrailingComma && this.afterTrailingComma(close)) { - break - } else if (this.type === types$1.ellipsis) { - var rest = this.parseRestBinding(); - this.parseBindingListItem(rest); - elts.push(rest); - if (this.type === types$1.comma) { this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); } - this.expect(close); - break - } else { - elts.push(this.parseAssignableListItem(allowModifiers)); - } - } - return elts - }; - - pp$7.parseAssignableListItem = function(allowModifiers) { - var elem = this.parseMaybeDefault(this.start, this.startLoc); - this.parseBindingListItem(elem); - return elem - }; - - pp$7.parseBindingListItem = function(param) { - return param - }; - - // Parses assignment pattern around given atom if possible. - - pp$7.parseMaybeDefault = function(startPos, startLoc, left) { - left = left || this.parseBindingAtom(); - if (this.options.ecmaVersion < 6 || !this.eat(types$1.eq)) { return left } - var node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.right = this.parseMaybeAssign(); - return this.finishNode(node, "AssignmentPattern") - }; - - // The following three functions all verify that a node is an lvalue — - // something that can be bound, or assigned to. In order to do so, they perform - // a variety of checks: - // - // - Check that none of the bound/assigned-to identifiers are reserved words. - // - Record name declarations for bindings in the appropriate scope. - // - Check duplicate argument names, if checkClashes is set. - // - // If a complex binding pattern is encountered (e.g., object and array - // destructuring), the entire pattern is recursively checked. - // - // There are three versions of checkLVal*() appropriate for different - // circumstances: - // - // - checkLValSimple() shall be used if the syntactic construct supports - // nothing other than identifiers and member expressions. Parenthesized - // expressions are also correctly handled. This is generally appropriate for - // constructs for which the spec says - // - // > It is a Syntax Error if AssignmentTargetType of [the production] is not - // > simple. - // - // It is also appropriate for checking if an identifier is valid and not - // defined elsewhere, like import declarations or function/class identifiers. - // - // Examples where this is used include: - // a += …; - // import a from '…'; - // where a is the node to be checked. - // - // - checkLValPattern() shall be used if the syntactic construct supports - // anything checkLValSimple() supports, as well as object and array - // destructuring patterns. This is generally appropriate for constructs for - // which the spec says - // - // > It is a Syntax Error if [the production] is neither an ObjectLiteral nor - // > an ArrayLiteral and AssignmentTargetType of [the production] is not - // > simple. - // - // Examples where this is used include: - // (a = …); - // const a = …; - // try { … } catch (a) { … } - // where a is the node to be checked. - // - // - checkLValInnerPattern() shall be used if the syntactic construct supports - // anything checkLValPattern() supports, as well as default assignment - // patterns, rest elements, and other constructs that may appear within an - // object or array destructuring pattern. - // - // As a special case, function parameters also use checkLValInnerPattern(), - // as they also support defaults and rest constructs. - // - // These functions deliberately support both assignment and binding constructs, - // as the logic for both is exceedingly similar. If the node is the target of - // an assignment, then bindingType should be set to BIND_NONE. Otherwise, it - // should be set to the appropriate BIND_* constant, like BIND_VAR or - // BIND_LEXICAL. - // - // If the function is called with a non-BIND_NONE bindingType, then - // additionally a checkClashes object may be specified to allow checking for - // duplicate argument names. checkClashes is ignored if the provided construct - // is an assignment (i.e., bindingType is BIND_NONE). - - pp$7.checkLValSimple = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; - - var isBind = bindingType !== BIND_NONE; - - switch (expr.type) { - case "Identifier": - if (this.strict && this.reservedWordsStrictBind.test(expr.name)) - { this.raiseRecoverable(expr.start, (isBind ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } - if (isBind) { - if (bindingType === BIND_LEXICAL && expr.name === "let") - { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } - if (checkClashes) { - if (hasOwn(checkClashes, expr.name)) - { this.raiseRecoverable(expr.start, "Argument name clash"); } - checkClashes[expr.name] = true; - } - if (bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } - } - break - - case "ChainExpression": - this.raiseRecoverable(expr.start, "Optional chaining cannot appear in left-hand side"); - break - - case "MemberExpression": - if (isBind) { this.raiseRecoverable(expr.start, "Binding member expression"); } - break - - case "ParenthesizedExpression": - if (isBind) { this.raiseRecoverable(expr.start, "Binding parenthesized expression"); } - return this.checkLValSimple(expr.expression, bindingType, checkClashes) - - default: - this.raise(expr.start, (isBind ? "Binding" : "Assigning to") + " rvalue"); - } - }; - - pp$7.checkLValPattern = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; - - switch (expr.type) { - case "ObjectPattern": - for (var i = 0, list = expr.properties; i < list.length; i += 1) { - var prop = list[i]; - - this.checkLValInnerPattern(prop, bindingType, checkClashes); - } - break - - case "ArrayPattern": - for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { - var elem = list$1[i$1]; - - if (elem) { this.checkLValInnerPattern(elem, bindingType, checkClashes); } - } - break - - default: - this.checkLValSimple(expr, bindingType, checkClashes); - } - }; - - pp$7.checkLValInnerPattern = function(expr, bindingType, checkClashes) { - if ( bindingType === void 0 ) bindingType = BIND_NONE; - - switch (expr.type) { - case "Property": - // AssignmentProperty has type === "Property" - this.checkLValInnerPattern(expr.value, bindingType, checkClashes); - break - - case "AssignmentPattern": - this.checkLValPattern(expr.left, bindingType, checkClashes); - break - - case "RestElement": - this.checkLValPattern(expr.argument, bindingType, checkClashes); - break - - default: - this.checkLValPattern(expr, bindingType, checkClashes); - } - }; - - // The algorithm used to determine whether a regexp can appear at a - // given point in the program is loosely based on sweet.js' approach. - // See https://github.com/mozilla/sweet.js/wiki/design - - - var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { - this.token = token; - this.isExpr = !!isExpr; - this.preserveSpace = !!preserveSpace; - this.override = override; - this.generator = !!generator; - }; - - var types = { - b_stat: new TokContext("{", false), - b_expr: new TokContext("{", true), - b_tmpl: new TokContext("${", false), - p_stat: new TokContext("(", false), - p_expr: new TokContext("(", true), - q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), - f_stat: new TokContext("function", false), - f_expr: new TokContext("function", true), - f_expr_gen: new TokContext("function", true, false, null, true), - f_gen: new TokContext("function", false, false, null, true) - }; - - var pp$6 = Parser.prototype; - - pp$6.initialContext = function() { - return [types.b_stat] - }; - - pp$6.curContext = function() { - return this.context[this.context.length - 1] - }; - - pp$6.braceIsBlock = function(prevType) { - var parent = this.curContext(); - if (parent === types.f_expr || parent === types.f_stat) - { return true } - if (prevType === types$1.colon && (parent === types.b_stat || parent === types.b_expr)) - { return !parent.isExpr } - - // The check for `tt.name && exprAllowed` detects whether we are - // after a `yield` or `of` construct. See the `updateContext` for - // `tt.name`. - if (prevType === types$1._return || prevType === types$1.name && this.exprAllowed) - { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } - if (prevType === types$1._else || prevType === types$1.semi || prevType === types$1.eof || prevType === types$1.parenR || prevType === types$1.arrow) - { return true } - if (prevType === types$1.braceL) - { return parent === types.b_stat } - if (prevType === types$1._var || prevType === types$1._const || prevType === types$1.name) - { return false } - return !this.exprAllowed - }; - - pp$6.inGeneratorContext = function() { - for (var i = this.context.length - 1; i >= 1; i--) { - var context = this.context[i]; - if (context.token === "function") - { return context.generator } - } - return false - }; - - pp$6.updateContext = function(prevType) { - var update, type = this.type; - if (type.keyword && prevType === types$1.dot) - { this.exprAllowed = false; } - else if (update = type.updateContext) - { update.call(this, prevType); } - else - { this.exprAllowed = type.beforeExpr; } - }; - - // Used to handle egde cases when token context could not be inferred correctly during tokenization phase - - pp$6.overrideContext = function(tokenCtx) { - if (this.curContext() !== tokenCtx) { - this.context[this.context.length - 1] = tokenCtx; - } - }; - - // Token-specific context update code - - types$1.parenR.updateContext = types$1.braceR.updateContext = function() { - if (this.context.length === 1) { - this.exprAllowed = true; - return - } - var out = this.context.pop(); - if (out === types.b_stat && this.curContext().token === "function") { - out = this.context.pop(); - } - this.exprAllowed = !out.isExpr; - }; - - types$1.braceL.updateContext = function(prevType) { - this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr); - this.exprAllowed = true; - }; - - types$1.dollarBraceL.updateContext = function() { - this.context.push(types.b_tmpl); - this.exprAllowed = true; - }; - - types$1.parenL.updateContext = function(prevType) { - var statementParens = prevType === types$1._if || prevType === types$1._for || prevType === types$1._with || prevType === types$1._while; - this.context.push(statementParens ? types.p_stat : types.p_expr); - this.exprAllowed = true; - }; - - types$1.incDec.updateContext = function() { - // tokExprAllowed stays unchanged - }; - - types$1._function.updateContext = types$1._class.updateContext = function(prevType) { - if (prevType.beforeExpr && prevType !== types$1._else && - !(prevType === types$1.semi && this.curContext() !== types.p_stat) && - !(prevType === types$1._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && - !((prevType === types$1.colon || prevType === types$1.braceL) && this.curContext() === types.b_stat)) - { this.context.push(types.f_expr); } - else - { this.context.push(types.f_stat); } - this.exprAllowed = false; - }; - - types$1.backQuote.updateContext = function() { - if (this.curContext() === types.q_tmpl) - { this.context.pop(); } - else - { this.context.push(types.q_tmpl); } - this.exprAllowed = false; - }; - - types$1.star.updateContext = function(prevType) { - if (prevType === types$1._function) { - var index = this.context.length - 1; - if (this.context[index] === types.f_expr) - { this.context[index] = types.f_expr_gen; } - else - { this.context[index] = types.f_gen; } - } - this.exprAllowed = true; - }; - - types$1.name.updateContext = function(prevType) { - var allowed = false; - if (this.options.ecmaVersion >= 6 && prevType !== types$1.dot) { - if (this.value === "of" && !this.exprAllowed || - this.value === "yield" && this.inGeneratorContext()) - { allowed = true; } - } - this.exprAllowed = allowed; - }; - - // A recursive descent parser operates by defining functions for all - // syntactic elements, and recursively calling those, each function - // advancing the input stream and returning an AST node. Precedence - // of constructs (for example, the fact that `!x[1]` means `!(x[1])` - // instead of `(!x)[1]` is handled by the fact that the parser - // function that parses unary prefix operators is called first, and - // in turn calls the function that parses `[]` subscripts — that - // way, it'll receive the node for `x[1]` already parsed, and wraps - // *that* in the unary operator node. - // - // Acorn uses an [operator precedence parser][opp] to handle binary - // operator precedence, because it is much more compact than using - // the technique outlined above, which uses different, nesting - // functions to specify precedence, for all of the ten binary - // precedence levels that JavaScript defines. - // - // [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser - - - var pp$5 = Parser.prototype; - - // Check if property name clashes with already added. - // Object/class getters and setters are not allowed to clash — - // either with each other or with an init property — and in - // strict mode, init properties are also not allowed to be repeated. - - pp$5.checkPropClash = function(prop, propHash, refDestructuringErrors) { - if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") - { return } - if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) - { return } - var key = prop.key; - var name; - switch (key.type) { - case "Identifier": name = key.name; break - case "Literal": name = String(key.value); break - default: return - } - var kind = prop.kind; - if (this.options.ecmaVersion >= 6) { - if (name === "__proto__" && kind === "init") { - if (propHash.proto) { - if (refDestructuringErrors) { - if (refDestructuringErrors.doubleProto < 0) { - refDestructuringErrors.doubleProto = key.start; - } - } else { - this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); - } - } - propHash.proto = true; - } - return - } - name = "$" + name; - var other = propHash[name]; - if (other) { - var redefinition; - if (kind === "init") { - redefinition = this.strict && other.init || other.get || other.set; - } else { - redefinition = other.init || other[kind]; - } - if (redefinition) - { this.raiseRecoverable(key.start, "Redefinition of property"); } - } else { - other = propHash[name] = { - init: false, - get: false, - set: false - }; - } - other[kind] = true; - }; - - // ### Expression parsing - - // These nest, from the most general expression type at the top to - // 'atomic', nondivisible expression types at the bottom. Most of - // the functions will simply let the function(s) below them parse, - // and, *if* the syntactic construct they handle is present, wrap - // the AST node that the inner parser gave them in another node. - - // Parse a full expression. The optional arguments are used to - // forbid the `in` operator (in for loops initalization expressions) - // and provide reference for storing '=' operator inside shorthand - // property assignment in contexts where both object expression - // and object pattern might appear (so it's possible to raise - // delayed syntax error at correct position). - - pp$5.parseExpression = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeAssign(forInit, refDestructuringErrors); - if (this.type === types$1.comma) { - var node = this.startNodeAt(startPos, startLoc); - node.expressions = [expr]; - while (this.eat(types$1.comma)) { node.expressions.push(this.parseMaybeAssign(forInit, refDestructuringErrors)); } - return this.finishNode(node, "SequenceExpression") - } - return expr - }; - - // Parse an assignment expression. This includes applications of - // operators like `+=`. - - pp$5.parseMaybeAssign = function(forInit, refDestructuringErrors, afterLeftParse) { - if (this.isContextual("yield")) { - if (this.inGenerator) { return this.parseYield(forInit) } - // The tokenizer will assume an expression is allowed after - // `yield`, but this isn't that kind of yield - else { this.exprAllowed = false; } - } - - var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1, oldDoubleProto = -1; - if (refDestructuringErrors) { - oldParenAssign = refDestructuringErrors.parenthesizedAssign; - oldTrailingComma = refDestructuringErrors.trailingComma; - oldDoubleProto = refDestructuringErrors.doubleProto; - refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1; - } else { - refDestructuringErrors = new DestructuringErrors; - ownDestructuringErrors = true; - } - - var startPos = this.start, startLoc = this.startLoc; - if (this.type === types$1.parenL || this.type === types$1.name) { - this.potentialArrowAt = this.start; - this.potentialArrowInForAwait = forInit === "await"; - } - var left = this.parseMaybeConditional(forInit, refDestructuringErrors); - if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } - if (this.type.isAssign) { - var node = this.startNodeAt(startPos, startLoc); - node.operator = this.value; - if (this.type === types$1.eq) - { left = this.toAssignable(left, false, refDestructuringErrors); } - if (!ownDestructuringErrors) { - refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1; - } - if (refDestructuringErrors.shorthandAssign >= left.start) - { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly - if (this.type === types$1.eq) - { this.checkLValPattern(left); } - else - { this.checkLValSimple(left); } - node.left = left; - this.next(); - node.right = this.parseMaybeAssign(forInit); - if (oldDoubleProto > -1) { refDestructuringErrors.doubleProto = oldDoubleProto; } - return this.finishNode(node, "AssignmentExpression") - } else { - if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } - } - if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } - if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } - return left - }; - - // Parse a ternary conditional (`?:`) operator. - - pp$5.parseMaybeConditional = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprOps(forInit, refDestructuringErrors); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - if (this.eat(types$1.question)) { - var node = this.startNodeAt(startPos, startLoc); - node.test = expr; - node.consequent = this.parseMaybeAssign(); - this.expect(types$1.colon); - node.alternate = this.parseMaybeAssign(forInit); - return this.finishNode(node, "ConditionalExpression") - } - return expr - }; - - // Start the precedence parser. - - pp$5.parseExprOps = function(forInit, refDestructuringErrors) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseMaybeUnary(refDestructuringErrors, false, false, forInit); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, forInit) - }; - - // Parse binary operators with the operator precedence parsing - // algorithm. `left` is the left-hand side of the operator. - // `minPrec` provides context that allows the function to stop and - // defer further parser to one of its callers when it encounters an - // operator that has a lower precedence than the set it is parsing. - - pp$5.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, forInit) { - var prec = this.type.binop; - if (prec != null && (!forInit || this.type !== types$1._in)) { - if (prec > minPrec) { - var logical = this.type === types$1.logicalOR || this.type === types$1.logicalAND; - var coalesce = this.type === types$1.coalesce; - if (coalesce) { - // Handle the precedence of `tt.coalesce` as equal to the range of logical expressions. - // In other words, `node.right` shouldn't contain logical expressions in order to check the mixed error. - prec = types$1.logicalAND.binop; - } - var op = this.value; - this.next(); - var startPos = this.start, startLoc = this.startLoc; - var right = this.parseExprOp(this.parseMaybeUnary(null, false, false, forInit), startPos, startLoc, prec, forInit); - var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical || coalesce); - if ((logical && this.type === types$1.coalesce) || (coalesce && (this.type === types$1.logicalOR || this.type === types$1.logicalAND))) { - this.raiseRecoverable(this.start, "Logical expressions and coalesce expressions cannot be mixed. Wrap either by parentheses"); - } - return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, forInit) - } - } - return left - }; - - pp$5.buildBinary = function(startPos, startLoc, left, right, op, logical) { - if (right.type === "PrivateIdentifier") { this.raise(right.start, "Private identifier can only be left side of binary expression"); } - var node = this.startNodeAt(startPos, startLoc); - node.left = left; - node.operator = op; - node.right = right; - return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") - }; - - // Parse unary operators, both prefix and postfix. - - pp$5.parseMaybeUnary = function(refDestructuringErrors, sawUnary, incDec, forInit) { - var startPos = this.start, startLoc = this.startLoc, expr; - if (this.isContextual("await") && this.canAwait) { - expr = this.parseAwait(forInit); - sawUnary = true; - } else if (this.type.prefix) { - var node = this.startNode(), update = this.type === types$1.incDec; - node.operator = this.value; - node.prefix = true; - this.next(); - node.argument = this.parseMaybeUnary(null, true, update, forInit); - this.checkExpressionErrors(refDestructuringErrors, true); - if (update) { this.checkLValSimple(node.argument); } - else if (this.strict && node.operator === "delete" && - node.argument.type === "Identifier") - { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } - else if (node.operator === "delete" && isPrivateFieldAccess(node.argument)) - { this.raiseRecoverable(node.start, "Private fields can not be deleted"); } - else { sawUnary = true; } - expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); - } else if (!sawUnary && this.type === types$1.privateId) { - if ((forInit || this.privateNameStack.length === 0) && this.options.checkPrivateFields) { this.unexpected(); } - expr = this.parsePrivateIdent(); - // only could be private fields in 'in', such as #x in obj - if (this.type !== types$1._in) { this.unexpected(); } - } else { - expr = this.parseExprSubscripts(refDestructuringErrors, forInit); - if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } - while (this.type.postfix && !this.canInsertSemicolon()) { - var node$1 = this.startNodeAt(startPos, startLoc); - node$1.operator = this.value; - node$1.prefix = false; - node$1.argument = expr; - this.checkLValSimple(expr); - this.next(); - expr = this.finishNode(node$1, "UpdateExpression"); - } - } - - if (!incDec && this.eat(types$1.starstar)) { - if (sawUnary) - { this.unexpected(this.lastTokStart); } - else - { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false, false, forInit), "**", false) } - } else { - return expr - } - }; - - function isPrivateFieldAccess(node) { - return ( - node.type === "MemberExpression" && node.property.type === "PrivateIdentifier" || - node.type === "ChainExpression" && isPrivateFieldAccess(node.expression) - ) - } - - // Parse call, dot, and `[]`-subscript expressions. - - pp$5.parseExprSubscripts = function(refDestructuringErrors, forInit) { - var startPos = this.start, startLoc = this.startLoc; - var expr = this.parseExprAtom(refDestructuringErrors, forInit); - if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") - { return expr } - var result = this.parseSubscripts(expr, startPos, startLoc, false, forInit); - if (refDestructuringErrors && result.type === "MemberExpression") { - if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } - if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } - if (refDestructuringErrors.trailingComma >= result.start) { refDestructuringErrors.trailingComma = -1; } - } - return result - }; - - pp$5.parseSubscripts = function(base, startPos, startLoc, noCalls, forInit) { - var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && - this.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && - this.potentialArrowAt === base.start; - var optionalChained = false; - - while (true) { - var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit); - - if (element.optional) { optionalChained = true; } - if (element === base || element.type === "ArrowFunctionExpression") { - if (optionalChained) { - var chainNode = this.startNodeAt(startPos, startLoc); - chainNode.expression = element; - element = this.finishNode(chainNode, "ChainExpression"); - } - return element - } - - base = element; - } - }; - - pp$5.shouldParseAsyncArrow = function() { - return !this.canInsertSemicolon() && this.eat(types$1.arrow) - }; - - pp$5.parseSubscriptAsyncArrow = function(startPos, startLoc, exprList, forInit) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true, forInit) - }; - - pp$5.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow, optionalChained, forInit) { - var optionalSupported = this.options.ecmaVersion >= 11; - var optional = optionalSupported && this.eat(types$1.questionDot); - if (noCalls && optional) { this.raise(this.lastTokStart, "Optional chaining cannot appear in the callee of new expressions"); } - - var computed = this.eat(types$1.bracketL); - if (computed || (optional && this.type !== types$1.parenL && this.type !== types$1.backQuote) || this.eat(types$1.dot)) { - var node = this.startNodeAt(startPos, startLoc); - node.object = base; - if (computed) { - node.property = this.parseExpression(); - this.expect(types$1.bracketR); - } else if (this.type === types$1.privateId && base.type !== "Super") { - node.property = this.parsePrivateIdent(); - } else { - node.property = this.parseIdent(this.options.allowReserved !== "never"); - } - node.computed = !!computed; - if (optionalSupported) { - node.optional = optional; - } - base = this.finishNode(node, "MemberExpression"); - } else if (!noCalls && this.eat(types$1.parenL)) { - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - var exprList = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors); - if (maybeAsyncArrow && !optional && this.shouldParseAsyncArrow()) { - this.checkPatternErrors(refDestructuringErrors, false); - this.checkYieldAwaitInDefaultParams(); - if (this.awaitIdentPos > 0) - { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.parseSubscriptAsyncArrow(startPos, startLoc, exprList, forInit) - } - this.checkExpressionErrors(refDestructuringErrors, true); - this.yieldPos = oldYieldPos || this.yieldPos; - this.awaitPos = oldAwaitPos || this.awaitPos; - this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; - var node$1 = this.startNodeAt(startPos, startLoc); - node$1.callee = base; - node$1.arguments = exprList; - if (optionalSupported) { - node$1.optional = optional; - } - base = this.finishNode(node$1, "CallExpression"); - } else if (this.type === types$1.backQuote) { - if (optional || optionalChained) { - this.raise(this.start, "Optional chaining cannot appear in the tag of tagged template expressions"); - } - var node$2 = this.startNodeAt(startPos, startLoc); - node$2.tag = base; - node$2.quasi = this.parseTemplate({isTagged: true}); - base = this.finishNode(node$2, "TaggedTemplateExpression"); - } - return base - }; - - // Parse an atomic expression — either a single token that is an - // expression, an expression started by a keyword like `function` or - // `new`, or an expression wrapped in punctuation like `()`, `[]`, - // or `{}`. - - pp$5.parseExprAtom = function(refDestructuringErrors, forInit, forNew) { - // If a division operator appears in an expression position, the - // tokenizer got confused, and we force it to read a regexp instead. - if (this.type === types$1.slash) { this.readRegexp(); } - - var node, canBeArrow = this.potentialArrowAt === this.start; - switch (this.type) { - case types$1._super: - if (!this.allowSuper) - { this.raise(this.start, "'super' keyword outside a method"); } - node = this.startNode(); - this.next(); - if (this.type === types$1.parenL && !this.allowDirectSuper) - { this.raise(node.start, "super() call outside constructor of a subclass"); } - // The `super` keyword can appear at below: - // SuperProperty: - // super [ Expression ] - // super . IdentifierName - // SuperCall: - // super ( Arguments ) - if (this.type !== types$1.dot && this.type !== types$1.bracketL && this.type !== types$1.parenL) - { this.unexpected(); } - return this.finishNode(node, "Super") - - case types$1._this: - node = this.startNode(); - this.next(); - return this.finishNode(node, "ThisExpression") - - case types$1.name: - var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; - var id = this.parseIdent(false); - if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types$1._function)) { - this.overrideContext(types.f_expr); - return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true, forInit) - } - if (canBeArrow && !this.canInsertSemicolon()) { - if (this.eat(types$1.arrow)) - { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false, forInit) } - if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types$1.name && !containsEsc && - (!this.potentialArrowInForAwait || this.value !== "of" || this.containsEsc)) { - id = this.parseIdent(false); - if (this.canInsertSemicolon() || !this.eat(types$1.arrow)) - { this.unexpected(); } - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true, forInit) - } - } - return id - - case types$1.regexp: - var value = this.value; - node = this.parseLiteral(value.value); - node.regex = {pattern: value.pattern, flags: value.flags}; - return node - - case types$1.num: case types$1.string: - return this.parseLiteral(this.value) - - case types$1._null: case types$1._true: case types$1._false: - node = this.startNode(); - node.value = this.type === types$1._null ? null : this.type === types$1._true; - node.raw = this.type.keyword; - this.next(); - return this.finishNode(node, "Literal") - - case types$1.parenL: - var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow, forInit); - if (refDestructuringErrors) { - if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) - { refDestructuringErrors.parenthesizedAssign = start; } - if (refDestructuringErrors.parenthesizedBind < 0) - { refDestructuringErrors.parenthesizedBind = start; } - } - return expr - - case types$1.bracketL: - node = this.startNode(); - this.next(); - node.elements = this.parseExprList(types$1.bracketR, true, true, refDestructuringErrors); - return this.finishNode(node, "ArrayExpression") - - case types$1.braceL: - this.overrideContext(types.b_expr); - return this.parseObj(false, refDestructuringErrors) - - case types$1._function: - node = this.startNode(); - this.next(); - return this.parseFunction(node, 0) - - case types$1._class: - return this.parseClass(this.startNode(), false) - - case types$1._new: - return this.parseNew() - - case types$1.backQuote: - return this.parseTemplate() - - case types$1._import: - if (this.options.ecmaVersion >= 11) { - return this.parseExprImport(forNew) - } else { - return this.unexpected() - } - - default: - return this.parseExprAtomDefault() - } - }; - - pp$5.parseExprAtomDefault = function() { - this.unexpected(); - }; - - pp$5.parseExprImport = function(forNew) { - var node = this.startNode(); - - // Consume `import` as an identifier for `import.meta`. - // Because `this.parseIdent(true)` doesn't check escape sequences, it needs the check of `this.containsEsc`. - if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword import"); } - var meta = this.parseIdent(true); - - if (this.type === types$1.parenL && !forNew) { - return this.parseDynamicImport(node) - } else if (this.type === types$1.dot) { - node.meta = meta; - return this.parseImportMeta(node) - } else { - this.unexpected(); - } - }; - - pp$5.parseDynamicImport = function(node) { - this.next(); // skip `(` - - // Parse node.source. - node.source = this.parseMaybeAssign(); - - // Verify ending. - if (!this.eat(types$1.parenR)) { - var errorPos = this.start; - if (this.eat(types$1.comma) && this.eat(types$1.parenR)) { - this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()"); - } else { - this.unexpected(errorPos); - } - } - - return this.finishNode(node, "ImportExpression") - }; - - pp$5.parseImportMeta = function(node) { - this.next(); // skip `.` - - var containsEsc = this.containsEsc; - node.property = this.parseIdent(true); - - if (node.property.name !== "meta") - { this.raiseRecoverable(node.property.start, "The only valid meta property for import is 'import.meta'"); } - if (containsEsc) - { this.raiseRecoverable(node.start, "'import.meta' must not contain escaped characters"); } - if (this.options.sourceType !== "module" && !this.options.allowImportExportEverywhere) - { this.raiseRecoverable(node.start, "Cannot use 'import.meta' outside a module"); } - - return this.finishNode(node, "MetaProperty") - }; - - pp$5.parseLiteral = function(value) { - var node = this.startNode(); - node.value = value; - node.raw = this.input.slice(this.start, this.end); - if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1).replace(/_/g, ""); } - this.next(); - return this.finishNode(node, "Literal") - }; - - pp$5.parseParenExpression = function() { - this.expect(types$1.parenL); - var val = this.parseExpression(); - this.expect(types$1.parenR); - return val - }; - - pp$5.shouldParseArrow = function(exprList) { - return !this.canInsertSemicolon() - }; - - pp$5.parseParenAndDistinguishExpression = function(canBeArrow, forInit) { - var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; - if (this.options.ecmaVersion >= 6) { - this.next(); - - var innerStartPos = this.start, innerStartLoc = this.startLoc; - var exprList = [], first = true, lastIsComma = false; - var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; - this.yieldPos = 0; - this.awaitPos = 0; - // Do not save awaitIdentPos to allow checking awaits nested in parameters - while (this.type !== types$1.parenR) { - first ? first = false : this.expect(types$1.comma); - if (allowTrailingComma && this.afterTrailingComma(types$1.parenR, true)) { - lastIsComma = true; - break - } else if (this.type === types$1.ellipsis) { - spreadStart = this.start; - exprList.push(this.parseParenItem(this.parseRestBinding())); - if (this.type === types$1.comma) { - this.raiseRecoverable( - this.start, - "Comma is not permitted after the rest element" - ); - } - break - } else { - exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); - } - } - var innerEndPos = this.lastTokEnd, innerEndLoc = this.lastTokEndLoc; - this.expect(types$1.parenR); - - if (canBeArrow && this.shouldParseArrow(exprList) && this.eat(types$1.arrow)) { - this.checkPatternErrors(refDestructuringErrors, false); - this.checkYieldAwaitInDefaultParams(); - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - return this.parseParenArrowList(startPos, startLoc, exprList, forInit) - } - - if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } - if (spreadStart) { this.unexpected(spreadStart); } - this.checkExpressionErrors(refDestructuringErrors, true); - this.yieldPos = oldYieldPos || this.yieldPos; - this.awaitPos = oldAwaitPos || this.awaitPos; - - if (exprList.length > 1) { - val = this.startNodeAt(innerStartPos, innerStartLoc); - val.expressions = exprList; - this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); - } else { - val = exprList[0]; - } - } else { - val = this.parseParenExpression(); - } - - if (this.options.preserveParens) { - var par = this.startNodeAt(startPos, startLoc); - par.expression = val; - return this.finishNode(par, "ParenthesizedExpression") - } else { - return val - } - }; - - pp$5.parseParenItem = function(item) { - return item - }; - - pp$5.parseParenArrowList = function(startPos, startLoc, exprList, forInit) { - return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, false, forInit) - }; - - // New's precedence is slightly tricky. It must allow its argument to - // be a `[]` or dot subscript expression, but not a call — at least, - // not without wrapping it in parentheses. Thus, it uses the noCalls - // argument to parseSubscripts to prevent it from consuming the - // argument list. - - var empty = []; - - pp$5.parseNew = function() { - if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } - var node = this.startNode(); - var meta = this.parseIdent(true); - if (this.options.ecmaVersion >= 6 && this.eat(types$1.dot)) { - node.meta = meta; - var containsEsc = this.containsEsc; - node.property = this.parseIdent(true); - if (node.property.name !== "target") - { this.raiseRecoverable(node.property.start, "The only valid meta property for new is 'new.target'"); } - if (containsEsc) - { this.raiseRecoverable(node.start, "'new.target' must not contain escaped characters"); } - if (!this.allowNewDotTarget) - { this.raiseRecoverable(node.start, "'new.target' can only be used in functions and class static block"); } - return this.finishNode(node, "MetaProperty") - } - var startPos = this.start, startLoc = this.startLoc; - node.callee = this.parseSubscripts(this.parseExprAtom(null, false, true), startPos, startLoc, true, false); - if (this.eat(types$1.parenL)) { node.arguments = this.parseExprList(types$1.parenR, this.options.ecmaVersion >= 8, false); } - else { node.arguments = empty; } - return this.finishNode(node, "NewExpression") - }; - - // Parse template expression. - - pp$5.parseTemplateElement = function(ref) { - var isTagged = ref.isTagged; - - var elem = this.startNode(); - if (this.type === types$1.invalidTemplate) { - if (!isTagged) { - this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); - } - elem.value = { - raw: this.value, - cooked: null - }; - } else { - elem.value = { - raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), - cooked: this.value - }; - } - this.next(); - elem.tail = this.type === types$1.backQuote; - return this.finishNode(elem, "TemplateElement") - }; - - pp$5.parseTemplate = function(ref) { - if ( ref === void 0 ) ref = {}; - var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; - - var node = this.startNode(); - this.next(); - node.expressions = []; - var curElt = this.parseTemplateElement({isTagged: isTagged}); - node.quasis = [curElt]; - while (!curElt.tail) { - if (this.type === types$1.eof) { this.raise(this.pos, "Unterminated template literal"); } - this.expect(types$1.dollarBraceL); - node.expressions.push(this.parseExpression()); - this.expect(types$1.braceR); - node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); - } - this.next(); - return this.finishNode(node, "TemplateLiteral") - }; - - pp$5.isAsyncProp = function(prop) { - return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && - (this.type === types$1.name || this.type === types$1.num || this.type === types$1.string || this.type === types$1.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types$1.star)) && - !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) - }; - - // Parse an object literal or binding pattern. - - pp$5.parseObj = function(isPattern, refDestructuringErrors) { - var node = this.startNode(), first = true, propHash = {}; - node.properties = []; - this.next(); - while (!this.eat(types$1.braceR)) { - if (!first) { - this.expect(types$1.comma); - if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types$1.braceR)) { break } - } else { first = false; } - - var prop = this.parseProperty(isPattern, refDestructuringErrors); - if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } - node.properties.push(prop); - } - return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") - }; - - pp$5.parseProperty = function(isPattern, refDestructuringErrors) { - var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; - if (this.options.ecmaVersion >= 9 && this.eat(types$1.ellipsis)) { - if (isPattern) { - prop.argument = this.parseIdent(false); - if (this.type === types$1.comma) { - this.raiseRecoverable(this.start, "Comma is not permitted after the rest element"); - } - return this.finishNode(prop, "RestElement") - } - // Parse argument. - prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); - // To disallow trailing comma via `this.toAssignable()`. - if (this.type === types$1.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { - refDestructuringErrors.trailingComma = this.start; - } - // Finish - return this.finishNode(prop, "SpreadElement") - } - if (this.options.ecmaVersion >= 6) { - prop.method = false; - prop.shorthand = false; - if (isPattern || refDestructuringErrors) { - startPos = this.start; - startLoc = this.startLoc; - } - if (!isPattern) - { isGenerator = this.eat(types$1.star); } - } - var containsEsc = this.containsEsc; - this.parsePropertyName(prop); - if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { - isAsync = true; - isGenerator = this.options.ecmaVersion >= 9 && this.eat(types$1.star); - this.parsePropertyName(prop); - } else { - isAsync = false; - } - this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); - return this.finishNode(prop, "Property") - }; - - pp$5.parseGetterSetter = function(prop) { - prop.kind = prop.key.name; - this.parsePropertyName(prop); - prop.value = this.parseMethod(false); - var paramCount = prop.kind === "get" ? 0 : 1; - if (prop.value.params.length !== paramCount) { - var start = prop.value.start; - if (prop.kind === "get") - { this.raiseRecoverable(start, "getter should have no params"); } - else - { this.raiseRecoverable(start, "setter should have exactly one param"); } - } else { - if (prop.kind === "set" && prop.value.params[0].type === "RestElement") - { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } - } - }; - - pp$5.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { - if ((isGenerator || isAsync) && this.type === types$1.colon) - { this.unexpected(); } - - if (this.eat(types$1.colon)) { - prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); - prop.kind = "init"; - } else if (this.options.ecmaVersion >= 6 && this.type === types$1.parenL) { - if (isPattern) { this.unexpected(); } - prop.kind = "init"; - prop.method = true; - prop.value = this.parseMethod(isGenerator, isAsync); - } else if (!isPattern && !containsEsc && - this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && - (prop.key.name === "get" || prop.key.name === "set") && - (this.type !== types$1.comma && this.type !== types$1.braceR && this.type !== types$1.eq)) { - if (isGenerator || isAsync) { this.unexpected(); } - this.parseGetterSetter(prop); - } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { - if (isGenerator || isAsync) { this.unexpected(); } - this.checkUnreserved(prop.key); - if (prop.key.name === "await" && !this.awaitIdentPos) - { this.awaitIdentPos = startPos; } - prop.kind = "init"; - if (isPattern) { - prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); - } else if (this.type === types$1.eq && refDestructuringErrors) { - if (refDestructuringErrors.shorthandAssign < 0) - { refDestructuringErrors.shorthandAssign = this.start; } - prop.value = this.parseMaybeDefault(startPos, startLoc, this.copyNode(prop.key)); - } else { - prop.value = this.copyNode(prop.key); - } - prop.shorthand = true; - } else { this.unexpected(); } - }; - - pp$5.parsePropertyName = function(prop) { - if (this.options.ecmaVersion >= 6) { - if (this.eat(types$1.bracketL)) { - prop.computed = true; - prop.key = this.parseMaybeAssign(); - this.expect(types$1.bracketR); - return prop.key - } else { - prop.computed = false; - } - } - return prop.key = this.type === types$1.num || this.type === types$1.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never") - }; - - // Initialize empty function node. - - pp$5.initFunction = function(node) { - node.id = null; - if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } - if (this.options.ecmaVersion >= 8) { node.async = false; } - }; - - // Parse object or class method. - - pp$5.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { - var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - - this.initFunction(node); - if (this.options.ecmaVersion >= 6) - { node.generator = isGenerator; } - if (this.options.ecmaVersion >= 8) - { node.async = !!isAsync; } - - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); - - this.expect(types$1.parenL); - node.params = this.parseBindingList(types$1.parenR, false, this.options.ecmaVersion >= 8); - this.checkYieldAwaitInDefaultParams(); - this.parseFunctionBody(node, false, true, false); - - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, "FunctionExpression") - }; - - // Parse arrow function expression with given parameters. - - pp$5.parseArrowExpression = function(node, params, isAsync, forInit) { - var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; - - this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); - this.initFunction(node); - if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } - - this.yieldPos = 0; - this.awaitPos = 0; - this.awaitIdentPos = 0; - - node.params = this.toAssignableList(params, true); - this.parseFunctionBody(node, true, false, forInit); - - this.yieldPos = oldYieldPos; - this.awaitPos = oldAwaitPos; - this.awaitIdentPos = oldAwaitIdentPos; - return this.finishNode(node, "ArrowFunctionExpression") - }; - - // Parse function body and check parameters. - - pp$5.parseFunctionBody = function(node, isArrowFunction, isMethod, forInit) { - var isExpression = isArrowFunction && this.type !== types$1.braceL; - var oldStrict = this.strict, useStrict = false; - - if (isExpression) { - node.body = this.parseMaybeAssign(forInit); - node.expression = true; - this.checkParams(node, false); - } else { - var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); - if (!oldStrict || nonSimple) { - useStrict = this.strictDirective(this.end); - // If this is a strict mode function, verify that argument names - // are not repeated, and it does not try to bind the words `eval` - // or `arguments`. - if (useStrict && nonSimple) - { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } - } - // Start a new scope with regard to labels and the `inFunction` - // flag (restore them to their old value afterwards). - var oldLabels = this.labels; - this.labels = []; - if (useStrict) { this.strict = true; } - - // Add the params to varDeclaredNames to ensure that an error is thrown - // if a let/const declaration in the function clashes with one of the params. - this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); - // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' - if (this.strict && node.id) { this.checkLValSimple(node.id, BIND_OUTSIDE); } - node.body = this.parseBlock(false, undefined, useStrict && !oldStrict); - node.expression = false; - this.adaptDirectivePrologue(node.body.body); - this.labels = oldLabels; - } - this.exitScope(); - }; - - pp$5.isSimpleParamList = function(params) { - for (var i = 0, list = params; i < list.length; i += 1) - { - var param = list[i]; - - if (param.type !== "Identifier") { return false - } } - return true - }; - - // Checks function params for various disallowed patterns such as using "eval" - // or "arguments" and duplicate parameters. - - pp$5.checkParams = function(node, allowDuplicates) { - var nameHash = Object.create(null); - for (var i = 0, list = node.params; i < list.length; i += 1) - { - var param = list[i]; - - this.checkLValInnerPattern(param, BIND_VAR, allowDuplicates ? null : nameHash); - } - }; - - // Parses a comma-separated list of expressions, and returns them as - // an array. `close` is the token type that ends the list, and - // `allowEmpty` can be turned on to allow subsequent commas with - // nothing in between them to be parsed as `null` (which is needed - // for array literals). - - pp$5.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { - var elts = [], first = true; - while (!this.eat(close)) { - if (!first) { - this.expect(types$1.comma); - if (allowTrailingComma && this.afterTrailingComma(close)) { break } - } else { first = false; } - - var elt = (void 0); - if (allowEmpty && this.type === types$1.comma) - { elt = null; } - else if (this.type === types$1.ellipsis) { - elt = this.parseSpread(refDestructuringErrors); - if (refDestructuringErrors && this.type === types$1.comma && refDestructuringErrors.trailingComma < 0) - { refDestructuringErrors.trailingComma = this.start; } - } else { - elt = this.parseMaybeAssign(false, refDestructuringErrors); - } - elts.push(elt); - } - return elts - }; - - pp$5.checkUnreserved = function(ref) { - var start = ref.start; - var end = ref.end; - var name = ref.name; - - if (this.inGenerator && name === "yield") - { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } - if (this.inAsync && name === "await") - { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } - if (this.currentThisScope().inClassFieldInit && name === "arguments") - { this.raiseRecoverable(start, "Cannot use 'arguments' in class field initializer"); } - if (this.inClassStaticBlock && (name === "arguments" || name === "await")) - { this.raise(start, ("Cannot use " + name + " in class static initialization block")); } - if (this.keywords.test(name)) - { this.raise(start, ("Unexpected keyword '" + name + "'")); } - if (this.options.ecmaVersion < 6 && - this.input.slice(start, end).indexOf("\\") !== -1) { return } - var re = this.strict ? this.reservedWordsStrict : this.reservedWords; - if (re.test(name)) { - if (!this.inAsync && name === "await") - { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } - this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); - } - }; - - // Parse the next token as an identifier. If `liberal` is true (used - // when parsing properties), it will also convert keywords into - // identifiers. - - pp$5.parseIdent = function(liberal) { - var node = this.parseIdentNode(); - this.next(!!liberal); - this.finishNode(node, "Identifier"); - if (!liberal) { - this.checkUnreserved(node); - if (node.name === "await" && !this.awaitIdentPos) - { this.awaitIdentPos = node.start; } - } - return node - }; - - pp$5.parseIdentNode = function() { - var node = this.startNode(); - if (this.type === types$1.name) { - node.name = this.value; - } else if (this.type.keyword) { - node.name = this.type.keyword; - - // To fix https://github.com/acornjs/acorn/issues/575 - // `class` and `function` keywords push new context into this.context. - // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. - // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword - if ((node.name === "class" || node.name === "function") && - (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { - this.context.pop(); - } - } else { - this.unexpected(); - } - return node - }; - - pp$5.parsePrivateIdent = function() { - var node = this.startNode(); - if (this.type === types$1.privateId) { - node.name = this.value; - } else { - this.unexpected(); - } - this.next(); - this.finishNode(node, "PrivateIdentifier"); - - // For validating existence - if (this.options.checkPrivateFields) { - if (this.privateNameStack.length === 0) { - this.raise(node.start, ("Private field '#" + (node.name) + "' must be declared in an enclosing class")); - } else { - this.privateNameStack[this.privateNameStack.length - 1].used.push(node); - } - } - - return node - }; - - // Parses yield expression inside generator. - - pp$5.parseYield = function(forInit) { - if (!this.yieldPos) { this.yieldPos = this.start; } - - var node = this.startNode(); - this.next(); - if (this.type === types$1.semi || this.canInsertSemicolon() || (this.type !== types$1.star && !this.type.startsExpr)) { - node.delegate = false; - node.argument = null; - } else { - node.delegate = this.eat(types$1.star); - node.argument = this.parseMaybeAssign(forInit); - } - return this.finishNode(node, "YieldExpression") - }; - - pp$5.parseAwait = function(forInit) { - if (!this.awaitPos) { this.awaitPos = this.start; } - - var node = this.startNode(); - this.next(); - node.argument = this.parseMaybeUnary(null, true, false, forInit); - return this.finishNode(node, "AwaitExpression") - }; - - var pp$4 = Parser.prototype; - - // This function is used to raise exceptions on parse errors. It - // takes an offset integer (into the current `input`) to indicate - // the location of the error, attaches the position to the end - // of the error message, and then raises a `SyntaxError` with that - // message. - - pp$4.raise = function(pos, message) { - var loc = getLineInfo(this.input, pos); - message += " (" + loc.line + ":" + loc.column + ")"; - var err = new SyntaxError(message); - err.pos = pos; err.loc = loc; err.raisedAt = this.pos; - throw err - }; - - pp$4.raiseRecoverable = pp$4.raise; - - pp$4.curPosition = function() { - if (this.options.locations) { - return new Position(this.curLine, this.pos - this.lineStart) - } - }; - - var pp$3 = Parser.prototype; - - var Scope = function Scope(flags) { - this.flags = flags; - // A list of var-declared names in the current lexical scope - this.var = []; - // A list of lexically-declared names in the current lexical scope - this.lexical = []; - // A list of lexically-declared FunctionDeclaration names in the current lexical scope - this.functions = []; - // A switch to disallow the identifier reference 'arguments' - this.inClassFieldInit = false; - }; - - // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. - - pp$3.enterScope = function(flags) { - this.scopeStack.push(new Scope(flags)); - }; - - pp$3.exitScope = function() { - this.scopeStack.pop(); - }; - - // The spec says: - // > At the top level of a function, or script, function declarations are - // > treated like var declarations rather than like lexical declarations. - pp$3.treatFunctionsAsVarInScope = function(scope) { - return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) - }; - - pp$3.declareName = function(name, bindingType, pos) { - var redeclared = false; - if (bindingType === BIND_LEXICAL) { - var scope = this.currentScope(); - redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; - scope.lexical.push(name); - if (this.inModule && (scope.flags & SCOPE_TOP)) - { delete this.undefinedExports[name]; } - } else if (bindingType === BIND_SIMPLE_CATCH) { - var scope$1 = this.currentScope(); - scope$1.lexical.push(name); - } else if (bindingType === BIND_FUNCTION) { - var scope$2 = this.currentScope(); - if (this.treatFunctionsAsVar) - { redeclared = scope$2.lexical.indexOf(name) > -1; } - else - { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } - scope$2.functions.push(name); - } else { - for (var i = this.scopeStack.length - 1; i >= 0; --i) { - var scope$3 = this.scopeStack[i]; - if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || - !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { - redeclared = true; - break - } - scope$3.var.push(name); - if (this.inModule && (scope$3.flags & SCOPE_TOP)) - { delete this.undefinedExports[name]; } - if (scope$3.flags & SCOPE_VAR) { break } - } - } - if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } - }; - - pp$3.checkLocalExport = function(id) { - // scope.functions must be empty as Module code is always strict. - if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && - this.scopeStack[0].var.indexOf(id.name) === -1) { - this.undefinedExports[id.name] = id; - } - }; - - pp$3.currentScope = function() { - return this.scopeStack[this.scopeStack.length - 1] - }; - - pp$3.currentVarScope = function() { - for (var i = this.scopeStack.length - 1;; i--) { - var scope = this.scopeStack[i]; - if (scope.flags & SCOPE_VAR) { return scope } - } - }; - - // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. - pp$3.currentThisScope = function() { - for (var i = this.scopeStack.length - 1;; i--) { - var scope = this.scopeStack[i]; - if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope } - } - }; - - var Node = function Node(parser, pos, loc) { - this.type = ""; - this.start = pos; - this.end = 0; - if (parser.options.locations) - { this.loc = new SourceLocation(parser, loc); } - if (parser.options.directSourceFile) - { this.sourceFile = parser.options.directSourceFile; } - if (parser.options.ranges) - { this.range = [pos, 0]; } - }; - - // Start an AST node, attaching a start offset. - - var pp$2 = Parser.prototype; - - pp$2.startNode = function() { - return new Node(this, this.start, this.startLoc) - }; - - pp$2.startNodeAt = function(pos, loc) { - return new Node(this, pos, loc) - }; - - // Finish an AST node, adding `type` and `end` properties. - - function finishNodeAt(node, type, pos, loc) { - node.type = type; - node.end = pos; - if (this.options.locations) - { node.loc.end = loc; } - if (this.options.ranges) - { node.range[1] = pos; } - return node - } - - pp$2.finishNode = function(node, type) { - return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) - }; - - // Finish node at given position - - pp$2.finishNodeAt = function(node, type, pos, loc) { - return finishNodeAt.call(this, node, type, pos, loc) - }; - - pp$2.copyNode = function(node) { - var newNode = new Node(this, node.start, this.startLoc); - for (var prop in node) { newNode[prop] = node[prop]; } - return newNode - }; - - // This file contains Unicode properties extracted from the ECMAScript specification. - // The lists are extracted like so: - // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) - - // #table-binary-unicode-properties - var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS"; - var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; - var ecma11BinaryProperties = ecma10BinaryProperties; - var ecma12BinaryProperties = ecma11BinaryProperties + " EBase EComp EMod EPres ExtPict"; - var ecma13BinaryProperties = ecma12BinaryProperties; - var ecma14BinaryProperties = ecma13BinaryProperties; - - var unicodeBinaryProperties = { - 9: ecma9BinaryProperties, - 10: ecma10BinaryProperties, - 11: ecma11BinaryProperties, - 12: ecma12BinaryProperties, - 13: ecma13BinaryProperties, - 14: ecma14BinaryProperties - }; - - // #table-binary-unicode-properties-of-strings - var ecma14BinaryPropertiesOfStrings = "Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"; - - var unicodeBinaryPropertiesOfStrings = { - 9: "", - 10: "", - 11: "", - 12: "", - 13: "", - 14: ecma14BinaryPropertiesOfStrings - }; - - // #table-unicode-general-category-values - var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; - - // #table-unicode-script-values - var ecma9ScriptValues = "Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; - var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; - var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; - var ecma12ScriptValues = ecma11ScriptValues + " Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi"; - var ecma13ScriptValues = ecma12ScriptValues + " Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith"; - var ecma14ScriptValues = ecma13ScriptValues + " Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz"; - - var unicodeScriptValues = { - 9: ecma9ScriptValues, - 10: ecma10ScriptValues, - 11: ecma11ScriptValues, - 12: ecma12ScriptValues, - 13: ecma13ScriptValues, - 14: ecma14ScriptValues - }; - - var data = {}; - function buildUnicodeData(ecmaVersion) { - var d = data[ecmaVersion] = { - binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), - binaryOfStrings: wordsRegexp(unicodeBinaryPropertiesOfStrings[ecmaVersion]), - nonBinary: { - General_Category: wordsRegexp(unicodeGeneralCategoryValues), - Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) - } - }; - d.nonBinary.Script_Extensions = d.nonBinary.Script; - - d.nonBinary.gc = d.nonBinary.General_Category; - d.nonBinary.sc = d.nonBinary.Script; - d.nonBinary.scx = d.nonBinary.Script_Extensions; - } - - for (var i = 0, list = [9, 10, 11, 12, 13, 14]; i < list.length; i += 1) { - var ecmaVersion = list[i]; - - buildUnicodeData(ecmaVersion); - } - - var pp$1 = Parser.prototype; - - var RegExpValidationState = function RegExpValidationState(parser) { - this.parser = parser; - this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : "") + (parser.options.ecmaVersion >= 13 ? "d" : "") + (parser.options.ecmaVersion >= 15 ? "v" : ""); - this.unicodeProperties = data[parser.options.ecmaVersion >= 14 ? 14 : parser.options.ecmaVersion]; - this.source = ""; - this.flags = ""; - this.start = 0; - this.switchU = false; - this.switchV = false; - this.switchN = false; - this.pos = 0; - this.lastIntValue = 0; - this.lastStringValue = ""; - this.lastAssertionIsQuantifiable = false; - this.numCapturingParens = 0; - this.maxBackReference = 0; - this.groupNames = []; - this.backReferenceNames = []; - }; - - RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { - var unicodeSets = flags.indexOf("v") !== -1; - var unicode = flags.indexOf("u") !== -1; - this.start = start | 0; - this.source = pattern + ""; - this.flags = flags; - if (unicodeSets && this.parser.options.ecmaVersion >= 15) { - this.switchU = true; - this.switchV = true; - this.switchN = true; - } else { - this.switchU = unicode && this.parser.options.ecmaVersion >= 6; - this.switchV = false; - this.switchN = unicode && this.parser.options.ecmaVersion >= 9; - } - }; - - RegExpValidationState.prototype.raise = function raise (message) { - this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); - }; - - // If u flag is given, this returns the code point at the index (it combines a surrogate pair). - // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). - RegExpValidationState.prototype.at = function at (i, forceU) { - if ( forceU === void 0 ) forceU = false; - - var s = this.source; - var l = s.length; - if (i >= l) { - return -1 - } - var c = s.charCodeAt(i); - if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { - return c - } - var next = s.charCodeAt(i + 1); - return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c - }; - - RegExpValidationState.prototype.nextIndex = function nextIndex (i, forceU) { - if ( forceU === void 0 ) forceU = false; - - var s = this.source; - var l = s.length; - if (i >= l) { - return l - } - var c = s.charCodeAt(i), next; - if (!(forceU || this.switchU) || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l || - (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) { - return i + 1 - } - return i + 2 - }; - - RegExpValidationState.prototype.current = function current (forceU) { - if ( forceU === void 0 ) forceU = false; - - return this.at(this.pos, forceU) - }; - - RegExpValidationState.prototype.lookahead = function lookahead (forceU) { - if ( forceU === void 0 ) forceU = false; - - return this.at(this.nextIndex(this.pos, forceU), forceU) - }; - - RegExpValidationState.prototype.advance = function advance (forceU) { - if ( forceU === void 0 ) forceU = false; - - this.pos = this.nextIndex(this.pos, forceU); - }; - - RegExpValidationState.prototype.eat = function eat (ch, forceU) { - if ( forceU === void 0 ) forceU = false; - - if (this.current(forceU) === ch) { - this.advance(forceU); - return true - } - return false - }; - - RegExpValidationState.prototype.eatChars = function eatChars (chs, forceU) { - if ( forceU === void 0 ) forceU = false; - - var pos = this.pos; - for (var i = 0, list = chs; i < list.length; i += 1) { - var ch = list[i]; - - var current = this.at(pos, forceU); - if (current === -1 || current !== ch) { - return false - } - pos = this.nextIndex(pos, forceU); - } - this.pos = pos; - return true - }; - - /** - * Validate the flags part of a given RegExpLiteral. - * - * @param {RegExpValidationState} state The state to validate RegExp. - * @returns {void} - */ - pp$1.validateRegExpFlags = function(state) { - var validFlags = state.validFlags; - var flags = state.flags; - - var u = false; - var v = false; - - for (var i = 0; i < flags.length; i++) { - var flag = flags.charAt(i); - if (validFlags.indexOf(flag) === -1) { - this.raise(state.start, "Invalid regular expression flag"); - } - if (flags.indexOf(flag, i + 1) > -1) { - this.raise(state.start, "Duplicate regular expression flag"); - } - if (flag === "u") { u = true; } - if (flag === "v") { v = true; } - } - if (this.options.ecmaVersion >= 15 && u && v) { - this.raise(state.start, "Invalid regular expression flag"); - } - }; - - /** - * Validate the pattern part of a given RegExpLiteral. - * - * @param {RegExpValidationState} state The state to validate RegExp. - * @returns {void} - */ - pp$1.validateRegExpPattern = function(state) { - this.regexp_pattern(state); - - // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of - // parsing contains a |GroupName|, reparse with the goal symbol - // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* - // exception if _P_ did not conform to the grammar, if any elements of _P_ - // were not matched by the parse, or if any Early Error conditions exist. - if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) { - state.switchN = true; - this.regexp_pattern(state); - } - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern - pp$1.regexp_pattern = function(state) { - state.pos = 0; - state.lastIntValue = 0; - state.lastStringValue = ""; - state.lastAssertionIsQuantifiable = false; - state.numCapturingParens = 0; - state.maxBackReference = 0; - state.groupNames.length = 0; - state.backReferenceNames.length = 0; - - this.regexp_disjunction(state); - - if (state.pos !== state.source.length) { - // Make the same messages as V8. - if (state.eat(0x29 /* ) */)) { - state.raise("Unmatched ')'"); - } - if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) { - state.raise("Lone quantifier brackets"); - } - } - if (state.maxBackReference > state.numCapturingParens) { - state.raise("Invalid escape"); - } - for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { - var name = list[i]; - - if (state.groupNames.indexOf(name) === -1) { - state.raise("Invalid named capture referenced"); - } - } - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction - pp$1.regexp_disjunction = function(state) { - this.regexp_alternative(state); - while (state.eat(0x7C /* | */)) { - this.regexp_alternative(state); - } - - // Make the same message as V8. - if (this.regexp_eatQuantifier(state, true)) { - state.raise("Nothing to repeat"); - } - if (state.eat(0x7B /* { */)) { - state.raise("Lone quantifier brackets"); - } - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative - pp$1.regexp_alternative = function(state) { - while (state.pos < state.source.length && this.regexp_eatTerm(state)) - { } - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term - pp$1.regexp_eatTerm = function(state) { - if (this.regexp_eatAssertion(state)) { - // Handle `QuantifiableAssertion Quantifier` alternative. - // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion - // is a QuantifiableAssertion. - if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { - // Make the same message as V8. - if (state.switchU) { - state.raise("Invalid quantifier"); - } - } - return true - } - - if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { - this.regexp_eatQuantifier(state); - return true - } - - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion - pp$1.regexp_eatAssertion = function(state) { - var start = state.pos; - state.lastAssertionIsQuantifiable = false; - - // ^, $ - if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { - return true - } - - // \b \B - if (state.eat(0x5C /* \ */)) { - if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { - return true - } - state.pos = start; - } - - // Lookahead / Lookbehind - if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { - var lookbehind = false; - if (this.options.ecmaVersion >= 9) { - lookbehind = state.eat(0x3C /* < */); - } - if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { - this.regexp_disjunction(state); - if (!state.eat(0x29 /* ) */)) { - state.raise("Unterminated group"); - } - state.lastAssertionIsQuantifiable = !lookbehind; - return true - } - } - - state.pos = start; - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier - pp$1.regexp_eatQuantifier = function(state, noError) { - if ( noError === void 0 ) noError = false; - - if (this.regexp_eatQuantifierPrefix(state, noError)) { - state.eat(0x3F /* ? */); - return true - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix - pp$1.regexp_eatQuantifierPrefix = function(state, noError) { - return ( - state.eat(0x2A /* * */) || - state.eat(0x2B /* + */) || - state.eat(0x3F /* ? */) || - this.regexp_eatBracedQuantifier(state, noError) - ) - }; - pp$1.regexp_eatBracedQuantifier = function(state, noError) { - var start = state.pos; - if (state.eat(0x7B /* { */)) { - var min = 0, max = -1; - if (this.regexp_eatDecimalDigits(state)) { - min = state.lastIntValue; - if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { - max = state.lastIntValue; - } - if (state.eat(0x7D /* } */)) { - // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term - if (max !== -1 && max < min && !noError) { - state.raise("numbers out of order in {} quantifier"); - } - return true - } - } - if (state.switchU && !noError) { - state.raise("Incomplete quantifier"); - } - state.pos = start; - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-Atom - pp$1.regexp_eatAtom = function(state) { - return ( - this.regexp_eatPatternCharacters(state) || - state.eat(0x2E /* . */) || - this.regexp_eatReverseSolidusAtomEscape(state) || - this.regexp_eatCharacterClass(state) || - this.regexp_eatUncapturingGroup(state) || - this.regexp_eatCapturingGroup(state) - ) - }; - pp$1.regexp_eatReverseSolidusAtomEscape = function(state) { - var start = state.pos; - if (state.eat(0x5C /* \ */)) { - if (this.regexp_eatAtomEscape(state)) { - return true - } - state.pos = start; - } - return false - }; - pp$1.regexp_eatUncapturingGroup = function(state) { - var start = state.pos; - if (state.eat(0x28 /* ( */)) { - if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) { - this.regexp_disjunction(state); - if (state.eat(0x29 /* ) */)) { - return true - } - state.raise("Unterminated group"); - } - state.pos = start; - } - return false - }; - pp$1.regexp_eatCapturingGroup = function(state) { - if (state.eat(0x28 /* ( */)) { - if (this.options.ecmaVersion >= 9) { - this.regexp_groupSpecifier(state); - } else if (state.current() === 0x3F /* ? */) { - state.raise("Invalid group"); - } - this.regexp_disjunction(state); - if (state.eat(0x29 /* ) */)) { - state.numCapturingParens += 1; - return true - } - state.raise("Unterminated group"); - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom - pp$1.regexp_eatExtendedAtom = function(state) { - return ( - state.eat(0x2E /* . */) || - this.regexp_eatReverseSolidusAtomEscape(state) || - this.regexp_eatCharacterClass(state) || - this.regexp_eatUncapturingGroup(state) || - this.regexp_eatCapturingGroup(state) || - this.regexp_eatInvalidBracedQuantifier(state) || - this.regexp_eatExtendedPatternCharacter(state) - ) - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier - pp$1.regexp_eatInvalidBracedQuantifier = function(state) { - if (this.regexp_eatBracedQuantifier(state, true)) { - state.raise("Nothing to repeat"); - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter - pp$1.regexp_eatSyntaxCharacter = function(state) { - var ch = state.current(); - if (isSyntaxCharacter(ch)) { - state.lastIntValue = ch; - state.advance(); - return true - } - return false - }; - function isSyntaxCharacter(ch) { - return ( - ch === 0x24 /* $ */ || - ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || - ch === 0x2E /* . */ || - ch === 0x3F /* ? */ || - ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || - ch >= 0x7B /* { */ && ch <= 0x7D /* } */ - ) - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter - // But eat eager. - pp$1.regexp_eatPatternCharacters = function(state) { - var start = state.pos; - var ch = 0; - while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { - state.advance(); - } - return state.pos !== start - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter - pp$1.regexp_eatExtendedPatternCharacter = function(state) { - var ch = state.current(); - if ( - ch !== -1 && - ch !== 0x24 /* $ */ && - !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && - ch !== 0x2E /* . */ && - ch !== 0x3F /* ? */ && - ch !== 0x5B /* [ */ && - ch !== 0x5E /* ^ */ && - ch !== 0x7C /* | */ - ) { - state.advance(); - return true - } - return false - }; - - // GroupSpecifier :: - // [empty] - // `?` GroupName - pp$1.regexp_groupSpecifier = function(state) { - if (state.eat(0x3F /* ? */)) { - if (this.regexp_eatGroupName(state)) { - if (state.groupNames.indexOf(state.lastStringValue) !== -1) { - state.raise("Duplicate capture group name"); - } - state.groupNames.push(state.lastStringValue); - return - } - state.raise("Invalid group"); - } - }; - - // GroupName :: - // `<` RegExpIdentifierName `>` - // Note: this updates `state.lastStringValue` property with the eaten name. - pp$1.regexp_eatGroupName = function(state) { - state.lastStringValue = ""; - if (state.eat(0x3C /* < */)) { - if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { - return true - } - state.raise("Invalid capture group name"); - } - return false - }; - - // RegExpIdentifierName :: - // RegExpIdentifierStart - // RegExpIdentifierName RegExpIdentifierPart - // Note: this updates `state.lastStringValue` property with the eaten name. - pp$1.regexp_eatRegExpIdentifierName = function(state) { - state.lastStringValue = ""; - if (this.regexp_eatRegExpIdentifierStart(state)) { - state.lastStringValue += codePointToString(state.lastIntValue); - while (this.regexp_eatRegExpIdentifierPart(state)) { - state.lastStringValue += codePointToString(state.lastIntValue); - } - return true - } - return false - }; - - // RegExpIdentifierStart :: - // UnicodeIDStart - // `$` - // `_` - // `\` RegExpUnicodeEscapeSequence[+U] - pp$1.regexp_eatRegExpIdentifierStart = function(state) { - var start = state.pos; - var forceU = this.options.ecmaVersion >= 11; - var ch = state.current(forceU); - state.advance(forceU); - - if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { - ch = state.lastIntValue; - } - if (isRegExpIdentifierStart(ch)) { - state.lastIntValue = ch; - return true - } - - state.pos = start; - return false - }; - function isRegExpIdentifierStart(ch) { - return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ - } - - // RegExpIdentifierPart :: - // UnicodeIDContinue - // `$` - // `_` - // `\` RegExpUnicodeEscapeSequence[+U] - // - // - pp$1.regexp_eatRegExpIdentifierPart = function(state) { - var start = state.pos; - var forceU = this.options.ecmaVersion >= 11; - var ch = state.current(forceU); - state.advance(forceU); - - if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state, forceU)) { - ch = state.lastIntValue; - } - if (isRegExpIdentifierPart(ch)) { - state.lastIntValue = ch; - return true - } - - state.pos = start; - return false - }; - function isRegExpIdentifierPart(ch) { - return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* */ || ch === 0x200D /* */ - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape - pp$1.regexp_eatAtomEscape = function(state) { - if ( - this.regexp_eatBackReference(state) || - this.regexp_eatCharacterClassEscape(state) || - this.regexp_eatCharacterEscape(state) || - (state.switchN && this.regexp_eatKGroupName(state)) - ) { - return true - } - if (state.switchU) { - // Make the same message as V8. - if (state.current() === 0x63 /* c */) { - state.raise("Invalid unicode escape"); - } - state.raise("Invalid escape"); - } - return false - }; - pp$1.regexp_eatBackReference = function(state) { - var start = state.pos; - if (this.regexp_eatDecimalEscape(state)) { - var n = state.lastIntValue; - if (state.switchU) { - // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape - if (n > state.maxBackReference) { - state.maxBackReference = n; - } - return true - } - if (n <= state.numCapturingParens) { - return true - } - state.pos = start; - } - return false - }; - pp$1.regexp_eatKGroupName = function(state) { - if (state.eat(0x6B /* k */)) { - if (this.regexp_eatGroupName(state)) { - state.backReferenceNames.push(state.lastStringValue); - return true - } - state.raise("Invalid named reference"); - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape - pp$1.regexp_eatCharacterEscape = function(state) { - return ( - this.regexp_eatControlEscape(state) || - this.regexp_eatCControlLetter(state) || - this.regexp_eatZero(state) || - this.regexp_eatHexEscapeSequence(state) || - this.regexp_eatRegExpUnicodeEscapeSequence(state, false) || - (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || - this.regexp_eatIdentityEscape(state) - ) - }; - pp$1.regexp_eatCControlLetter = function(state) { - var start = state.pos; - if (state.eat(0x63 /* c */)) { - if (this.regexp_eatControlLetter(state)) { - return true - } - state.pos = start; - } - return false - }; - pp$1.regexp_eatZero = function(state) { - if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { - state.lastIntValue = 0; - state.advance(); - return true - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape - pp$1.regexp_eatControlEscape = function(state) { - var ch = state.current(); - if (ch === 0x74 /* t */) { - state.lastIntValue = 0x09; /* \t */ - state.advance(); - return true - } - if (ch === 0x6E /* n */) { - state.lastIntValue = 0x0A; /* \n */ - state.advance(); - return true - } - if (ch === 0x76 /* v */) { - state.lastIntValue = 0x0B; /* \v */ - state.advance(); - return true - } - if (ch === 0x66 /* f */) { - state.lastIntValue = 0x0C; /* \f */ - state.advance(); - return true - } - if (ch === 0x72 /* r */) { - state.lastIntValue = 0x0D; /* \r */ - state.advance(); - return true - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter - pp$1.regexp_eatControlLetter = function(state) { - var ch = state.current(); - if (isControlLetter(ch)) { - state.lastIntValue = ch % 0x20; - state.advance(); - return true - } - return false - }; - function isControlLetter(ch) { - return ( - (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || - (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) - ) - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence - pp$1.regexp_eatRegExpUnicodeEscapeSequence = function(state, forceU) { - if ( forceU === void 0 ) forceU = false; - - var start = state.pos; - var switchU = forceU || state.switchU; - - if (state.eat(0x75 /* u */)) { - if (this.regexp_eatFixedHexDigits(state, 4)) { - var lead = state.lastIntValue; - if (switchU && lead >= 0xD800 && lead <= 0xDBFF) { - var leadSurrogateEnd = state.pos; - if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { - var trail = state.lastIntValue; - if (trail >= 0xDC00 && trail <= 0xDFFF) { - state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; - return true - } - } - state.pos = leadSurrogateEnd; - state.lastIntValue = lead; - } - return true - } - if ( - switchU && - state.eat(0x7B /* { */) && - this.regexp_eatHexDigits(state) && - state.eat(0x7D /* } */) && - isValidUnicode(state.lastIntValue) - ) { - return true - } - if (switchU) { - state.raise("Invalid unicode escape"); - } - state.pos = start; - } - - return false - }; - function isValidUnicode(ch) { - return ch >= 0 && ch <= 0x10FFFF - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape - pp$1.regexp_eatIdentityEscape = function(state) { - if (state.switchU) { - if (this.regexp_eatSyntaxCharacter(state)) { - return true - } - if (state.eat(0x2F /* / */)) { - state.lastIntValue = 0x2F; /* / */ - return true - } - return false - } - - var ch = state.current(); - if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { - state.lastIntValue = ch; - state.advance(); - return true - } - - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape - pp$1.regexp_eatDecimalEscape = function(state) { - state.lastIntValue = 0; - var ch = state.current(); - if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { - do { - state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); - state.advance(); - } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) - return true - } - return false - }; - - // Return values used by character set parsing methods, needed to - // forbid negation of sets that can match strings. - var CharSetNone = 0; // Nothing parsed - var CharSetOk = 1; // Construct parsed, cannot contain strings - var CharSetString = 2; // Construct parsed, can contain strings - - // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape - pp$1.regexp_eatCharacterClassEscape = function(state) { - var ch = state.current(); - - if (isCharacterClassEscape(ch)) { - state.lastIntValue = -1; - state.advance(); - return CharSetOk - } - - var negate = false; - if ( - state.switchU && - this.options.ecmaVersion >= 9 && - ((negate = ch === 0x50 /* P */) || ch === 0x70 /* p */) - ) { - state.lastIntValue = -1; - state.advance(); - var result; - if ( - state.eat(0x7B /* { */) && - (result = this.regexp_eatUnicodePropertyValueExpression(state)) && - state.eat(0x7D /* } */) - ) { - if (negate && result === CharSetString) { state.raise("Invalid property name"); } - return result - } - state.raise("Invalid property name"); - } - - return CharSetNone - }; - - function isCharacterClassEscape(ch) { - return ( - ch === 0x64 /* d */ || - ch === 0x44 /* D */ || - ch === 0x73 /* s */ || - ch === 0x53 /* S */ || - ch === 0x77 /* w */ || - ch === 0x57 /* W */ - ) - } - - // UnicodePropertyValueExpression :: - // UnicodePropertyName `=` UnicodePropertyValue - // LoneUnicodePropertyNameOrValue - pp$1.regexp_eatUnicodePropertyValueExpression = function(state) { - var start = state.pos; - - // UnicodePropertyName `=` UnicodePropertyValue - if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { - var name = state.lastStringValue; - if (this.regexp_eatUnicodePropertyValue(state)) { - var value = state.lastStringValue; - this.regexp_validateUnicodePropertyNameAndValue(state, name, value); - return CharSetOk - } - } - state.pos = start; - - // LoneUnicodePropertyNameOrValue - if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { - var nameOrValue = state.lastStringValue; - return this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue) - } - return CharSetNone - }; - - pp$1.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { - if (!hasOwn(state.unicodeProperties.nonBinary, name)) - { state.raise("Invalid property name"); } - if (!state.unicodeProperties.nonBinary[name].test(value)) - { state.raise("Invalid property value"); } - }; - - pp$1.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { - if (state.unicodeProperties.binary.test(nameOrValue)) { return CharSetOk } - if (state.switchV && state.unicodeProperties.binaryOfStrings.test(nameOrValue)) { return CharSetString } - state.raise("Invalid property name"); - }; - - // UnicodePropertyName :: - // UnicodePropertyNameCharacters - pp$1.regexp_eatUnicodePropertyName = function(state) { - var ch = 0; - state.lastStringValue = ""; - while (isUnicodePropertyNameCharacter(ch = state.current())) { - state.lastStringValue += codePointToString(ch); - state.advance(); - } - return state.lastStringValue !== "" - }; - - function isUnicodePropertyNameCharacter(ch) { - return isControlLetter(ch) || ch === 0x5F /* _ */ - } - - // UnicodePropertyValue :: - // UnicodePropertyValueCharacters - pp$1.regexp_eatUnicodePropertyValue = function(state) { - var ch = 0; - state.lastStringValue = ""; - while (isUnicodePropertyValueCharacter(ch = state.current())) { - state.lastStringValue += codePointToString(ch); - state.advance(); - } - return state.lastStringValue !== "" - }; - function isUnicodePropertyValueCharacter(ch) { - return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) - } - - // LoneUnicodePropertyNameOrValue :: - // UnicodePropertyValueCharacters - pp$1.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { - return this.regexp_eatUnicodePropertyValue(state) - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass - pp$1.regexp_eatCharacterClass = function(state) { - if (state.eat(0x5B /* [ */)) { - var negate = state.eat(0x5E /* ^ */); - var result = this.regexp_classContents(state); - if (!state.eat(0x5D /* ] */)) - { state.raise("Unterminated character class"); } - if (negate && result === CharSetString) - { state.raise("Negated character class may contain strings"); } - return true - } - return false - }; - - // https://tc39.es/ecma262/#prod-ClassContents - // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges - pp$1.regexp_classContents = function(state) { - if (state.current() === 0x5D /* ] */) { return CharSetOk } - if (state.switchV) { return this.regexp_classSetExpression(state) } - this.regexp_nonEmptyClassRanges(state); - return CharSetOk - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges - // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash - pp$1.regexp_nonEmptyClassRanges = function(state) { - while (this.regexp_eatClassAtom(state)) { - var left = state.lastIntValue; - if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { - var right = state.lastIntValue; - if (state.switchU && (left === -1 || right === -1)) { - state.raise("Invalid character class"); - } - if (left !== -1 && right !== -1 && left > right) { - state.raise("Range out of order in character class"); - } - } - } - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom - // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash - pp$1.regexp_eatClassAtom = function(state) { - var start = state.pos; - - if (state.eat(0x5C /* \ */)) { - if (this.regexp_eatClassEscape(state)) { - return true - } - if (state.switchU) { - // Make the same message as V8. - var ch$1 = state.current(); - if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { - state.raise("Invalid class escape"); - } - state.raise("Invalid escape"); - } - state.pos = start; - } - - var ch = state.current(); - if (ch !== 0x5D /* ] */) { - state.lastIntValue = ch; - state.advance(); - return true - } - - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape - pp$1.regexp_eatClassEscape = function(state) { - var start = state.pos; - - if (state.eat(0x62 /* b */)) { - state.lastIntValue = 0x08; /* */ - return true - } - - if (state.switchU && state.eat(0x2D /* - */)) { - state.lastIntValue = 0x2D; /* - */ - return true - } - - if (!state.switchU && state.eat(0x63 /* c */)) { - if (this.regexp_eatClassControlLetter(state)) { - return true - } - state.pos = start; - } - - return ( - this.regexp_eatCharacterClassEscape(state) || - this.regexp_eatCharacterEscape(state) - ) - }; - - // https://tc39.es/ecma262/#prod-ClassSetExpression - // https://tc39.es/ecma262/#prod-ClassUnion - // https://tc39.es/ecma262/#prod-ClassIntersection - // https://tc39.es/ecma262/#prod-ClassSubtraction - pp$1.regexp_classSetExpression = function(state) { - var result = CharSetOk, subResult; - if (this.regexp_eatClassSetRange(state)) ; else if (subResult = this.regexp_eatClassSetOperand(state)) { - if (subResult === CharSetString) { result = CharSetString; } - // https://tc39.es/ecma262/#prod-ClassIntersection - var start = state.pos; - while (state.eatChars([0x26, 0x26] /* && */)) { - if ( - state.current() !== 0x26 /* & */ && - (subResult = this.regexp_eatClassSetOperand(state)) - ) { - if (subResult !== CharSetString) { result = CharSetOk; } - continue - } - state.raise("Invalid character in character class"); - } - if (start !== state.pos) { return result } - // https://tc39.es/ecma262/#prod-ClassSubtraction - while (state.eatChars([0x2D, 0x2D] /* -- */)) { - if (this.regexp_eatClassSetOperand(state)) { continue } - state.raise("Invalid character in character class"); - } - if (start !== state.pos) { return result } - } else { - state.raise("Invalid character in character class"); - } - // https://tc39.es/ecma262/#prod-ClassUnion - for (;;) { - if (this.regexp_eatClassSetRange(state)) { continue } - subResult = this.regexp_eatClassSetOperand(state); - if (!subResult) { return result } - if (subResult === CharSetString) { result = CharSetString; } - } - }; - - // https://tc39.es/ecma262/#prod-ClassSetRange - pp$1.regexp_eatClassSetRange = function(state) { - var start = state.pos; - if (this.regexp_eatClassSetCharacter(state)) { - var left = state.lastIntValue; - if (state.eat(0x2D /* - */) && this.regexp_eatClassSetCharacter(state)) { - var right = state.lastIntValue; - if (left !== -1 && right !== -1 && left > right) { - state.raise("Range out of order in character class"); - } - return true - } - state.pos = start; - } - return false - }; - - // https://tc39.es/ecma262/#prod-ClassSetOperand - pp$1.regexp_eatClassSetOperand = function(state) { - if (this.regexp_eatClassSetCharacter(state)) { return CharSetOk } - return this.regexp_eatClassStringDisjunction(state) || this.regexp_eatNestedClass(state) - }; - - // https://tc39.es/ecma262/#prod-NestedClass - pp$1.regexp_eatNestedClass = function(state) { - var start = state.pos; - if (state.eat(0x5B /* [ */)) { - var negate = state.eat(0x5E /* ^ */); - var result = this.regexp_classContents(state); - if (state.eat(0x5D /* ] */)) { - if (negate && result === CharSetString) { - state.raise("Negated character class may contain strings"); - } - return result - } - state.pos = start; - } - if (state.eat(0x5C /* \ */)) { - var result$1 = this.regexp_eatCharacterClassEscape(state); - if (result$1) { - return result$1 - } - state.pos = start; - } - return null - }; - - // https://tc39.es/ecma262/#prod-ClassStringDisjunction - pp$1.regexp_eatClassStringDisjunction = function(state) { - var start = state.pos; - if (state.eatChars([0x5C, 0x71] /* \q */)) { - if (state.eat(0x7B /* { */)) { - var result = this.regexp_classStringDisjunctionContents(state); - if (state.eat(0x7D /* } */)) { - return result - } - } else { - // Make the same message as V8. - state.raise("Invalid escape"); - } - state.pos = start; - } - return null - }; - - // https://tc39.es/ecma262/#prod-ClassStringDisjunctionContents - pp$1.regexp_classStringDisjunctionContents = function(state) { - var result = this.regexp_classString(state); - while (state.eat(0x7C /* | */)) { - if (this.regexp_classString(state) === CharSetString) { result = CharSetString; } - } - return result - }; - - // https://tc39.es/ecma262/#prod-ClassString - // https://tc39.es/ecma262/#prod-NonEmptyClassString - pp$1.regexp_classString = function(state) { - var count = 0; - while (this.regexp_eatClassSetCharacter(state)) { count++; } - return count === 1 ? CharSetOk : CharSetString - }; - - // https://tc39.es/ecma262/#prod-ClassSetCharacter - pp$1.regexp_eatClassSetCharacter = function(state) { - var start = state.pos; - if (state.eat(0x5C /* \ */)) { - if ( - this.regexp_eatCharacterEscape(state) || - this.regexp_eatClassSetReservedPunctuator(state) - ) { - return true - } - if (state.eat(0x62 /* b */)) { - state.lastIntValue = 0x08; /* */ - return true - } - state.pos = start; - return false - } - var ch = state.current(); - if (ch < 0 || ch === state.lookahead() && isClassSetReservedDoublePunctuatorCharacter(ch)) { return false } - if (isClassSetSyntaxCharacter(ch)) { return false } - state.advance(); - state.lastIntValue = ch; - return true - }; - - // https://tc39.es/ecma262/#prod-ClassSetReservedDoublePunctuator - function isClassSetReservedDoublePunctuatorCharacter(ch) { - return ( - ch === 0x21 /* ! */ || - ch >= 0x23 /* # */ && ch <= 0x26 /* & */ || - ch >= 0x2A /* * */ && ch <= 0x2C /* , */ || - ch === 0x2E /* . */ || - ch >= 0x3A /* : */ && ch <= 0x40 /* @ */ || - ch === 0x5E /* ^ */ || - ch === 0x60 /* ` */ || - ch === 0x7E /* ~ */ - ) - } - - // https://tc39.es/ecma262/#prod-ClassSetSyntaxCharacter - function isClassSetSyntaxCharacter(ch) { - return ( - ch === 0x28 /* ( */ || - ch === 0x29 /* ) */ || - ch === 0x2D /* - */ || - ch === 0x2F /* / */ || - ch >= 0x5B /* [ */ && ch <= 0x5D /* ] */ || - ch >= 0x7B /* { */ && ch <= 0x7D /* } */ - ) - } - - // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator - pp$1.regexp_eatClassSetReservedPunctuator = function(state) { - var ch = state.current(); - if (isClassSetReservedPunctuator(ch)) { - state.lastIntValue = ch; - state.advance(); - return true - } - return false - }; - - // https://tc39.es/ecma262/#prod-ClassSetReservedPunctuator - function isClassSetReservedPunctuator(ch) { - return ( - ch === 0x21 /* ! */ || - ch === 0x23 /* # */ || - ch === 0x25 /* % */ || - ch === 0x26 /* & */ || - ch === 0x2C /* , */ || - ch === 0x2D /* - */ || - ch >= 0x3A /* : */ && ch <= 0x3E /* > */ || - ch === 0x40 /* @ */ || - ch === 0x60 /* ` */ || - ch === 0x7E /* ~ */ - ) - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter - pp$1.regexp_eatClassControlLetter = function(state) { - var ch = state.current(); - if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { - state.lastIntValue = ch % 0x20; - state.advance(); - return true - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence - pp$1.regexp_eatHexEscapeSequence = function(state) { - var start = state.pos; - if (state.eat(0x78 /* x */)) { - if (this.regexp_eatFixedHexDigits(state, 2)) { - return true - } - if (state.switchU) { - state.raise("Invalid escape"); - } - state.pos = start; - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits - pp$1.regexp_eatDecimalDigits = function(state) { - var start = state.pos; - var ch = 0; - state.lastIntValue = 0; - while (isDecimalDigit(ch = state.current())) { - state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); - state.advance(); - } - return state.pos !== start - }; - function isDecimalDigit(ch) { - return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits - pp$1.regexp_eatHexDigits = function(state) { - var start = state.pos; - var ch = 0; - state.lastIntValue = 0; - while (isHexDigit(ch = state.current())) { - state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); - state.advance(); - } - return state.pos !== start - }; - function isHexDigit(ch) { - return ( - (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || - (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || - (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) - ) - } - function hexToInt(ch) { - if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { - return 10 + (ch - 0x41 /* A */) - } - if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { - return 10 + (ch - 0x61 /* a */) - } - return ch - 0x30 /* 0 */ - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence - // Allows only 0-377(octal) i.e. 0-255(decimal). - pp$1.regexp_eatLegacyOctalEscapeSequence = function(state) { - if (this.regexp_eatOctalDigit(state)) { - var n1 = state.lastIntValue; - if (this.regexp_eatOctalDigit(state)) { - var n2 = state.lastIntValue; - if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { - state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; - } else { - state.lastIntValue = n1 * 8 + n2; - } - } else { - state.lastIntValue = n1; - } - return true - } - return false - }; - - // https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit - pp$1.regexp_eatOctalDigit = function(state) { - var ch = state.current(); - if (isOctalDigit(ch)) { - state.lastIntValue = ch - 0x30; /* 0 */ - state.advance(); - return true - } - state.lastIntValue = 0; - return false - }; - function isOctalDigit(ch) { - return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ - } - - // https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits - // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit - // And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence - pp$1.regexp_eatFixedHexDigits = function(state, length) { - var start = state.pos; - state.lastIntValue = 0; - for (var i = 0; i < length; ++i) { - var ch = state.current(); - if (!isHexDigit(ch)) { - state.pos = start; - return false - } - state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); - state.advance(); - } - return true - }; - - // Object type used to represent tokens. Note that normally, tokens - // simply exist as properties on the parser object. This is only - // used for the onToken callback and the external tokenizer. - - var Token = function Token(p) { - this.type = p.type; - this.value = p.value; - this.start = p.start; - this.end = p.end; - if (p.options.locations) - { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } - if (p.options.ranges) - { this.range = [p.start, p.end]; } - }; - - // ## Tokenizer - - var pp = Parser.prototype; - - // Move to the next token - - pp.next = function(ignoreEscapeSequenceInKeyword) { - if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc) - { this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword); } - if (this.options.onToken) - { this.options.onToken(new Token(this)); } - - this.lastTokEnd = this.end; - this.lastTokStart = this.start; - this.lastTokEndLoc = this.endLoc; - this.lastTokStartLoc = this.startLoc; - this.nextToken(); - }; - - pp.getToken = function() { - this.next(); - return new Token(this) - }; - - // If we're in an ES6 environment, make parsers iterable - if (typeof Symbol !== "undefined") - { pp[Symbol.iterator] = function() { - var this$1$1 = this; - - return { - next: function () { - var token = this$1$1.getToken(); - return { - done: token.type === types$1.eof, - value: token - } - } - } - }; } - - // Toggle strict mode. Re-reads the next number or string to please - // pedantic tests (`"use strict"; 010;` should fail). - - // Read a single token, updating the parser object's token-related - // properties. - - pp.nextToken = function() { - var curContext = this.curContext(); - if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } - - this.start = this.pos; - if (this.options.locations) { this.startLoc = this.curPosition(); } - if (this.pos >= this.input.length) { return this.finishToken(types$1.eof) } - - if (curContext.override) { return curContext.override(this) } - else { this.readToken(this.fullCharCodeAtPos()); } - }; - - pp.readToken = function(code) { - // Identifier or keyword. '\uXXXX' sequences are allowed in - // identifiers, so '\' also dispatches to that. - if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) - { return this.readWord() } - - return this.getTokenFromCode(code) - }; - - pp.fullCharCodeAtPos = function() { - var code = this.input.charCodeAt(this.pos); - if (code <= 0xd7ff || code >= 0xdc00) { return code } - var next = this.input.charCodeAt(this.pos + 1); - return next <= 0xdbff || next >= 0xe000 ? code : (code << 10) + next - 0x35fdc00 - }; - - pp.skipBlockComment = function() { - var startLoc = this.options.onComment && this.curPosition(); - var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); - if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } - this.pos = end + 2; - if (this.options.locations) { - for (var nextBreak = (void 0), pos = start; (nextBreak = nextLineBreak(this.input, pos, this.pos)) > -1;) { - ++this.curLine; - pos = this.lineStart = nextBreak; - } - } - if (this.options.onComment) - { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, - startLoc, this.curPosition()); } - }; - - pp.skipLineComment = function(startSkip) { - var start = this.pos; - var startLoc = this.options.onComment && this.curPosition(); - var ch = this.input.charCodeAt(this.pos += startSkip); - while (this.pos < this.input.length && !isNewLine(ch)) { - ch = this.input.charCodeAt(++this.pos); - } - if (this.options.onComment) - { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, - startLoc, this.curPosition()); } - }; - - // Called at the start of the parse and after every token. Skips - // whitespace and comments, and. - - pp.skipSpace = function() { - loop: while (this.pos < this.input.length) { - var ch = this.input.charCodeAt(this.pos); - switch (ch) { - case 32: case 160: // ' ' - ++this.pos; - break - case 13: - if (this.input.charCodeAt(this.pos + 1) === 10) { - ++this.pos; - } - case 10: case 8232: case 8233: - ++this.pos; - if (this.options.locations) { - ++this.curLine; - this.lineStart = this.pos; - } - break - case 47: // '/' - switch (this.input.charCodeAt(this.pos + 1)) { - case 42: // '*' - this.skipBlockComment(); - break - case 47: - this.skipLineComment(2); - break - default: - break loop - } - break - default: - if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { - ++this.pos; - } else { - break loop - } - } - } - }; - - // Called at the end of every token. Sets `end`, `val`, and - // maintains `context` and `exprAllowed`, and skips the space after - // the token, so that the next one's `start` will point at the - // right position. - - pp.finishToken = function(type, val) { - this.end = this.pos; - if (this.options.locations) { this.endLoc = this.curPosition(); } - var prevType = this.type; - this.type = type; - this.value = val; - - this.updateContext(prevType); - }; - - // ### Token reading - - // This is the function that is called to fetch the next token. It - // is somewhat obscure, because it works in character codes rather - // than characters, and because operator parsing has been inlined - // into it. - // - // All in the name of speed. - // - pp.readToken_dot = function() { - var next = this.input.charCodeAt(this.pos + 1); - if (next >= 48 && next <= 57) { return this.readNumber(true) } - var next2 = this.input.charCodeAt(this.pos + 2); - if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' - this.pos += 3; - return this.finishToken(types$1.ellipsis) - } else { - ++this.pos; - return this.finishToken(types$1.dot) - } - }; - - pp.readToken_slash = function() { // '/' - var next = this.input.charCodeAt(this.pos + 1); - if (this.exprAllowed) { ++this.pos; return this.readRegexp() } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.slash, 1) - }; - - pp.readToken_mult_modulo_exp = function(code) { // '%*' - var next = this.input.charCodeAt(this.pos + 1); - var size = 1; - var tokentype = code === 42 ? types$1.star : types$1.modulo; - - // exponentiation operator ** and **= - if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { - ++size; - tokentype = types$1.starstar; - next = this.input.charCodeAt(this.pos + 2); - } - - if (next === 61) { return this.finishOp(types$1.assign, size + 1) } - return this.finishOp(tokentype, size) - }; - - pp.readToken_pipe_amp = function(code) { // '|&' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) { - if (this.options.ecmaVersion >= 12) { - var next2 = this.input.charCodeAt(this.pos + 2); - if (next2 === 61) { return this.finishOp(types$1.assign, 3) } - } - return this.finishOp(code === 124 ? types$1.logicalOR : types$1.logicalAND, 2) - } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(code === 124 ? types$1.bitwiseOR : types$1.bitwiseAND, 1) - }; - - pp.readToken_caret = function() { // '^' - var next = this.input.charCodeAt(this.pos + 1); - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.bitwiseXOR, 1) - }; - - pp.readToken_plus_min = function(code) { // '+-' - var next = this.input.charCodeAt(this.pos + 1); - if (next === code) { - if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && - (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { - // A `-->` line comment - this.skipLineComment(3); - this.skipSpace(); - return this.nextToken() - } - return this.finishOp(types$1.incDec, 2) - } - if (next === 61) { return this.finishOp(types$1.assign, 2) } - return this.finishOp(types$1.plusMin, 1) - }; - - pp.readToken_lt_gt = function(code) { // '<>' - var next = this.input.charCodeAt(this.pos + 1); - var size = 1; - if (next === code) { - size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; - if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types$1.assign, size + 1) } - return this.finishOp(types$1.bitShift, size) - } - if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && - this.input.charCodeAt(this.pos + 3) === 45) { - // `'}};function getCommentPattern(languages,magicCommentDirectives){// To be more reliable, the opening and closing comment must match -const commentPattern=languages.map(lang=>{const{start,end}=commentPatterns[lang];return`(?:${start}\\s*(${magicCommentDirectives.flatMap(d=>[d.line,d.block?.start,d.block?.end].filter(Boolean)).join('|')})\\s*${end})`;}).join('|');// White space is allowed, but otherwise it should be on it's own line -return new RegExp(`^\\s*(?:${commentPattern})\\s*$`);}/** - * Select comment styles based on language - */function getAllMagicCommentDirectiveStyles(lang,magicCommentDirectives){switch(lang){case'js':case'javascript':case'ts':case'typescript':return getCommentPattern(['js','jsBlock'],magicCommentDirectives);case'jsx':case'tsx':return getCommentPattern(['js','jsBlock','jsx'],magicCommentDirectives);case'html':return getCommentPattern(['js','jsBlock','html'],magicCommentDirectives);case'python':case'py':case'bash':return getCommentPattern(['bash'],magicCommentDirectives);case'markdown':case'md':// Text uses HTML, front matter uses bash -return getCommentPattern(['html','jsx','bash'],magicCommentDirectives);default:// All comment types -return getCommentPattern(Object.keys(commentPatterns),magicCommentDirectives);}}function parseCodeBlockTitle(metastring){return metastring?.match(codeBlockTitleRegex)?.groups.title??'';}function containsLineNumbers(metastring){return Boolean(metastring?.includes('showLineNumbers'));}/** - * Gets the language name from the class name (set by MDX). - * e.g. `"language-javascript"` => `"javascript"`. - * Returns undefined if there is no language class name. - */function parseLanguage(className){const languageClassName=className.split(' ').find(str=>str.startsWith('language-'));return languageClassName?.replace(/language-/,'');}/** - * Parses the code content, strips away any magic comments, and returns the - * clean content and the highlighted lines marked by the comments or metastring. - * - * If the metastring contains a range, the `content` will be returned as-is - * without any parsing. The returned `lineClassNames` will be a map from that - * number range to the first magic comment config entry (which _should_ be for - * line highlight directives.) - * - * @param content The raw code with magic comments. Trailing newline will be - * trimmed upfront. - * @param options Options for parsing behavior. - */function parseLines(content,options){let code=content.replace(/\n$/,'');const{language,magicComments,metastring}=options;// Highlighted lines specified in props: don't parse the content -if(metastring&&metastringLinesRangeRegex.test(metastring)){const linesRange=metastring.match(metastringLinesRangeRegex).groups.range;if(magicComments.length===0){throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${metastring}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);}const metastringRangeClassName=magicComments[0].className;const lines=parse_numeric_range_default()(linesRange).filter(n=>n>0).map(n=>[n-1,[metastringRangeClassName]]);return{lineClassNames:Object.fromEntries(lines),code};}if(language===undefined){return{lineClassNames:{},code};}const directiveRegex=getAllMagicCommentDirectiveStyles(language,magicComments);// Go through line by line -const lines=code.split('\n');const blocks=Object.fromEntries(magicComments.map(d=>[d.className,{start:0,range:''}]));const lineToClassName=Object.fromEntries(magicComments.filter(d=>d.line).map(({className,line})=>[line,className]));const blockStartToClassName=Object.fromEntries(magicComments.filter(d=>d.block).map(({className,block})=>[block.start,className]));const blockEndToClassName=Object.fromEntries(magicComments.filter(d=>d.block).map(({className,block})=>[block.end,className]));for(let lineNumber=0;lineNumberitem!==undefined);if(lineToClassName[directive]){blocks[lineToClassName[directive]].range+=`${lineNumber},`;}else if(blockStartToClassName[directive]){blocks[blockStartToClassName[directive]].start=lineNumber;}else if(blockEndToClassName[directive]){blocks[blockEndToClassName[directive]].range+=`${blocks[blockEndToClassName[directive]].start}-${lineNumber-1},`;}lines.splice(lineNumber,1);}code=lines.join('\n');const lineClassNames={};Object.entries(blocks).forEach(([className,{range}])=>{parse_numeric_range_default()(range).forEach(l=>{lineClassNames[l]??=[];lineClassNames[l].push(className);});});return{lineClassNames,code};}function getPrismCssVariables(prismTheme){const mapping={color:'--prism-color',backgroundColor:'--prism-background-color'};const properties={};Object.entries(prismTheme.plain).forEach(([key,value])=>{const varName=mapping[key];if(varName&&typeof value==='string'){properties[varName]=value;}});return properties;} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Container/styles.module.css -var styles_module = __webpack_require__(1633); -var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Container/index.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 CodeBlockContainer({as:As,...props}){const prismTheme=usePrismTheme();const prismCssVariables=getPrismCssVariables(prismTheme);return/*#__PURE__*/react.createElement(As// Polymorphic components are hard to type, without `oneOf` generics -,(0,esm_extends/* default */.Z)({},props,{style:prismCssVariables,className:(0,clsx_m/* default */.Z)(props.className,(styles_module_default()).codeBlockContainer,ThemeClassNames/* ThemeClassNames */.k.common.codeBlock)}));} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Content/styles.module.css -var Content_styles_module = __webpack_require__(9130); -var Content_styles_module_default = /*#__PURE__*/__webpack_require__.n(Content_styles_module); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Content/Element.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. - *///
 tags in markdown map to CodeBlocks. They may contain JSX children. When
-// the children is not a simple string, we just return a styled block without
-// actually highlighting.
-function CodeBlockJSX({children,className}){return/*#__PURE__*/react.createElement(CodeBlockContainer,{as:"pre",tabIndex:0,className:(0,clsx_m/* default */.Z)((Content_styles_module_default()).codeBlockStandalone,'thin-scrollbar',className)},/*#__PURE__*/react.createElement("code",{className:(Content_styles_module_default()).codeBlockLines},children));}
-// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js
-var reactUtils = __webpack_require__(902);
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useMutationObserver.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.
- */const DefaultOptions={attributes:true,characterData:true,childList:true,subtree:true};function useMutationObserver(target,callback,options=DefaultOptions){const stableCallback=(0,reactUtils/* useEvent */.zX)(callback);// MutationObserver options are not nested much
-// so this should be to memo options in 99%
-// TODO handle options.attributeFilter array
-const stableOptions=(0,reactUtils/* useShallowMemoObject */.Ql)(options);(0,react.useEffect)(()=>{const observer=new MutationObserver(stableCallback);if(target){observer.observe(target,stableOptions);}return()=>observer.disconnect();},[target,stableCallback,stableOptions]);}
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useCodeWordWrap.js
-// Callback fires when the "hidden" attribute of a tabpanel changes
-// See https://github.com/facebook/docusaurus/pull/7485
-function useTabBecameVisibleCallback(codeBlockRef,callback){const[hiddenTabElement,setHiddenTabElement]=(0,react.useState)();const updateHiddenTabElement=(0,react.useCallback)(()=>{// No need to observe non-hidden tabs
-// + we want to force a re-render when a tab becomes visible
-setHiddenTabElement(codeBlockRef.current?.closest('[role=tabpanel][hidden]'));},[codeBlockRef,setHiddenTabElement]);(0,react.useEffect)(()=>{updateHiddenTabElement();},[updateHiddenTabElement]);useMutationObserver(hiddenTabElement,mutations=>{mutations.forEach(mutation=>{if(mutation.type==='attributes'&&mutation.attributeName==='hidden'){callback();updateHiddenTabElement();}});},{attributes:true,characterData:false,childList:false,subtree:false});}function useCodeWordWrap(){const[isEnabled,setIsEnabled]=(0,react.useState)(false);const[isCodeScrollable,setIsCodeScrollable]=(0,react.useState)(false);const codeBlockRef=(0,react.useRef)(null);const toggle=(0,react.useCallback)(()=>{const codeElement=codeBlockRef.current.querySelector('code');if(isEnabled){codeElement.removeAttribute('style');}else{codeElement.style.whiteSpace='pre-wrap';// When code wrap is enabled, we want to avoid a scrollbar in any case
-// Ensure that very very long words/strings/tokens still wrap
-codeElement.style.overflowWrap='anywhere';}setIsEnabled(value=>!value);},[codeBlockRef,isEnabled]);const updateCodeIsScrollable=(0,react.useCallback)(()=>{const{scrollWidth,clientWidth}=codeBlockRef.current;const isScrollable=scrollWidth>clientWidth||codeBlockRef.current.querySelector('code').hasAttribute('style');setIsCodeScrollable(isScrollable);},[codeBlockRef]);useTabBecameVisibleCallback(codeBlockRef,updateCodeIsScrollable);(0,react.useEffect)(()=>{updateCodeIsScrollable();},[isEnabled,updateCodeIsScrollable]);(0,react.useEffect)(()=>{window.addEventListener('resize',updateCodeIsScrollable,{passive:true});return()=>{window.removeEventListener('resize',updateCodeIsScrollable);};},[updateCodeIsScrollable]);return{codeBlockRef,isEnabled,isCodeScrollable,toggle};}
-// EXTERNAL MODULE: ./node_modules/prism-react-renderer/prism/index.js
-var prism = __webpack_require__(7410);
-;// CONCATENATED MODULE: ./node_modules/prism-react-renderer/themes/duotoneDark/index.js
-// Duotone Dark
-// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)
-// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css)
-// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)
-var theme = {
-  plain: {
-    backgroundColor: "#2a2734",
-    color: "#9a86fd"
-  },
-  styles: [{
-    types: ["comment", "prolog", "doctype", "cdata", "punctuation"],
-    style: {
-      color: "#6c6783"
-    }
-  }, {
-    types: ["namespace"],
-    style: {
-      opacity: 0.7
-    }
-  }, {
-    types: ["tag", "operator", "number"],
-    style: {
-      color: "#e09142"
-    }
-  }, {
-    types: ["property", "function"],
-    style: {
-      color: "#9a86fd"
-    }
-  }, {
-    types: ["tag-id", "selector", "atrule-id"],
-    style: {
-      color: "#eeebff"
-    }
-  }, {
-    types: ["attr-name"],
-    style: {
-      color: "#c4b9fe"
-    }
-  }, {
-    types: ["boolean", "string", "entity", "url", "attr-value", "keyword", "control", "directive", "unit", "statement", "regex", "atrule", "placeholder", "variable"],
-    style: {
-      color: "#ffcc99"
-    }
-  }, {
-    types: ["deleted"],
-    style: {
-      textDecorationLine: "line-through"
-    }
-  }, {
-    types: ["inserted"],
-    style: {
-      textDecorationLine: "underline"
-    }
-  }, {
-    types: ["italic"],
-    style: {
-      fontStyle: "italic"
-    }
-  }, {
-    types: ["important", "bold"],
-    style: {
-      fontWeight: "bold"
-    }
-  }, {
-    types: ["important"],
-    style: {
-      color: "#c4b9fe"
-    }
-  }]
-};
-
-/* harmony default export */ const duotoneDark = (theme);
-
-;// CONCATENATED MODULE: ./node_modules/prism-react-renderer/dist/index.js
-
-
-
-
-
-var defaultProps = {
-  // $FlowFixMe
-  Prism: prism/* default */.Z,
-  theme: duotoneDark
-};
-
-function _defineProperty(obj, key, value) {
-  if (key in obj) {
-    Object.defineProperty(obj, key, {
-      value: value,
-      enumerable: true,
-      configurable: true,
-      writable: true
-    });
-  } else {
-    obj[key] = value;
-  }
-
-  return obj;
-}
-
-function _extends() {
-  _extends = Object.assign || function (target) {
-    for (var i = 1; i < arguments.length; i++) {
-      var source = arguments[i];
-
-      for (var key in source) {
-        if (Object.prototype.hasOwnProperty.call(source, key)) {
-          target[key] = source[key];
-        }
-      }
-    }
-
-    return target;
-  };
-
-  return _extends.apply(this, arguments);
-}
-
-var newlineRe = /\r\n|\r|\n/; // Empty lines need to contain a single empty token, denoted with { empty: true }
-
-var normalizeEmptyLines = function (line) {
-  if (line.length === 0) {
-    line.push({
-      types: ["plain"],
-      content: "\n",
-      empty: true
-    });
-  } else if (line.length === 1 && line[0].content === "") {
-    line[0].content = "\n";
-    line[0].empty = true;
-  }
-};
-
-var appendTypes = function (types, add) {
-  var typesSize = types.length;
-
-  if (typesSize > 0 && types[typesSize - 1] === add) {
-    return types;
-  }
-
-  return types.concat(add);
-}; // Takes an array of Prism's tokens and groups them by line, turning plain
-// strings into tokens as well. Tokens can become recursive in some cases,
-// which means that their types are concatenated. Plain-string tokens however
-// are always of type "plain".
-// This is not recursive to avoid exceeding the call-stack limit, since it's unclear
-// how nested Prism's tokens can become
-
-
-var normalizeTokens = function (tokens) {
-  var typeArrStack = [[]];
-  var tokenArrStack = [tokens];
-  var tokenArrIndexStack = [0];
-  var tokenArrSizeStack = [tokens.length];
-  var i = 0;
-  var stackIndex = 0;
-  var currentLine = [];
-  var acc = [currentLine];
-
-  while (stackIndex > -1) {
-    while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {
-      var content = void 0;
-      var types = typeArrStack[stackIndex];
-      var tokenArr = tokenArrStack[stackIndex];
-      var token = tokenArr[i]; // Determine content and append type to types if necessary
-
-      if (typeof token === "string") {
-        types = stackIndex > 0 ? types : ["plain"];
-        content = token;
-      } else {
-        types = appendTypes(types, token.type);
-
-        if (token.alias) {
-          types = appendTypes(types, token.alias);
-        }
-
-        content = token.content;
-      } // If token.content is an array, increase the stack depth and repeat this while-loop
-
-
-      if (typeof content !== "string") {
-        stackIndex++;
-        typeArrStack.push(types);
-        tokenArrStack.push(content);
-        tokenArrIndexStack.push(0);
-        tokenArrSizeStack.push(content.length);
-        continue;
-      } // Split by newlines
-
-
-      var splitByNewlines = content.split(newlineRe);
-      var newlineCount = splitByNewlines.length;
-      currentLine.push({
-        types: types,
-        content: splitByNewlines[0]
-      }); // Create a new line for each string on a new line
-
-      for (var i$1 = 1; i$1 < newlineCount; i$1++) {
-        normalizeEmptyLines(currentLine);
-        acc.push(currentLine = []);
-        currentLine.push({
-          types: types,
-          content: splitByNewlines[i$1]
-        });
-      }
-    } // Decreate the stack depth
-
-
-    stackIndex--;
-    typeArrStack.pop();
-    tokenArrStack.pop();
-    tokenArrIndexStack.pop();
-    tokenArrSizeStack.pop();
-  }
-
-  normalizeEmptyLines(currentLine);
-  return acc;
-};
-
-var themeToDict = function (theme, language) {
-  var plain = theme.plain; // $FlowFixMe
-
-  var base = Object.create(null);
-  var themeDict = theme.styles.reduce(function (acc, themeEntry) {
-    var languages = themeEntry.languages;
-    var style = themeEntry.style;
-
-    if (languages && !languages.includes(language)) {
-      return acc;
-    }
-
-    themeEntry.types.forEach(function (type) {
-      // $FlowFixMe
-      var accStyle = _extends({}, acc[type], style);
-
-      acc[type] = accStyle;
-    });
-    return acc;
-  }, base); // $FlowFixMe
-
-  themeDict.root = plain; // $FlowFixMe
-
-  themeDict.plain = _extends({}, plain, {
-    backgroundColor: null
-  });
-  return themeDict;
-};
-
-function objectWithoutProperties(obj, exclude) {
-  var target = {};
-
-  for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];
-
-  return target;
-}
-
-var Highlight = /*@__PURE__*/function (Component) {
-  function Highlight() {
-    var this$1 = this;
-    var args = [],
-        len = arguments.length;
-
-    while (len--) args[len] = arguments[len];
-
-    Component.apply(this, args);
-
-    _defineProperty(this, "getThemeDict", function (props) {
-      if (this$1.themeDict !== undefined && props.theme === this$1.prevTheme && props.language === this$1.prevLanguage) {
-        return this$1.themeDict;
-      }
-
-      this$1.prevTheme = props.theme;
-      this$1.prevLanguage = props.language;
-      var themeDict = props.theme ? themeToDict(props.theme, props.language) : undefined;
-      return this$1.themeDict = themeDict;
-    });
-
-    _defineProperty(this, "getLineProps", function (ref) {
-      var key = ref.key;
-      var className = ref.className;
-      var style = ref.style;
-      var rest$1 = objectWithoutProperties(ref, ["key", "className", "style", "line"]);
-      var rest = rest$1;
-
-      var output = _extends({}, rest, {
-        className: "token-line",
-        style: undefined,
-        key: undefined
-      });
-
-      var themeDict = this$1.getThemeDict(this$1.props);
-
-      if (themeDict !== undefined) {
-        output.style = themeDict.plain;
-      }
-
-      if (style !== undefined) {
-        output.style = output.style !== undefined ? _extends({}, output.style, style) : style;
-      }
-
-      if (key !== undefined) {
-        output.key = key;
-      }
-
-      if (className) {
-        output.className += " " + className;
-      }
-
-      return output;
-    });
-
-    _defineProperty(this, "getStyleForToken", function (ref) {
-      var types = ref.types;
-      var empty = ref.empty;
-      var typesSize = types.length;
-      var themeDict = this$1.getThemeDict(this$1.props);
-
-      if (themeDict === undefined) {
-        return undefined;
-      } else if (typesSize === 1 && types[0] === "plain") {
-        return empty ? {
-          display: "inline-block"
-        } : undefined;
-      } else if (typesSize === 1 && !empty) {
-        return themeDict[types[0]];
-      }
-
-      var baseStyle = empty ? {
-        display: "inline-block"
-      } : {}; // $FlowFixMe
-
-      var typeStyles = types.map(function (type) {
-        return themeDict[type];
-      });
-      return Object.assign.apply(Object, [baseStyle].concat(typeStyles));
-    });
-
-    _defineProperty(this, "getTokenProps", function (ref) {
-      var key = ref.key;
-      var className = ref.className;
-      var style = ref.style;
-      var token = ref.token;
-      var rest$1 = objectWithoutProperties(ref, ["key", "className", "style", "token"]);
-      var rest = rest$1;
-
-      var output = _extends({}, rest, {
-        className: "token " + token.types.join(" "),
-        children: token.content,
-        style: this$1.getStyleForToken(token),
-        key: undefined
-      });
-
-      if (style !== undefined) {
-        output.style = output.style !== undefined ? _extends({}, output.style, style) : style;
-      }
-
-      if (key !== undefined) {
-        output.key = key;
-      }
-
-      if (className) {
-        output.className += " " + className;
-      }
-
-      return output;
-    });
-
-    _defineProperty(this, "tokenize", function (Prism, code, grammar, language) {
-      var env = {
-        code: code,
-        grammar: grammar,
-        language: language,
-        tokens: []
-      };
-      Prism.hooks.run("before-tokenize", env);
-      var tokens = env.tokens = Prism.tokenize(env.code, env.grammar, env.language);
-      Prism.hooks.run("after-tokenize", env);
-      return tokens;
-    });
-  }
-
-  if (Component) Highlight.__proto__ = Component;
-  Highlight.prototype = Object.create(Component && Component.prototype);
-  Highlight.prototype.constructor = Highlight;
-
-  Highlight.prototype.render = function render() {
-    var ref = this.props;
-    var Prism = ref.Prism;
-    var language = ref.language;
-    var code = ref.code;
-    var children = ref.children;
-    var themeDict = this.getThemeDict(this.props);
-    var grammar = Prism.languages[language];
-    var mixedTokens = grammar !== undefined ? this.tokenize(Prism, code, grammar, language) : [code];
-    var tokens = normalizeTokens(mixedTokens);
-    return children({
-      tokens: tokens,
-      className: "prism-code language-" + language,
-      style: themeDict !== undefined ? themeDict.root : {},
-      getLineProps: this.getLineProps,
-      getTokenProps: this.getTokenProps
-    });
-  };
-
-  return Highlight;
-}(react.Component);
-
-/* harmony default export */ const dist = (Highlight);
-
-
-// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Line/styles.module.css
-var Line_styles_module = __webpack_require__(5576);
-var Line_styles_module_default = /*#__PURE__*/__webpack_require__.n(Line_styles_module);
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Line/index.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 CodeBlockLine({line,classNames,showLineNumbers,getLineProps,getTokenProps}){if(line.length===1&&line[0].content==='\n'){line[0].content='';}const lineProps=getLineProps({line,className:(0,clsx_m/* default */.Z)(classNames,showLineNumbers&&(Line_styles_module_default()).codeLine)});const lineTokens=line.map((token,key)=>/*#__PURE__*/react.createElement("span",(0,esm_extends/* default */.Z)({key:key},getTokenProps({token,key}))));return/*#__PURE__*/react.createElement("span",lineProps,showLineNumbers?/*#__PURE__*/react.createElement(react.Fragment,null,/*#__PURE__*/react.createElement("span",{className:(Line_styles_module_default()).codeLineNumber}),/*#__PURE__*/react.createElement("span",{className:(Line_styles_module_default()).codeLineContent},lineTokens)):lineTokens,/*#__PURE__*/react.createElement("br",null));}
-;// CONCATENATED MODULE: ./node_modules/copy-text-to-clipboard/index.js
-function copyTextToClipboard(text,{target=document.body}={}){if(typeof text!=='string'){throw new TypeError(`Expected parameter \`text\` to be a \`string\`, got \`${typeof text}\`.`);}const element=document.createElement('textarea');const previouslyFocusedElement=document.activeElement;element.value=text;// Prevent keyboard from showing on mobile
-element.setAttribute('readonly','');element.style.contain='strict';element.style.position='absolute';element.style.left='-9999px';element.style.fontSize='12pt';// Prevent zooming on iOS
-const selection=document.getSelection();const originalRange=selection.rangeCount>0&&selection.getRangeAt(0);target.append(element);element.select();// Explicit selection workaround for iOS
-element.selectionStart=0;element.selectionEnd=text.length;let isSuccess=false;try{isSuccess=document.execCommand('copy');}catch{}element.remove();if(originalRange){selection.removeAllRanges();selection.addRange(originalRange);}// Get the focus back on the previously focused element, if any
-if(previouslyFocusedElement){previouslyFocusedElement.focus();}return isSuccess;}
-// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Translate.js + 1 modules
-var Translate = __webpack_require__(5999);
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Copy/index.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 IconCopy(props){return/*#__PURE__*/react.createElement("svg",(0,esm_extends/* default */.Z)({viewBox:"0 0 24 24"},props),/*#__PURE__*/react.createElement("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"}));}
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/Success/index.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 IconSuccess(props){return/*#__PURE__*/react.createElement("svg",(0,esm_extends/* default */.Z)({viewBox:"0 0 24 24"},props),/*#__PURE__*/react.createElement("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"}));}
-// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/CopyButton/styles.module.css
-var CopyButton_styles_module = __webpack_require__(8906);
-var CopyButton_styles_module_default = /*#__PURE__*/__webpack_require__.n(CopyButton_styles_module);
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/CopyButton/index.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.
- */// @ts-expect-error: TODO, we need to make theme-classic have type: module
-function CopyButton({code,className}){const[isCopied,setIsCopied]=(0,react.useState)(false);const copyTimeout=(0,react.useRef)(undefined);const handleCopyCode=(0,react.useCallback)(()=>{copyTextToClipboard(code);setIsCopied(true);copyTimeout.current=window.setTimeout(()=>{setIsCopied(false);},1000);},[code]);(0,react.useEffect)(()=>()=>window.clearTimeout(copyTimeout.current),[]);return/*#__PURE__*/react.createElement("button",{type:"button","aria-label":isCopied?(0,Translate/* translate */.I)({id:'theme.CodeBlock.copied',message:'Copied',description:'The copied button label on code blocks'}):(0,Translate/* translate */.I)({id:'theme.CodeBlock.copyButtonAriaLabel',message:'Copy code to clipboard',description:'The ARIA label for copy code blocks button'}),title:(0,Translate/* translate */.I)({id:'theme.CodeBlock.copy',message:'Copy',description:'The copy button label on code blocks'}),className:(0,clsx_m/* default */.Z)('clean-btn',className,(CopyButton_styles_module_default()).copyButton,isCopied&&(CopyButton_styles_module_default()).copyButtonCopied),onClick:handleCopyCode},/*#__PURE__*/react.createElement("span",{className:(CopyButton_styles_module_default()).copyButtonIcons,"aria-hidden":"true"},/*#__PURE__*/react.createElement(IconCopy,{className:(CopyButton_styles_module_default()).copyButtonIcon}),/*#__PURE__*/react.createElement(IconSuccess,{className:(CopyButton_styles_module_default()).copyButtonSuccessIcon})));}
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Icon/WordWrap/index.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 IconWordWrap(props){return/*#__PURE__*/react.createElement("svg",(0,esm_extends/* default */.Z)({viewBox:"0 0 24 24"},props),/*#__PURE__*/react.createElement("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"}));}
-// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/WordWrapButton/styles.module.css
-var WordWrapButton_styles_module = __webpack_require__(5647);
-var WordWrapButton_styles_module_default = /*#__PURE__*/__webpack_require__.n(WordWrapButton_styles_module);
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/WordWrapButton/index.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 WordWrapButton({className,onClick,isEnabled}){const title=(0,Translate/* translate */.I)({id:'theme.CodeBlock.wordWrapToggle',message:'Toggle word wrap',description:'The title attribute for toggle word wrapping button of code block lines'});return/*#__PURE__*/react.createElement("button",{type:"button",onClick:onClick,className:(0,clsx_m/* default */.Z)('clean-btn',className,isEnabled&&(WordWrapButton_styles_module_default()).wordWrapButtonEnabled),"aria-label":title,title:title},/*#__PURE__*/react.createElement(IconWordWrap,{className:(WordWrapButton_styles_module_default()).wordWrapButtonIcon,"aria-hidden":"true"}));}
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/Content/String.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 CodeBlockString({children,className:blockClassName='',metastring,title:titleProp,showLineNumbers:showLineNumbersProp,language:languageProp}){const{prism:{defaultLanguage,magicComments}}=(0,useThemeConfig/* useThemeConfig */.L)();const language=languageProp??parseLanguage(blockClassName)??defaultLanguage;const prismTheme=usePrismTheme();const wordWrap=useCodeWordWrap();// We still parse the metastring in case we want to support more syntax in the
-// future. Note that MDX doesn't strip quotes when parsing metastring:
-// "title=\"xyz\"" => title: "\"xyz\""
-const title=parseCodeBlockTitle(metastring)||titleProp;const{lineClassNames,code}=parseLines(children,{metastring,language,magicComments});const showLineNumbers=showLineNumbersProp??containsLineNumbers(metastring);return/*#__PURE__*/react.createElement(CodeBlockContainer,{as:"div",className:(0,clsx_m/* default */.Z)(blockClassName,language&&!blockClassName.includes(`language-${language}`)&&`language-${language}`)},title&&/*#__PURE__*/react.createElement("div",{className:(Content_styles_module_default()).codeBlockTitle},title),/*#__PURE__*/react.createElement("div",{className:(Content_styles_module_default()).codeBlockContent},/*#__PURE__*/react.createElement(dist,(0,esm_extends/* default */.Z)({},defaultProps,{theme:prismTheme,code:code,language:language??'text'}),({className,tokens,getLineProps,getTokenProps})=>/*#__PURE__*/react.createElement("pre",{/* eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex */tabIndex:0,ref:wordWrap.codeBlockRef,className:(0,clsx_m/* default */.Z)(className,(Content_styles_module_default()).codeBlock,'thin-scrollbar')},/*#__PURE__*/react.createElement("code",{className:(0,clsx_m/* default */.Z)((Content_styles_module_default()).codeBlockLines,showLineNumbers&&(Content_styles_module_default()).codeBlockLinesWithNumbering)},tokens.map((line,i)=>/*#__PURE__*/react.createElement(CodeBlockLine,{key:i,line:line,getLineProps:getLineProps,getTokenProps:getTokenProps,classNames:lineClassNames[i],showLineNumbers:showLineNumbers}))))),/*#__PURE__*/react.createElement("div",{className:(Content_styles_module_default()).buttonGroup},(wordWrap.isEnabled||wordWrap.isCodeScrollable)&&/*#__PURE__*/react.createElement(WordWrapButton,{className:(Content_styles_module_default()).codeButton,onClick:()=>wordWrap.toggle(),isEnabled:wordWrap.isEnabled}),/*#__PURE__*/react.createElement(CopyButton,{className:(Content_styles_module_default()).codeButton,code:code}))));}
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/CodeBlock/index.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.
- *//**
- * Best attempt to make the children a plain string so it is copyable. If there
- * are react elements, we will not be able to copy the content, and it will
- * return `children` as-is; otherwise, it concatenates the string children
- * together.
- */function maybeStringifyChildren(children){if(react.Children.toArray(children).some(el=>/*#__PURE__*/(0,react.isValidElement)(el))){return children;}// The children is now guaranteed to be one/more plain strings
-return Array.isArray(children)?children.join(''):children;}function CodeBlock({children:rawChildren,...props}){// The Prism theme on SSR is always the default theme but the site theme can
-// be in a different mode. React hydration doesn't update DOM styles that come
-// from SSR. Hence force a re-render after mounting to apply the current
-// relevant styles.
-const isBrowser=(0,useIsBrowser/* default */.Z)();const children=maybeStringifyChildren(rawChildren);const CodeBlockComp=typeof children==='string'?CodeBlockString:CodeBlockJSX;return/*#__PURE__*/react.createElement(CodeBlockComp,(0,esm_extends/* default */.Z)({key:String(isBrowser)},props),children);}
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Code.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 MDXCode(props){const inlineElements=['a','abbr','b','br','button','cite','code','del','dfn','em','i','img','input','ins','kbd','label','object','output','q','ruby','s','small','span','strong','sub','sup','time','u','var','wbr'];const shouldBeInline=react.Children.toArray(props.children).every(el=>typeof el==='string'&&!el.includes('\n')||/*#__PURE__*/(0,react.isValidElement)(el)&&inlineElements.includes(el.props?.mdxType));return shouldBeInline?/*#__PURE__*/react.createElement("code",props):/*#__PURE__*/react.createElement(CodeBlock,props);}
-// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules
-var Link = __webpack_require__(9038);
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/A.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 MDXA(props){return/*#__PURE__*/react.createElement(Link/* default */.Z,props);}
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Pre.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 MDXPre(props){return/*#__PURE__*/react.createElement(CodeBlock// If this pre is created by a ``` fenced codeblock, unwrap the children
-,/*#__PURE__*/(0,react.isValidElement)(props.children)&&props.children.props?.originalType==='code'?props.children.props:{...props});}
-// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Collapsible/index.js
-var Collapsible = __webpack_require__(6043);
-// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Details/styles.module.css
-var Details_styles_module = __webpack_require__(872);
-var Details_styles_module_default = /*#__PURE__*/__webpack_require__.n(Details_styles_module);
-;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/components/Details/index.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 isInSummary(node){if(!node){return false;}return node.tagName==='SUMMARY'||isInSummary(node.parentElement);}function hasParent(node,parent){if(!node){return false;}return node===parent||hasParent(node.parentElement,parent);}/**
- * A mostly un-styled `
` element with smooth collapsing. Provides some - * very lightweight styles, but you should bring your UI. - */function Details({summary,children,...props}){const isBrowser=(0,useIsBrowser/* default */.Z)();const detailsRef=(0,react.useRef)(null);const{collapsed,setCollapsed}=(0,Collapsible/* useCollapsible */.u)({initialState:!props.open});// Use a separate state for the actual details prop, because it must be set -// only after animation completes, otherwise close animations won't work -const[open,setOpen]=(0,react.useState)(props.open);const summaryElement=/*#__PURE__*/react.isValidElement(summary)?summary:/*#__PURE__*/react.createElement("summary",null,summary??'Details');return/*#__PURE__*/ (// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -react.createElement("details",(0,esm_extends/* default */.Z)({},props,{ref:detailsRef,open:open,"data-collapsed":collapsed,className:(0,clsx_m/* default */.Z)((Details_styles_module_default()).details,isBrowser&&(Details_styles_module_default()).isBrowser,props.className),onMouseDown:e=>{const target=e.target;// Prevent a double-click to highlight summary text -if(isInSummary(target)&&e.detail>1){e.preventDefault();}},onClick:e=>{e.stopPropagation();// For isolation of multiple nested details/summary -const target=e.target;const shouldToggle=isInSummary(target)&&hasParent(target,detailsRef.current);if(!shouldToggle){return;}e.preventDefault();if(collapsed){setCollapsed(false);setOpen(true);}else{setCollapsed(true);// Don't do this, it breaks close animation! -// setOpen(false); -}}}),summaryElement,/*#__PURE__*/react.createElement(Collapsible/* Collapsible */.z,{lazy:false// Content might matter for SEO in this case -,collapsed:collapsed,disableSSRStyle:true// Allows component to work fine even with JS disabled! -,onCollapseTransitionEnd:newCollapsed=>{setCollapsed(newCollapsed);setOpen(!newCollapsed);}},/*#__PURE__*/react.createElement("div",{className:(Details_styles_module_default()).collapsibleContent},children))));} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Details/styles.module.css -var theme_Details_styles_module = __webpack_require__(1523); -var theme_Details_styles_module_default = /*#__PURE__*/__webpack_require__.n(theme_Details_styles_module); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Details/index.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. - */// Should we have a custom details/summary comp in Infima instead of reusing -// alert classes? -const InfimaClasses='alert alert--info';function Details_Details({...props}){return/*#__PURE__*/react.createElement(Details,(0,esm_extends/* default */.Z)({},props,{className:(0,clsx_m/* default */.Z)(InfimaClasses,(theme_Details_styles_module_default()).details,props.className)}));} -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Details.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 MDXDetails(props){const items=react.Children.toArray(props.children);// Split summary item from the rest to pass it as a separate prop to the -// Details theme component -const summary=items.find(item=>/*#__PURE__*/react.isValidElement(item)&&item.props?.mdxType==='summary');const children=/*#__PURE__*/react.createElement(react.Fragment,null,items.filter(item=>item!==summary));return/*#__PURE__*/react.createElement(Details_Details,(0,esm_extends/* default */.Z)({},props,{summary:summary}),children);} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Heading/index.js -var Heading = __webpack_require__(6641); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Heading.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 MDXHeading(props){return/*#__PURE__*/react.createElement(Heading/* default */.Z,props);} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Ul/styles.module.css -var Ul_styles_module = __webpack_require__(6655); -var Ul_styles_module_default = /*#__PURE__*/__webpack_require__.n(Ul_styles_module); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Ul/index.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 transformUlClassName(className){// Fix https://github.com/facebook/docusaurus/issues/9098 -if(typeof className==='undefined'){return undefined;}return (0,clsx_m/* default */.Z)(className,// This class is set globally by GitHub/MDX. We keep the global class, and -// add another class to get a task list without the default ul styling -// See https://github.com/syntax-tree/mdast-util-to-hast/issues/28 -className?.includes('contains-task-list')&&(Ul_styles_module_default()).containsTaskList);}function MDXUl(props){return/*#__PURE__*/react.createElement("ul",(0,esm_extends/* default */.Z)({},props,{className:transformUlClassName(props.className)}));} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Img/styles.module.css -var Img_styles_module = __webpack_require__(7588); -var Img_styles_module_default = /*#__PURE__*/__webpack_require__.n(Img_styles_module); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/Img/index.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 transformImgClassName(className){return (0,clsx_m/* default */.Z)(className,(Img_styles_module_default()).img);}function MDXImg(props){return/*#__PURE__*/ (// eslint-disable-next-line jsx-a11y/alt-text -react.createElement("img",(0,esm_extends/* default */.Z)({loading:"lazy"},props,{className:transformImgClassName(props.className)})));} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/styles.module.css -var Admonition_styles_module = __webpack_require__(4601); -var Admonition_styles_module_default = /*#__PURE__*/__webpack_require__.n(Admonition_styles_module); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Admonition/index.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 NoteIcon(){return/*#__PURE__*/react.createElement("svg",{viewBox:"0 0 14 16"},/*#__PURE__*/react.createElement("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}));}function TipIcon(){return/*#__PURE__*/react.createElement("svg",{viewBox:"0 0 12 16"},/*#__PURE__*/react.createElement("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}));}function DangerIcon(){return/*#__PURE__*/react.createElement("svg",{viewBox:"0 0 12 16"},/*#__PURE__*/react.createElement("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}));}function InfoIcon(){return/*#__PURE__*/react.createElement("svg",{viewBox:"0 0 14 16"},/*#__PURE__*/react.createElement("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}));}function CautionIcon(){return/*#__PURE__*/react.createElement("svg",{viewBox:"0 0 16 16"},/*#__PURE__*/react.createElement("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}));}// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style -const AdmonitionConfigs={note:{infimaClassName:'secondary',iconComponent:NoteIcon,label:/*#__PURE__*/react.createElement(Translate/* default */.Z,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)"},"note")},tip:{infimaClassName:'success',iconComponent:TipIcon,label:/*#__PURE__*/react.createElement(Translate/* default */.Z,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)"},"tip")},danger:{infimaClassName:'danger',iconComponent:DangerIcon,label:/*#__PURE__*/react.createElement(Translate/* default */.Z,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)"},"danger")},info:{infimaClassName:'info',iconComponent:InfoIcon,label:/*#__PURE__*/react.createElement(Translate/* default */.Z,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)"},"info")},caution:{infimaClassName:'warning',iconComponent:CautionIcon,label:/*#__PURE__*/react.createElement(Translate/* default */.Z,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)"},"caution")}};// Legacy aliases, undocumented but kept for retro-compatibility -const aliases={secondary:'note',important:'info',success:'tip',warning:'danger'};function getAdmonitionConfig(unsafeType){const type=aliases[unsafeType]??unsafeType;const config=AdmonitionConfigs[type];if(config){return config;}console.warn(`No admonition config found for admonition type "${type}". Using Info as fallback.`);return AdmonitionConfigs.info;}// Workaround because it's difficult in MDX v1 to provide a MDX title as props -// See https://github.com/facebook/docusaurus/pull/7152#issuecomment-1145779682 -function extractMDXAdmonitionTitle(children){const items=react.Children.toArray(children);const mdxAdmonitionTitle=items.find(item=>/*#__PURE__*/react.isValidElement(item)&&item.props?.mdxType==='mdxAdmonitionTitle');const rest=/*#__PURE__*/react.createElement(react.Fragment,null,items.filter(item=>item!==mdxAdmonitionTitle));return{mdxAdmonitionTitle,rest};}function processAdmonitionProps(props){const{mdxAdmonitionTitle,rest}=extractMDXAdmonitionTitle(props.children);return{...props,title:props.title??mdxAdmonitionTitle,children:rest};}function Admonition(props){const{children,type,title,icon:iconProp}=processAdmonitionProps(props);const typeConfig=getAdmonitionConfig(type);const titleLabel=title??typeConfig.label;const{iconComponent:IconComponent}=typeConfig;const icon=iconProp??/*#__PURE__*/react.createElement(IconComponent,null);return/*#__PURE__*/react.createElement("div",{className:(0,clsx_m/* default */.Z)(ThemeClassNames/* ThemeClassNames */.k.common.admonition,ThemeClassNames/* ThemeClassNames */.k.common.admonitionType(props.type),'alert',`alert--${typeConfig.infimaClassName}`,(Admonition_styles_module_default()).admonition)},/*#__PURE__*/react.createElement("div",{className:(Admonition_styles_module_default()).admonitionHeading},/*#__PURE__*/react.createElement("span",{className:(Admonition_styles_module_default()).admonitionIcon},icon),titleLabel),/*#__PURE__*/react.createElement("div",{className:(Admonition_styles_module_default()).admonitionContent},children));} -// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Noop.js -var Noop = __webpack_require__(1875); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXComponents/index.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. - */const MDXComponents={head:MDXHead,code:MDXCode,a:MDXA,pre:MDXPre,details:MDXDetails,ul:MDXUl,img:MDXImg,h1:props=>/*#__PURE__*/react.createElement(MDXHeading,(0,esm_extends/* default */.Z)({as:"h1"},props)),h2:props=>/*#__PURE__*/react.createElement(MDXHeading,(0,esm_extends/* default */.Z)({as:"h2"},props)),h3:props=>/*#__PURE__*/react.createElement(MDXHeading,(0,esm_extends/* default */.Z)({as:"h3"},props)),h4:props=>/*#__PURE__*/react.createElement(MDXHeading,(0,esm_extends/* default */.Z)({as:"h4"},props)),h5:props=>/*#__PURE__*/react.createElement(MDXHeading,(0,esm_extends/* default */.Z)({as:"h5"},props)),h6:props=>/*#__PURE__*/react.createElement(MDXHeading,(0,esm_extends/* default */.Z)({as:"h6"},props)),admonition:Admonition,mermaid:Noop/* default */.Z};/* harmony default export */ const theme_MDXComponents = (MDXComponents); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/MDXContent/index.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 MDXContent({children}){return/*#__PURE__*/react.createElement(esm/* MDXProvider */.Zo,{components:theme_MDXComponents},children);} - -/***/ }), - -/***/ 8651: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ MDXPage) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(6010); -/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1944); -/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(5281); -/* harmony import */ var _theme_Layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5086); -/* harmony import */ var _theme_MDXContent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1050); -/* harmony import */ var _theme_TOC__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3233); -/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(720); -/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_4__); -/** - * 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 MDXPage(props){const{content:MDXPageContent}=props;const{metadata:{title,description,frontMatter}}=MDXPageContent;const{wrapperClassName,hide_table_of_contents:hideTableOfContents}=frontMatter;return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__/* .HtmlClassNameProvider */ .FG,{className:(0,clsx__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)(wrapperClassName??_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__/* .ThemeClassNames */ .k.wrapper.mdxPages,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_7__/* .ThemeClassNames */ .k.page.mdxPage)},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_5__/* .PageMetadata */ .d,{title:title,description:description}),/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_theme_Layout__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,null,/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("main",{className:"container container--fluid margin-vert--lg"},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)('row',(_styles_module_css__WEBPACK_IMPORTED_MODULE_4___default().mdxPageWrapper))},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z)('col',!hideTableOfContents&&'col--8')},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("article",null,/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_theme_MDXContent__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z,null,/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(MDXPageContent,null)))),!hideTableOfContents&&MDXPageContent.toc.length>0&&/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"col col--2"},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_theme_TOC__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z,{toc:MDXPageContent.toc,minHeadingLevel:frontMatter.toc_min_heading_level,maxHeadingLevel:frontMatter.toc_max_heading_level}))))));} - -/***/ }), - -/***/ 4972: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ NotFound) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5999); -/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1944); -/* harmony import */ var _theme_Layout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5086); -/** - * 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 NotFound(){return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__/* .PageMetadata */ .d,{title:(0,_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* .translate */ .I)({id:'theme.NotFound.title',message:'Page Not Found'})}),/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_theme_Layout__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z,null,/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("main",{className:"container margin-vert--xl"},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"row"},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:"col col--6 col--offset-3"},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("h1",{className:"hero__title"},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("p",null,/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("p",null,/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_docusaurus_Translate__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))));} - -/***/ }), - -/***/ 197: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (/* binding */ SearchMetadata) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_Head__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5742); -/** - * 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. - */// Note: we bias toward using Algolia metadata on purpose -// Not doing so leads to confusion in the community, -// as it requires to first crawl the site with the Algolia plugin enabled first -// - https://github.com/facebook/docusaurus/issues/6693 -// - https://github.com/facebook/docusaurus/issues/4555 -function SearchMetadata({locale,version,tag}){// Seems safe to consider here the locale is the language, as the existing -// docsearch:language filter is afaik a regular string-based filter -const language=locale;return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_docusaurus_Head__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,null,locale&&/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{name:"docusaurus_locale",content:locale}),version&&/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{name:"docusaurus_version",content:version}),tag&&/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{name:"docusaurus_tag",content:tag}),language&&/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{name:"docsearch:language",content:language}),version&&/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{name:"docsearch:version",content:version}),tag&&/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{name:"docsearch:docusaurus_tag",content:tag}));} - -/***/ }), - -/***/ 3233: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (/* binding */ TOC) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6010); -/* harmony import */ var _theme_TOCItems__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3743); -/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(578); -/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_2__); -/** - * 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. - */// Using a custom className -// This prevents TOCInline/TOCCollapsible getting highlighted by mistake -const LINK_CLASS_NAME='table-of-contents__link toc-highlight';const LINK_ACTIVE_CLASS_NAME='table-of-contents__link--active';function TOC({className,...props}){return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div",{className:(0,clsx__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)((_styles_module_css__WEBPACK_IMPORTED_MODULE_2___default().tableOfContents),'thin-scrollbar',className)},/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_theme_TOCItems__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({},props,{linkClassName:LINK_CLASS_NAME,linkActiveClassName:LINK_ACTIVE_CLASS_NAME})));} - -/***/ }), - -/***/ 3743: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - Z: () => (/* binding */ TOCItems) -}); - -// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js -var esm_extends = __webpack_require__(7462); -// EXTERNAL MODULE: ./node_modules/react/index.js -var react = __webpack_require__(7294); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js -var useThemeConfig = __webpack_require__(6668); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/tocUtils.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 treeifyTOC(flatTOC){const headings=flatTOC.map(heading=>({...heading,parentIndex:-1,children:[]}));// Keep track of which previous index would be the current heading's direct -// parent. Each entry is the last index of the `headings` array at heading -// level . We will modify these indices as we iterate through all headings. -// e.g. if an ### H3 was last seen at index 2, then prevIndexForLevel[3] === 2 -// indices 0 and 1 will remain unused. -const prevIndexForLevel=Array(7).fill(-1);headings.forEach((curr,currIndex)=>{// Take the last seen index for each ancestor level. the highest index will -// be the direct ancestor of the current heading. -const ancestorLevelIndexes=prevIndexForLevel.slice(2,curr.level);curr.parentIndex=Math.max(...ancestorLevelIndexes);// Mark that curr.level was last seen at the current index. -prevIndexForLevel[curr.level]=currIndex;});const rootNodes=[];// For a given parentIndex, add each Node into that parent's `children` array -headings.forEach(heading=>{const{parentIndex,...rest}=heading;if(parentIndex>=0){headings[parentIndex].children.push(rest);}else{rootNodes.push(rest);}});return rootNodes;}/** - * Takes a flat TOC list (from the MDX loader) and treeifies it into what the - * TOC components expect. Memoized for performance. - */function useTreeifiedTOC(toc){return useMemo(()=>treeifyTOC(toc),[toc]);}function filterTOC({toc,minHeadingLevel,maxHeadingLevel}){function isValid(item){return item.level>=minHeadingLevel&&item.level<=maxHeadingLevel;}return toc.flatMap(item=>{const filteredChildren=filterTOC({toc:item.children,minHeadingLevel,maxHeadingLevel});if(isValid(item)){return[{...item,children:filteredChildren}];}return filteredChildren;});}/** - * Takes a flat TOC list (from the MDX loader) and treeifies it into what the - * TOC components expect, applying the `minHeadingLevel` and `maxHeadingLevel`. - * Memoized for performance. - * - * **Important**: this is not the same as `useTreeifiedTOC(toc.filter(...))`, - * because we have to filter the TOC after it has been treeified. This is mostly - * to ensure that weird TOC structures preserve their semantics. For example, an - * h3-h2-h4 sequence should not be treeified as an "h3 > h4" hierarchy with - * min=3, max=4, but should rather be "[h3, h4]" (since the h2 heading has split - * the two headings and they are not parent-children) - */function useFilteredAndTreeifiedTOC({toc,minHeadingLevel,maxHeadingLevel}){return (0,react.useMemo)(()=>filterTOC({toc:treeifyTOC(toc),minHeadingLevel,maxHeadingLevel}),[toc,minHeadingLevel,maxHeadingLevel]);} -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useTOCHighlight.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. - */// TODO make the hardcoded theme-classic classnames configurable (or add them -// to ThemeClassNames?) -/** - * If the anchor has no height and is just a "marker" in the DOM; we'll use the - * parent (normally the link text) rect boundaries instead - */function getVisibleBoundingClientRect(element){const rect=element.getBoundingClientRect();const hasNoHeight=rect.top===rect.bottom;if(hasNoHeight){return getVisibleBoundingClientRect(element.parentNode);}return rect;}/** - * Considering we divide viewport into 2 zones of each 50vh, this returns true - * if an element is in the first zone (i.e., appear in viewport, near the top) - */function isInViewportTopHalf(boundingRect){return boundingRect.top>0&&boundingRect.bottom{const boundingRect=getVisibleBoundingClientRect(anchor);return boundingRect.top>=anchorTopOffset;});if(nextVisibleAnchor){const boundingRect=getVisibleBoundingClientRect(nextVisibleAnchor);// If anchor is in the top half of the viewport: it is the one we consider -// "active" (unless it's too close to the top and and soon to be scrolled -// outside viewport) -if(isInViewportTopHalf(boundingRect)){return nextVisibleAnchor;}// If anchor is in the bottom half of the viewport, or under the viewport, -// we consider the active anchor is the previous one. This is because the -// main text appearing in the user screen mostly belong to the previous -// anchor. Returns null for the first anchor, see -// https://github.com/facebook/docusaurus/issues/5318 -return anchors[anchors.indexOf(nextVisibleAnchor)-1]??null;}// No anchor under viewport top (i.e. we are at the bottom of the page), -// highlight the last anchor found -return anchors[anchors.length-1]??null;}function getLinkAnchorValue(link){return decodeURIComponent(link.href.substring(link.href.indexOf('#')+1));}function getLinks(linkClassName){return Array.from(document.getElementsByClassName(linkClassName));}function getNavbarHeight(){// Not ideal to obtain actual height this way -// Using TS ! (not ?) because otherwise a bad selector would be un-noticed -return document.querySelector('.navbar').clientHeight;}function useAnchorTopOffsetRef(){const anchorTopOffsetRef=(0,react.useRef)(0);const{navbar:{hideOnScroll}}=(0,useThemeConfig/* useThemeConfig */.L)();(0,react.useEffect)(()=>{anchorTopOffsetRef.current=hideOnScroll?0:getNavbarHeight();},[hideOnScroll]);return anchorTopOffsetRef;}/** - * Side-effect that applies the active class name to the TOC heading that the - * user is currently viewing. Disabled when `config` is undefined. - */function useTOCHighlight(config){const lastActiveLinkRef=(0,react.useRef)(undefined);const anchorTopOffsetRef=useAnchorTopOffsetRef();(0,react.useEffect)(()=>{if(!config){// No-op, highlighting is disabled -return()=>{};}const{linkClassName,linkActiveClassName,minHeadingLevel,maxHeadingLevel}=config;function updateLinkActiveClass(link,active){if(active){if(lastActiveLinkRef.current&&lastActiveLinkRef.current!==link){lastActiveLinkRef.current.classList.remove(linkActiveClassName);}link.classList.add(linkActiveClassName);lastActiveLinkRef.current=link;// link.scrollIntoView({block: 'nearest'}); -}else{link.classList.remove(linkActiveClassName);}}function updateActiveLink(){const links=getLinks(linkClassName);const anchors=getAnchors({minHeadingLevel,maxHeadingLevel});const activeAnchor=getActiveAnchor(anchors,{anchorTopOffset:anchorTopOffsetRef.current});const activeLink=links.find(link=>activeAnchor&&activeAnchor.id===getLinkAnchorValue(link));links.forEach(link=>{updateLinkActiveClass(link,link===activeLink);});}document.addEventListener('scroll',updateActiveLink);document.addEventListener('resize',updateActiveLink);updateActiveLink();return()=>{document.removeEventListener('scroll',updateActiveLink);document.removeEventListener('resize',updateActiveLink);};},[config,anchorTopOffsetRef]);} -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TOCItems/Tree.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. - */// Recursive component rendering the toc tree -function TOCItemTree({toc,className,linkClassName,isChild}){if(!toc.length){return null;}return/*#__PURE__*/react.createElement("ul",{className:isChild?undefined:className},toc.map(heading=>/*#__PURE__*/react.createElement("li",{key:heading.id},/*#__PURE__*/react.createElement("a",{href:`#${heading.id}`,className:linkClassName??undefined// Developer provided the HTML, so assume it's safe. -// eslint-disable-next-line react/no-danger -,dangerouslySetInnerHTML:{__html:heading.value}}),/*#__PURE__*/react.createElement(TOCItemTree,{isChild:true,toc:heading.children,className:className,linkClassName:linkClassName}))));}// Memo only the tree root is enough -/* harmony default export */ const Tree = (/*#__PURE__*/react.memo(TOCItemTree)); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/TOCItems/index.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 TOCItems({toc,className='table-of-contents table-of-contents__left-border',linkClassName='table-of-contents__link',linkActiveClassName=undefined,minHeadingLevel:minHeadingLevelOption,maxHeadingLevel:maxHeadingLevelOption,...props}){const themeConfig=(0,useThemeConfig/* useThemeConfig */.L)();const minHeadingLevel=minHeadingLevelOption??themeConfig.tableOfContents.minHeadingLevel;const maxHeadingLevel=maxHeadingLevelOption??themeConfig.tableOfContents.maxHeadingLevel;const tocTree=useFilteredAndTreeifiedTOC({toc,minHeadingLevel,maxHeadingLevel});const tocHighlightConfig=(0,react.useMemo)(()=>{if(linkClassName&&linkActiveClassName){return{linkClassName,linkActiveClassName,minHeadingLevel,maxHeadingLevel};}return undefined;},[linkClassName,linkActiveClassName,minHeadingLevel,maxHeadingLevel]);useTOCHighlight(tocHighlightConfig);return/*#__PURE__*/react.createElement(Tree,(0,esm_extends/* default */.Z)({toc:tocTree,className:className,linkClassName:linkClassName},props));} - -/***/ }), - -/***/ 9637: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (/* binding */ ThemedImage) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6010); -/* harmony import */ var _docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2389); -/* harmony import */ var _docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2949); -/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(162); -/* harmony import */ var _styles_module_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_styles_module_css__WEBPACK_IMPORTED_MODULE_2__); -/** - * 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 ThemedImage(props){const isBrowser=(0,_docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z)();const{colorMode}=(0,_docusaurus_theme_common__WEBPACK_IMPORTED_MODULE_3__/* .useColorMode */ .I)();const{sources,className,alt,...propsRest}=props;const clientThemes=colorMode==='dark'?['dark']:['light'];const renderedSourceNames=isBrowser?clientThemes:// We need to render both images on the server to avoid flash -// See https://github.com/facebook/docusaurus/pull/3730 -['light','dark'];return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,renderedSourceNames.map(sourceName=>/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("img",(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({key:sourceName,src:sources[sourceName],alt:alt,className:(0,clsx__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z)((_styles_module_css__WEBPACK_IMPORTED_MODULE_2___default().themedImage),(_styles_module_css__WEBPACK_IMPORTED_MODULE_2___default())[`themedImage--${sourceName}`],className)},propsRest))));} - -/***/ }), - -/***/ 6043: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ u: () => (/* binding */ useCollapsible), -/* harmony export */ z: () => (/* binding */ Collapsible) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(412); -/* harmony import */ var _utils_accessibilityUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1442); -/** - * 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. - */const DefaultAnimationEasing='ease-in-out';/** - * This hook is a very thin wrapper around a `useState`. - */function useCollapsible({initialState}){const[collapsed,setCollapsed]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initialState??false);const toggleCollapsed=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{setCollapsed(expanded=>!expanded);},[]);return{collapsed,setCollapsed,toggleCollapsed};}const CollapsedStyles={display:'none',overflow:'hidden',height:'0px'};const ExpandedStyles={display:'block',overflow:'visible',height:'auto'};function applyCollapsedStyle(el,collapsed){const collapsedStyles=collapsed?CollapsedStyles:ExpandedStyles;el.style.display=collapsedStyles.display;el.style.overflow=collapsedStyles.overflow;el.style.height=collapsedStyles.height;}/* -Lex111: Dynamic transition duration is used in Material design, this technique -is good for a large number of items. -https://material.io/archive/guidelines/motion/duration-easing.html#duration-easing-dynamic-durations -https://github.com/mui-org/material-ui/blob/e724d98eba018e55e1a684236a2037e24bcf050c/packages/material-ui/src/styles/createTransitions.js#L40-L43 - */function getAutoHeightDuration(height){if((0,_utils_accessibilityUtils__WEBPACK_IMPORTED_MODULE_2__/* .prefersReducedMotion */ .n)()){// Not using 0 because it prevents onTransitionEnd to fire and bubble up :/ -// See https://github.com/facebook/docusaurus/pull/8906 -return 1;}const constant=height/36;return Math.round((4+15*constant**0.25+constant/5)*10);}function useCollapseAnimation({collapsibleRef,collapsed,animation}){const mounted=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{const el=collapsibleRef.current;function getTransitionStyles(){const height=el.scrollHeight;const duration=animation?.duration??getAutoHeightDuration(height);const easing=animation?.easing??DefaultAnimationEasing;return{transition:`height ${duration}ms ${easing}`,height:`${height}px`};}function applyTransitionStyles(){const transitionStyles=getTransitionStyles();el.style.transition=transitionStyles.transition;el.style.height=transitionStyles.height;}// On mount, we just apply styles, no animated transition -if(!mounted.current){applyCollapsedStyle(el,collapsed);mounted.current=true;return undefined;}el.style.willChange='height';function startAnimation(){const animationFrame=requestAnimationFrame(()=>{// When collapsing -if(collapsed){applyTransitionStyles();requestAnimationFrame(()=>{el.style.height=CollapsedStyles.height;el.style.overflow=CollapsedStyles.overflow;});}// When expanding -else{el.style.display='block';requestAnimationFrame(()=>{applyTransitionStyles();});}});return()=>cancelAnimationFrame(animationFrame);}return startAnimation();},[collapsibleRef,collapsed,animation]);}/** - * Prevent hydration layout shift before animations are handled imperatively - * with JS - */function getSSRStyle(collapsed){if(_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z.canUseDOM){return undefined;}return collapsed?CollapsedStyles:ExpandedStyles;}function CollapsibleBase({as:As='div',collapsed,children,animation,onCollapseTransitionEnd,className,disableSSRStyle}){const collapsibleRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);useCollapseAnimation({collapsibleRef,collapsed,animation});return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(As// @ts-expect-error: the "too complicated type" is produced from -// "CollapsibleElementType" being a huge union -,{ref:collapsibleRef// Refs are contravariant, which is not expressible in TS -,style:disableSSRStyle?undefined:getSSRStyle(collapsed),onTransitionEnd:e=>{if(e.propertyName!=='height'){return;}applyCollapsedStyle(collapsibleRef.current,collapsed);onCollapseTransitionEnd?.(collapsed);},className:className},children);}function CollapsibleLazy({collapsed,...props}){const[mounted,setMounted]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(!collapsed);// Updated in effect so that first expansion transition can work -const[lazyCollapsed,setLazyCollapsed]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(collapsed);(0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(()=>{if(!collapsed){setMounted(true);}},[collapsed]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(()=>{if(mounted){setLazyCollapsed(collapsed);}},[mounted,collapsed]);return mounted?/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(CollapsibleBase,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)({},props,{collapsed:lazyCollapsed})):null;}/** - * A headless component providing smooth and uniform collapsing behavior. The - * component will be invisible (zero height) when collapsed. Doesn't provide - * interactivity by itself: collapse state is toggled through props. - */function Collapsible({lazy,...props}){const Comp=lazy?CollapsibleLazy:CollapsibleBase;return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Comp,props);} - -/***/ }), - -/***/ 9689: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ nT: () => (/* binding */ useAnnouncementBar), -/* harmony export */ pl: () => (/* binding */ AnnouncementBarProvider) -/* harmony export */ }); -/* unused harmony export AnnouncementBarDismissStorageKey */ -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2389); -/* harmony import */ var _utils_storageUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); -/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(902); -/* harmony import */ var _utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6668); -/** - * 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. - */const AnnouncementBarDismissStorageKey='docusaurus.announcement.dismiss';const AnnouncementBarIdStorageKey='docusaurus.announcement.id';const AnnouncementBarDismissStorage=(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_2__/* .createStorageSlot */ .WA)(AnnouncementBarDismissStorageKey);const IdStorage=(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_2__/* .createStorageSlot */ .WA)(AnnouncementBarIdStorageKey);const isDismissedInStorage=()=>AnnouncementBarDismissStorage.get()==='true';const setDismissedInStorage=bool=>AnnouncementBarDismissStorage.set(String(bool));const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);function useContextValue(){const{announcementBar}=(0,_utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_3__/* .useThemeConfig */ .L)();const isBrowser=(0,_docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z)();const[isClosed,setClosed]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>isBrowser?// On client navigation: init with local storage value -isDismissedInStorage():// On server/hydration: always visible to prevent layout shifts (will be hidden with css if needed) -false);// Update state after hydration -(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{setClosed(isDismissedInStorage());},[]);const handleClose=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{setDismissedInStorage(true);setClosed(true);},[]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(!announcementBar){return;}const{id}=announcementBar;let viewedId=IdStorage.get();// Retrocompatibility due to spelling mistake of default id -// see https://github.com/facebook/docusaurus/issues/3338 -// cSpell:ignore annoucement -if(viewedId==='annoucement-bar'){viewedId='announcement-bar';}const isNewAnnouncement=id!==viewedId;IdStorage.set(id);if(isNewAnnouncement){setDismissedInStorage(false);}if(isNewAnnouncement||!isDismissedInStorage()){setClosed(false);}},[announcementBar]);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({isActive:!!announcementBar&&!isClosed,close:handleClose}),[announcementBar,isClosed,handleClose]);}function AnnouncementBarProvider({children}){const value=useContextValue();return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider,{value:value},children);}function useAnnouncementBar(){const api=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!api){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_4__/* .ReactContextError */ .i6('AnnouncementBarProvider');}return api;} - -/***/ }), - -/***/ 2949: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ I: () => (/* binding */ useColorMode), -/* harmony export */ S: () => (/* binding */ ColorModeProvider) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(412); -/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(902); -/* harmony import */ var _utils_storageUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12); -/* harmony import */ var _utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6668); -/** - * 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. - */const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(undefined);const ColorModeStorageKey='theme';const ColorModeStorage=(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_2__/* .createStorageSlot */ .WA)(ColorModeStorageKey);const ColorModes={light:'light',dark:'dark'};// Ensure to always return a valid colorMode even if input is invalid -const coerceToColorMode=colorMode=>colorMode===ColorModes.dark?ColorModes.dark:ColorModes.light;const getInitialColorMode=defaultMode=>_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z.canUseDOM?coerceToColorMode(document.documentElement.getAttribute('data-theme')):coerceToColorMode(defaultMode);const storeColorMode=newColorMode=>{ColorModeStorage.set(coerceToColorMode(newColorMode));};function useContextValue(){const{colorMode:{defaultMode,disableSwitch,respectPrefersColorScheme}}=(0,_utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_3__/* .useThemeConfig */ .L)();const[colorMode,setColorModeState]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(getInitialColorMode(defaultMode));(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{// A site is deployed without disableSwitch -// => User visits the site and has a persisted value -// => Site later enabled disableSwitch -// => Clear the previously stored value to apply the site's setting -if(disableSwitch){ColorModeStorage.del();}},[disableSwitch]);const setColorMode=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((newColorMode,options={})=>{const{persist=true}=options;if(newColorMode){setColorModeState(newColorMode);if(persist){storeColorMode(newColorMode);}}else{if(respectPrefersColorScheme){setColorModeState(window.matchMedia('(prefers-color-scheme: dark)').matches?ColorModes.dark:ColorModes.light);}else{setColorModeState(defaultMode);}ColorModeStorage.del();}},[respectPrefersColorScheme,defaultMode]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{document.documentElement.setAttribute('data-theme',coerceToColorMode(colorMode));},[colorMode]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(disableSwitch){return undefined;}const onChange=e=>{if(e.key!==ColorModeStorageKey){return;}const storedColorMode=ColorModeStorage.get();if(storedColorMode!==null){setColorMode(coerceToColorMode(storedColorMode));}};window.addEventListener('storage',onChange);return()=>window.removeEventListener('storage',onChange);},[disableSwitch,setColorMode]);// PCS is coerced to light mode when printing, which causes the color mode to -// be reset to dark when exiting print mode, disregarding user settings. When -// the listener fires only because of a print/screen switch, we don't change -// color mode. See https://github.com/facebook/docusaurus/pull/6490 -const previousMediaIsPrint=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(disableSwitch&&!respectPrefersColorScheme){return undefined;}const mql=window.matchMedia('(prefers-color-scheme: dark)');const onChange=()=>{if(window.matchMedia('print').matches||previousMediaIsPrint.current){previousMediaIsPrint.current=window.matchMedia('print').matches;return;}setColorMode(null);};mql.addListener(onChange);return()=>mql.removeListener(onChange);},[setColorMode,disableSwitch,respectPrefersColorScheme]);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({colorMode,setColorMode,get isDarkTheme(){if(false){}return colorMode===ColorModes.dark;},setLightTheme(){if(false){}setColorMode(ColorModes.light);},setDarkTheme(){if(false){}setColorMode(ColorModes.dark);}}),[colorMode,setColorMode]);}function ColorModeProvider({children}){const value=useContextValue();return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider,{value:value},children);}function useColorMode(){const context=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(context==null){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_4__/* .ReactContextError */ .i6('ColorModeProvider','Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.');}return context;} - -/***/ }), - -/***/ 373: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ J: () => (/* binding */ useDocsPreferredVersion), -/* harmony export */ L5: () => (/* binding */ DocsPreferredVersionContextProvider) -/* harmony export */ }); -/* unused harmony export useDocsPreferredVersionByPluginId */ -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(143); -/* harmony import */ var _docusaurus_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(9935); -/* harmony import */ var _utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6668); -/* harmony import */ var _utils_docsUtils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(2802); -/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(902); -/* harmony import */ var _utils_storageUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12); -/** - * 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. - */const storageKey=pluginId=>`docs-preferred-version-${pluginId}`;const DocsPreferredVersionStorage={save:(pluginId,persistence,versionName)=>{(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_1__/* .createStorageSlot */ .WA)(storageKey(pluginId),{persistence}).set(versionName);},read:(pluginId,persistence)=>(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_1__/* .createStorageSlot */ .WA)(storageKey(pluginId),{persistence}).get(),clear:(pluginId,persistence)=>{(0,_utils_storageUtils__WEBPACK_IMPORTED_MODULE_1__/* .createStorageSlot */ .WA)(storageKey(pluginId),{persistence}).del();}};/** - * Initial state is always null as we can't read local storage from node SSR - */const getInitialState=pluginIds=>Object.fromEntries(pluginIds.map(id=>[id,{preferredVersionName:null}]));/** - * Read storage for all docs plugins, assigning each doc plugin a preferred - * version (if found) - */function readStorageState({pluginIds,versionPersistence,allDocsData}){/** - * The storage value we read might be stale, and belong to a version that does - * not exist in the site anymore. In such case, we remove the storage value to - * avoid downstream errors. - */function restorePluginState(pluginId){const preferredVersionNameUnsafe=DocsPreferredVersionStorage.read(pluginId,versionPersistence);const pluginData=allDocsData[pluginId];const versionExists=pluginData.versions.some(version=>version.name===preferredVersionNameUnsafe);if(versionExists){return{preferredVersionName:preferredVersionNameUnsafe};}DocsPreferredVersionStorage.clear(pluginId,versionPersistence);return{preferredVersionName:null};}return Object.fromEntries(pluginIds.map(id=>[id,restorePluginState(id)]));}function useVersionPersistence(){return (0,_utils_useThemeConfig__WEBPACK_IMPORTED_MODULE_2__/* .useThemeConfig */ .L)().docs.versionPersistence;}const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);function useContextValue(){const allDocsData=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_3__/* .useAllDocsData */ ._r)();const versionPersistence=useVersionPersistence();const pluginIds=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>Object.keys(allDocsData),[allDocsData]);// Initial state is empty, as we can't read browser storage in node/SSR -const[state,setState]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>getInitialState(pluginIds));// On mount, we set the state read from browser storage -(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{setState(readStorageState({allDocsData,versionPersistence,pluginIds}));},[allDocsData,versionPersistence,pluginIds]);// The API that we expose to consumer hooks (memo for constant object) -const api=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>{function savePreferredVersion(pluginId,versionName){DocsPreferredVersionStorage.save(pluginId,versionPersistence,versionName);setState(s=>({...s,[pluginId]:{preferredVersionName:versionName}}));}return{savePreferredVersion};},[versionPersistence]);return[state,api];}function DocsPreferredVersionContextProviderUnsafe({children}){const value=useContextValue();return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider,{value:value},children);}/** - * This is a maybe-layer. If the docs plugin is not enabled, this provider is a - * simple pass-through. - */function DocsPreferredVersionContextProvider({children}){if(_utils_docsUtils__WEBPACK_IMPORTED_MODULE_4__/* .isDocsPluginEnabled */ .cE){return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DocsPreferredVersionContextProviderUnsafe,null,children);}return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,children);}function useDocsPreferredVersionContext(){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!value){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_5__/* .ReactContextError */ .i6('DocsPreferredVersionContextProvider');}return value;}/** - * Returns a read-write interface to a plugin's preferred version. The - * "preferred version" is defined as the last version that the user visited. - * For example, if a user is using v3, even when v4 is later published, the user - * would still be browsing v3 docs when she opens the website next time. Note, - * the `preferredVersion` attribute will always be `null` before mount. - */function useDocsPreferredVersion(pluginId=_docusaurus_constants__WEBPACK_IMPORTED_MODULE_6__/* .DEFAULT_PLUGIN_ID */ .m){const docsData=(0,_docusaurus_plugin_content_docs_client__WEBPACK_IMPORTED_MODULE_3__/* .useDocsData */ .zh)(pluginId);const[state,api]=useDocsPreferredVersionContext();const{preferredVersionName}=state[pluginId];const preferredVersion=docsData.versions.find(version=>version.name===preferredVersionName)??null;const savePreferredVersionName=(0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(versionName=>{api.savePreferredVersion(pluginId,versionName);},[api,pluginId]);return{preferredVersion,savePreferredVersionName};}function useDocsPreferredVersionByPluginId(){const allDocsData=useAllDocsData();const[state]=useDocsPreferredVersionContext();function getPluginIdPreferredVersion(pluginId){const docsData=allDocsData[pluginId];const{preferredVersionName}=state[pluginId];return docsData.versions.find(version=>version.name===preferredVersionName)??null;}const pluginIds=Object.keys(allDocsData);return Object.fromEntries(pluginIds.map(id=>[id,getPluginIdPreferredVersion(id)]));} - -/***/ }), - -/***/ 1116: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ V: () => (/* binding */ useDocsSidebar), -/* harmony export */ b: () => (/* binding */ DocsSidebarProvider) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(902); -/** - * 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. - */// Using a Symbol because null is a valid context value (a doc with no sidebar) -// Inspired by https://github.com/jamiebuilds/unstated-next/blob/master/src/unstated-next.tsx -const EmptyContext=Symbol('EmptyContext');const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(EmptyContext);/** - * Provide the current sidebar to your children. - */function DocsSidebarProvider({children,name,items}){const stableValue=(0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>name&&items?{name,items}:null,[name,items]);return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider,{value:stableValue},children);}/** - * Gets the sidebar that's currently displayed, or `null` if there isn't one - */function useDocsSidebar(){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(value===EmptyContext){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__/* .ReactContextError */ .i6('DocsSidebarProvider');}return value;} - -/***/ }), - -/***/ 4477: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ E: () => (/* binding */ useDocsVersion), -/* harmony export */ q: () => (/* binding */ DocsVersionProvider) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(902); -/** - * 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. - */const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);/** - * Provide the current version's metadata to your children. - */function DocsVersionProvider({children,version}){return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider,{value:version},children);}/** - * Gets the version metadata of the current doc page. - */function useDocsVersion(){const version=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(version===null){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__/* .ReactContextError */ .i6('DocsVersionProvider');}return version;} - -/***/ }), - -/***/ 2961: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - M: () => (/* binding */ NavbarMobileSidebarProvider), - e: () => (/* binding */ useNavbarMobileSidebar) -}); - -// EXTERNAL MODULE: ./node_modules/react/index.js -var react = __webpack_require__(7294); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarSecondaryMenu/content.js -var content = __webpack_require__(3102); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useWindowSize.js -var useWindowSize = __webpack_require__(7524); -// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js -var react_router = __webpack_require__(6550); -// EXTERNAL MODULE: ./node_modules/use-sync-external-store/shim/index.js -var shim = __webpack_require__(1688); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/reactUtils.js -var reactUtils = __webpack_require__(902); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/historyUtils.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. - */// @ts-expect-error: TODO temporary until React 18 upgrade -/** - * Permits to register a handler that will be called on history actions (pop, - * push, replace). If the handler returns `false`, the navigation transition - * will be blocked/cancelled. - */function useHistoryActionHandler(handler){const history=(0,react_router/* useHistory */.k6)();const stableHandler=(0,reactUtils/* useEvent */.zX)(handler);(0,react.useEffect)(// See https://github.com/remix-run/history/blob/main/docs/blocking-transitions.md -()=>history.block((location,action)=>stableHandler(location,action)),[history,stableHandler]);}/** - * Permits to register a handler that will be called on history pop navigation - * (backward/forward). If the handler returns `false`, the backward/forward - * transition will be blocked. Unfortunately there's no good way to detect the - * "direction" (backward/forward) of the POP event. - */function useHistoryPopHandler(handler){useHistoryActionHandler((location,action)=>{if(action==='POP'){// Maybe block navigation if handler returns false -return handler(location,action);}// Don't block other navigation actions -return undefined;});}/** - * Permits to efficiently subscribe to a slice of the history - * See https://thisweekinreact.com/articles/useSyncExternalStore-the-underrated-react-api - * @param selector - */function useHistorySelector(selector){const history=useHistory();return useSyncExternalStore(history.listen,()=>selector(history),()=>selector(history));}/** - * Permits to efficiently subscribe to a specific querystring value - * @param key - */function useQueryStringValue(key){return useHistorySelector(history=>{if(key===null){return null;}return new URLSearchParams(history.location.search).get(key);});}function useQueryStringKeySetter(){const history=useHistory();return useCallback((key,newValue,options)=>{const searchParams=new URLSearchParams(history.location.search);if(newValue){searchParams.set(key,newValue);}else{searchParams.delete(key);}const updaterFn=options?.push?history.push:history.replace;updaterFn({search:searchParams.toString()});},[history]);}function useQueryString(key){const value=useQueryStringValue(key)??'';const setQueryString=useQueryStringKeySetter();return[value,useCallback((newValue,options)=>{setQueryString(key,newValue,options);},[setQueryString,key])];} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/useThemeConfig.js -var useThemeConfig = __webpack_require__(6668); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/navbarMobileSidebar.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. - */const Context=/*#__PURE__*/react.createContext(undefined);function useIsNavbarMobileSidebarDisabled(){const secondaryMenuContent=(0,content/* useNavbarSecondaryMenuContent */.HY)();const{items}=(0,useThemeConfig/* useThemeConfig */.L)().navbar;return items.length===0&&!secondaryMenuContent.component;}function useContextValue(){const disabled=useIsNavbarMobileSidebarDisabled();const windowSize=(0,useWindowSize/* useWindowSize */.i)();const shouldRender=!disabled&&windowSize==='mobile';const[shown,setShown]=(0,react.useState)(false);// Close mobile sidebar on navigation pop -// Most likely firing when using the Android back button (but not only) -useHistoryPopHandler(()=>{if(shown){setShown(false);// Prevent pop navigation; seems desirable enough -// See https://github.com/facebook/docusaurus/pull/5462#issuecomment-911699846 -return false;}return undefined;});const toggle=(0,react.useCallback)(()=>{setShown(s=>!s);},[]);(0,react.useEffect)(()=>{if(windowSize==='desktop'){setShown(false);}},[windowSize]);return (0,react.useMemo)(()=>({disabled,shouldRender,toggle,shown}),[disabled,shouldRender,toggle,shown]);}function NavbarMobileSidebarProvider({children}){const value=useContextValue();return/*#__PURE__*/react.createElement(Context.Provider,{value:value},children);}function useNavbarMobileSidebar(){const context=react.useContext(Context);if(context===undefined){throw new reactUtils/* ReactContextError */.i6('NavbarMobileSidebarProvider');}return context;} - -/***/ }), - -/***/ 3102: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HY: () => (/* binding */ useNavbarSecondaryMenuContent), -/* harmony export */ Zo: () => (/* binding */ NavbarSecondaryMenuFiller), -/* harmony export */ n2: () => (/* binding */ NavbarSecondaryMenuContentProvider) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(902); -/** - * 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. - */const Context=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);/** @internal */function NavbarSecondaryMenuContentProvider({children}){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({component:null,props:null});return/*#__PURE__*/ (// @ts-expect-error: this context is hard to type -react__WEBPACK_IMPORTED_MODULE_0__.createElement(Context.Provider,{value:value},children));}/** @internal */function useNavbarSecondaryMenuContent(){const value=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!value){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__/* .ReactContextError */ .i6('NavbarSecondaryMenuContentProvider');}return value[0];}/** - * This component renders nothing by itself, but it fills the placeholder in the - * generic secondary menu layout. This reduces coupling between the main layout - * and the specific page. - * - * This kind of feature is often called portal/teleport/gateway/outlet... - * Various unmaintained React libs exist. Most up-to-date one: - * https://github.com/gregberge/react-teleporter - * Not sure any of those is safe regarding concurrent mode. - */function NavbarSecondaryMenuFiller({component,props}){const context=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(Context);if(!context){throw new _utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__/* .ReactContextError */ .i6('NavbarSecondaryMenuContentProvider');}const[,setContent]=context;// To avoid useless context re-renders, props are memoized shallowly -const memoizedProps=(0,_utils_reactUtils__WEBPACK_IMPORTED_MODULE_1__/* .useShallowMemoObject */ .Ql)(props);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{// @ts-expect-error: this context is hard to type -setContent({component,props:memoizedProps});},[setContent,component,memoizedProps]);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>()=>setContent({component:null,props:null}),[setContent]);return null;} - -/***/ }), - -/***/ 7838: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - h: () => (/* binding */ keyboardFocusedClassName), - t: () => (/* binding */ useKeyboardNavigation) -}); - -// EXTERNAL MODULE: ./node_modules/react/index.js -var react = __webpack_require__(7294); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/styles.css -// extracted by mini-css-extract-plugin - -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/hooks/useKeyboardNavigation.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. - */const keyboardFocusedClassName='navigation-with-keyboard';/** - * Side-effect that adds the `keyboardFocusedClassName` to the body element when - * the keyboard has been pressed, or removes it when the mouse is clicked. - * - * The presence of this class name signals that the user may be using keyboard - * for navigation, and the theme **must** add focus outline when this class name - * is present. (And optionally not if it's absent, for design purposes) - * - * Inspired by https://hackernoon.com/removing-that-ugly-focus-ring-and-keeping-it-too-6c8727fefcd2 - */function useKeyboardNavigation(){(0,react.useEffect)(()=>{function handleOutlineStyles(e){if(e.type==='keydown'&&e.key==='Tab'){document.body.classList.add(keyboardFocusedClassName);}if(e.type==='mousedown'){document.body.classList.remove(keyboardFocusedClassName);}}document.addEventListener('keydown',handleOutlineStyles);document.addEventListener('mousedown',handleOutlineStyles);return()=>{document.body.classList.remove(keyboardFocusedClassName);document.removeEventListener('keydown',handleOutlineStyles);document.removeEventListener('mousedown',handleOutlineStyles);};},[]);} - -/***/ }), - -/***/ 7524: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ i: () => (/* binding */ useWindowSize) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(412); -/** - * 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. - */const windowSizes={desktop:'desktop',mobile:'mobile',ssr:'ssr'};const DesktopThresholdWidth=996;function getWindowSize(){if(!_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z.canUseDOM){return windowSizes.ssr;}return window.innerWidth>DesktopThresholdWidth?windowSizes.desktop:windowSizes.mobile;}const DevSimulateSSR= false&&0;/** - * Gets the current window size as an enum value. We don't want it to return the - * actual width value, so that it only re-renders once a breakpoint is crossed. - * - * It may return `"ssr"`, which is very important to handle hydration FOUC or - * layout shifts. You have to handle it explicitly upfront. On the server, you - * may need to render BOTH the mobile/desktop elements (and hide one of them - * with mediaquery). We don't return `undefined` on purpose, to make it more - * explicit. - * - * In development mode, this hook will still return `"ssr"` for one second, to - * catch potential layout shifts, similar to strict mode calling effects twice. - */function useWindowSize(){const[windowSize,setWindowSize]=(0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(()=>{if(DevSimulateSSR){return'ssr';}return getWindowSize();});(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{function updateWindowSize(){setWindowSize(getWindowSize());}const timeout=DevSimulateSSR?window.setTimeout(updateWindowSize,1000):undefined;window.addEventListener('resize',updateWindowSize);return()=>{window.removeEventListener('resize',updateWindowSize);clearTimeout(timeout);};},[]);return windowSize;} - -/***/ }), - -/***/ 5281: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ k: () => (/* binding */ ThemeClassNames) -/* harmony export */ }); -/** - * 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. - */ // Please do not modify the classnames! This is a breaking change, and annoying -// for users! -/** - * These class names are used to style page layouts in Docusaurus, meant to be - * targeted by user-provided custom CSS selectors. - */const ThemeClassNames={page:{blogListPage:'blog-list-page',blogPostPage:'blog-post-page',blogTagsListPage:'blog-tags-list-page',blogTagPostListPage:'blog-tags-post-list-page',docsDocPage:'docs-doc-page',docsTagsListPage:'docs-tags-list-page',docsTagDocListPage:'docs-tags-doc-list-page',mdxPage:'mdx-page'},wrapper:{main:'main-wrapper',blogPages:'blog-wrapper',docsPages:'docs-wrapper',mdxPages:'mdx-wrapper'},common:{editThisPage:'theme-edit-this-page',lastUpdated:'theme-last-updated',backToTopButton:'theme-back-to-top-button',codeBlock:'theme-code-block',admonition:'theme-admonition',admonitionType:type=>`theme-admonition-${type}`},layout:{// TODO add other stable classNames here -},/** - * Follows the naming convention "theme-{blog,doc,version,page}?-" - */docs:{docVersionBanner:'theme-doc-version-banner',docVersionBadge:'theme-doc-version-badge',docBreadcrumbs:'theme-doc-breadcrumbs',docMarkdown:'theme-doc-markdown',docTocMobile:'theme-doc-toc-mobile',docTocDesktop:'theme-doc-toc-desktop',docFooter:'theme-doc-footer',docFooterTagsRow:'theme-doc-footer-tags-row',docFooterEditMetaRow:'theme-doc-footer-edit-meta-row',docSidebarContainer:'theme-doc-sidebar-container',docSidebarMenu:'theme-doc-sidebar-menu',docSidebarItemCategory:'theme-doc-sidebar-item-category',docSidebarItemLink:'theme-doc-sidebar-item-link',docSidebarItemCategoryLevel:level=>`theme-doc-sidebar-item-category-level-${level}`,docSidebarItemLinkLevel:level=>`theme-doc-sidebar-item-link-level-${level}`// TODO add other stable classNames here -},blog:{// TODO add other stable classNames here -}}; - -/***/ }), - -/***/ 1442: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ n: () => (/* binding */ prefersReducedMotion) -/* harmony export */ }); -/** - * 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 prefersReducedMotion(){return window.matchMedia('(prefers-reduced-motion: reduce)').matches;} - -/***/ }), - -/***/ 2802: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - MN: () => (/* binding */ filterDocCardListItems), - Wl: () => (/* binding */ findFirstCategoryLink), - _F: () => (/* binding */ isActiveSidebarItem), - cE: () => (/* binding */ isDocsPluginEnabled), - jA: () => (/* binding */ useCurrentSidebarCategory), - xz: () => (/* binding */ useDocById), - hI: () => (/* binding */ useDocRouteMetadata), - lO: () => (/* binding */ useDocsVersionCandidates), - vY: () => (/* binding */ useLayoutDoc), - oz: () => (/* binding */ useLayoutDocsSidebar), - s1: () => (/* binding */ useSidebarBreadcrumbs) -}); - -// UNUSED EXPORTS: findSidebarCategory - -// EXTERNAL MODULE: ./node_modules/react/index.js -var react = __webpack_require__(7294); -// EXTERNAL MODULE: ./node_modules/react-router/esm/react-router.js -var react_router = __webpack_require__(6550); -// EXTERNAL MODULE: ./node_modules/react-router-config/esm/react-router-config.js -var react_router_config = __webpack_require__(8790); -// EXTERNAL MODULE: ./node_modules/@docusaurus/plugin-content-docs/lib/client/index.js + 2 modules -var client = __webpack_require__(143); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/docsPreferredVersion.js -var docsPreferredVersion = __webpack_require__(373); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/docsVersion.js -var docsVersion = __webpack_require__(4477); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/contexts/docsSidebar.js -var docsSidebar = __webpack_require__(1116); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/jsUtils.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. - */ // A replacement of lodash in client code -/** - * Gets the duplicate values in an array. - * @param arr The array. - * @param comparator Compares two values and returns `true` if they are equal - * (duplicated). - * @returns Value of the elements `v` that have a preceding element `u` where - * `comparator(u, v) === true`. Values within the returned array are not - * guaranteed to be unique. - */function duplicates(arr,comparator=(a,b)=>a===b){return arr.filter((v,vIndex)=>arr.findIndex(u=>comparator(u,v))!==vIndex);}/** - * Remove duplicate array items (similar to `_.uniq`) - * @param arr The array. - * @returns An array with duplicate elements removed by reference comparison. - */function uniq(arr){// Note: had problems with [...new Set()]: https://github.com/facebook/docusaurus/issues/4972#issuecomment-863895061 -return Array.from(new Set(arr));} -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/routesUtils.js -var routesUtils = __webpack_require__(8596); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/docsUtils.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. - */// TODO not ideal, see also "useDocs" -const isDocsPluginEnabled=!!client/* useAllDocsData */._r;function useDocById(id){const version=(0,docsVersion/* useDocsVersion */.E)();if(!id){return undefined;}const doc=version.docs[id];if(!doc){throw new Error(`no version doc found by id=${id}`);}return doc;}/** - * Pure function, similar to `Array#find`, but works on the sidebar tree. - */function findSidebarCategory(sidebar,predicate){for(const item of sidebar){if(item.type==='category'){if(predicate(item)){return item;}const subItem=findSidebarCategory(item.items,predicate);if(subItem){return subItem;}}}return undefined;}/** - * Best effort to assign a link to a sidebar category. If the category doesn't - * have a link itself, we link to the first sub item with a link. - */function findFirstCategoryLink(item){if(item.href){return item.href;}for(const subItem of item.items){if(subItem.type==='link'){return subItem.href;}else if(subItem.type==='category'){const categoryLink=findFirstCategoryLink(subItem);if(categoryLink){return categoryLink;}}// Could be "html" items -}return undefined;}/** - * Gets the category associated with the current location. Should only be used - * on category index pages. - */function useCurrentSidebarCategory(){const{pathname}=(0,react_router/* useLocation */.TH)();const sidebar=(0,docsSidebar/* useDocsSidebar */.V)();if(!sidebar){throw new Error('Unexpected: cant find current sidebar in context');}const categoryBreadcrumbs=getSidebarBreadcrumbs({sidebarItems:sidebar.items,pathname,onlyCategories:true});const deepestCategory=categoryBreadcrumbs.slice(-1)[0];if(!deepestCategory){throw new Error(`${pathname} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);}return deepestCategory;}const isActive=(testedPath,activePath)=>typeof testedPath!=='undefined'&&(0,routesUtils/* isSamePath */.Mg)(testedPath,activePath);const containsActiveSidebarItem=(items,activePath)=>items.some(subItem=>isActiveSidebarItem(subItem,activePath));/** - * Checks if a sidebar item should be active, based on the active path. - */function isActiveSidebarItem(item,activePath){if(item.type==='link'){return isActive(item.href,activePath);}if(item.type==='category'){return isActive(item.href,activePath)||containsActiveSidebarItem(item.items,activePath);}return false;}/** - * Get the sidebar the breadcrumbs for a given pathname - * Ordered from top to bottom - */function getSidebarBreadcrumbs({sidebarItems,pathname,onlyCategories=false}){const breadcrumbs=[];function extract(items){for(const item of items){if(item.type==='category'&&((0,routesUtils/* isSamePath */.Mg)(item.href,pathname)||extract(item.items))||item.type==='link'&&(0,routesUtils/* isSamePath */.Mg)(item.href,pathname)){const filtered=onlyCategories&&item.type!=='category';if(!filtered){breadcrumbs.unshift(item);}return true;}}return false;}extract(sidebarItems);return breadcrumbs;}/** - * Gets the breadcrumbs of the current doc page, based on its sidebar location. - * Returns `null` if there's no sidebar or breadcrumbs are disabled. - */function useSidebarBreadcrumbs(){const sidebar=(0,docsSidebar/* useDocsSidebar */.V)();const{pathname}=(0,react_router/* useLocation */.TH)();const breadcrumbsOption=(0,client/* useActivePlugin */.gA)()?.pluginData.breadcrumbs;if(breadcrumbsOption===false||!sidebar){return null;}return getSidebarBreadcrumbs({sidebarItems:sidebar.items,pathname});}/** - * "Version candidates" are mostly useful for the layout components, which must - * be able to work on all pages. For example, if a user has `{ type: "doc", - * docId: "intro" }` as a navbar item, which version does that refer to? We - * believe that it could refer to at most three version candidates: - * - * 1. The **active version**, the one that the user is currently browsing. See - * {@link useActiveDocContext}. - * 2. The **preferred version**, the one that the user last visited. See - * {@link useDocsPreferredVersion}. - * 3. The **latest version**, the "default". See {@link useLatestVersion}. - * - * @param docsPluginId The plugin ID to get versions from. - * @returns An array of 1~3 versions with priorities defined above, guaranteed - * to be unique and non-sparse. Will be memoized, hence stable for deps array. - */function useDocsVersionCandidates(docsPluginId){const{activeVersion}=(0,client/* useActiveDocContext */.Iw)(docsPluginId);const{preferredVersion}=(0,docsPreferredVersion/* useDocsPreferredVersion */.J)(docsPluginId);const latestVersion=(0,client/* useLatestVersion */.yW)(docsPluginId);return (0,react.useMemo)(()=>uniq([activeVersion,preferredVersion,latestVersion].filter(Boolean)),[activeVersion,preferredVersion,latestVersion]);}/** - * The layout components, like navbar items, must be able to work on all pages, - * even on non-doc ones where there's no version context, so a sidebar ID could - * be ambiguous. This hook would always return a sidebar to be linked to. See - * also {@link useDocsVersionCandidates} for how this selection is done. - * - * @throws This hook throws if a sidebar with said ID is not found. - */function useLayoutDocsSidebar(sidebarId,docsPluginId){const versions=useDocsVersionCandidates(docsPluginId);return (0,react.useMemo)(()=>{const allSidebars=versions.flatMap(version=>version.sidebars?Object.entries(version.sidebars):[]);const sidebarEntry=allSidebars.find(sidebar=>sidebar[0]===sidebarId);if(!sidebarEntry){throw new Error(`Can't find any sidebar with id "${sidebarId}" in version${versions.length>1?'s':''} ${versions.map(version=>version.name).join(', ')}". -Available sidebar ids are: -- ${allSidebars.map(entry=>entry[0]).join('\n- ')}`);}return sidebarEntry[1];},[sidebarId,versions]);}/** - * The layout components, like navbar items, must be able to work on all pages, - * even on non-doc ones where there's no version context, so a doc ID could be - * ambiguous. This hook would always return a doc to be linked to. See also - * {@link useDocsVersionCandidates} for how this selection is done. - * - * @throws This hook throws if a doc with said ID is not found. - */function useLayoutDoc(docId,docsPluginId){const versions=useDocsVersionCandidates(docsPluginId);return (0,react.useMemo)(()=>{const allDocs=versions.flatMap(version=>version.docs);const doc=allDocs.find(versionDoc=>versionDoc.id===docId);if(!doc){const isDraft=versions.flatMap(version=>version.draftIds).includes(docId);// Drafts should be silently filtered instead of throwing -if(isDraft){return null;}throw new Error(`Couldn't find any doc with id "${docId}" in version${versions.length>1?'s':''} "${versions.map(version=>version.name).join(', ')}". -Available doc ids are: -- ${uniq(allDocs.map(versionDoc=>versionDoc.id)).join('\n- ')}`);}return doc;},[docId,versions]);}// TODO later read version/route directly from context -/** - * The docs plugin creates nested routes, with the top-level route providing the - * version metadata, and the subroutes creating individual doc pages. This hook - * will match the current location against all known sub-routes. - * - * @param props The props received by `@theme/DocPage` - * @returns The data of the relevant document at the current location, or `null` - * if no document associated with the current location can be found. - */function useDocRouteMetadata({route,versionMetadata}){const location=(0,react_router/* useLocation */.TH)();const docRoutes=route.routes;const currentDocRoute=docRoutes.find(docRoute=>(0,react_router/* matchPath */.LX)(location.pathname,docRoute));if(!currentDocRoute){return null;}// For now, the sidebarName is added as route config: not ideal! -const sidebarName=currentDocRoute.sidebar;const sidebarItems=sidebarName?versionMetadata.docsSidebars[sidebarName]:undefined;const docElement=(0,react_router_config/* renderRoutes */.H)(docRoutes);return{docElement,sidebarName,sidebarItems};}/** - * Filter categories that don't have a link. - * @param items - */function filterDocCardListItems(items){return items.filter(item=>{if(item.type==='category'){return!!findFirstCategoryLink(item);}return true;});} - -/***/ }), - -/***/ 1944: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - FG: () => (/* binding */ HtmlClassNameProvider), - d: () => (/* binding */ PageMetadata), - VC: () => (/* binding */ PluginHtmlClassNameProvider) -}); - -// EXTERNAL MODULE: ./node_modules/react/index.js -var react = __webpack_require__(7294); -// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.m.js -var clsx_m = __webpack_require__(6010); -// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Head.js -var Head = __webpack_require__(5742); -// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/routeContext.js -var routeContext = __webpack_require__(226); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useRouteContext.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 useRouteContext(){const context=react.useContext(routeContext/* Context */._);if(!context){throw new Error('Unexpected: no Docusaurus route context found');}return context;} -// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useBaseUrl.js -var useBaseUrl = __webpack_require__(4996); -// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js -var useDocusaurusContext = __webpack_require__(2263); -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/generalUtils.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. - *//** - * Formats the page's title based on relevant site config and other contexts. - */function useTitleFormatter(title){const{siteConfig}=(0,useDocusaurusContext/* default */.Z)();const{title:siteTitle,titleDelimiter}=siteConfig;return title?.trim().length?`${title.trim()} ${titleDelimiter} ${siteTitle}`:siteTitle;} -;// CONCATENATED MODULE: ./node_modules/@docusaurus/theme-common/lib/utils/metadataUtils.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. - *//** - * Helper component to manipulate page metadata and override site defaults. - * Works in the same way as Helmet. - */function PageMetadata({title,description,keywords,image,children}){const pageTitle=useTitleFormatter(title);const{withBaseUrl}=(0,useBaseUrl/* useBaseUrlUtils */.C)();const pageImage=image?withBaseUrl(image,{absolute:true}):undefined;return/*#__PURE__*/react.createElement(Head/* default */.Z,null,title&&/*#__PURE__*/react.createElement("title",null,pageTitle),title&&/*#__PURE__*/react.createElement("meta",{property:"og:title",content:pageTitle}),description&&/*#__PURE__*/react.createElement("meta",{name:"description",content:description}),description&&/*#__PURE__*/react.createElement("meta",{property:"og:description",content:description}),keywords&&/*#__PURE__*/react.createElement("meta",{name:"keywords",content:// https://github.com/microsoft/TypeScript/issues/17002 -Array.isArray(keywords)?keywords.join(','):keywords}),pageImage&&/*#__PURE__*/react.createElement("meta",{property:"og:image",content:pageImage}),pageImage&&/*#__PURE__*/react.createElement("meta",{name:"twitter:image",content:pageImage}),children);}const HtmlClassNameContext=/*#__PURE__*/react.createContext(undefined);/** - * Every layer of this provider will append a class name to the HTML element. - * There's no consumer for this hook: it's side-effect-only. This wrapper is - * necessary because Helmet does not "merge" classes. - * @see https://github.com/staylor/react-helmet-async/issues/161 - */function HtmlClassNameProvider({className:classNameProp,children}){const classNameContext=react.useContext(HtmlClassNameContext);const className=(0,clsx_m/* default */.Z)(classNameContext,classNameProp);return/*#__PURE__*/react.createElement(HtmlClassNameContext.Provider,{value:className},/*#__PURE__*/react.createElement(Head/* default */.Z,null,/*#__PURE__*/react.createElement("html",{className:className})),children);}function pluginNameToClassName(pluginName){return`plugin-${pluginName.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,'')}`;}/** - * A very thin wrapper around `HtmlClassNameProvider` that adds the plugin ID + - * name to the HTML class name. - */function PluginHtmlClassNameProvider({children}){const routeContext=useRouteContext();const nameClass=pluginNameToClassName(routeContext.plugin.name);const idClass=`plugin-id-${routeContext.plugin.id}`;return/*#__PURE__*/react.createElement(HtmlClassNameProvider,{className:(0,clsx_m/* default */.Z)(nameClass,idClass)},children);} - -/***/ }), - -/***/ 902: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ D9: () => (/* binding */ usePrevious), -/* harmony export */ Qc: () => (/* binding */ composeProviders), -/* harmony export */ Ql: () => (/* binding */ useShallowMemoObject), -/* harmony export */ i6: () => (/* binding */ ReactContextError), -/* harmony export */ zX: () => (/* binding */ useEvent) -/* harmony export */ }); -/* unused harmony export useIsomorphicLayoutEffect */ -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(412); -/** - * 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. - *//** - * This hook is like `useLayoutEffect`, but without the SSR warning. - * It seems hacky but it's used in many React libs (Redux, Formik...). - * Also mentioned here: https://github.com/facebook/react/issues/16956 - * - * It is useful when you need to update a ref as soon as possible after a React - * render (before `useEffect`). - */const useIsomorphicLayoutEffect=_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z.canUseDOM?react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect:react__WEBPACK_IMPORTED_MODULE_0__.useEffect;/** - * Temporary userland implementation until an official hook is implemented - * See RFC: https://github.com/reactjs/rfcs/pull/220 - * - * Permits to transform an unstable callback (like an arrow function provided as - * props) to a "stable" callback that is safe to use in a `useEffect` dependency - * array. Useful to avoid React stale closure problems + avoid useless effect - * re-executions. - * - * This generally works but has some potential drawbacks, such as - * https://github.com/facebook/react/issues/16956#issuecomment-536636418 - */function useEvent(callback){const ref=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(callback);useIsomorphicLayoutEffect(()=>{ref.current=callback;},[callback]);// @ts-expect-error: TS is right that this callback may be a supertype of T, -// but good enough for our use -return (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((...args)=>ref.current(...args),[]);}/** - * Gets `value` from the last render. - */function usePrevious(value){const ref=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();useIsomorphicLayoutEffect(()=>{ref.current=value;});return ref.current;}/** - * This error is thrown when a context is consumed outside its provider. Allows - * reusing a generic error message format and reduces bundle size. The hook's - * name will be extracted from its stack, so only the provider's name is needed. - */class ReactContextError extends Error{constructor(providerName,additionalInfo){super();this.name='ReactContextError';this.message=`Hook ${this.stack?.split('\n')[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??''} is called outside the <${providerName}>. ${additionalInfo??''}`;}}/** - * Shallow-memoize an object. This means the returned object will be the same as - * the previous render if the property keys and values did not change. This - * works for simple cases: when property values are primitives or stable - * objects. - * - * @param obj - */function useShallowMemoObject(obj){const deps=Object.entries(obj);// Sort by keys to make it order-insensitive -deps.sort((a,b)=>a[0].localeCompare(b[0]));// eslint-disable-next-line react-hooks/exhaustive-deps -return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>obj,deps.flat());}/** - * Creates a single React provider from an array of existing providers - * assuming providers only take "children" as props. - * - * Prevents the annoying React element nesting - * Example here: https://getfrontend.tips/compose-multiple-react-providers/ - * - * The order matters: - * - The first provider is at the top of the tree. - * - The last provider is the most nested one - * - * @param providers array of providers to compose - */function composeProviders(providers){// Creates a single React component: it's cheaper to compose JSX elements -return({children})=>/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,providers.reduceRight((element,CurrentProvider)=>/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(CurrentProvider,null,element),children));} - -/***/ }), - -/***/ 8596: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Mg: () => (/* binding */ isSamePath), -/* harmony export */ Ns: () => (/* binding */ useHomePageRoute) -/* harmony export */ }); -/* unused harmony export findHomePageRoute */ -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _generated_routes__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5688); -/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2263); -/** - * 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. - *//** - * Compare the 2 paths, case insensitive and ignoring trailing slash - */function isSamePath(path1,path2){const normalize=pathname=>(!pathname||pathname.endsWith('/')?pathname:`${pathname}/`)?.toLowerCase();return normalize(path1)===normalize(path2);}/** - * Note that sites don't always have a homepage in practice, so we can't assume - * that linking to '/' is always safe. - * @see https://github.com/facebook/docusaurus/pull/6517#issuecomment-1048709116 - */function findHomePageRoute({baseUrl,routes:initialRoutes}){function isHomePageRoute(route){return route.path===baseUrl&&route.exact===true;}function isHomeParentRoute(route){return route.path===baseUrl&&!route.exact;}function doFindHomePageRoute(routes){if(routes.length===0){return undefined;}const homePage=routes.find(isHomePageRoute);if(homePage){return homePage;}const indexSubRoutes=routes.filter(isHomeParentRoute).flatMap(route=>route.routes??[]);return doFindHomePageRoute(indexSubRoutes);}return doFindHomePageRoute(initialRoutes);}/** - * Fetches the route that points to "/". Use this instead of the naive "/", - * because the homepage may not exist. - */function useHomePageRoute(){const{baseUrl}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)().siteConfig;return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>findHomePageRoute({routes:_generated_routes__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,baseUrl}),[baseUrl]);} - -/***/ }), - -/***/ 2466: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Ct: () => (/* binding */ useSmoothScrollTo), -/* harmony export */ OC: () => (/* binding */ ScrollControllerProvider), -/* harmony export */ RF: () => (/* binding */ useScrollPosition) -/* harmony export */ }); -/* unused harmony exports useScrollController, useScrollPositionBlocker */ -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(412); -/* harmony import */ var _docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2389); -/* harmony import */ var _reactUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(902); -/** - * 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 useScrollControllerContextValue(){const scrollEventsEnabledRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(true);return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(()=>({scrollEventsEnabledRef,enableScrollEvents:()=>{scrollEventsEnabledRef.current=true;},disableScrollEvents:()=>{scrollEventsEnabledRef.current=false;}}),[]);}const ScrollMonitorContext=/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(undefined);function ScrollControllerProvider({children}){const value=useScrollControllerContextValue();return/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ScrollMonitorContext.Provider,{value:value},children);}/** - * We need a way to update the scroll position while ignoring scroll events - * so as not to toggle Navbar/BackToTop visibility. - * - * This API permits to temporarily disable/ignore scroll events. Motivated by - * https://github.com/facebook/docusaurus/pull/5618 - */function useScrollController(){const context=(0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(ScrollMonitorContext);if(context==null){throw new _reactUtils__WEBPACK_IMPORTED_MODULE_3__/* .ReactContextError */ .i6('ScrollControllerProvider');}return context;}const getScrollPosition=()=>_docusaurus_ExecutionEnvironment__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;/** - * This hook fires an effect when the scroll position changes. The effect will - * be provided with the before/after scroll positions. Note that the effect may - * not be always run: if scrolling is disabled through `useScrollController`, it - * will be a no-op. - * - * @see {@link useScrollController} - */function useScrollPosition(effect,deps=[]){const{scrollEventsEnabledRef}=useScrollController();const lastPositionRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(getScrollPosition());const dynamicEffect=(0,_reactUtils__WEBPACK_IMPORTED_MODULE_3__/* .useEvent */ .zX)(effect);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{const handleScroll=()=>{if(!scrollEventsEnabledRef.current){return;}const currentPosition=getScrollPosition();dynamicEffect(currentPosition,lastPositionRef.current);lastPositionRef.current=currentPosition;};const opts={passive:true};handleScroll();window.addEventListener('scroll',handleScroll,opts);return()=>window.removeEventListener('scroll',handleScroll,opts);// eslint-disable-next-line react-hooks/exhaustive-deps -},[dynamicEffect,scrollEventsEnabledRef,...deps]);}function useScrollPositionSaver(){const lastElementRef=useRef({elem:null,top:0});const save=useCallback(elem=>{lastElementRef.current={elem,top:elem.getBoundingClientRect().top};},[]);const restore=useCallback(()=>{const{current:{elem,top}}=lastElementRef;if(!elem){return{restored:false};}const newTop=elem.getBoundingClientRect().top;const heightDiff=newTop-top;if(heightDiff){window.scrollBy({left:0,top:heightDiff});}lastElementRef.current={elem:null,top:0};return{restored:heightDiff!==0};},[]);return useMemo(()=>({save,restore}),[restore,save]);}/** - * This hook permits to "block" the scroll position of a DOM element. - * The idea is that we should be able to update DOM content above this element - * but the screen position of this element should not change. - * - * Feature motivated by the Tabs groups: clicking on a tab may affect tabs of - * the same group upper in the tree, yet to avoid a bad UX, the clicked tab must - * remain under the user mouse. - * - * @see https://github.com/facebook/docusaurus/pull/5618 - */function useScrollPositionBlocker(){const scrollController=useScrollController();const scrollPositionSaver=useScrollPositionSaver();const nextLayoutEffectCallbackRef=useRef(undefined);const blockElementScrollPositionUntilNextRender=useCallback(el=>{scrollPositionSaver.save(el);scrollController.disableScrollEvents();nextLayoutEffectCallbackRef.current=()=>{const{restored}=scrollPositionSaver.restore();nextLayoutEffectCallbackRef.current=undefined;// Restoring the former scroll position will trigger a scroll event. We -// need to wait for next scroll event to happen before enabling the -// scrollController events again. -if(restored){const handleScrollRestoreEvent=()=>{scrollController.enableScrollEvents();window.removeEventListener('scroll',handleScrollRestoreEvent);};window.addEventListener('scroll',handleScrollRestoreEvent);}else{scrollController.enableScrollEvents();}};},[scrollController,scrollPositionSaver]);useLayoutEffect(()=>{// Queuing permits to restore scroll position after all useLayoutEffect -// have run, and yet preserve the sync nature of the scroll restoration -// See https://github.com/facebook/docusaurus/issues/8625 -queueMicrotask(()=>nextLayoutEffectCallbackRef.current?.());});return{blockElementScrollPositionUntilNextRender};}function smoothScrollNative(top){window.scrollTo({top,behavior:'smooth'});return()=>{// Nothing to cancel, it's natively cancelled if user tries to scroll down -};}function smoothScrollPolyfill(top){let raf=null;const isUpScroll=document.documentElement.scrollTop>top;function rafRecursion(){const currentScroll=document.documentElement.scrollTop;if(isUpScroll&¤tScroll>top||!isUpScroll&¤tScrollraf&&cancelAnimationFrame(raf);}/** - * A "smart polyfill" of `window.scrollTo({ top, behavior: "smooth" })`. - * This currently always uses a polyfilled implementation unless - * `scroll-behavior: smooth` has been set in CSS, because native support - * detection for scroll behavior seems unreliable. - * - * This hook does not do anything by itself: it returns a start and a stop - * handle. You can execute either handle at any time. - */function useSmoothScrollTo(){const cancelRef=(0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);const isBrowser=(0,_docusaurus_useIsBrowser__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)();// Not all have support for smooth scrolling (particularly Safari mobile iOS) -// TODO proper detection is currently unreliable! -// see https://github.com/wessberg/scroll-behavior-polyfill/issues/16 -// For now, we only use native scroll behavior if smooth is already set, -// because otherwise the polyfill produces a weird UX when both CSS and JS try -// to scroll a page, and they cancel each other. -const supportsNativeSmoothScrolling=isBrowser&&getComputedStyle(document.documentElement).scrollBehavior==='smooth';return{startScroll:top=>{cancelRef.current=supportsNativeSmoothScrolling?smoothScrollNative(top):smoothScrollPolyfill(top);},cancelScroll:()=>cancelRef.current?.()};} - -/***/ }), - -/***/ 3320: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ HX: () => (/* binding */ DEFAULT_SEARCH_TAG), -/* harmony export */ os: () => (/* binding */ docVersionSearchTag) -/* harmony export */ }); -/* unused harmony export useContextualSearchFilters */ -/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2263); -/** - * 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. - */const DEFAULT_SEARCH_TAG='default';/** The search tag to append as each doc's metadata. */function docVersionSearchTag(pluginId,versionName){return`docs-${pluginId}-${versionName}`;}/** - * Gets the relevant context information for contextual search. - * - * The value is generic and not coupled to Algolia/DocSearch, since we may want - * to support multiple search engines, or allowing users to use their own search - * engine solution. - */function useContextualSearchFilters(){const{i18n}=useDocusaurusContext();const allDocsData=useAllDocsData();const activePluginAndVersion=useActivePluginAndVersion();const docsPreferredVersionByPluginId=useDocsPreferredVersionByPluginId();// This can't use more specialized hooks because we are mapping over all -// plugin instances. -function getDocPluginTags(pluginId){const activeVersion=activePluginAndVersion?.activePlugin.pluginId===pluginId?activePluginAndVersion.activeVersion:undefined;const preferredVersion=docsPreferredVersionByPluginId[pluginId];const latestVersion=allDocsData[pluginId].versions.find(v=>v.isLast);const version=activeVersion??preferredVersion??latestVersion;return docVersionSearchTag(pluginId,version.name);}const tags=[DEFAULT_SEARCH_TAG,...Object.keys(allDocsData).map(getDocPluginTags)];return{locale:i18n.currentLocale,tags};} - -/***/ }), - -/***/ 12: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ WA: () => (/* binding */ createStorageSlot) -/* harmony export */ }); -/* unused harmony exports useStorageSlot, listStorageKeys */ -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var use_sync_external_store_shim__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1688); -/** - * 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. - */// @ts-expect-error: TODO temp error until React 18 upgrade -const StorageTypes=(/* unused pure expression or super */ null && (['localStorage','sessionStorage','none']));const DefaultStorageType='localStorage';// window.addEventListener('storage') only works for different windows... -// so for current window we have to dispatch the event manually -// Now we can listen for both cross-window / current-window storage changes! -// see https://stackoverflow.com/a/71177640/82609 -// see https://stackoverflow.com/questions/26974084/listen-for-changes-with-localstorage-on-the-same-window -function dispatchChangeEvent({key,oldValue,newValue,storage}){// If we set multiple times the same storage value, events should not be fired -// The native events behave this way, so our manual event dispatch should -// rather behave exactly the same. Not doing so might create infinite loops. -// See https://github.com/facebook/docusaurus/issues/8594 -if(oldValue===newValue){return;}const event=document.createEvent('StorageEvent');event.initStorageEvent('storage',false,false,key,oldValue,newValue,window.location.href,storage);window.dispatchEvent(event);}/** - * Will return `null` if browser storage is unavailable (like running Docusaurus - * in an iframe). This should NOT be called in SSR. - * - * @see https://github.com/facebook/docusaurus/pull/4501 - */function getBrowserStorage(storageType=DefaultStorageType){if(typeof window==='undefined'){throw new Error('Browser storage is not available on Node.js/Docusaurus SSR process.');}if(storageType==='none'){return null;}try{return window[storageType];}catch(err){logOnceBrowserStorageNotAvailableWarning(err);return null;}}let hasLoggedBrowserStorageNotAvailableWarning=false;/** - * Poor man's memoization to avoid logging multiple times the same warning. - * Sometimes, `localStorage`/`sessionStorage` is unavailable due to browser - * policies. - */function logOnceBrowserStorageNotAvailableWarning(error){if(!hasLoggedBrowserStorageNotAvailableWarning){console.warn(`Docusaurus browser storage is not available. -Possible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.`,error);hasLoggedBrowserStorageNotAvailableWarning=true;}}const NoopStorageSlot={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};// Fail-fast, as storage APIs should not be used during the SSR process -function createServerStorageSlot(key){function throwError(){throw new Error(`Illegal storage API usage for storage key "${key}". -Docusaurus storage APIs are not supposed to be called on the server-rendering process. -Please only call storage APIs in effects and event handlers.`);}return{get:throwError,set:throwError,del:throwError,listen:throwError};}/** - * Creates an interface to work on a particular key in the storage model. - * Note that this function only initializes the interface, but doesn't allocate - * anything by itself (i.e. no side-effects). - * - * The API is fail-safe, since usage of browser storage should be considered - * unreliable. Local storage might simply be unavailable (iframe + browser - * security) or operations might fail individually. Please assume that using - * this API can be a no-op. See also https://github.com/facebook/docusaurus/issues/6036 - */function createStorageSlot(key,options){if(typeof window==='undefined'){return createServerStorageSlot(key);}const storage=getBrowserStorage(options?.persistence);if(storage===null){return NoopStorageSlot;}return{get:()=>{try{return storage.getItem(key);}catch(err){console.error(`Docusaurus storage error, can't get key=${key}`,err);return null;}},set:newValue=>{try{const oldValue=storage.getItem(key);storage.setItem(key,newValue);dispatchChangeEvent({key,oldValue,newValue,storage});}catch(err){console.error(`Docusaurus storage error, can't set ${key}=${newValue}`,err);}},del:()=>{try{const oldValue=storage.getItem(key);storage.removeItem(key);dispatchChangeEvent({key,oldValue,newValue:null,storage});}catch(err){console.error(`Docusaurus storage error, can't delete key=${key}`,err);}},listen:onChange=>{try{const listener=event=>{if(event.storageArea===storage&&event.key===key){onChange(event);}};window.addEventListener('storage',listener);return()=>window.removeEventListener('storage',listener);}catch(err){console.error(`Docusaurus storage error, can't listen for changes of key=${key}`,err);return()=>{};}}};}function useStorageSlot(key,options){// Not ideal but good enough: assumes storage slot config is constant -const storageSlot=useRef(()=>{if(key===null){return NoopStorageSlot;}return createStorageSlot(key,options);}).current();const listen=useCallback(onChange=>{// Do not try to add a listener during SSR -if(typeof window==='undefined'){return()=>{};}return storageSlot.listen(onChange);},[storageSlot]);const currentValue=useSyncExternalStore(listen,()=>{// TODO this check should be useless after React 18 -if(typeof window==='undefined'){return null;}return storageSlot.get();},()=>null);return[currentValue,storageSlot];}/** - * Returns a list of all the keys currently stored in browser storage, - * or an empty list if browser storage can't be accessed. - */function listStorageKeys(storageType=DefaultStorageType){const browserStorage=getBrowserStorage(storageType);if(!browserStorage){return[];}const keys=[];for(let i=0;i { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ l: () => (/* binding */ useAlternatePageUtils) -/* harmony export */ }); -/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2263); -/* harmony import */ var _docusaurus_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6550); -/* harmony import */ var _docusaurus_utils_common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8780); -/* harmony import */ var _docusaurus_utils_common__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_docusaurus_utils_common__WEBPACK_IMPORTED_MODULE_2__); -/** - * 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. - *//** - * Permits to obtain the url of the current page in another locale, useful to - * generate hreflang meta headers etc... - * - * @see https://developers.google.com/search/docs/advanced/crawling/localized-versions - */function useAlternatePageUtils(){const{siteConfig:{baseUrl,url,trailingSlash},i18n:{defaultLocale,currentLocale}}=(0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)();// TODO using useLocation().pathname is not a super idea -// See https://github.com/facebook/docusaurus/issues/9170 -const{pathname}=(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_1__/* .useLocation */ .TH)();const canonicalPathname=(0,_docusaurus_utils_common__WEBPACK_IMPORTED_MODULE_2__.applyTrailingSlash)(pathname,{trailingSlash,baseUrl});const baseUrlUnlocalized=currentLocale===defaultLocale?baseUrl:baseUrl.replace(`/${currentLocale}/`,'/');const pathnameSuffix=canonicalPathname.replace(baseUrl,'');function getLocalizedBaseUrl(locale){return locale===defaultLocale?`${baseUrlUnlocalized}`:`${baseUrlUnlocalized}${locale}/`;}// TODO support correct alternate url when localized site is deployed on -// another domain -function createUrl({locale,fullyQualified}){return`${fullyQualified?url:''}${getLocalizedBaseUrl(locale)}${pathnameSuffix}`;}return{createUrl};} - -/***/ }), - -/***/ 5936: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ S: () => (/* binding */ useLocationChange) -/* harmony export */ }); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _docusaurus_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(6550); -/* harmony import */ var _reactUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(902); -/** - * 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. - *//** - * Fires an effect when the location changes (which includes hash, query, etc.). - * Importantly, doesn't fire when there's no previous location: see - * https://github.com/facebook/docusaurus/pull/6696 - */function useLocationChange(onLocationChange){const location=(0,_docusaurus_router__WEBPACK_IMPORTED_MODULE_1__/* .useLocation */ .TH)();const previousLocation=(0,_reactUtils__WEBPACK_IMPORTED_MODULE_2__/* .usePrevious */ .D9)(location);const onLocationChangeDynamic=(0,_reactUtils__WEBPACK_IMPORTED_MODULE_2__/* .useEvent */ .zX)(onLocationChange);(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{if(!previousLocation){return;}if(location!==previousLocation){onLocationChangeDynamic({location,previousLocation});}},[onLocationChangeDynamic,location,previousLocation]);} - -/***/ }), - -/***/ 6668: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ L: () => (/* binding */ useThemeConfig) -/* harmony export */ }); -/* harmony import */ var _docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2263); -/** - * 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. - *//** - * A convenient/more semantic way to get theme config from context. - */function useThemeConfig(){return (0,_docusaurus_useDocusaurusContext__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)().siteConfig.themeConfig;} - -/***/ }), - -/***/ 8802: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; -/** - * 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. - */Object.defineProperty(exports, "__esModule", ({value:true}));// Trailing slash handling depends in some site configuration options -function applyTrailingSlash(path,options){const{trailingSlash,baseUrl}=options;if(path.startsWith('#')){// Never apply trailing slash to an anchor link -return path;}// TODO deduplicate: also present in @docusaurus/utils -function addTrailingSlash(str){return str.endsWith('/')?str:`${str}/`;}function removeTrailingSlash(str){return str.endsWith('/')?str.slice(0,-1):str;}function handleTrailingSlash(str,trailing){return trailing?addTrailingSlash(str):removeTrailingSlash(str);}// undefined = legacy retrocompatible behavior -if(typeof trailingSlash==='undefined'){return path;}// The trailing slash should be handled before the ?search#hash ! -const[pathname]=path.split(/[#?]/);// Never transform '/' to '' -// Never remove the baseUrl trailing slash! -// If baseUrl = /myBase/, we want to emit /myBase/index.html and not -// /myBase.html! See https://github.com/facebook/docusaurus/issues/5077 -const shouldNotApply=pathname==='/'||pathname===baseUrl;const newPathname=shouldNotApply?pathname:handleTrailingSlash(pathname,trailingSlash);return path.replace(pathname,newPathname);}exports["default"]=applyTrailingSlash; - -/***/ }), - -/***/ 4143: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; -Object.defineProperty(exports, "__esModule", ({value:true}));exports.getErrorCausalChain=void 0;function getErrorCausalChain(error){if(error.cause){return[error,...getErrorCausalChain(error.cause)];}return[error];}exports.getErrorCausalChain=getErrorCausalChain; - -/***/ }), - -/***/ 8780: -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{"default":mod};};Object.defineProperty(exports, "__esModule", ({value:true}));exports.getErrorCausalChain=exports.applyTrailingSlash=exports.blogPostContainerID=void 0;// __ prefix allows search crawlers (Algolia/DocSearch) to ignore anchors -// https://github.com/facebook/docusaurus/issues/8883#issuecomment-1516328368 -exports.blogPostContainerID='__blog-post-container';var applyTrailingSlash_1=__webpack_require__(8802);Object.defineProperty(exports, "applyTrailingSlash", ({enumerable:true,get:function(){return __importDefault(applyTrailingSlash_1).default;}}));var errorUtils_1=__webpack_require__(4143);Object.defineProperty(exports, "getErrorCausalChain", ({enumerable:true,get:function(){return errorUtils_1.getErrorCausalChain;}})); - -/***/ }), - -/***/ 4669: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -// ESM COMPAT FLAG -__webpack_require__.r(__webpack_exports__); - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - "default": () => (/* binding */ Home) -}); - -// EXTERNAL MODULE: ./node_modules/react/index.js -var react = __webpack_require__(7294); -// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.m.js -var clsx_m = __webpack_require__(6010); -// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/Link.js + 1 modules -var Link = __webpack_require__(9038); -// EXTERNAL MODULE: ./node_modules/@docusaurus/core/lib/client/exports/useDocusaurusContext.js -var useDocusaurusContext = __webpack_require__(2263); -// EXTERNAL MODULE: ./node_modules/@docusaurus/theme-classic/lib/theme/Layout/index.js + 53 modules -var Layout = __webpack_require__(5086); -// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js -var esm_extends = __webpack_require__(7462); -// EXTERNAL MODULE: ./src/components/HomepageFeatures/styles.module.css -var styles_module = __webpack_require__(7176); -var styles_module_default = /*#__PURE__*/__webpack_require__.n(styles_module); -;// CONCATENATED MODULE: ./src/components/HomepageFeatures/index.js -const FeatureList=[{title:'Low-level Insights',Svg:(__webpack_require__(4162)/* ["default"] */ .Z),description:/*#__PURE__*/react.createElement(react.Fragment,null,"The most major reasoning behind doing this project is to provide a comparison of older vs. newer languages when it comes to low-level programming, i.e. Systems Design.")},{title:'Scalibility, and Performance',Svg:(__webpack_require__(1536)/* ["default"] */ .Z),description:/*#__PURE__*/react.createElement(react.Fragment,null,"Operating System Developments are an amalgation of years of work, thus judging performance metrics can give an insight on potential ROIs for rewriting these systems in completely new languages.")},{title:'Hardware Agnostic',Svg:(__webpack_require__(334)/* ["default"] */ .Z),description:/*#__PURE__*/react.createElement(react.Fragment,null,"Tests conducted under this research process are on the compiler itself, and not dependent on hardware or platform. If x runs 5% better than y, it will run 5% faster on all hardware.")}];function Feature({Svg,title,description}){return/*#__PURE__*/react.createElement("div",{className:(0,clsx_m/* default */.Z)('col col--4')},/*#__PURE__*/react.createElement("div",{className:"text--center"},/*#__PURE__*/react.createElement(Svg,{className:(styles_module_default()).featureSvg,role:"img"})),/*#__PURE__*/react.createElement("div",{className:"text--center padding-horiz--md"},/*#__PURE__*/react.createElement("h3",null,title),/*#__PURE__*/react.createElement("p",null,description)));}function HomepageFeatures(){return/*#__PURE__*/react.createElement("section",{className:(styles_module_default()).features},/*#__PURE__*/react.createElement("div",{className:"container"},/*#__PURE__*/react.createElement("p",null,"The following website provides documentation for my research on comparing performance metrics on RUST and C++, two of the most widely-used low-level programming languages. While the documentation process in this website assumes an understanding of and experience with low-level systems programming, the content has been designed in a way to appeal to anyone doing software development."),/*#__PURE__*/react.createElement("br",null),/*#__PURE__*/react.createElement("div",{className:"row"},FeatureList.map((props,idx)=>/*#__PURE__*/react.createElement(Feature,(0,esm_extends/* default */.Z)({key:idx},props))))));} -// EXTERNAL MODULE: ./src/pages/index.module.css -var index_module = __webpack_require__(2902); -var index_module_default = /*#__PURE__*/__webpack_require__.n(index_module); -;// CONCATENATED MODULE: ./src/pages/index.js -function HomepageHeader(){const{siteConfig}=(0,useDocusaurusContext/* default */.Z)();return/*#__PURE__*/react.createElement("header",{className:(0,clsx_m/* default */.Z)('hero hero--primary',(index_module_default()).heroBanner)},/*#__PURE__*/react.createElement("div",{className:"container"},/*#__PURE__*/react.createElement("h1",{className:"hero__title"},siteConfig.title),/*#__PURE__*/react.createElement("p",{className:"hero__subtitle"},siteConfig.tagline),/*#__PURE__*/react.createElement("div",{className:(index_module_default()).buttons},/*#__PURE__*/react.createElement(Link/* default */.Z,{className:"button button--secondary button--lg",to:"/docs/intro"},"Explore More"))));}function Home(){const{siteConfig}=(0,useDocusaurusContext/* default */.Z)();return/*#__PURE__*/react.createElement(Layout/* default */.Z,{title:`Hello from ${siteConfig.title}`,description:"Description will go into a meta tag in "},/*#__PURE__*/react.createElement(HomepageHeader,null),/*#__PURE__*/react.createElement("main",null,/*#__PURE__*/react.createElement(HomepageFeatures,null)));} - -/***/ }), - -/***/ 5798: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:2};const contentTitle='C++';const metadata={"unversionedId":"definitions/cpp","id":"definitions/cpp","title":"C++","description":"C++ is a versatile, statically-typed programming language that combines high-level abstractions with low-level system access. It was developed as an extension of the C programming language, adding object-oriented features and other modern concepts. C++ is widely used in a variety of applications, from systems programming to game development and high-performance software.","source":"@site/docs/definitions/cpp.md","sourceDirName":"definitions","slug":"/definitions/cpp","permalink":"/docs/definitions/cpp","draft":false,"tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2},"sidebar":"tutorialSidebar","previous":{"title":"RUST","permalink":"/docs/definitions/rust"},"next":{"title":"x86 Architecture","permalink":"/docs/definitions/x86"}};const assets={};const toc=[{value:'Key Features',id:'key-features',level:2},{value:'1. Object-Oriented Programming',id:'1-object-oriented-programming',level:3},{value:'2. Templates',id:'2-templates',level:3},{value:'3. Standard Template Library (STL)',id:'3-standard-template-library-stl',level:3},{value:'4. Low-Level Memory Control',id:'4-low-level-memory-control',level:3},{value:'5. Multiple Inheritance',id:'5-multiple-inheritance',level:3},{value:'6. Operator Overloading',id:'6-operator-overloading',level:3},{value:'Syntax',id:'syntax',level:2},{value:'Variables and Data Types',id:'variables-and-data-types',level:3}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"c"},`C++`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`C++ is a versatile, statically-typed programming language that combines high-level abstractions with low-level system access. It was developed as an extension of the C programming language, adding object-oriented features and other modern concepts. C++ is widely used in a variety of applications, from systems programming to game development and high-performance software.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This document provides a concise overview of C++, including its key features, syntax, memory management, and unique aspects that make it a powerful and popular choice among developers.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"key-features"},`Key Features`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"1-object-oriented-programming"},`1. Object-Oriented Programming`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`C++ supports object-oriented programming (OOP) concepts such as classes, inheritance, polymorphism, and encapsulation. These features allow for modular and organized code, making it easier to manage complex projects.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"2-templates"},`2. Templates`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Templates in C++ provide a powerful way to write generic code. They allow you to define functions and classes that can work with various data types without sacrificing performance. This is particularly useful for creating data structures and algorithms.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"3-standard-template-library-stl"},`3. Standard Template Library (STL)`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The STL is a collection of template classes and functions in C++. It provides a wide range of data structures (like vectors, lists, and maps) and algorithms (sorting, searching, etc.) that can be used efficiently in your programs.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"4-low-level-memory-control"},`4. Low-Level Memory Control`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`C++ offers direct memory manipulation through pointers and manual memory allocation and deallocation using `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`new`),` and `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`delete`),`. This level of control is essential for systems programming and creating custom data structures.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"5-multiple-inheritance"},`5. Multiple Inheritance`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`C++ allows a class to inherit from multiple base classes. While this feature can be powerful, it should be used carefully to prevent ambiguity and conflicts in your code.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"6-operator-overloading"},`6. Operator Overloading`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`C++ lets you overload operators for user-defined types, allowing you to create custom behaviors for operators like `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`+`),`, `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`-`),`, and `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`*`),`.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"syntax"},`Syntax`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`C++ syntax shares similarities with C, but with additional features for OOP and generic programming:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"variables-and-data-types"},`Variables and Data Types`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`C++ provides a wide range of data types, from the fundamental types like `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`int`),` and `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`double`),` to more complex user-defined classes. Variables can be declared as follows:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-cpp"},`int x = 42; // Integer variable -double pi = 3.14159265; // Double-precision floating-point variable -string name = "John"; // String variable - -// User-defined class -class MyClass { -public: - int data; -}; -MyClass obj; -obj.data = 10; -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"functions"},`Functions`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Functions in C++ are defined using the function_name keyword. They can take parameters and return values:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-cpp"},`#include - -int add(int a, int b) { - return a + b; -} - -int main() { - int result = add(5, 7); - std::cout << "The sum is: " << result << std::endl; - return 0; -} -`)));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 4196: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:5};const contentTitle='LLVM (Low-Level Virtual Machine)';const metadata={"unversionedId":"definitions/llvm","id":"definitions/llvm","title":"LLVM (Low-Level Virtual Machine)","description":"LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability.","source":"@site/docs/definitions/llvm.md","sourceDirName":"definitions","slug":"/definitions/llvm","permalink":"/docs/definitions/llvm","draft":false,"tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"sidebar_position":5},"sidebar":"tutorialSidebar","previous":{"title":"x86 Assembly Language","permalink":"/docs/definitions/x86asm"},"next":{"title":"Thesis Milestones","permalink":"/docs/category/thesis-milestones"}};const assets={};const toc=[];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"llvm-low-level-virtual-machine"},`LLVM (Low-Level Virtual Machine)`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`LLVM, short for Low-Level Virtual Machine, is a versatile and powerful open-source compiler infrastructure. It's designed to optimize and compile high-level programming languages like Rust and C++ into efficient machine code that can run on various hardware platforms. LLVM is instrumental in modern software development, enabling performance optimization and portability.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`LLVM's compilation process typically involves several stages:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ol",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ol"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`Frontend`),`: The frontend is responsible for taking source code written in high-level programming languages like Rust and C++ and parsing it into an intermediate representation (IR). This IR is a low-level, platform-independent code that serves as the common language for further processing.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust/C++ Source Code -> Intermediate Representation (IR)`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ol",{"start":2},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ol"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`Optimizer`),`: LLVM includes a powerful optimizer that takes the IR and applies various optimization techniques to improve code performance. These optimizations may include inlining functions, eliminating dead code, and reordering instructions for better pipelining.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Intermediate Representation (IR) -> Optimized Intermediate Representation (IR)`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ol",{"start":3},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ol"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`Backend`),`: The backend is responsible for translating the optimized IR into machine code for a specific target architecture, like x86, ARM, or MIPS.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Optimized Intermediate Representation (IR) -> Target-Specific Machine Code`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ol",{"start":4},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ol"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`Linker`),`: If necessary, LLVM can invoke a linker to combine multiple object files into a single executable. The linker resolves external dependencies and generates the final binary.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Object Files -> Executable Binary`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`LLVM's modular design allows it to support multiple high-level programming languages, making it a preferred choice for a wide range of compilers, including Rust and Clang (for C and C++).`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Here is a complete flowchart of the LLVM Compilation architecture, wherein multiple languages feed their intermediate output to LLVM, and LLVM comes out with uniform Assembly code, which further gets parsed into an executable (program)`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"LLVM Flowchart",src:(__webpack_require__(3111)/* ["default"] */ .Z),width:"558",height:"206"})));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 7844: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:1};const contentTitle='RUST';const metadata={"unversionedId":"definitions/rust","id":"definitions/rust","title":"RUST","description":"Rust is a statically-typed systems programming language known for its emphasis on memory safety, zero-cost abstractions, and high performance. It was first developed by Mozilla and released in 2010. Rust's design goals include providing a safe and concurrent alternative to C and C++, while maintaining low-level control over hardware and system resources.","source":"@site/docs/definitions/rust.md","sourceDirName":"definitions","slug":"/definitions/rust","permalink":"/docs/definitions/rust","draft":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1},"sidebar":"tutorialSidebar","previous":{"title":"Definitions","permalink":"/docs/category/definitions"},"next":{"title":"C++","permalink":"/docs/definitions/cpp"}};const assets={};const toc=[{value:'Key Features',id:'key-features',level:2},{value:'1. Memory Safety',id:'1-memory-safety',level:3},{value:'2. Concurrency',id:'2-concurrency',level:3},{value:'3. Zero-cost Abstractions',id:'3-zero-cost-abstractions',level:3},{value:'4. Ownership System',id:'4-ownership-system',level:3},{value:'5. Pattern Matching',id:'5-pattern-matching',level:3},{value:'6. Cargo',id:'6-cargo',level:3},{value:'Syntax',id:'syntax',level:2},{value:'Variables and Mutability',id:'variables-and-mutability',level:3},{value:'Functions',id:'functions',level:2}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"rust"},`RUST`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust is a statically-typed systems programming language known for its emphasis on memory safety, zero-cost abstractions, and high performance. It was first developed by Mozilla and released in 2010. Rust's design goals include providing a safe and concurrent alternative to C and C++, while maintaining low-level control over hardware and system resources.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This document provides an extensive overview of Rust, covering its core features, syntax, memory management, and unique aspects that set it apart from other programming languages.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"key-features"},`Key Features`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"1-memory-safety"},`1. Memory Safety`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust's most significant feature is its focus on memory safety. It eliminates common programming errors like null pointer dereferences and buffer overflows through its ownership system, borrow checker, and lifetime annotations. These mechanisms ensure that memory-related bugs are caught at compile time, rather than causing runtime errors.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"2-concurrency"},`2. Concurrency`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust has built-in support for concurrent programming, making it easier to write safe and efficient concurrent code. The `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`async`),` and `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`await`),` keywords allow for asynchronous programming, while Rust's ownership system ensures that data races and deadlocks are prevented.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"3-zero-cost-abstractions"},`3. Zero-cost Abstractions`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust provides high-level abstractions without sacrificing performance. The "zero-cost" philosophy means that abstractions like generics, traits, and pattern matching don't introduce runtime overhead.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"4-ownership-system"},`4. Ownership System`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust's ownership system is the foundation of its memory safety guarantees. It revolves around three key concepts:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Ownership`),`: Each value in Rust has a single "owner" variable, which is responsible for cleaning up the value when it's no longer needed.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Borrowing`),`: Multiple references (either mutable or immutable) to a value can exist simultaneously, but they must follow strict rules to prevent data races.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Lifetimes`),`: Lifetimes annotate how long references are valid, ensuring that references don't outlive the data they point to.`))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"5-pattern-matching"},`5. Pattern Matching`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust's pattern matching allows concise and expressive code for handling complex data structures. It's used extensively in control flow and destructuring.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"6-cargo"},`6. Cargo`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Cargo is Rust's package manager and build tool. It simplifies dependency management, building, testing, and publishing Rust projects. It also enforces conventions, making it easy to create and share libraries.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"syntax"},`Syntax`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Rust's syntax is similar to C and C++, but with some distinctive features:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"variables-and-mutability"},`Variables and Mutability`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`In Rust, variables are immutable by default. To make a variable mutable, you must explicitly declare it as such using the `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`mut`),` keyword:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-rs"},`let x = 42; // Immutable variable -let mut y = 42; // Mutable variable -fn add(a: i32, b: i32) -> i32 { - a + b -} -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"functions"},`Functions`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Functions in Rust are defined using the fn keyword. They can take parameters and return values:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-rs"},`fn main() { - let s1 = String::from("Hello"); // s1 owns the String - let s2 = s1; // Ownership transferred to s2, s1 is no longer valid - // println!("{}", s1); // This would result in an error - - let s3 = String::from("World"); - let len = calculate_length(&s3); // Borrowing s3 immutably - println!("Length of '{}' is {}.", s3, len); -} - -fn calculate_length(s: &String) -> usize { - s.len() -} -`)));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 2965: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:3};const contentTitle='x86 Architecture';const metadata={"unversionedId":"definitions/x86","id":"definitions/x86","title":"x86 Architecture","description":"x86 is a widely used computer architecture that encompasses a family of instruction set architectures based on the Intel 8086 CPU. It has evolved over the years and includes several generations, such as the 80286, 80386, 80486, and the more recent x86-64 (also known as AMD64) architecture. x86 is the foundation of the majority of personal computers and servers, running operating systems like Windows and Linux.","source":"@site/docs/definitions/x86.md","sourceDirName":"definitions","slug":"/definitions/x86","permalink":"/docs/definitions/x86","draft":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3},"sidebar":"tutorialSidebar","previous":{"title":"C++","permalink":"/docs/definitions/cpp"},"next":{"title":"x86 Assembly Language","permalink":"/docs/definitions/x86asm"}};const assets={};const toc=[{value:'History',id:'history',level:2},{value:'Key Features',id:'key-features',level:2},{value:'1. CISC Architecture',id:'1-cisc-architecture',level:3},{value:'2. Segmentation',id:'2-segmentation',level:3},{value:'3. Registers',id:'3-registers',level:3},{value:'4. Stack',id:'4-stack',level:3},{value:'5. Memory Addressing Modes',id:'5-memory-addressing-modes',level:3},{value:'6. Protected Mode',id:'6-protected-mode',level:3},{value:'7. x86-64 (AMD64)',id:'7-x86-64-amd64',level:3},{value:'Components',id:'components',level:2},{value:'CPU',id:'cpu',level:3},{value:'Memory',id:'memory',level:3},{value:'Input/Output',id:'inputoutput',level:3},{value:'Interrupts',id:'interrupts',level:3},{value:'Coprocessors',id:'coprocessors',level:3}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"x86-architecture"},`x86 Architecture`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 is a widely used computer architecture that encompasses a family of instruction set architectures based on the Intel 8086 CPU. It has evolved over the years and includes several generations, such as the 80286, 80386, 80486, and the more recent x86-64 (also known as AMD64) architecture. x86 is the foundation of the majority of personal computers and servers, running operating systems like Windows and Linux.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This document provides a brief overview of the fundamental concepts of x86 architecture, including its history, key features, and components.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"history"},`History`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`8086`),`: Introduced in 1978, the Intel 8086 was the first x86 processor, using a 16-bit instruction set and a segmented memory model.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`80286 (286)`),`: Released in 1982, it was the first x86 chip to support protected mode, allowing for memory protection and multitasking.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`80386 (386)`),`: Introduced in 1985, it brought 32-bit addressing, virtual memory, and support for multitasking.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`80486 (486)`),`: Released in 1989, it added an on-chip cache and introduced the concept of pipelining for improved performance.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",{parentName:"li"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`x86-64 (AMD64)`),`: Launched in 2003 by AMD, it extended the architecture to 64-bit, allowing for larger memory addressing and improved performance.`))),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"key-features"},`Key Features`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"1-cisc-architecture"},`1. CISC Architecture`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 follows a Complex Instruction Set Computer (CISC) architecture. This means that it supports a large and diverse set of instructions, making it capable of performing complex operations in a single instruction.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"2-segmentation"},`2. Segmentation`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 uses a segmented memory model where the physical memory is divided into segments. Each segment has a base address and a size, allowing for memory protection.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"3-registers"},`3. Registers`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 processors have several general-purpose registers (like EAX, EBX, ECX, EDX) and segment registers (CS, DS, SS, ES, FS, GS) that play various roles in executing instructions.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"4-stack"},`4. Stack`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The x86 architecture uses a stack for function calls and data storage. The stack pointer (ESP) keeps track of the top of the stack, and operations like push and pop are used for managing the stack.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"5-memory-addressing-modes"},`5. Memory Addressing Modes`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 supports various memory addressing modes, enabling efficient access to memory. Modes include direct, register-indirect, immediate, and indexed addressing.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"6-protected-mode"},`6. Protected Mode`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 processors can operate in protected mode, which provides memory protection and multitasking capabilities. This is essential for modern operating systems.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"7-x86-64-amd64"},`7. x86-64 (AMD64)`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The x86-64 architecture extends the 32-bit x86 architecture to 64 bits, allowing for larger memory addressing, more registers, and improved performance. It remains backward compatible with 32-bit x86 code.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"components"},`Components`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"cpu"},`CPU`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The central processing unit (CPU) is the core of the x86 architecture. It executes instructions, manages registers, and controls the flow of data within the system.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"memory"},`Memory`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Memory in the x86 architecture is divided into segments, each with its base address and size. The architecture supports both physical and virtual memory.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"inputoutput"},`Input/Output`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The Input/Output (I/O) subsystem allows the CPU to communicate with external devices, including storage devices, keyboards, and displays.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"interrupts"},`Interrupts`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Interrupts are essential for handling asynchronous events. x86 processors support a variety of interrupt types, including hardware and software interrupts.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"coprocessors"},`Coprocessors`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 processors often include coprocessors like the Floating-Point Unit (FPU) for handling floating-point arithmetic and the MMX and SSE units for multimedia instructions.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This is a high-level overview of the x86 architecture, which forms the foundation of many modern computing systems. Understanding its key features and components is crucial for anyone working with low-level programming or system development.`));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 5719: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:4};const contentTitle='x86 Assembly Language';const metadata={"unversionedId":"definitions/x86asm","id":"definitions/x86asm","title":"x86 Assembly Language","description":"x86 Assembly Language is a low-level programming language that directly corresponds to the architecture of x86-based processors. It provides a human-readable representation of machine code instructions, enabling programmers to write code that directly controls the CPU and memory. Understanding x86 Assembly is crucial for tasks like system programming, reverse engineering, and optimizing critical software components.","source":"@site/docs/definitions/x86asm.md","sourceDirName":"definitions","slug":"/definitions/x86asm","permalink":"/docs/definitions/x86asm","draft":false,"tags":[],"version":"current","sidebarPosition":4,"frontMatter":{"sidebar_position":4},"sidebar":"tutorialSidebar","previous":{"title":"x86 Architecture","permalink":"/docs/definitions/x86"},"next":{"title":"LLVM (Low-Level Virtual Machine)","permalink":"/docs/definitions/llvm"}};const assets={};const toc=[{value:'History',id:'history',level:2},{value:'Syntax',id:'syntax',level:2},{value:'Comments:',id:'comments',level:3},{value:'Sections:',id:'sections',level:3},{value:'Labels:',id:'labels',level:3},{value:'Instructions:',id:'instructions',level:3},{value:'Registers:',id:'registers',level:3},{value:'Instructions:',id:'instructions-1',level:3},{value:'Role in Modern Computing:',id:'role-in-modern-computing',level:3}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"x86-assembly-language"},`x86 Assembly Language`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 Assembly Language is a low-level programming language that directly corresponds to the architecture of x86-based processors. It provides a human-readable representation of machine code instructions, enabling programmers to write code that directly controls the CPU and memory. Understanding x86 Assembly is crucial for tasks like system programming, reverse engineering, and optimizing critical software components.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This document offers a basic introduction to x86 Assembly, covering its history, syntax, registers, instructions, and its role in modern computing.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"history"},`History`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 Assembly language has a long history, dating back to the original Intel 8086 processor. Over the years, it has evolved to support new features and capabilities, including 32-bit and 64-bit modes. Key developments include:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`16-Bit x86 Assembly`),`: Corresponding to the Intel 8086 processor.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`32-Bit x86 Assembly`),`: Introduced with processors like the Intel 80386, featuring extended registers and instructions.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`x86-64 Assembly (AMD64)`),`: Extending the architecture to 64 bits, providing more registers and a larger address space.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"syntax"},`Syntax`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 Assembly code is written using a combination of mnemonics, registers, and memory addresses. The basic structure of an x86 Assembly program is:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-s"},`; Comment -section .data - ; Data declarations go here - -section .text - global _start - -_start: - ; Instructions go here - mov eax, 1 ; Syscall number for write - mov ebx, 1 ; File descriptor for stdout - mov ecx, message ; Address of the message to print - mov edx, 13 ; Message length - int 0x80 ; Call the Linux syscall - -section .data - message db 'Hello, World!', 0 -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"comments"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"h3"},`Comments:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Lines starting with `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`;`),` are comments.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"sections"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"h3"},`Sections:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Code is organized into sections, typically `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`.data`),` for data declarations and `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`.text`),` for executable code.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"labels"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"h3"},`Labels:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`_start`),` is a label representing the program's entry point.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"instructions"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"h3"},`Instructions:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`mov`),`, `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`add`),`, `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("inlineCode",{parentName:"p"},`sub`),`, and other instructions perform various operations.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"registers"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"h3"},`Registers:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 Assembly code makes extensive use of registers, which are fast, small storage locations inside the CPU. Common x86 registers include:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`EAX, EBX, ECX, EDX:`),` General-purpose registers for data manipulation.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`ESP:`),` Stack pointer for managing the stack.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`EBP:`),` Base pointer for stack frame management.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`ESI, EDI:`),` Index registers often used for string operations.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"instructions-1"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"h3"},`Instructions:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`x86 Assembly instructions are mnemonics representing machine-level operations. Common instructions include:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`mov:`),` Move data between registers or memory locations.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`add, sub, mul, div:`),` Arithmetic operations.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`jmp, je, jl, jg:`),` Conditional and unconditional jumps for control flow.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`push, pop:`),` Push and pop values to/from the stack.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h3",{"id":"role-in-modern-computing"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"h3"},`Role in Modern Computing:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`While high-level languages like C and C++ are more commonly used for software development, x86 Assembly remains crucial for various tasks:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`System Programming:`),` Writing operating system components and device drivers.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`Optimization:`),` Optimizing critical sections of code for performance.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`Reverse Engineering:`),` Analyzing and modifying compiled code.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"li"},`Embedded Systems:`),` Developing software for resource-constrained devices.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Understanding x86 Assembly provides insight into how computers execute instructions and manage data at the lowest level, making it a valuable skill for certain domains of programming and computer science.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This is just a basic introduction to x86 Assembly language. As you delve deeper into this fascinating realm, you'll uncover the intricacies of low-level programming and its vital role in modern computing.`));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 9881: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:1};const contentTitle='Introduction';const metadata={"unversionedId":"intro","id":"intro","title":"Introduction","description":"This project mainly compares and contrasts between the RUST Programming Language, and the C++ Programming Language. We focus on the Cargo and Clang Compilers respectively, since they are both based on the LLVM Architecture. Thus, the low-level assembly generated by the LLVM compiler remains uniform between the two languages, and comparisons can be made.","source":"@site/docs/intro.md","sourceDirName":".","slug":"/intro","permalink":"/docs/intro","draft":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1},"sidebar":"tutorialSidebar","next":{"title":"Definitions","permalink":"/docs/category/definitions"}};const assets={};const toc=[{value:'Before we begin: a definition of terms',id:'before-we-begin-a-definition-of-terms',level:2}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"introduction"},`Introduction`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This project mainly compares and contrasts between the `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`RUST Programming Language`),`, and the `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`C++ Programming Language.`),` We focus on the `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Cargo and Clang Compilers`),` respectively, since they are both based on the `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`LLVM Architecture.`),` Thus, the low-level assembly generated by the LLVM compiler remains uniform between the two languages, and comparisons can be made.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`We focus on RUST and C++ as they are both languages which are used in low-level systems programming. While the low-level LLVM compiler supports virtually any language, and currently is used for R, Python, Swift, and countless others; RUST and C++ insights give data for low-level programs, i.e. the layer on top of which all other programs are run.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"before-we-begin-a-definition-of-terms"},`Before we begin: a definition of terms`));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 9485: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:3};const contentTitle='Semester 2: Part 2 Initial';const metadata={"unversionedId":"thesis/pt2init","id":"thesis/pt2init","title":"Semester 2: Part 2 Initial","description":"The following is the first presentation during the start of Spring 2024.","source":"@site/docs/thesis/pt2init.md","sourceDirName":"thesis","slug":"/thesis/pt2init","permalink":"/docs/thesis/pt2init","draft":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3},"sidebar":"tutorialSidebar","previous":{"title":"Semester 1: Thesis Presentation","permalink":"/docs/thesis/sem1"}};const assets={};const toc=[{value:'Copyright and Protection Disclaimer',id:'copyright-and-protection-disclaimer',level:2}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"semester-2-part-2-initial"},`Semester 2: Part 2 Initial`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The following is the first presentation during the start of Spring 2024.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"copyright-and-protection-disclaimer"},`Copyright and Protection Disclaimer`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Copyright Notice:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Protected Material:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Usage Authorization:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://skushagra.com"},`Kushagra Srivastava`),` for authorization.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The code will be released under GNU GPL v3 once ready.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(4298)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(2761)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(5804)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(9347)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(6727)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(8562)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(9198)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(4746)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(8299)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(9660)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(5453)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(7221)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(239)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(2506)/* ["default"] */ .Z),width:"2000",height:"1125"})));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 2279: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:2};const contentTitle='Semester 1: Thesis Presentation';const metadata={"unversionedId":"thesis/sem1","id":"thesis/sem1","title":"Semester 1: Thesis Presentation","description":"The following is the state of everything at the end of Fall 2023.","source":"@site/docs/thesis/sem1.md","sourceDirName":"thesis","slug":"/thesis/sem1","permalink":"/docs/thesis/sem1","draft":false,"tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"sidebar_position":2},"sidebar":"tutorialSidebar","previous":{"title":"Semester 0: CICS Syslab","permalink":"/docs/thesis/syslab"},"next":{"title":"Semester 2: Part 2 Initial","permalink":"/docs/thesis/pt2init"}};const assets={};const toc=[{value:'Copyright and Protection Disclaimer',id:'copyright-and-protection-disclaimer',level:2}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"semester-1-thesis-presentation"},`Semester 1: Thesis Presentation`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The following is the state of everything at the end of Fall 2023.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"copyright-and-protection-disclaimer"},`Copyright and Protection Disclaimer`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Copyright Notice:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Protected Material:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`These slides are part of Kushagra Srivastava's Honors Thesis Presentation. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Usage Authorization:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://skushagra.com"},`Kushagra Srivastava`),` for authorization.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The code will be released under GNU GPL v3 once ready.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(426)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(8163)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(1659)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(4953)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(4346)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(7840)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(207)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(253)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(7791)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(5140)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(815)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(204)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(1041)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(1395)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(4423)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(323)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(1554)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(3391)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(1725)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(2801)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(859)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(3161)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(7980)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(3938)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(9923)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(7151)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(2209)/* ["default"] */ .Z),width:"2000",height:"1125"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(2449)/* ["default"] */ .Z),width:"2000",height:"1125"})));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 9009: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ assets: () => (/* binding */ assets), -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={sidebar_position:1};const contentTitle='Semester 0: CICS Syslab';const metadata={"unversionedId":"thesis/syslab","id":"thesis/syslab","title":"Semester 0: CICS Syslab","description":"The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages.","source":"@site/docs/thesis/syslab.md","sourceDirName":"thesis","slug":"/thesis/syslab","permalink":"/docs/thesis/syslab","draft":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"sidebar_position":1},"sidebar":"tutorialSidebar","previous":{"title":"Thesis Milestones","permalink":"/docs/category/thesis-milestones"},"next":{"title":"Semester 1: Thesis Presentation","permalink":"/docs/thesis/sem1"}};const assets={};const toc=[{value:'Copyright and Protection Disclaimer',id:'copyright-and-protection-disclaimer',level:2}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"semester-0-cics-syslab"},`Semester 0: CICS Syslab`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The following is the first presentation during the very beginning, Spring 2023. These slides were shown in the first CICS Systems Lab Meeting, whe the project was in the very initial stages.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"copyright-and-protection-disclaimer"},`Copyright and Protection Disclaimer`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Copyright Notice:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The content and images presented in these slides are the intellectual property of Kushagra Srivastava. All rights are reserved. The reproduction, distribution, or utilization of any part of these slides without the prior written consent of Kushagra Srivastava is strictly prohibited.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Protected Material:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`These slides are part of Kushagra Srivastava's Honors Thesis. The information and materials contained herein are protected under intellectual property laws. Any unauthorized use, reproduction, or distribution may violate copyright, trademark, and other laws.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},`Usage Authorization:`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`If you wish to use or reproduce any part of these slides for educational or non-commercial purposes, please contact `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://skushagra.com"},`Kushagra Srivastava`),` for authorization.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The code will be released under GNU GPL v3 once ready.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(7576)/* ["default"] */ .Z),width:"9600",height:"7200"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(8229)/* ["default"] */ .Z),width:"9600",height:"7200"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(4060)/* ["default"] */ .Z),width:"9600",height:"7200"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(4304)/* ["default"] */ .Z),width:"9600",height:"7200"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(2311)/* ["default"] */ .Z),width:"9600",height:"7200"}),` -`,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Slide",src:(__webpack_require__(9218)/* ["default"] */ .Z),width:"9600",height:"7200"})));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 1961: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={};const contentTitle=undefined;const metadata={"type":"mdx","permalink":"/communicationDesign","source":"@site/src/pages/communicationDesign.md","description":"Disclaimer: All general-purpose graphics on this page were generated using Microsoft's Bing AI. For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same.","frontMatter":{}};const toc=[{value:'First, Some Background',id:'first-some-background',level:2},{value:'Hypothesis 1: Environmental Impacts',id:'hypothesis-1-environmental-impacts',level:2},{value:'Hypothesis 2: Lower the Barrier of Entry to Low-Level Development',id:'hypothesis-2-lower-the-barrier-of-entry-to-low-level-development',level:2},{value:'How do we go about it?',id:'how-do-we-go-about-it',level:2},{value:'Conclusion',id:'conclusion',level:2},{value:'Final Addition',id:'final-addition',level:2}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Disclaimer: All general-purpose graphics on this page were generated using `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://bing.com"},`Microsoft's Bing AI`),`. For graphics taken from a specific source (such as charts), appropriate citation (including self-citation) has been given below the same.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"why-is-this-project-significant"},`Why is this project significant.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"Intro",src:(__webpack_require__(165)/* ["default"] */ .Z),width:"1024",height:"1024"})),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The following project, while accessible to everyone, is mainly targeted towards the millions of developers creating digital products on the daily. We attempt to reform low level systems in servers and mainframes, in an effort to have userland applications work more efficiently, increase server bandwidth, and give a little bit back to the environment.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Let's dive a little bit into each of these:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"first-some-background"},`First, Some Background`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This project attempts to compare and contrast performance differences between RUST and C++, two low level languages that were created at different points of time, and with different goals in mind.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`While C++ was developed as an incremental upgrade to C, it follows a lot of compiler conventions from the 90s and has not changed much in structure. C++ is prone to various errors if users are not mindful: memory leaks, segmentation faults, kernel errors, and so on. Moreover, being an incremental upgrade to an already old language, C++ can sometimes not be the most efficient language out there.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`On the other hand, we have RUST: a language whose development started in 2010, and is continuing today. RUST attempts to employ stricter typesetting, better error tracking, and more stringent memory usage to run more efficiently.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"C++",src:(__webpack_require__(2859)/* ["default"] */ .Z),width:"529",height:"179"})),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Credits: `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://developer.ibm.com/articles/os-developers-know-rust/"},`IBM: Why You Should Learn The RUSt Programming Language.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This is not to say that C++ is a "bad, outdated language". Simply put, most low level systems today still run on C++, mainly because the cost of refactoring to RUST is enormous, and benefits unknown.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"hypothesis-1-environmental-impacts"},`Hypothesis 1: Environmental Impacts`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`According to `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://energyinnovation.org/2020/03/17/how-much-energy-do-data-centers-really-use/"},`Energy Innovation`),`, global data centers consumed about 205 terawatt-hours (TWh) of electric power, or about 1% of Global Consumer Electricity Consumption.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Let us put this in perspective: given the world population, servers alone accounted for the electricity that would have been used by 70,000,000 people. This number is about twice the population of Canada, about 65% of Mexico's Population, and about 4 times the population of Australia.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Now, let us assume (hypothetically), that we have moved all low level systems to RUST, which means that all servers in the world run on RUST now. While this is a bit flawed in its nature, let us also assume that there is a direct co-relation between energy consumption and the effectiveness of a language.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`If RUST enables, through it's various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://en.wikipedia.org/wiki/List_of_countries_by_electricity_consumption"},`119 countries of the world`),`, even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`RUST would enable the same infrastructure to server exactly the bandwidth it is serving currently, while automatically providing back electricity worth of powering such a high number of countries. Moreover, the same infrastructure can also be utilized into serving an even higher bandwidth without putting new hardware into place, thus providing immense future-proofing and reliability.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"hypothesis-2-lower-the-barrier-of-entry-to-low-level-development"},`Hypothesis 2: Lower the Barrier of Entry to Low-Level Development`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Low Level Systems: including, but not limited to, CPU/GPU Architectures, Compilers, Operating Systems, Networking Interfaces, Communication Protocols, and the like are a culmination of decades of work, most of which really gained traction in 1970s. As a result, there exists a high amount of legacy code, which can be unreadable and intimidating: thus making the development process inaccessible to many.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The manner in which languages such as C/C++ behave can also differ between systems, which is a result of the time that they were created in. Free/Libre, or Open Source software did not quite exist: which meant that companies shipping computer systems had full control over how a certain language would behave on their system. As a result, C behaves differently on different kernels, even today.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`There are currently tremendous amounts of versions of C in circulation, and this is before we get into the forks of this language (such as Arduino-C, Objective-C, C#, and so on).`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`RUST was developed from day 1 as an open source project, placing proper standardization across platforms. RUST behaves exactly the same, on every single piece of hardware. Thus, this lowers the barrier of entry incredibly. Paired with incredible documentation, and a unified compilation process on every system, RUST makes low level development significantly easier to novices and professionals alike.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`On top of C++, RUST provides the following benefits (from the `,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("a",{parentName:"p","href":"https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html"},`RUST Documentation`),`):`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`RUST has a more strong typesetting that prevents common errors such as NULL Pointer referencing, memory leaks, buffer overflows, and race conditions. Using the concept of ownership and borrowing to manage memory and resources during compilation, RUST can theoritically execute equally complex programs while using lesser resources.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`RUST allows for more concise code, which makes readability easier for developers. Since low level systems get super complicated to execute even the most basic operations, the cleaner code syntax of RUST is crucial for continued development with the shortest learning curve. The syntax allows for less complexity, thus allowing for updates in low level code at a faster pace.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`RUST is designed for parallel processing and concurrency, which means that any code written is extensible to any system imaginable: ranging from a Raspberry Pi to an IBM Mainframe.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("strong",{parentName:"p"},` Security Example: Race Conditions: `)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`For example, here are code snippets in C and Rust that deliberately create a race condition, highlighting how C++ allows it while Rust prevents it with an error.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`A race condition is a software flaw that occurs when the behavior of a program depends on the timing and order of execution of multiple concurrent operations, leading to unpredictable and often unintended outcomes. We will see a live version of said unpredictable outcomes with C++, and see how RUST fixes this flaw.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Let's start with C++:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-c"},`// Race Condition Demo, written by Kush. -#include -#include -#include - -int shared_variable = 0; - -void *increment(void *arg) { - for (int i = 0; i < 1000000; i++) { - shared_variable++; - } - return NULL; - } - - int main() { - pthread_t thread1, thread2; - - if (pthread_create(&thread1, NULL, increment, NULL) != 0) { - perror("pthread_create"); - return 1; - } - - if (pthread_create(&thread2, NULL, increment, NULL) != 0) { - perror("pthread_create"); - return 1; - } - - pthread_join(thread1, NULL); - pthread_join(thread2, NULL); - - printf("Shared variable: %d\\n", shared_variable); - - return 0; - } - -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`In the C code, two threads are incrementing the shared_variable concurrently, leading to a race condition where the final value is unpredictable. However, C will let us run this with no issues or errors, as demonstrated below 10 times on my own system:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-bash"},`suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ gcc race.c -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1138441 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1339034 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1070599 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1103020 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1073974 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1233980 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1403249 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1200399 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1036593 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ ./a.out -Shared variable: 1115206 -suobset@Kush-Surface:/mnt/c/Users/kushd/Documents/GitHub/temp$ -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Now, let us try this with RUST:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-c"},`// Race Condition Demo, written by Kush -use std::thread; - -fn main() { - let mut shared_variable = 0; - - let thread1 = thread::spawn(|| { - for _ in 0..1_000_000 { - shared_variable += 1; - } - }); - - let thread2 = thread::spawn(|| { - for _ in 0..1_000_000 { - shared_variable += 1; - } - }); - - thread1.join().unwrap(); - thread2.join().unwrap(); - - println!("Shared variable: {}", shared_variable); -} -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`In the Rust code, the same scenario is presented, but Rust's ownership and borrowing system will prevent the code from compiling, raising an error like:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-bash"},`error[E0502]: cannot borrow \`shared_variable\` as mutable because it is also borrowed as immutable - --> src/main.rs:9:13 - | -7 | let thread1 = thread::spawn(|| { - | ---------------- immutable borrow occurs here -8 | for _ in 0..1_000_000 { -9 | shared_variable += 1; - | ^^^^^^^^^^^^^^ mutable borrow occurs here -... -15| thread1.join().unwrap(); - | ------------------------ mutable borrow later used here -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`If this undertaking of shifting away from C++ into RUST is fruitful, developers can expect:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("ul",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`More readable, and less legacy code.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`Faster kernel updates, and a higher ability to contribute to kernel source code.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`More security in kernel code: since it becomes less prone to memory leaks, kernel panics, and the like. This also results in more reliable systems, overall.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`Performance advantages in low level systems would result in faster performance of userland applications, without making a single change to any piece of code.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("li",{parentName:"ul"},`Increase bandwidth of servers, without paying for any newer servers.`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`These are some of the many benefits that developers can expect. However, there's more...`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"how-do-we-go-about-it"},`How do we go about it?`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`During compilation, every programming language outputs a file called an assembly. For the x86 architecture, this assembly consists of 81 operations and 6 registers, and any combination of these yield to teh functioning of a program.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Since we want a platform agnostic way to measuring languages (so nothing that can be solved by throwing more hardware at the problem), we trace the execution of this assembly to find logical differences in how the two programming languages execute the same program. If one language uses more operations, then it performs worse. To do so, I am building my "x86 Asm Tracer", documentation for which can be found on the rest of the site.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("img",{alt:"x86 Asm Tracer",src:(__webpack_require__(9581)/* ["default"] */ .Z),width:"2000",height:"1125"})),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`As the assembly executes, we can see via GDB the current line it is at. I have written a Python program, that latches on to GDB and just writes down every command executed on a text file (displayed in the front of that page). `),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("pre",null,(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("code",{parentName:"pre","className":"language-py"},`import gdb - -# Define the file path where you want to save the log -log_file_path = "./gdb.txt" - -# Initialize a flag to track whether a 'jne' or 'jge' instruction was executed -jmp_detected = False - -def log_jmp_event(event): - global jmp_detected # Use the global flag to track if 'jne' or 'jge' was detected - pc = int(gdb.parse_and_eval("$pc")) - instruction = gdb.execute("x/i " + hex(pc), to_string=True) - - if "jne" in instruction or "jge" in instruction: - jmp_detected = True - with open(log_file_path, "a") as log_file: - log_file.write(f"{hex(pc)}: {instruction}\\n") - -# Connect the stop event to the log_jmp_event function -gdb.events.stop.connect(log_jmp_event) - -# Define a command to check if 'jne' or 'jge' was executed and write to the log file -class CheckJmpCommand(gdb.Command): - def __init__(self): - super(CheckJmpCommand, self).__init__("checkjmp", gdb.COMMAND_USER) - - def invoke(self, arg, from_tty): - global jmp_detected - with open(log_file_path, "a") as log_file: - if jmp_detected: - log_file.write("jne/jge was executed.\\n") - else: - log_file.write("jne/jge was NOT executed.\\n") - jmp_detected = False # Reset the flag for the next check - -CheckJmpCommand() -`)),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This way, we can see the specific number of operations executed to run the same program, written on two different languages. We can compare this "trace" for both the languages, and determine which is faster performing. However, there can be caveats that have to be taken into account: for example, RUST's security may mean more operations take place, but it provides more peace of mind.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This is a tradeoff that will have to be looked into at all times.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"conclusion"},`Conclusion`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`In conclusion, this project holds significant promise for the digital development community and the broader environment. By comparing the performance differences between the low-level languages C++ and RUST, it seeks to address multiple critical aspects:`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`First, the project aims to lower the barrier of entry to low-level development by demonstrating how RUST's open-source nature, standardized behavior across platforms, and enhanced memory management can make low-level development more accessible and efficient. Shifting away from C++ to RUST could result in more readable code, faster kernel updates, increased security, and improved performance without the need for hardware upgrades.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`Secondly, the environmental impact is a substantial consideration. If RUST, with its efficiency gains, were to become the standard for low-level systems, it could lead to massive energy savings, potentially surpassing the electricity consumption of many countries. This transition to RUST would not only reduce energy consumption but also offer future-proofing benefits, ensuring reliable infrastructure. Overall, this project is poised to benefit developers, users, and the environment by enhancing efficiency and sustainability in low-level systems.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"final-addition"},`Final Addition`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`I gave a 1 minute pitch on this project for iCons 4, and have attached it below :)`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("iframe",{width:"560",height:"315",src:"https://www.youtube.com/embed/oN9MKmiI1G4?si=teqXrn_0IZzwrpV2",title:"YouTube video player",frameborder:"0",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowfullscreen:true}));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 9286: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={title:'Markdown page example'};const contentTitle='Markdown page example';const metadata={"type":"mdx","permalink":"/markdown-page","source":"@site/src/pages/markdown-page.md","title":"Markdown page example","description":"You don't need React to write simple standalone pages.","frontMatter":{"title":"Markdown page example"}};const toc=[];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"markdown-page-example"},`Markdown page example`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`You don't need React to write simple standalone pages.`));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 9530: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ contentTitle: () => (/* binding */ contentTitle), -/* harmony export */ "default": () => (/* binding */ MDXContent), -/* harmony export */ frontMatter: () => (/* binding */ frontMatter), -/* harmony export */ metadata: () => (/* binding */ metadata), -/* harmony export */ toc: () => (/* binding */ toc) -/* harmony export */ }); -/* harmony import */ var _Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7462); -/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7294); -/* harmony import */ var _mdx_js_react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3905); -/* @jsxRuntime classic */ /* @jsx mdx */ /* @jsxFrag React.Fragment */const frontMatter={};const contentTitle='MassURC Thesis Abstracts.';const metadata={"type":"mdx","permalink":"/massurc","source":"@site/src/pages/massurc.md","title":"MassURC Thesis Abstracts.","description":"This page contains all the possible thesis abstracts for MassURC.","frontMatter":{}};const toc=[{value:'Abstract 1',id:'abstract-1',level:2}];const layoutProps={toc};const MDXLayout="wrapper";function MDXContent({components,...props}){return (0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)(MDXLayout,(0,_Users_suobset_Documents_RUST_Tracing_Tool_iCons4_backend_node_modules_babel_runtime_helpers_esm_extends_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({},layoutProps,props,{components:components,mdxType:"MDXLayout"}),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h1",{"id":"massurc-thesis-abstracts"},`MassURC Thesis Abstracts.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`This page contains all the possible thesis abstracts for MassURC. `),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("h2",{"id":"abstract-1"},`Abstract 1`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`The following thesis is a meta-analysis of the Performance Differences between RUST and C++, two of the most widely used low-level programming languages. The key difference between the two languages are the years of advancements between the two: C++ originated in the 70s and has decades of research and development, making it the most widely adopted language in the development of low-level systems. On the other hand, RUST, released in 2013, was created primarily to fix C++’s shortcomings: memory management, error logging, and debugging. `),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`By comparing the performance differences between the two languages, we can determine the Return on Investment, should an undertaking be made to refactor code into the new language.`),(0,_mdx_js_react__WEBPACK_IMPORTED_MODULE_1__/* .mdx */ .kt)("p",null,`If RUST enables, through it’s various carefully-constructed safety paradigms, about 5% more efficiency in servers, this would result in savings of about 10.25 terawatt-hours of electricity. That number is greater than the electricity used in about 119 countries of the world, even while having taken only conservative metrics, since inter-connection of servers through Networking, and a higher efficiency of consumer electronics (or client devices) has not been taken into consideration.`));};MDXContent.isMDXComponent=true; - -/***/ }), - -/***/ 4061: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -const ansiStyles = __webpack_require__(6434); -const {stdout: stdoutColor, stderr: stderrColor} = __webpack_require__(2130); -const { - stringReplaceAll, - stringEncaseCRLFWithFirstIndex -} = __webpack_require__(3559); - -const {isArray} = Array; - -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = [ - 'ansi', - 'ansi', - 'ansi256', - 'ansi16m' -]; - -const styles = Object.create(null); - -const 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'); - } - - // Detect level if not set manually - const colorLevel = stdoutColor ? stdoutColor.level : 0; - object.level = options.level === undefined ? colorLevel : options.level; -}; - -class ChalkClass { - constructor(options) { - // eslint-disable-next-line no-constructor-return - return chalkFactory(options); - } -} - -const chalkFactory = options => { - const chalk = {}; - applyOptions(chalk, options); - - chalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_); - - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); - - chalk.template.constructor = () => { - throw new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.'); - }; - - chalk.template.Instance = ChalkClass; - - return chalk.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; - } -}; - -const 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); - }; - } - }; -} - -const proto = Object.defineProperties(() => {}, { - ...styles, - level: { - enumerable: true, - get() { - return this._generator.level; - }, - set(level) { - this._generator.level = level; - } - } -}); - -const createStyler = (open, close, parent) => { - let openAll; - let closeAll; - if (parent === undefined) { - openAll = open; - closeAll = close; - } else { - openAll = parent.openAll + open; - closeAll = close + parent.closeAll; - } - - return { - open, - close, - openAll, - closeAll, - parent - }; -}; - -const createBuilder = (self, _styler, _isEmpty) => { - const builder = (...arguments_) => { - if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) { - // Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}` - return applyStyle(builder, chalkTag(builder, ...arguments_)); - } - - // Single argument is hot path, implicit coercion is faster than anything - // eslint-disable-next-line no-implicit-coercion - return applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' ')); - }; - - // We alter the prototype because we must return a function, but there is - // no way to create a function with a different prototype - Object.setPrototypeOf(builder, proto); - - builder._generator = self; - builder._styler = _styler; - builder._isEmpty = _isEmpty; - - return builder; -}; - -const applyStyle = (self, string) => { - if (self.level <= 0 || !string) { - return self._isEmpty ? '' : string; - } - - let styler = self._styler; - - if (styler === undefined) { - return string; - } - - const {openAll, closeAll} = styler; - if (string.indexOf('\u001B') !== -1) { - while (styler !== undefined) { - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - string = stringReplaceAll(string, styler.close, styler.open); - - styler = styler.parent; - } - } - - // We can move both next actions out of loop, because remaining actions in loop won't have - // any/visible effect on parts we add here. Close the styling before a linebreak and reopen - // after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92 - const lfIndex = string.indexOf('\n'); - if (lfIndex !== -1) { - string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex); - } - - return openAll + string + closeAll; -}; - -let template; -const chalkTag = (chalk, ...strings) => { - const [firstString] = strings; - - if (!isArray(firstString) || !isArray(firstString.raw)) { - // If chalk() was called by itself or with a string, - // return the string itself as a string. - 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 === undefined) { - template = __webpack_require__(9515); - } - - return template(chalk, parts.join('')); -}; - -Object.defineProperties(Chalk.prototype, styles); - -const chalk = Chalk(); // eslint-disable-line new-cap -chalk.supportsColor = stdoutColor; -chalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap -chalk.stderr.supportsColor = stderrColor; - -module.exports = chalk; - - -/***/ }), - -/***/ 9515: -/***/ ((module) => { - -"use strict"; - -const 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; -const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; -const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; -const ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi; - -const ESCAPES = new Map([ - ['n', '\n'], - ['r', '\r'], - ['t', '\t'], - ['b', '\b'], - ['f', '\f'], - ['v', '\v'], - ['0', '\0'], - ['\\', '\\'], - ['e', '\u001B'], - ['a', '\u0007'] -]); - -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(chalk, 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 = chalk; - for (const [styleName, styles] of Object.entries(enabled)) { - if (!Array.isArray(styles)) { - continue; - } - - if (!(styleName in current)) { - throw new Error(`Unknown Chalk style: ${styleName}`); - } - - current = styles.length > 0 ? current[styleName](...styles) : current[styleName]; - } - - return current; -} - -module.exports = (chalk, temporary) => { - const styles = []; - const chunks = []; - let chunk = []; - - // eslint-disable-next-line max-params - 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(chalk, 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(chalk, 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(''); -}; - - -/***/ }), - -/***/ 3559: -/***/ ((module) => { - -"use strict"; - - -const 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; -}; - -const 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; -}; - -module.exports = { - stringReplaceAll, - stringEncaseCRLFWithFirstIndex -}; - - -/***/ }), - -/***/ 9039: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = __webpack_require__(4578); - - -/***/ }), - -/***/ 4578: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -/** - * Clean-css - https://github.com/clean-css/clean-css - * Released under the terms of MIT license - */ - -var level0Optimize = __webpack_require__(5303); -var level1Optimize = __webpack_require__(2991); -var level2Optimize = __webpack_require__(6445); -var validator = __webpack_require__(7263); - -var compatibilityFrom = __webpack_require__(7511); -var fetchFrom = __webpack_require__(650); -var formatFrom = (__webpack_require__(4687).formatFrom); -var inlineFrom = __webpack_require__(3595); -var inlineRequestFrom = __webpack_require__(6989); -var inlineTimeoutFrom = __webpack_require__(9585); -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); -var optimizationLevelFrom = (__webpack_require__(1905).optimizationLevelFrom); -var pluginsFrom = __webpack_require__(1033); -var rebaseFrom = __webpack_require__(2381); -var rebaseToFrom = __webpack_require__(8835); - -var inputSourceMapTracker = __webpack_require__(3607); -var readSources = __webpack_require__(8792); - -var serializeStyles = __webpack_require__(1225); -var serializeStylesAndSourceMap = __webpack_require__(884); - -var CleanCSS = module.exports = function CleanCSS(options) { - options = options || {}; - - this.options = { - batch: !!options.batch, - compatibility: compatibilityFrom(options.compatibility), - explicitRebaseTo: 'rebaseTo' in options, - fetch: fetchFrom(options.fetch), - format: formatFrom(options.format), - inline: inlineFrom(options.inline), - inlineRequest: inlineRequestFrom(options.inlineRequest), - inlineTimeout: inlineTimeoutFrom(options.inlineTimeout), - level: optimizationLevelFrom(options.level), - plugins: pluginsFrom(options.plugins), - rebase: rebaseFrom(options.rebase, options.rebaseTo), - rebaseTo: rebaseToFrom(options.rebaseTo), - returnPromise: !!options.returnPromise, - sourceMap: !!options.sourceMap, - sourceMapInlineSources: !!options.sourceMapInlineSources - }; -}; - -// for compatibility with optimize-css-assets-webpack-plugin -CleanCSS.process = function(input, opts) { - var cleanCss; - var optsTo = opts.to; - - delete opts.to; - cleanCss = new CleanCSS(Object.assign({ - returnPromise: true, rebaseTo: optsTo - }, opts)); - - return cleanCss.minify(input) - .then(function(output) { - return { css: output.styles }; - }); -}; - -CleanCSS.prototype.minify = function(input, maybeSourceMap, maybeCallback) { - var options = this.options; - - if (options.returnPromise) { - return new Promise(function(resolve, reject) { - minifyAll(input, options, maybeSourceMap, function(errors, output) { - return errors - ? reject(errors) - : resolve(output); - }); - }); - } - return minifyAll(input, options, maybeSourceMap, maybeCallback); -}; - -function minifyAll(input, options, maybeSourceMap, maybeCallback) { - if (options.batch && Array.isArray(input)) { - return minifyInBatchesFromArray(input, options, maybeSourceMap, maybeCallback); - } if (options.batch && (typeof input == 'object')) { - return minifyInBatchesFromHash(input, options, maybeSourceMap, maybeCallback); - } - return minify(input, options, maybeSourceMap, maybeCallback); -} - -function minifyInBatchesFromArray(input, options, maybeSourceMap, maybeCallback) { - var callback = typeof maybeCallback == 'function' - ? maybeCallback - : (typeof maybeSourceMap == 'function' ? maybeSourceMap : null); - var errors = []; - var outputAsHash = {}; - var inputValue; - var i, l; - - function whenHashBatchDone(innerErrors, output) { - outputAsHash = Object.assign(outputAsHash, output); - - if (innerErrors !== null) { - errors = errors.concat(innerErrors); - } - } - - for (i = 0, l = input.length; i < l; i++) { - if (typeof input[i] == 'object') { - minifyInBatchesFromHash(input[i], options, whenHashBatchDone); - } else { - inputValue = input[i]; - - outputAsHash[inputValue] = minify([inputValue], options); - errors = errors.concat(outputAsHash[inputValue].errors); - } - } - - return callback - ? callback(errors.length > 0 ? errors : null, outputAsHash) - : outputAsHash; -} - -function minifyInBatchesFromHash(input, options, maybeSourceMap, maybeCallback) { - var callback = typeof maybeCallback == 'function' - ? maybeCallback - : (typeof maybeSourceMap == 'function' ? maybeSourceMap : null); - var errors = []; - var outputAsHash = {}; - var inputKey; - var inputValue; - - for (inputKey in input) { - inputValue = input[inputKey]; - - outputAsHash[inputKey] = minify(inputValue.styles, options, inputValue.sourceMap); - errors = errors.concat(outputAsHash[inputKey].errors); - } - - return callback - ? callback(errors.length > 0 ? errors : null, outputAsHash) - : outputAsHash; -} - -function minify(input, options, maybeSourceMap, maybeCallback) { - var sourceMap = typeof maybeSourceMap != 'function' - ? maybeSourceMap - : null; - var callback = typeof maybeCallback == 'function' - ? maybeCallback - : (typeof maybeSourceMap == 'function' ? maybeSourceMap : null); - var context = { - stats: { - efficiency: 0, - minifiedSize: 0, - originalSize: 0, - startedAt: Date.now(), - timeSpent: 0 - }, - cache: { specificity: {} }, - errors: [], - inlinedStylesheets: [], - inputSourceMapTracker: inputSourceMapTracker(), - localOnly: !callback, - options: options, - source: null, - sourcesContent: {}, - validator: validator(options.compatibility), - warnings: [] - }; - var implicitRebaseToWarning; - - if (sourceMap) { - context.inputSourceMapTracker.track(undefined, sourceMap); - } - - if (options.rebase && !options.explicitRebaseTo) { - implicitRebaseToWarning = 'You have set `rebase: true` without giving `rebaseTo` option, which, in this case, defaults to the current working directory. ' - + 'You are then warned this can lead to unexpected URL rebasing (aka here be dragons)! ' - + 'If you are OK with the clean-css output, then you can get rid of this warning by giving clean-css a `rebaseTo: process.cwd()` option.'; - context.warnings.push(implicitRebaseToWarning); - } - - return runner(context.localOnly)(function() { - return readSources(input, context, function(tokens) { - var serialize = context.options.sourceMap - ? serializeStylesAndSourceMap - : serializeStyles; - - var optimizedTokens = optimize(tokens, context); - var optimizedStyles = serialize(optimizedTokens, context); - var output = withMetadata(optimizedStyles, context); - - return callback - ? callback(context.errors.length > 0 ? context.errors : null, output) - : output; - }); - }); -} - -function runner(localOnly) { - // to always execute code asynchronously when a callback is given - // more at blog.izs.me/post/59142742143/designing-apis-for-asynchrony - return localOnly - ? function(callback) { return callback(); } - : process.nextTick; -} - -function optimize(tokens, context) { - var optimized = level0Optimize(tokens, context); - - optimized = OptimizationLevel.One in context.options.level - ? level1Optimize(tokens, context) - : tokens; - optimized = OptimizationLevel.Two in context.options.level - ? level2Optimize(tokens, context, true) - : optimized; - - return optimized; -} - -function withMetadata(output, context) { - output.stats = calculateStatsFrom(output.styles, context); - output.errors = context.errors; - output.inlinedStylesheets = context.inlinedStylesheets; - output.warnings = context.warnings; - - return output; -} - -function calculateStatsFrom(styles, context) { - var finishedAt = Date.now(); - var timeSpent = finishedAt - context.stats.startedAt; - - delete context.stats.startedAt; - context.stats.timeSpent = timeSpent; - context.stats.efficiency = 1 - styles.length / context.stats.originalSize; - context.stats.minifiedSize = styles.length; - - return context.stats; -} - - -/***/ }), - -/***/ 8315: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var wrapSingle = (__webpack_require__(3684).single); - -var Token = __webpack_require__(4633); - -function deep(property) { - var cloned = shallow(property); - for (var i = property.components.length - 1; i >= 0; i--) { - var component = shallow(property.components[i]); - component.value = property.components[i].value.slice(0); - cloned.components.unshift(component); - } - - cloned.dirty = true; - cloned.value = property.value.slice(0); - - return cloned; -} - -function shallow(property) { - var cloned = wrapSingle([ - Token.PROPERTY, - [Token.PROPERTY_NAME, property.name] - ]); - cloned.important = property.important; - cloned.hack = property.hack; - cloned.unused = false; - return cloned; -} - -module.exports = { - deep: deep, - shallow: shallow -}; - - -/***/ }), - -/***/ 6058: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// Contains the interpretation of CSS properties, as used by the property optimizer - -var breakUp = __webpack_require__(9954); -var canOverride = __webpack_require__(9638); -var restore = __webpack_require__(4862); - -var propertyOptimizers = __webpack_require__(2388); -var valueOptimizers = __webpack_require__(5125); - -var override = __webpack_require__(8832); - -// Properties to process -// Extend this object in order to add support for more properties in the optimizer. -// -// Each key in this object represents a CSS property and should be an object. -// Such an object contains properties that describe how the represented CSS property should be handled. -// Possible options: -// -// * components: array (Only specify for shorthand properties.) -// Contains the names of the granular properties this shorthand compacts. -// -// * canOverride: function -// Returns whether two tokens of this property can be merged with each other. -// This property has no meaning for shorthands. -// -// * defaultValue: string -// Specifies the default value of the property according to the CSS standard. -// For shorthand, this is used when every component is set to its default value, therefore it should be the shortest possible default value of all the components. -// -// * shortestValue: string -// Specifies the shortest possible value the property can possibly have. -// (Falls back to defaultValue if unspecified.) -// -// * breakUp: function (Only specify for shorthand properties.) -// Breaks the shorthand up to its components. -// -// * restore: function (Only specify for shorthand properties.) -// Puts the shorthand together from its components. -// -var configuration = { - animation: { - canOverride: canOverride.generic.components([ - canOverride.generic.time, - canOverride.generic.timingFunction, - canOverride.generic.time, - canOverride.property.animationIterationCount, - canOverride.property.animationDirection, - canOverride.property.animationFillMode, - canOverride.property.animationPlayState, - canOverride.property.animationName - ]), - components: [ - 'animation-duration', - 'animation-timing-function', - 'animation-delay', - 'animation-iteration-count', - 'animation-direction', - 'animation-fill-mode', - 'animation-play-state', - 'animation-name' - ], - breakUp: breakUp.multiplex(breakUp.animation), - defaultValue: 'none', - restore: restore.multiplex(restore.withoutDefaults), - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.textQuotes, - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-delay': { - canOverride: canOverride.generic.time, - componentOf: [ - 'animation' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-direction': { - canOverride: canOverride.property.animationDirection, - componentOf: [ - 'animation' - ], - defaultValue: 'normal', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-duration': { - canOverride: canOverride.generic.time, - componentOf: [ - 'animation' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - keepUnlessDefault: 'animation-delay', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-fill-mode': { - canOverride: canOverride.property.animationFillMode, - componentOf: [ - 'animation' - ], - defaultValue: 'none', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-iteration-count': { - canOverride: canOverride.property.animationIterationCount, - componentOf: [ - 'animation' - ], - defaultValue: '1', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-name': { - canOverride: canOverride.property.animationName, - componentOf: [ - 'animation' - ], - defaultValue: 'none', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.textQuotes - ], - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-play-state': { - canOverride: canOverride.property.animationPlayState, - componentOf: [ - 'animation' - ], - defaultValue: 'running', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - 'animation-timing-function': { - canOverride: canOverride.generic.timingFunction, - componentOf: [ - 'animation' - ], - defaultValue: 'ease', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-o-', - '-webkit-' - ] - }, - background: { - canOverride: canOverride.generic.components([ - canOverride.generic.image, - canOverride.property.backgroundPosition, - canOverride.property.backgroundSize, - canOverride.property.backgroundRepeat, - canOverride.property.backgroundAttachment, - canOverride.property.backgroundOrigin, - canOverride.property.backgroundClip, - canOverride.generic.color - ]), - components: [ - 'background-image', - 'background-position', - 'background-size', - 'background-repeat', - 'background-attachment', - 'background-origin', - 'background-clip', - 'background-color' - ], - breakUp: breakUp.multiplex(breakUp.background), - defaultValue: '0 0', - propertyOptimizer: propertyOptimizers.background, - restore: restore.multiplex(restore.background), - shortestValue: '0', - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.urlWhiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes - ] - }, - 'background-attachment': { - canOverride: canOverride.property.backgroundAttachment, - componentOf: [ - 'background' - ], - defaultValue: 'scroll', - intoMultiplexMode: 'real' - }, - 'background-clip': { - canOverride: canOverride.property.backgroundClip, - componentOf: [ - 'background' - ], - defaultValue: 'border-box', - intoMultiplexMode: 'real', - shortestValue: 'border-box' - }, - 'background-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'background' - ], - defaultValue: 'transparent', - intoMultiplexMode: 'real', // otherwise real color will turn into default since color appears in last multiplex only - multiplexLastOnly: true, - nonMergeableValue: 'none', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'background-image': { - canOverride: canOverride.generic.image, - componentOf: [ - 'background' - ], - defaultValue: 'none', - intoMultiplexMode: 'default', - valueOptimizers: [ - valueOptimizers.urlWhiteSpace, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes, - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'background-origin': { - canOverride: canOverride.property.backgroundOrigin, - componentOf: [ - 'background' - ], - defaultValue: 'padding-box', - intoMultiplexMode: 'real', - shortestValue: 'border-box' - }, - 'background-position': { - canOverride: canOverride.property.backgroundPosition, - componentOf: [ - 'background' - ], - defaultValue: ['0', '0'], - doubleValues: true, - intoMultiplexMode: 'real', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'background-repeat': { - canOverride: canOverride.property.backgroundRepeat, - componentOf: [ - 'background' - ], - defaultValue: ['repeat'], - doubleValues: true, - intoMultiplexMode: 'real' - }, - 'background-size': { - canOverride: canOverride.property.backgroundSize, - componentOf: [ - 'background' - ], - defaultValue: ['auto'], - doubleValues: true, - intoMultiplexMode: 'real', - shortestValue: '0 0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - bottom: { - canOverride: canOverride.property.bottom, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - border: { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-width', - 'border-style', - 'border-color' - ], - defaultValue: 'none', - overridesShorthands: [ - 'border-bottom', - 'border-left', - 'border-right', - 'border-top' - ], - restore: restore.withoutDefaults, - shorthand: true, - shorthandComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-bottom': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-bottom-width', - 'border-bottom-style', - 'border-bottom-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-bottom-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-bottom', - 'border-color' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-bottom-left-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-bottom-right-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-bottom-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-bottom', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-bottom-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-bottom', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-top-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-collapse': { - canOverride: canOverride.property.borderCollapse, - defaultValue: 'separate' - }, - 'border-color': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.color, - canOverride.generic.color, - canOverride.generic.color, - canOverride.generic.color - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-color', - 'border-right-color', - 'border-bottom-color', - 'border-left-color' - ], - defaultValue: 'none', - restore: restore.fourValues, - shortestValue: 'red', - shorthand: true, - singleTypeComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-left': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-left-width', - 'border-left-style', - 'border-left-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - 'border-left-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-left' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-left-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-left', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-left-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-left', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-right-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-radius': { - breakUp: breakUp.borderRadius, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - components: [ - 'border-top-left-radius', - 'border-top-right-radius', - 'border-bottom-right-radius', - 'border-bottom-left-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - restore: restore.borderRadius, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-right': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-right-width', - 'border-right-style', - 'border-right-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-right-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-right' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-right-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-right', - 'border-style' - ], - defaultValue: 'none' - }, - 'border-right-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-right', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-left-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-style': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.property.borderStyle, - canOverride.property.borderStyle, - canOverride.property.borderStyle, - canOverride.property.borderStyle - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-style', - 'border-right-style', - 'border-bottom-style', - 'border-left-style' - ], - defaultValue: 'none', - restore: restore.fourValues, - shorthand: true, - singleTypeComponents: true - }, - 'border-top': { - breakUp: breakUp.border, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.property.borderStyle, - canOverride.generic.color - ]), - components: [ - 'border-top-width', - 'border-top-style', - 'border-top-color' - ], - defaultValue: 'none', - restore: restore.withoutDefaults, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.zero, - valueOptimizers.color, - valueOptimizers.unit - ] - }, - 'border-top-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'border-color', - 'border-top' - ], - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'border-top-left-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-top-right-radius': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-radius' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.borderRadius, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-o-' - ] - }, - 'border-top-style': { - canOverride: canOverride.property.borderStyle, - componentOf: [ - 'border-style', - 'border-top' - ], - defaultValue: 'none' - }, - 'border-top-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'border-top', - 'border-width' - ], - defaultValue: 'medium', - oppositeTo: 'border-bottom-width', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'border-width': { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - componentOf: [ - 'border' - ], - components: [ - 'border-top-width', - 'border-right-width', - 'border-bottom-width', - 'border-left-width' - ], - defaultValue: 'medium', - restore: restore.fourValues, - shortestValue: '0', - shorthand: true, - singleTypeComponents: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'box-shadow': { - propertyOptimizer: propertyOptimizers.boxShadow, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero, - valueOptimizers.color - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - clear: { - canOverride: canOverride.property.clear, - defaultValue: 'none' - }, - clip: { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - color: { - canOverride: canOverride.generic.color, - defaultValue: 'transparent', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'column-gap': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - cursor: { - canOverride: canOverride.property.cursor, - defaultValue: 'auto' - }, - display: { canOverride: canOverride.property.display }, - filter: { - propertyOptimizer: propertyOptimizers.filter, - valueOptimizers: [ - valueOptimizers.fraction - ] - }, - float: { - canOverride: canOverride.property.float, - defaultValue: 'none' - }, - font: { - breakUp: breakUp.font, - canOverride: canOverride.generic.components([ - canOverride.property.fontStyle, - canOverride.property.fontVariant, - canOverride.property.fontWeight, - canOverride.property.fontStretch, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.property.fontFamily - ]), - components: [ - 'font-style', - 'font-variant', - 'font-weight', - 'font-stretch', - 'font-size', - 'line-height', - 'font-family' - ], - restore: restore.font, - shorthand: true, - valueOptimizers: [ - valueOptimizers.textQuotes - ] - }, - 'font-family': { - canOverride: canOverride.property.fontFamily, - defaultValue: 'user|agent|specific', - valueOptimizers: [ - valueOptimizers.textQuotes - ] - }, - 'font-size': { - canOverride: canOverride.generic.unit, - defaultValue: 'medium', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.fraction - ] - }, - 'font-stretch': { - canOverride: canOverride.property.fontStretch, - defaultValue: 'normal' - }, - 'font-style': { - canOverride: canOverride.property.fontStyle, - defaultValue: 'normal' - }, - 'font-variant': { - canOverride: canOverride.property.fontVariant, - defaultValue: 'normal' - }, - 'font-weight': { - canOverride: canOverride.property.fontWeight, - defaultValue: 'normal', - propertyOptimizer: propertyOptimizers.fontWeight, - shortestValue: '400' - }, - gap: { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - height: { - canOverride: canOverride.generic.unit, - defaultValue: 'auto', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - left: { - canOverride: canOverride.property.left, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'letter-spacing': { - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'line-height': { - canOverride: canOverride.generic.unitOrNumber, - defaultValue: 'normal', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'list-style': { - canOverride: canOverride.generic.components([ - canOverride.property.listStyleType, - canOverride.property.listStylePosition, - canOverride.property.listStyleImage - ]), - components: [ - 'list-style-type', - 'list-style-position', - 'list-style-image' - ], - breakUp: breakUp.listStyle, - restore: restore.withoutDefaults, - defaultValue: 'outside', // can't use 'disc' because that'd override default 'decimal' for
    - shortestValue: 'none', - shorthand: true - }, - 'list-style-image': { - canOverride: canOverride.generic.image, - componentOf: [ - 'list-style' - ], - defaultValue: 'none' - }, - 'list-style-position': { - canOverride: canOverride.property.listStylePosition, - componentOf: [ - 'list-style' - ], - defaultValue: 'outside', - shortestValue: 'inside' - }, - 'list-style-type': { - canOverride: canOverride.property.listStyleType, - componentOf: [ - 'list-style' - ], - // NOTE: we can't tell the real default value here, it's 'disc' for
      and 'decimal' for
        - // this is a hack, but it doesn't matter because this value will be either overridden or - // it will disappear at the final step anyway - defaultValue: 'decimal|disc', - shortestValue: 'none' - }, - margin: { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - components: [ - 'margin-top', - 'margin-right', - 'margin-bottom', - 'margin-left' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.margin, - restore: restore.fourValues, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-bottom': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-top', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-inline-end': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-inline-start': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-left': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-right', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-right': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-left', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'margin-top': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'margin' - ], - defaultValue: '0', - oppositeTo: 'margin-bottom', - propertyOptimizer: propertyOptimizers.margin, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'max-height': { - canOverride: canOverride.generic.unit, - defaultValue: 'none', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'max-width': { - canOverride: canOverride.generic.unit, - defaultValue: 'none', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'min-height': { - canOverride: canOverride.generic.unit, - defaultValue: '0', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'min-width': { - canOverride: canOverride.generic.unit, - defaultValue: '0', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - opacity: { - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.precision - ] - }, - outline: { - canOverride: canOverride.generic.components([ - canOverride.generic.color, - canOverride.property.outlineStyle, - canOverride.generic.unit - ]), - components: [ - 'outline-color', - 'outline-style', - 'outline-width' - ], - breakUp: breakUp.outline, - restore: restore.withoutDefaults, - defaultValue: '0', - propertyOptimizer: propertyOptimizers.outline, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'outline-color': { - canOverride: canOverride.generic.color, - componentOf: [ - 'outline' - ], - defaultValue: 'invert', - shortestValue: 'red', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.color - ] - }, - 'outline-style': { - canOverride: canOverride.property.outlineStyle, - componentOf: [ - 'outline' - ], - defaultValue: 'none' - }, - 'outline-width': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'outline' - ], - defaultValue: 'medium', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - overflow: { - canOverride: canOverride.property.overflow, - defaultValue: 'visible' - }, - 'overflow-x': { - canOverride: canOverride.property.overflow, - defaultValue: 'visible' - }, - 'overflow-y': { - canOverride: canOverride.property.overflow, - defaultValue: 'visible' - }, - padding: { - breakUp: breakUp.fourValues, - canOverride: canOverride.generic.components([ - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit, - canOverride.generic.unit - ]), - components: [ - 'padding-top', - 'padding-right', - 'padding-bottom', - 'padding-left' - ], - defaultValue: '0', - propertyOptimizer: propertyOptimizers.padding, - restore: restore.fourValues, - shorthand: true, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-bottom': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-top', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-left': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-right', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-right': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-left', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'padding-top': { - canOverride: canOverride.generic.unit, - componentOf: [ - 'padding' - ], - defaultValue: '0', - oppositeTo: 'padding-bottom', - propertyOptimizer: propertyOptimizers.padding, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - position: { - canOverride: canOverride.property.position, - defaultValue: 'static' - }, - right: { - canOverride: canOverride.property.right, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'row-gap': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - src: { - valueOptimizers: [ - valueOptimizers.urlWhiteSpace, - valueOptimizers.urlPrefix, - valueOptimizers.urlQuotes - ] - }, - 'stroke-width': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'text-align': { - canOverride: canOverride.property.textAlign, - // NOTE: we can't tell the real default value here, as it depends on default text direction - // this is a hack, but it doesn't matter because this value will be either overridden or - // it will disappear anyway - defaultValue: 'left|right' - }, - 'text-decoration': { - canOverride: canOverride.property.textDecoration, - defaultValue: 'none' - }, - 'text-indent': { - canOverride: canOverride.property.textOverflow, - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.fraction, - valueOptimizers.zero - ] - }, - 'text-overflow': { - canOverride: canOverride.property.textOverflow, - defaultValue: 'none' - }, - 'text-shadow': { - canOverride: canOverride.property.textShadow, - defaultValue: 'none', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.zero, - valueOptimizers.color - ] - }, - top: { - canOverride: canOverride.property.top, - defaultValue: 'auto', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - transform: { - canOverride: canOverride.property.transform, - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.degrees, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - transition: { - breakUp: breakUp.multiplex(breakUp.transition), - canOverride: canOverride.generic.components([ - canOverride.property.transitionProperty, - canOverride.generic.time, - canOverride.generic.timingFunction, - canOverride.generic.time - ]), - components: [ - 'transition-property', - 'transition-duration', - 'transition-timing-function', - 'transition-delay' - ], - defaultValue: 'none', - restore: restore.multiplex(restore.withoutDefaults), - shorthand: true, - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-delay': { - canOverride: canOverride.generic.time, - componentOf: [ - 'transition' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - valueOptimizers: [ - valueOptimizers.time - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-duration': { - canOverride: canOverride.generic.time, - componentOf: [ - 'transition' - ], - defaultValue: '0s', - intoMultiplexMode: 'real', - keepUnlessDefault: 'transition-delay', - valueOptimizers: [ - valueOptimizers.time, - valueOptimizers.fraction - ], - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-property': { - canOverride: canOverride.generic.propertyName, - componentOf: [ - 'transition' - ], - defaultValue: 'all', - intoMultiplexMode: 'placeholder', - placeholderValue: '_', // it's a short value that won't match any property and still be a valid `transition-property` - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'transition-timing-function': { - canOverride: canOverride.generic.timingFunction, - componentOf: [ - 'transition' - ], - defaultValue: 'ease', - intoMultiplexMode: 'real', - vendorPrefixes: [ - '-moz-', - '-ms-', - '-o-', - '-webkit-' - ] - }, - 'vertical-align': { - canOverride: canOverride.property.verticalAlign, - defaultValue: 'baseline', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - visibility: { - canOverride: canOverride.property.visibility, - defaultValue: 'visible' - }, - '-webkit-tap-highlight-color': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.color - ] - }, - '-webkit-margin-end': { - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'white-space': { - canOverride: canOverride.property.whiteSpace, - defaultValue: 'normal' - }, - width: { - canOverride: canOverride.generic.unit, - defaultValue: 'auto', - shortestValue: '0', - valueOptimizers: [ - valueOptimizers.whiteSpace, - valueOptimizers.fraction, - valueOptimizers.precision, - valueOptimizers.unit, - valueOptimizers.zero - ] - }, - 'z-index': { - canOverride: canOverride.property.zIndex, - defaultValue: 'auto' - } -}; - -// generate vendor-prefixed configuration -var vendorPrefixedConfiguration = {}; - -function cloneDescriptor(propertyName, prefix) { - var clonedDescriptor = override(configuration[propertyName], {}); - - if ('componentOf' in clonedDescriptor) { - clonedDescriptor.componentOf = clonedDescriptor.componentOf.map(function(shorthandName) { - return prefix + shorthandName; - }); - } - - if ('components' in clonedDescriptor) { - clonedDescriptor.components = clonedDescriptor.components.map(function(longhandName) { - return prefix + longhandName; - }); - } - - if ('keepUnlessDefault' in clonedDescriptor) { - clonedDescriptor.keepUnlessDefault = prefix + clonedDescriptor.keepUnlessDefault; - } - - return clonedDescriptor; -} - -for (var propertyName in configuration) { - var descriptor = configuration[propertyName]; - - if (!('vendorPrefixes' in descriptor)) { - continue; - } - - for (var i = 0; i < descriptor.vendorPrefixes.length; i++) { - var prefix = descriptor.vendorPrefixes[i]; - var clonedDescriptor = cloneDescriptor(propertyName, prefix); - delete clonedDescriptor.vendorPrefixes; - - vendorPrefixedConfiguration[prefix + propertyName] = clonedDescriptor; - } - - delete descriptor.vendorPrefixes; -} - -module.exports = override(configuration, vendorPrefixedConfiguration); - - -/***/ }), - -/***/ 9954: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var InvalidPropertyError = __webpack_require__(5942); - -var wrapSingle = (__webpack_require__(3684).single); - -var Token = __webpack_require__(4633); -var Marker = __webpack_require__(3820); - -var formatPosition = __webpack_require__(6187); - -function _anyIsInherit(values) { - var i, l; - - for (i = 0, l = values.length; i < l; i++) { - if (values[i][1] == 'inherit') { - return true; - } - } - - return false; -} - -function _colorFilter(validator) { - return function(value) { - return value[1] == 'invert' || validator.isColor(value[1]) || validator.isPrefixed(value[1]); - }; -} - -function _styleFilter(validator) { - return function(value) { - return value[1] != 'inherit' && validator.isStyleKeyword(value[1]) && !validator.isColorFunction(value[1]); - }; -} - -function _wrapDefault(name, property, configuration) { - var descriptor = configuration[name]; - if (descriptor.doubleValues && descriptor.defaultValue.length == 2) { - return wrapSingle([ - Token.PROPERTY, - [Token.PROPERTY_NAME, name], - [Token.PROPERTY_VALUE, descriptor.defaultValue[0]], - [Token.PROPERTY_VALUE, descriptor.defaultValue[1]] - ]); - } if (descriptor.doubleValues && descriptor.defaultValue.length == 1) { - return wrapSingle([ - Token.PROPERTY, - [Token.PROPERTY_NAME, name], - [Token.PROPERTY_VALUE, descriptor.defaultValue[0]] - ]); - } - return wrapSingle([ - Token.PROPERTY, - [Token.PROPERTY_NAME, name], - [Token.PROPERTY_VALUE, descriptor.defaultValue] - ]); -} - -function _widthFilter(validator) { - return function(value) { - return value[1] != 'inherit' - && (validator.isWidth(value[1]) || validator.isUnit(value[1]) || validator.isDynamicUnit(value[1])) - && !validator.isStyleKeyword(value[1]) - && !validator.isColorFunction(value[1]); - }; -} - -function animation(property, configuration, validator) { - var duration = _wrapDefault(property.name + '-duration', property, configuration); - var timing = _wrapDefault(property.name + '-timing-function', property, configuration); - var delay = _wrapDefault(property.name + '-delay', property, configuration); - var iteration = _wrapDefault(property.name + '-iteration-count', property, configuration); - var direction = _wrapDefault(property.name + '-direction', property, configuration); - var fill = _wrapDefault(property.name + '-fill-mode', property, configuration); - var play = _wrapDefault(property.name + '-play-state', property, configuration); - var name = _wrapDefault(property.name + '-name', property, configuration); - var components = [duration, timing, delay, iteration, direction, fill, play, name]; - var values = property.value; - var value; - var durationSet = false; - var timingSet = false; - var delaySet = false; - var iterationSet = false; - var directionSet = false; - var fillSet = false; - var playSet = false; - var nameSet = false; - var i; - var l; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - // eslint-disable-next-line max-len - duration.value = timing.value = delay.value = iteration.value = direction.value = fill.value = play.value = name.value = property.value; - return components; - } - - if (values.length > 1 && _anyIsInherit(values)) { - throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isTime(value[1]) && !durationSet) { - duration.value = [value]; - durationSet = true; - } else if (validator.isTime(value[1]) && !delaySet) { - delay.value = [value]; - delaySet = true; - } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) { - timing.value = [value]; - timingSet = true; - } else if ((validator.isAnimationIterationCountKeyword(value[1]) - || validator.isPositiveNumber(value[1])) - && !iterationSet) { - iteration.value = [value]; - iterationSet = true; - } else if (validator.isAnimationDirectionKeyword(value[1]) && !directionSet) { - direction.value = [value]; - directionSet = true; - } else if (validator.isAnimationFillModeKeyword(value[1]) && !fillSet) { - fill.value = [value]; - fillSet = true; - } else if (validator.isAnimationPlayStateKeyword(value[1]) && !playSet) { - play.value = [value]; - playSet = true; - } else if ((validator.isAnimationNameKeyword(value[1]) || validator.isIdentifier(value[1])) && !nameSet) { - name.value = [value]; - nameSet = true; - } else { - throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.'); - } - } - - return components; -} - -function background(property, configuration, validator) { - var image = _wrapDefault('background-image', property, configuration); - var position = _wrapDefault('background-position', property, configuration); - var size = _wrapDefault('background-size', property, configuration); - var repeat = _wrapDefault('background-repeat', property, configuration); - var attachment = _wrapDefault('background-attachment', property, configuration); - var origin = _wrapDefault('background-origin', property, configuration); - var clip = _wrapDefault('background-clip', property, configuration); - var color = _wrapDefault('background-color', property, configuration); - var components = [image, position, size, repeat, attachment, origin, clip, color]; - var values = property.value; - - var positionSet = false; - var clipSet = false; - var originSet = false; - var repeatSet = false; - - var anyValueSet = false; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - // NOTE: 'inherit' is not a valid value for background-attachment - color.value = image.value = repeat.value = position.value = size.value = origin.value = clip.value = property.value; - return components; - } - - if (property.value.length == 1 && property.value[0][1] == '0 0') { - return components; - } - - for (var i = values.length - 1; i >= 0; i--) { - var value = values[i]; - - if (validator.isBackgroundAttachmentKeyword(value[1])) { - attachment.value = [value]; - anyValueSet = true; - } else if (validator.isBackgroundClipKeyword(value[1]) || validator.isBackgroundOriginKeyword(value[1])) { - if (clipSet) { - origin.value = [value]; - originSet = true; - } else { - clip.value = [value]; - clipSet = true; - } - anyValueSet = true; - } else if (validator.isBackgroundRepeatKeyword(value[1])) { - if (repeatSet) { - repeat.value.unshift(value); - } else { - repeat.value = [value]; - repeatSet = true; - } - anyValueSet = true; - } else if (validator.isBackgroundPositionKeyword(value[1]) - || validator.isBackgroundSizeKeyword(value[1]) - || validator.isUnit(value[1]) - || validator.isDynamicUnit(value[1])) { - if (i > 0) { - var previousValue = values[i - 1]; - - if (previousValue[1] == Marker.FORWARD_SLASH) { - size.value = [value]; - } else if (i > 1 && values[i - 2][1] == Marker.FORWARD_SLASH) { - size.value = [previousValue, value]; - i -= 2; - } else { - if (!positionSet) { position.value = []; } - - position.value.unshift(value); - positionSet = true; - } - } else { - if (!positionSet) { position.value = []; } - - position.value.unshift(value); - positionSet = true; - } - anyValueSet = true; - } else if ((color.value[0][1] == configuration[color.name].defaultValue || color.value[0][1] == 'none') && (validator.isColor(value[1]) || validator.isPrefixed(value[1]))) { - color.value = [value]; - anyValueSet = true; - } else if (validator.isUrl(value[1]) || validator.isFunction(value[1])) { - image.value = [value]; - anyValueSet = true; - } - } - - if (clipSet && !originSet) { origin.value = clip.value.slice(0); } - - if (!anyValueSet) { - throw new InvalidPropertyError('Invalid background value at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - return components; -} - -function borderRadius(property, configuration) { - var values = property.value; - var splitAt = -1; - - for (var i = 0, l = values.length; i < l; i++) { - if (values[i][1] == Marker.FORWARD_SLASH) { - splitAt = i; - break; - } - } - - if (splitAt === 0 || splitAt === values.length - 1) { - throw new InvalidPropertyError('Invalid border-radius value at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - var target = _wrapDefault(property.name, property, configuration); - target.value = splitAt > -1 - ? values.slice(0, splitAt) - : values.slice(0); - target.components = fourValues(target, configuration); - - var remainder = _wrapDefault(property.name, property, configuration); - remainder.value = splitAt > -1 - ? values.slice(splitAt + 1) - : values.slice(0); - remainder.components = fourValues(remainder, configuration); - - for (var j = 0; j < 4; j++) { - target.components[j].multiplex = true; - target.components[j].value = target.components[j].value.concat(remainder.components[j].value); - } - - return target.components; -} - -function font(property, configuration, validator) { - var style = _wrapDefault('font-style', property, configuration); - var variant = _wrapDefault('font-variant', property, configuration); - var weight = _wrapDefault('font-weight', property, configuration); - var stretch = _wrapDefault('font-stretch', property, configuration); - var size = _wrapDefault('font-size', property, configuration); - var height = _wrapDefault('line-height', property, configuration); - var family = _wrapDefault('font-family', property, configuration); - var components = [style, variant, weight, stretch, size, height, family]; - var values = property.value; - var fuzzyMatched = 4; // style, variant, weight, and stretch - var index = 0; - var isStretchSet = false; - var isStretchValid; - var isStyleSet = false; - var isStyleValid; - var isVariantSet = false; - var isVariantValid; - var isWeightSet = false; - var isWeightValid; - var appendableFamilyName = false; - - if (!values[index]) { - throw new InvalidPropertyError('Missing font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.'); - } - - if (values.length == 1 && values[0][1] == 'inherit') { - style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values; - return components; - } - - if (values.length == 1 - && (validator.isFontKeyword(values[0][1]) - || validator.isGlobal(values[0][1]) - || validator.isPrefixed(values[0][1])) - ) { - values[0][1] = Marker.INTERNAL + values[0][1]; - style.value = variant.value = weight.value = stretch.value = size.value = height.value = family.value = values; - return components; - } - - if (values.length < 2 || !_anyIsFontSize(values, validator) || !_anyIsFontFamily(values, validator)) { - throw new InvalidPropertyError('Invalid font values at ' + formatPosition(property.all[property.position][1][2][0]) + '. Ignoring.'); - } - - if (values.length > 1 && _anyIsInherit(values)) { - throw new InvalidPropertyError('Invalid font values at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - // fuzzy match style, variant, weight, and stretch on first elements - while (index < fuzzyMatched) { - isStretchValid = validator.isFontStretchKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - isStyleValid = validator.isFontStyleKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - isVariantValid = validator.isFontVariantKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - isWeightValid = validator.isFontWeightKeyword(values[index][1]) || validator.isGlobal(values[index][1]); - - if (isStyleValid && !isStyleSet) { - style.value = [values[index]]; - isStyleSet = true; - } else if (isVariantValid && !isVariantSet) { - variant.value = [values[index]]; - isVariantSet = true; - } else if (isWeightValid && !isWeightSet) { - weight.value = [values[index]]; - isWeightSet = true; - } else if (isStretchValid && !isStretchSet) { - stretch.value = [values[index]]; - isStretchSet = true; - } else if (isStyleValid - && isStyleSet - || isVariantValid - && isVariantSet - || isWeightValid - && isWeightSet - || isStretchValid - && isStretchSet) { - throw new InvalidPropertyError('Invalid font style / variant / weight / stretch value at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } else { - break; - } - - index++; - } - - // now comes font-size ... - if (validator.isFontSizeKeyword(values[index][1]) - || validator.isUnit(values[index][1]) - && !validator.isDynamicUnit(values[index][1])) { - size.value = [values[index]]; - index++; - } else { - throw new InvalidPropertyError('Missing font size at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - if (!values[index]) { - throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - // ... and perhaps line-height - if (values[index] - && values[index][1] == Marker.FORWARD_SLASH - && values[index + 1] - && (validator.isLineHeightKeyword(values[index + 1][1]) - || validator.isUnit(values[index + 1][1]) - || validator.isNumber(values[index + 1][1]))) { - height.value = [values[index + 1]]; - index++; - index++; - } - - // ... and whatever comes next is font-family - family.value = []; - - while (values[index]) { - if (values[index][1] == Marker.COMMA) { - appendableFamilyName = false; - } else { - if (appendableFamilyName) { - family.value[family.value.length - 1][1] += Marker.SPACE + values[index][1]; - } else { - family.value.push(values[index]); - } - - appendableFamilyName = true; - } - - index++; - } - - if (family.value.length === 0) { - throw new InvalidPropertyError('Missing font family at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - return components; -} - -function _anyIsFontSize(values, validator) { - var value; - var i, l; - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isFontSizeKeyword(value[1]) - || validator.isUnit(value[1]) - && !validator.isDynamicUnit(value[1]) - || validator.isFunction(value[1])) { - return true; - } - } - - return false; -} - -function _anyIsFontFamily(values, validator) { - var value; - var i, l; - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isIdentifier(value[1]) || validator.isQuotedText(value[1])) { - return true; - } - } - - return false; -} - -function fourValues(property, configuration) { - var componentNames = configuration[property.name].components; - var components = []; - var value = property.value; - - if (value.length < 1) { return []; } - - if (value.length < 2) { value[1] = value[0].slice(0); } - if (value.length < 3) { value[2] = value[0].slice(0); } - if (value.length < 4) { value[3] = value[1].slice(0); } - - for (var i = componentNames.length - 1; i >= 0; i--) { - var component = wrapSingle([ - Token.PROPERTY, - [Token.PROPERTY_NAME, componentNames[i]] - ]); - component.value = [value[i]]; - components.unshift(component); - } - - return components; -} - -function multiplex(splitWith) { - return function(property, configuration, validator) { - var splitsAt = []; - var values = property.value; - var i, j, l, m; - - // find split commas - for (i = 0, l = values.length; i < l; i++) { - if (values[i][1] == ',') { splitsAt.push(i); } - } - - if (splitsAt.length === 0) { return splitWith(property, configuration, validator); } - - var splitComponents = []; - - // split over commas, and into components - for (i = 0, l = splitsAt.length; i <= l; i++) { - var from = i === 0 ? 0 : splitsAt[i - 1] + 1; - var to = i < l ? splitsAt[i] : values.length; - - var _property = _wrapDefault(property.name, property, configuration); - _property.value = values.slice(from, to); - - if (_property.value.length > 0) { - splitComponents.push(splitWith(_property, configuration, validator)); - } - } - - var components = splitComponents[0]; - - // group component values from each split - for (i = 0, l = components.length; i < l; i++) { - components[i].multiplex = true; - - for (j = 1, m = splitComponents.length; j < m; j++) { - components[i].value.push([Token.PROPERTY_VALUE, Marker.COMMA]); - Array.prototype.push.apply(components[i].value, splitComponents[j][i].value); - } - } - - return components; - }; -} - -function listStyle(property, configuration, validator) { - var type = _wrapDefault('list-style-type', property, configuration); - var position = _wrapDefault('list-style-position', property, configuration); - var image = _wrapDefault('list-style-image', property, configuration); - var components = [type, position, image]; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - type.value = position.value = image.value = [property.value[0]]; - return components; - } - - var values = property.value.slice(0); - var total = values.length; - var index = 0; - - // `image` first... - for (index = 0, total = values.length; index < total; index++) { - if (validator.isUrl(values[index][1]) || values[index][1] == '0') { - image.value = [values[index]]; - values.splice(index, 1); - break; - } - } - - // ... then `position` - for (index = 0, total = values.length; index < total; index++) { - if (validator.isListStylePositionKeyword(values[index][1])) { - position.value = [values[index]]; - values.splice(index, 1); - break; - } - } - - // ... and what's left is a `type` - if (values.length > 0 && (validator.isListStyleTypeKeyword(values[0][1]) || validator.isIdentifier(values[0][1]))) { - type.value = [values[0]]; - } - - return components; -} - -function transition(property, configuration, validator) { - var prop = _wrapDefault(property.name + '-property', property, configuration); - var duration = _wrapDefault(property.name + '-duration', property, configuration); - var timing = _wrapDefault(property.name + '-timing-function', property, configuration); - var delay = _wrapDefault(property.name + '-delay', property, configuration); - var components = [prop, duration, timing, delay]; - var values = property.value; - var value; - var durationSet = false; - var delaySet = false; - var propSet = false; - var timingSet = false; - var i; - var l; - - if (property.value.length == 1 && property.value[0][1] == 'inherit') { - prop.value = duration.value = timing.value = delay.value = property.value; - return components; - } - - if (values.length > 1 && _anyIsInherit(values)) { - throw new InvalidPropertyError('Invalid animation values at ' + formatPosition(values[0][2][0]) + '. Ignoring.'); - } - - for (i = 0, l = values.length; i < l; i++) { - value = values[i]; - - if (validator.isTime(value[1]) && !durationSet) { - duration.value = [value]; - durationSet = true; - } else if (validator.isTime(value[1]) && !delaySet) { - delay.value = [value]; - delaySet = true; - } else if ((validator.isGlobal(value[1]) || validator.isTimingFunction(value[1])) && !timingSet) { - timing.value = [value]; - timingSet = true; - } else if (validator.isIdentifier(value[1]) && !propSet) { - prop.value = [value]; - propSet = true; - } else { - throw new InvalidPropertyError('Invalid animation value at ' + formatPosition(value[2][0]) + '. Ignoring.'); - } - } - - return components; -} - -function widthStyleColor(property, configuration, validator) { - var descriptor = configuration[property.name]; - var components = [ - _wrapDefault(descriptor.components[0], property, configuration), - _wrapDefault(descriptor.components[1], property, configuration), - _wrapDefault(descriptor.components[2], property, configuration) - ]; - var color, style, width; - - for (var i = 0; i < 3; i++) { - var component = components[i]; - - if (component.name.indexOf('color') > 0) { color = component; } else if (component.name.indexOf('style') > 0) { style = component; } else { width = component; } - } - - if ((property.value.length == 1 && property.value[0][1] == 'inherit') - || (property.value.length == 3 && property.value[0][1] == 'inherit' && property.value[1][1] == 'inherit' && property.value[2][1] == 'inherit')) { - color.value = style.value = width.value = [property.value[0]]; - return components; - } - - var values = property.value.slice(0); - var match, matches; - - // NOTE: usually users don't follow the required order of parts in this shorthand, - // so we'll try to parse it caring as little about order as possible - - if (values.length > 0) { - matches = values.filter(_widthFilter(validator)); - match = matches.length > 1 && (matches[0][1] == 'none' || matches[0][1] == 'auto') ? matches[1] : matches[0]; - if (match) { - width.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - if (values.length > 0) { - match = values.filter(_styleFilter(validator))[0]; - if (match) { - style.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - if (values.length > 0) { - match = values.filter(_colorFilter(validator))[0]; - if (match) { - color.value = [match]; - values.splice(values.indexOf(match), 1); - } - } - - return components; -} - -module.exports = { - animation: animation, - background: background, - border: widthStyleColor, - borderRadius: borderRadius, - font: font, - fourValues: fourValues, - listStyle: listStyle, - multiplex: multiplex, - outline: widthStyleColor, - transition: transition -}; - - -/***/ }), - -/***/ 9638: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var understandable = __webpack_require__(6112); - -function animationIterationCount(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isAnimationIterationCountKeyword(value2) || validator.isPositiveNumber(value2); -} - -function animationName(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isAnimationNameKeyword(value2) || validator.isIdentifier(value2); -} - -function areSameFunction(validator, value1, value2) { - if (!validator.isFunction(value1) || !validator.isFunction(value2)) { - return false; - } - - var function1Name = value1.substring(0, value1.indexOf('(')); - var function2Name = value2.substring(0, value2.indexOf('(')); - - var function1Value = value1.substring(function1Name.length + 1, value1.length - 1); - var function2Value = value2.substring(function2Name.length + 1, value2.length - 1); - - if (validator.isFunction(function1Value) || validator.isFunction(function2Value)) { - return function1Name === function2Name && areSameFunction(validator, function1Value, function2Value); - } - return function1Name === function2Name; -} - -function backgroundPosition(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isBackgroundPositionKeyword(value2) || validator.isGlobal(value2)) { - return true; - } - - return unit(validator, value1, value2); -} - -function backgroundSize(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isBackgroundSizeKeyword(value2) || validator.isGlobal(value2)) { - return true; - } - - return unit(validator, value1, value2); -} - -function color(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isColor(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (!validator.colorOpacity && (validator.isRgbColor(value1) || validator.isHslColor(value1))) { - return false; - } if (!validator.colorOpacity && (validator.isRgbColor(value2) || validator.isHslColor(value2))) { - return false; - } if (!validator.colorHexAlpha && (validator.isHexAlphaColor(value1) || validator.isHexAlphaColor(value2))) { - return false; - } if (validator.isColor(value1) && validator.isColor(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function components(overrideCheckers) { - return function(validator, value1, value2, position) { - return overrideCheckers[position](validator, value1, value2); - }; -} - -function fontFamily(validator, value1, value2) { - return understandable(validator, value1, value2, 0, true); -} - -function image(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isImage(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isImage(value2)) { - return true; - } if (validator.isImage(value1)) { - return false; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function keyword(propertyName) { - return function(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isKeyword(propertyName)(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isKeyword(propertyName)(value2); - }; -} - -function keywordWithGlobal(propertyName) { - return function(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isKeyword(propertyName)(value2) || validator.isGlobal(value2); - }; -} - -function propertyName(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isIdentifier(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isIdentifier(value2); -} - -function sameFunctionOrValue(validator, value1, value2) { - return areSameFunction(validator, value1, value2) - ? true - : value1 === value2; -} - -function textShadow(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isUnit(value2) - || validator.isColor(value2) - || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isUnit(value2) || validator.isColor(value2) || validator.isGlobal(value2); -} - -function time(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isTime(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isTime(value1) && !validator.isTime(value2)) { - return false; - } if (validator.isTime(value2)) { - return true; - } if (validator.isTime(value1)) { - return false; - } if (validator.isFunction(value1) - && !validator.isPrefixed(value1) - && validator.isFunction(value2) - && !validator.isPrefixed(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function timingFunction(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isTimingFunction(value2) || validator.isGlobal(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isTimingFunction(value2) || validator.isGlobal(value2); -} - -function unit(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isUnit(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if (validator.isUnit(value1) && !validator.isUnit(value2)) { - return false; - } if (validator.isUnit(value2)) { - return true; - } if (validator.isUnit(value1)) { - return false; - } if (validator.isFunction(value1) - && !validator.isPrefixed(value1) - && validator.isFunction(value2) - && !validator.isPrefixed(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function unitOrKeywordWithGlobal(propertyName) { - var byKeyword = keywordWithGlobal(propertyName); - - return function(validator, value1, value2) { - return unit(validator, value1, value2) || byKeyword(validator, value1, value2); - }; -} - -function unitOrNumber(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) - && !(validator.isUnit(value2) - || validator.isNumber(value2))) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } if ((validator.isUnit(value1) - || validator.isNumber(value1)) - && !(validator.isUnit(value2) - || validator.isNumber(value2))) { - return false; - } if (validator.isUnit(value2) || validator.isNumber(value2)) { - return true; - } if (validator.isUnit(value1) || validator.isNumber(value1)) { - return false; - } if (validator.isFunction(value1) - && !validator.isPrefixed(value1) - && validator.isFunction(value2) - && !validator.isPrefixed(value2)) { - return true; - } - - return sameFunctionOrValue(validator, value1, value2); -} - -function zIndex(validator, value1, value2) { - if (!understandable(validator, value1, value2, 0, true) && !validator.isZIndex(value2)) { - return false; - } if (validator.isVariable(value1) && validator.isVariable(value2)) { - return true; - } - - return validator.isZIndex(value2); -} - -module.exports = { - generic: { - color: color, - components: components, - image: image, - propertyName: propertyName, - time: time, - timingFunction: timingFunction, - unit: unit, - unitOrNumber: unitOrNumber - }, - property: { - animationDirection: keywordWithGlobal('animation-direction'), - animationFillMode: keyword('animation-fill-mode'), - animationIterationCount: animationIterationCount, - animationName: animationName, - animationPlayState: keywordWithGlobal('animation-play-state'), - backgroundAttachment: keyword('background-attachment'), - backgroundClip: keywordWithGlobal('background-clip'), - backgroundOrigin: keyword('background-origin'), - backgroundPosition: backgroundPosition, - backgroundRepeat: keyword('background-repeat'), - backgroundSize: backgroundSize, - bottom: unitOrKeywordWithGlobal('bottom'), - borderCollapse: keyword('border-collapse'), - borderStyle: keywordWithGlobal('*-style'), - clear: keywordWithGlobal('clear'), - cursor: keywordWithGlobal('cursor'), - display: keywordWithGlobal('display'), - float: keywordWithGlobal('float'), - left: unitOrKeywordWithGlobal('left'), - fontFamily: fontFamily, - fontStretch: keywordWithGlobal('font-stretch'), - fontStyle: keywordWithGlobal('font-style'), - fontVariant: keywordWithGlobal('font-variant'), - fontWeight: keywordWithGlobal('font-weight'), - listStyleType: keywordWithGlobal('list-style-type'), - listStylePosition: keywordWithGlobal('list-style-position'), - outlineStyle: keywordWithGlobal('*-style'), - overflow: keywordWithGlobal('overflow'), - position: keywordWithGlobal('position'), - right: unitOrKeywordWithGlobal('right'), - textAlign: keywordWithGlobal('text-align'), - textDecoration: keywordWithGlobal('text-decoration'), - textOverflow: keywordWithGlobal('text-overflow'), - textShadow: textShadow, - top: unitOrKeywordWithGlobal('top'), - transform: sameFunctionOrValue, - verticalAlign: unitOrKeywordWithGlobal('vertical-align'), - visibility: keywordWithGlobal('visibility'), - whiteSpace: keywordWithGlobal('white-space'), - zIndex: zIndex - } -}; - - -/***/ }), - -/***/ 6112: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var sameVendorPrefixes = (__webpack_require__(1200).same); - -function understandable(validator, value1, value2, _position, isPaired) { - if (!sameVendorPrefixes(value1, value2)) { - return false; - } - - if (isPaired && validator.isVariable(value1) !== validator.isVariable(value2)) { - return false; - } - - return true; -} - -module.exports = understandable; - - -/***/ }), - -/***/ 4862: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var shallowClone = (__webpack_require__(8315).shallow); - -var Token = __webpack_require__(4633); -var Marker = __webpack_require__(3820); - -function isInheritOnly(values) { - for (var i = 0, l = values.length; i < l; i++) { - var value = values[i][1]; - - if (value != 'inherit' && value != Marker.COMMA && value != Marker.FORWARD_SLASH) { return false; } - } - - return true; -} - -function background(property, configuration, lastInMultiplex) { - var components = property.components; - var restored = []; - var needsOne, needsBoth; - - function restoreValue(component) { - Array.prototype.unshift.apply(restored, component.value); - } - - function isDefaultValue(component) { - var descriptor = configuration[component.name]; - - if (descriptor.doubleValues && descriptor.defaultValue.length == 1) { - return component.value[0][1] == descriptor.defaultValue[0] - && (component.value[1] - ? component.value[1][1] == descriptor.defaultValue[0] - : true); - } if (descriptor.doubleValues && descriptor.defaultValue.length != 1) { - return component.value[0][1] == descriptor.defaultValue[0] - && ((component.value[1] ? component.value[1][1] : component.value[0][1]) - == descriptor.defaultValue[1]); - } - return component.value[0][1] == descriptor.defaultValue; - } - - for (var i = components.length - 1; i >= 0; i--) { - var component = components[i]; - var isDefault = isDefaultValue(component); - - if (component.name == 'background-clip') { - var originComponent = components[i - 1]; - var isOriginDefault = isDefaultValue(originComponent); - - needsOne = component.value[0][1] == originComponent.value[0][1]; - - needsBoth = !needsOne && ( - (isOriginDefault && !isDefault) - || (!isOriginDefault && !isDefault) - || (!isOriginDefault && isDefault && component.value[0][1] != originComponent.value[0][1])); - - if (needsOne) { - restoreValue(originComponent); - } else if (needsBoth) { - restoreValue(component); - restoreValue(originComponent); - } - - i--; - } else if (component.name == 'background-size') { - var positionComponent = components[i - 1]; - var isPositionDefault = isDefaultValue(positionComponent); - - needsOne = !isPositionDefault && isDefault; - - needsBoth = !needsOne - && (isPositionDefault && !isDefault || !isPositionDefault && !isDefault); - - if (needsOne) { - restoreValue(positionComponent); - } else if (needsBoth) { - restoreValue(component); - restored.unshift([Token.PROPERTY_VALUE, Marker.FORWARD_SLASH]); - restoreValue(positionComponent); - } else if (positionComponent.value.length == 1) { - restoreValue(positionComponent); - } - - i--; - } else { - if (isDefault || configuration[component.name].multiplexLastOnly && !lastInMultiplex) { continue; } - - restoreValue(component); - } - } - - if (restored.length === 0 && property.value.length == 1 && property.value[0][1] == '0') { restored.push(property.value[0]); } - - if (restored.length === 0) { restored.push([Token.PROPERTY_VALUE, configuration[property.name].defaultValue]); } - - if (isInheritOnly(restored)) { return [restored[0]]; } - - return restored; -} - -function borderRadius(property) { - if (property.multiplex) { - var horizontal = shallowClone(property); - var vertical = shallowClone(property); - - for (var i = 0; i < 4; i++) { - var component = property.components[i]; - - var horizontalComponent = shallowClone(property); - horizontalComponent.value = [component.value[0]]; - horizontal.components.push(horizontalComponent); - - var verticalComponent = shallowClone(property); - // FIXME: only shorthand compactor (see breakup#borderRadius) knows that border radius - // longhands have two values, whereas tokenizer does not care about populating 2nd value - // if it's missing, hence this fallback - verticalComponent.value = [component.value[1] || component.value[0]]; - vertical.components.push(verticalComponent); - } - - var horizontalValues = fourValues(horizontal); - var verticalValues = fourValues(vertical); - - if (horizontalValues.length == verticalValues.length - && horizontalValues[0][1] == verticalValues[0][1] - && (horizontalValues.length > 1 ? horizontalValues[1][1] == verticalValues[1][1] : true) - && (horizontalValues.length > 2 ? horizontalValues[2][1] == verticalValues[2][1] : true) - && (horizontalValues.length > 3 ? horizontalValues[3][1] == verticalValues[3][1] : true)) { - return horizontalValues; - } - return horizontalValues.concat([[Token.PROPERTY_VALUE, Marker.FORWARD_SLASH]]).concat(verticalValues); - } - return fourValues(property); -} - -function font(property, configuration) { - var components = property.components; - var restored = []; - var component; - var componentIndex = 0; - var fontFamilyIndex = 0; - - if (property.value[0][1].indexOf(Marker.INTERNAL) === 0) { - property.value[0][1] = property.value[0][1].substring(Marker.INTERNAL.length); - return property.value; - } - - // first four components are optional - while (componentIndex < 4) { - component = components[componentIndex]; - - if (component.value[0][1] != configuration[component.name].defaultValue) { - Array.prototype.push.apply(restored, component.value); - } - - componentIndex++; - } - - // then comes font-size - Array.prototype.push.apply(restored, components[componentIndex].value); - componentIndex++; - - // then may come line-height - if (components[componentIndex].value[0][1] != configuration[components[componentIndex].name].defaultValue) { - Array.prototype.push.apply(restored, [[Token.PROPERTY_VALUE, Marker.FORWARD_SLASH]]); - Array.prototype.push.apply(restored, components[componentIndex].value); - } - - componentIndex++; - - // then comes font-family - while (components[componentIndex].value[fontFamilyIndex]) { - restored.push(components[componentIndex].value[fontFamilyIndex]); - - if (components[componentIndex].value[fontFamilyIndex + 1]) { - restored.push([Token.PROPERTY_VALUE, Marker.COMMA]); - } - - fontFamilyIndex++; - } - - if (isInheritOnly(restored)) { - return [restored[0]]; - } - - return restored; -} - -function fourValues(property) { - var components = property.components; - var value1 = components[0].value[0]; - var value2 = components[1].value[0]; - var value3 = components[2].value[0]; - var value4 = components[3].value[0]; - - if (value1[1] == value2[1] && value1[1] == value3[1] && value1[1] == value4[1]) { - return [value1]; - } if (value1[1] == value3[1] && value2[1] == value4[1]) { - return [value1, value2]; - } if (value2[1] == value4[1]) { - return [value1, value2, value3]; - } - return [value1, value2, value3, value4]; -} - -function multiplex(restoreWith) { - return function(property, configuration) { - if (!property.multiplex) { return restoreWith(property, configuration, true); } - - var multiplexSize = 0; - var restored = []; - var componentMultiplexSoFar = {}; - var i, l; - - // At this point we don't know what's the multiplex size, e.g. how many background layers are there - for (i = 0, l = property.components[0].value.length; i < l; i++) { - if (property.components[0].value[i][1] == Marker.COMMA) { multiplexSize++; } - } - - for (i = 0; i <= multiplexSize; i++) { - var _property = shallowClone(property); - - // We split multiplex into parts and restore them one by one - for (var j = 0, m = property.components.length; j < m; j++) { - var componentToClone = property.components[j]; - var _component = shallowClone(componentToClone); - _property.components.push(_component); - - // The trick is some properties has more than one value, so we iterate over values looking for - // a multiplex separator - a comma - for (var k = componentMultiplexSoFar[_component.name] || 0, n = componentToClone.value.length; k < n; k++) { - if (componentToClone.value[k][1] == Marker.COMMA) { - componentMultiplexSoFar[_component.name] = k + 1; - break; - } - - _component.value.push(componentToClone.value[k]); - } - } - - // No we can restore shorthand value - var lastInMultiplex = i == multiplexSize; - var _restored = restoreWith(_property, configuration, lastInMultiplex); - Array.prototype.push.apply(restored, _restored); - - if (i < multiplexSize) { restored.push([Token.PROPERTY_VALUE, Marker.COMMA]); } - } - - return restored; - }; -} - -function withoutDefaults(property, configuration) { - var components = property.components; - var restored = []; - - for (var i = components.length - 1; i >= 0; i--) { - var component = components[i]; - var descriptor = configuration[component.name]; - - if (component.value[0][1] != descriptor.defaultValue || ('keepUnlessDefault' in descriptor) && !isDefault(components, configuration, descriptor.keepUnlessDefault)) { - restored.unshift(component.value[0]); - } - } - - if (restored.length === 0) { restored.push([Token.PROPERTY_VALUE, configuration[property.name].defaultValue]); } - - if (isInheritOnly(restored)) { return [restored[0]]; } - - return restored; -} - -function isDefault(components, configuration, propertyName) { - var component; - var i, l; - - for (i = 0, l = components.length; i < l; i++) { - component = components[i]; - - if (component.name == propertyName && component.value[0][1] == configuration[propertyName].defaultValue) { - return true; - } - } - - return false; -} - -module.exports = { - background: background, - borderRadius: borderRadius, - font: font, - fourValues: fourValues, - multiplex: multiplex, - withoutDefaults: withoutDefaults -}; - - -/***/ }), - -/***/ 2878: -/***/ ((module) => { - -var Hack = { - ASTERISK: 'asterisk', - BANG: 'bang', - BACKSLASH: 'backslash', - UNDERSCORE: 'underscore' -}; - -module.exports = Hack; - - -/***/ }), - -/***/ 5942: -/***/ ((module) => { - -function InvalidPropertyError(message) { - this.name = 'InvalidPropertyError'; - this.message = message; - this.stack = (new Error()).stack; -} - -InvalidPropertyError.prototype = Object.create(Error.prototype); -InvalidPropertyError.prototype.constructor = InvalidPropertyError; - -module.exports = InvalidPropertyError; - - -/***/ }), - -/***/ 5303: -/***/ ((module) => { - -function level0Optimize(tokens) { - // noop as level 0 means no optimizations! - return tokens; -} - -module.exports = level0Optimize; - - -/***/ }), - -/***/ 2991: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var sortSelectors = __webpack_require__(5646); -var tidyRules = __webpack_require__(1568); -var tidyBlock = __webpack_require__(6515); -var tidyAtRule = __webpack_require__(1228); - -var Hack = __webpack_require__(2878); -var removeUnused = __webpack_require__(556); -var restoreFromOptimizing = __webpack_require__(2700); -var wrapForOptimizing = (__webpack_require__(3684).all); - -var configuration = __webpack_require__(6058); -var optimizers = __webpack_require__(5125); - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var Token = __webpack_require__(4633); -var Marker = __webpack_require__(3820); - -var formatPosition = __webpack_require__(6187); - -var serializeRules = (__webpack_require__(3694).rules); - -var CHARSET_TOKEN = '@charset'; -var CHARSET_REGEXP = new RegExp('^' + CHARSET_TOKEN, 'i'); - -var DEFAULT_ROUNDING_PRECISION = (__webpack_require__(1672).DEFAULT); - -var VARIABLE_PROPERTY_NAME_PATTERN = /^--\S+$/; -var PROPERTY_NAME_PATTERN = /^(?:-chrome-|-[\w-]+\w|\w[\w-]+\w|\w{1,})$/; -var IMPORT_PREFIX_PATTERN = /^@import/i; -var URL_PREFIX_PATTERN = /^url\(/i; - -function startsAsUrl(value) { - return URL_PREFIX_PATTERN.test(value); -} - -function isImport(token) { - return IMPORT_PREFIX_PATTERN.test(token[1]); -} - -function isLegacyFilter(property) { - var value; - - if (property.name == 'filter' || property.name == '-ms-filter') { - value = property.value[0][1]; - - return value.indexOf('progid') > -1 - || value.indexOf('alpha') === 0 - || value.indexOf('chroma') === 0; - } - return false; -} - -function noop() {} - -function noopValueOptimizer(_name, value, _options) { return value; } - -function optimizeBody(rule, properties, context) { - var options = context.options; - var valueOptimizers; - var property, name, type, value; - var propertyToken; - var propertyOptimizer; - var serializedRule = serializeRules(rule); - var _properties = wrapForOptimizing(properties); - var pluginValueOptimizers = context.options.plugins.level1Value; - var pluginPropertyOptimizers = context.options.plugins.level1Property; - var isVariable; - var i, l; - - for (i = 0, l = _properties.length; i < l; i++) { - var j, k, m, n; - - property = _properties[i]; - name = property.name; - propertyOptimizer = configuration[name] && configuration[name].propertyOptimizer || noop; - valueOptimizers = configuration[name] && configuration[name].valueOptimizers || [optimizers.whiteSpace]; - isVariable = VARIABLE_PROPERTY_NAME_PATTERN.test(name); - - if (isVariable) { - valueOptimizers = options.variableOptimizers.length > 0 - ? options.variableOptimizers - : [optimizers.whiteSpace]; - } - - if (!isVariable && !PROPERTY_NAME_PATTERN.test(name)) { - propertyToken = property.all[property.position]; - context.warnings.push('Invalid property name \'' + name + '\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.'); - property.unused = true; - continue; - } - - if (property.value.length === 0) { - propertyToken = property.all[property.position]; - context.warnings.push('Empty property \'' + name + '\' at ' + formatPosition(propertyToken[1][2][0]) + '. Ignoring.'); - property.unused = true; - continue; - } - - if (property.hack && ( - (property.hack[0] == Hack.ASTERISK || property.hack[0] == Hack.UNDERSCORE) - && !options.compatibility.properties.iePrefixHack - || property.hack[0] == Hack.BACKSLASH && !options.compatibility.properties.ieSuffixHack - || property.hack[0] == Hack.BANG && !options.compatibility.properties.ieBangHack)) { - property.unused = true; - continue; - } - - if (!options.compatibility.properties.ieFilters && isLegacyFilter(property)) { - property.unused = true; - continue; - } - - if (property.block) { - optimizeBody(rule, property.value[0][1], context); - continue; - } - - for (j = 0, m = property.value.length; j < m; j++) { - type = property.value[j][0]; - value = property.value[j][1]; - - if (type == Token.PROPERTY_BLOCK) { - property.unused = true; - context.warnings.push('Invalid value token at ' + formatPosition(value[0][1][2][0]) + '. Ignoring.'); - break; - } - - if (startsAsUrl(value) && !context.validator.isUrl(value)) { - property.unused = true; - context.warnings.push('Broken URL \'' + value + '\' at ' + formatPosition(property.value[j][2][0]) + '. Ignoring.'); - break; - } - - for (k = 0, n = valueOptimizers.length; k < n; k++) { - value = valueOptimizers[k](name, value, options); - } - - for (k = 0, n = pluginValueOptimizers.length; k < n; k++) { - value = pluginValueOptimizers[k](name, value, options); - } - - property.value[j][1] = value; - } - - propertyOptimizer(serializedRule, property, options); - - for (j = 0, m = pluginPropertyOptimizers.length; j < m; j++) { - pluginPropertyOptimizers[j](serializedRule, property, options); - } - } - - restoreFromOptimizing(_properties); - removeUnused(_properties); - removeComments(properties, options); -} - -function removeComments(tokens, options) { - var token; - var i; - - for (i = 0; i < tokens.length; i++) { - token = tokens[i]; - - if (token[0] != Token.COMMENT) { - continue; - } - - optimizeComment(token, options); - - if (token[1].length === 0) { - tokens.splice(i, 1); - i--; - } - } -} - -function optimizeComment(token, options) { - if (token[1][2] == Marker.EXCLAMATION && (options.level[OptimizationLevel.One].specialComments == 'all' || options.commentsKept < options.level[OptimizationLevel.One].specialComments)) { - options.commentsKept++; - return; - } - - token[1] = []; -} - -function cleanupCharsets(tokens) { - var hasCharset = false; - - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - if (token[0] != Token.AT_RULE) { continue; } - - if (!CHARSET_REGEXP.test(token[1])) { continue; } - - if (hasCharset || token[1].indexOf(CHARSET_TOKEN) == -1) { - tokens.splice(i, 1); - i--; - l--; - } else { - hasCharset = true; - tokens.splice(i, 1); - tokens.unshift([Token.AT_RULE, token[1].replace(CHARSET_REGEXP, CHARSET_TOKEN)]); - } - } -} - -function buildUnitRegexp(options) { - var units = ['px', 'em', 'ex', 'cm', 'mm', 'in', 'pt', 'pc', '%']; - var otherUnits = ['ch', 'rem', 'vh', 'vm', 'vmax', 'vmin', 'vw']; - - otherUnits.forEach(function(unit) { - if (options.compatibility.units[unit]) { - units.push(unit); - } - }); - - return new RegExp('(^|\\s|\\(|,)0(?:' + units.join('|') + ')(\\W|$)', 'g'); -} - -function buildPrecisionOptions(roundingPrecision) { - var precisionOptions = { - matcher: null, - units: {} - }; - var optimizable = []; - var unit; - var value; - - for (unit in roundingPrecision) { - value = roundingPrecision[unit]; - - if (value != DEFAULT_ROUNDING_PRECISION) { - precisionOptions.units[unit] = {}; - precisionOptions.units[unit].value = value; - precisionOptions.units[unit].multiplier = 10 ** value; - - optimizable.push(unit); - } - } - - if (optimizable.length > 0) { - precisionOptions.enabled = true; - precisionOptions.decimalPointMatcher = new RegExp('(\\d)\\.($|' + optimizable.join('|') + ')($|\\W)', 'g'); - precisionOptions.zeroMatcher = new RegExp('(\\d*)(\\.\\d+)(' + optimizable.join('|') + ')', 'g'); - } - - return precisionOptions; -} - -function buildVariableOptimizers(options) { - return options.level[OptimizationLevel.One].variableValueOptimizers.map(function(optimizer) { - if (typeof (optimizer) == 'string') { - return optimizers[optimizer] || noopValueOptimizer; - } - - return optimizer; - }); -} - -function level1Optimize(tokens, context) { - var options = context.options; - var levelOptions = options.level[OptimizationLevel.One]; - var ie7Hack = options.compatibility.selectors.ie7Hack; - var adjacentSpace = options.compatibility.selectors.adjacentSpace; - var spaceAfterClosingBrace = options.compatibility.properties.spaceAfterClosingBrace; - var format = options.format; - var mayHaveCharset = false; - var afterRules = false; - - options.unitsRegexp = options.unitsRegexp || buildUnitRegexp(options); - options.precision = options.precision || buildPrecisionOptions(levelOptions.roundingPrecision); - options.commentsKept = options.commentsKept || 0; - options.variableOptimizers = options.variableOptimizers || buildVariableOptimizers(options); - - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - switch (token[0]) { - case Token.AT_RULE: - token[1] = isImport(token) && afterRules ? '' : token[1]; - token[1] = levelOptions.tidyAtRules ? tidyAtRule(token[1]) : token[1]; - mayHaveCharset = true; - break; - case Token.AT_RULE_BLOCK: - optimizeBody(token[1], token[2], context); - afterRules = true; - break; - case Token.NESTED_BLOCK: - token[1] = levelOptions.tidyBlockScopes ? tidyBlock(token[1], spaceAfterClosingBrace) : token[1]; - level1Optimize(token[2], context); - afterRules = true; - break; - case Token.COMMENT: - optimizeComment(token, options); - break; - case Token.RULE: - token[1] = levelOptions.tidySelectors - ? tidyRules(token[1], !ie7Hack, adjacentSpace, format, context.warnings) - : token[1]; - token[1] = token[1].length > 1 ? sortSelectors(token[1], levelOptions.selectorsSortingMethod) : token[1]; - optimizeBody(token[1], token[2], context); - afterRules = true; - break; - } - - if (token[0] == Token.COMMENT - && token[1].length === 0 - || levelOptions.removeEmpty - && (token[1].length === 0 || (token[2] && token[2].length === 0))) { - tokens.splice(i, 1); - i--; - l--; - } - } - - if (levelOptions.cleanupCharsets && mayHaveCharset) { - cleanupCharsets(tokens); - } - - return tokens; -} - -module.exports = level1Optimize; - - -/***/ }), - -/***/ 2388: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = { - background: (__webpack_require__(7792).level1.property), - boxShadow: (__webpack_require__(7044).level1.property), - borderRadius: (__webpack_require__(1566).level1.property), - filter: (__webpack_require__(3577).level1.property), - fontWeight: (__webpack_require__(2929).level1.property), - margin: (__webpack_require__(7926).level1.property), - outline: (__webpack_require__(9664).level1.property), - padding: (__webpack_require__(4575).level1.property) -}; - - -/***/ }), - -/***/ 7792: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var plugin = { - level1: { - property: function background(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel.One].optimizeBackground) { - return; - } - - if (values.length == 1 && values[0][1] == 'none') { - values[0][1] = '0 0'; - } - - if (values.length == 1 && values[0][1] == 'transparent') { - values[0][1] = '0 0'; - } - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 1566: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var plugin = { - level1: { - property: function borderRadius(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel.One].optimizeBorderRadius) { - return; - } - - if (values.length == 3 && values[1][1] == '/' && values[0][1] == values[2][1]) { - property.value.splice(1); - property.dirty = true; - } else if (values.length == 5 && values[2][1] == '/' && values[0][1] == values[3][1] && values[1][1] == values[4][1]) { - property.value.splice(2); - property.dirty = true; - } else if (values.length == 7 && values[3][1] == '/' && values[0][1] == values[4][1] && values[1][1] == values[5][1] && values[2][1] == values[6][1]) { - property.value.splice(3); - property.dirty = true; - } else if (values.length == 9 && values[4][1] == '/' && values[0][1] == values[5][1] && values[1][1] == values[6][1] && values[2][1] == values[7][1] && values[3][1] == values[8][1]) { - property.value.splice(4); - property.dirty = true; - } - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 7044: -/***/ ((module) => { - -var plugin = { - level1: { - property: function boxShadow(_rule, property) { - var values = property.value; - - // remove multiple zeros - if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') { - property.value.splice(2); - property.dirty = true; - } - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 3577: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var ALPHA_OR_CHROMA_FILTER_PATTERN = /progid:DXImageTransform\.Microsoft\.(Alpha|Chroma)(\W)/; -var NO_SPACE_AFTER_COMMA_PATTERN = /,(\S)/g; -var WHITESPACE_AROUND_EQUALS_PATTERN = / ?= ?/g; - -var plugin = { - level1: { - property: function filter(_rule, property, options) { - if (!options.compatibility.properties.ieFilters) { - return; - } - - if (!options.level[OptimizationLevel.One].optimizeFilter) { - return; - } - - if (property.value.length == 1) { - property.value[0][1] = property.value[0][1].replace( - ALPHA_OR_CHROMA_FILTER_PATTERN, - function(match, filter, suffix) { - return filter.toLowerCase() + suffix; - } - ); - } - - property.value[0][1] = property.value[0][1] - .replace(NO_SPACE_AFTER_COMMA_PATTERN, ', $1') - .replace(WHITESPACE_AROUND_EQUALS_PATTERN, '='); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 2929: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var plugin = { - level1: { - property: function fontWeight(_rule, property, options) { - var value = property.value[0][1]; - - if (!options.level[OptimizationLevel.One].optimizeFontWeight) { - return; - } - - if (value == 'normal') { - value = '400'; - } else if (value == 'bold') { - value = '700'; - } - - property.value[0][1] = value; - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 7926: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var plugin = { - level1: { - property: function margin(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel.One].replaceMultipleZeros) { - return; - } - - // remove multiple zeros - if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') { - property.value.splice(1); - property.dirty = true; - } - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 9664: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var plugin = { - level1: { - property: function outline(_rule, property, options) { - var values = property.value; - - if (!options.level[OptimizationLevel.One].optimizeOutline) { - return; - } - - if (values.length == 1 && values[0][1] == 'none') { - values[0][1] = '0'; - } - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 4575: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -function isNegative(value) { - return value && value[1][0] == '-' && parseFloat(value[1]) < 0; -} - -var plugin = { - level1: { - property: function padding(_rule, property, options) { - var values = property.value; - - // remove multiple zeros - if (values.length == 4 && values[0][1] === '0' && values[1][1] === '0' && values[2][1] === '0' && values[3][1] === '0') { - property.value.splice(1); - property.dirty = true; - } - - // remove negative paddings - if (options.level[OptimizationLevel.One].removeNegativePaddings - && ( - isNegative(property.value[0]) - || isNegative(property.value[1]) - || isNegative(property.value[2]) - || isNegative(property.value[3]) - )) { - property.unused = true; - } - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 5646: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var naturalCompare = __webpack_require__(3814); - -function naturalSorter(scope1, scope2) { - return naturalCompare(scope1[1], scope2[1]); -} - -function standardSorter(scope1, scope2) { - return scope1[1] > scope2[1] ? 1 : -1; -} - -function sortSelectors(selectors, method) { - switch (method) { - case 'natural': - return selectors.sort(naturalSorter); - case 'standard': - return selectors.sort(standardSorter); - case 'none': - case false: - return selectors; - } -} - -module.exports = sortSelectors; - - -/***/ }), - -/***/ 1228: -/***/ ((module) => { - -function tidyAtRule(value) { - return value - .replace(/\s+/g, ' ') - .replace(/url\(\s+/g, 'url(') - .replace(/\s+\)/g, ')') - .trim(); -} - -module.exports = tidyAtRule; - - -/***/ }), - -/***/ 6515: -/***/ ((module) => { - -var SUPPORTED_COMPACT_BLOCK_MATCHER = /^@media\W/; -var SUPPORTED_QUOTE_REMOVAL_MATCHER = /^@(?:keyframes|-moz-keyframes|-o-keyframes|-webkit-keyframes)\W/; - -function tidyBlock(values, spaceAfterClosingBrace) { - var withoutSpaceAfterClosingBrace; - var withoutQuotes; - var i; - - for (i = values.length - 1; i >= 0; i--) { - withoutSpaceAfterClosingBrace = !spaceAfterClosingBrace && SUPPORTED_COMPACT_BLOCK_MATCHER.test(values[i][1]); - withoutQuotes = SUPPORTED_QUOTE_REMOVAL_MATCHER.test(values[i][1]); - - values[i][1] = values[i][1] - .replace(/\n|\r\n/g, ' ') - .replace(/\s+/g, ' ') - .replace(/(,|:|\() /g, '$1') - .replace(/ \)/g, ')'); - - if (withoutQuotes) { - values[i][1] = values[i][1] - .replace(/'([a-zA-Z][a-zA-Z\d\-_]+)'/, '$1') - .replace(/"([a-zA-Z][a-zA-Z\d\-_]+)"/, '$1'); - } - - if (withoutSpaceAfterClosingBrace) { - values[i][1] = values[i][1] - .replace(/\) /g, ')'); - } - } - - return values; -} - -module.exports = tidyBlock; - - -/***/ }), - -/***/ 1568: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Spaces = (__webpack_require__(4687).Spaces); -var Marker = __webpack_require__(3820); -var formatPosition = __webpack_require__(6187); - -var CASE_ATTRIBUTE_PATTERN = /[\s"'][iI]\s*\]/; -var CASE_RESTORE_PATTERN = /([\d\w])([iI])\]/g; -var DOUBLE_QUOTE_CASE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"([iI])/g; -var DOUBLE_QUOTE_PATTERN = /="([a-zA-Z][a-zA-Z\d\-_]+)"(\s|\])/g; -var HTML_COMMENT_PATTERN = /^(?:(?:)\s*)+/; -var SINGLE_QUOTE_CASE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'([iI])/g; -var SINGLE_QUOTE_PATTERN = /='([a-zA-Z][a-zA-Z\d\-_]+)'(\s|\])/g; -var RELATION_PATTERN = /[>+~]/; -var WHITESPACE_PATTERN = /\s/; - -var ASTERISK_PLUS_HTML_HACK = '*+html '; -var ASTERISK_FIRST_CHILD_PLUS_HTML_HACK = '*:first-child+html '; -var LESS_THAN = '<'; - -var PSEUDO_CLASSES_WITH_SELECTORS = [ - ':current', - ':future', - ':has', - ':host', - ':host-context', - ':is', - ':not', - ':past', - ':where' -]; - -function hasInvalidCharacters(value) { - var isEscaped; - var isInvalid = false; - var character; - var isQuote = false; - var i, l; - - for (i = 0, l = value.length; i < l; i++) { - character = value[i]; - - if (isEscaped) { - // continue as always - } else if (character == Marker.SINGLE_QUOTE || character == Marker.DOUBLE_QUOTE) { - isQuote = !isQuote; - } else if (!isQuote - && (character == Marker.CLOSE_CURLY_BRACKET - || character == Marker.EXCLAMATION - || character == LESS_THAN - || character == Marker.SEMICOLON) - ) { - isInvalid = true; - break; - } else if (!isQuote && i === 0 && RELATION_PATTERN.test(character)) { - isInvalid = true; - break; - } - - isEscaped = character == Marker.BACK_SLASH; - } - - return isInvalid; -} - -function removeWhitespace(value, format) { - var stripped = []; - var character; - var isNewLineNix; - var isNewLineWin; - var isEscaped; - var wasEscaped; - var isQuoted; - var isSingleQuoted; - var isDoubleQuoted; - var isAttribute; - var isRelation; - var isWhitespace; - var isSpaceAwarePseudoClass; - var roundBracketLevel = 0; - var wasComma = false; - var wasRelation = false; - var wasWhitespace = false; - var withCaseAttribute = CASE_ATTRIBUTE_PATTERN.test(value); - var spaceAroundRelation = format && format.spaces[Spaces.AroundSelectorRelation]; - var i, l; - - for (i = 0, l = value.length; i < l; i++) { - character = value[i]; - - isNewLineNix = character == Marker.NEW_LINE_NIX; - isNewLineWin = character == Marker.NEW_LINE_NIX && value[i - 1] == Marker.CARRIAGE_RETURN; - isQuoted = isSingleQuoted || isDoubleQuoted; - isRelation = !isAttribute && !isEscaped && roundBracketLevel === 0 && RELATION_PATTERN.test(character); - isWhitespace = WHITESPACE_PATTERN.test(character); - isSpaceAwarePseudoClass = roundBracketLevel == 1 && character == Marker.CLOSE_ROUND_BRACKET - ? false - : isSpaceAwarePseudoClass - || (roundBracketLevel === 0 && character == Marker.COLON && isPseudoClassWithSelectors(value, i)); - - if (wasEscaped && isQuoted && isNewLineWin) { - // swallow escaped new windows lines in comments - stripped.pop(); - stripped.pop(); - } else if (isEscaped && isQuoted && isNewLineNix) { - // swallow escaped new *nix lines in comments - stripped.pop(); - } else if (isEscaped) { - stripped.push(character); - } else if (character == Marker.OPEN_SQUARE_BRACKET && !isQuoted) { - stripped.push(character); - isAttribute = true; - } else if (character == Marker.CLOSE_SQUARE_BRACKET && !isQuoted) { - stripped.push(character); - isAttribute = false; - } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted) { - stripped.push(character); - roundBracketLevel++; - } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted) { - stripped.push(character); - roundBracketLevel--; - } else if (character == Marker.SINGLE_QUOTE && !isQuoted) { - stripped.push(character); - isSingleQuoted = true; - } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) { - stripped.push(character); - isDoubleQuoted = true; - } else if (character == Marker.SINGLE_QUOTE && isQuoted) { - stripped.push(character); - isSingleQuoted = false; - } else if (character == Marker.DOUBLE_QUOTE && isQuoted) { - stripped.push(character); - isDoubleQuoted = false; - } else if (isWhitespace && wasRelation && !spaceAroundRelation) { - continue; - } else if (!isWhitespace && wasRelation && spaceAroundRelation) { - stripped.push(Marker.SPACE); - stripped.push(character); - } else if (isWhitespace && !wasWhitespace && wasComma && roundBracketLevel > 0 && isSpaceAwarePseudoClass) { - // skip space - } else if (isWhitespace && !wasWhitespace && roundBracketLevel > 0 && isSpaceAwarePseudoClass) { - stripped.push(character); - } else if (isWhitespace && (isAttribute || roundBracketLevel > 0) && !isQuoted) { - // skip space - } else if (isWhitespace && wasWhitespace && !isQuoted) { - // skip extra space - } else if ((isNewLineWin || isNewLineNix) && (isAttribute || roundBracketLevel > 0) && isQuoted) { - // skip newline - } else if (isRelation && wasWhitespace && !spaceAroundRelation) { - stripped.pop(); - stripped.push(character); - } else if (isRelation && !wasWhitespace && spaceAroundRelation) { - stripped.push(Marker.SPACE); - stripped.push(character); - } else if (isWhitespace) { - stripped.push(Marker.SPACE); - } else { - stripped.push(character); - } - - wasEscaped = isEscaped; - isEscaped = character == Marker.BACK_SLASH; - wasRelation = isRelation; - wasWhitespace = isWhitespace; - wasComma = character == Marker.COMMA; - } - - return withCaseAttribute - ? stripped.join('').replace(CASE_RESTORE_PATTERN, '$1 $2]') - : stripped.join(''); -} - -function isPseudoClassWithSelectors(value, colonPosition) { - var pseudoClass = value.substring(colonPosition, value.indexOf(Marker.OPEN_ROUND_BRACKET, colonPosition)); - - return PSEUDO_CLASSES_WITH_SELECTORS.indexOf(pseudoClass) > -1; -} - -function removeQuotes(value) { - if (value.indexOf('\'') == -1 && value.indexOf('"') == -1) { - return value; - } - - return value - .replace(SINGLE_QUOTE_CASE_PATTERN, '=$1 $2') - .replace(SINGLE_QUOTE_PATTERN, '=$1$2') - .replace(DOUBLE_QUOTE_CASE_PATTERN, '=$1 $2') - .replace(DOUBLE_QUOTE_PATTERN, '=$1$2'); -} - -function replacePseudoClasses(value) { - return value - .replace('nth-child(1)', 'first-child') - .replace('nth-of-type(1)', 'first-of-type') - .replace('nth-of-type(even)', 'nth-of-type(2n)') - .replace('nth-child(even)', 'nth-child(2n)') - .replace('nth-of-type(2n+1)', 'nth-of-type(odd)') - .replace('nth-child(2n+1)', 'nth-child(odd)') - .replace('nth-last-child(1)', 'last-child') - .replace('nth-last-of-type(1)', 'last-of-type') - .replace('nth-last-of-type(even)', 'nth-last-of-type(2n)') - .replace('nth-last-child(even)', 'nth-last-child(2n)') - .replace('nth-last-of-type(2n+1)', 'nth-last-of-type(odd)') - .replace('nth-last-child(2n+1)', 'nth-last-child(odd)'); -} - -function tidyRules(rules, removeUnsupported, adjacentSpace, format, warnings) { - var list = []; - var repeated = []; - - function removeHTMLComment(rule, match) { - warnings.push('HTML comment \'' + match + '\' at ' + formatPosition(rule[2][0]) + '. Removing.'); - return ''; - } - - for (var i = 0, l = rules.length; i < l; i++) { - var rule = rules[i]; - var reduced = rule[1]; - - reduced = reduced.replace(HTML_COMMENT_PATTERN, removeHTMLComment.bind(null, rule)); - - if (hasInvalidCharacters(reduced)) { - warnings.push('Invalid selector \'' + rule[1] + '\' at ' + formatPosition(rule[2][0]) + '. Ignoring.'); - continue; - } - - reduced = removeWhitespace(reduced, format); - reduced = removeQuotes(reduced); - - if (adjacentSpace && reduced.indexOf('nav') > 0) { - reduced = reduced.replace(/\+nav(\S|$)/, '+ nav$1'); - } - - if (removeUnsupported && reduced.indexOf(ASTERISK_PLUS_HTML_HACK) > -1) { - continue; - } - - if (removeUnsupported && reduced.indexOf(ASTERISK_FIRST_CHILD_PLUS_HTML_HACK) > -1) { - continue; - } - - if (reduced.indexOf('*') > -1) { - reduced = reduced - .replace(/\*([:#.[])/g, '$1') - .replace(/^(:first-child)?\+html/, '*$1+html'); - } - - if (repeated.indexOf(reduced) > -1) { - continue; - } - - reduced = replacePseudoClasses(reduced); - - rule[1] = reduced; - repeated.push(reduced); - list.push(rule); - } - - if (list.length == 1 && list[0][1].length === 0) { - warnings.push('Empty selector \'' + list[0][1] + '\' at ' + formatPosition(list[0][2][0]) + '. Ignoring.'); - list = []; - } - - return list; -} - -module.exports = tidyRules; - - -/***/ }), - -/***/ 5125: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = { - color: (__webpack_require__(2158).level1.value), - degrees: (__webpack_require__(2453).level1.value), - fraction: (__webpack_require__(6603).level1.value), - precision: (__webpack_require__(4864).level1.value), - textQuotes: (__webpack_require__(5000).level1.value), - time: (__webpack_require__(439).level1.value), - unit: (__webpack_require__(7457).level1.value), - urlPrefix: (__webpack_require__(9529).level1.value), - urlQuotes: (__webpack_require__(2273).level1.value), - urlWhiteSpace: (__webpack_require__(3798).level1.value), - whiteSpace: (__webpack_require__(3935).level1.value), - zero: (__webpack_require__(6030).level1.value) -}; - - -/***/ }), - -/***/ 2158: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var shortenHex = __webpack_require__(1586); -var shortenHsl = __webpack_require__(5030); -var shortenRgb = __webpack_require__(9991); - -var split = __webpack_require__(6439); - -var ANY_COLOR_FUNCTION_PATTERN = /(rgb|rgba|hsl|hsla)\(([^()]+)\)/gi; -var COLOR_PREFIX_PATTERN = /#|rgb|hsl/gi; -var HEX_LONG_PATTERN = /(^|[^='"])#([0-9a-f]{6})/gi; -var HEX_SHORT_PATTERN = /(^|[^='"])#([0-9a-f]{3})/gi; -var HEX_VALUE_PATTERN = /[0-9a-f]/i; -var HSL_PATTERN = /hsl\((-?\d+),(-?\d+)%?,(-?\d+)%?\)/gi; -var RGBA_HSLA_PATTERN = /(rgb|hsl)a?\((-?\d+),(-?\d+%?),(-?\d+%?),(0*[1-9]+[0-9]*(\.?\d*)?)\)/gi; -var RGB_PATTERN = /rgb\((-?\d+),(-?\d+),(-?\d+)\)/gi; -var TRANSPARENT_FUNCTION_PATTERN = /(?:rgba|hsla)\(0,0%?,0%?,0\)/g; - -var plugin = { - level1: { - value: function color(name, value, options) { - if (!options.compatibility.properties.colors) { - return value; - } - - if (!value.match(COLOR_PREFIX_PATTERN)) { - return shortenHex(value); - } - - value = value - .replace(RGBA_HSLA_PATTERN, function(match, colorFn, p1, p2, p3, alpha) { - return (parseInt(alpha) >= 1 ? colorFn + '(' + [p1, p2, p3].join(',') + ')' : match); - }) - .replace(RGB_PATTERN, function(match, red, green, blue) { - return shortenRgb(red, green, blue); - }) - .replace(HSL_PATTERN, function(match, hue, saturation, lightness) { - return shortenHsl(hue, saturation, lightness); - }) - .replace(HEX_LONG_PATTERN, function(match, prefix, color, at, inputValue) { - var suffix = inputValue[at + match.length]; - - if (suffix && HEX_VALUE_PATTERN.test(suffix)) { - return match; - } if (color[0] == color[1] && color[2] == color[3] && color[4] == color[5]) { - return (prefix + '#' + color[0] + color[2] + color[4]).toLowerCase(); - } - return (prefix + '#' + color).toLowerCase(); - }) - .replace(HEX_SHORT_PATTERN, function(match, prefix, color) { - return prefix + '#' + color.toLowerCase(); - }) - .replace(ANY_COLOR_FUNCTION_PATTERN, function(match, colorFunction, colorDef) { - var tokens = colorDef.split(','); - var colorFnLowercase = colorFunction && colorFunction.toLowerCase(); - var applies = (colorFnLowercase == 'hsl' && tokens.length == 3) - || (colorFnLowercase == 'hsla' && tokens.length == 4) - || (colorFnLowercase == 'rgb' && tokens.length === 3 && colorDef.indexOf('%') > 0) - || (colorFnLowercase == 'rgba' && tokens.length == 4 && tokens[0].indexOf('%') > 0); - - if (!applies) { - return match; - } - - if (tokens[1].indexOf('%') == -1) { - tokens[1] += '%'; - } - - if (tokens[2].indexOf('%') == -1) { - tokens[2] += '%'; - } - - return colorFunction + '(' + tokens.join(',') + ')'; - }); - - if (options.compatibility.colors.opacity && name.indexOf('background') == -1) { - value = value.replace(TRANSPARENT_FUNCTION_PATTERN, function(match) { - if (split(value, ',').pop().indexOf('gradient(') > -1) { - return match; - } - - return 'transparent'; - }); - } - - return shortenHex(value); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 1586: -/***/ ((module) => { - -var COLORS = { - aliceblue: '#f0f8ff', - antiquewhite: '#faebd7', - aqua: '#0ff', - aquamarine: '#7fffd4', - azure: '#f0ffff', - beige: '#f5f5dc', - bisque: '#ffe4c4', - black: '#000', - blanchedalmond: '#ffebcd', - blue: '#00f', - blueviolet: '#8a2be2', - brown: '#a52a2a', - burlywood: '#deb887', - cadetblue: '#5f9ea0', - chartreuse: '#7fff00', - chocolate: '#d2691e', - coral: '#ff7f50', - cornflowerblue: '#6495ed', - cornsilk: '#fff8dc', - crimson: '#dc143c', - cyan: '#0ff', - darkblue: '#00008b', - darkcyan: '#008b8b', - darkgoldenrod: '#b8860b', - darkgray: '#a9a9a9', - darkgreen: '#006400', - darkgrey: '#a9a9a9', - darkkhaki: '#bdb76b', - darkmagenta: '#8b008b', - darkolivegreen: '#556b2f', - darkorange: '#ff8c00', - darkorchid: '#9932cc', - darkred: '#8b0000', - darksalmon: '#e9967a', - darkseagreen: '#8fbc8f', - darkslateblue: '#483d8b', - darkslategray: '#2f4f4f', - darkslategrey: '#2f4f4f', - darkturquoise: '#00ced1', - darkviolet: '#9400d3', - deeppink: '#ff1493', - deepskyblue: '#00bfff', - dimgray: '#696969', - dimgrey: '#696969', - dodgerblue: '#1e90ff', - firebrick: '#b22222', - floralwhite: '#fffaf0', - forestgreen: '#228b22', - fuchsia: '#f0f', - gainsboro: '#dcdcdc', - ghostwhite: '#f8f8ff', - gold: '#ffd700', - goldenrod: '#daa520', - gray: '#808080', - green: '#008000', - greenyellow: '#adff2f', - grey: '#808080', - honeydew: '#f0fff0', - hotpink: '#ff69b4', - indianred: '#cd5c5c', - indigo: '#4b0082', - ivory: '#fffff0', - khaki: '#f0e68c', - lavender: '#e6e6fa', - lavenderblush: '#fff0f5', - lawngreen: '#7cfc00', - lemonchiffon: '#fffacd', - lightblue: '#add8e6', - lightcoral: '#f08080', - lightcyan: '#e0ffff', - lightgoldenrodyellow: '#fafad2', - lightgray: '#d3d3d3', - lightgreen: '#90ee90', - lightgrey: '#d3d3d3', - lightpink: '#ffb6c1', - lightsalmon: '#ffa07a', - lightseagreen: '#20b2aa', - lightskyblue: '#87cefa', - lightslategray: '#778899', - lightslategrey: '#778899', - lightsteelblue: '#b0c4de', - lightyellow: '#ffffe0', - lime: '#0f0', - limegreen: '#32cd32', - linen: '#faf0e6', - magenta: '#ff00ff', - maroon: '#800000', - mediumaquamarine: '#66cdaa', - mediumblue: '#0000cd', - mediumorchid: '#ba55d3', - mediumpurple: '#9370db', - mediumseagreen: '#3cb371', - mediumslateblue: '#7b68ee', - mediumspringgreen: '#00fa9a', - mediumturquoise: '#48d1cc', - mediumvioletred: '#c71585', - midnightblue: '#191970', - mintcream: '#f5fffa', - mistyrose: '#ffe4e1', - moccasin: '#ffe4b5', - navajowhite: '#ffdead', - navy: '#000080', - oldlace: '#fdf5e6', - olive: '#808000', - olivedrab: '#6b8e23', - orange: '#ffa500', - orangered: '#ff4500', - orchid: '#da70d6', - palegoldenrod: '#eee8aa', - palegreen: '#98fb98', - paleturquoise: '#afeeee', - palevioletred: '#db7093', - papayawhip: '#ffefd5', - peachpuff: '#ffdab9', - peru: '#cd853f', - pink: '#ffc0cb', - plum: '#dda0dd', - powderblue: '#b0e0e6', - purple: '#800080', - rebeccapurple: '#663399', - red: '#f00', - rosybrown: '#bc8f8f', - royalblue: '#4169e1', - saddlebrown: '#8b4513', - salmon: '#fa8072', - sandybrown: '#f4a460', - seagreen: '#2e8b57', - seashell: '#fff5ee', - sienna: '#a0522d', - silver: '#c0c0c0', - skyblue: '#87ceeb', - slateblue: '#6a5acd', - slategray: '#708090', - slategrey: '#708090', - snow: '#fffafa', - springgreen: '#00ff7f', - steelblue: '#4682b4', - tan: '#d2b48c', - teal: '#008080', - thistle: '#d8bfd8', - tomato: '#ff6347', - turquoise: '#40e0d0', - violet: '#ee82ee', - wheat: '#f5deb3', - white: '#fff', - whitesmoke: '#f5f5f5', - yellow: '#ff0', - yellowgreen: '#9acd32' -}; - -var toHex = {}; -var toName = {}; - -for (var name in COLORS) { - var hex = COLORS[name]; - - if (name.length < hex.length) { - toName[hex] = name; - } else { - toHex[name] = hex; - } -} - -var toHexPattern = new RegExp('(^| |,|\\))(' + Object.keys(toHex).join('|') + ')( |,|\\)|$)', 'ig'); -var toNamePattern = new RegExp('(' + Object.keys(toName).join('|') + ')([^a-f0-9]|$)', 'ig'); - -function hexConverter(match, prefix, colorValue, suffix) { - return prefix + toHex[colorValue.toLowerCase()] + suffix; -} - -function nameConverter(match, colorValue, suffix) { - return toName[colorValue.toLowerCase()] + suffix; -} - -function shortenHex(value) { - var hasHex = value.indexOf('#') > -1; - var shortened = value.replace(toHexPattern, hexConverter); - - if (shortened != value) { - shortened = shortened.replace(toHexPattern, hexConverter); - } - - return hasHex - ? shortened.replace(toNamePattern, nameConverter) - : shortened; -} - -module.exports = shortenHex; - - -/***/ }), - -/***/ 5030: -/***/ ((module) => { - -// HSL to RGB converter. Both methods adapted from: -// http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - -function hslToRgb(h, s, l) { - var r, g, b; - - // normalize hue orientation b/w 0 and 360 degrees - h %= 360; - if (h < 0) { h += 360; } - h = ~~h / 360; - - if (s < 0) { s = 0; } else if (s > 100) { s = 100; } - s = ~~s / 100; - - if (l < 0) { l = 0; } else if (l > 100) { l = 100; } - l = ~~l / 100; - - if (s === 0) { - r = g = b = l; // achromatic - } else { - var q = l < 0.5 - ? l * (1 + s) - : l + s - l * s; - var p = 2 * l - q; - r = hueToRgb(p, q, h + 1 / 3); - g = hueToRgb(p, q, h); - b = hueToRgb(p, q, h - 1 / 3); - } - - return [~~(r * 255), ~~(g * 255), ~~(b * 255)]; -} - -function hueToRgb(p, q, t) { - if (t < 0) { t += 1; } - if (t > 1) { t -= 1; } - if (t < 1 / 6) { return p + (q - p) * 6 * t; } - if (t < 1 / 2) { return q; } - if (t < 2 / 3) { return p + (q - p) * (2 / 3 - t) * 6; } - return p; -} - -function shortenHsl(hue, saturation, lightness) { - var asRgb = hslToRgb(hue, saturation, lightness); - var redAsHex = asRgb[0].toString(16); - var greenAsHex = asRgb[1].toString(16); - var blueAsHex = asRgb[2].toString(16); - - return '#' - + ((redAsHex.length == 1 ? '0' : '') + redAsHex) - + ((greenAsHex.length == 1 ? '0' : '') + greenAsHex) - + ((blueAsHex.length == 1 ? '0' : '') + blueAsHex); -} - -module.exports = shortenHsl; - - -/***/ }), - -/***/ 9991: -/***/ ((module) => { - -function shortenRgb(red, green, blue) { - var normalizedRed = Math.max(0, Math.min(parseInt(red), 255)); - var normalizedGreen = Math.max(0, Math.min(parseInt(green), 255)); - var normalizedBlue = Math.max(0, Math.min(parseInt(blue), 255)); - - // Credit: Asen http://jsbin.com/UPUmaGOc/2/edit?js,console - return '#' + ('00000' + (normalizedRed << 16 | normalizedGreen << 8 | normalizedBlue).toString(16)).slice(-6); -} - -module.exports = shortenRgb; - - -/***/ }), - -/***/ 2453: -/***/ ((module) => { - -var ZERO_DEG_PATTERN = /\(0deg\)/g; - -var plugin = { - level1: { - value: function degrees(_name, value, options) { - if (!options.compatibility.properties.zeroUnits) { - return value; - } - - if (value.indexOf('0deg') == -1) { - return value; - } - - return value.replace(ZERO_DEG_PATTERN, '(0)'); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 6603: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var split = __webpack_require__(6439); -var startsAsUrl = __webpack_require__(1781); - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var EXPRESSION_PATTERN = /^expression\(.*\)$/; -var ANY_FUNCTION_PATTERN = /^(-(?:moz|ms|o|webkit)-[a-z-]+|[a-z-]+)\((.+)\)$/; -var TOKEN_SEPARATOR_PATTERN = /([\s,/])/; - -var DOT_ZERO_PATTERN = /(^|\D)\.0+(\D|$)/g; -var FRACTION_PATTERN = /\.([1-9]*)0+(\D|$)/g; -var LEADING_ZERO_FRACTION_PATTERN = /(^|\D)0\.(\d)/g; -var MINUS_ZERO_FRACTION_PATTERN = /([^\w\d-]|^)-0([^.]|$)/g; -var ZERO_PREFIXED_UNIT_PATTERN = /(^|\s)0+([1-9])/g; - -function optimizeRecursively(value) { - var functionTokens; - var tokens; - - if (startsAsUrl(value)) { - return value; - } - - if (EXPRESSION_PATTERN.test(value)) { - return value; - } - - functionTokens = ANY_FUNCTION_PATTERN.exec(value); - - if (!functionTokens) { - return optimizeFractions(value); - } - - tokens = split(functionTokens[2], TOKEN_SEPARATOR_PATTERN) - .map(function(token) { return optimizeRecursively(token); }); - - return functionTokens[1] + '(' + tokens.join('') + ')'; -} - -function optimizeFractions(value) { - if (value.indexOf('0') == -1) { - return value; - } - - if (value.indexOf('-') > -1) { - value = value - .replace(MINUS_ZERO_FRACTION_PATTERN, '$10$2') - .replace(MINUS_ZERO_FRACTION_PATTERN, '$10$2'); - } - - return value - .replace(ZERO_PREFIXED_UNIT_PATTERN, '$1$2') - .replace(DOT_ZERO_PATTERN, '$10$2') - .replace(FRACTION_PATTERN, function(match, nonZeroPart, suffix) { - return (nonZeroPart.length > 0 ? '.' : '') + nonZeroPart + suffix; - }) - .replace(LEADING_ZERO_FRACTION_PATTERN, '$1.$2'); -} - -var plugin = { - level1: { - value: function fraction(name, value, options) { - if (!options.level[OptimizationLevel.One].replaceZeroUnits) { - return value; - } - - return optimizeRecursively(value); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 4864: -/***/ ((module) => { - -var plugin = { - level1: { - value: function precision(_name, value, options) { - if (!options.precision.enabled || value.indexOf('.') === -1) { - return value; - } - - return value - .replace(options.precision.decimalPointMatcher, '$1$2$3') - .replace(options.precision.zeroMatcher, function(match, integerPart, fractionPart, unit) { - var multiplier = options.precision.units[unit].multiplier; - var parsedInteger = parseInt(integerPart); - var integer = Number.isNaN(parsedInteger) ? 0 : parsedInteger; - var fraction = parseFloat(fractionPart); - - return Math.round((integer + fraction) * multiplier) / multiplier + unit; - }); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 1781: -/***/ ((module) => { - -var URL_PREFIX_PATTERN = /^url\(/i; - -function startsAsUrl(value) { - return URL_PREFIX_PATTERN.test(value); -} - -module.exports = startsAsUrl; - - -/***/ }), - -/***/ 5000: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var LOCAL_PREFIX_PATTERN = /^local\(/i; -var QUOTED_PATTERN = /^('.*'|".*")$/; -var QUOTED_BUT_SAFE_PATTERN = /^['"][a-zA-Z][a-zA-Z\d\-_]+['"]$/; -// eslint-disable-next-line max-len -var GENERIC_FONT_FAMILY_PATTERN = /^['"](?:cursive|default|emoji|fangsong|fantasy|inherit|initial|math|monospace|revert|revert-layer|sans-serif|serif|system-ui|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|unset)['"]$/; - -var plugin = { - level1: { - value: function textQuotes(name, value, options) { - if ((name == 'font-family' || name == 'font') && GENERIC_FONT_FAMILY_PATTERN.test(value)) { - return value; - } - - if (!options.level[OptimizationLevel.One].removeQuotes) { - return value; - } - - if (!QUOTED_PATTERN.test(value) && !LOCAL_PREFIX_PATTERN.test(value)) { - return value; - } - - return QUOTED_BUT_SAFE_PATTERN.test(value) - ? value.substring(1, value.length - 1) - : value; - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 439: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var TIME_VALUE = /^(-?[\d.]+)(m?s)$/; - -var plugin = { - level1: { - value: function time(name, value, options) { - if (!options.level[OptimizationLevel.One].replaceTimeUnits) { - return value; - } - - if (!TIME_VALUE.test(value)) { - return value; - } - - return value.replace(TIME_VALUE, function(match, val, unit) { - var newValue; - - if (unit == 'ms') { - newValue = parseInt(val) / 1000 + 's'; - } else if (unit == 's') { - newValue = parseFloat(val) * 1000 + 'ms'; - } - - return newValue.length < match.length ? newValue : match; - }); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 7457: -/***/ ((module) => { - -var WHOLE_PIXEL_VALUE = /(?:^|\s|\()(-?\d+)px/; - -var plugin = { - level1: { - value: function unit(_name, value, options) { - if (!WHOLE_PIXEL_VALUE.test(value)) { - return value; - } - - return value.replace(WHOLE_PIXEL_VALUE, function(match, val) { - var newValue; - var intVal = parseInt(val); - - if (intVal === 0) { - return match; - } - - if (options.compatibility.properties.shorterLengthUnits - && options.compatibility.units.pt - && intVal * 3 % 4 === 0) { - newValue = intVal * 3 / 4 + 'pt'; - } - - if (options.compatibility.properties.shorterLengthUnits - && options.compatibility.units.pc - && intVal % 16 === 0) { - newValue = intVal / 16 + 'pc'; - } - - if (options.compatibility.properties.shorterLengthUnits - && options.compatibility.units.in - && intVal % 96 === 0) { - newValue = intVal / 96 + 'in'; - } - - if (newValue) { - newValue = match.substring(0, match.indexOf(val)) + newValue; - } - - return newValue && newValue.length < match.length ? newValue : match; - }); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 9529: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var startsAsUrl = __webpack_require__(1781); - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var URL_PREFIX_PATTERN = /^url\(/i; - -var plugin = { - level1: { - value: function urlPrefix(_name, value, options) { - if (!options.level[OptimizationLevel.One].normalizeUrls) { - return value; - } - - if (!startsAsUrl(value)) { - return value; - } - - return value.replace(URL_PREFIX_PATTERN, 'url('); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 2273: -/***/ ((module) => { - -var QUOTED_URL_PATTERN = /^url\(['"].+['"]\)$/; -var QUOTED_URL_WITH_WHITESPACE_PATTERN = /^url\(['"].*[*\s()'"].*['"]\)$/; -var QUOTES_PATTERN = /["']/g; -var URL_DATA_PATTERN = /^url\(['"]data:[^;]+;charset/; - -var plugin = { - level1: { - value: function urlQuotes(_name, value, options) { - if (options.compatibility.properties.urlQuotes) { - return value; - } - - return QUOTED_URL_PATTERN.test(value) - && !QUOTED_URL_WITH_WHITESPACE_PATTERN.test(value) - && !URL_DATA_PATTERN.test(value) - ? value.replace(QUOTES_PATTERN, '') - : value; - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 3798: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var startsAsUrl = __webpack_require__(1781); - -var WHITESPACE_PATTERN = /\\?\n|\\?\r\n/g; -var WHITESPACE_PREFIX_PATTERN = /(\()\s+/g; -var WHITESPACE_SUFFIX_PATTERN = /\s+(\))/g; - -var plugin = { - level1: { - value: function urlWhitespace(_name, value) { - if (!startsAsUrl(value)) { - return value; - } - - return value - .replace(WHITESPACE_PATTERN, '') - .replace(WHITESPACE_PREFIX_PATTERN, '$1') - .replace(WHITESPACE_SUFFIX_PATTERN, '$1'); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 3935: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var Marker = __webpack_require__(3820); - -var CALC_DIVISION_WHITESPACE_PATTERN = /\) ?\/ ?/g; -var COMMA_AND_SPACE_PATTERN = /, /g; -var LINE_BREAK_PATTERN = /\r?\n/g; -var MULTI_WHITESPACE_PATTERN = /\s+/g; -var FUNCTION_CLOSING_BRACE_WHITESPACE_PATTERN = /\s+(;?\))/g; -var FUNCTION_OPENING_BRACE_WHITESPACE_PATTERN = /(\(;?)\s+/g; -var VARIABLE_NAME_PATTERN = /^--\S+$/; -var VARIABLE_VALUE_PATTERN = /^var\(\s*--\S+\s*\)$/; - -var plugin = { - level1: { - value: function whitespace(name, value, options) { - if (!options.level[OptimizationLevel.One].removeWhitespace) { - return value; - } - - if (VARIABLE_NAME_PATTERN.test(name) && !VARIABLE_VALUE_PATTERN.test(value)) { - return value; - } - - if ((value.indexOf(' ') == -1 && value.indexOf('\n') == -1) || value.indexOf('expression') === 0) { - return value; - } - - if (value.indexOf(Marker.SINGLE_QUOTE) > -1 || value.indexOf(Marker.DOUBLE_QUOTE) > -1) { - return value; - } - - value = value.replace(LINE_BREAK_PATTERN, ''); - value = value.replace(MULTI_WHITESPACE_PATTERN, ' '); - - if (value.indexOf('calc') > -1) { - value = value.replace(CALC_DIVISION_WHITESPACE_PATTERN, ')/ '); - } - - return value - .replace(FUNCTION_OPENING_BRACE_WHITESPACE_PATTERN, '$1') - .replace(FUNCTION_CLOSING_BRACE_WHITESPACE_PATTERN, '$1') - .replace(COMMA_AND_SPACE_PATTERN, ','); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 6030: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var split = __webpack_require__(6439); - -var ANY_FUNCTION_PATTERN = /^(-(?:moz|ms|o|webkit)-[a-z-]+|[a-z-]+)\((.+)\)$/; -var SKIP_FUNCTION_PATTERN = /^(?:-moz-calc|-webkit-calc|calc|rgb|hsl|rgba|hsla|min|max|clamp|expression)\(/; -var TOKEN_SEPARATOR_PATTERN = /([\s,/])/; - -function removeRecursively(value, options) { - var functionTokens; - var tokens; - - if (SKIP_FUNCTION_PATTERN.test(value)) { - return value; - } - - functionTokens = ANY_FUNCTION_PATTERN.exec(value); - - if (!functionTokens) { - return removeZeros(value, options); - } - - tokens = split(functionTokens[2], TOKEN_SEPARATOR_PATTERN) - .map(function(token) { return removeRecursively(token, options); }); - - return functionTokens[1] + '(' + tokens.join('') + ')'; -} - -function removeZeros(value, options) { - return value - .replace(options.unitsRegexp, '$10$2') - .replace(options.unitsRegexp, '$10$2'); -} - -var plugin = { - level1: { - value: function zero(name, value, options) { - if (!options.compatibility.properties.zeroUnits) { - return value; - } - - if (value.indexOf('%') > 0 && (name == 'height' || name == 'max-height' || name == 'width' || name == 'max-width')) { - return value; - } - - return removeRecursively(value, options); - } - } -}; - -module.exports = plugin; - - -/***/ }), - -/***/ 5878: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// This extractor is used in level 2 optimizations -// IMPORTANT: Mind Token class and this code is not related! -// Properties will be tokenized in one step, see #429 - -var Token = __webpack_require__(4633); -var serializeRules = (__webpack_require__(3694).rules); -var serializeValue = (__webpack_require__(3694).value); - -function extractProperties(token) { - var properties = []; - var inSpecificSelector; - var property; - var name; - var value; - var i, l; - - if (token[0] == Token.RULE) { - inSpecificSelector = !/[.+>~]/.test(serializeRules(token[1])); - - for (i = 0, l = token[2].length; i < l; i++) { - property = token[2][i]; - - if (property[0] != Token.PROPERTY) { continue; } - - name = property[1][1]; - if (name.length === 0) { continue; } - - value = serializeValue(property, i); - - properties.push([ - name, - value, - findNameRoot(name), - token[2][i], - name + ':' + value, - token[1], - inSpecificSelector - ]); - } - } else if (token[0] == Token.NESTED_BLOCK) { - for (i = 0, l = token[2].length; i < l; i++) { - properties = properties.concat(extractProperties(token[2][i])); - } - } - - return properties; -} - -function findNameRoot(name) { - if (name == 'list-style') { return name; } - if (name.indexOf('-radius') > 0) { return 'border-radius'; } - if (name == 'border-collapse' || name == 'border-spacing' || name == 'border-image') { return name; } - if (name.indexOf('border-') === 0 && /^border-\w+-\w+$/.test(name)) { return name.match(/border-\w+/)[0]; } - if (name.indexOf('border-') === 0 && /^border-\w+$/.test(name)) { return 'border'; } - if (name.indexOf('text-') === 0) { return name; } - if (name == '-chrome-') { return name; } - - return name.replace(/^-\w+-/, '').match(/([a-zA-Z]+)/)[0].toLowerCase(); -} - -module.exports = extractProperties; - - -/***/ }), - -/***/ 4638: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Marker = __webpack_require__(3820); -var split = __webpack_require__(6439); - -var DEEP_SELECTOR_PATTERN = /\/deep\//; -var DOUBLE_COLON_PATTERN = /^::/; -var VENDOR_PREFIXED_PATTERN = /:(-moz-|-ms-|-o-|-webkit-)/; - -var NOT_PSEUDO = ':not'; -var PSEUDO_CLASSES_WITH_ARGUMENTS = [ - ':dir', - ':lang', - ':not', - ':nth-child', - ':nth-last-child', - ':nth-last-of-type', - ':nth-of-type' -]; -var RELATION_PATTERN = /[>+~]/; -var UNMIXABLE_PSEUDO_CLASSES = [ - ':after', - ':before', - ':first-letter', - ':first-line', - ':lang' -]; -var UNMIXABLE_PSEUDO_ELEMENTS = [ - '::after', - '::before', - '::first-letter', - '::first-line' -]; - -var Level = { - DOUBLE_QUOTE: 'double-quote', - SINGLE_QUOTE: 'single-quote', - ROOT: 'root' -}; - -function isMergeable(selector, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) { - var singleSelectors = split(selector, Marker.COMMA); - var singleSelector; - var i, l; - - for (i = 0, l = singleSelectors.length; i < l; i++) { - singleSelector = singleSelectors[i]; - - if (singleSelector.length === 0 - || isDeepSelector(singleSelector) - || isVendorPrefixed(singleSelector) - || (singleSelector.indexOf(Marker.COLON) > -1 - && !areMergeable( - singleSelector, - extractPseudoFrom(singleSelector), - mergeablePseudoClasses, - mergeablePseudoElements, - multiplePseudoMerging - ))) { - return false; - } - } - - return true; -} - -function isDeepSelector(selector) { - return DEEP_SELECTOR_PATTERN.test(selector); -} - -function isVendorPrefixed(selector) { - return VENDOR_PREFIXED_PATTERN.test(selector); -} - -function extractPseudoFrom(selector) { - var list = []; - var character; - var buffer = []; - var level = Level.ROOT; - var roundBracketLevel = 0; - var isQuoted; - var isEscaped; - var isPseudo = false; - var isRelation; - var wasColon = false; - var index; - var len; - - for (index = 0, len = selector.length; index < len; index++) { - character = selector[index]; - - isRelation = !isEscaped && RELATION_PATTERN.test(character); - isQuoted = level == Level.DOUBLE_QUOTE || level == Level.SINGLE_QUOTE; - - if (isEscaped) { - buffer.push(character); - } else if (character == Marker.DOUBLE_QUOTE && level == Level.ROOT) { - buffer.push(character); - level = Level.DOUBLE_QUOTE; - } else if (character == Marker.DOUBLE_QUOTE && level == Level.DOUBLE_QUOTE) { - buffer.push(character); - level = Level.ROOT; - } else if (character == Marker.SINGLE_QUOTE && level == Level.ROOT) { - buffer.push(character); - level = Level.SINGLE_QUOTE; - } else if (character == Marker.SINGLE_QUOTE && level == Level.SINGLE_QUOTE) { - buffer.push(character); - level = Level.ROOT; - } else if (isQuoted) { - buffer.push(character); - } else if (character == Marker.OPEN_ROUND_BRACKET) { - buffer.push(character); - roundBracketLevel++; - } else if (character == Marker.CLOSE_ROUND_BRACKET && roundBracketLevel == 1 && isPseudo) { - buffer.push(character); - list.push(buffer.join('')); - roundBracketLevel--; - buffer = []; - isPseudo = false; - } else if (character == Marker.CLOSE_ROUND_BRACKET) { - buffer.push(character); - roundBracketLevel--; - } else if (character == Marker.COLON && roundBracketLevel === 0 && isPseudo && !wasColon) { - list.push(buffer.join('')); - buffer = []; - buffer.push(character); - } else if (character == Marker.COLON && roundBracketLevel === 0 && !wasColon) { - buffer = []; - buffer.push(character); - isPseudo = true; - } else if (character == Marker.SPACE && roundBracketLevel === 0 && isPseudo) { - list.push(buffer.join('')); - buffer = []; - isPseudo = false; - } else if (isRelation && roundBracketLevel === 0 && isPseudo) { - list.push(buffer.join('')); - buffer = []; - isPseudo = false; - } else { - buffer.push(character); - } - - isEscaped = character == Marker.BACK_SLASH; - wasColon = character == Marker.COLON; - } - - if (buffer.length > 0 && isPseudo) { - list.push(buffer.join('')); - } - - return list; -} - -function areMergeable(selector, matches, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) { - return areAllowed(matches, mergeablePseudoClasses, mergeablePseudoElements) - && needArguments(matches) - && (matches.length < 2 || !someIncorrectlyChained(selector, matches)) - && (matches.length < 2 || multiplePseudoMerging && allMixable(matches)); -} - -function areAllowed(matches, mergeablePseudoClasses, mergeablePseudoElements) { - var match; - var name; - var i, l; - - for (i = 0, l = matches.length; i < l; i++) { - match = matches[i]; - name = match.indexOf(Marker.OPEN_ROUND_BRACKET) > -1 - ? match.substring(0, match.indexOf(Marker.OPEN_ROUND_BRACKET)) - : match; - - if (mergeablePseudoClasses.indexOf(name) === -1 && mergeablePseudoElements.indexOf(name) === -1) { - return false; - } - } - - return true; -} - -function needArguments(matches) { - var match; - var name; - var bracketOpensAt; - var hasArguments; - var i, l; - - for (i = 0, l = matches.length; i < l; i++) { - match = matches[i]; - - bracketOpensAt = match.indexOf(Marker.OPEN_ROUND_BRACKET); - hasArguments = bracketOpensAt > -1; - name = hasArguments - ? match.substring(0, bracketOpensAt) - : match; - - if (hasArguments && PSEUDO_CLASSES_WITH_ARGUMENTS.indexOf(name) == -1) { - return false; - } - - if (!hasArguments && PSEUDO_CLASSES_WITH_ARGUMENTS.indexOf(name) > -1) { - return false; - } - } - - return true; -} - -function someIncorrectlyChained(selector, matches) { - var positionInSelector = 0; - var match; - var matchAt; - var nextMatch; - var nextMatchAt; - var name; - var nextName; - var areChained; - var i, l; - - for (i = 0, l = matches.length; i < l; i++) { - match = matches[i]; - nextMatch = matches[i + 1]; - - if (!nextMatch) { - break; - } - - matchAt = selector.indexOf(match, positionInSelector); - nextMatchAt = selector.indexOf(match, matchAt + 1); - positionInSelector = nextMatchAt; - areChained = matchAt + match.length == nextMatchAt; - - if (areChained) { - name = match.indexOf(Marker.OPEN_ROUND_BRACKET) > -1 - ? match.substring(0, match.indexOf(Marker.OPEN_ROUND_BRACKET)) - : match; - nextName = nextMatch.indexOf(Marker.OPEN_ROUND_BRACKET) > -1 - ? nextMatch.substring(0, nextMatch.indexOf(Marker.OPEN_ROUND_BRACKET)) - : nextMatch; - - if (name != NOT_PSEUDO || nextName != NOT_PSEUDO) { - return true; - } - } - } - - return false; -} - -function allMixable(matches) { - var unmixableMatches = 0; - var match; - var i, l; - - for (i = 0, l = matches.length; i < l; i++) { - match = matches[i]; - - if (isPseudoElement(match)) { - unmixableMatches += UNMIXABLE_PSEUDO_ELEMENTS.indexOf(match) > -1 ? 1 : 0; - } else { - unmixableMatches += UNMIXABLE_PSEUDO_CLASSES.indexOf(match) > -1 ? 1 : 0; - } - - if (unmixableMatches > 1) { - return false; - } - } - - return true; -} - -function isPseudoElement(pseudo) { - return DOUBLE_COLON_PATTERN.test(pseudo); -} - -module.exports = isMergeable; - - -/***/ }), - -/***/ 9031: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isMergeable = __webpack_require__(4638); - -var optimizeProperties = __webpack_require__(7847); - -var sortSelectors = __webpack_require__(5646); -var tidyRules = __webpack_require__(1568); - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var serializeBody = (__webpack_require__(3694).body); -var serializeRules = (__webpack_require__(3694).rules); - -var Token = __webpack_require__(4633); - -function mergeAdjacent(tokens, context) { - var lastToken = [null, [], []]; - var options = context.options; - var adjacentSpace = options.compatibility.selectors.adjacentSpace; - var selectorsSortingMethod = options.level[OptimizationLevel.One].selectorsSortingMethod; - var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses; - var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements; - var mergeLimit = options.compatibility.selectors.mergeLimit; - var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging; - - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - if (token[0] != Token.RULE) { - lastToken = [null, [], []]; - continue; - } - - if (lastToken[0] == Token.RULE && serializeRules(token[1]) == serializeRules(lastToken[1])) { - Array.prototype.push.apply(lastToken[2], token[2]); - optimizeProperties(lastToken[2], true, true, context); - token[2] = []; - } else if (lastToken[0] == Token.RULE && serializeBody(token[2]) == serializeBody(lastToken[2]) - && isMergeable(serializeRules(token[1]), mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) - && isMergeable( - serializeRules(lastToken[1]), - mergeablePseudoClasses, - mergeablePseudoElements, - multiplePseudoMerging - ) - && lastToken[1].length < mergeLimit) { - lastToken[1] = tidyRules(lastToken[1].concat(token[1]), false, adjacentSpace, false, context.warnings); - lastToken[1] = lastToken.length > 1 ? sortSelectors(lastToken[1], selectorsSortingMethod) : lastToken[1]; - token[2] = []; - } else { - lastToken = token; - } - } -} - -module.exports = mergeAdjacent; - - -/***/ }), - -/***/ 1619: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var canReorder = (__webpack_require__(7633).canReorder); -var canReorderSingle = (__webpack_require__(7633).canReorderSingle); -var extractProperties = __webpack_require__(5878); -var rulesOverlap = __webpack_require__(4250); - -var serializeRules = (__webpack_require__(3694).rules); -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); -var Token = __webpack_require__(4633); - -function mergeMediaQueries(tokens, context) { - var mergeSemantically = context.options.level[OptimizationLevel.Two].mergeSemantically; - var specificityCache = context.cache.specificity; - var candidates = {}; - var reduced = []; - - for (var i = tokens.length - 1; i >= 0; i--) { - var token = tokens[i]; - if (token[0] != Token.NESTED_BLOCK) { - continue; - } - - var key = serializeRules(token[1]); - var candidate = candidates[key]; - if (!candidate) { - candidate = []; - candidates[key] = candidate; - } - - candidate.push(i); - } - - for (var name in candidates) { - var positions = candidates[name]; - - positionLoop: - for (var j = positions.length - 1; j > 0; j--) { - var positionOne = positions[j]; - var tokenOne = tokens[positionOne]; - var positionTwo = positions[j - 1]; - var tokenTwo = tokens[positionTwo]; - - directionLoop: - for (var direction = 1; direction >= -1; direction -= 2) { - var topToBottom = direction == 1; - var from = topToBottom ? positionOne + 1 : positionTwo - 1; - var to = topToBottom ? positionTwo : positionOne; - var delta = topToBottom ? 1 : -1; - var source = topToBottom ? tokenOne : tokenTwo; - var target = topToBottom ? tokenTwo : tokenOne; - var movedProperties = extractProperties(source); - - while (from != to) { - var traversedProperties = extractProperties(tokens[from]); - from += delta; - - if (mergeSemantically - && allSameRulePropertiesCanBeReordered(movedProperties, traversedProperties, specificityCache) - ) { - continue; - } - - if (!canReorder(movedProperties, traversedProperties, specificityCache)) { continue directionLoop; } - } - - target[2] = topToBottom - ? source[2].concat(target[2]) - : target[2].concat(source[2]); - source[2] = []; - - reduced.push(target); - continue positionLoop; - } - } - } - - return reduced; -} - -function allSameRulePropertiesCanBeReordered(movedProperties, traversedProperties, specificityCache) { - var movedProperty; - var movedRule; - var traversedProperty; - var traversedRule; - var i, l; - var j, m; - - for (i = 0, l = movedProperties.length; i < l; i++) { - movedProperty = movedProperties[i]; - movedRule = movedProperty[5]; - - for (j = 0, m = traversedProperties.length; j < m; j++) { - traversedProperty = traversedProperties[j]; - traversedRule = traversedProperty[5]; - - if (rulesOverlap(movedRule, traversedRule, true) - && !canReorderSingle(movedProperty, traversedProperty, specificityCache)) { - return false; - } - } - } - - return true; -} - -module.exports = mergeMediaQueries; - - -/***/ }), - -/***/ 6962: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isMergeable = __webpack_require__(4638); - -var sortSelectors = __webpack_require__(5646); -var tidyRules = __webpack_require__(1568); - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var serializeBody = (__webpack_require__(3694).body); -var serializeRules = (__webpack_require__(3694).rules); - -var Token = __webpack_require__(4633); - -function unsafeSelector(value) { - return /\.|\*| :/.test(value); -} - -function isBemElement(token) { - var asString = serializeRules(token[1]); - return asString.indexOf('__') > -1 || asString.indexOf('--') > -1; -} - -function withoutModifier(selector) { - return selector.replace(/--[^ ,>+~:]+/g, ''); -} - -function removeAnyUnsafeElements(left, candidates) { - var leftSelector = withoutModifier(serializeRules(left[1])); - - for (var body in candidates) { - var right = candidates[body]; - var rightSelector = withoutModifier(serializeRules(right[1])); - - if (rightSelector.indexOf(leftSelector) > -1 || leftSelector.indexOf(rightSelector) > -1) { - delete candidates[body]; - } - } -} - -function mergeNonAdjacentByBody(tokens, context) { - var options = context.options; - var mergeSemantically = options.level[OptimizationLevel.Two].mergeSemantically; - var adjacentSpace = options.compatibility.selectors.adjacentSpace; - var selectorsSortingMethod = options.level[OptimizationLevel.One].selectorsSortingMethod; - var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses; - var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements; - var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging; - var candidates = {}; - - for (var i = tokens.length - 1; i >= 0; i--) { - var token = tokens[i]; - if (token[0] != Token.RULE) { continue; } - - if (token[2].length > 0 && (!mergeSemantically && unsafeSelector(serializeRules(token[1])))) { candidates = {}; } - - if (token[2].length > 0 && mergeSemantically && isBemElement(token)) { removeAnyUnsafeElements(token, candidates); } - - var candidateBody = serializeBody(token[2]); - var oldToken = candidates[candidateBody]; - if (oldToken - && isMergeable( - serializeRules(token[1]), - mergeablePseudoClasses, - mergeablePseudoElements, - multiplePseudoMerging - ) - && isMergeable( - serializeRules(oldToken[1]), - mergeablePseudoClasses, - mergeablePseudoElements, - multiplePseudoMerging - ) - ) { - if (token[2].length > 0) { - token[1] = tidyRules(oldToken[1].concat(token[1]), false, adjacentSpace, false, context.warnings); - token[1] = token[1].length > 1 ? sortSelectors(token[1], selectorsSortingMethod) : token[1]; - } else { - token[1] = oldToken[1].concat(token[1]); - } - - oldToken[2] = []; - candidates[candidateBody] = null; - } - - candidates[serializeBody(token[2])] = token; - } -} - -module.exports = mergeNonAdjacentByBody; - - -/***/ }), - -/***/ 9377: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var canReorder = (__webpack_require__(7633).canReorder); -var extractProperties = __webpack_require__(5878); - -var optimizeProperties = __webpack_require__(7847); - -var serializeRules = (__webpack_require__(3694).rules); - -var Token = __webpack_require__(4633); - -function mergeNonAdjacentBySelector(tokens, context) { - var specificityCache = context.cache.specificity; - var allSelectors = {}; - var repeatedSelectors = []; - var i; - - for (i = tokens.length - 1; i >= 0; i--) { - if (tokens[i][0] != Token.RULE) { continue; } - if (tokens[i][2].length === 0) { continue; } - - var selector = serializeRules(tokens[i][1]); - allSelectors[selector] = [i].concat(allSelectors[selector] || []); - - if (allSelectors[selector].length == 2) { repeatedSelectors.push(selector); } - } - - for (i = repeatedSelectors.length - 1; i >= 0; i--) { - var positions = allSelectors[repeatedSelectors[i]]; - - selectorIterator: - for (var j = positions.length - 1; j > 0; j--) { - var positionOne = positions[j - 1]; - var tokenOne = tokens[positionOne]; - var positionTwo = positions[j]; - var tokenTwo = tokens[positionTwo]; - - directionIterator: - for (var direction = 1; direction >= -1; direction -= 2) { - var topToBottom = direction == 1; - var from = topToBottom ? positionOne + 1 : positionTwo - 1; - var to = topToBottom ? positionTwo : positionOne; - var delta = topToBottom ? 1 : -1; - var moved = topToBottom ? tokenOne : tokenTwo; - var target = topToBottom ? tokenTwo : tokenOne; - var movedProperties = extractProperties(moved); - - while (from != to) { - var traversedProperties = extractProperties(tokens[from]); - from += delta; - - // traversed then moved as we move selectors towards the start - var reorderable = topToBottom - ? canReorder(movedProperties, traversedProperties, specificityCache) - : canReorder(traversedProperties, movedProperties, specificityCache); - - if (!reorderable && !topToBottom) { continue selectorIterator; } - if (!reorderable && topToBottom) { continue directionIterator; } - } - - if (topToBottom) { - Array.prototype.push.apply(moved[2], target[2]); - target[2] = moved[2]; - } else { - Array.prototype.push.apply(target[2], moved[2]); - } - - optimizeProperties(target[2], true, true, context); - moved[2] = []; - } - } - } -} - -module.exports = mergeNonAdjacentBySelector; - - -/***/ }), - -/***/ 6445: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var mergeAdjacent = __webpack_require__(9031); -var mergeMediaQueries = __webpack_require__(1619); -var mergeNonAdjacentByBody = __webpack_require__(6962); -var mergeNonAdjacentBySelector = __webpack_require__(9377); -var reduceNonAdjacent = __webpack_require__(5472); -var removeDuplicateFontAtRules = __webpack_require__(1480); -var removeDuplicateMediaQueries = __webpack_require__(6712); -var removeDuplicates = __webpack_require__(5169); -var removeUnusedAtRules = __webpack_require__(329); -var restructure = __webpack_require__(3002); - -var optimizeProperties = __webpack_require__(7847); - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -var Token = __webpack_require__(4633); - -function removeEmpty(tokens) { - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - var isEmpty = false; - - switch (token[0]) { - case Token.RULE: - isEmpty = token[1].length === 0 || token[2].length === 0; - break; - case Token.NESTED_BLOCK: - removeEmpty(token[2]); - isEmpty = token[2].length === 0; - break; - case Token.AT_RULE: - isEmpty = token[1].length === 0; - break; - case Token.AT_RULE_BLOCK: - isEmpty = token[2].length === 0; - } - - if (isEmpty) { - tokens.splice(i, 1); - i--; - l--; - } - } -} - -function recursivelyOptimizeBlocks(tokens, context) { - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - if (token[0] == Token.NESTED_BLOCK) { - var isKeyframes = /@(-moz-|-o-|-webkit-)?keyframes/.test(token[1][0][1]); - level2Optimize(token[2], context, !isKeyframes); - } - } -} - -function recursivelyOptimizeProperties(tokens, context) { - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - - switch (token[0]) { - case Token.RULE: - optimizeProperties(token[2], true, true, context); - break; - case Token.NESTED_BLOCK: - recursivelyOptimizeProperties(token[2], context); - } - } -} - -function level2Optimize(tokens, context, withRestructuring) { - var levelOptions = context.options.level[OptimizationLevel.Two]; - var level2Plugins = context.options.plugins.level2Block; - var reduced; - var i; - - recursivelyOptimizeBlocks(tokens, context); - recursivelyOptimizeProperties(tokens, context); - - if (levelOptions.removeDuplicateRules) { - removeDuplicates(tokens, context); - } - - if (levelOptions.mergeAdjacentRules) { - mergeAdjacent(tokens, context); - } - - if (levelOptions.reduceNonAdjacentRules) { - reduceNonAdjacent(tokens, context); - } - - if (levelOptions.mergeNonAdjacentRules && levelOptions.mergeNonAdjacentRules != 'body') { - mergeNonAdjacentBySelector(tokens, context); - } - - if (levelOptions.mergeNonAdjacentRules && levelOptions.mergeNonAdjacentRules != 'selector') { - mergeNonAdjacentByBody(tokens, context); - } - - if (levelOptions.restructureRules && levelOptions.mergeAdjacentRules && withRestructuring) { - restructure(tokens, context); - mergeAdjacent(tokens, context); - } - - if (levelOptions.restructureRules && !levelOptions.mergeAdjacentRules && withRestructuring) { - restructure(tokens, context); - } - - if (levelOptions.removeDuplicateFontRules) { - removeDuplicateFontAtRules(tokens, context); - } - - if (levelOptions.removeDuplicateMediaBlocks) { - removeDuplicateMediaQueries(tokens, context); - } - - if (levelOptions.removeUnusedAtRules) { - removeUnusedAtRules(tokens, context); - } - - if (levelOptions.mergeMedia) { - reduced = mergeMediaQueries(tokens, context); - for (i = reduced.length - 1; i >= 0; i--) { - level2Optimize(reduced[i][2], context, false); - } - } - - for (i = 0; i < level2Plugins.length; i++) { - level2Plugins[i](tokens); - } - - if (levelOptions.removeEmpty) { - removeEmpty(tokens); - } - - return tokens; -} - -module.exports = level2Optimize; - - -/***/ }), - -/***/ 3641: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Marker = __webpack_require__(3820); - -function everyValuesPair(fn, left, right) { - var leftSize = left.value.length; - var rightSize = right.value.length; - var total = Math.max(leftSize, rightSize); - var lowerBound = Math.min(leftSize, rightSize) - 1; - var leftValue; - var rightValue; - var position; - - for (position = 0; position < total; position++) { - leftValue = left.value[position] && left.value[position][1] || leftValue; - rightValue = right.value[position] && right.value[position][1] || rightValue; - - if (leftValue == Marker.COMMA || rightValue == Marker.COMMA) { - continue; - } - - if (!fn(leftValue, rightValue, position, position <= lowerBound)) { - return false; - } - } - - return true; -} - -module.exports = everyValuesPair; - - -/***/ }), - -/***/ 4790: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var configuration = __webpack_require__(6058); - -function findComponentIn(shorthand, longhand) { - var comparator = nameComparator(longhand); - - return findInDirectComponents(shorthand, comparator) || findInSubComponents(shorthand, comparator); -} - -function nameComparator(to) { - return function(property) { - return to.name === property.name; - }; -} - -function findInDirectComponents(shorthand, comparator) { - return shorthand.components.filter(comparator)[0]; -} - -function findInSubComponents(shorthand, comparator) { - var shorthandComponent; - var longhandMatch; - var i, l; - - if (!configuration[shorthand.name].shorthandComponents) { - return; - } - - for (i = 0, l = shorthand.components.length; i < l; i++) { - shorthandComponent = shorthand.components[i]; - longhandMatch = findInDirectComponents(shorthandComponent, comparator); - - if (longhandMatch) { - return longhandMatch; - } - } -} - -module.exports = findComponentIn; - - -/***/ }), - -/***/ 5417: -/***/ ((module) => { - -function hasInherit(property) { - for (var i = property.value.length - 1; i >= 0; i--) { - if (property.value[i][1] == 'inherit') { return true; } - } - - return false; -} - -module.exports = hasInherit; - - -/***/ }), - -/***/ 8594: -/***/ ((module) => { - -function hasSameValues(property) { - var firstValue = property.value[0][1]; - var i, l; - - for (i = 1, l = property.value.length; i < l; i++) { - if (property.value[i][1] != firstValue) { - return false; - } - } - - return true; -} - -module.exports = hasSameValues; - - -/***/ }), - -/***/ 256: -/***/ ((module) => { - -function hasUnset(property) { - for (var i = property.value.length - 1; i >= 0; i--) { - if (property.value[i][1] == 'unset') { return true; } - } - - return false; -} - -module.exports = hasUnset; - - -/***/ }), - -/***/ 3462: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var configuration = __webpack_require__(6058); - -function isComponentOf(property1, property2, shallow) { - return isDirectComponentOf(property1, property2) - || !shallow && !!configuration[property1.name].shorthandComponents && isSubComponentOf(property1, property2); -} - -function isDirectComponentOf(property1, property2) { - var descriptor = configuration[property1.name]; - - return 'components' in descriptor && descriptor.components.indexOf(property2.name) > -1; -} - -function isSubComponentOf(property1, property2) { - return property1 - .components - .some(function(component) { - return isDirectComponentOf(component, property2); - }); -} - -module.exports = isComponentOf; - - -/***/ }), - -/***/ 9036: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Marker = __webpack_require__(3820); - -function isMergeableShorthand(shorthand) { - if (shorthand.name != 'font') { - return true; - } - - return shorthand.value[0][1].indexOf(Marker.INTERNAL) == -1; -} - -module.exports = isMergeableShorthand; - - -/***/ }), - -/***/ 7464: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var everyValuesPair = __webpack_require__(3641); -var hasInherit = __webpack_require__(5417); -var hasSameValues = __webpack_require__(8594); -var populateComponents = __webpack_require__(1621); - -var configuration = __webpack_require__(6058); -var deepClone = (__webpack_require__(8315).deep); -var restoreWithComponents = __webpack_require__(733); - -var restoreFromOptimizing = __webpack_require__(2700); -var wrapSingle = (__webpack_require__(3684).single); - -var serializeBody = (__webpack_require__(3694).body); -var Token = __webpack_require__(4633); - -function mergeIntoShorthands(properties, validator) { - var candidates = {}; - var descriptor; - var componentOf; - var property; - var i, l; - var j, m; - - // there is no shorthand property made up of less than 3 longhands - if (properties.length < 3) { - return; - } - - for (i = 0, l = properties.length; i < l; i++) { - property = properties[i]; - descriptor = configuration[property.name]; - - if (property.dynamic) { - continue; - } - - if (property.unused) { - continue; - } - - if (property.hack) { - continue; - } - - if (property.block) { - continue; - } - - if (descriptor && descriptor.singleTypeComponents && !hasSameValues(property)) { - continue; - } - - invalidateOrCompact(properties, i, candidates, validator); - - if (descriptor && descriptor.componentOf) { - for (j = 0, m = descriptor.componentOf.length; j < m; j++) { - componentOf = descriptor.componentOf[j]; - - candidates[componentOf] = candidates[componentOf] || {}; - candidates[componentOf][property.name] = property; - } - } - } - - invalidateOrCompact(properties, i, candidates, validator); -} - -function invalidateOrCompact(properties, position, candidates, validator) { - var invalidatedBy = properties[position]; - var shorthandName; - var shorthandDescriptor; - var candidateComponents; - var replacedCandidates = []; - var i; - - for (shorthandName in candidates) { - if (undefined !== invalidatedBy && shorthandName == invalidatedBy.name) { - continue; - } - - shorthandDescriptor = configuration[shorthandName]; - candidateComponents = candidates[shorthandName]; - if (invalidatedBy && invalidates(candidates, shorthandName, invalidatedBy)) { - delete candidates[shorthandName]; - continue; - } - - if (shorthandDescriptor.components.length > Object.keys(candidateComponents).length) { - continue; - } - - if (mixedImportance(candidateComponents)) { - continue; - } - - if (!overridable(candidateComponents, shorthandName, validator)) { - continue; - } - - if (!mergeable(candidateComponents)) { - continue; - } - - if (mixedInherit(candidateComponents)) { - replaceWithInheritBestFit(properties, candidateComponents, shorthandName, validator); - } else { - replaceWithShorthand(properties, candidateComponents, shorthandName, validator); - } - - replacedCandidates.push(shorthandName); - } - - for (i = replacedCandidates.length - 1; i >= 0; i--) { - delete candidates[replacedCandidates[i]]; - } -} - -function invalidates(candidates, shorthandName, invalidatedBy) { - var shorthandDescriptor = configuration[shorthandName]; - var invalidatedByDescriptor = configuration[invalidatedBy.name]; - var componentName; - - if ('overridesShorthands' in shorthandDescriptor && shorthandDescriptor.overridesShorthands.indexOf(invalidatedBy.name) > -1) { - return true; - } - - if (invalidatedByDescriptor && 'componentOf' in invalidatedByDescriptor) { - for (componentName in candidates[shorthandName]) { - if (invalidatedByDescriptor.componentOf.indexOf(componentName) > -1) { - return true; - } - } - } - - return false; -} - -function mixedImportance(components) { - var important; - var componentName; - - for (componentName in components) { - if (undefined !== important && components[componentName].important != important) { - return true; - } - - important = components[componentName].important; - } - - return false; -} - -function overridable(components, shorthandName, validator) { - var descriptor = configuration[shorthandName]; - var newValuePlaceholder = [ - Token.PROPERTY, - [Token.PROPERTY_NAME, shorthandName], - [Token.PROPERTY_VALUE, descriptor.defaultValue] - ]; - var newProperty = wrapSingle(newValuePlaceholder); - var component; - var mayOverride; - var i, l; - - populateComponents([newProperty], validator, []); - - for (i = 0, l = descriptor.components.length; i < l; i++) { - component = components[descriptor.components[i]]; - mayOverride = configuration[component.name].canOverride || sameValue; - - if (!everyValuesPair(mayOverride.bind(null, validator), newProperty.components[i], component)) { - return false; - } - } - - return true; -} - -function sameValue(_validator, value1, value2) { - return value1 === value2; -} - -function mergeable(components) { - var lastCount = null; - var currentCount; - var componentName; - var component; - var descriptor; - var values; - - for (componentName in components) { - component = components[componentName]; - descriptor = configuration[componentName]; - - if (!('restore' in descriptor)) { - continue; - } - - restoreFromOptimizing([component.all[component.position]], restoreWithComponents); - values = descriptor.restore(component, configuration); - - currentCount = values.length; - - if (lastCount !== null && currentCount !== lastCount) { - return false; - } - - lastCount = currentCount; - } - - return true; -} - -function mixedInherit(components) { - var componentName; - var lastValue = null; - var currentValue; - - for (componentName in components) { - currentValue = hasInherit(components[componentName]); - - if (lastValue !== null && lastValue !== currentValue) { - return true; - } - - lastValue = currentValue; - } - - return false; -} - -function replaceWithInheritBestFit(properties, candidateComponents, shorthandName, validator) { - var viaLonghands = buildSequenceWithInheritLonghands(candidateComponents, shorthandName, validator); - var viaShorthand = buildSequenceWithInheritShorthand(candidateComponents, shorthandName, validator); - var longhandTokensSequence = viaLonghands[0]; - var shorthandTokensSequence = viaShorthand[0]; - var isLonghandsShorter = serializeBody(longhandTokensSequence).length < serializeBody(shorthandTokensSequence).length; - var newTokensSequence = isLonghandsShorter ? longhandTokensSequence : shorthandTokensSequence; - var newProperty = isLonghandsShorter ? viaLonghands[1] : viaShorthand[1]; - var newComponents = isLonghandsShorter ? viaLonghands[2] : viaShorthand[2]; - var lastComponent = candidateComponents[Object.keys(candidateComponents).pop()]; - var all = lastComponent.all; - var insertAt = lastComponent.position; - var componentName; - var oldComponent; - var newComponent; - var newToken; - - newProperty.position = insertAt; - newProperty.shorthand = true; - newProperty.important = lastComponent.important; - newProperty.multiplex = false; - newProperty.dirty = true; - newProperty.all = all; - newProperty.all[insertAt] = newTokensSequence[0]; - - properties.splice(insertAt, 1, newProperty); - - for (componentName in candidateComponents) { - oldComponent = candidateComponents[componentName]; - oldComponent.unused = true; - - newProperty.multiplex = newProperty.multiplex || oldComponent.multiplex; - - if (oldComponent.name in newComponents) { - newComponent = newComponents[oldComponent.name]; - newToken = findTokenIn(newTokensSequence, componentName); - - newComponent.position = all.length; - newComponent.all = all; - newComponent.all.push(newToken); - - properties.push(newComponent); - } - } -} - -function buildSequenceWithInheritLonghands(components, shorthandName, validator) { - var tokensSequence = []; - var inheritComponents = {}; - var nonInheritComponents = {}; - var descriptor = configuration[shorthandName]; - var shorthandToken = [ - Token.PROPERTY, - [Token.PROPERTY_NAME, shorthandName], - [Token.PROPERTY_VALUE, descriptor.defaultValue] - ]; - var newProperty = wrapSingle(shorthandToken); - var component; - var longhandToken; - var newComponent; - var nameMetadata; - var i, l; - - populateComponents([newProperty], validator, []); - - for (i = 0, l = descriptor.components.length; i < l; i++) { - component = components[descriptor.components[i]]; - - if (hasInherit(component)) { - longhandToken = component.all[component.position].slice(0, 2); - Array.prototype.push.apply(longhandToken, component.value); - tokensSequence.push(longhandToken); - - newComponent = deepClone(component); - newComponent.value = inferComponentValue(components, newComponent.name); - - newProperty.components[i] = newComponent; - inheritComponents[component.name] = deepClone(component); - } else { - newComponent = deepClone(component); - newComponent.all = component.all; - newProperty.components[i] = newComponent; - - nonInheritComponents[component.name] = component; - } - } - - newProperty.important = components[Object.keys(components).pop()].important; - - nameMetadata = joinMetadata(nonInheritComponents, 1); - shorthandToken[1].push(nameMetadata); - - restoreFromOptimizing([newProperty], restoreWithComponents); - - shorthandToken = shorthandToken.slice(0, 2); - Array.prototype.push.apply(shorthandToken, newProperty.value); - - tokensSequence.unshift(shorthandToken); - - return [tokensSequence, newProperty, inheritComponents]; -} - -function inferComponentValue(components, propertyName) { - var descriptor = configuration[propertyName]; - - if ('oppositeTo' in descriptor) { - return components[descriptor.oppositeTo].value; - } - return [[Token.PROPERTY_VALUE, descriptor.defaultValue]]; -} - -function joinMetadata(components, at) { - var metadata = []; - var component; - var originalValue; - var componentMetadata; - var componentName; - - for (componentName in components) { - component = components[componentName]; - originalValue = component.all[component.position]; - componentMetadata = originalValue[at][originalValue[at].length - 1]; - - Array.prototype.push.apply(metadata, componentMetadata); - } - - return metadata.sort(metadataSorter); -} - -function metadataSorter(metadata1, metadata2) { - var line1 = metadata1[0]; - var line2 = metadata2[0]; - var column1 = metadata1[1]; - var column2 = metadata2[1]; - - if (line1 < line2) { - return -1; - } if (line1 === line2) { - return column1 < column2 ? -1 : 1; - } - return 1; -} - -function buildSequenceWithInheritShorthand(components, shorthandName, validator) { - var tokensSequence = []; - var inheritComponents = {}; - var nonInheritComponents = {}; - var descriptor = configuration[shorthandName]; - var shorthandToken = [ - Token.PROPERTY, - [Token.PROPERTY_NAME, shorthandName], - [Token.PROPERTY_VALUE, 'inherit'] - ]; - var newProperty = wrapSingle(shorthandToken); - var component; - var longhandToken; - var nameMetadata; - var valueMetadata; - var i, l; - - populateComponents([newProperty], validator, []); - - for (i = 0, l = descriptor.components.length; i < l; i++) { - component = components[descriptor.components[i]]; - - if (hasInherit(component)) { - inheritComponents[component.name] = component; - } else { - longhandToken = component.all[component.position].slice(0, 2); - Array.prototype.push.apply(longhandToken, component.value); - tokensSequence.push(longhandToken); - - nonInheritComponents[component.name] = deepClone(component); - } - } - - nameMetadata = joinMetadata(inheritComponents, 1); - shorthandToken[1].push(nameMetadata); - - valueMetadata = joinMetadata(inheritComponents, 2); - shorthandToken[2].push(valueMetadata); - - tokensSequence.unshift(shorthandToken); - - return [tokensSequence, newProperty, nonInheritComponents]; -} - -function findTokenIn(tokens, componentName) { - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - if (tokens[i][1][1] == componentName) { - return tokens[i]; - } - } -} - -function replaceWithShorthand(properties, candidateComponents, shorthandName, validator) { - var descriptor = configuration[shorthandName]; - var nameMetadata; - var valueMetadata; - var newValuePlaceholder = [ - Token.PROPERTY, - [Token.PROPERTY_NAME, shorthandName], - [Token.PROPERTY_VALUE, descriptor.defaultValue] - ]; - var all; - var insertAt = inferInsertAtFrom(properties, candidateComponents, shorthandName); - - var newProperty = wrapSingle(newValuePlaceholder); - newProperty.shorthand = true; - newProperty.dirty = true; - newProperty.multiplex = false; - - populateComponents([newProperty], validator, []); - - for (var i = 0, l = descriptor.components.length; i < l; i++) { - var component = candidateComponents[descriptor.components[i]]; - - newProperty.components[i] = deepClone(component); - newProperty.important = component.important; - newProperty.multiplex = newProperty.multiplex || component.multiplex; - - all = component.all; - } - - for (var componentName in candidateComponents) { - candidateComponents[componentName].unused = true; - } - - nameMetadata = joinMetadata(candidateComponents, 1); - newValuePlaceholder[1].push(nameMetadata); - - valueMetadata = joinMetadata(candidateComponents, 2); - newValuePlaceholder[2].push(valueMetadata); - - newProperty.position = insertAt; - newProperty.all = all; - newProperty.all[insertAt] = newValuePlaceholder; - - properties.splice(insertAt, 1, newProperty); -} - -function inferInsertAtFrom(properties, candidateComponents, shorthandName) { - var candidateComponentNames = Object.keys(candidateComponents); - var firstCandidatePosition = candidateComponents[candidateComponentNames[0]].position; - var lastCandidatePosition = candidateComponents[candidateComponentNames[candidateComponentNames.length - 1]].position; - - if (shorthandName == 'border' && traversesVia(properties.slice(firstCandidatePosition, lastCandidatePosition), 'border-image')) { - return firstCandidatePosition; - } - return lastCandidatePosition; -} - -function traversesVia(properties, propertyName) { - for (var i = properties.length - 1; i >= 0; i--) { - if (properties[i].name == propertyName) { - return true; - } - } - - return false; -} - -module.exports = mergeIntoShorthands; - - -/***/ }), - -/***/ 7847: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var mergeIntoShorthands = __webpack_require__(7464); -var overrideProperties = __webpack_require__(136); -var populateComponents = __webpack_require__(1621); - -var restoreWithComponents = __webpack_require__(733); - -var wrapForOptimizing = (__webpack_require__(3684).all); -var removeUnused = __webpack_require__(556); -var restoreFromOptimizing = __webpack_require__(2700); - -var OptimizationLevel = (__webpack_require__(1905).OptimizationLevel); - -function optimizeProperties(properties, withOverriding, withMerging, context) { - var levelOptions = context.options.level[OptimizationLevel.Two]; - var _properties = wrapForOptimizing(properties, levelOptions.skipProperties); - var _property; - var i, l; - - populateComponents(_properties, context.validator, context.warnings); - - for (i = 0, l = _properties.length; i < l; i++) { - _property = _properties[i]; - if (_property.block) { - optimizeProperties(_property.value[0][1], withOverriding, withMerging, context); - } - } - - if (withMerging && levelOptions.mergeIntoShorthands) { - mergeIntoShorthands(_properties, context.validator); - } - - if (withOverriding && levelOptions.overrideProperties) { - overrideProperties(_properties, withMerging, context.options.compatibility, context.validator); - } - - restoreFromOptimizing(_properties, restoreWithComponents); - removeUnused(_properties); -} - -module.exports = optimizeProperties; - - -/***/ }), - -/***/ 136: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var hasInherit = __webpack_require__(5417); -var hasUnset = __webpack_require__(256); -var everyValuesPair = __webpack_require__(3641); -var findComponentIn = __webpack_require__(4790); -var isComponentOf = __webpack_require__(3462); -var isMergeableShorthand = __webpack_require__(9036); -var overridesNonComponentShorthand = __webpack_require__(188); -var sameVendorPrefixesIn = (__webpack_require__(1200).same); - -var configuration = __webpack_require__(6058); -var deepClone = (__webpack_require__(8315).deep); -var restoreWithComponents = __webpack_require__(733); -var shallowClone = (__webpack_require__(8315).shallow); - -var restoreFromOptimizing = __webpack_require__(2700); - -var Token = __webpack_require__(4633); -var Marker = __webpack_require__(3820); - -var serializeProperty = (__webpack_require__(3694).property); - -function sameValue(_validator, value1, value2) { - return value1 === value2; -} - -function wouldBreakCompatibility(property, validator) { - for (var i = 0; i < property.components.length; i++) { - var component = property.components[i]; - var descriptor = configuration[component.name]; - var canOverride = descriptor && descriptor.canOverride || sameValue; - - var _component = shallowClone(component); - _component.value = [[Token.PROPERTY_VALUE, descriptor.defaultValue]]; - - if (!everyValuesPair(canOverride.bind(null, validator), _component, component)) { - return true; - } - } - - return false; -} - -function overrideIntoMultiplex(property, by) { - by.unused = true; - - turnIntoMultiplex(by, multiplexSize(property)); - property.value = by.value; -} - -function overrideByMultiplex(property, by) { - by.unused = true; - property.multiplex = true; - property.value = by.value; -} - -function overrideSimple(property, by) { - by.unused = true; - property.value = by.value; -} - -function override(property, by) { - if (by.multiplex) { - overrideByMultiplex(property, by); - } else if (property.multiplex) { - overrideIntoMultiplex(property, by); - } else { - overrideSimple(property, by); - } -} - -function overrideShorthand(property, by) { - by.unused = true; - - for (var i = 0, l = property.components.length; i < l; i++) { - override(property.components[i], by.components[i]); - } -} - -function turnIntoMultiplex(property, size) { - property.multiplex = true; - - if (configuration[property.name].shorthand) { - turnShorthandValueIntoMultiplex(property, size); - } else { - turnLonghandValueIntoMultiplex(property, size); - } -} - -function turnShorthandValueIntoMultiplex(property, size) { - var component; - var i, l; - - for (i = 0, l = property.components.length; i < l; i++) { - component = property.components[i]; - - if (!component.multiplex) { - turnLonghandValueIntoMultiplex(component, size); - } - } -} - -function turnLonghandValueIntoMultiplex(property, size) { - var descriptor = configuration[property.name]; - var withRealValue = descriptor.intoMultiplexMode == 'real'; - var withValue = descriptor.intoMultiplexMode == 'real' - ? property.value.slice(0) - : (descriptor.intoMultiplexMode == 'placeholder' ? descriptor.placeholderValue : descriptor.defaultValue); - var i = multiplexSize(property); - var j; - var m = withValue.length; - - for (; i < size; i++) { - property.value.push([Token.PROPERTY_VALUE, Marker.COMMA]); - - if (Array.isArray(withValue)) { - for (j = 0; j < m; j++) { - property.value.push(withRealValue ? withValue[j] : [Token.PROPERTY_VALUE, withValue[j]]); - } - } else { - property.value.push(withRealValue ? withValue : [Token.PROPERTY_VALUE, withValue]); - } - } -} - -function multiplexSize(component) { - var size = 0; - - for (var i = 0, l = component.value.length; i < l; i++) { - if (component.value[i][1] == Marker.COMMA) { size++; } - } - - return size + 1; -} - -function lengthOf(property) { - var fakeAsArray = [ - Token.PROPERTY, - [Token.PROPERTY_NAME, property.name] - ].concat(property.value); - return serializeProperty([fakeAsArray], 0).length; -} - -function moreSameShorthands(properties, startAt, name) { - // Since we run the main loop in `compactOverrides` backwards, at this point some - // properties may not be marked as unused. - // We should consider reverting the order if possible - var count = 0; - - for (var i = startAt; i >= 0; i--) { - if (properties[i].name == name && !properties[i].unused) { count++; } - if (count > 1) { break; } - } - - return count > 1; -} - -function overridingFunction(shorthand, validator) { - for (var i = 0, l = shorthand.components.length; i < l; i++) { - if (!anyValue(validator.isUrl, shorthand.components[i]) - && anyValue(validator.isFunction, shorthand.components[i])) { return true; } - } - - return false; -} - -function anyValue(fn, property) { - for (var i = 0, l = property.value.length; i < l; i++) { - if (property.value[i][1] == Marker.COMMA) { continue; } - - if (fn(property.value[i][1])) { return true; } - } - - return false; -} - -function wouldResultInLongerValue(left, right) { - if (!left.multiplex && !right.multiplex || left.multiplex && right.multiplex) { return false; } - - var multiplex = left.multiplex ? left : right; - var simple = left.multiplex ? right : left; - var component; - - var multiplexClone = deepClone(multiplex); - restoreFromOptimizing([multiplexClone], restoreWithComponents); - - var simpleClone = deepClone(simple); - restoreFromOptimizing([simpleClone], restoreWithComponents); - - var lengthBefore = lengthOf(multiplexClone) + 1 + lengthOf(simpleClone); - - if (left.multiplex) { - component = findComponentIn(multiplexClone, simpleClone); - overrideIntoMultiplex(component, simpleClone); - } else { - component = findComponentIn(simpleClone, multiplexClone); - turnIntoMultiplex(simpleClone, multiplexSize(multiplexClone)); - overrideByMultiplex(component, multiplexClone); - } - - restoreFromOptimizing([simpleClone], restoreWithComponents); - - var lengthAfter = lengthOf(simpleClone); - - return lengthBefore <= lengthAfter; -} - -function isCompactable(property) { - return property.name in configuration; -} - -function noneOverrideHack(left, right) { - return !left.multiplex - && (left.name == 'background' || left.name == 'background-image') - && right.multiplex - && (right.name == 'background' || right.name == 'background-image') - && anyLayerIsNone(right.value); -} - -function anyLayerIsNone(values) { - var layers = intoLayers(values); - - for (var i = 0, l = layers.length; i < l; i++) { - if (layers[i].length == 1 && layers[i][0][1] == 'none') { return true; } - } - - return false; -} - -function intoLayers(values) { - var layers = []; - - for (var i = 0, layer = [], l = values.length; i < l; i++) { - var value = values[i]; - if (value[1] == Marker.COMMA) { - layers.push(layer); - layer = []; - } else { - layer.push(value); - } - } - - layers.push(layer); - return layers; -} - -function overrideProperties(properties, withMerging, compatibility, validator) { - var mayOverride, right, left, component; - var overriddenComponents; - var overriddenComponent; - var overridingComponent; - var overridable; - var i, j, k; - - propertyLoop: - for (i = properties.length - 1; i >= 0; i--) { - right = properties[i]; - - if (!isCompactable(right)) { continue; } - - if (right.block) { continue; } - - mayOverride = configuration[right.name].canOverride || sameValue; - - traverseLoop: - for (j = i - 1; j >= 0; j--) { - left = properties[j]; - - if (!isCompactable(left)) { continue; } - - if (left.block) { continue; } - - if (left.dynamic || right.dynamic) { continue; } - - if (left.unused || right.unused) { continue; } - - if (left.hack && !right.hack && !right.important || !left.hack && !left.important && right.hack) { continue; } - - if (left.important == right.important && left.hack[0] != right.hack[0]) { continue; } - - if (left.important == right.important - && (left.hack[0] != right.hack[0] || (left.hack[1] && left.hack[1] != right.hack[1]))) { continue; } - - if (hasInherit(right)) { continue; } - - if (noneOverrideHack(left, right)) { continue; } - - if (right.shorthand && isComponentOf(right, left)) { - // maybe `left` can be overridden by `right` which is a shorthand? - if (!right.important && left.important) { continue; } - - if (!sameVendorPrefixesIn([left], right.components)) { continue; } - - if (!anyValue(validator.isFunction, left) && overridingFunction(right, validator)) { continue; } - - if (!isMergeableShorthand(right)) { - left.unused = true; - continue; - } - - component = findComponentIn(right, left); - mayOverride = configuration[left.name].canOverride || sameValue; - if (everyValuesPair(mayOverride.bind(null, validator), left, component)) { - left.unused = true; - } - } else if (right.shorthand && overridesNonComponentShorthand(right, left)) { - // `right` is a shorthand while `left` can be overriden by it, think `border` and `border-top` - if (!right.important && left.important) { - continue; - } - - if (!sameVendorPrefixesIn([left], right.components)) { - continue; - } - - if (!anyValue(validator.isFunction, left) && overridingFunction(right, validator)) { - continue; - } - - overriddenComponents = left.shorthand - ? left.components - : [left]; - - for (k = overriddenComponents.length - 1; k >= 0; k--) { - overriddenComponent = overriddenComponents[k]; - overridingComponent = findComponentIn(right, overriddenComponent); - mayOverride = configuration[overriddenComponent.name].canOverride || sameValue; - - if (!everyValuesPair(mayOverride.bind(null, validator), left, overridingComponent)) { - continue traverseLoop; - } - } - - left.unused = true; - } else if (withMerging && left.shorthand && !right.shorthand && isComponentOf(left, right, true)) { - // maybe `right` can be pulled into `left` which is a shorthand? - if (right.important && !left.important) { continue; } - - if (!right.important && left.important) { - right.unused = true; - continue; - } - - // Pending more clever algorithm in #527 - if (moreSameShorthands(properties, i - 1, left.name)) { continue; } - - if (overridingFunction(left, validator)) { continue; } - - if (!isMergeableShorthand(left)) { continue; } - - if (hasUnset(left) || hasUnset(right)) { continue; } - - component = findComponentIn(left, right); - if (everyValuesPair(mayOverride.bind(null, validator), component, right)) { - var disabledBackgroundMerging = !compatibility.properties.backgroundClipMerging && component.name.indexOf('background-clip') > -1 - || !compatibility.properties.backgroundOriginMerging && component.name.indexOf('background-origin') > -1 - || !compatibility.properties.backgroundSizeMerging && component.name.indexOf('background-size') > -1; - var nonMergeableValue = configuration[right.name].nonMergeableValue === right.value[0][1]; - - if (disabledBackgroundMerging || nonMergeableValue) { continue; } - - if (!compatibility.properties.merging && wouldBreakCompatibility(left, validator)) { continue; } - - if (component.value[0][1] != right.value[0][1] && (hasInherit(left) || hasInherit(right))) { continue; } - - if (wouldResultInLongerValue(left, right)) { continue; } - - if (!left.multiplex && right.multiplex) { turnIntoMultiplex(left, multiplexSize(right)); } - - override(component, right); - left.dirty = true; - } - } else if (withMerging && left.shorthand && right.shorthand && left.name == right.name) { - // merge if all components can be merged - - if (!left.multiplex && right.multiplex) { continue; } - - if (!right.important && left.important) { - right.unused = true; - continue propertyLoop; - } - - if (right.important && !left.important) { - left.unused = true; - continue; - } - - if (!isMergeableShorthand(right)) { - left.unused = true; - continue; - } - - for (k = left.components.length - 1; k >= 0; k--) { - var leftComponent = left.components[k]; - var rightComponent = right.components[k]; - - mayOverride = configuration[leftComponent.name].canOverride || sameValue; - if (!everyValuesPair(mayOverride.bind(null, validator), leftComponent, rightComponent)) { - continue propertyLoop; - } - } - - overrideShorthand(left, right); - left.dirty = true; - } else if (withMerging && left.shorthand && right.shorthand && isComponentOf(left, right)) { - // border is a shorthand but any of its components is a shorthand too - - if (!left.important && right.important) { continue; } - - component = findComponentIn(left, right); - mayOverride = configuration[right.name].canOverride || sameValue; - if (!everyValuesPair(mayOverride.bind(null, validator), component, right)) { continue; } - - if (left.important && !right.important) { - right.unused = true; - continue; - } - - var rightRestored = configuration[right.name].restore(right, configuration); - if (rightRestored.length > 1) { continue; } - - component = findComponentIn(left, right); - override(component, right); - right.dirty = true; - } else if (left.name == right.name) { - // two non-shorthands should be merged based on understandability - overridable = true; - - if (right.shorthand) { - for (k = right.components.length - 1; k >= 0 && overridable; k--) { - overriddenComponent = left.components[k]; - overridingComponent = right.components[k]; - mayOverride = configuration[overridingComponent.name].canOverride || sameValue; - - overridable = everyValuesPair(mayOverride.bind(null, validator), overriddenComponent, overridingComponent); - } - } else { - mayOverride = configuration[right.name].canOverride || sameValue; - overridable = everyValuesPair(mayOverride.bind(null, validator), left, right); - } - - if (left.important && !right.important && overridable) { - right.unused = true; - continue; - } - - if (!left.important && right.important && overridable) { - left.unused = true; - continue; - } - - if (!overridable) { - continue; - } - - left.unused = true; - } - } - } -} - -module.exports = overrideProperties; - - -/***/ }), - -/***/ 188: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var configuration = __webpack_require__(6058); - -function overridesNonComponentShorthand(property1, property2) { - return property1.name in configuration - && 'overridesShorthands' in configuration[property1.name] - && configuration[property1.name].overridesShorthands.indexOf(property2.name) > -1; -} - -module.exports = overridesNonComponentShorthand; - - -/***/ }), - -/***/ 1621: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var configuration = __webpack_require__(6058); -var InvalidPropertyError = __webpack_require__(5942); - -function populateComponents(properties, validator, warnings) { - var component; - var j, m; - - for (var i = properties.length - 1; i >= 0; i--) { - var property = properties[i]; - var descriptor = configuration[property.name]; - - if (!property.dynamic && descriptor && descriptor.shorthand) { - if (onlyValueIsVariable(property, validator) || moreThanOneValueIsVariable(property, validator)) { - property.optimizable = false; - continue; - } - - property.shorthand = true; - property.dirty = true; - - try { - property.components = descriptor.breakUp(property, configuration, validator); - - if (descriptor.shorthandComponents) { - for (j = 0, m = property.components.length; j < m; j++) { - component = property.components[j]; - component.components = configuration[component.name].breakUp(component, configuration, validator); - } - } - } catch (e) { - if (e instanceof InvalidPropertyError) { - property.components = []; // this will set property.unused to true below - warnings.push(e.message); - } else { - throw e; - } - } - - if (property.components.length > 0) { - property.multiplex = property.components[0].multiplex; - } else { - property.unused = true; - } - } - } -} - -function onlyValueIsVariable(property, validator) { - return property.value.length == 1 && validator.isVariable(property.value[0][1]); -} - -function moreThanOneValueIsVariable(property, validator) { - return property.value.length > 1 - && property.value.filter( - function(value) { - return validator.isVariable(value[1]); - } - ).length > 1; -} - -module.exports = populateComponents; - - -/***/ }), - -/***/ 5472: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var isMergeable = __webpack_require__(4638); - -var optimizeProperties = __webpack_require__(7847); - -var cloneArray = __webpack_require__(3449); - -var Token = __webpack_require__(4633); - -var serializeBody = (__webpack_require__(3694).body); -var serializeRules = (__webpack_require__(3694).rules); - -function reduceNonAdjacent(tokens, context) { - var options = context.options; - var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses; - var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements; - var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging; - var candidates = {}; - var repeated = []; - - for (var i = tokens.length - 1; i >= 0; i--) { - var token = tokens[i]; - - if (token[0] != Token.RULE) { - continue; - } else if (token[2].length === 0) { - continue; - } - - var selectorAsString = serializeRules(token[1]); - var isComplexAndNotSpecial = token[1].length > 1 - && isMergeable(selectorAsString, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging); - var wrappedSelectors = wrappedSelectorsFrom(token[1]); - var selectors = isComplexAndNotSpecial - ? [selectorAsString].concat(wrappedSelectors) - : [selectorAsString]; - - for (var j = 0, m = selectors.length; j < m; j++) { - var selector = selectors[j]; - - if (!candidates[selector]) { candidates[selector] = []; } else { repeated.push(selector); } - - candidates[selector].push({ - where: i, - list: wrappedSelectors, - isPartial: isComplexAndNotSpecial && j > 0, - isComplex: isComplexAndNotSpecial && j === 0 - }); - } - } - - reduceSimpleNonAdjacentCases(tokens, repeated, candidates, options, context); - reduceComplexNonAdjacentCases(tokens, candidates, options, context); -} - -function wrappedSelectorsFrom(list) { - var wrapped = []; - - for (var i = 0; i < list.length; i++) { - wrapped.push([list[i][1]]); - } - - return wrapped; -} - -function reduceSimpleNonAdjacentCases(tokens, repeated, candidates, options, context) { - function filterOut(idx, bodies) { - return data[idx].isPartial && bodies.length === 0; - } - - function reduceBody(token, newBody, processedCount, tokenIdx) { - if (!data[processedCount - tokenIdx - 1].isPartial) { token[2] = newBody; } - } - - for (var i = 0, l = repeated.length; i < l; i++) { - var selector = repeated[i]; - var data = candidates[selector]; - - reduceSelector(tokens, data, { - filterOut: filterOut, - callback: reduceBody - }, options, context); - } -} - -function reduceComplexNonAdjacentCases(tokens, candidates, options, context) { - var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses; - var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements; - var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging; - var localContext = {}; - - function filterOut(idx) { - return localContext.data[idx].where < localContext.intoPosition; - } - - function collectReducedBodies(token, newBody, processedCount, tokenIdx) { - if (tokenIdx === 0) { localContext.reducedBodies.push(newBody); } - } - - allSelectors: - for (var complexSelector in candidates) { - var into = candidates[complexSelector]; - if (!into[0].isComplex) { continue; } - - var intoPosition = into[into.length - 1].where; - var intoToken = tokens[intoPosition]; - var reducedBodies = []; - - var selectors = isMergeable(complexSelector, mergeablePseudoClasses, mergeablePseudoElements, multiplePseudoMerging) - ? into[0].list - : [complexSelector]; - - localContext.intoPosition = intoPosition; - localContext.reducedBodies = reducedBodies; - - for (var j = 0, m = selectors.length; j < m; j++) { - var selector = selectors[j]; - var data = candidates[selector]; - - if (data.length < 2) { continue allSelectors; } - - localContext.data = data; - - reduceSelector(tokens, data, { - filterOut: filterOut, - callback: collectReducedBodies - }, options, context); - - if (serializeBody(reducedBodies[reducedBodies.length - 1]) != serializeBody(reducedBodies[0])) { - continue allSelectors; - } - } - - intoToken[2] = reducedBodies[0]; - } -} - -function reduceSelector(tokens, data, context, options, outerContext) { - var bodies = []; - var bodiesAsList = []; - var processedTokens = []; - - for (var j = data.length - 1; j >= 0; j--) { - if (context.filterOut(j, bodies)) { continue; } - - var where = data[j].where; - var token = tokens[where]; - var clonedBody = cloneArray(token[2]); - - bodies = bodies.concat(clonedBody); - bodiesAsList.push(clonedBody); - processedTokens.push(where); - } - - optimizeProperties(bodies, true, false, outerContext); - - var processedCount = processedTokens.length; - var propertyIdx = bodies.length - 1; - var tokenIdx = processedCount - 1; - - while (tokenIdx >= 0) { - if ((tokenIdx === 0 - || (bodies[propertyIdx] && bodiesAsList[tokenIdx].indexOf(bodies[propertyIdx]) > -1)) && propertyIdx > -1) { - propertyIdx--; - continue; - } - - var newBody = bodies.splice(propertyIdx + 1); - context.callback(tokens[processedTokens[tokenIdx]], newBody, processedCount, tokenIdx); - - tokenIdx--; - } -} - -module.exports = reduceNonAdjacent; - - -/***/ }), - -/***/ 1480: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Token = __webpack_require__(4633); - -var serializeAll = (__webpack_require__(3694).all); - -var FONT_FACE_SCOPE = '@font-face'; - -function removeDuplicateFontAtRules(tokens) { - var fontAtRules = []; - var token; - var key; - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - - if (token[0] != Token.AT_RULE_BLOCK && token[1][0][1] != FONT_FACE_SCOPE) { - continue; - } - - key = serializeAll([token]); - - if (fontAtRules.indexOf(key) > -1) { - token[2] = []; - } else { - fontAtRules.push(key); - } - } -} - -module.exports = removeDuplicateFontAtRules; - - -/***/ }), - -/***/ 6712: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Token = __webpack_require__(4633); - -var serializeAll = (__webpack_require__(3694).all); -var serializeRules = (__webpack_require__(3694).rules); - -function removeDuplicateMediaQueries(tokens) { - var candidates = {}; - var candidate; - var token; - var key; - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - if (token[0] != Token.NESTED_BLOCK) { - continue; - } - - key = serializeRules(token[1]) + '%' + serializeAll(token[2]); - candidate = candidates[key]; - - if (candidate) { - candidate[2] = []; - } - - candidates[key] = token; - } -} - -module.exports = removeDuplicateMediaQueries; - - -/***/ }), - -/***/ 5169: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Token = __webpack_require__(4633); - -var serializeBody = (__webpack_require__(3694).body); -var serializeRules = (__webpack_require__(3694).rules); - -function removeDuplicates(tokens) { - var matched = {}; - var moreThanOnce = []; - var id, token; - var body, bodies; - - for (var i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - if (token[0] != Token.RULE) { continue; } - - id = serializeRules(token[1]); - - if (matched[id] && matched[id].length == 1) { moreThanOnce.push(id); } else { matched[id] = matched[id] || []; } - - matched[id].push(i); - } - - for (i = 0, l = moreThanOnce.length; i < l; i++) { - id = moreThanOnce[i]; - bodies = []; - - for (var j = matched[id].length - 1; j >= 0; j--) { - token = tokens[matched[id][j]]; - body = serializeBody(token[2]); - - if (bodies.indexOf(body) > -1) { token[2] = []; } else { bodies.push(body); } - } - } -} - -module.exports = removeDuplicates; - - -/***/ }), - -/***/ 329: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var populateComponents = __webpack_require__(1621); - -var wrapForOptimizing = (__webpack_require__(3684).single); -var restoreFromOptimizing = __webpack_require__(2700); - -var Token = __webpack_require__(4633); - -var animationNameRegex = /^(-moz-|-o-|-webkit-)?animation-name$/; -var animationRegex = /^(-moz-|-o-|-webkit-)?animation$/; -var keyframeRegex = /^@(-moz-|-o-|-webkit-)?keyframes /; -var importantRegex = /\s{0,31}!important$/; -var optionalMatchingQuotesRegex = /^(['"]?)(.*)\1$/; - -function normalize(value) { - return value - .replace(optionalMatchingQuotesRegex, '$2') - .replace(importantRegex, ''); -} - -function removeUnusedAtRules(tokens, context) { - removeUnusedAtRule(tokens, matchCounterStyle, markCounterStylesAsUsed, context); - removeUnusedAtRule(tokens, matchFontFace, markFontFacesAsUsed, context); - removeUnusedAtRule(tokens, matchKeyframe, markKeyframesAsUsed, context); - removeUnusedAtRule(tokens, matchNamespace, markNamespacesAsUsed, context); -} - -function removeUnusedAtRule(tokens, matchCallback, markCallback, context) { - var atRules = {}; - var atRule; - var atRuleTokens; - var atRuleToken; - var zeroAt; - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - matchCallback(tokens[i], atRules); - } - - if (Object.keys(atRules).length === 0) { - return; - } - - markUsedAtRules(tokens, markCallback, atRules, context); - - for (atRule in atRules) { - atRuleTokens = atRules[atRule]; - - for (i = 0, l = atRuleTokens.length; i < l; i++) { - atRuleToken = atRuleTokens[i]; - zeroAt = atRuleToken[0] == Token.AT_RULE ? 1 : 2; - atRuleToken[zeroAt] = []; - } - } -} - -function markUsedAtRules(tokens, markCallback, atRules, context) { - var boundMarkCallback = markCallback(atRules); - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - switch (tokens[i][0]) { - case Token.RULE: - boundMarkCallback(tokens[i], context); - break; - case Token.NESTED_BLOCK: - markUsedAtRules(tokens[i][2], markCallback, atRules, context); - } - } -} - -function matchCounterStyle(token, atRules) { - var match; - - if (token[0] == Token.AT_RULE_BLOCK && token[1][0][1].indexOf('@counter-style') === 0) { - match = token[1][0][1].split(' ')[1]; - atRules[match] = atRules[match] || []; - atRules[match].push(token); - } -} - -function markCounterStylesAsUsed(atRules) { - return function(token, context) { - var property; - var wrappedProperty; - var i, l; - - for (i = 0, l = token[2].length; i < l; i++) { - property = token[2][i]; - - if (property[1][1] == 'list-style') { - wrappedProperty = wrapForOptimizing(property); - populateComponents([wrappedProperty], context.validator, context.warnings); - - if (wrappedProperty.components[0].value[0][1] in atRules) { - delete atRules[property[2][1]]; - } - - restoreFromOptimizing([wrappedProperty]); - } - - if (property[1][1] == 'list-style-type' && property[2][1] in atRules) { - delete atRules[property[2][1]]; - } - } - }; -} - -function matchFontFace(token, atRules) { - var property; - var match; - var i, l; - - if (token[0] == Token.AT_RULE_BLOCK && token[1][0][1] == '@font-face') { - for (i = 0, l = token[2].length; i < l; i++) { - property = token[2][i]; - - if (property[1][1] == 'font-family') { - match = normalize(property[2][1].toLowerCase()); - atRules[match] = atRules[match] || []; - atRules[match].push(token); - break; - } - } - } -} - -function markFontFacesAsUsed(atRules) { - return function(token, context) { - var property; - var wrappedProperty; - var component; - var normalizedMatch; - var i, l; - var j, m; - - for (i = 0, l = token[2].length; i < l; i++) { - property = token[2][i]; - - if (property[1][1] == 'font') { - wrappedProperty = wrapForOptimizing(property); - populateComponents([wrappedProperty], context.validator, context.warnings); - component = wrappedProperty.components[6]; - - for (j = 0, m = component.value.length; j < m; j++) { - normalizedMatch = normalize(component.value[j][1].toLowerCase()); - - if (normalizedMatch in atRules) { - delete atRules[normalizedMatch]; - } - } - - restoreFromOptimizing([wrappedProperty]); - } - - if (property[1][1] == 'font-family') { - for (j = 2, m = property.length; j < m; j++) { - normalizedMatch = normalize(property[j][1].toLowerCase()); - - if (normalizedMatch in atRules) { - delete atRules[normalizedMatch]; - } - } - } - } - }; -} - -function matchKeyframe(token, atRules) { - var match; - - if (token[0] == Token.NESTED_BLOCK && keyframeRegex.test(token[1][0][1])) { - match = token[1][0][1].split(' ')[1]; - atRules[match] = atRules[match] || []; - atRules[match].push(token); - } -} - -function markKeyframesAsUsed(atRules) { - return function(token, context) { - var property; - var wrappedProperty; - var component; - var i, l; - var j, m; - - for (i = 0, l = token[2].length; i < l; i++) { - property = token[2][i]; - - if (animationRegex.test(property[1][1])) { - wrappedProperty = wrapForOptimizing(property); - populateComponents([wrappedProperty], context.validator, context.warnings); - component = wrappedProperty.components[7]; - - for (j = 0, m = component.value.length; j < m; j++) { - if (component.value[j][1] in atRules) { - delete atRules[component.value[j][1]]; - } - } - - restoreFromOptimizing([wrappedProperty]); - } - - if (animationNameRegex.test(property[1][1])) { - for (j = 2, m = property.length; j < m; j++) { - if (property[j][1] in atRules) { - delete atRules[property[j][1]]; - } - } - } - } - }; -} - -function matchNamespace(token, atRules) { - var match; - - if (token[0] == Token.AT_RULE && token[1].indexOf('@namespace') === 0) { - match = token[1].split(' ')[1]; - atRules[match] = atRules[match] || []; - atRules[match].push(token); - } -} - -function markNamespacesAsUsed(atRules) { - var namespaceRegex = new RegExp(Object.keys(atRules).join('\\||') + '\\|', 'g'); - - return function(token) { - var match; - var scope; - var normalizedMatch; - var i, l; - var j, m; - - for (i = 0, l = token[1].length; i < l; i++) { - scope = token[1][i]; - match = scope[1].match(namespaceRegex); - - for (j = 0, m = match.length; j < m; j++) { - normalizedMatch = match[j].substring(0, match[j].length - 1); - - if (normalizedMatch in atRules) { - delete atRules[normalizedMatch]; - } - } - } - }; -} - -module.exports = removeUnusedAtRules; - - -/***/ }), - -/***/ 7633: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// TODO: it'd be great to merge it with the other canReorder functionality - -var rulesOverlap = __webpack_require__(4250); -var specificitiesOverlap = __webpack_require__(8868); - -var FLEX_PROPERTIES = /align-items|box-align|box-pack|flex|justify/; -var BORDER_PROPERTIES = /^border-(top|right|bottom|left|color|style|width|radius)/; - -function canReorder(left, right, cache) { - for (var i = right.length - 1; i >= 0; i--) { - for (var j = left.length - 1; j >= 0; j--) { - if (!canReorderSingle(left[j], right[i], cache)) { return false; } - } - } - - return true; -} - -function canReorderSingle(left, right, cache) { - var leftName = left[0]; - var leftValue = left[1]; - var leftNameRoot = left[2]; - var leftSelector = left[5]; - var leftInSpecificSelector = left[6]; - var rightName = right[0]; - var rightValue = right[1]; - var rightNameRoot = right[2]; - var rightSelector = right[5]; - var rightInSpecificSelector = right[6]; - - if (leftName == 'font' && rightName == 'line-height' || rightName == 'font' && leftName == 'line-height') { return false; } - if (FLEX_PROPERTIES.test(leftName) && FLEX_PROPERTIES.test(rightName)) { return false; } - if (leftNameRoot == rightNameRoot - && unprefixed(leftName) == unprefixed(rightName) - && (vendorPrefixed(leftName) ^ vendorPrefixed(rightName))) { return false; } - if (leftNameRoot == 'border' && BORDER_PROPERTIES.test(rightNameRoot) && (leftName == 'border' || leftName == rightNameRoot || (leftValue != rightValue && sameBorderComponent(leftName, rightName)))) { return false; } - if (rightNameRoot == 'border' && BORDER_PROPERTIES.test(leftNameRoot) && (rightName == 'border' || rightName == leftNameRoot || (leftValue != rightValue && sameBorderComponent(leftName, rightName)))) { return false; } - if (leftNameRoot == 'border' && rightNameRoot == 'border' && leftName != rightName && (isSideBorder(leftName) && isStyleBorder(rightName) || isStyleBorder(leftName) && isSideBorder(rightName))) { return false; } - if (leftNameRoot != rightNameRoot) { return true; } - if (leftName == rightName - && leftNameRoot == rightNameRoot - && (leftValue == rightValue || withDifferentVendorPrefix(leftValue, rightValue))) { return true; } - if (leftName != rightName - && leftNameRoot == rightNameRoot - && leftName != leftNameRoot - && rightName != rightNameRoot) { return true; } - if (leftName != rightName - && leftNameRoot == rightNameRoot - && leftValue == rightValue) { return true; } - if (rightInSpecificSelector - && leftInSpecificSelector - && !inheritable(leftNameRoot) - && !inheritable(rightNameRoot) - && !rulesOverlap(rightSelector, leftSelector, false)) { return true; } - if (!specificitiesOverlap(leftSelector, rightSelector, cache)) { return true; } - - return false; -} - -function vendorPrefixed(name) { - return /^-(?:moz|webkit|ms|o)-/.test(name); -} - -function unprefixed(name) { - return name.replace(/^-(?:moz|webkit|ms|o)-/, ''); -} - -function sameBorderComponent(name1, name2) { - return name1.split('-').pop() == name2.split('-').pop(); -} - -function isSideBorder(name) { - return name == 'border-top' || name == 'border-right' || name == 'border-bottom' || name == 'border-left'; -} - -function isStyleBorder(name) { - return name == 'border-color' || name == 'border-style' || name == 'border-width'; -} - -function withDifferentVendorPrefix(value1, value2) { - return vendorPrefixed(value1) && vendorPrefixed(value2) && value1.split('-')[1] != value2.split('-')[2]; -} - -function inheritable(name) { - // According to http://www.w3.org/TR/CSS21/propidx.html - // Others will be catched by other, preceeding rules - return name == 'font' || name == 'line-height' || name == 'list-style'; -} - -module.exports = { - canReorder: canReorder, - canReorderSingle: canReorderSingle -}; - - -/***/ }), - -/***/ 733: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var configuration = __webpack_require__(6058); - -function restoreWithComponents(property) { - var descriptor = configuration[property.name]; - - if (descriptor && descriptor.shorthand) { - return descriptor.restore(property, configuration); - } - return property.value; -} - -module.exports = restoreWithComponents; - - -/***/ }), - -/***/ 3002: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var canReorderSingle = (__webpack_require__(7633).canReorderSingle); -var extractProperties = __webpack_require__(5878); -var isMergeable = __webpack_require__(4638); -var tidyRuleDuplicates = __webpack_require__(6770); - -var Token = __webpack_require__(4633); - -var cloneArray = __webpack_require__(3449); - -var serializeBody = (__webpack_require__(3694).body); -var serializeRules = (__webpack_require__(3694).rules); - -function naturalSorter(a, b) { - return a > b ? 1 : -1; -} - -function cloneAndMergeSelectors(propertyA, propertyB) { - var cloned = cloneArray(propertyA); - cloned[5] = cloned[5].concat(propertyB[5]); - - return cloned; -} - -function restructure(tokens, context) { - var options = context.options; - var mergeablePseudoClasses = options.compatibility.selectors.mergeablePseudoClasses; - var mergeablePseudoElements = options.compatibility.selectors.mergeablePseudoElements; - var mergeLimit = options.compatibility.selectors.mergeLimit; - var multiplePseudoMerging = options.compatibility.selectors.multiplePseudoMerging; - var specificityCache = context.cache.specificity; - var movableTokens = {}; - var movedProperties = []; - var multiPropertyMoveCache = {}; - var movedToBeDropped = []; - var maxCombinationsLevel = 2; - var ID_JOIN_CHARACTER = '%'; - - function sendToMultiPropertyMoveCache(position, movedProperty, allFits) { - for (var i = allFits.length - 1; i >= 0; i--) { - var fit = allFits[i][0]; - var id = addToCache(movedProperty, fit); - - if (multiPropertyMoveCache[id].length > 1 && processMultiPropertyMove(position, multiPropertyMoveCache[id])) { - removeAllMatchingFromCache(id); - break; - } - } - } - - function addToCache(movedProperty, fit) { - var id = cacheId(fit); - multiPropertyMoveCache[id] = multiPropertyMoveCache[id] || []; - multiPropertyMoveCache[id].push([movedProperty, fit]); - return id; - } - - function removeAllMatchingFromCache(matchId) { - var matchSelectors = matchId.split(ID_JOIN_CHARACTER); - var forRemoval = []; - var i; - - for (var id in multiPropertyMoveCache) { - var selectors = id.split(ID_JOIN_CHARACTER); - for (i = selectors.length - 1; i >= 0; i--) { - if (matchSelectors.indexOf(selectors[i]) > -1) { - forRemoval.push(id); - break; - } - } - } - - for (i = forRemoval.length - 1; i >= 0; i--) { - delete multiPropertyMoveCache[forRemoval[i]]; - } - } - - function cacheId(cachedTokens) { - var id = []; - for (var i = 0, l = cachedTokens.length; i < l; i++) { - id.push(serializeRules(cachedTokens[i][1])); - } - return id.join(ID_JOIN_CHARACTER); - } - - function tokensToMerge(sourceTokens) { - var uniqueTokensWithBody = []; - var mergeableTokens = []; - - for (var i = sourceTokens.length - 1; i >= 0; i--) { - if (!isMergeable( - serializeRules(sourceTokens[i][1]), - mergeablePseudoClasses, - mergeablePseudoElements, - multiplePseudoMerging - )) { - continue; - } - - mergeableTokens.unshift(sourceTokens[i]); - if (sourceTokens[i][2].length > 0 - && uniqueTokensWithBody.indexOf(sourceTokens[i]) == -1) { - uniqueTokensWithBody.push(sourceTokens[i]); - } - } - - return uniqueTokensWithBody.length > 1 - ? mergeableTokens - : []; - } - - function shortenIfPossible(position, movedProperty) { - var name = movedProperty[0]; - var value = movedProperty[1]; - var key = movedProperty[4]; - var valueSize = name.length + value.length + 1; - var allSelectors = []; - var qualifiedTokens = []; - - var mergeableTokens = tokensToMerge(movableTokens[key]); - if (mergeableTokens.length < 2) { return; } - - var allFits = findAllFits(mergeableTokens, valueSize, 1); - var bestFit = allFits[0]; - if (bestFit[1] > 0) { return sendToMultiPropertyMoveCache(position, movedProperty, allFits); } - - for (var i = bestFit[0].length - 1; i >= 0; i--) { - allSelectors = bestFit[0][i][1].concat(allSelectors); - qualifiedTokens.unshift(bestFit[0][i]); - } - - allSelectors = tidyRuleDuplicates(allSelectors); - dropAsNewTokenAt(position, [movedProperty], allSelectors, qualifiedTokens); - } - - function fitSorter(fit1, fit2) { - return fit1[1] > fit2[1] ? 1 : (fit1[1] == fit2[1] ? 0 : -1); - } - - function findAllFits(mergeableTokens, propertySize, propertiesCount) { - var combinations = allCombinations(mergeableTokens, propertySize, propertiesCount, maxCombinationsLevel - 1); - return combinations.sort(fitSorter); - } - - function allCombinations(tokensVariant, propertySize, propertiesCount, level) { - var differenceVariants = [[tokensVariant, sizeDifference(tokensVariant, propertySize, propertiesCount)]]; - if (tokensVariant.length > 2 && level > 0) { - for (var i = tokensVariant.length - 1; i >= 0; i--) { - var subVariant = Array.prototype.slice.call(tokensVariant, 0); - subVariant.splice(i, 1); - differenceVariants = differenceVariants.concat( - allCombinations(subVariant, propertySize, propertiesCount, level - 1) - ); - } - } - - return differenceVariants; - } - - function sizeDifference(tokensVariant, propertySize, propertiesCount) { - var allSelectorsSize = 0; - for (var i = tokensVariant.length - 1; i >= 0; i--) { - allSelectorsSize += tokensVariant[i][2].length > propertiesCount - ? serializeRules(tokensVariant[i][1]).length - : -1; - } - return allSelectorsSize - (tokensVariant.length - 1) * propertySize + 1; - } - - function dropAsNewTokenAt(position, properties, allSelectors, mergeableTokens) { - var i, j, k, m; - var allProperties = []; - - for (i = mergeableTokens.length - 1; i >= 0; i--) { - var mergeableToken = mergeableTokens[i]; - - for (j = mergeableToken[2].length - 1; j >= 0; j--) { - var mergeableProperty = mergeableToken[2][j]; - - for (k = 0, m = properties.length; k < m; k++) { - var property = properties[k]; - - var mergeablePropertyName = mergeableProperty[1][1]; - var propertyName = property[0]; - var propertyBody = property[4]; - if (mergeablePropertyName == propertyName && serializeBody([mergeableProperty]) == propertyBody) { - mergeableToken[2].splice(j, 1); - break; - } - } - } - } - - for (i = properties.length - 1; i >= 0; i--) { - allProperties.unshift(properties[i][3]); - } - - var newToken = [Token.RULE, allSelectors, allProperties]; - tokens.splice(position, 0, newToken); - } - - function dropPropertiesAt(position, movedProperty) { - var key = movedProperty[4]; - var toMove = movableTokens[key]; - - if (toMove && toMove.length > 1) { - if (!shortenMultiMovesIfPossible(position, movedProperty)) { shortenIfPossible(position, movedProperty); } - } - } - - function shortenMultiMovesIfPossible(position, movedProperty) { - var candidates = []; - var propertiesAndMergableTokens = []; - var key = movedProperty[4]; - var j, k; - - var mergeableTokens = tokensToMerge(movableTokens[key]); - if (mergeableTokens.length < 2) { return; } - - movableLoop: - for (var value in movableTokens) { - var tokensList = movableTokens[value]; - - for (j = mergeableTokens.length - 1; j >= 0; j--) { - if (tokensList.indexOf(mergeableTokens[j]) == -1) { continue movableLoop; } - } - - candidates.push(value); - } - - if (candidates.length < 2) { return false; } - - for (j = candidates.length - 1; j >= 0; j--) { - for (k = movedProperties.length - 1; k >= 0; k--) { - if (movedProperties[k][4] == candidates[j]) { - propertiesAndMergableTokens.unshift([movedProperties[k], mergeableTokens]); - break; - } - } - } - - return processMultiPropertyMove(position, propertiesAndMergableTokens); - } - - function processMultiPropertyMove(position, propertiesAndMergableTokens) { - var valueSize = 0; - var properties = []; - var property; - - for (var i = propertiesAndMergableTokens.length - 1; i >= 0; i--) { - property = propertiesAndMergableTokens[i][0]; - var fullValue = property[4]; - valueSize += fullValue.length + (i > 0 ? 1 : 0); - - properties.push(property); - } - - var mergeableTokens = propertiesAndMergableTokens[0][1]; - var bestFit = findAllFits(mergeableTokens, valueSize, properties.length)[0]; - if (bestFit[1] > 0) { return false; } - - var allSelectors = []; - var qualifiedTokens = []; - for (i = bestFit[0].length - 1; i >= 0; i--) { - allSelectors = bestFit[0][i][1].concat(allSelectors); - qualifiedTokens.unshift(bestFit[0][i]); - } - - allSelectors = tidyRuleDuplicates(allSelectors); - dropAsNewTokenAt(position, properties, allSelectors, qualifiedTokens); - - for (i = properties.length - 1; i >= 0; i--) { - property = properties[i]; - var index = movedProperties.indexOf(property); - - delete movableTokens[property[4]]; - - if (index > -1 && movedToBeDropped.indexOf(index) == -1) { movedToBeDropped.push(index); } - } - - return true; - } - - function boundToAnotherPropertyInCurrrentToken(property, movedProperty, token) { - var propertyName = property[0]; - var movedPropertyName = movedProperty[0]; - if (propertyName != movedPropertyName) { return false; } - - var key = movedProperty[4]; - var toMove = movableTokens[key]; - return toMove && toMove.indexOf(token) > -1; - } - - for (var i = tokens.length - 1; i >= 0; i--) { - var token = tokens[i]; - var isRule; - var j, k, m; - var samePropertyAt; - - if (token[0] == Token.RULE) { - isRule = true; - } else if (token[0] == Token.NESTED_BLOCK) { - isRule = false; - } else { - continue; - } - - // We cache movedProperties.length as it may change in the loop - var movedCount = movedProperties.length; - - var properties = extractProperties(token); - movedToBeDropped = []; - - var unmovableInCurrentToken = []; - for (j = properties.length - 1; j >= 0; j--) { - for (k = j - 1; k >= 0; k--) { - if (!canReorderSingle(properties[j], properties[k], specificityCache)) { - unmovableInCurrentToken.push(j); - break; - } - } - } - - for (j = properties.length - 1; j >= 0; j--) { - var property = properties[j]; - var movedSameProperty = false; - - for (k = 0; k < movedCount; k++) { - var movedProperty = movedProperties[k]; - - if (movedToBeDropped.indexOf(k) == -1 && ( - !canReorderSingle(property, movedProperty, specificityCache) - && !boundToAnotherPropertyInCurrrentToken(property, movedProperty, token) - || movableTokens[movedProperty[4]] && movableTokens[movedProperty[4]].length === mergeLimit) - ) { - dropPropertiesAt(i + 1, movedProperty); - - if (movedToBeDropped.indexOf(k) == -1) { - movedToBeDropped.push(k); - delete movableTokens[movedProperty[4]]; - } - } - - if (!movedSameProperty) { - movedSameProperty = property[0] == movedProperty[0] && property[1] == movedProperty[1]; - - if (movedSameProperty) { - samePropertyAt = k; - } - } - } - - if (!isRule || unmovableInCurrentToken.indexOf(j) > -1) { continue; } - - var key = property[4]; - - if (movedSameProperty && movedProperties[samePropertyAt][5].length + property[5].length > mergeLimit) { - dropPropertiesAt(i + 1, movedProperties[samePropertyAt]); - movedProperties.splice(samePropertyAt, 1); - movableTokens[key] = [token]; - movedSameProperty = false; - } else { - movableTokens[key] = movableTokens[key] || []; - movableTokens[key].push(token); - } - - if (movedSameProperty) { - movedProperties[samePropertyAt] = cloneAndMergeSelectors(movedProperties[samePropertyAt], property); - } else { - movedProperties.push(property); - } - } - - movedToBeDropped = movedToBeDropped.sort(naturalSorter); - for (j = 0, m = movedToBeDropped.length; j < m; j++) { - var dropAt = movedToBeDropped[j] - j; - movedProperties.splice(dropAt, 1); - } - } - - var position = tokens[0] && tokens[0][0] == Token.AT_RULE && tokens[0][1].indexOf('@charset') === 0 ? 1 : 0; - for (; position < tokens.length - 1; position++) { - var isImportRule = tokens[position][0] === Token.AT_RULE && tokens[position][1].indexOf('@import') === 0; - var isComment = tokens[position][0] === Token.COMMENT; - if (!(isImportRule || isComment)) { break; } - } - - for (i = 0; i < movedProperties.length; i++) { - dropPropertiesAt(position, movedProperties[i]); - } -} - -module.exports = restructure; - - -/***/ }), - -/***/ 4250: -/***/ ((module) => { - -var MODIFIER_PATTERN = /--.+$/; - -function rulesOverlap(rule1, rule2, bemMode) { - var scope1; - var scope2; - var i, l; - var j, m; - - for (i = 0, l = rule1.length; i < l; i++) { - scope1 = rule1[i][1]; - - for (j = 0, m = rule2.length; j < m; j++) { - scope2 = rule2[j][1]; - - if (scope1 == scope2) { - return true; - } - - if (bemMode && withoutModifiers(scope1) == withoutModifiers(scope2)) { - return true; - } - } - } - - return false; -} - -function withoutModifiers(scope) { - return scope.replace(MODIFIER_PATTERN, ''); -} - -module.exports = rulesOverlap; - - -/***/ }), - -/***/ 8868: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var specificity = __webpack_require__(6565); - -function specificitiesOverlap(selector1, selector2, cache) { - var specificity1; - var specificity2; - var i, l; - var j, m; - - for (i = 0, l = selector1.length; i < l; i++) { - specificity1 = findSpecificity(selector1[i][1], cache); - - for (j = 0, m = selector2.length; j < m; j++) { - specificity2 = findSpecificity(selector2[j][1], cache); - - if (specificity1[0] === specificity2[0] - && specificity1[1] === specificity2[1] - && specificity1[2] === specificity2[2]) { - return true; - } - } - } - - return false; -} - -function findSpecificity(selector, cache) { - var value; - - if (!(selector in cache)) { - cache[selector] = value = specificity(selector); - } - - return value || cache[selector]; -} - -module.exports = specificitiesOverlap; - - -/***/ }), - -/***/ 6565: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Marker = __webpack_require__(3820); - -var Selector = { - ADJACENT_SIBLING: '+', - DESCENDANT: '>', - DOT: '.', - HASH: '#', - NON_ADJACENT_SIBLING: '~', - PSEUDO: ':' -}; - -var LETTER_PATTERN = /[a-zA-Z]/; -var NOT_PREFIX = ':not('; -var SEPARATOR_PATTERN = /[\s,(>~+]/; - -function specificity(selector) { - var result = [0, 0, 0]; - var character; - var isEscaped; - var isSingleQuoted; - var isDoubleQuoted; - var roundBracketLevel = 0; - var couldIntroduceNewTypeSelector; - var withinNotPseudoClass = false; - var wasPseudoClass = false; - var i, l; - - for (i = 0, l = selector.length; i < l; i++) { - character = selector[i]; - - if (isEscaped) { - // noop - } else if (character == Marker.SINGLE_QUOTE && !isDoubleQuoted && !isSingleQuoted) { - isSingleQuoted = true; - } else if (character == Marker.SINGLE_QUOTE && !isDoubleQuoted && isSingleQuoted) { - isSingleQuoted = false; - } else if (character == Marker.DOUBLE_QUOTE && !isDoubleQuoted && !isSingleQuoted) { - isDoubleQuoted = true; - } else if (character == Marker.DOUBLE_QUOTE && isDoubleQuoted && !isSingleQuoted) { - isDoubleQuoted = false; - } else if (isSingleQuoted || isDoubleQuoted) { - continue; - } else if (roundBracketLevel > 0 && !withinNotPseudoClass) { - // noop - } else if (character == Marker.OPEN_ROUND_BRACKET) { - roundBracketLevel++; - } else if (character == Marker.CLOSE_ROUND_BRACKET && roundBracketLevel == 1) { - roundBracketLevel--; - withinNotPseudoClass = false; - } else if (character == Marker.CLOSE_ROUND_BRACKET) { - roundBracketLevel--; - } else if (character == Selector.HASH) { - result[0]++; - } else if (character == Selector.DOT || character == Marker.OPEN_SQUARE_BRACKET) { - result[1]++; - } else if (character == Selector.PSEUDO && !wasPseudoClass && !isNotPseudoClass(selector, i)) { - result[1]++; - withinNotPseudoClass = false; - } else if (character == Selector.PSEUDO) { - withinNotPseudoClass = true; - } else if ((i === 0 || couldIntroduceNewTypeSelector) && LETTER_PATTERN.test(character)) { - result[2]++; - } - - isEscaped = character == Marker.BACK_SLASH; - wasPseudoClass = character == Selector.PSEUDO; - couldIntroduceNewTypeSelector = !isEscaped && SEPARATOR_PATTERN.test(character); - } - - return result; -} - -function isNotPseudoClass(selector, index) { - return selector.indexOf(NOT_PREFIX, index) === index; -} - -module.exports = specificity; - - -/***/ }), - -/***/ 6770: -/***/ ((module) => { - -function ruleSorter(s1, s2) { - return s1[1] > s2[1] ? 1 : -1; -} - -function tidyRuleDuplicates(rules) { - var list = []; - var repeated = []; - - for (var i = 0, l = rules.length; i < l; i++) { - var rule = rules[i]; - - if (repeated.indexOf(rule[1]) == -1) { - repeated.push(rule[1]); - list.push(rule); - } - } - - return list.sort(ruleSorter); -} - -module.exports = tidyRuleDuplicates; - - -/***/ }), - -/***/ 556: -/***/ ((module) => { - -function removeUnused(properties) { - for (var i = properties.length - 1; i >= 0; i--) { - var property = properties[i]; - - if (property.unused) { - property.all.splice(property.position, 1); - } - } -} - -module.exports = removeUnused; - - -/***/ }), - -/***/ 2700: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Hack = __webpack_require__(2878); - -var Marker = __webpack_require__(3820); - -var ASTERISK_HACK = '*'; -var BACKSLASH_HACK = '\\'; -var IMPORTANT_TOKEN = '!important'; -var UNDERSCORE_HACK = '_'; -var BANG_HACK = '!ie'; - -function restoreFromOptimizing(properties, restoreCallback) { - var property; - var restored; - var current; - var i; - - for (i = properties.length - 1; i >= 0; i--) { - property = properties[i]; - - if (property.dynamic && property.important) { - restoreImportant(property); - continue; - } - - if (property.dynamic) { - continue; - } - - if (property.unused) { - continue; - } - - if (!property.dirty && !property.important && !property.hack) { - continue; - } - - if (property.optimizable && restoreCallback) { - restored = restoreCallback(property); - property.value = restored; - } else { - restored = property.value; - } - - if (property.important) { - restoreImportant(property); - } - - if (property.hack) { - restoreHack(property); - } - - if ('all' in property) { - current = property.all[property.position]; - current[1][1] = property.name; - - current.splice(2, current.length - 1); - Array.prototype.push.apply(current, restored); - } - } -} - -function restoreImportant(property) { - property.value[property.value.length - 1][1] += IMPORTANT_TOKEN; -} - -function restoreHack(property) { - if (property.hack[0] == Hack.UNDERSCORE) { - property.name = UNDERSCORE_HACK + property.name; - } else if (property.hack[0] == Hack.ASTERISK) { - property.name = ASTERISK_HACK + property.name; - } else if (property.hack[0] == Hack.BACKSLASH) { - property.value[property.value.length - 1][1] += BACKSLASH_HACK + property.hack[1]; - } else if (property.hack[0] == Hack.BANG) { - property.value[property.value.length - 1][1] += Marker.SPACE + BANG_HACK; - } -} - -module.exports = restoreFromOptimizing; - - -/***/ }), - -/***/ 7263: -/***/ ((module) => { - -var functionNoVendorRegexStr = '[A-Z]+(\\-|[A-Z]|[0-9])+\\(.*?\\)'; -var functionVendorRegexStr = '\\-(\\-|[A-Z]|[0-9])+\\(.*?\\)'; -var variableRegexStr = 'var\\(\\-\\-[^\\)]+\\)'; -var functionAnyRegexStr = '(' + variableRegexStr + '|' + functionNoVendorRegexStr + '|' + functionVendorRegexStr + ')'; - -var calcRegex = new RegExp('^(\\-moz\\-|\\-webkit\\-)?calc\\([^\\)]+\\)$', 'i'); -var decimalRegex = /[0-9]/; -var functionAnyRegex = new RegExp('^' + functionAnyRegexStr + '$', 'i'); -var hexAlphaColorRegex = /^#(?:[0-9a-f]{4}|[0-9a-f]{8})$/i; -// eslint-disable-next-line max-len -var hslColorRegex = /^hsl\(\s{0,31}[-.]?\d+\s{0,31},\s{0,31}\d*\.?\d+%\s{0,31},\s{0,31}\d*\.?\d+%\s{0,31}\)|hsla\(\s{0,31}[-.]?\d+\s{0,31},\s{0,31}\d*\.?\d+%\s{0,31},\s{0,31}\d*\.?\d+%\s{0,31},\s{0,31}\.?\d+\s{0,31}\)$/; -// eslint-disable-next-line max-len -var hslColorWithSpacesRegex = /^hsl\(\s{0,31}[-.]?\d+(deg)?\s{1,31}\d*\.?\d+%\s{1,31}\d*\.?\d+%\s{0,31}\)|hsla\(\s{0,31}[-.]?\d+(deg)?\s{1,31}\d*\.?\d+%\s{1,31}\d*\.?\d+%\s{1,31}\/\s{1,31}\d*\.?\d+%?\s{0,31}\)$/; -var identifierRegex = /^(-[a-z0-9_][a-z0-9\-_]*|[a-z_][a-z0-9\-_]*)$/i; -var namedEntityRegex = /^[a-z]+$/i; -var prefixRegex = /^-([a-z0-9]|-)*$/i; -var quotedTextRegex = /^("[^"]*"|'[^']*')$/i; -// eslint-disable-next-line max-len -var rgbColorRegex = /^rgb\(\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31}\)|rgba\(\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[\d]{1,3}\s{0,31},\s{0,31}[.\d]+\s{0,31}\)$/i; -// eslint-disable-next-line max-len -var rgbColorWithSpacesRegex = /^rgb\(\s{0,31}[\d]{1,3}\s{1,31}[\d]{1,3}\s{1,31}[\d]{1,3}\s{0,31}\)|rgba\(\s{0,31}[\d]{1,3}\s{1,31}[\d]{1,3}\s{1,31}[\d]{1,3}\s{1,31}\/\s{1,31}[\d]*\.?[.\d]+%?\s{0,31}\)$/i; -var timeUnitPattern = /\d+(s|ms)/; -var timingFunctionRegex = /^(cubic-bezier|steps)\([^)]+\)$/; -var validTimeUnits = ['ms', 's']; -var urlRegex = /^url\([\s\S]+\)$/i; -var variableRegex = new RegExp('^' + variableRegexStr + '$', 'i'); - -var eightValueColorRegex = /^#[0-9a-f]{8}$/i; -var fourValueColorRegex = /^#[0-9a-f]{4}$/i; -var sixValueColorRegex = /^#[0-9a-f]{6}$/i; -var threeValueColorRegex = /^#[0-9a-f]{3}$/i; - -var DECIMAL_DOT = '.'; -var MINUS_SIGN = '-'; -var PLUS_SIGN = '+'; - -var Keywords = { - '^': [ - 'inherit', - 'initial', - 'unset' - ], - '*-style': [ - 'auto', - 'dashed', - 'dotted', - 'double', - 'groove', - 'hidden', - 'inset', - 'none', - 'outset', - 'ridge', - 'solid' - ], - '*-timing-function': [ - 'ease', - 'ease-in', - 'ease-in-out', - 'ease-out', - 'linear', - 'step-end', - 'step-start' - ], - 'animation-direction': [ - 'alternate', - 'alternate-reverse', - 'normal', - 'reverse' - ], - 'animation-fill-mode': [ - 'backwards', - 'both', - 'forwards', - 'none' - ], - 'animation-iteration-count': [ - 'infinite' - ], - 'animation-name': [ - 'none' - ], - 'animation-play-state': [ - 'paused', - 'running' - ], - 'background-attachment': [ - 'fixed', - 'inherit', - 'local', - 'scroll' - ], - 'background-clip': [ - 'border-box', - 'content-box', - 'inherit', - 'padding-box', - 'text' - ], - 'background-origin': [ - 'border-box', - 'content-box', - 'inherit', - 'padding-box' - ], - 'background-position': [ - 'bottom', - 'center', - 'left', - 'right', - 'top' - ], - 'background-repeat': [ - 'no-repeat', - 'inherit', - 'repeat', - 'repeat-x', - 'repeat-y', - 'round', - 'space' - ], - 'background-size': [ - 'auto', - 'cover', - 'contain' - ], - 'border-collapse': [ - 'collapse', - 'inherit', - 'separate' - ], - bottom: [ - 'auto' - ], - clear: [ - 'both', - 'left', - 'none', - 'right' - ], - color: [ - 'transparent' - ], - cursor: [ - 'all-scroll', - 'auto', - 'col-resize', - 'crosshair', - 'default', - 'e-resize', - 'help', - 'move', - 'n-resize', - 'ne-resize', - 'no-drop', - 'not-allowed', - 'nw-resize', - 'pointer', - 'progress', - 'row-resize', - 's-resize', - 'se-resize', - 'sw-resize', - 'text', - 'vertical-text', - 'w-resize', - 'wait' - ], - display: [ - 'block', - 'inline', - 'inline-block', - 'inline-table', - 'list-item', - 'none', - 'table', - 'table-caption', - 'table-cell', - 'table-column', - 'table-column-group', - 'table-footer-group', - 'table-header-group', - 'table-row', - 'table-row-group' - ], - float: [ - 'left', - 'none', - 'right' - ], - left: [ - 'auto' - ], - font: [ - 'caption', - 'icon', - 'menu', - 'message-box', - 'small-caption', - 'status-bar', - 'unset' - ], - 'font-size': [ - 'large', - 'larger', - 'medium', - 'small', - 'smaller', - 'x-large', - 'x-small', - 'xx-large', - 'xx-small' - ], - 'font-stretch': [ - 'condensed', - 'expanded', - 'extra-condensed', - 'extra-expanded', - 'normal', - 'semi-condensed', - 'semi-expanded', - 'ultra-condensed', - 'ultra-expanded' - ], - 'font-style': [ - 'italic', - 'normal', - 'oblique' - ], - 'font-variant': [ - 'normal', - 'small-caps' - ], - 'font-weight': [ - '100', - '200', - '300', - '400', - '500', - '600', - '700', - '800', - '900', - 'bold', - 'bolder', - 'lighter', - 'normal' - ], - 'line-height': [ - 'normal' - ], - 'list-style-position': [ - 'inside', - 'outside' - ], - 'list-style-type': [ - 'armenian', - 'circle', - 'decimal', - 'decimal-leading-zero', - 'disc', - 'decimal|disc', // this is the default value of list-style-type, see comment in configuration.js - 'georgian', - 'lower-alpha', - 'lower-greek', - 'lower-latin', - 'lower-roman', - 'none', - 'square', - 'upper-alpha', - 'upper-latin', - 'upper-roman' - ], - overflow: [ - 'auto', - 'hidden', - 'scroll', - 'visible' - ], - position: [ - 'absolute', - 'fixed', - 'relative', - 'static' - ], - right: [ - 'auto' - ], - 'text-align': [ - 'center', - 'justify', - 'left', - 'left|right', // this is the default value of list-style-type, see comment in configuration.js - 'right' - ], - 'text-decoration': [ - 'line-through', - 'none', - 'overline', - 'underline' - ], - 'text-overflow': [ - 'clip', - 'ellipsis' - ], - top: [ - 'auto' - ], - 'vertical-align': [ - 'baseline', - 'bottom', - 'middle', - 'sub', - 'super', - 'text-bottom', - 'text-top', - 'top' - ], - visibility: [ - 'collapse', - 'hidden', - 'visible' - ], - 'white-space': [ - 'normal', - 'nowrap', - 'pre' - ], - width: [ - 'inherit', - 'initial', - 'medium', - 'thick', - 'thin' - ] -}; - -var Units = [ - '%', - 'ch', - 'cm', - 'em', - 'ex', - 'in', - 'mm', - 'pc', - 'pt', - 'px', - 'rem', - 'vh', - 'vm', - 'vmax', - 'vmin', - 'vw' -]; - -function isColor(value) { - return value != 'auto' - && ( - isKeyword('color')(value) - || isHexColor(value) - || isColorFunction(value) - || isNamedEntity(value) - ); -} - -function isColorFunction(value) { - return isRgbColor(value) || isHslColor(value); -} - -function isDynamicUnit(value) { - return calcRegex.test(value); -} - -function isFunction(value) { - return functionAnyRegex.test(value); -} - -function isHexColor(value) { - return threeValueColorRegex.test(value) - || fourValueColorRegex.test(value) - || sixValueColorRegex.test(value) - || eightValueColorRegex.test(value); -} - -function isHslColor(value) { - return hslColorRegex.test(value) || hslColorWithSpacesRegex.test(value); -} - -function isHexAlphaColor(value) { - return hexAlphaColorRegex.test(value); -} - -function isIdentifier(value) { - return identifierRegex.test(value); -} - -function isQuotedText(value) { - return quotedTextRegex.test(value); -} - -function isImage(value) { - return value == 'none' || value == 'inherit' || isUrl(value); -} - -function isKeyword(propertyName) { - return function(value) { - return Keywords[propertyName].indexOf(value) > -1; - }; -} - -function isNamedEntity(value) { - return namedEntityRegex.test(value); -} - -function isNumber(value) { - return scanForNumber(value) == value.length; -} - -function isRgbColor(value) { - return rgbColorRegex.test(value) || rgbColorWithSpacesRegex.test(value); -} - -function isPrefixed(value) { - return prefixRegex.test(value); -} - -function isPositiveNumber(value) { - return isNumber(value) - && parseFloat(value) >= 0; -} - -function isVariable(value) { - return variableRegex.test(value); -} - -function isTime(value) { - var numberUpTo = scanForNumber(value); - - return numberUpTo == value.length && parseInt(value) === 0 - || numberUpTo > -1 && validTimeUnits.indexOf(value.slice(numberUpTo + 1)) > -1 - || isCalculatedTime(value); -} - -function isCalculatedTime(value) { - return isFunction(value) && timeUnitPattern.test(value); -} - -function isTimingFunction() { - var isTimingFunctionKeyword = isKeyword('*-timing-function'); - - return function(value) { - return isTimingFunctionKeyword(value) || timingFunctionRegex.test(value); - }; -} - -function isUnit(validUnits, value) { - var numberUpTo = scanForNumber(value); - - return numberUpTo == value.length && parseInt(value) === 0 - || numberUpTo > -1 && validUnits.indexOf(value.slice(numberUpTo + 1).toLowerCase()) > -1 - || value == 'auto' - || value == 'inherit'; -} - -function isUrl(value) { - return urlRegex.test(value); -} - -function isZIndex(value) { - return value == 'auto' - || isNumber(value) - || isKeyword('^')(value); -} - -function scanForNumber(value) { - var hasDot = false; - var hasSign = false; - var character; - var i, l; - - for (i = 0, l = value.length; i < l; i++) { - character = value[i]; - - if (i === 0 && (character == PLUS_SIGN || character == MINUS_SIGN)) { - hasSign = true; - } else if (i > 0 && hasSign && (character == PLUS_SIGN || character == MINUS_SIGN)) { - return i - 1; - } else if (character == DECIMAL_DOT && !hasDot) { - hasDot = true; - } else if (character == DECIMAL_DOT && hasDot) { - return i - 1; - } else if (decimalRegex.test(character)) { - continue; - } else { - return i - 1; - } - } - - return i; -} - -function validator(compatibility) { - var validUnits = Units.slice(0).filter(function(value) { - return !(value in compatibility.units) || compatibility.units[value] === true; - }); - - if (compatibility.customUnits.rpx) { - validUnits.push('rpx'); - } - - return { - colorOpacity: compatibility.colors.opacity, - colorHexAlpha: compatibility.colors.hexAlpha, - isAnimationDirectionKeyword: isKeyword('animation-direction'), - isAnimationFillModeKeyword: isKeyword('animation-fill-mode'), - isAnimationIterationCountKeyword: isKeyword('animation-iteration-count'), - isAnimationNameKeyword: isKeyword('animation-name'), - isAnimationPlayStateKeyword: isKeyword('animation-play-state'), - isTimingFunction: isTimingFunction(), - isBackgroundAttachmentKeyword: isKeyword('background-attachment'), - isBackgroundClipKeyword: isKeyword('background-clip'), - isBackgroundOriginKeyword: isKeyword('background-origin'), - isBackgroundPositionKeyword: isKeyword('background-position'), - isBackgroundRepeatKeyword: isKeyword('background-repeat'), - isBackgroundSizeKeyword: isKeyword('background-size'), - isColor: isColor, - isColorFunction: isColorFunction, - isDynamicUnit: isDynamicUnit, - isFontKeyword: isKeyword('font'), - isFontSizeKeyword: isKeyword('font-size'), - isFontStretchKeyword: isKeyword('font-stretch'), - isFontStyleKeyword: isKeyword('font-style'), - isFontVariantKeyword: isKeyword('font-variant'), - isFontWeightKeyword: isKeyword('font-weight'), - isFunction: isFunction, - isGlobal: isKeyword('^'), - isHexAlphaColor: isHexAlphaColor, - isHslColor: isHslColor, - isIdentifier: isIdentifier, - isImage: isImage, - isKeyword: isKeyword, - isLineHeightKeyword: isKeyword('line-height'), - isListStylePositionKeyword: isKeyword('list-style-position'), - isListStyleTypeKeyword: isKeyword('list-style-type'), - isNumber: isNumber, - isPrefixed: isPrefixed, - isPositiveNumber: isPositiveNumber, - isQuotedText: isQuotedText, - isRgbColor: isRgbColor, - isStyleKeyword: isKeyword('*-style'), - isTime: isTime, - isUnit: isUnit.bind(null, validUnits), - isUrl: isUrl, - isVariable: isVariable, - isWidth: isKeyword('width'), - isZIndex: isZIndex - }; -} - -module.exports = validator; - - -/***/ }), - -/***/ 1200: -/***/ ((module) => { - -var VENDOR_PREFIX_PATTERN = /(?:^|\W)(-\w+-)/g; - -function unique(value) { - var prefixes = []; - var match; - - // eslint-disable-next-line no-cond-assign - while ((match = VENDOR_PREFIX_PATTERN.exec(value)) !== null) { - if (prefixes.indexOf(match[0]) == -1) { - prefixes.push(match[0]); - } - } - - return prefixes; -} - -function same(value1, value2) { - return unique(value1).sort().join(',') == unique(value2).sort().join(','); -} - -module.exports = { - unique: unique, - same: same -}; - - -/***/ }), - -/***/ 3684: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Hack = __webpack_require__(2878); - -var Marker = __webpack_require__(3820); -var Token = __webpack_require__(4633); - -var Match = { - ASTERISK: '*', - BACKSLASH: '\\', - BANG: '!', - BANG_SUFFIX_PATTERN: /!\w+$/, - IMPORTANT_TOKEN: '!important', - IMPORTANT_TOKEN_PATTERN: new RegExp('!important$', 'i'), - IMPORTANT_WORD: 'important', - IMPORTANT_WORD_PATTERN: new RegExp('important$', 'i'), - SUFFIX_BANG_PATTERN: /!$/, - UNDERSCORE: '_', - VARIABLE_REFERENCE_PATTERN: /var\(--.+\)$/ -}; - -function wrapAll(properties, skipProperties) { - var wrapped = []; - var single; - var property; - var i; - - for (i = properties.length - 1; i >= 0; i--) { - property = properties[i]; - - if (property[0] != Token.PROPERTY) { - continue; - } - - if (skipProperties && skipProperties.indexOf(property[1][1]) > -1) { - continue; - } - - single = wrapSingle(property); - single.all = properties; - single.position = i; - wrapped.unshift(single); - } - - return wrapped; -} - -function someVariableReferences(property) { - var i, l; - var value; - - // skipping `property` and property name tokens - for (i = 2, l = property.length; i < l; i++) { - value = property[i]; - - if (value[0] != Token.PROPERTY_VALUE) { - continue; - } - - if (isVariableReference(value[1])) { - return true; - } - } - - return false; -} - -function isVariableReference(value) { - return Match.VARIABLE_REFERENCE_PATTERN.test(value); -} - -function isMultiplex(property) { - var value; - var i, l; - - for (i = 3, l = property.length; i < l; i++) { - value = property[i]; - - if (value[0] == Token.PROPERTY_VALUE && (value[1] == Marker.COMMA || value[1] == Marker.FORWARD_SLASH)) { - return true; - } - } - - return false; -} - -function hackFrom(property) { - var match = false; - var name = property[1][1]; - var lastValue = property[property.length - 1]; - - if (name[0] == Match.UNDERSCORE) { - match = [Hack.UNDERSCORE]; - } else if (name[0] == Match.ASTERISK) { - match = [Hack.ASTERISK]; - } else if (lastValue[1][0] == Match.BANG && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN)) { - match = [Hack.BANG]; - } else if (lastValue[1].indexOf(Match.BANG) > 0 - && !lastValue[1].match(Match.IMPORTANT_WORD_PATTERN) - && Match.BANG_SUFFIX_PATTERN.test(lastValue[1])) { - match = [Hack.BANG]; - } else if (lastValue[1].indexOf(Match.BACKSLASH) > 0 - && lastValue[1].indexOf(Match.BACKSLASH) == lastValue[1].length - Match.BACKSLASH.length - 1) { - match = [Hack.BACKSLASH, lastValue[1].substring(lastValue[1].indexOf(Match.BACKSLASH) + 1)]; - } else if (lastValue[1].indexOf(Match.BACKSLASH) === 0 && lastValue[1].length == 2) { - match = [Hack.BACKSLASH, lastValue[1].substring(1)]; - } - - return match; -} - -function isImportant(property) { - if (property.length < 3) { return false; } - - var lastValue = property[property.length - 1]; - if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) { - return true; - } if (Match.IMPORTANT_WORD_PATTERN.test(lastValue[1]) - && Match.SUFFIX_BANG_PATTERN.test(property[property.length - 2][1])) { - return true; - } - - return false; -} - -function stripImportant(property) { - var lastValue = property[property.length - 1]; - var oneButLastValue = property[property.length - 2]; - - if (Match.IMPORTANT_TOKEN_PATTERN.test(lastValue[1])) { - lastValue[1] = lastValue[1].replace(Match.IMPORTANT_TOKEN_PATTERN, ''); - } else { - lastValue[1] = lastValue[1].replace(Match.IMPORTANT_WORD_PATTERN, ''); - oneButLastValue[1] = oneButLastValue[1].replace(Match.SUFFIX_BANG_PATTERN, ''); - } - - if (lastValue[1].length === 0) { - property.pop(); - } - - if (oneButLastValue[1].length === 0) { - property.pop(); - } -} - -function stripPrefixHack(property) { - property[1][1] = property[1][1].substring(1); -} - -function stripSuffixHack(property, hackFrom) { - var lastValue = property[property.length - 1]; - lastValue[1] = lastValue[1] - .substring(0, lastValue[1].indexOf(hackFrom[0] == Hack.BACKSLASH ? Match.BACKSLASH : Match.BANG)) - .trim(); - - if (lastValue[1].length === 0) { - property.pop(); - } -} - -function wrapSingle(property) { - var importantProperty = isImportant(property); - if (importantProperty) { - stripImportant(property); - } - - var whichHack = hackFrom(property); - if (whichHack[0] == Hack.ASTERISK || whichHack[0] == Hack.UNDERSCORE) { - stripPrefixHack(property); - } else if (whichHack[0] == Hack.BACKSLASH || whichHack[0] == Hack.BANG) { - stripSuffixHack(property, whichHack); - } - - return { - block: property[2] && property[2][0] == Token.PROPERTY_BLOCK, - components: [], - dirty: false, - dynamic: someVariableReferences(property), - hack: whichHack, - important: importantProperty, - name: property[1][1], - multiplex: property.length > 3 ? isMultiplex(property) : false, - optimizable: true, - position: 0, - shorthand: false, - unused: false, - value: property.slice(2) - }; -} - -module.exports = { - all: wrapAll, - single: wrapSingle -}; - - -/***/ }), - -/***/ 7511: -/***/ ((module) => { - -var DEFAULTS = { - '*': { - colors: { - hexAlpha: false, // 4- and 8-character hex notation - opacity: true // rgba / hsla - }, - customUnits: { rpx: false }, - properties: { - backgroundClipMerging: true, // background-clip to shorthand - backgroundOriginMerging: true, // background-origin to shorthand - backgroundSizeMerging: true, // background-size to shorthand - colors: true, // any kind of color transformations, like `#ff00ff` to `#f0f` or `#fff` into `red` - ieBangHack: false, // !ie suffix hacks on IE<8 - ieFilters: false, // whether to preserve `filter` and `-ms-filter` properties - iePrefixHack: false, // underscore / asterisk prefix hacks on IE - ieSuffixHack: false, // \9 suffix hacks on IE6-9, \0 suffix hack on IE6-11 - merging: true, // merging properties into one - shorterLengthUnits: false, // optimize pixel units into `pt`, `pc` or `in` units - spaceAfterClosingBrace: true, // 'url() no-repeat' to 'url()no-repeat' - urlQuotes: true, // whether to wrap content of `url()` into quotes or not - zeroUnits: true // 0[unit] -> 0 - }, - selectors: { - adjacentSpace: false, // div+ nav Android stock browser hack - ie7Hack: false, // *+html hack - mergeablePseudoClasses: [ - ':active', - ':after', - ':before', - ':empty', - ':checked', - ':disabled', - ':empty', - ':enabled', - ':first-child', - ':first-letter', - ':first-line', - ':first-of-type', - ':focus', - ':hover', - ':lang', - ':last-child', - ':last-of-type', - ':link', - ':not', - ':nth-child', - ':nth-last-child', - ':nth-last-of-type', - ':nth-of-type', - ':only-child', - ':only-of-type', - ':root', - ':target', - ':visited' - ], // selectors with these pseudo-classes can be merged as these are universally supported - mergeablePseudoElements: [ - '::after', - '::before', - '::first-letter', - '::first-line' - ], // selectors with these pseudo-elements can be merged as these are universally supported - mergeLimit: 8191, // number of rules that can be safely merged together - multiplePseudoMerging: true - }, - units: { - ch: true, - in: true, - pc: true, - pt: true, - rem: true, - vh: true, - vm: true, // vm is vmin on IE9+ see https://developer.mozilla.org/en-US/docs/Web/CSS/length - vmax: true, - vmin: true, - vw: true - } - } -}; - -DEFAULTS.ie11 = merge(DEFAULTS['*'], { properties: { ieSuffixHack: true } }); - -DEFAULTS.ie10 = merge(DEFAULTS['*'], { properties: { ieSuffixHack: true } }); - -DEFAULTS.ie9 = merge(DEFAULTS['*'], { - properties: { - ieFilters: true, - ieSuffixHack: true - } -}); - -DEFAULTS.ie8 = merge(DEFAULTS.ie9, { - colors: { opacity: false }, - properties: { - backgroundClipMerging: false, - backgroundOriginMerging: false, - backgroundSizeMerging: false, - iePrefixHack: true, - merging: false - }, - selectors: { - mergeablePseudoClasses: [ - ':after', - ':before', - ':first-child', - ':first-letter', - ':focus', - ':hover', - ':visited' - ], - mergeablePseudoElements: [] - }, - units: { - ch: false, - rem: false, - vh: false, - vm: false, - vmax: false, - vmin: false, - vw: false - } -}); - -DEFAULTS.ie7 = merge(DEFAULTS.ie8, { - properties: { ieBangHack: true }, - selectors: { - ie7Hack: true, - mergeablePseudoClasses: [ - ':first-child', - ':first-letter', - ':hover', - ':visited' - ] - } -}); - -function compatibilityFrom(source) { - return merge(DEFAULTS['*'], calculateSource(source)); -} - -function merge(source, target) { - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - var value = source[key]; - - if (Object.prototype.hasOwnProperty.call(target, key) && typeof value === 'object' && !Array.isArray(value)) { - target[key] = merge(value, target[key] || {}); - } else { - target[key] = key in target ? target[key] : value; - } - } - } - - return target; -} - -function calculateSource(source) { - if (typeof source == 'object') { return source; } - - if (!/[,+-]/.test(source)) { return DEFAULTS[source] || DEFAULTS['*']; } - - var parts = source.split(','); - var template = parts[0] in DEFAULTS - ? DEFAULTS[parts.shift()] - : DEFAULTS['*']; - - source = {}; - - parts.forEach(function(part) { - var isAdd = part[0] == '+'; - var key = part.substring(1).split('.'); - var group = key[0]; - var option = key[1]; - - source[group] = source[group] || {}; - source[group][option] = isAdd; - }); - - return merge(template, source); -} - -module.exports = compatibilityFrom; - - -/***/ }), - -/***/ 650: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var loadRemoteResource = __webpack_require__(428); - -function fetchFrom(callback) { - return callback || loadRemoteResource; -} - -module.exports = fetchFrom; - - -/***/ }), - -/***/ 4687: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var systemLineBreak = (__webpack_require__(2037).EOL); - -var override = __webpack_require__(8832); - -var Breaks = { - AfterAtRule: 'afterAtRule', - AfterBlockBegins: 'afterBlockBegins', - AfterBlockEnds: 'afterBlockEnds', - AfterComment: 'afterComment', - AfterProperty: 'afterProperty', - AfterRuleBegins: 'afterRuleBegins', - AfterRuleEnds: 'afterRuleEnds', - BeforeBlockEnds: 'beforeBlockEnds', - BetweenSelectors: 'betweenSelectors' -}; - -var BreakWith = { - CarriageReturnLineFeed: '\r\n', - LineFeed: '\n', - System: systemLineBreak -}; - -var IndentWith = { - Space: ' ', - Tab: '\t' -}; - -var Spaces = { - AroundSelectorRelation: 'aroundSelectorRelation', - BeforeBlockBegins: 'beforeBlockBegins', - BeforeValue: 'beforeValue' -}; - -var DEFAULTS = { - breaks: breaks(false), - breakWith: BreakWith.System, - indentBy: 0, - indentWith: IndentWith.Space, - spaces: spaces(false), - wrapAt: false, - semicolonAfterLastProperty: false -}; - -var BEAUTIFY_ALIAS = 'beautify'; -var KEEP_BREAKS_ALIAS = 'keep-breaks'; - -var OPTION_SEPARATOR = ';'; -var OPTION_NAME_VALUE_SEPARATOR = ':'; -var HASH_VALUES_OPTION_SEPARATOR = ','; -var HASH_VALUES_NAME_VALUE_SEPARATOR = '='; - -var FALSE_KEYWORD_1 = 'false'; -var FALSE_KEYWORD_2 = 'off'; -var TRUE_KEYWORD_1 = 'true'; -var TRUE_KEYWORD_2 = 'on'; - -function breaks(value) { - var breakOptions = {}; - - breakOptions[Breaks.AfterAtRule] = value; - breakOptions[Breaks.AfterBlockBegins] = value; - breakOptions[Breaks.AfterBlockEnds] = value; - breakOptions[Breaks.AfterComment] = value; - breakOptions[Breaks.AfterProperty] = value; - breakOptions[Breaks.AfterRuleBegins] = value; - breakOptions[Breaks.AfterRuleEnds] = value; - breakOptions[Breaks.BeforeBlockEnds] = value; - breakOptions[Breaks.BetweenSelectors] = value; - - return breakOptions; -} - -function spaces(value) { - var spaceOptions = {}; - - spaceOptions[Spaces.AroundSelectorRelation] = value; - spaceOptions[Spaces.BeforeBlockBegins] = value; - spaceOptions[Spaces.BeforeValue] = value; - - return spaceOptions; -} - -function formatFrom(source) { - if (source === undefined || source === false) { - return false; - } - - if (typeof source == 'object' && 'breakWith' in source) { - source = override(source, { breakWith: mapBreakWith(source.breakWith) }); - } - - if (typeof source == 'object' && 'indentBy' in source) { - source = override(source, { indentBy: parseInt(source.indentBy) }); - } - - if (typeof source == 'object' && 'indentWith' in source) { - source = override(source, { indentWith: mapIndentWith(source.indentWith) }); - } - - if (typeof source == 'object') { - return remapBreaks(override(DEFAULTS, source)); - } - - if (typeof source == 'string' && source == BEAUTIFY_ALIAS) { - return remapBreaks( - override(DEFAULTS, { - breaks: breaks(true), - indentBy: 2, - spaces: spaces(true) - }) - ); - } - - if (typeof source == 'string' && source == KEEP_BREAKS_ALIAS) { - return remapBreaks( - override(DEFAULTS, { - breaks: { - afterAtRule: true, - afterBlockBegins: true, - afterBlockEnds: true, - afterComment: true, - afterRuleEnds: true, - beforeBlockEnds: true - } - }) - ); - } - - if (typeof source == 'string') { - return remapBreaks(override(DEFAULTS, toHash(source))); - } - - return DEFAULTS; -} - -function toHash(string) { - return string - .split(OPTION_SEPARATOR) - .reduce(function(accumulator, directive) { - var parts = directive.split(OPTION_NAME_VALUE_SEPARATOR); - var name = parts[0]; - var value = parts[1]; - - if (name == 'breaks' || name == 'spaces') { - accumulator[name] = hashValuesToHash(value); - } else if (name == 'indentBy' || name == 'wrapAt') { - accumulator[name] = parseInt(value); - } else if (name == 'indentWith') { - accumulator[name] = mapIndentWith(value); - } else if (name == 'breakWith') { - accumulator[name] = mapBreakWith(value); - } - - return accumulator; - }, {}); -} - -function hashValuesToHash(string) { - return string - .split(HASH_VALUES_OPTION_SEPARATOR) - .reduce(function(accumulator, directive) { - var parts = directive.split(HASH_VALUES_NAME_VALUE_SEPARATOR); - var name = parts[0]; - var value = parts[1]; - - accumulator[name] = normalizeValue(value); - - return accumulator; - }, {}); -} - -function normalizeValue(value) { - switch (value) { - case FALSE_KEYWORD_1: - case FALSE_KEYWORD_2: - return false; - case TRUE_KEYWORD_1: - case TRUE_KEYWORD_2: - return true; - default: - return value; - } -} - -function mapBreakWith(value) { - switch (value) { - case 'windows': - case 'crlf': - case BreakWith.CarriageReturnLineFeed: - return BreakWith.CarriageReturnLineFeed; - case 'unix': - case 'lf': - case BreakWith.LineFeed: - return BreakWith.LineFeed; - default: - return systemLineBreak; - } -} - -function mapIndentWith(value) { - switch (value) { - case 'space': - return IndentWith.Space; - case 'tab': - return IndentWith.Tab; - default: - return value; - } -} - -function remapBreaks(source) { - for (var key in Breaks) { - var breakName = Breaks[key]; - var breakValue = source.breaks[breakName]; - - if (breakValue === true) { - source.breaks[breakName] = source.breakWith; - } else if (breakValue === false) { - source.breaks[breakName] = ''; - } else { - source.breaks[breakName] = source.breakWith.repeat(parseInt(breakValue)); - } - } - - return source; -} - -module.exports = { - Breaks: Breaks, - Spaces: Spaces, - formatFrom: formatFrom -}; - - -/***/ }), - -/***/ 6989: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var url = __webpack_require__(7310); - -var override = __webpack_require__(8832); - -function inlineRequestFrom(option) { - return override( - /* jshint camelcase: false */ - proxyOptionsFrom(process.env.HTTP_PROXY || process.env.http_proxy), - option || {} - ); -} - -function proxyOptionsFrom(httpProxy) { - return httpProxy - ? { - hostname: url.parse(httpProxy).hostname, - port: parseInt(url.parse(httpProxy).port) - } - : {}; -} - -module.exports = inlineRequestFrom; - - -/***/ }), - -/***/ 9585: -/***/ ((module) => { - -var DEFAULT_TIMEOUT = 5000; - -function inlineTimeoutFrom(option) { - return option || DEFAULT_TIMEOUT; -} - -module.exports = inlineTimeoutFrom; - - -/***/ }), - -/***/ 3595: -/***/ ((module) => { - -function inlineOptionsFrom(rules) { - if (Array.isArray(rules)) { - return rules; - } - - if (rules === false) { - return ['none']; - } - - return undefined === rules - ? ['local'] - : rules.split(','); -} - -module.exports = inlineOptionsFrom; - - -/***/ }), - -/***/ 1905: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var roundingPrecisionFrom = (__webpack_require__(1672).roundingPrecisionFrom); - -var override = __webpack_require__(8832); - -var OptimizationLevel = { - Zero: '0', - One: '1', - Two: '2' -}; - -var DEFAULTS = {}; - -DEFAULTS[OptimizationLevel.Zero] = {}; -DEFAULTS[OptimizationLevel.One] = { - cleanupCharsets: true, - normalizeUrls: true, - optimizeBackground: true, - optimizeBorderRadius: true, - optimizeFilter: true, - optimizeFontWeight: true, - optimizeOutline: true, - removeEmpty: true, - removeNegativePaddings: true, - removeQuotes: true, - removeWhitespace: true, - replaceMultipleZeros: true, - replaceTimeUnits: true, - replaceZeroUnits: true, - roundingPrecision: roundingPrecisionFrom(undefined), - selectorsSortingMethod: 'standard', - specialComments: 'all', - tidyAtRules: true, - tidyBlockScopes: true, - tidySelectors: true, - variableValueOptimizers: [] -}; -DEFAULTS[OptimizationLevel.Two] = { - mergeAdjacentRules: true, - mergeIntoShorthands: true, - mergeMedia: true, - mergeNonAdjacentRules: true, - mergeSemantically: false, - overrideProperties: true, - removeEmpty: true, - reduceNonAdjacentRules: true, - removeDuplicateFontRules: true, - removeDuplicateMediaBlocks: true, - removeDuplicateRules: true, - removeUnusedAtRules: false, - restructureRules: false, - skipProperties: [] -}; - -var ALL_KEYWORD_1 = '*'; -var ALL_KEYWORD_2 = 'all'; -var FALSE_KEYWORD_1 = 'false'; -var FALSE_KEYWORD_2 = 'off'; -var TRUE_KEYWORD_1 = 'true'; -var TRUE_KEYWORD_2 = 'on'; - -var LIST_VALUE_SEPARATOR = ','; -var OPTION_SEPARATOR = ';'; -var OPTION_VALUE_SEPARATOR = ':'; - -function optimizationLevelFrom(source) { - var level = override(DEFAULTS, {}); - var Zero = OptimizationLevel.Zero; - var One = OptimizationLevel.One; - var Two = OptimizationLevel.Two; - - if (undefined === source) { - delete level[Two]; - return level; - } - - if (typeof source == 'string') { - source = parseInt(source); - } - - if (typeof source == 'number' && source === parseInt(Two)) { - return level; - } - - if (typeof source == 'number' && source === parseInt(One)) { - delete level[Two]; - return level; - } - - if (typeof source == 'number' && source === parseInt(Zero)) { - delete level[Two]; - delete level[One]; - return level; - } - - if (typeof source == 'object') { - source = covertValuesToHashes(source); - } - - if (One in source && 'roundingPrecision' in source[One]) { - source[One].roundingPrecision = roundingPrecisionFrom(source[One].roundingPrecision); - } - - if (Two in source && 'skipProperties' in source[Two] && typeof (source[Two].skipProperties) == 'string') { - source[Two].skipProperties = source[Two].skipProperties.split(LIST_VALUE_SEPARATOR); - } - - if (Zero in source || One in source || Two in source) { - level[Zero] = override(level[Zero], source[Zero]); - } - - if (One in source && ALL_KEYWORD_1 in source[One]) { - level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_1]))); - delete source[One][ALL_KEYWORD_1]; - } - - if (One in source && ALL_KEYWORD_2 in source[One]) { - level[One] = override(level[One], defaults(One, normalizeValue(source[One][ALL_KEYWORD_2]))); - delete source[One][ALL_KEYWORD_2]; - } - - if (One in source || Two in source) { - level[One] = override(level[One], source[One]); - } else { - delete level[One]; - } - - if (Two in source && ALL_KEYWORD_1 in source[Two]) { - level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_1]))); - delete source[Two][ALL_KEYWORD_1]; - } - - if (Two in source && ALL_KEYWORD_2 in source[Two]) { - level[Two] = override(level[Two], defaults(Two, normalizeValue(source[Two][ALL_KEYWORD_2]))); - delete source[Two][ALL_KEYWORD_2]; - } - - if (Two in source) { - level[Two] = override(level[Two], source[Two]); - } else { - delete level[Two]; - } - - return level; -} - -function defaults(level, value) { - var options = override(DEFAULTS[level], {}); - var key; - - for (key in options) { - if (typeof options[key] == 'boolean') { - options[key] = value; - } - } - - return options; -} - -function normalizeValue(value) { - switch (value) { - case FALSE_KEYWORD_1: - case FALSE_KEYWORD_2: - return false; - case TRUE_KEYWORD_1: - case TRUE_KEYWORD_2: - return true; - default: - return value; - } -} - -function covertValuesToHashes(source) { - var clonedSource = override(source, {}); - var level; - var i; - - for (i = 0; i <= 2; i++) { - level = '' + i; - - if (level in clonedSource && (clonedSource[level] === undefined || clonedSource[level] === false)) { - delete clonedSource[level]; - } - - if (level in clonedSource && clonedSource[level] === true) { - clonedSource[level] = {}; - } - - if (level in clonedSource && typeof clonedSource[level] == 'string') { - clonedSource[level] = covertToHash(clonedSource[level], level); - } - } - - return clonedSource; -} - -function covertToHash(asString, level) { - return asString - .split(OPTION_SEPARATOR) - .reduce(function(accumulator, directive) { - var parts = directive.split(OPTION_VALUE_SEPARATOR); - var name = parts[0]; - var value = parts[1]; - var normalizedValue = normalizeValue(value); - - if (ALL_KEYWORD_1 == name || ALL_KEYWORD_2 == name) { - accumulator = override(accumulator, defaults(level, normalizedValue)); - } else { - accumulator[name] = normalizedValue; - } - - return accumulator; - }, {}); -} - -module.exports = { - OptimizationLevel: OptimizationLevel, - optimizationLevelFrom: optimizationLevelFrom -}; - - -/***/ }), - -/***/ 1033: -/***/ ((module) => { - -function pluginsFrom(plugins) { - var flatPlugins = { - level1Value: [], - level1Property: [], - level2Block: [] - }; - - plugins = plugins || []; - - flatPlugins.level1Value = plugins - .map(function(plugin) { return plugin.level1 && plugin.level1.value; }) - .filter(function(plugin) { return plugin != null; }); - - flatPlugins.level1Property = plugins - .map(function(plugin) { return plugin.level1 && plugin.level1.property; }) - .filter(function(plugin) { return plugin != null; }); - - flatPlugins.level2Block = plugins - .map(function(plugin) { return plugin.level2 && plugin.level2.block; }) - .filter(function(plugin) { return plugin != null; }); - - return flatPlugins; -} - -module.exports = pluginsFrom; - - -/***/ }), - -/***/ 8835: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var path = __webpack_require__(1017); - -function rebaseToFrom(option) { - return option ? path.resolve(option) : process.cwd(); -} - -module.exports = rebaseToFrom; - - -/***/ }), - -/***/ 2381: -/***/ ((module) => { - -function rebaseFrom(rebaseOption, rebaseToOption) { - if (undefined !== rebaseToOption) { - return true; - } if (undefined === rebaseOption) { - return false; - } - return !!rebaseOption; -} - -module.exports = rebaseFrom; - - -/***/ }), - -/***/ 1672: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var override = __webpack_require__(8832); - -var INTEGER_PATTERN = /^\d+$/; - -var ALL_UNITS = ['*', 'all']; -var DEFAULT_PRECISION = 'off'; // all precision changes are disabled -var DIRECTIVES_SEPARATOR = ','; // e.g. *=5,px=3 -var DIRECTIVE_VALUE_SEPARATOR = '='; // e.g. *=5 - -function roundingPrecisionFrom(source) { - return override(defaults(DEFAULT_PRECISION), buildPrecisionFrom(source)); -} - -function defaults(value) { - return { - ch: value, - cm: value, - em: value, - ex: value, - in: value, - mm: value, - pc: value, - pt: value, - px: value, - q: value, - rem: value, - vh: value, - vmax: value, - vmin: value, - vw: value, - '%': value - }; -} - -function buildPrecisionFrom(source) { - if (source === null || source === undefined) { - return {}; - } - - if (typeof source == 'boolean') { - return {}; - } - - if (typeof source == 'number' && source == -1) { - return defaults(DEFAULT_PRECISION); - } - - if (typeof source == 'number') { - return defaults(source); - } - - if (typeof source == 'string' && INTEGER_PATTERN.test(source)) { - return defaults(parseInt(source)); - } - - if (typeof source == 'string' && source == DEFAULT_PRECISION) { - return defaults(DEFAULT_PRECISION); - } - - if (typeof source == 'object') { - return source; - } - - return source - .split(DIRECTIVES_SEPARATOR) - .reduce(function(accumulator, directive) { - var directiveParts = directive.split(DIRECTIVE_VALUE_SEPARATOR); - var name = directiveParts[0]; - var value = parseInt(directiveParts[1]); - - if (Number.isNaN(value) || value == -1) { - value = DEFAULT_PRECISION; - } - - if (ALL_UNITS.indexOf(name) > -1) { - accumulator = override(accumulator, defaults(value)); - } else { - accumulator[name] = value; - } - - return accumulator; - }, {}); -} - -module.exports = { - DEFAULT: DEFAULT_PRECISION, - roundingPrecisionFrom: roundingPrecisionFrom -}; - - -/***/ }), - -/***/ 8536: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var fs = __webpack_require__(7147); -var path = __webpack_require__(1017); - -var isAllowedResource = __webpack_require__(2885); -var matchDataUri = __webpack_require__(3191); -var rebaseLocalMap = __webpack_require__(9858); -var rebaseRemoteMap = __webpack_require__(978); - -var Token = __webpack_require__(4633); -var hasProtocol = __webpack_require__(3884); -var isDataUriResource = __webpack_require__(9865); -var isRemoteResource = __webpack_require__(4234); - -var MAP_MARKER_PATTERN = /^\/\*# sourceMappingURL=(\S+) \*\/$/; - -function applySourceMaps(tokens, context, callback) { - var applyContext = { - callback: callback, - fetch: context.options.fetch, - index: 0, - inline: context.options.inline, - inlineRequest: context.options.inlineRequest, - inlineTimeout: context.options.inlineTimeout, - inputSourceMapTracker: context.inputSourceMapTracker, - localOnly: context.localOnly, - processedTokens: [], - rebaseTo: context.options.rebaseTo, - sourceTokens: tokens, - warnings: context.warnings - }; - - return context.options.sourceMap && tokens.length > 0 - ? doApplySourceMaps(applyContext) - : callback(tokens); -} - -function doApplySourceMaps(applyContext) { - var singleSourceTokens = []; - var lastSource = findTokenSource(applyContext.sourceTokens[0]); - var source; - var token; - var l; - - for (l = applyContext.sourceTokens.length; applyContext.index < l; applyContext.index++) { - token = applyContext.sourceTokens[applyContext.index]; - source = findTokenSource(token); - - if (source != lastSource) { - singleSourceTokens = []; - lastSource = source; - } - - singleSourceTokens.push(token); - applyContext.processedTokens.push(token); - - if (token[0] == Token.COMMENT && MAP_MARKER_PATTERN.test(token[1])) { - return fetchAndApplySourceMap(token[1], source, singleSourceTokens, applyContext); - } - } - - return applyContext.callback(applyContext.processedTokens); -} - -function findTokenSource(token) { - var scope; - var metadata; - - if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT || token[0] == Token.RAW) { - metadata = token[2][0]; - } else { - scope = token[1][0]; - metadata = scope[2][0]; - } - - return metadata[2]; -} - -function fetchAndApplySourceMap(sourceMapComment, source, singleSourceTokens, applyContext) { - return extractInputSourceMapFrom(sourceMapComment, applyContext, function(inputSourceMap) { - if (inputSourceMap) { - applyContext.inputSourceMapTracker.track(source, inputSourceMap); - applySourceMapRecursively(singleSourceTokens, applyContext.inputSourceMapTracker); - } - - applyContext.index++; - return doApplySourceMaps(applyContext); - }); -} - -function extractInputSourceMapFrom(sourceMapComment, applyContext, whenSourceMapReady) { - var uri = MAP_MARKER_PATTERN.exec(sourceMapComment)[1]; - var absoluteUri; - var sourceMap; - var rebasedMap; - - if (isDataUriResource(uri)) { - sourceMap = extractInputSourceMapFromDataUri(uri); - return whenSourceMapReady(sourceMap); - } if (isRemoteResource(uri)) { - return loadInputSourceMapFromRemoteUri(uri, applyContext, function(sourceMap) { - var parsedMap; - - if (sourceMap) { - parsedMap = JSON.parse(sourceMap); - rebasedMap = rebaseRemoteMap(parsedMap, uri); - whenSourceMapReady(rebasedMap); - } else { - whenSourceMapReady(null); - } - }); - } - // at this point `uri` is already rebased, see lib/reader/rebase.js#rebaseSourceMapComment - // it is rebased to be consistent with rebasing other URIs - // however here we need to resolve it back to read it from disk - absoluteUri = path.resolve(applyContext.rebaseTo, uri); - sourceMap = loadInputSourceMapFromLocalUri(absoluteUri, applyContext); - - if (sourceMap) { - rebasedMap = rebaseLocalMap(sourceMap, absoluteUri, applyContext.rebaseTo); - return whenSourceMapReady(rebasedMap); - } - return whenSourceMapReady(null); -} - -function extractInputSourceMapFromDataUri(uri) { - var dataUriMatch = matchDataUri(uri); - var charset = dataUriMatch[2] ? dataUriMatch[2].split(/[=;]/)[2] : 'us-ascii'; - var encoding = dataUriMatch[3] ? dataUriMatch[3].split(';')[1] : 'utf8'; - var data = encoding == 'utf8' ? global.unescape(dataUriMatch[4]) : dataUriMatch[4]; - - var buffer = Buffer.from(data, encoding); - buffer.charset = charset; - - return JSON.parse(buffer.toString()); -} - -function loadInputSourceMapFromRemoteUri(uri, applyContext, whenLoaded) { - var isAllowed = isAllowedResource(uri, true, applyContext.inline); - var isRuntimeResource = !hasProtocol(uri); - - if (applyContext.localOnly) { - applyContext.warnings.push('Cannot fetch remote resource from "' + uri + '" as no callback given.'); - return whenLoaded(null); - } if (isRuntimeResource) { - applyContext.warnings.push('Cannot fetch "' + uri + '" as no protocol given.'); - return whenLoaded(null); - } if (!isAllowed) { - applyContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.'); - return whenLoaded(null); - } - - applyContext.fetch(uri, applyContext.inlineRequest, applyContext.inlineTimeout, function(error, body) { - if (error) { - applyContext.warnings.push('Missing source map at "' + uri + '" - ' + error); - return whenLoaded(null); - } - - whenLoaded(body); - }); -} - -function loadInputSourceMapFromLocalUri(uri, applyContext) { - var isAllowed = isAllowedResource(uri, false, applyContext.inline); - var sourceMap; - - if (!fs.existsSync(uri) || !fs.statSync(uri).isFile()) { - applyContext.warnings.push('Ignoring local source map at "' + uri + '" as resource is missing.'); - return null; - } if (!isAllowed) { - applyContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.'); - return null; - } if (!fs.statSync(uri).size) { - applyContext.warnings.push('Cannot fetch "' + uri + '" as resource is empty.'); - return null; - } - - sourceMap = fs.readFileSync(uri, 'utf-8'); - return JSON.parse(sourceMap); -} - -function applySourceMapRecursively(tokens, inputSourceMapTracker) { - var token; - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - - switch (token[0]) { - case Token.AT_RULE: - applySourceMapTo(token, inputSourceMapTracker); - break; - case Token.AT_RULE_BLOCK: - applySourceMapRecursively(token[1], inputSourceMapTracker); - applySourceMapRecursively(token[2], inputSourceMapTracker); - break; - case Token.AT_RULE_BLOCK_SCOPE: - applySourceMapTo(token, inputSourceMapTracker); - break; - case Token.NESTED_BLOCK: - applySourceMapRecursively(token[1], inputSourceMapTracker); - applySourceMapRecursively(token[2], inputSourceMapTracker); - break; - case Token.NESTED_BLOCK_SCOPE: - applySourceMapTo(token, inputSourceMapTracker); - break; - case Token.COMMENT: - applySourceMapTo(token, inputSourceMapTracker); - break; - case Token.PROPERTY: - applySourceMapRecursively(token, inputSourceMapTracker); - break; - case Token.PROPERTY_BLOCK: - applySourceMapRecursively(token[1], inputSourceMapTracker); - break; - case Token.PROPERTY_NAME: - applySourceMapTo(token, inputSourceMapTracker); - break; - case Token.PROPERTY_VALUE: - applySourceMapTo(token, inputSourceMapTracker); - break; - case Token.RULE: - applySourceMapRecursively(token[1], inputSourceMapTracker); - applySourceMapRecursively(token[2], inputSourceMapTracker); - break; - case Token.RULE_SCOPE: - applySourceMapTo(token, inputSourceMapTracker); - } - } - - return tokens; -} - -function applySourceMapTo(token, inputSourceMapTracker) { - var value = token[1]; - var metadata = token[2]; - var newMetadata = []; - var i, l; - - for (i = 0, l = metadata.length; i < l; i++) { - newMetadata.push(inputSourceMapTracker.originalPositionFor(metadata[i], value.length)); - } - - token[2] = newMetadata; -} - -module.exports = applySourceMaps; - - -/***/ }), - -/***/ 3850: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var split = __webpack_require__(6439); - -var BRACE_PREFIX = /^\(/; -var BRACE_SUFFIX = /\)$/; -var IMPORT_PREFIX_PATTERN = /^@import/i; -var QUOTE_PREFIX_PATTERN = /['"]\s{0,31}/; -var QUOTE_SUFFIX_PATTERN = /\s{0,31}['"]/; -var URL_PREFIX_PATTERN = /^url\(\s{0,31}/i; -var URL_SUFFIX_PATTERN = /\s{0,31}\)/i; - -function extractImportUrlAndMedia(atRuleValue) { - var uri; - var mediaQuery; - var normalized; - var parts; - - normalized = atRuleValue - .replace(IMPORT_PREFIX_PATTERN, '') - .trim() - .replace(URL_PREFIX_PATTERN, '(') - .replace(URL_SUFFIX_PATTERN, ') ') - .replace(QUOTE_PREFIX_PATTERN, '') - .replace(QUOTE_SUFFIX_PATTERN, ''); - - parts = split(normalized, ' '); - - uri = parts[0] - .replace(BRACE_PREFIX, '') - .replace(BRACE_SUFFIX, ''); - mediaQuery = parts.slice(1).join(' '); - - return [uri, mediaQuery]; -} - -module.exports = extractImportUrlAndMedia; - - -/***/ }), - -/***/ 3607: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var SourceMapConsumer = (__webpack_require__(9125).SourceMapConsumer); - -function inputSourceMapTracker() { - var maps = {}; - - return { - all: all.bind(null, maps), - isTracking: isTracking.bind(null, maps), - originalPositionFor: originalPositionFor.bind(null, maps), - track: track.bind(null, maps) - }; -} - -function all(maps) { - return maps; -} - -function isTracking(maps, source) { - return source in maps; -} - -function originalPositionFor(maps, metadata, range, selectorFallbacks) { - var line = metadata[0]; - var column = metadata[1]; - var source = metadata[2]; - var position = { - line: line, - column: column + range - }; - var originalPosition; - - while (!originalPosition && position.column > column) { - position.column--; - originalPosition = maps[source].originalPositionFor(position); - } - - if (!originalPosition || originalPosition.column < 0) { - return metadata; - } - - if (originalPosition.line === null && line > 1 && selectorFallbacks > 0) { - return originalPositionFor(maps, [line - 1, column, source], range, selectorFallbacks - 1); - } - - return originalPosition.line !== null - ? toMetadata(originalPosition) - : metadata; -} - -function toMetadata(asHash) { - return [asHash.line, asHash.column, asHash.source]; -} - -function track(maps, source, data) { - maps[source] = new SourceMapConsumer(data); -} - -module.exports = inputSourceMapTracker; - - -/***/ }), - -/***/ 2885: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var path = __webpack_require__(1017); -var url = __webpack_require__(7310); - -var isRemoteResource = __webpack_require__(4234); -var hasProtocol = __webpack_require__(3884); - -var HTTP_PROTOCOL = 'http:'; - -function isAllowedResource(uri, isRemote, rules) { - var match; - var absoluteUri; - var allowed = !isRemote; - var rule; - var isNegated; - var normalizedRule; - var i; - - if (rules.length === 0) { - return false; - } - - if (isRemote && !hasProtocol(uri)) { - uri = HTTP_PROTOCOL + uri; - } - - match = isRemote - ? url.parse(uri).host - : uri; - - absoluteUri = isRemote - ? uri - : path.resolve(uri); - - for (i = 0; i < rules.length; i++) { - rule = rules[i]; - isNegated = rule[0] == '!'; - normalizedRule = rule.substring(1); - - if (isNegated && isRemote && isRemoteRule(normalizedRule)) { - allowed = allowed && !isAllowedResource(uri, true, [normalizedRule]); - } else if (isNegated && !isRemote && !isRemoteRule(normalizedRule)) { - allowed = allowed && !isAllowedResource(uri, false, [normalizedRule]); - } else if (isNegated) { - allowed = allowed && true; - } else if (rule == 'all') { - allowed = true; - } else if (isRemote && rule == 'local') { - allowed = allowed || false; - } else if (isRemote && rule == 'remote') { - allowed = true; - } else if (!isRemote && rule == 'remote') { - allowed = false; - } else if (!isRemote && rule == 'local') { - allowed = true; - } else if (rule === match) { - allowed = true; - } else if (rule === uri) { - allowed = true; - } else if (isRemote && absoluteUri.indexOf(rule) === 0) { - allowed = true; - } else if (!isRemote && absoluteUri.indexOf(path.resolve(rule)) === 0) { - allowed = true; - } else if (isRemote != isRemoteRule(normalizedRule)) { - allowed = allowed && true; - } else { - allowed = false; - } - } - - return allowed; -} - -function isRemoteRule(rule) { - return isRemoteResource(rule) || url.parse(HTTP_PROTOCOL + '//' + rule).host == rule; -} - -module.exports = isAllowedResource; - - -/***/ }), - -/***/ 5664: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var fs = __webpack_require__(7147); -var path = __webpack_require__(1017); - -var isAllowedResource = __webpack_require__(2885); - -var hasProtocol = __webpack_require__(3884); -var isRemoteResource = __webpack_require__(4234); - -function loadOriginalSources(context, callback) { - var loadContext = { - callback: callback, - fetch: context.options.fetch, - index: 0, - inline: context.options.inline, - inlineRequest: context.options.inlineRequest, - inlineTimeout: context.options.inlineTimeout, - localOnly: context.localOnly, - rebaseTo: context.options.rebaseTo, - sourcesContent: context.sourcesContent, - uriToSource: uriToSourceMapping(context.inputSourceMapTracker.all()), - warnings: context.warnings - }; - - return context.options.sourceMap && context.options.sourceMapInlineSources - ? doLoadOriginalSources(loadContext) - : callback(); -} - -function uriToSourceMapping(allSourceMapConsumers) { - var mapping = {}; - var consumer; - var uri; - var source; - var i, l; - - for (source in allSourceMapConsumers) { - consumer = allSourceMapConsumers[source]; - - for (i = 0, l = consumer.sources.length; i < l; i++) { - uri = consumer.sources[i]; - source = consumer.sourceContentFor(uri, true); - - mapping[uri] = source; - } - } - - return mapping; -} - -function doLoadOriginalSources(loadContext) { - var uris = Object.keys(loadContext.uriToSource); - var uri; - var source; - var total; - - for (total = uris.length; loadContext.index < total; loadContext.index++) { - uri = uris[loadContext.index]; - source = loadContext.uriToSource[uri]; - - if (source) { - loadContext.sourcesContent[uri] = source; - } else { - return loadOriginalSource(uri, loadContext); - } - } - - return loadContext.callback(); -} - -function loadOriginalSource(uri, loadContext) { - var content; - - if (isRemoteResource(uri)) { - return loadOriginalSourceFromRemoteUri(uri, loadContext, function(content) { - loadContext.index++; - loadContext.sourcesContent[uri] = content; - return doLoadOriginalSources(loadContext); - }); - } - content = loadOriginalSourceFromLocalUri(uri, loadContext); - loadContext.index++; - loadContext.sourcesContent[uri] = content; - return doLoadOriginalSources(loadContext); -} - -function loadOriginalSourceFromRemoteUri(uri, loadContext, whenLoaded) { - var isAllowed = isAllowedResource(uri, true, loadContext.inline); - var isRuntimeResource = !hasProtocol(uri); - - if (loadContext.localOnly) { - loadContext.warnings.push('Cannot fetch remote resource from "' + uri + '" as no callback given.'); - return whenLoaded(null); - } if (isRuntimeResource) { - loadContext.warnings.push('Cannot fetch "' + uri + '" as no protocol given.'); - return whenLoaded(null); - } if (!isAllowed) { - loadContext.warnings.push('Cannot fetch "' + uri + '" as resource is not allowed.'); - return whenLoaded(null); - } - - loadContext.fetch(uri, loadContext.inlineRequest, loadContext.inlineTimeout, function(error, content) { - if (error) { - loadContext.warnings.push('Missing original source at "' + uri + '" - ' + error); - } - - whenLoaded(content); - }); -} - -function loadOriginalSourceFromLocalUri(relativeUri, loadContext) { - var isAllowed = isAllowedResource(relativeUri, false, loadContext.inline); - var absoluteUri = path.resolve(loadContext.rebaseTo, relativeUri); - - if (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile()) { - loadContext.warnings.push('Ignoring local source map at "' + absoluteUri + '" as resource is missing.'); - return null; - } if (!isAllowed) { - loadContext.warnings.push('Cannot fetch "' + absoluteUri + '" as resource is not allowed.'); - return null; - } - - var result = fs.readFileSync(absoluteUri, 'utf8'); - if (result.charCodeAt(0) === 65279) { - result = result.substring(1); - } - return result; -} - -module.exports = loadOriginalSources; - - -/***/ }), - -/***/ 428: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var http = __webpack_require__(3685); -var https = __webpack_require__(5687); -var url = __webpack_require__(7310); - -var isHttpResource = __webpack_require__(8276); -var isHttpsResource = __webpack_require__(6683); -var override = __webpack_require__(8832); - -var HTTP_PROTOCOL = 'http:'; - -function loadRemoteResource(uri, inlineRequest, inlineTimeout, callback) { - var proxyProtocol = inlineRequest.protocol || inlineRequest.hostname; - var errorHandled = false; - var requestOptions; - var fetch; - - requestOptions = override( - url.parse(uri), - inlineRequest || {} - ); - - if (inlineRequest.hostname !== undefined) { - // overwrite as we always expect a http proxy currently - requestOptions.protocol = inlineRequest.protocol || HTTP_PROTOCOL; - requestOptions.path = requestOptions.href; - } - - fetch = (proxyProtocol && !isHttpsResource(proxyProtocol)) || isHttpResource(uri) - ? http.get - : https.get; - - fetch(requestOptions, function(res) { - var chunks = []; - var movedUri; - - if (errorHandled) { - return; - } - - if (res.statusCode < 200 || res.statusCode > 399) { - return callback(res.statusCode, null); - } if (res.statusCode > 299) { - movedUri = url.resolve(uri, res.headers.location); - return loadRemoteResource(movedUri, inlineRequest, inlineTimeout, callback); - } - - res.on('data', function(chunk) { - chunks.push(chunk.toString()); - }); - res.on('end', function() { - var body = chunks.join(''); - callback(null, body); - }); - }) - .on('error', function(res) { - if (errorHandled) { - return; - } - - errorHandled = true; - callback(res.message, null); - }) - .on('timeout', function() { - if (errorHandled) { - return; - } - - errorHandled = true; - callback('timeout', null); - }) - .setTimeout(inlineTimeout); -} - -module.exports = loadRemoteResource; - - -/***/ }), - -/***/ 3191: -/***/ ((module) => { - -var DATA_URI_PATTERN = /^data:(\S*?)?(;charset=(?:(?!;charset=)[^;])+)?(;[^,]+?)?,(.+)/; - -function matchDataUri(uri) { - return DATA_URI_PATTERN.exec(uri); -} - -module.exports = matchDataUri; - - -/***/ }), - -/***/ 6960: -/***/ ((module) => { - -var UNIX_SEPARATOR = '/'; -var WINDOWS_SEPARATOR_PATTERN = /\\/g; - -function normalizePath(path) { - return path.replace(WINDOWS_SEPARATOR_PATTERN, UNIX_SEPARATOR); -} - -module.exports = normalizePath; - - -/***/ }), - -/***/ 8792: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var fs = __webpack_require__(7147); -var path = __webpack_require__(1017); - -var applySourceMaps = __webpack_require__(8536); -var extractImportUrlAndMedia = __webpack_require__(3850); -var isAllowedResource = __webpack_require__(2885); -var loadOriginalSources = __webpack_require__(5664); -var normalizePath = __webpack_require__(6960); -var rebase = __webpack_require__(8979); -var rebaseLocalMap = __webpack_require__(9858); -var rebaseRemoteMap = __webpack_require__(978); -var restoreImport = __webpack_require__(8058); - -var tokenize = __webpack_require__(8584); -var Token = __webpack_require__(4633); -var Marker = __webpack_require__(3820); -var hasProtocol = __webpack_require__(3884); -var isImport = __webpack_require__(7937); -var isRemoteResource = __webpack_require__(4234); - -var UNKNOWN_URI = 'uri:unknown'; -var FILE_RESOURCE_PROTOCOL = 'file://'; - -function readSources(input, context, callback) { - return doReadSources(input, context, function(tokens) { - return applySourceMaps(tokens, context, function() { - return loadOriginalSources(context, function() { return callback(tokens); }); - }); - }); -} - -function doReadSources(input, context, callback) { - if (typeof input == 'string') { - return fromString(input, context, callback); - } if (Buffer.isBuffer(input)) { - return fromString(input.toString(), context, callback); - } if (Array.isArray(input)) { - return fromArray(input, context, callback); - } if (typeof input == 'object') { - return fromHash(input, context, callback); - } -} - -function fromString(input, context, callback) { - context.source = undefined; - context.sourcesContent[undefined] = input; - context.stats.originalSize += input.length; - - return fromStyles(input, context, { inline: context.options.inline }, callback); -} - -function fromArray(input, context, callback) { - var inputAsImports = input.reduce(function(accumulator, uriOrHash) { - if (typeof uriOrHash === 'string') { - return addStringSource(uriOrHash, accumulator); - } - return addHashSource(uriOrHash, context, accumulator); - }, []); - - return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback); -} - -function fromHash(input, context, callback) { - var inputAsImports = addHashSource(input, context, []); - return fromStyles(inputAsImports.join(''), context, { inline: ['all'] }, callback); -} - -function addStringSource(input, imports) { - imports.push(restoreAsImport(normalizeUri(input))); - return imports; -} - -function addHashSource(input, context, imports) { - var uri; - var normalizedUri; - var source; - - for (uri in input) { - source = input[uri]; - normalizedUri = normalizeUri(uri); - - imports.push(restoreAsImport(normalizedUri)); - - context.sourcesContent[normalizedUri] = source.styles; - - if (source.sourceMap) { - trackSourceMap(source.sourceMap, normalizedUri, context); - } - } - - return imports; -} - -function normalizeUri(uri) { - var currentPath = path.resolve(''); - var absoluteUri; - var relativeToCurrentPath; - var normalizedUri; - - if (isRemoteResource(uri)) { - return uri; - } - - absoluteUri = path.isAbsolute(uri) - ? uri - : path.resolve(uri); - relativeToCurrentPath = path.relative(currentPath, absoluteUri); - normalizedUri = normalizePath(relativeToCurrentPath); - - return normalizedUri; -} - -function trackSourceMap(sourceMap, uri, context) { - var parsedMap = typeof sourceMap == 'string' - ? JSON.parse(sourceMap) - : sourceMap; - var rebasedMap = isRemoteResource(uri) - ? rebaseRemoteMap(parsedMap, uri) - : rebaseLocalMap(parsedMap, uri || UNKNOWN_URI, context.options.rebaseTo); - - context.inputSourceMapTracker.track(uri, rebasedMap); -} - -function restoreAsImport(uri) { - return restoreImport('url(' + uri + ')', '') + Marker.SEMICOLON; -} - -function fromStyles(styles, context, parentInlinerContext, callback) { - var tokens; - var rebaseConfig = {}; - - if (!context.source) { - rebaseConfig.fromBase = path.resolve(''); - rebaseConfig.toBase = context.options.rebaseTo; - } else if (isRemoteResource(context.source)) { - rebaseConfig.fromBase = context.source; - rebaseConfig.toBase = context.source; - } else if (path.isAbsolute(context.source)) { - rebaseConfig.fromBase = path.dirname(context.source); - rebaseConfig.toBase = context.options.rebaseTo; - } else { - rebaseConfig.fromBase = path.dirname(path.resolve(context.source)); - rebaseConfig.toBase = context.options.rebaseTo; - } - - tokens = tokenize(styles, context); - tokens = rebase(tokens, context.options.rebase, context.validator, rebaseConfig); - - return allowsAnyImports(parentInlinerContext.inline) - ? inline(tokens, context, parentInlinerContext, callback) - : callback(tokens); -} - -function allowsAnyImports(inline) { - return !(inline.length == 1 && inline[0] == 'none'); -} - -function inline(tokens, externalContext, parentInlinerContext, callback) { - var inlinerContext = { - afterContent: false, - callback: callback, - errors: externalContext.errors, - externalContext: externalContext, - fetch: externalContext.options.fetch, - inlinedStylesheets: parentInlinerContext.inlinedStylesheets || externalContext.inlinedStylesheets, - inline: parentInlinerContext.inline, - inlineRequest: externalContext.options.inlineRequest, - inlineTimeout: externalContext.options.inlineTimeout, - isRemote: parentInlinerContext.isRemote || false, - localOnly: externalContext.localOnly, - outputTokens: [], - rebaseTo: externalContext.options.rebaseTo, - sourceTokens: tokens, - warnings: externalContext.warnings - }; - - return doInlineImports(inlinerContext); -} - -function doInlineImports(inlinerContext) { - var token; - var i, l; - - for (i = 0, l = inlinerContext.sourceTokens.length; i < l; i++) { - token = inlinerContext.sourceTokens[i]; - - if (token[0] == Token.AT_RULE && isImport(token[1])) { - inlinerContext.sourceTokens.splice(0, i); - return inlineStylesheet(token, inlinerContext); - } if (token[0] == Token.AT_RULE || token[0] == Token.COMMENT) { - inlinerContext.outputTokens.push(token); - } else { - inlinerContext.outputTokens.push(token); - inlinerContext.afterContent = true; - } - } - - inlinerContext.sourceTokens = []; - return inlinerContext.callback(inlinerContext.outputTokens); -} - -function inlineStylesheet(token, inlinerContext) { - var uriAndMediaQuery = extractImportUrlAndMedia(token[1]); - var uri = uriAndMediaQuery[0]; - var mediaQuery = uriAndMediaQuery[1]; - var metadata = token[2]; - - return isRemoteResource(uri) - ? inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) - : inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext); -} - -function inlineRemoteStylesheet(uri, mediaQuery, metadata, inlinerContext) { - var isAllowed = isAllowedResource(uri, true, inlinerContext.inline); - var originalUri = uri; - var isLoaded = uri in inlinerContext.externalContext.sourcesContent; - var isRuntimeResource = !hasProtocol(uri); - - if (inlinerContext.inlinedStylesheets.indexOf(uri) > -1) { - inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as it has already been imported.'); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - return doInlineImports(inlinerContext); - } if (inlinerContext.localOnly && inlinerContext.afterContent) { - inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as no callback given and after other content.'); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - return doInlineImports(inlinerContext); - } if (isRuntimeResource) { - inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as no protocol given.'); - inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1)); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - return doInlineImports(inlinerContext); - } if (inlinerContext.localOnly && !isLoaded) { - inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as no callback given.'); - inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1)); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - return doInlineImports(inlinerContext); - } if (!isAllowed && inlinerContext.afterContent) { - inlinerContext.warnings.push('Ignoring remote @import of "' + uri + '" as resource is not allowed and after other content.'); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - return doInlineImports(inlinerContext); - } if (!isAllowed) { - inlinerContext.warnings.push('Skipping remote @import of "' + uri + '" as resource is not allowed.'); - inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1)); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - return doInlineImports(inlinerContext); - } - - inlinerContext.inlinedStylesheets.push(uri); - - function whenLoaded(error, importedStyles) { - if (error) { - inlinerContext.errors.push('Broken @import declaration of "' + uri + '" - ' + error); - - return process.nextTick(function() { - inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1)); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - doInlineImports(inlinerContext); - }); - } - - inlinerContext.inline = inlinerContext.externalContext.options.inline; - inlinerContext.isRemote = true; - - inlinerContext.externalContext.source = originalUri; - inlinerContext.externalContext.sourcesContent[uri] = importedStyles; - inlinerContext.externalContext.stats.originalSize += importedStyles.length; - - return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function(importedTokens) { - importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata); - - inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - - return doInlineImports(inlinerContext); - }); - } - - return isLoaded - ? whenLoaded(null, inlinerContext.externalContext.sourcesContent[uri]) - : inlinerContext.fetch(uri, inlinerContext.inlineRequest, inlinerContext.inlineTimeout, whenLoaded); -} - -function inlineLocalStylesheet(uri, mediaQuery, metadata, inlinerContext) { - var protocolLessUri = uri.replace(FILE_RESOURCE_PROTOCOL, ''); - var currentPath = path.resolve(''); - var absoluteUri = path.isAbsolute(protocolLessUri) - ? path.resolve(currentPath, protocolLessUri[0] == '/' ? protocolLessUri.substring(1) : protocolLessUri) - : path.resolve(inlinerContext.rebaseTo, protocolLessUri); - var relativeToCurrentPath = path.relative(currentPath, absoluteUri); - var importedStyles; - var isAllowed = isAllowedResource(protocolLessUri, false, inlinerContext.inline); - var normalizedPath = normalizePath(relativeToCurrentPath); - var isLoaded = normalizedPath in inlinerContext.externalContext.sourcesContent; - - if (inlinerContext.inlinedStylesheets.indexOf(absoluteUri) > -1) { - inlinerContext.warnings.push('Ignoring local @import of "' + protocolLessUri + '" as it has already been imported.'); - } else if (isAllowed && !isLoaded && (!fs.existsSync(absoluteUri) || !fs.statSync(absoluteUri).isFile())) { - inlinerContext.errors.push('Ignoring local @import of "' + protocolLessUri + '" as resource is missing.'); - } else if (!isAllowed && inlinerContext.afterContent) { - inlinerContext.warnings.push('Ignoring local @import of "' + protocolLessUri + '" as resource is not allowed and after other content.'); - } else if (inlinerContext.afterContent) { - inlinerContext.warnings.push('Ignoring local @import of "' + protocolLessUri + '" as after other content.'); - } else if (!isAllowed) { - inlinerContext.warnings.push('Skipping local @import of "' + protocolLessUri + '" as resource is not allowed.'); - inlinerContext.outputTokens = inlinerContext.outputTokens.concat(inlinerContext.sourceTokens.slice(0, 1)); - } else { - importedStyles = isLoaded - ? inlinerContext.externalContext.sourcesContent[normalizedPath] - : fs.readFileSync(absoluteUri, 'utf-8'); - - if (importedStyles.charCodeAt(0) === 65279) { - importedStyles = importedStyles.substring(1); - } - - inlinerContext.inlinedStylesheets.push(absoluteUri); - inlinerContext.inline = inlinerContext.externalContext.options.inline; - - inlinerContext.externalContext.source = normalizedPath; - inlinerContext.externalContext.sourcesContent[normalizedPath] = importedStyles; - inlinerContext.externalContext.stats.originalSize += importedStyles.length; - - return fromStyles(importedStyles, inlinerContext.externalContext, inlinerContext, function(importedTokens) { - importedTokens = wrapInMedia(importedTokens, mediaQuery, metadata); - - inlinerContext.outputTokens = inlinerContext.outputTokens.concat(importedTokens); - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - - return doInlineImports(inlinerContext); - }); - } - - inlinerContext.sourceTokens = inlinerContext.sourceTokens.slice(1); - - return doInlineImports(inlinerContext); -} - -function wrapInMedia(tokens, mediaQuery, metadata) { - if (mediaQuery) { - return [[Token.NESTED_BLOCK, [[Token.NESTED_BLOCK_SCOPE, '@media ' + mediaQuery, metadata]], tokens]]; - } - return tokens; -} - -module.exports = readSources; - - -/***/ }), - -/***/ 9858: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var path = __webpack_require__(1017); - -function rebaseLocalMap(sourceMap, sourceUri, rebaseTo) { - var currentPath = path.resolve(''); - var absoluteUri = path.resolve(currentPath, sourceUri); - var absoluteUriDirectory = path.dirname(absoluteUri); - - sourceMap.sources = sourceMap.sources.map(function(source) { - return path.relative(rebaseTo, path.resolve(absoluteUriDirectory, source)); - }); - - return sourceMap; -} - -module.exports = rebaseLocalMap; - - -/***/ }), - -/***/ 978: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var path = __webpack_require__(1017); -var url = __webpack_require__(7310); - -function rebaseRemoteMap(sourceMap, sourceUri) { - var sourceDirectory = path.dirname(sourceUri); - - sourceMap.sources = sourceMap.sources.map(function(source) { - return url.resolve(sourceDirectory, source); - }); - - return sourceMap; -} - -module.exports = rebaseRemoteMap; - - -/***/ }), - -/***/ 8979: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var extractImportUrlAndMedia = __webpack_require__(3850); -var restoreImport = __webpack_require__(8058); -var rewriteUrl = __webpack_require__(6547); - -var Token = __webpack_require__(4633); -var isImport = __webpack_require__(7937); - -var SOURCE_MAP_COMMENT_PATTERN = /^\/\*# sourceMappingURL=(\S+) \*\/$/; - -function rebase(tokens, rebaseAll, validator, rebaseConfig) { - return rebaseAll - ? rebaseEverything(tokens, validator, rebaseConfig) - : rebaseAtRules(tokens, validator, rebaseConfig); -} - -function rebaseEverything(tokens, validator, rebaseConfig) { - var token; - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - - switch (token[0]) { - case Token.AT_RULE: - rebaseAtRule(token, validator, rebaseConfig); - break; - case Token.AT_RULE_BLOCK: - rebaseProperties(token[2], validator, rebaseConfig); - break; - case Token.COMMENT: - rebaseSourceMapComment(token, rebaseConfig); - break; - case Token.NESTED_BLOCK: - rebaseEverything(token[2], validator, rebaseConfig); - break; - case Token.RULE: - rebaseProperties(token[2], validator, rebaseConfig); - break; - } - } - - return tokens; -} - -function rebaseAtRules(tokens, validator, rebaseConfig) { - var token; - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - - switch (token[0]) { - case Token.AT_RULE: - rebaseAtRule(token, validator, rebaseConfig); - break; - } - } - - return tokens; -} - -function rebaseAtRule(token, validator, rebaseConfig) { - if (!isImport(token[1])) { - return; - } - - var uriAndMediaQuery = extractImportUrlAndMedia(token[1]); - var newUrl = rewriteUrl(uriAndMediaQuery[0], rebaseConfig); - var mediaQuery = uriAndMediaQuery[1]; - - token[1] = restoreImport(newUrl, mediaQuery); -} - -function rebaseSourceMapComment(token, rebaseConfig) { - var matches = SOURCE_MAP_COMMENT_PATTERN.exec(token[1]); - - if (matches && matches[1].indexOf('data:') === -1) { - token[1] = token[1].replace(matches[1], rewriteUrl(matches[1], rebaseConfig, true)); - } -} - -function rebaseProperties(properties, validator, rebaseConfig) { - var property; - var value; - var i, l; - var j, m; - - for (i = 0, l = properties.length; i < l; i++) { - property = properties[i]; - - for (j = 2 /* 0 is Token.PROPERTY, 1 is name */, m = property.length; j < m; j++) { - value = property[j][1]; - - if (validator.isUrl(value)) { - property[j][1] = rewriteUrl(value, rebaseConfig); - } - } - } -} - -module.exports = rebase; - - -/***/ }), - -/***/ 8058: -/***/ ((module) => { - -function restoreImport(uri, mediaQuery) { - return ('@import ' + uri + ' ' + mediaQuery).trim(); -} - -module.exports = restoreImport; - - -/***/ }), - -/***/ 6547: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var path = __webpack_require__(1017); -var url = __webpack_require__(7310); - -var isDataUriResource = __webpack_require__(9865); - -var DOUBLE_QUOTE = '"'; -var SINGLE_QUOTE = '\''; -var URL_PREFIX = 'url('; -var URL_SUFFIX = ')'; - -var PROTOCOL_LESS_PREFIX_PATTERN = /^[^\w\d]*\/\//; -var QUOTE_PREFIX_PATTERN = /^["']/; -var QUOTE_SUFFIX_PATTERN = /["']$/; -var ROUND_BRACKETS_PATTERN = /[()]/; -var URL_PREFIX_PATTERN = /^url\(/i; -var URL_SUFFIX_PATTERN = /\)$/; -var WHITESPACE_PATTERN = /\s/; - -var isWindows = process.platform == 'win32'; - -function rebase(uri, rebaseConfig) { - if (!rebaseConfig) { - return uri; - } - - if (isAbsolute(uri) && !isRemote(rebaseConfig.toBase)) { - return uri; - } - - if (isRemote(uri) || isSVGMarker(uri) || isInternal(uri) || isDataUriResource(uri)) { - return uri; - } - - if (isRemote(rebaseConfig.toBase)) { - return url.resolve(rebaseConfig.toBase, uri); - } - - return rebaseConfig.absolute - ? normalize(absolute(uri, rebaseConfig)) - : normalize(relative(uri, rebaseConfig)); -} - -function isAbsolute(uri) { - return path.isAbsolute(uri); -} - -function isSVGMarker(uri) { - return uri[0] == '#'; -} - -function isInternal(uri) { - return /^\w+:\w+/.test(uri); -} - -function isRemote(uri) { - return /^[^:]+?:\/\//.test(uri) || PROTOCOL_LESS_PREFIX_PATTERN.test(uri); -} - -function absolute(uri, rebaseConfig) { - return path - .resolve(path.join(rebaseConfig.fromBase || '', uri)) - .replace(rebaseConfig.toBase, ''); -} - -function relative(uri, rebaseConfig) { - return path.relative(rebaseConfig.toBase, path.join(rebaseConfig.fromBase || '', uri)); -} - -function normalize(uri) { - return isWindows ? uri.replace(/\\/g, '/') : uri; -} - -function quoteFor(unquotedUrl) { - if (unquotedUrl.indexOf(SINGLE_QUOTE) > -1) { - return DOUBLE_QUOTE; - } if (unquotedUrl.indexOf(DOUBLE_QUOTE) > -1) { - return SINGLE_QUOTE; - } if (hasWhitespace(unquotedUrl) || hasRoundBrackets(unquotedUrl)) { - return SINGLE_QUOTE; - } - return ''; -} - -function hasWhitespace(url) { - return WHITESPACE_PATTERN.test(url); -} - -function hasRoundBrackets(url) { - return ROUND_BRACKETS_PATTERN.test(url); -} - -function rewriteUrl(originalUrl, rebaseConfig, pathOnly) { - var strippedUrl = originalUrl - .replace(URL_PREFIX_PATTERN, '') - .replace(URL_SUFFIX_PATTERN, '') - .trim(); - - var unquotedUrl = strippedUrl - .replace(QUOTE_PREFIX_PATTERN, '') - .replace(QUOTE_SUFFIX_PATTERN, '') - .trim(); - - var quote = strippedUrl[0] == SINGLE_QUOTE || strippedUrl[0] == DOUBLE_QUOTE - ? strippedUrl[0] - : quoteFor(unquotedUrl); - - return pathOnly - ? rebase(unquotedUrl, rebaseConfig) - : URL_PREFIX + quote + rebase(unquotedUrl, rebaseConfig) + quote + URL_SUFFIX; -} - -module.exports = rewriteUrl; - - -/***/ }), - -/***/ 3820: -/***/ ((module) => { - -var Marker = { - ASTERISK: '*', - AT: '@', - BACK_SLASH: '\\', - CARRIAGE_RETURN: '\r', - CLOSE_CURLY_BRACKET: '}', - CLOSE_ROUND_BRACKET: ')', - CLOSE_SQUARE_BRACKET: ']', - COLON: ':', - COMMA: ',', - DOUBLE_QUOTE: '"', - EXCLAMATION: '!', - FORWARD_SLASH: '/', - INTERNAL: '-clean-css-', - NEW_LINE_NIX: '\n', - OPEN_CURLY_BRACKET: '{', - OPEN_ROUND_BRACKET: '(', - OPEN_SQUARE_BRACKET: '[', - SEMICOLON: ';', - SINGLE_QUOTE: '\'', - SPACE: ' ', - TAB: '\t', - UNDERSCORE: '_' -}; - -module.exports = Marker; - - -/***/ }), - -/***/ 4633: -/***/ ((module) => { - -var Token = { - AT_RULE: 'at-rule', // e.g. `@import`, `@charset` - AT_RULE_BLOCK: 'at-rule-block', // e.g. `@font-face{...}` - AT_RULE_BLOCK_SCOPE: 'at-rule-block-scope', // e.g. `@font-face` - COMMENT: 'comment', // e.g. `/* comment */` - NESTED_BLOCK: 'nested-block', // e.g. `@media screen{...}`, `@keyframes animation {...}` - NESTED_BLOCK_SCOPE: 'nested-block-scope', // e.g. `@media`, `@keyframes` - PROPERTY: 'property', // e.g. `color:red` - PROPERTY_BLOCK: 'property-block', // e.g. `--var:{color:red}` - PROPERTY_NAME: 'property-name', // e.g. `color` - PROPERTY_VALUE: 'property-value', // e.g. `red` - RAW: 'raw', // e.g. anything between /* clean-css ignore:start */ and /* clean-css ignore:end */ comments - RULE: 'rule', // e.g `div > a{...}` - RULE_SCOPE: 'rule-scope' // e.g `div > a` -}; - -module.exports = Token; - - -/***/ }), - -/***/ 8584: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Marker = __webpack_require__(3820); -var Token = __webpack_require__(4633); - -var formatPosition = __webpack_require__(6187); - -var Level = { - BLOCK: 'block', - COMMENT: 'comment', - DOUBLE_QUOTE: 'double-quote', - RULE: 'rule', - SINGLE_QUOTE: 'single-quote' -}; - -var AT_RULES = [ - '@charset', - '@import' -]; - -var BLOCK_RULES = [ - '@-moz-document', - '@document', - '@-moz-keyframes', - '@-ms-keyframes', - '@-o-keyframes', - '@-webkit-keyframes', - '@keyframes', - '@media', - '@supports', - '@container', - '@layer' -]; - -var IGNORE_END_COMMENT_PATTERN = /\/\* clean-css ignore:end \*\/$/; -var IGNORE_START_COMMENT_PATTERN = /^\/\* clean-css ignore:start \*\//; - -var PAGE_MARGIN_BOXES = [ - '@bottom-center', - '@bottom-left', - '@bottom-left-corner', - '@bottom-right', - '@bottom-right-corner', - '@left-bottom', - '@left-middle', - '@left-top', - '@right-bottom', - '@right-middle', - '@right-top', - '@top-center', - '@top-left', - '@top-left-corner', - '@top-right', - '@top-right-corner' -]; - -var EXTRA_PAGE_BOXES = [ - '@footnote', - '@footnotes', - '@left', - '@page-float-bottom', - '@page-float-top', - '@right' -]; - -var REPEAT_PATTERN = /^\[\s{0,31}\d+\s{0,31}\]$/; -var TAIL_BROKEN_VALUE_PATTERN = /([^}])\}*$/; -var RULE_WORD_SEPARATOR_PATTERN = /[\s(]/; - -function tokenize(source, externalContext) { - var internalContext = { - level: Level.BLOCK, - position: { - source: externalContext.source || undefined, - line: 1, - column: 0, - index: 0 - } - }; - - return intoTokens(source, externalContext, internalContext, false); -} - -function intoTokens(source, externalContext, internalContext, isNested) { - var allTokens = []; - var newTokens = allTokens; - var lastToken; - var ruleToken; - var ruleTokens = []; - var propertyToken; - var metadata; - var metadatas = []; - var level = internalContext.level; - var levels = []; - var buffer = []; - var buffers = []; - var isBufferEmpty = true; - var serializedBuffer; - var serializedBufferPart; - var roundBracketLevel = 0; - var isQuoted; - var isSpace; - var isNewLineNix; - var isNewLineWin; - var isCarriageReturn; - var isCommentStart; - var wasCommentStart = false; - var isCommentEnd; - var wasCommentEnd = false; - var isCommentEndMarker; - var isEscaped; - var wasEscaped = false; - var characterWithNoSpecialMeaning; - var isPreviousDash = false; - var isVariable = false; - var isRaw = false; - var seekingValue = false; - var seekingPropertyBlockClosing = false; - var position = internalContext.position; - var lastCommentStartAt; - - for (; position.index < source.length; position.index++) { - var character = source[position.index]; - - isQuoted = level == Level.SINGLE_QUOTE || level == Level.DOUBLE_QUOTE; - isSpace = character == Marker.SPACE || character == Marker.TAB; - isNewLineNix = character == Marker.NEW_LINE_NIX; - isNewLineWin = character == Marker.NEW_LINE_NIX - && source[position.index - 1] == Marker.CARRIAGE_RETURN; - isCarriageReturn = character == Marker.CARRIAGE_RETURN - && source[position.index + 1] && source[position.index + 1] != Marker.NEW_LINE_NIX; - isCommentStart = !wasCommentEnd - && level != Level.COMMENT && !isQuoted - && character == Marker.ASTERISK && source[position.index - 1] == Marker.FORWARD_SLASH; - isCommentEndMarker = !wasCommentStart - && !isQuoted && character == Marker.FORWARD_SLASH - && source[position.index - 1] == Marker.ASTERISK; - isCommentEnd = level == Level.COMMENT && isCommentEndMarker; - characterWithNoSpecialMeaning = !isSpace && !isCarriageReturn && (character >= 'A' && character <= 'Z' || character >= 'a' && character <= 'z' || character >= '0' && character <= '9' || character == '-'); - isVariable = isVariable || (level != Level.COMMENT && !seekingValue && isPreviousDash && character === '-' && buffer.length === 1); - isPreviousDash = character === '-'; - roundBracketLevel = Math.max(roundBracketLevel, 0); - - metadata = isBufferEmpty - ? [position.line, position.column, position.source] - : metadata; - - if (isEscaped) { - // previous character was a backslash - buffer.push(character); - isBufferEmpty = false; - } else if (characterWithNoSpecialMeaning) { - // it's just an alphanumeric character or a hyphen (part of any rule or property name) so let's end it quickly - buffer.push(character); - isBufferEmpty = false; - } else if ((isSpace || isNewLineNix && !isNewLineWin) && (isQuoted || level == Level.COMMENT)) { - buffer.push(character); - isBufferEmpty = false; - } else if ((isSpace || isNewLineNix && !isNewLineWin) && isBufferEmpty) { - // noop - } else if (!isCommentEnd && level == Level.COMMENT) { - buffer.push(character); - isBufferEmpty = false; - } else if (!isCommentStart && !isCommentEnd && isRaw) { - buffer.push(character); - isBufferEmpty = false; - } else if (isCommentStart - && isVariable - && (level == Level.BLOCK || level == Level.RULE) && buffer.length > 1) { - // comment start within a variable, e.g. var(/*<-- - buffer.push(character); - isBufferEmpty = false; - - levels.push(level); - level = Level.COMMENT; - } else if (isCommentStart && (level == Level.BLOCK || level == Level.RULE) && buffer.length > 1) { - // comment start within block preceded by some content, e.g. div/*<-- - metadatas.push(metadata); - buffer.push(character); - buffers.push(buffer.slice(0, -2)); - isBufferEmpty = false; - - buffer = buffer.slice(-2); - metadata = [position.line, position.column - 1, position.source]; - - levels.push(level); - level = Level.COMMENT; - } else if (isCommentStart) { - // comment start, e.g. /*<-- - levels.push(level); - level = Level.COMMENT; - buffer.push(character); - isBufferEmpty = false; - } else if (isCommentEnd && isVariable) { - // comment end within a variable, e.g. var(/*!*/<-- - buffer.push(character); - level = levels.pop(); - } else if (isCommentEnd && isIgnoreStartComment(buffer)) { - // ignore:start comment end, e.g. /* clean-css ignore:start */<-- - serializedBuffer = buffer.join('').trim() + character; - lastToken = [ - Token.COMMENT, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]; - newTokens.push(lastToken); - - isRaw = true; - metadata = metadatas.pop() || null; - buffer = buffers.pop() || []; - isBufferEmpty = buffer.length === 0; - } else if (isCommentEnd && isIgnoreEndComment(buffer)) { - // ignore:start comment end, e.g. /* clean-css ignore:end */<-- - serializedBuffer = buffer.join('') + character; - lastCommentStartAt = serializedBuffer.lastIndexOf(Marker.FORWARD_SLASH + Marker.ASTERISK); - - serializedBufferPart = serializedBuffer.substring(0, lastCommentStartAt); - lastToken = [ - Token.RAW, - serializedBufferPart, - [originalMetadata(metadata, serializedBufferPart, externalContext)] - ]; - newTokens.push(lastToken); - - serializedBufferPart = serializedBuffer.substring(lastCommentStartAt); - metadata = [position.line, position.column - serializedBufferPart.length + 1, position.source]; - lastToken = [ - Token.COMMENT, - serializedBufferPart, - [originalMetadata(metadata, serializedBufferPart, externalContext)] - ]; - newTokens.push(lastToken); - - isRaw = false; - level = levels.pop(); - metadata = metadatas.pop() || null; - buffer = buffers.pop() || []; - isBufferEmpty = buffer.length === 0; - } else if (isCommentEnd) { - // comment end, e.g. /* comment */<-- - serializedBuffer = buffer.join('').trim() + character; - lastToken = [ - Token.COMMENT, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]; - newTokens.push(lastToken); - - level = levels.pop(); - metadata = metadatas.pop() || null; - buffer = buffers.pop() || []; - isBufferEmpty = buffer.length === 0; - } else if (isCommentEndMarker && source[position.index + 1] != Marker.ASTERISK) { - externalContext.warnings.push('Unexpected \'*/\' at ' + formatPosition([position.line, position.column, position.source]) + '.'); - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.SINGLE_QUOTE && !isQuoted) { - // single quotation start, e.g. a[href^='https<-- - levels.push(level); - level = Level.SINGLE_QUOTE; - buffer.push(character); - isBufferEmpty = false; - } else if (character == Marker.SINGLE_QUOTE && level == Level.SINGLE_QUOTE) { - // single quotation end, e.g. a[href^='https'<-- - level = levels.pop(); - buffer.push(character); - isBufferEmpty = false; - } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) { - // double quotation start, e.g. a[href^="<-- - levels.push(level); - level = Level.DOUBLE_QUOTE; - buffer.push(character); - isBufferEmpty = false; - } else if (character == Marker.DOUBLE_QUOTE && level == Level.DOUBLE_QUOTE) { - // double quotation end, e.g. a[href^="https"<-- - level = levels.pop(); - buffer.push(character); - isBufferEmpty = false; - } else if (character != Marker.CLOSE_ROUND_BRACKET - && character != Marker.OPEN_ROUND_BRACKET - && level != Level.COMMENT && !isQuoted && roundBracketLevel > 0) { - // character inside any function, e.g. hsla(.<-- - buffer.push(character); - isBufferEmpty = false; - } else if (character == Marker.OPEN_ROUND_BRACKET - && !isQuoted && level != Level.COMMENT - && !seekingValue) { - // round open bracket, e.g. @import url(<-- - buffer.push(character); - isBufferEmpty = false; - - roundBracketLevel++; - } else if (character == Marker.CLOSE_ROUND_BRACKET - && !isQuoted - && level != Level.COMMENT - && !seekingValue) { - // round open bracket, e.g. @import url(test.css)<-- - buffer.push(character); - isBufferEmpty = false; - - roundBracketLevel--; - } else if (character == Marker.SEMICOLON && level == Level.BLOCK && buffer[0] == Marker.AT) { - // semicolon ending rule at block level, e.g. @import '...';<-- - serializedBuffer = buffer.join('').trim(); - allTokens.push([ - Token.AT_RULE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.COMMA && level == Level.BLOCK && ruleToken) { - // comma separator at block level, e.g. a,div,<-- - serializedBuffer = buffer.join('').trim(); - ruleToken[1].push([ - tokenScopeFrom(ruleToken[0]), - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.COMMA && level == Level.BLOCK && tokenTypeFrom(buffer) == Token.AT_RULE) { - // comma separator at block level, e.g. @import url(...) screen,<-- - // keep iterating as end semicolon will create the token - buffer.push(character); - isBufferEmpty = false; - } else if (character == Marker.COMMA && level == Level.BLOCK) { - // comma separator at block level, e.g. a,<-- - ruleToken = [tokenTypeFrom(buffer), [], []]; - serializedBuffer = buffer.join('').trim(); - ruleToken[1].push([ - tokenScopeFrom(ruleToken[0]), - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext, 0)] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.OPEN_CURLY_BRACKET - && level == Level.BLOCK - && ruleToken - && ruleToken[0] == Token.NESTED_BLOCK) { - // open brace opening at-rule at block level, e.g. @media{<-- - serializedBuffer = buffer.join('').trim(); - ruleToken[1].push([ - Token.NESTED_BLOCK_SCOPE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - allTokens.push(ruleToken); - - levels.push(level); - position.column++; - position.index++; - buffer = []; - isBufferEmpty = true; - - ruleToken[2] = intoTokens(source, externalContext, internalContext, true); - ruleToken = null; - } else if (character == Marker.OPEN_CURLY_BRACKET - && level == Level.BLOCK - && tokenTypeFrom(buffer) == Token.NESTED_BLOCK) { - // open brace opening at-rule at block level, e.g. @media{<-- - serializedBuffer = buffer.join('').trim(); - ruleToken = ruleToken || [Token.NESTED_BLOCK, [], []]; - ruleToken[1].push([ - Token.NESTED_BLOCK_SCOPE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - allTokens.push(ruleToken); - - levels.push(level); - position.column++; - position.index++; - buffer = []; - isBufferEmpty = true; - isVariable = false; - - ruleToken[2] = intoTokens(source, externalContext, internalContext, true); - ruleToken = null; - } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.BLOCK) { - // open brace opening rule at block level, e.g. div{<-- - serializedBuffer = buffer.join('').trim(); - ruleToken = ruleToken || [tokenTypeFrom(buffer), [], []]; - ruleToken[1].push([ - tokenScopeFrom(ruleToken[0]), - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext, ruleToken[1].length)] - ]); - newTokens = ruleToken[2]; - allTokens.push(ruleToken); - - levels.push(level); - level = Level.RULE; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && seekingValue) { - // open brace opening rule at rule level, e.g. div{--variable:{<-- - ruleTokens.push(ruleToken); - ruleToken = [Token.PROPERTY_BLOCK, []]; - propertyToken.push(ruleToken); - newTokens = ruleToken[1]; - - levels.push(level); - level = Level.RULE; - seekingValue = false; - } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && isPageMarginBox(buffer)) { - // open brace opening page-margin box at rule level, e.g. @page{@top-center{<-- - serializedBuffer = buffer.join('').trim(); - ruleTokens.push(ruleToken); - ruleToken = [Token.AT_RULE_BLOCK, [], []]; - ruleToken[1].push([ - Token.AT_RULE_BLOCK_SCOPE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - newTokens.push(ruleToken); - newTokens = ruleToken[2]; - - levels.push(level); - level = Level.RULE; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.COLON && level == Level.RULE && !seekingValue) { - // colon at rule level, e.g. a{color:<-- - serializedBuffer = buffer.join('').trim(); - propertyToken = [ - Token.PROPERTY, - [ - Token.PROPERTY_NAME, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ] - ]; - newTokens.push(propertyToken); - - seekingValue = true; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.SEMICOLON - && level == Level.RULE - && propertyToken - && ruleTokens.length > 0 - && !isBufferEmpty - && buffer[0] == Marker.AT) { - // semicolon at rule level for at-rule, e.g. a{--color:{@apply(--other-color);<-- - serializedBuffer = buffer.join('').trim(); - ruleToken[1].push([ - Token.AT_RULE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && !isBufferEmpty) { - // semicolon at rule level, e.g. a{color:red;<-- - serializedBuffer = buffer.join('').trim(); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - propertyToken = null; - seekingValue = false; - buffer = []; - isBufferEmpty = true; - isVariable = false; - } else if (character == Marker.SEMICOLON - && level == Level.RULE - && propertyToken - && isBufferEmpty - && isVariable - && !propertyToken[2]) { - // semicolon after empty variable value at rule level, e.g. a{--color: ;<-- - propertyToken.push([Token.PROPERTY_VALUE, ' ', [originalMetadata(metadata, ' ', externalContext)]]); - isVariable = false; - propertyToken = null; - seekingValue = false; - } else if (character == Marker.SEMICOLON && level == Level.RULE && propertyToken && isBufferEmpty) { - // semicolon after bracketed value at rule level, e.g. a{color:rgb(...);<-- - propertyToken = null; - seekingValue = false; - } else if (character == Marker.SEMICOLON - && level == Level.RULE - && !isBufferEmpty - && buffer[0] == Marker.AT) { - // semicolon for at-rule at rule level, e.g. a{@apply(--variable);<-- - serializedBuffer = buffer.join(''); - newTokens.push([ - Token.AT_RULE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - seekingValue = false; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.SEMICOLON && level == Level.RULE && seekingPropertyBlockClosing) { - // close brace after a property block at rule level, e.g. a{--custom:{color:red;};<-- - seekingPropertyBlockClosing = false; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.SEMICOLON && level == Level.RULE && isBufferEmpty) { - // stray semicolon at rule level, e.g. a{;<-- - // noop - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.RULE - && propertyToken - && seekingValue - && !isBufferEmpty && ruleTokens.length > 0) { - // close brace at rule level, e.g. a{--color:{color:red}<-- - serializedBuffer = buffer.join(''); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - propertyToken = null; - ruleToken = ruleTokens.pop(); - newTokens = ruleToken[2]; - - level = levels.pop(); - seekingValue = false; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.RULE - && propertyToken - && !isBufferEmpty - && buffer[0] == Marker.AT - && ruleTokens.length > 0) { - // close brace at rule level for at-rule, e.g. a{--color:{@apply(--other-color)}<-- - serializedBuffer = buffer.join(''); - ruleToken[1].push([ - Token.AT_RULE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - propertyToken = null; - ruleToken = ruleTokens.pop(); - newTokens = ruleToken[2]; - - level = levels.pop(); - seekingValue = false; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.RULE - && propertyToken - && ruleTokens.length > 0) { - // close brace at rule level after space, e.g. a{--color:{color:red }<-- - propertyToken = null; - ruleToken = ruleTokens.pop(); - newTokens = ruleToken[2]; - - level = levels.pop(); - seekingValue = false; - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.RULE - && propertyToken - && !isBufferEmpty) { - // close brace at rule level, e.g. a{color:red}<-- - serializedBuffer = buffer.join(''); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - propertyToken = null; - ruleToken = ruleTokens.pop(); - newTokens = allTokens; - - level = levels.pop(); - seekingValue = false; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.RULE - && !isBufferEmpty - && buffer[0] == Marker.AT) { - // close brace after at-rule at rule level, e.g. a{@apply(--variable)}<-- - propertyToken = null; - ruleToken = null; - serializedBuffer = buffer.join('').trim(); - newTokens.push([ - Token.AT_RULE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - newTokens = allTokens; - - level = levels.pop(); - seekingValue = false; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.RULE - && levels[levels.length - 1] == Level.RULE) { - // close brace after a property block at rule level, e.g. a{--custom:{color:red;}<-- - propertyToken = null; - ruleToken = ruleTokens.pop(); - newTokens = ruleToken[2]; - - level = levels.pop(); - seekingValue = false; - seekingPropertyBlockClosing = true; - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.RULE - && isVariable - && propertyToken - && !propertyToken[2]) { - // close brace after an empty variable declaration inside a rule, e.g. a{--color: }<-- - propertyToken.push([Token.PROPERTY_VALUE, ' ', [originalMetadata(metadata, ' ', externalContext)]]); - isVariable = false; - propertyToken = null; - ruleToken = null; - newTokens = allTokens; - - level = levels.pop(); - seekingValue = false; - isVariable = false; - } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.RULE) { - // close brace after a rule, e.g. a{color:red;}<-- - propertyToken = null; - ruleToken = null; - newTokens = allTokens; - - level = levels.pop(); - seekingValue = false; - isVariable = false; - } else if (character == Marker.CLOSE_CURLY_BRACKET - && level == Level.BLOCK - && !isNested - && position.index <= source.length - 1) { - // stray close brace at block level, e.g. a{color:red}color:blue}<-- - externalContext.warnings.push('Unexpected \'}\' at ' + formatPosition([position.line, position.column, position.source]) + '.'); - buffer.push(character); - isBufferEmpty = false; - } else if (character == Marker.CLOSE_CURLY_BRACKET && level == Level.BLOCK) { - // close brace at block level, e.g. @media screen {...}<-- - break; - } else if (character == Marker.OPEN_ROUND_BRACKET && level == Level.RULE && seekingValue) { - // round open bracket, e.g. a{color:hsla(<-- - buffer.push(character); - isBufferEmpty = false; - roundBracketLevel++; - } else if (character == Marker.CLOSE_ROUND_BRACKET - && level == Level.RULE - && seekingValue - && roundBracketLevel == 1) { - // round close bracket, e.g. a{color:hsla(0,0%,0%)<-- - buffer.push(character); - isBufferEmpty = false; - serializedBuffer = buffer.join('').trim(); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - roundBracketLevel--; - buffer = []; - isBufferEmpty = true; - isVariable = false; - } else if (character == Marker.CLOSE_ROUND_BRACKET && level == Level.RULE && seekingValue) { - // round close bracket within other brackets, e.g. a{width:calc((10rem / 2)<-- - buffer.push(character); - isBufferEmpty = false; - isVariable = false; - roundBracketLevel--; - } else if (character == Marker.FORWARD_SLASH - && source[position.index + 1] != Marker.ASTERISK - && level == Level.RULE - && seekingValue - && !isBufferEmpty) { - // forward slash within a property, e.g. a{background:url(image.png) 0 0/<-- - serializedBuffer = buffer.join('').trim(); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - propertyToken.push([ - Token.PROPERTY_VALUE, - character, - [[position.line, position.column, position.source]] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.FORWARD_SLASH - && source[position.index + 1] != Marker.ASTERISK - && level == Level.RULE - && seekingValue) { - // forward slash within a property after space, e.g. a{background:url(image.png) 0 0 /<-- - propertyToken.push([ - Token.PROPERTY_VALUE, - character, - [[position.line, position.column, position.source]] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.COMMA && level == Level.RULE && seekingValue && !isBufferEmpty) { - // comma within a property, e.g. a{background:url(image.png),<-- - serializedBuffer = buffer.join('').trim(); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - propertyToken.push([ - Token.PROPERTY_VALUE, - character, - [[position.line, position.column, position.source]] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.COMMA && level == Level.RULE && seekingValue) { - // comma within a property after space, e.g. a{background:url(image.png) ,<-- - propertyToken.push([ - Token.PROPERTY_VALUE, - character, - [[position.line, position.column, position.source]] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (character == Marker.CLOSE_SQUARE_BRACKET - && propertyToken - && propertyToken.length > 1 - && !isBufferEmpty - && isRepeatToken(buffer)) { - buffer.push(character); - serializedBuffer = buffer.join('').trim(); - propertyToken[propertyToken.length - 1][1] += serializedBuffer; - - buffer = []; - isBufferEmpty = true; - } else if ((isSpace || (isNewLineNix && !isNewLineWin)) - && level == Level.RULE - && seekingValue - && propertyToken - && !isBufferEmpty) { - // space or *nix newline within property, e.g. a{margin:0 <-- - serializedBuffer = buffer.join('').trim(); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (isNewLineWin && level == Level.RULE && seekingValue && propertyToken && buffer.length > 1) { - // win newline within property, e.g. a{margin:0\r\n<-- - serializedBuffer = buffer.join('').trim(); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - buffer = []; - isBufferEmpty = true; - } else if (isNewLineWin && level == Level.RULE && seekingValue) { - // win newline - buffer = []; - isBufferEmpty = true; - } else if (isNewLineWin && buffer.length == 1) { - // ignore windows newline which is composed of two characters - buffer.pop(); - isBufferEmpty = buffer.length === 0; - } else if (!isBufferEmpty || !isSpace && !isNewLineNix && !isNewLineWin && !isCarriageReturn) { - // any character - buffer.push(character); - isBufferEmpty = false; - } - - wasEscaped = isEscaped; - isEscaped = !wasEscaped && character == Marker.BACK_SLASH; - wasCommentStart = isCommentStart; - wasCommentEnd = isCommentEnd; - - position.line = (isNewLineWin || isNewLineNix || isCarriageReturn) ? position.line + 1 : position.line; - position.column = (isNewLineWin || isNewLineNix || isCarriageReturn) ? 0 : position.column + 1; - } - - if (seekingValue) { - externalContext.warnings.push('Missing \'}\' at ' + formatPosition([position.line, position.column, position.source]) + '.'); - } - - if (seekingValue && buffer.length > 0) { - serializedBuffer = buffer.join('').trimRight().replace(TAIL_BROKEN_VALUE_PATTERN, '$1').trimRight(); - propertyToken.push([ - Token.PROPERTY_VALUE, - serializedBuffer, - [originalMetadata(metadata, serializedBuffer, externalContext)] - ]); - - buffer = []; - } - - if (buffer.length > 0) { - externalContext.warnings.push('Invalid character(s) \'' + buffer.join('') + '\' at ' + formatPosition(metadata) + '. Ignoring.'); - } - - return allTokens; -} - -function isIgnoreStartComment(buffer) { - return IGNORE_START_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH); -} - -function isIgnoreEndComment(buffer) { - return IGNORE_END_COMMENT_PATTERN.test(buffer.join('') + Marker.FORWARD_SLASH); -} - -function originalMetadata(metadata, value, externalContext, selectorFallbacks) { - var source = metadata[2]; - - return externalContext.inputSourceMapTracker.isTracking(source) - ? externalContext.inputSourceMapTracker.originalPositionFor(metadata, value.length, selectorFallbacks) - : metadata; -} - -function tokenTypeFrom(buffer) { - var isAtRule = buffer[0] == Marker.AT || buffer[0] == Marker.UNDERSCORE; - var ruleWord = buffer.join('').split(RULE_WORD_SEPARATOR_PATTERN)[0]; - - if (isAtRule && BLOCK_RULES.indexOf(ruleWord) > -1) { - return Token.NESTED_BLOCK; - } if (isAtRule && AT_RULES.indexOf(ruleWord) > -1) { - return Token.AT_RULE; - } if (isAtRule) { - return Token.AT_RULE_BLOCK; - } - return Token.RULE; -} - -function tokenScopeFrom(tokenType) { - if (tokenType == Token.RULE) { - return Token.RULE_SCOPE; - } if (tokenType == Token.NESTED_BLOCK) { - return Token.NESTED_BLOCK_SCOPE; - } if (tokenType == Token.AT_RULE_BLOCK) { - return Token.AT_RULE_BLOCK_SCOPE; - } -} - -function isPageMarginBox(buffer) { - var serializedBuffer = buffer.join('').trim(); - - return PAGE_MARGIN_BOXES.indexOf(serializedBuffer) > -1 || EXTRA_PAGE_BOXES.indexOf(serializedBuffer) > -1; -} - -function isRepeatToken(buffer) { - return REPEAT_PATTERN.test(buffer.join('') + Marker.CLOSE_SQUARE_BRACKET); -} - -module.exports = tokenize; - - -/***/ }), - -/***/ 3449: -/***/ ((module) => { - -function cloneArray(array) { - var cloned = array.slice(0); - - for (var i = 0, l = cloned.length; i < l; i++) { - if (Array.isArray(cloned[i])) { cloned[i] = cloneArray(cloned[i]); } - } - - return cloned; -} - -module.exports = cloneArray; - - -/***/ }), - -/***/ 6187: -/***/ ((module) => { - -function formatPosition(metadata) { - var line = metadata[0]; - var column = metadata[1]; - var source = metadata[2]; - - return source - ? source + ':' + line + ':' + column - : line + ':' + column; -} - -module.exports = formatPosition; - - -/***/ }), - -/***/ 3884: -/***/ ((module) => { - -var NO_PROTOCOL_RESOURCE_PATTERN = /^\/\//; - -function hasProtocol(uri) { - return !NO_PROTOCOL_RESOURCE_PATTERN.test(uri); -} - -module.exports = hasProtocol; - - -/***/ }), - -/***/ 9865: -/***/ ((module) => { - -var DATA_URI_PATTERN = /^data:(\S{0,31}?)?(;charset=(?:(?!;charset=)[^;])+)?(;[^,]+?)?,(.+)/; - -function isDataUriResource(uri) { - return DATA_URI_PATTERN.test(uri); -} - -module.exports = isDataUriResource; - - -/***/ }), - -/***/ 8276: -/***/ ((module) => { - -var HTTP_RESOURCE_PATTERN = /^http:\/\//; - -function isHttpResource(uri) { - return HTTP_RESOURCE_PATTERN.test(uri); -} - -module.exports = isHttpResource; - - -/***/ }), - -/***/ 6683: -/***/ ((module) => { - -var HTTPS_RESOURCE_PATTERN = /^https:\/\//; - -function isHttpsResource(uri) { - return HTTPS_RESOURCE_PATTERN.test(uri); -} - -module.exports = isHttpsResource; - - -/***/ }), - -/***/ 7937: -/***/ ((module) => { - -var IMPORT_PREFIX_PATTERN = /^@import/i; - -function isImport(value) { - return IMPORT_PREFIX_PATTERN.test(value); -} - -module.exports = isImport; - - -/***/ }), - -/***/ 4234: -/***/ ((module) => { - -var REMOTE_RESOURCE_PATTERN = /^(\w+:\/\/|\/\/)/; -var FILE_RESOURCE_PATTERN = /^file:\/\//; - -function isRemoteResource(uri) { - return REMOTE_RESOURCE_PATTERN.test(uri) && !FILE_RESOURCE_PATTERN.test(uri); -} - -module.exports = isRemoteResource; - - -/***/ }), - -/***/ 3814: -/***/ ((module) => { - -// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956 - -var NUMBER_PATTERN = /([0-9]+)/; - -function naturalCompare(value1, value2) { - var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt); - var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt); - var key1; - var key2; - var compareFirst = Math.min(keys1.length, keys2.length); - var i, l; - - for (i = 0, l = compareFirst; i < l; i++) { - key1 = keys1[i]; - key2 = keys2[i]; - - if (key1 != key2) { - return key1 > key2 ? 1 : -1; - } - } - - return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1); -} - -function tryParseInt(value) { - return ('' + parseInt(value)) == value - ? parseInt(value) - : value; -} - -module.exports = naturalCompare; - - -/***/ }), - -/***/ 8832: -/***/ ((module) => { - -function override(source1, source2) { - var target = {}; - var key1; - var key2; - var item; - - for (key1 in source1) { - item = source1[key1]; - - if (Array.isArray(item)) { - target[key1] = item.slice(0); - } else if (typeof item == 'object' && item !== null) { - target[key1] = override(item, {}); - } else { - target[key1] = item; - } - } - - for (key2 in source2) { - item = source2[key2]; - - if (key2 in target && Array.isArray(item)) { - target[key2] = item.slice(0); - } else if (key2 in target && typeof item == 'object' && item !== null) { - target[key2] = override(target[key2], item); - } else { - target[key2] = item; - } - } - - return target; -} - -module.exports = override; - - -/***/ }), - -/***/ 6439: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Marker = __webpack_require__(3820); - -function is(value, separator, isSeparatorRegex) { - return isSeparatorRegex - ? separator.test(value) - : value === separator; -} - -function split(value, separator) { - var openLevel = Marker.OPEN_ROUND_BRACKET; - var closeLevel = Marker.CLOSE_ROUND_BRACKET; - var level = 0; - var cursor = 0; - var lastStart = 0; - var lastValue; - var lastCharacter; - var len = value.length; - var parts = []; - var isSeparatorRegex = typeof (separator) == 'object' && 'exec' in separator; - - if (!isSeparatorRegex && value.indexOf(separator) == -1) { - return [value]; - } - - if (value.indexOf(openLevel) == -1) { - return value.split(separator); - } - - while (cursor < len) { - if (value[cursor] == openLevel) { - level++; - } else if (value[cursor] == closeLevel) { - level--; - } - - if (level === 0 && cursor > 0 && cursor + 1 < len && is(value[cursor], separator, isSeparatorRegex)) { - parts.push(value.substring(lastStart, cursor)); - - if (isSeparatorRegex && separator.exec(value[cursor]).length > 1) { - parts.push(value[cursor]); - } - - lastStart = cursor + 1; - } - - cursor++; - } - - if (lastStart < cursor + 1) { - lastValue = value.substring(lastStart); - lastCharacter = lastValue[lastValue.length - 1]; - if (is(lastCharacter, separator, isSeparatorRegex)) { - lastValue = lastValue.substring(0, lastValue.length - 1); - } - - parts.push(lastValue); - } - - return parts; -} - -module.exports = split; - - -/***/ }), - -/***/ 4307: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var emptyCharacter = ''; - -var Breaks = (__webpack_require__(4687).Breaks); -var Spaces = (__webpack_require__(4687).Spaces); - -var Marker = __webpack_require__(3820); -var Token = __webpack_require__(4633); - -function supportsAfterClosingBrace(token) { - return token[1][1] == 'background' || token[1][1] == 'transform' || token[1][1] == 'src'; -} - -function afterClosingBrace(token, valueIndex) { - return token[valueIndex][1][token[valueIndex][1].length - 1] == Marker.CLOSE_ROUND_BRACKET; -} - -function afterComma(token, valueIndex) { - return token[valueIndex][1] == Marker.COMMA; -} - -function afterSlash(token, valueIndex) { - return token[valueIndex][1] == Marker.FORWARD_SLASH; -} - -function beforeComma(token, valueIndex) { - return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.COMMA; -} - -function beforeSlash(token, valueIndex) { - return token[valueIndex + 1] && token[valueIndex + 1][1] == Marker.FORWARD_SLASH; -} - -function inFilter(token) { - return token[1][1] == 'filter' || token[1][1] == '-ms-filter'; -} - -function disallowsSpace(context, token, valueIndex) { - return !context.spaceAfterClosingBrace - && supportsAfterClosingBrace(token) - && afterClosingBrace(token, valueIndex) - || beforeSlash(token, valueIndex) - || afterSlash(token, valueIndex) - || beforeComma(token, valueIndex) - || afterComma(token, valueIndex); -} - -function rules(context, tokens) { - var store = context.store; - - for (var i = 0, l = tokens.length; i < l; i++) { - store(context, tokens[i]); - - if (i < l - 1) { - store(context, comma(context)); - } - } -} - -function body(context, tokens) { - var lastPropertyAt = lastPropertyIndex(tokens); - - for (var i = 0, l = tokens.length; i < l; i++) { - property(context, tokens, i, lastPropertyAt); - } -} - -function lastPropertyIndex(tokens) { - var index = tokens.length - 1; - - for (; index >= 0; index--) { - if (tokens[index][0] != Token.COMMENT) { - break; - } - } - - return index; -} - -function property(context, tokens, position, lastPropertyAt) { - var store = context.store; - var token = tokens[position]; - - var propertyValue = token[2]; - var isPropertyBlock = propertyValue && propertyValue[0] === Token.PROPERTY_BLOCK; - - var needsSemicolon; - if (context.format) { - if (context.format.semicolonAfterLastProperty || isPropertyBlock) { - needsSemicolon = true; - } else if (position < lastPropertyAt) { - needsSemicolon = true; - } else { - needsSemicolon = false; - } - } else { - needsSemicolon = position < lastPropertyAt || isPropertyBlock; - } - - var isLast = position === lastPropertyAt; - - switch (token[0]) { - case Token.AT_RULE: - store(context, token); - store(context, semicolon(context, Breaks.AfterProperty, false)); - break; - case Token.AT_RULE_BLOCK: - rules(context, token[1]); - store(context, openBrace(context, Breaks.AfterRuleBegins, true)); - body(context, token[2]); - store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast)); - break; - case Token.COMMENT: - store(context, token); - store(context, breakFor(context, Breaks.AfterComment) + context.indentWith); - break; - case Token.PROPERTY: - store(context, token[1]); - store(context, colon(context)); - if (propertyValue) { - value(context, token); - } - store( - context, - needsSemicolon ? semicolon(context, Breaks.AfterProperty, isLast) : emptyCharacter - ); - break; - case Token.RAW: - store(context, token); - } -} - -function value(context, token) { - var store = context.store; - var j, m; - - if (token[2][0] == Token.PROPERTY_BLOCK) { - store(context, openBrace(context, Breaks.AfterBlockBegins, false)); - body(context, token[2][1]); - store(context, closeBrace(context, Breaks.AfterBlockEnds, false, true)); - } else { - for (j = 2, m = token.length; j < m; j++) { - store(context, token[j]); - - if (j < m - 1 && (inFilter(token) || !disallowsSpace(context, token, j))) { - store(context, Marker.SPACE); - } - } - } -} - -function breakFor(context, where) { - return context.format ? context.format.breaks[where] : emptyCharacter; -} - -function allowsSpace(context, where) { - return context.format && context.format.spaces[where]; -} - -function openBrace(context, where, needsPrefixSpace) { - if (context.format) { - context.indentBy += context.format.indentBy; - context.indentWith = context.format.indentWith.repeat(context.indentBy); - return ( - needsPrefixSpace - && allowsSpace(context, Spaces.BeforeBlockBegins) ? Marker.SPACE : emptyCharacter - ) + Marker.OPEN_CURLY_BRACKET - + breakFor(context, where) - + context.indentWith; - } - return Marker.OPEN_CURLY_BRACKET; -} - -function closeBrace(context, where, beforeBlockEnd, isLast) { - if (context.format) { - context.indentBy -= context.format.indentBy; - context.indentWith = context.format.indentWith.repeat(context.indentBy); - return ( - beforeBlockEnd - ? breakFor(context, Breaks.BeforeBlockEnds) - : breakFor(context, Breaks.AfterProperty) - ) + context.indentWith - + Marker.CLOSE_CURLY_BRACKET - + (isLast ? emptyCharacter : breakFor(context, where) + context.indentWith); - } - return Marker.CLOSE_CURLY_BRACKET; -} - -function colon(context) { - return context.format - ? Marker.COLON + (allowsSpace(context, Spaces.BeforeValue) ? Marker.SPACE : emptyCharacter) - : Marker.COLON; -} - -function semicolon(context, where, isLast) { - return context.format - ? Marker.SEMICOLON + (isLast ? emptyCharacter : (breakFor(context, where) + context.indentWith)) - : Marker.SEMICOLON; -} - -function comma(context) { - return context.format - ? Marker.COMMA + breakFor(context, Breaks.BetweenSelectors) + context.indentWith - : Marker.COMMA; -} - -function all(context, tokens) { - var store = context.store; - var token; - var isLast; - var i, l; - - for (i = 0, l = tokens.length; i < l; i++) { - token = tokens[i]; - isLast = i == l - 1; - - switch (token[0]) { - case Token.AT_RULE: - store(context, token); - store(context, semicolon(context, Breaks.AfterAtRule, isLast)); - break; - case Token.AT_RULE_BLOCK: - rules(context, token[1]); - store(context, openBrace(context, Breaks.AfterRuleBegins, true)); - body(context, token[2]); - store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast)); - break; - case Token.NESTED_BLOCK: - rules(context, token[1]); - store(context, openBrace(context, Breaks.AfterBlockBegins, true)); - all(context, token[2]); - store(context, closeBrace(context, Breaks.AfterBlockEnds, true, isLast)); - break; - case Token.COMMENT: - store(context, token); - store(context, breakFor(context, Breaks.AfterComment) + context.indentWith); - break; - case Token.RAW: - store(context, token); - break; - case Token.RULE: - rules(context, token[1]); - store(context, openBrace(context, Breaks.AfterRuleBegins, true)); - body(context, token[2]); - store(context, closeBrace(context, Breaks.AfterRuleEnds, false, isLast)); - break; - } - } -} - -module.exports = { - all: all, - body: body, - property: property, - rules: rules, - value: value -}; - - -/***/ }), - -/***/ 3694: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var helpers = __webpack_require__(4307); - -function store(serializeContext, token) { - serializeContext.output.push(typeof token == 'string' ? token : token[1]); -} - -function context() { - var newContext = { - output: [], - store: store - }; - - return newContext; -} - -function all(tokens) { - var oneTimeContext = context(); - helpers.all(oneTimeContext, tokens); - return oneTimeContext.output.join(''); -} - -function body(tokens) { - var oneTimeContext = context(); - helpers.body(oneTimeContext, tokens); - return oneTimeContext.output.join(''); -} - -function property(tokens, position) { - var oneTimeContext = context(); - helpers.property(oneTimeContext, tokens, position, true); - return oneTimeContext.output.join(''); -} - -function rules(tokens) { - var oneTimeContext = context(); - helpers.rules(oneTimeContext, tokens); - return oneTimeContext.output.join(''); -} - -function value(tokens) { - var oneTimeContext = context(); - helpers.value(oneTimeContext, tokens); - return oneTimeContext.output.join(''); -} - -module.exports = { - all: all, - body: body, - property: property, - rules: rules, - value: value -}; - - -/***/ }), - -/***/ 1225: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var all = (__webpack_require__(4307).all); - -function store(serializeContext, token) { - var value = typeof token == 'string' - ? token - : token[1]; - var wrap = serializeContext.wrap; - - wrap(serializeContext, value); - track(serializeContext, value); - serializeContext.output.push(value); -} - -function wrap(serializeContext, value) { - if (serializeContext.column + value.length > serializeContext.format.wrapAt) { - track(serializeContext, serializeContext.format.breakWith); - serializeContext.output.push(serializeContext.format.breakWith); - } -} - -function track(serializeContext, value) { - var parts = value.split('\n'); - - serializeContext.line += parts.length - 1; - serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length); -} - -function serializeStyles(tokens, context) { - var serializeContext = { - column: 0, - format: context.options.format, - indentBy: 0, - indentWith: '', - line: 1, - output: [], - spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace, - store: store, - wrap: context.options.format.wrapAt - ? wrap - : function() { /* noop */ } - }; - - all(serializeContext, tokens); - - return { styles: serializeContext.output.join('') }; -} - -module.exports = serializeStyles; - - -/***/ }), - -/***/ 884: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var SourceMapGenerator = (__webpack_require__(9125).SourceMapGenerator); -var all = (__webpack_require__(4307).all); - -var isRemoteResource = __webpack_require__(4234); - -var isWindows = process.platform == 'win32'; - -var NIX_SEPARATOR_PATTERN = /\//g; -var UNKNOWN_SOURCE = '$stdin'; -var WINDOWS_SEPARATOR = '\\'; - -function store(serializeContext, element) { - var fromString = typeof element == 'string'; - var value = fromString ? element : element[1]; - var mappings = fromString ? null : element[2]; - var wrap = serializeContext.wrap; - - wrap(serializeContext, value); - track(serializeContext, value, mappings); - serializeContext.output.push(value); -} - -function wrap(serializeContext, value) { - if (serializeContext.column + value.length > serializeContext.format.wrapAt) { - track(serializeContext, serializeContext.format.breakWith, false); - serializeContext.output.push(serializeContext.format.breakWith); - } -} - -function track(serializeContext, value, mappings) { - var parts = value.split('\n'); - - if (mappings) { - trackAllMappings(serializeContext, mappings); - } - - serializeContext.line += parts.length - 1; - serializeContext.column = parts.length > 1 ? 0 : (serializeContext.column + parts.pop().length); -} - -function trackAllMappings(serializeContext, mappings) { - for (var i = 0, l = mappings.length; i < l; i++) { - trackMapping(serializeContext, mappings[i]); - } -} - -function trackMapping(serializeContext, mapping) { - var line = mapping[0]; - var column = mapping[1]; - var originalSource = mapping[2]; - var source = originalSource; - var storedSource = source || UNKNOWN_SOURCE; - - if (isWindows && source && !isRemoteResource(source)) { - storedSource = source.replace(NIX_SEPARATOR_PATTERN, WINDOWS_SEPARATOR); - } - - serializeContext.outputMap.addMapping({ - generated: { - line: serializeContext.line, - column: serializeContext.column - }, - source: storedSource, - original: { - line: line, - column: column - } - }); - - if (serializeContext.inlineSources && (originalSource in serializeContext.sourcesContent)) { - serializeContext.outputMap.setSourceContent( - storedSource, - serializeContext.sourcesContent[originalSource] - ); - } -} - -function serializeStylesAndSourceMap(tokens, context) { - var serializeContext = { - column: 0, - format: context.options.format, - indentBy: 0, - indentWith: '', - inlineSources: context.options.sourceMapInlineSources, - line: 1, - output: [], - outputMap: new SourceMapGenerator(), - sourcesContent: context.sourcesContent, - spaceAfterClosingBrace: context.options.compatibility.properties.spaceAfterClosingBrace, - store: store, - wrap: context.options.format.wrapAt - ? wrap - : function() { /* noop */ } - }; - - all(serializeContext, tokens); - - return { - sourceMap: serializeContext.outputMap, - styles: serializeContext.output.join('') - }; -} - -module.exports = serializeStylesAndSourceMap; - - -/***/ }), - -/***/ 6010: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* unused harmony export clsx */ -function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t { - -/* MIT license */ -/* eslint-disable no-mixed-operators */ -const cssKeywords = __webpack_require__(8874); - -// NOTE: conversions should only return primitive values (i.e. arrays, or -// values that give correct `typeof` results). -// do not use box values types (i.e. Number(), String(), etc.) - -const reverseKeywords = {}; -for (const key of Object.keys(cssKeywords)) { - reverseKeywords[cssKeywords[key]] = key; -} - -const 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']} -}; - -module.exports = convert; - -// Hide .channels and .labels properties -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) { - /* - See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance - */ - 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]; - - // Compute comparative distance - const distance = comparativeDistance(rgb, value); - - // Check if its less, if so set as closest - 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; - - // Assume sRGB - 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 > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? (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]; -}; - -// http://dev.w3.org/csswg/css-color/#hwb-to-rgb -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; - - // Wh + bl cant be > 1 - if (ratio > 1) { - wh /= ratio; - bl /= ratio; - } - - const i = Math.floor(6 * h); - const v = 1 - bl; - f = 6 * h - i; - - if ((i & 0x01) !== 0) { - f = 1 - f; - } - - const n = wh + f * (v - wh); // Linear interpolation - - let r; - let g; - let b; - /* eslint-disable max-statements-per-line,no-multi-spaces */ - 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; - } - /* eslint-enable max-statements-per-line,no-multi-spaces */ - - 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.2040) + (z * 1.0570); - - // Assume sRGB - r = r > 0.0031308 - ? ((1.055 * (r ** (1.0 / 2.4))) - 0.055) - : r * 12.92; - - g = g > 0.0031308 - ? ((1.055 * (g ** (1.0 / 2.4))) - 0.055) - : g * 12.92; - - b = b > 0.0031308 - ? ((1.055 * (b ** (1.0 / 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 > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116); - y = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116); - z = z > 0.008856 ? (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 > 0.008856 ? y2 : (y - 16 / 116) / 7.787; - x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787; - z = z2 > 0.008856 ? 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; // Hsv -> ansi16 optimization - - 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) { - // Optimization here; we already know the value and don't need to get - // it converted for us. - 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]; - - // We use the extended greyscale palette here, with the exception of - // black and white. normal palette only has 4 greyscale shades. - 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; - - // Handle greyscale - 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) { - // Handle greyscale - 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]) & 0xFF) << 16) - + ((Math.round(args[1]) & 0xFF) << 8) - + (Math.round(args[2]) & 0xFF); - - 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) & 0xFF; - const g = (integer >> 8) & 0xFF; - const b = integer & 0xFF; - - 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.0 * s * l) : (2.0 * s * (1.0 - l)); - - let f = 0; - if (c < 1.0) { - f = (l - 0.5 * c) / (1.0 - 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.0) { - 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.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; - - /* eslint-disable max-statements-per-line */ - 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; - } - /* eslint-enable max-statements-per-line */ - - mg = (1.0 - 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.0 - c); - let f = 0; - - if (v > 0.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.0 - c) + 0.5 * c; - let s = 0; - - if (l > 0.0 && l < 0.5) { - s = c / (2 * l); - } else - if (l >= 0.5 && l < 1.0) { - 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.0 - 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) & 0xFF; - 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]; -}; - - -/***/ }), - -/***/ 2085: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -const conversions = __webpack_require__(8168); -const route = __webpack_require__(4111); - -const convert = {}; - -const models = Object.keys(conversions); - -function wrapRaw(fn) { - const wrappedFn = function (...args) { - const arg0 = args[0]; - if (arg0 === undefined || arg0 === null) { - return arg0; - } - - if (arg0.length > 1) { - args = arg0; - } - - return fn(args); - }; - - // Preserve .conversion property if there is one - if ('conversion' in fn) { - wrappedFn.conversion = fn.conversion; - } - - return wrappedFn; -} - -function wrapRounded(fn) { - const wrappedFn = function (...args) { - const arg0 = args[0]; - - if (arg0 === undefined || arg0 === null) { - return arg0; - } - - if (arg0.length > 1) { - args = arg0; - } - - const result = fn(args); - - // We're assuming the result is an array here. - // see notice in conversions.js; don't use box types - // in conversion functions. - if (typeof result === 'object') { - for (let len = result.length, i = 0; i < len; i++) { - result[i] = Math.round(result[i]); - } - } - - return result; - }; - - // Preserve .conversion property if there is one - 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); - }); -}); - -module.exports = convert; - - -/***/ }), - -/***/ 4111: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -const conversions = __webpack_require__(8168); - -/* - This function routes a model to all other models. - - all functions that are routed have a property `.conversion` attached - to the returned synthetic function. This property is an array - of strings, each with the steps in between the 'from' and 'to' - color models (inclusive). - - conversions that are not possible simply are not included. -*/ - -function buildGraph() { - const graph = {}; - // https://jsperf.com/object-keys-vs-for-in-with-closure/3 - const models = Object.keys(conversions); - - for (let len = models.length, i = 0; i < len; i++) { - graph[models[i]] = { - // http://jsperf.com/1-vs-infinity - // micro-opt, but this is simple. - distance: -1, - parent: null - }; - } - - return graph; -} - -// https://en.wikipedia.org/wiki/Breadth-first_search -function deriveBFS(fromModel) { - const graph = buildGraph(); - const queue = [fromModel]; // Unshift -> queue -> pop - - 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 path = [graph[toModel].parent, toModel]; - let fn = conversions[graph[toModel].parent][toModel]; - - let cur = graph[toModel].parent; - while (graph[cur].parent) { - path.unshift(graph[cur].parent); - fn = link(conversions[graph[cur].parent][cur], fn); - cur = graph[cur].parent; - } - - fn.conversion = path; - return fn; -} - -module.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) { - // No possible conversion, or this node is the source model. - continue; - } - - conversion[toModel] = wrapConversion(toModel, graph); - } - - return conversion; -}; - - - -/***/ }), - -/***/ 8874: -/***/ ((module) => { - -"use strict"; - - -module.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] -}; - - -/***/ }), - -/***/ 3808: -/***/ ((module) => { - -// Exports -module.exports = { - -}; - - -/***/ }), - -/***/ 4601: -/***/ ((module) => { - -// Exports -module.exports = { - "admonition": `admonition_LlT9`, - "admonitionHeading": `admonitionHeading_tbUL`, - "admonitionIcon": `admonitionIcon_kALy`, - "admonitionContent": `admonitionContent_S0QG` -}; - - -/***/ }), - -/***/ 3845: -/***/ ((module) => { - -// Exports -module.exports = { - "closeButton": `closeButton_CVFx` -}; - - -/***/ }), - -/***/ 7021: -/***/ ((module) => { - -// Exports -module.exports = { - "content": `content_knG7` -}; - - -/***/ }), - -/***/ 9239: -/***/ ((module) => { - -// Exports -module.exports = { - "announcementBar": `announcementBar_mb4j`, - "announcementBarPlaceholder": `announcementBarPlaceholder_vyr4`, - "announcementBarClose": `announcementBarClose_gvF7`, - "announcementBarContent": `announcementBarContent_xLdY` -}; - - -/***/ }), - -/***/ 9783: -/***/ ((module) => { - -// Exports -module.exports = { - "backToTopButton": `backToTopButton_sjWU`, - "backToTopButtonShow": `backToTopButtonShow_xfvO` -}; - - -/***/ }), - -/***/ 1633: -/***/ ((module) => { - -// Exports -module.exports = { - "codeBlockContainer": `codeBlockContainer_Ckt0` -}; - - -/***/ }), - -/***/ 9130: -/***/ ((module) => { - -// Exports -module.exports = { - "codeBlockContent": `codeBlockContent_biex`, - "codeBlockTitle": `codeBlockTitle_Ktv7`, - "codeBlock": `codeBlock_bY9V`, - "codeBlockStandalone": `codeBlockStandalone_MEMb`, - "codeBlockLines": `codeBlockLines_e6Vv`, - "codeBlockLinesWithNumbering": `codeBlockLinesWithNumbering_o6Pm`, - "buttonGroup": `buttonGroup__atx` -}; - - -/***/ }), - -/***/ 8906: -/***/ ((module) => { - -// Exports -module.exports = { - "copyButtonCopied": `copyButtonCopied_obH4`, - "copyButtonIcons": `copyButtonIcons_eSgA`, - "copyButtonIcon": `copyButtonIcon_y97N`, - "copyButtonSuccessIcon": `copyButtonSuccessIcon_LjdS` -}; - - -/***/ }), - -/***/ 5576: -/***/ ((module) => { - -// Exports -module.exports = { - "codeLine": `codeLine_lJS_`, - "codeLineNumber": `codeLineNumber_Tfdd`, - "codeLineContent": `codeLineContent_feaV` -}; - - -/***/ }), - -/***/ 5647: -/***/ ((module) => { - -// Exports -module.exports = { - "wordWrapButtonIcon": `wordWrapButtonIcon_Bwma`, - "wordWrapButtonEnabled": `wordWrapButtonEnabled_EoeP` -}; - - -/***/ }), - -/***/ 7762: -/***/ ((module) => { - -// Exports -module.exports = { - "toggle": `toggle_vylO`, - "toggleButton": `toggleButton_gllP`, - "darkToggleIcon": `darkToggleIcon_wfgR`, - "lightToggleIcon": `lightToggleIcon_pyhR`, - "toggleButtonDisabled": `toggleButtonDisabled_aARS` -}; - - -/***/ }), - -/***/ 1523: -/***/ ((module) => { - -// Exports -module.exports = { - "details": `details_b_Ee` -}; - - -/***/ }), - -/***/ 6028: -/***/ ((module) => { - -// Exports -module.exports = { - "breadcrumbHomeIcon": `breadcrumbHomeIcon_YNFT` -}; - - -/***/ }), - -/***/ 6889: -/***/ ((module) => { - -// Exports -module.exports = { - "breadcrumbsContainer": `breadcrumbsContainer_Z_bl` -}; - - -/***/ }), - -/***/ 7465: -/***/ ((module) => { - -// Exports -module.exports = { - "cardContainer": `cardContainer_fWXF`, - "cardTitle": `cardTitle_rnsV`, - "cardDescription": `cardDescription_PWke` -}; - - -/***/ }), - -/***/ 3337: -/***/ ((module) => { - -// Exports -module.exports = { - "generatedIndexPage": `generatedIndexPage_vN6x`, - "list": `list_eTzJ`, - "title": `title_kItE` -}; - - -/***/ }), - -/***/ 4856: -/***/ ((module) => { - -// Exports -module.exports = { - "lastUpdated": `lastUpdated_vwxv` -}; - - -/***/ }), - -/***/ 9416: -/***/ ((module) => { - -// Exports -module.exports = { - "docItemContainer": `docItemContainer_Djhp`, - "docItemCol": `docItemCol_VOVn` -}; - - -/***/ }), - -/***/ 7192: -/***/ ((module) => { - -// Exports -module.exports = { - "tocMobile": `tocMobile_ITEo` -}; - - -/***/ }), - -/***/ 296: -/***/ ((module) => { - -// Exports -module.exports = { - "docMainContainer": `docMainContainer_gTbr`, - "docMainContainerEnhanced": `docMainContainerEnhanced_Uz_u`, - "docItemWrapperEnhanced": `docItemWrapperEnhanced_czyv` -}; - - -/***/ }), - -/***/ 818: -/***/ ((module) => { - -// Exports -module.exports = { - "expandButton": `expandButton_m80_`, - "expandButtonIcon": `expandButtonIcon_BlDH` -}; - - -/***/ }), - -/***/ 9141: -/***/ ((module) => { - -// Exports -module.exports = { - "docSidebarContainer": `docSidebarContainer_b6E3`, - "docSidebarContainerHidden": `docSidebarContainerHidden_b3ry`, - "sidebarViewport": `sidebarViewport_Xe31` -}; - - -/***/ }), - -/***/ 7212: -/***/ ((module) => { - -// Exports -module.exports = { - "docPage": `docPage__5DB`, - "docsWrapper": `docsWrapper_BCFX`, - "themedComponent--light": `themedComponent--light_NU7w` -}; - - -/***/ }), - -/***/ 9703: -/***/ ((module) => { - -// Exports -module.exports = { - "collapseSidebarButton": `collapseSidebarButton_PEFL`, - "collapseSidebarButtonIcon": `collapseSidebarButtonIcon_kv0_` -}; - - -/***/ }), - -/***/ 8523: -/***/ ((module) => { - -// Exports -module.exports = { - "menu": `menu_SIkG`, - "menuWithAnnouncementBar": `menuWithAnnouncementBar_GW3s` -}; - - -/***/ }), - -/***/ 1909: -/***/ ((module) => { - -// Exports -module.exports = { - "sidebar": `sidebar_njMd`, - "sidebarWithHideableNavbar": `sidebarWithHideableNavbar_wUlq`, - "sidebarHidden": `sidebarHidden_VK0M`, - "sidebarLogo": `sidebarLogo_isFc` -}; - - -/***/ }), - -/***/ 9171: -/***/ ((module) => { - -// Exports -module.exports = { - "menuHtmlItem": `menuHtmlItem_M9Kj` -}; - - -/***/ }), - -/***/ 6014: -/***/ ((module) => { - -// Exports -module.exports = { - "menuExternalLink": `menuExternalLink_NmtK` -}; - - -/***/ }), - -/***/ 937: -/***/ ((module) => { - -// Exports -module.exports = { - "footerLogoLink": `footerLogoLink_BH7S` -}; - - -/***/ }), - -/***/ 9475: -/***/ ((module) => { - -// Exports -module.exports = { - "anchorWithStickyNavbar": `anchorWithStickyNavbar_LWe7`, - "anchorWithHideOnScrollNavbar": `anchorWithHideOnScrollNavbar_WYt5` -}; - - -/***/ }), - -/***/ 1920: -/***/ ((module) => { - -// Exports -module.exports = { - "iconEdit": `iconEdit_Z9Sw` -}; - - -/***/ }), - -/***/ 9073: -/***/ ((module) => { - -// Exports -module.exports = { - "iconExternalLink": `iconExternalLink_nPIU` -}; - - -/***/ }), - -/***/ 4874: -/***/ ((module) => { - -// Exports -module.exports = { - "mainWrapper": `mainWrapper_z2l0` -}; - - -/***/ }), - -/***/ 7588: -/***/ ((module) => { - -// Exports -module.exports = { - "img": `img_ev3q` -}; - - -/***/ }), - -/***/ 6655: -/***/ ((module) => { - -// Exports -module.exports = { - "containsTaskList": `containsTaskList_mC6p` -}; - - -/***/ }), - -/***/ 720: -/***/ ((module) => { - -// Exports -module.exports = { - "mdxPageWrapper": `mdxPageWrapper_j9I6` -}; - - -/***/ }), - -/***/ 4283: -/***/ ((module) => { - -// Exports -module.exports = { - "darkNavbarColorModeToggle": `darkNavbarColorModeToggle_X3D1` -}; - - -/***/ }), - -/***/ 2529: -/***/ ((module) => { - -// Exports -module.exports = { - "colorModeToggle": `colorModeToggle_DEke` -}; - - -/***/ }), - -/***/ 5708: -/***/ ((module) => { - -// Exports -module.exports = { - "navbarHideable": `navbarHideable_m1mJ`, - "navbarHidden": `navbarHidden_jGov` -}; - - -/***/ }), - -/***/ 7641: -/***/ ((module) => { - -// Exports -module.exports = { - "searchBox": `searchBox_ZlJk` -}; - - -/***/ }), - -/***/ 9859: -/***/ ((module) => { - -// Exports -module.exports = { - "iconLanguage": `iconLanguage_nlXk` -}; - - -/***/ }), - -/***/ 2824: -/***/ ((module) => { - -// Exports -module.exports = { - "skipToContent": `skipToContent_fXgn` -}; - - -/***/ }), - -/***/ 578: -/***/ ((module) => { - -// Exports -module.exports = { - "tableOfContents": `tableOfContents_bqdL`, - "docItemContainer": `docItemContainer_F8PC` -}; - - -/***/ }), - -/***/ 3710: -/***/ ((module) => { - -// Exports -module.exports = { - "tocCollapsibleButton": `tocCollapsibleButton_TO0P`, - "tocCollapsibleButtonExpanded": `tocCollapsibleButtonExpanded_MG3E` -}; - - -/***/ }), - -/***/ 9587: -/***/ ((module) => { - -// Exports -module.exports = { - "tocCollapsible": `tocCollapsible_ETCw`, - "tocCollapsibleContent": `tocCollapsibleContent_vkbj`, - "tocCollapsibleExpanded": `tocCollapsibleExpanded_sAul` -}; - - -/***/ }), - -/***/ 2198: -/***/ ((module) => { - -// Exports -module.exports = { - "tag": `tag_zVej`, - "tagRegular": `tagRegular_sFm0`, - "tagWithCount": `tagWithCount_h2kH` -}; - - -/***/ }), - -/***/ 4211: -/***/ ((module) => { - -// Exports -module.exports = { - "tags": `tags_jXut`, - "tag": `tag_QGVx` -}; - - -/***/ }), - -/***/ 162: -/***/ ((module) => { - -// Exports -module.exports = { - "themedImage": `themedImage_ToTc`, - "themedImage--light": `themedImage--light_HNdA`, - "themedImage--dark": `themedImage--dark_i4oU` -}; - - -/***/ }), - -/***/ 872: -/***/ ((module) => { - -// Exports -module.exports = { - "details": `details_lb9f`, - "isBrowser": `isBrowser_bmU9`, - "collapsibleContent": `collapsibleContent_i85q` -}; - - -/***/ }), - -/***/ 5716: -/***/ ((module) => { - -// Exports -module.exports = { - "errorBoundaryError": `errorBoundaryError_a6uf` -}; - - -/***/ }), - -/***/ 7176: -/***/ ((module) => { - -// Exports -module.exports = { - "features": `features_t9lD`, - "featureSvg": `featureSvg_GfXr` -}; - - -/***/ }), - -/***/ 2902: -/***/ ((module) => { - -// Exports -module.exports = { - "heroBanner": `heroBanner_qdFl`, - "buttons": `buttons_AeoN` -}; - - -/***/ }), - -/***/ 3873: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) -const path = __webpack_require__(1017) -const mkdirsSync = (__webpack_require__(1381).mkdirsSync) -const utimesMillisSync = (__webpack_require__(318).utimesMillisSync) -const stat = __webpack_require__(2733) - -function copySync (src, dest, opts) { - if (typeof opts === 'function') { - opts = { filter: opts } - } - - opts = opts || {} - opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now - opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber - - // Warn about using preserveTimestamps on 32-bit node - if (opts.preserveTimestamps && process.arch === 'ia32') { - process.emitWarning( - 'Using the preserveTimestamps option in 32-bit node is not recommended;\n\n' + - '\tsee https://github.com/jprichardson/node-fs-extra/issues/269', - 'Warning', 'fs-extra-WARN0002' - ) - } - - const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts) - stat.checkParentPathsSync(src, srcStat, dest, 'copy') - return handleFilterAndCopy(destStat, src, dest, opts) -} - -function handleFilterAndCopy (destStat, src, dest, opts) { - if (opts.filter && !opts.filter(src, dest)) return - const destParent = path.dirname(dest) - if (!fs.existsSync(destParent)) mkdirsSync(destParent) - return getStats(destStat, src, dest, opts) -} - -function startCopy (destStat, src, dest, opts) { - if (opts.filter && !opts.filter(src, dest)) return - return getStats(destStat, src, dest, opts) -} - -function getStats (destStat, src, dest, opts) { - const statSync = opts.dereference ? fs.statSync : fs.lstatSync - const srcStat = statSync(src) - - if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts) - else if (srcStat.isFile() || - srcStat.isCharacterDevice() || - srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts) - else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts) - else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`) - else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`) - throw new Error(`Unknown file: ${src}`) -} - -function onFile (srcStat, destStat, src, dest, opts) { - if (!destStat) return copyFile(srcStat, src, dest, opts) - return mayCopyFile(srcStat, src, dest, opts) -} - -function mayCopyFile (srcStat, src, dest, opts) { - if (opts.overwrite) { - fs.unlinkSync(dest) - return copyFile(srcStat, src, dest, opts) - } else if (opts.errorOnExist) { - throw new Error(`'${dest}' already exists`) - } -} - -function copyFile (srcStat, src, dest, opts) { - fs.copyFileSync(src, dest) - if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest) - return setDestMode(dest, srcStat.mode) -} - -function handleTimestamps (srcMode, src, dest) { - // Make sure the file is writable before setting the timestamp - // otherwise open fails with EPERM when invoked with 'r+' - // (through utimes call) - if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode) - return setDestTimestamps(src, dest) -} - -function fileIsNotWritable (srcMode) { - return (srcMode & 0o200) === 0 -} - -function makeFileWritable (dest, srcMode) { - return setDestMode(dest, srcMode | 0o200) -} - -function setDestMode (dest, srcMode) { - return fs.chmodSync(dest, srcMode) -} - -function setDestTimestamps (src, dest) { - // The initial srcStat.atime cannot be trusted - // because it is modified by the read(2) system call - // (See https://nodejs.org/api/fs.html#fs_stat_time_values) - const updatedSrcStat = fs.statSync(src) - return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime) -} - -function onDir (srcStat, destStat, src, dest, opts) { - if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts) - return copyDir(src, dest, opts) -} - -function mkDirAndCopy (srcMode, src, dest, opts) { - fs.mkdirSync(dest) - copyDir(src, dest, opts) - return setDestMode(dest, srcMode) -} - -function copyDir (src, dest, opts) { - fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts)) -} - -function copyDirItem (item, src, dest, opts) { - const srcItem = path.join(src, item) - const destItem = path.join(dest, item) - const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts) - return startCopy(destStat, srcItem, destItem, opts) -} - -function onLink (destStat, src, dest, opts) { - let resolvedSrc = fs.readlinkSync(src) - if (opts.dereference) { - resolvedSrc = path.resolve(process.cwd(), resolvedSrc) - } - - if (!destStat) { - return fs.symlinkSync(resolvedSrc, dest) - } else { - let resolvedDest - try { - resolvedDest = fs.readlinkSync(dest) - } catch (err) { - // dest exists and is a regular file or directory, - // Windows may throw UNKNOWN error. If dest already exists, - // fs throws error anyway, so no need to guard against it here. - if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest) - throw err - } - if (opts.dereference) { - resolvedDest = path.resolve(process.cwd(), resolvedDest) - } - if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { - throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`) - } - - // prevent copy if src is a subdir of dest since unlinking - // dest in this case would result in removing src contents - // and therefore a broken symlink would be created. - if (fs.statSync(dest).isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) { - throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`) - } - return copyLink(resolvedSrc, dest) - } -} - -function copyLink (resolvedSrc, dest) { - fs.unlinkSync(dest) - return fs.symlinkSync(resolvedSrc, dest) -} - -module.exports = copySync - - -/***/ }), - -/***/ 7189: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) -const path = __webpack_require__(1017) -const mkdirs = (__webpack_require__(1381).mkdirs) -const pathExists = (__webpack_require__(9257).pathExists) -const utimesMillis = (__webpack_require__(318).utimesMillis) -const stat = __webpack_require__(2733) - -function copy (src, dest, opts, cb) { - if (typeof opts === 'function' && !cb) { - cb = opts - opts = {} - } else if (typeof opts === 'function') { - opts = { filter: opts } - } - - cb = cb || function () {} - opts = opts || {} - - opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now - opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber - - // Warn about using preserveTimestamps on 32-bit node - if (opts.preserveTimestamps && process.arch === 'ia32') { - process.emitWarning( - 'Using the preserveTimestamps option in 32-bit node is not recommended;\n\n' + - '\tsee https://github.com/jprichardson/node-fs-extra/issues/269', - 'Warning', 'fs-extra-WARN0001' - ) - } - - stat.checkPaths(src, dest, 'copy', opts, (err, stats) => { - if (err) return cb(err) - const { srcStat, destStat } = stats - stat.checkParentPaths(src, srcStat, dest, 'copy', err => { - if (err) return cb(err) - if (opts.filter) return handleFilter(checkParentDir, destStat, src, dest, opts, cb) - return checkParentDir(destStat, src, dest, opts, cb) - }) - }) -} - -function checkParentDir (destStat, src, dest, opts, cb) { - const destParent = path.dirname(dest) - pathExists(destParent, (err, dirExists) => { - if (err) return cb(err) - if (dirExists) return getStats(destStat, src, dest, opts, cb) - mkdirs(destParent, err => { - if (err) return cb(err) - return getStats(destStat, src, dest, opts, cb) - }) - }) -} - -function handleFilter (onInclude, destStat, src, dest, opts, cb) { - Promise.resolve(opts.filter(src, dest)).then(include => { - if (include) return onInclude(destStat, src, dest, opts, cb) - return cb() - }, error => cb(error)) -} - -function startCopy (destStat, src, dest, opts, cb) { - if (opts.filter) return handleFilter(getStats, destStat, src, dest, opts, cb) - return getStats(destStat, src, dest, opts, cb) -} - -function getStats (destStat, src, dest, opts, cb) { - const stat = opts.dereference ? fs.stat : fs.lstat - stat(src, (err, srcStat) => { - if (err) return cb(err) - - if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts, cb) - else if (srcStat.isFile() || - srcStat.isCharacterDevice() || - srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts, cb) - else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts, cb) - else if (srcStat.isSocket()) return cb(new Error(`Cannot copy a socket file: ${src}`)) - else if (srcStat.isFIFO()) return cb(new Error(`Cannot copy a FIFO pipe: ${src}`)) - return cb(new Error(`Unknown file: ${src}`)) - }) -} - -function onFile (srcStat, destStat, src, dest, opts, cb) { - if (!destStat) return copyFile(srcStat, src, dest, opts, cb) - return mayCopyFile(srcStat, src, dest, opts, cb) -} - -function mayCopyFile (srcStat, src, dest, opts, cb) { - if (opts.overwrite) { - fs.unlink(dest, err => { - if (err) return cb(err) - return copyFile(srcStat, src, dest, opts, cb) - }) - } else if (opts.errorOnExist) { - return cb(new Error(`'${dest}' already exists`)) - } else return cb() -} - -function copyFile (srcStat, src, dest, opts, cb) { - fs.copyFile(src, dest, err => { - if (err) return cb(err) - if (opts.preserveTimestamps) return handleTimestampsAndMode(srcStat.mode, src, dest, cb) - return setDestMode(dest, srcStat.mode, cb) - }) -} - -function handleTimestampsAndMode (srcMode, src, dest, cb) { - // Make sure the file is writable before setting the timestamp - // otherwise open fails with EPERM when invoked with 'r+' - // (through utimes call) - if (fileIsNotWritable(srcMode)) { - return makeFileWritable(dest, srcMode, err => { - if (err) return cb(err) - return setDestTimestampsAndMode(srcMode, src, dest, cb) - }) - } - return setDestTimestampsAndMode(srcMode, src, dest, cb) -} - -function fileIsNotWritable (srcMode) { - return (srcMode & 0o200) === 0 -} - -function makeFileWritable (dest, srcMode, cb) { - return setDestMode(dest, srcMode | 0o200, cb) -} - -function setDestTimestampsAndMode (srcMode, src, dest, cb) { - setDestTimestamps(src, dest, err => { - if (err) return cb(err) - return setDestMode(dest, srcMode, cb) - }) -} - -function setDestMode (dest, srcMode, cb) { - return fs.chmod(dest, srcMode, cb) -} - -function setDestTimestamps (src, dest, cb) { - // The initial srcStat.atime cannot be trusted - // because it is modified by the read(2) system call - // (See https://nodejs.org/api/fs.html#fs_stat_time_values) - fs.stat(src, (err, updatedSrcStat) => { - if (err) return cb(err) - return utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime, cb) - }) -} - -function onDir (srcStat, destStat, src, dest, opts, cb) { - if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts, cb) - return copyDir(src, dest, opts, cb) -} - -function mkDirAndCopy (srcMode, src, dest, opts, cb) { - fs.mkdir(dest, err => { - if (err) return cb(err) - copyDir(src, dest, opts, err => { - if (err) return cb(err) - return setDestMode(dest, srcMode, cb) - }) - }) -} - -function copyDir (src, dest, opts, cb) { - fs.readdir(src, (err, items) => { - if (err) return cb(err) - return copyDirItems(items, src, dest, opts, cb) - }) -} - -function copyDirItems (items, src, dest, opts, cb) { - const item = items.pop() - if (!item) return cb() - return copyDirItem(items, item, src, dest, opts, cb) -} - -function copyDirItem (items, item, src, dest, opts, cb) { - const srcItem = path.join(src, item) - const destItem = path.join(dest, item) - stat.checkPaths(srcItem, destItem, 'copy', opts, (err, stats) => { - if (err) return cb(err) - const { destStat } = stats - startCopy(destStat, srcItem, destItem, opts, err => { - if (err) return cb(err) - return copyDirItems(items, src, dest, opts, cb) - }) - }) -} - -function onLink (destStat, src, dest, opts, cb) { - fs.readlink(src, (err, resolvedSrc) => { - if (err) return cb(err) - if (opts.dereference) { - resolvedSrc = path.resolve(process.cwd(), resolvedSrc) - } - - if (!destStat) { - return fs.symlink(resolvedSrc, dest, cb) - } else { - fs.readlink(dest, (err, resolvedDest) => { - if (err) { - // dest exists and is a regular file or directory, - // Windows may throw UNKNOWN error. If dest already exists, - // fs throws error anyway, so no need to guard against it here. - if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest, cb) - return cb(err) - } - if (opts.dereference) { - resolvedDest = path.resolve(process.cwd(), resolvedDest) - } - if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) { - return cb(new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)) - } - - // do not copy if src is a subdir of dest since unlinking - // dest in this case would result in removing src contents - // and therefore a broken symlink would be created. - if (destStat.isDirectory() && stat.isSrcSubdir(resolvedDest, resolvedSrc)) { - return cb(new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)) - } - return copyLink(resolvedSrc, dest, cb) - }) - } - }) -} - -function copyLink (resolvedSrc, dest, cb) { - fs.unlink(dest, err => { - if (err) return cb(err) - return fs.symlink(resolvedSrc, dest, cb) - }) -} - -module.exports = copy - - -/***/ }), - -/***/ 6464: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromCallback) -module.exports = { - copy: u(__webpack_require__(7189)), - copySync: __webpack_require__(3873) -} - - -/***/ }), - -/***/ 5590: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromPromise) -const fs = __webpack_require__(7749) -const path = __webpack_require__(1017) -const mkdir = __webpack_require__(1381) -const remove = __webpack_require__(4542) - -const emptyDir = u(async function emptyDir (dir) { - let items - try { - items = await fs.readdir(dir) - } catch { - return mkdir.mkdirs(dir) - } - - return Promise.all(items.map(item => remove.remove(path.join(dir, item)))) -}) - -function emptyDirSync (dir) { - let items - try { - items = fs.readdirSync(dir) - } catch { - return mkdir.mkdirsSync(dir) - } - - items.forEach(item => { - item = path.join(dir, item) - remove.removeSync(item) - }) -} - -module.exports = { - emptyDirSync, - emptydirSync: emptyDirSync, - emptyDir, - emptydir: emptyDir -} - - -/***/ }), - -/***/ 6530: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromCallback) -const path = __webpack_require__(1017) -const fs = __webpack_require__(77) -const mkdir = __webpack_require__(1381) - -function createFile (file, callback) { - function makeFile () { - fs.writeFile(file, '', err => { - if (err) return callback(err) - callback() - }) - } - - fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err - if (!err && stats.isFile()) return callback() - const dir = path.dirname(file) - fs.stat(dir, (err, stats) => { - if (err) { - // if the directory doesn't exist, make it - if (err.code === 'ENOENT') { - return mkdir.mkdirs(dir, err => { - if (err) return callback(err) - makeFile() - }) - } - return callback(err) - } - - if (stats.isDirectory()) makeFile() - else { - // parent is not a directory - // This is just to cause an internal ENOTDIR error to be thrown - fs.readdir(dir, err => { - if (err) return callback(err) - }) - } - }) - }) -} - -function createFileSync (file) { - let stats - try { - stats = fs.statSync(file) - } catch {} - if (stats && stats.isFile()) return - - const dir = path.dirname(file) - try { - if (!fs.statSync(dir).isDirectory()) { - // parent is not a directory - // This is just to cause an internal ENOTDIR error to be thrown - fs.readdirSync(dir) - } - } catch (err) { - // If the stat call above failed because the directory doesn't exist, create it - if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir) - else throw err - } - - fs.writeFileSync(file, '') -} - -module.exports = { - createFile: u(createFile), - createFileSync -} - - -/***/ }), - -/***/ 1720: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const { createFile, createFileSync } = __webpack_require__(6530) -const { createLink, createLinkSync } = __webpack_require__(4147) -const { createSymlink, createSymlinkSync } = __webpack_require__(3635) - -module.exports = { - // file - createFile, - createFileSync, - ensureFile: createFile, - ensureFileSync: createFileSync, - // link - createLink, - createLinkSync, - ensureLink: createLink, - ensureLinkSync: createLinkSync, - // symlink - createSymlink, - createSymlinkSync, - ensureSymlink: createSymlink, - ensureSymlinkSync: createSymlinkSync -} - - -/***/ }), - -/***/ 4147: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromCallback) -const path = __webpack_require__(1017) -const fs = __webpack_require__(77) -const mkdir = __webpack_require__(1381) -const pathExists = (__webpack_require__(9257).pathExists) -const { areIdentical } = __webpack_require__(2733) - -function createLink (srcpath, dstpath, callback) { - function makeLink (srcpath, dstpath) { - fs.link(srcpath, dstpath, err => { - if (err) return callback(err) - callback(null) - }) - } - - fs.lstat(dstpath, (_, dstStat) => { - fs.lstat(srcpath, (err, srcStat) => { - if (err) { - err.message = err.message.replace('lstat', 'ensureLink') - return callback(err) - } - if (dstStat && areIdentical(srcStat, dstStat)) return callback(null) - - const dir = path.dirname(dstpath) - pathExists(dir, (err, dirExists) => { - if (err) return callback(err) - if (dirExists) return makeLink(srcpath, dstpath) - mkdir.mkdirs(dir, err => { - if (err) return callback(err) - makeLink(srcpath, dstpath) - }) - }) - }) - }) -} - -function createLinkSync (srcpath, dstpath) { - let dstStat - try { - dstStat = fs.lstatSync(dstpath) - } catch {} - - try { - const srcStat = fs.lstatSync(srcpath) - if (dstStat && areIdentical(srcStat, dstStat)) return - } catch (err) { - err.message = err.message.replace('lstat', 'ensureLink') - throw err - } - - const dir = path.dirname(dstpath) - const dirExists = fs.existsSync(dir) - if (dirExists) return fs.linkSync(srcpath, dstpath) - mkdir.mkdirsSync(dir) - - return fs.linkSync(srcpath, dstpath) -} - -module.exports = { - createLink: u(createLink), - createLinkSync -} - - -/***/ }), - -/***/ 6072: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const path = __webpack_require__(1017) -const fs = __webpack_require__(77) -const pathExists = (__webpack_require__(9257).pathExists) - -/** - * Function that returns two types of paths, one relative to symlink, and one - * relative to the current working directory. Checks if path is absolute or - * relative. If the path is relative, this function checks if the path is - * relative to symlink or relative to current working directory. This is an - * initiative to find a smarter `srcpath` to supply when building symlinks. - * This allows you to determine which path to use out of one of three possible - * types of source paths. The first is an absolute path. This is detected by - * `path.isAbsolute()`. When an absolute path is provided, it is checked to - * see if it exists. If it does it's used, if not an error is returned - * (callback)/ thrown (sync). The other two options for `srcpath` are a - * relative url. By default Node's `fs.symlink` works by creating a symlink - * using `dstpath` and expects the `srcpath` to be relative to the newly - * created symlink. If you provide a `srcpath` that does not exist on the file - * system it results in a broken symlink. To minimize this, the function - * checks to see if the 'relative to symlink' source file exists, and if it - * does it will use it. If it does not, it checks if there's a file that - * exists that is relative to the current working directory, if does its used. - * This preserves the expectations of the original fs.symlink spec and adds - * the ability to pass in `relative to current working direcotry` paths. - */ - -function symlinkPaths (srcpath, dstpath, callback) { - if (path.isAbsolute(srcpath)) { - return fs.lstat(srcpath, (err) => { - if (err) { - err.message = err.message.replace('lstat', 'ensureSymlink') - return callback(err) - } - return callback(null, { - toCwd: srcpath, - toDst: srcpath - }) - }) - } else { - const dstdir = path.dirname(dstpath) - const relativeToDst = path.join(dstdir, srcpath) - return pathExists(relativeToDst, (err, exists) => { - if (err) return callback(err) - if (exists) { - return callback(null, { - toCwd: relativeToDst, - toDst: srcpath - }) - } else { - return fs.lstat(srcpath, (err) => { - if (err) { - err.message = err.message.replace('lstat', 'ensureSymlink') - return callback(err) - } - return callback(null, { - toCwd: srcpath, - toDst: path.relative(dstdir, srcpath) - }) - }) - } - }) - } -} - -function symlinkPathsSync (srcpath, dstpath) { - let exists - if (path.isAbsolute(srcpath)) { - exists = fs.existsSync(srcpath) - if (!exists) throw new Error('absolute srcpath does not exist') - return { - toCwd: srcpath, - toDst: srcpath - } - } else { - const dstdir = path.dirname(dstpath) - const relativeToDst = path.join(dstdir, srcpath) - exists = fs.existsSync(relativeToDst) - if (exists) { - return { - toCwd: relativeToDst, - toDst: srcpath - } - } else { - exists = fs.existsSync(srcpath) - if (!exists) throw new Error('relative srcpath does not exist') - return { - toCwd: srcpath, - toDst: path.relative(dstdir, srcpath) - } - } - } -} - -module.exports = { - symlinkPaths, - symlinkPathsSync -} - - -/***/ }), - -/***/ 9259: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) - -function symlinkType (srcpath, type, callback) { - callback = (typeof type === 'function') ? type : callback - type = (typeof type === 'function') ? false : type - if (type) return callback(null, type) - fs.lstat(srcpath, (err, stats) => { - if (err) return callback(null, 'file') - type = (stats && stats.isDirectory()) ? 'dir' : 'file' - callback(null, type) - }) -} - -function symlinkTypeSync (srcpath, type) { - let stats - - if (type) return type - try { - stats = fs.lstatSync(srcpath) - } catch { - return 'file' - } - return (stats && stats.isDirectory()) ? 'dir' : 'file' -} - -module.exports = { - symlinkType, - symlinkTypeSync -} - - -/***/ }), - -/***/ 3635: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromCallback) -const path = __webpack_require__(1017) -const fs = __webpack_require__(7749) -const _mkdirs = __webpack_require__(1381) -const mkdirs = _mkdirs.mkdirs -const mkdirsSync = _mkdirs.mkdirsSync - -const _symlinkPaths = __webpack_require__(6072) -const symlinkPaths = _symlinkPaths.symlinkPaths -const symlinkPathsSync = _symlinkPaths.symlinkPathsSync - -const _symlinkType = __webpack_require__(9259) -const symlinkType = _symlinkType.symlinkType -const symlinkTypeSync = _symlinkType.symlinkTypeSync - -const pathExists = (__webpack_require__(9257).pathExists) - -const { areIdentical } = __webpack_require__(2733) - -function createSymlink (srcpath, dstpath, type, callback) { - callback = (typeof type === 'function') ? type : callback - type = (typeof type === 'function') ? false : type - - fs.lstat(dstpath, (err, stats) => { - if (!err && stats.isSymbolicLink()) { - Promise.all([ - fs.stat(srcpath), - fs.stat(dstpath) - ]).then(([srcStat, dstStat]) => { - if (areIdentical(srcStat, dstStat)) return callback(null) - _createSymlink(srcpath, dstpath, type, callback) - }) - } else _createSymlink(srcpath, dstpath, type, callback) - }) -} - -function _createSymlink (srcpath, dstpath, type, callback) { - symlinkPaths(srcpath, dstpath, (err, relative) => { - if (err) return callback(err) - srcpath = relative.toDst - symlinkType(relative.toCwd, type, (err, type) => { - if (err) return callback(err) - const dir = path.dirname(dstpath) - pathExists(dir, (err, dirExists) => { - if (err) return callback(err) - if (dirExists) return fs.symlink(srcpath, dstpath, type, callback) - mkdirs(dir, err => { - if (err) return callback(err) - fs.symlink(srcpath, dstpath, type, callback) - }) - }) - }) - }) -} - -function createSymlinkSync (srcpath, dstpath, type) { - let stats - try { - stats = fs.lstatSync(dstpath) - } catch {} - if (stats && stats.isSymbolicLink()) { - const srcStat = fs.statSync(srcpath) - const dstStat = fs.statSync(dstpath) - if (areIdentical(srcStat, dstStat)) return - } - - const relative = symlinkPathsSync(srcpath, dstpath) - srcpath = relative.toDst - type = symlinkTypeSync(relative.toCwd, type) - const dir = path.dirname(dstpath) - const exists = fs.existsSync(dir) - if (exists) return fs.symlinkSync(srcpath, dstpath, type) - mkdirsSync(dir) - return fs.symlinkSync(srcpath, dstpath, type) -} - -module.exports = { - createSymlink: u(createSymlink), - createSymlinkSync -} - - -/***/ }), - -/***/ 7749: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -// This is adapted from https://github.com/normalize/mz -// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors -const u = (__webpack_require__(8981).fromCallback) -const fs = __webpack_require__(77) - -const api = [ - 'access', - 'appendFile', - 'chmod', - 'chown', - 'close', - 'copyFile', - 'fchmod', - 'fchown', - 'fdatasync', - 'fstat', - 'fsync', - 'ftruncate', - 'futimes', - 'lchmod', - 'lchown', - 'link', - 'lstat', - 'mkdir', - 'mkdtemp', - 'open', - 'opendir', - 'readdir', - 'readFile', - 'readlink', - 'realpath', - 'rename', - 'rm', - 'rmdir', - 'stat', - 'symlink', - 'truncate', - 'unlink', - 'utimes', - 'writeFile' -].filter(key => { - // Some commands are not available on some systems. Ex: - // fs.opendir was added in Node.js v12.12.0 - // fs.rm was added in Node.js v14.14.0 - // fs.lchown is not available on at least some Linux - return typeof fs[key] === 'function' -}) - -// Export cloned fs: -Object.assign(exports, fs) - -// Universalify async methods: -api.forEach(method => { - exports[method] = u(fs[method]) -}) - -// We differ from mz/fs in that we still ship the old, broken, fs.exists() -// since we are a drop-in replacement for the native module -exports.exists = function (filename, callback) { - if (typeof callback === 'function') { - return fs.exists(filename, callback) - } - return new Promise(resolve => { - return fs.exists(filename, resolve) - }) -} - -// fs.read(), fs.write(), & fs.writev() need special treatment due to multiple callback args - -exports.read = function (fd, buffer, offset, length, position, callback) { - if (typeof callback === 'function') { - return fs.read(fd, buffer, offset, length, position, callback) - } - return new Promise((resolve, reject) => { - fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => { - if (err) return reject(err) - resolve({ bytesRead, buffer }) - }) - }) -} - -// Function signature can be -// fs.write(fd, buffer[, offset[, length[, position]]], callback) -// OR -// fs.write(fd, string[, position[, encoding]], callback) -// We need to handle both cases, so we use ...args -exports.write = function (fd, buffer, ...args) { - if (typeof args[args.length - 1] === 'function') { - return fs.write(fd, buffer, ...args) - } - - return new Promise((resolve, reject) => { - fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => { - if (err) return reject(err) - resolve({ bytesWritten, buffer }) - }) - }) -} - -// fs.writev only available in Node v12.9.0+ -if (typeof fs.writev === 'function') { - // Function signature is - // s.writev(fd, buffers[, position], callback) - // We need to handle the optional arg, so we use ...args - exports.writev = function (fd, buffers, ...args) { - if (typeof args[args.length - 1] === 'function') { - return fs.writev(fd, buffers, ...args) - } - - return new Promise((resolve, reject) => { - fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => { - if (err) return reject(err) - resolve({ bytesWritten, buffers }) - }) - }) - } -} - -// fs.realpath.native sometimes not available if fs is monkey-patched -if (typeof fs.realpath.native === 'function') { - exports.realpath.native = u(fs.realpath.native) -} else { - process.emitWarning( - 'fs.realpath.native is not a function. Is fs being monkey-patched?', - 'Warning', 'fs-extra-WARN0003' - ) -} - - -/***/ }), - -/***/ 5674: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -module.exports = { - // Export promiseified graceful-fs: - ...__webpack_require__(7749), - // Export extra methods: - ...__webpack_require__(6464), - ...__webpack_require__(5590), - ...__webpack_require__(1720), - ...__webpack_require__(6573), - ...__webpack_require__(1381), - ...__webpack_require__(530), - ...__webpack_require__(4670), - ...__webpack_require__(9257), - ...__webpack_require__(4542) -} - - -/***/ }), - -/***/ 6573: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromPromise) -const jsonFile = __webpack_require__(7183) - -jsonFile.outputJson = u(__webpack_require__(3508)) -jsonFile.outputJsonSync = __webpack_require__(9578) -// aliases -jsonFile.outputJSON = jsonFile.outputJson -jsonFile.outputJSONSync = jsonFile.outputJsonSync -jsonFile.writeJSON = jsonFile.writeJson -jsonFile.writeJSONSync = jsonFile.writeJsonSync -jsonFile.readJSON = jsonFile.readJson -jsonFile.readJSONSync = jsonFile.readJsonSync - -module.exports = jsonFile - - -/***/ }), - -/***/ 7183: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const jsonFile = __webpack_require__(6813) - -module.exports = { - // jsonfile exports - readJson: jsonFile.readFile, - readJsonSync: jsonFile.readFileSync, - writeJson: jsonFile.writeFile, - writeJsonSync: jsonFile.writeFileSync -} - - -/***/ }), - -/***/ 9578: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const { stringify } = __webpack_require__(6780) -const { outputFileSync } = __webpack_require__(4670) - -function outputJsonSync (file, data, options) { - const str = stringify(data, options) - - outputFileSync(file, str, options) -} - -module.exports = outputJsonSync - - -/***/ }), - -/***/ 3508: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const { stringify } = __webpack_require__(6780) -const { outputFile } = __webpack_require__(4670) - -async function outputJson (file, data, options = {}) { - const str = stringify(data, options) - - await outputFile(file, str, options) -} - -module.exports = outputJson - - -/***/ }), - -/***/ 1381: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -const u = (__webpack_require__(8981).fromPromise) -const { makeDir: _makeDir, makeDirSync } = __webpack_require__(8233) -const makeDir = u(_makeDir) - -module.exports = { - mkdirs: makeDir, - mkdirsSync: makeDirSync, - // alias - mkdirp: makeDir, - mkdirpSync: makeDirSync, - ensureDir: makeDir, - ensureDirSync: makeDirSync -} - - -/***/ }), - -/***/ 8233: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -const fs = __webpack_require__(7749) -const { checkPath } = __webpack_require__(3468) - -const getMode = options => { - const defaults = { mode: 0o777 } - if (typeof options === 'number') return options - return ({ ...defaults, ...options }).mode -} - -module.exports.makeDir = async (dir, options) => { - checkPath(dir) - - return fs.mkdir(dir, { - mode: getMode(options), - recursive: true - }) -} - -module.exports.makeDirSync = (dir, options) => { - checkPath(dir) - - return fs.mkdirSync(dir, { - mode: getMode(options), - recursive: true - }) -} - - -/***/ }), - -/***/ 3468: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -// Adapted from https://github.com/sindresorhus/make-dir -// Copyright (c) Sindre Sorhus (sindresorhus.com) -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -const path = __webpack_require__(1017) - -// https://github.com/nodejs/node/issues/8987 -// https://github.com/libuv/libuv/pull/1088 -module.exports.checkPath = function checkPath (pth) { - if (process.platform === 'win32') { - const pathHasInvalidWinCharacters = /[<>:"|?*]/.test(pth.replace(path.parse(pth).root, '')) - - if (pathHasInvalidWinCharacters) { - const error = new Error(`Path contains invalid characters: ${pth}`) - error.code = 'EINVAL' - throw error - } - } -} - - -/***/ }), - -/***/ 530: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromCallback) -module.exports = { - move: u(__webpack_require__(436)), - moveSync: __webpack_require__(3736) -} - - -/***/ }), - -/***/ 3736: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) -const path = __webpack_require__(1017) -const copySync = (__webpack_require__(6464).copySync) -const removeSync = (__webpack_require__(4542).removeSync) -const mkdirpSync = (__webpack_require__(1381).mkdirpSync) -const stat = __webpack_require__(2733) - -function moveSync (src, dest, opts) { - opts = opts || {} - const overwrite = opts.overwrite || opts.clobber || false - - const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts) - stat.checkParentPathsSync(src, srcStat, dest, 'move') - if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest)) - return doRename(src, dest, overwrite, isChangingCase) -} - -function isParentRoot (dest) { - const parent = path.dirname(dest) - const parsedPath = path.parse(parent) - return parsedPath.root === parent -} - -function doRename (src, dest, overwrite, isChangingCase) { - if (isChangingCase) return rename(src, dest, overwrite) - if (overwrite) { - removeSync(dest) - return rename(src, dest, overwrite) - } - if (fs.existsSync(dest)) throw new Error('dest already exists.') - return rename(src, dest, overwrite) -} - -function rename (src, dest, overwrite) { - try { - fs.renameSync(src, dest) - } catch (err) { - if (err.code !== 'EXDEV') throw err - return moveAcrossDevice(src, dest, overwrite) - } -} - -function moveAcrossDevice (src, dest, overwrite) { - const opts = { - overwrite, - errorOnExist: true - } - copySync(src, dest, opts) - return removeSync(src) -} - -module.exports = moveSync - - -/***/ }), - -/***/ 436: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) -const path = __webpack_require__(1017) -const copy = (__webpack_require__(6464).copy) -const remove = (__webpack_require__(4542).remove) -const mkdirp = (__webpack_require__(1381).mkdirp) -const pathExists = (__webpack_require__(9257).pathExists) -const stat = __webpack_require__(2733) - -function move (src, dest, opts, cb) { - if (typeof opts === 'function') { - cb = opts - opts = {} - } - - opts = opts || {} - - const overwrite = opts.overwrite || opts.clobber || false - - stat.checkPaths(src, dest, 'move', opts, (err, stats) => { - if (err) return cb(err) - const { srcStat, isChangingCase = false } = stats - stat.checkParentPaths(src, srcStat, dest, 'move', err => { - if (err) return cb(err) - if (isParentRoot(dest)) return doRename(src, dest, overwrite, isChangingCase, cb) - mkdirp(path.dirname(dest), err => { - if (err) return cb(err) - return doRename(src, dest, overwrite, isChangingCase, cb) - }) - }) - }) -} - -function isParentRoot (dest) { - const parent = path.dirname(dest) - const parsedPath = path.parse(parent) - return parsedPath.root === parent -} - -function doRename (src, dest, overwrite, isChangingCase, cb) { - if (isChangingCase) return rename(src, dest, overwrite, cb) - if (overwrite) { - return remove(dest, err => { - if (err) return cb(err) - return rename(src, dest, overwrite, cb) - }) - } - pathExists(dest, (err, destExists) => { - if (err) return cb(err) - if (destExists) return cb(new Error('dest already exists.')) - return rename(src, dest, overwrite, cb) - }) -} - -function rename (src, dest, overwrite, cb) { - fs.rename(src, dest, err => { - if (!err) return cb() - if (err.code !== 'EXDEV') return cb(err) - return moveAcrossDevice(src, dest, overwrite, cb) - }) -} - -function moveAcrossDevice (src, dest, overwrite, cb) { - const opts = { - overwrite, - errorOnExist: true - } - copy(src, dest, opts, err => { - if (err) return cb(err) - return remove(src, cb) - }) -} - -module.exports = move - - -/***/ }), - -/***/ 4670: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const u = (__webpack_require__(8981).fromCallback) -const fs = __webpack_require__(77) -const path = __webpack_require__(1017) -const mkdir = __webpack_require__(1381) -const pathExists = (__webpack_require__(9257).pathExists) - -function outputFile (file, data, encoding, callback) { - if (typeof encoding === 'function') { - callback = encoding - encoding = 'utf8' - } - - const dir = path.dirname(file) - pathExists(dir, (err, itDoes) => { - if (err) return callback(err) - if (itDoes) return fs.writeFile(file, data, encoding, callback) - - mkdir.mkdirs(dir, err => { - if (err) return callback(err) - - fs.writeFile(file, data, encoding, callback) - }) - }) -} - -function outputFileSync (file, ...args) { - const dir = path.dirname(file) - if (fs.existsSync(dir)) { - return fs.writeFileSync(file, ...args) - } - mkdir.mkdirsSync(dir) - fs.writeFileSync(file, ...args) -} - -module.exports = { - outputFile: u(outputFile), - outputFileSync -} - - -/***/ }), - -/***/ 9257: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -const u = (__webpack_require__(8981).fromPromise) -const fs = __webpack_require__(7749) - -function pathExists (path) { - return fs.access(path).then(() => true).catch(() => false) -} - -module.exports = { - pathExists: u(pathExists), - pathExistsSync: fs.existsSync -} - - -/***/ }), - -/***/ 4542: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) -const u = (__webpack_require__(8981).fromCallback) -const rimraf = __webpack_require__(3456) - -function remove (path, callback) { - // Node 14.14.0+ - if (fs.rm) return fs.rm(path, { recursive: true, force: true }, callback) - rimraf(path, callback) -} - -function removeSync (path) { - // Node 14.14.0+ - if (fs.rmSync) return fs.rmSync(path, { recursive: true, force: true }) - rimraf.sync(path) -} - -module.exports = { - remove: u(remove), - removeSync -} - - -/***/ }), - -/***/ 3456: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) -const path = __webpack_require__(1017) -const assert = __webpack_require__(9491) - -const isWindows = (process.platform === 'win32') - -function defaults (options) { - const methods = [ - 'unlink', - 'chmod', - 'stat', - 'lstat', - 'rmdir', - 'readdir' - ] - methods.forEach(m => { - options[m] = options[m] || fs[m] - m = m + 'Sync' - options[m] = options[m] || fs[m] - }) - - options.maxBusyTries = options.maxBusyTries || 3 -} - -function rimraf (p, options, cb) { - let busyTries = 0 - - if (typeof options === 'function') { - cb = options - options = {} - } - - assert(p, 'rimraf: missing path') - assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string') - assert.strictEqual(typeof cb, 'function', 'rimraf: callback function required') - assert(options, 'rimraf: invalid options argument provided') - assert.strictEqual(typeof options, 'object', 'rimraf: options should be object') - - defaults(options) - - rimraf_(p, options, function CB (er) { - if (er) { - if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') && - busyTries < options.maxBusyTries) { - busyTries++ - const time = busyTries * 100 - // try again, with the same exact callback as this one. - return setTimeout(() => rimraf_(p, options, CB), time) - } - - // already gone - if (er.code === 'ENOENT') er = null - } - - cb(er) - }) -} - -// Two possible strategies. -// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR -// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR -// -// Both result in an extra syscall when you guess wrong. However, there -// are likely far more normal files in the world than directories. This -// is based on the assumption that a the average number of files per -// directory is >= 1. -// -// If anyone ever complains about this, then I guess the strategy could -// be made configurable somehow. But until then, YAGNI. -function rimraf_ (p, options, cb) { - assert(p) - assert(options) - assert(typeof cb === 'function') - - // sunos lets the root user unlink directories, which is... weird. - // so we have to lstat here and make sure it's not a dir. - options.lstat(p, (er, st) => { - if (er && er.code === 'ENOENT') { - return cb(null) - } - - // Windows can EPERM on stat. Life is suffering. - if (er && er.code === 'EPERM' && isWindows) { - return fixWinEPERM(p, options, er, cb) - } - - if (st && st.isDirectory()) { - return rmdir(p, options, er, cb) - } - - options.unlink(p, er => { - if (er) { - if (er.code === 'ENOENT') { - return cb(null) - } - if (er.code === 'EPERM') { - return (isWindows) - ? fixWinEPERM(p, options, er, cb) - : rmdir(p, options, er, cb) - } - if (er.code === 'EISDIR') { - return rmdir(p, options, er, cb) - } - } - return cb(er) - }) - }) -} - -function fixWinEPERM (p, options, er, cb) { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.chmod(p, 0o666, er2 => { - if (er2) { - cb(er2.code === 'ENOENT' ? null : er) - } else { - options.stat(p, (er3, stats) => { - if (er3) { - cb(er3.code === 'ENOENT' ? null : er) - } else if (stats.isDirectory()) { - rmdir(p, options, er, cb) - } else { - options.unlink(p, cb) - } - }) - } - }) -} - -function fixWinEPERMSync (p, options, er) { - let stats - - assert(p) - assert(options) - - try { - options.chmodSync(p, 0o666) - } catch (er2) { - if (er2.code === 'ENOENT') { - return - } else { - throw er - } - } - - try { - stats = options.statSync(p) - } catch (er3) { - if (er3.code === 'ENOENT') { - return - } else { - throw er - } - } - - if (stats.isDirectory()) { - rmdirSync(p, options, er) - } else { - options.unlinkSync(p) - } -} - -function rmdir (p, options, originalEr, cb) { - assert(p) - assert(options) - assert(typeof cb === 'function') - - // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) - // if we guessed wrong, and it's not a directory, then - // raise the original error. - options.rmdir(p, er => { - if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) { - rmkids(p, options, cb) - } else if (er && er.code === 'ENOTDIR') { - cb(originalEr) - } else { - cb(er) - } - }) -} - -function rmkids (p, options, cb) { - assert(p) - assert(options) - assert(typeof cb === 'function') - - options.readdir(p, (er, files) => { - if (er) return cb(er) - - let n = files.length - let errState - - if (n === 0) return options.rmdir(p, cb) - - files.forEach(f => { - rimraf(path.join(p, f), options, er => { - if (errState) { - return - } - if (er) return cb(errState = er) - if (--n === 0) { - options.rmdir(p, cb) - } - }) - }) - }) -} - -// this looks simpler, and is strictly *faster*, but will -// tie up the JavaScript thread and fail on excessively -// deep directory trees. -function rimrafSync (p, options) { - let st - - options = options || {} - defaults(options) - - assert(p, 'rimraf: missing path') - assert.strictEqual(typeof p, 'string', 'rimraf: path should be a string') - assert(options, 'rimraf: missing options') - assert.strictEqual(typeof options, 'object', 'rimraf: options should be object') - - try { - st = options.lstatSync(p) - } catch (er) { - if (er.code === 'ENOENT') { - return - } - - // Windows can EPERM on stat. Life is suffering. - if (er.code === 'EPERM' && isWindows) { - fixWinEPERMSync(p, options, er) - } - } - - try { - // sunos lets the root user unlink directories, which is... weird. - if (st && st.isDirectory()) { - rmdirSync(p, options, null) - } else { - options.unlinkSync(p) - } - } catch (er) { - if (er.code === 'ENOENT') { - return - } else if (er.code === 'EPERM') { - return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) - } else if (er.code !== 'EISDIR') { - throw er - } - rmdirSync(p, options, er) - } -} - -function rmdirSync (p, options, originalEr) { - assert(p) - assert(options) - - try { - options.rmdirSync(p) - } catch (er) { - if (er.code === 'ENOTDIR') { - throw originalEr - } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') { - rmkidsSync(p, options) - } else if (er.code !== 'ENOENT') { - throw er - } - } -} - -function rmkidsSync (p, options) { - assert(p) - assert(options) - options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) - - if (isWindows) { - // We only end up here once we got ENOTEMPTY at least once, and - // at this point, we are guaranteed to have removed all the kids. - // So, we know that it won't be ENOENT or ENOTDIR or anything else. - // try really hard to delete stuff on windows, because it has a - // PROFOUNDLY annoying habit of not closing handles promptly when - // files are deleted, resulting in spurious ENOTEMPTY errors. - const startTime = Date.now() - do { - try { - const ret = options.rmdirSync(p, options) - return ret - } catch {} - } while (Date.now() - startTime < 500) // give up after 500ms - } else { - const ret = options.rmdirSync(p, options) - return ret - } -} - -module.exports = rimraf -rimraf.sync = rimrafSync - - -/***/ }), - -/***/ 2733: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(7749) -const path = __webpack_require__(1017) -const util = __webpack_require__(3837) - -function getStats (src, dest, opts) { - const statFunc = opts.dereference - ? (file) => fs.stat(file, { bigint: true }) - : (file) => fs.lstat(file, { bigint: true }) - return Promise.all([ - statFunc(src), - statFunc(dest).catch(err => { - if (err.code === 'ENOENT') return null - throw err - }) - ]).then(([srcStat, destStat]) => ({ srcStat, destStat })) -} - -function getStatsSync (src, dest, opts) { - let destStat - const statFunc = opts.dereference - ? (file) => fs.statSync(file, { bigint: true }) - : (file) => fs.lstatSync(file, { bigint: true }) - const srcStat = statFunc(src) - try { - destStat = statFunc(dest) - } catch (err) { - if (err.code === 'ENOENT') return { srcStat, destStat: null } - throw err - } - return { srcStat, destStat } -} - -function checkPaths (src, dest, funcName, opts, cb) { - util.callbackify(getStats)(src, dest, opts, (err, stats) => { - if (err) return cb(err) - const { srcStat, destStat } = stats - - if (destStat) { - if (areIdentical(srcStat, destStat)) { - const srcBaseName = path.basename(src) - const destBaseName = path.basename(dest) - if (funcName === 'move' && - srcBaseName !== destBaseName && - srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { - return cb(null, { srcStat, destStat, isChangingCase: true }) - } - return cb(new Error('Source and destination must not be the same.')) - } - if (srcStat.isDirectory() && !destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)) - } - if (!srcStat.isDirectory() && destStat.isDirectory()) { - return cb(new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)) - } - } - - if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { - return cb(new Error(errMsg(src, dest, funcName))) - } - return cb(null, { srcStat, destStat }) - }) -} - -function checkPathsSync (src, dest, funcName, opts) { - const { srcStat, destStat } = getStatsSync(src, dest, opts) - - if (destStat) { - if (areIdentical(srcStat, destStat)) { - const srcBaseName = path.basename(src) - const destBaseName = path.basename(dest) - if (funcName === 'move' && - srcBaseName !== destBaseName && - srcBaseName.toLowerCase() === destBaseName.toLowerCase()) { - return { srcStat, destStat, isChangingCase: true } - } - throw new Error('Source and destination must not be the same.') - } - if (srcStat.isDirectory() && !destStat.isDirectory()) { - throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`) - } - if (!srcStat.isDirectory() && destStat.isDirectory()) { - throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`) - } - } - - if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { - throw new Error(errMsg(src, dest, funcName)) - } - return { srcStat, destStat } -} - -// recursively check if dest parent is a subdirectory of src. -// It works for all file types including symlinks since it -// checks the src and dest inodes. It starts from the deepest -// parent and stops once it reaches the src parent or the root path. -function checkParentPaths (src, srcStat, dest, funcName, cb) { - const srcParent = path.resolve(path.dirname(src)) - const destParent = path.resolve(path.dirname(dest)) - if (destParent === srcParent || destParent === path.parse(destParent).root) return cb() - fs.stat(destParent, { bigint: true }, (err, destStat) => { - if (err) { - if (err.code === 'ENOENT') return cb() - return cb(err) - } - if (areIdentical(srcStat, destStat)) { - return cb(new Error(errMsg(src, dest, funcName))) - } - return checkParentPaths(src, srcStat, destParent, funcName, cb) - }) -} - -function checkParentPathsSync (src, srcStat, dest, funcName) { - const srcParent = path.resolve(path.dirname(src)) - const destParent = path.resolve(path.dirname(dest)) - if (destParent === srcParent || destParent === path.parse(destParent).root) return - let destStat - try { - destStat = fs.statSync(destParent, { bigint: true }) - } catch (err) { - if (err.code === 'ENOENT') return - throw err - } - if (areIdentical(srcStat, destStat)) { - throw new Error(errMsg(src, dest, funcName)) - } - return checkParentPathsSync(src, srcStat, destParent, funcName) -} - -function areIdentical (srcStat, destStat) { - return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev -} - -// return true if dest is a subdir of src, otherwise false. -// It only checks the path strings. -function isSrcSubdir (src, dest) { - const srcArr = path.resolve(src).split(path.sep).filter(i => i) - const destArr = path.resolve(dest).split(path.sep).filter(i => i) - return srcArr.reduce((acc, cur, i) => acc && destArr[i] === cur, true) -} - -function errMsg (src, dest, funcName) { - return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.` -} - -module.exports = { - checkPaths, - checkPathsSync, - checkParentPaths, - checkParentPathsSync, - isSrcSubdir, - areIdentical -} - - -/***/ }), - -/***/ 318: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const fs = __webpack_require__(77) - -function utimesMillis (path, atime, mtime, callback) { - // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback) - fs.open(path, 'r+', (err, fd) => { - if (err) return callback(err) - fs.futimes(fd, atime, mtime, futimesErr => { - fs.close(fd, closeErr => { - if (callback) callback(futimesErr || closeErr) - }) - }) - }) -} - -function utimesMillisSync (path, atime, mtime) { - const fd = fs.openSync(path, 'r+') - fs.futimesSync(fd, atime, mtime) - return fs.closeSync(fd) -} - -module.exports = { - utimesMillis, - utimesMillisSync -} - - -/***/ }), - -/***/ 6458: -/***/ ((module) => { - -"use strict"; - - -module.exports = clone - -var getPrototypeOf = Object.getPrototypeOf || function (obj) { - return obj.__proto__ -} - -function clone (obj) { - if (obj === null || typeof obj !== 'object') - return obj - - if (obj instanceof Object) - var copy = { __proto__: getPrototypeOf(obj) } - else - var copy = Object.create(null) - - Object.getOwnPropertyNames(obj).forEach(function (key) { - Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) - }) - - return copy -} - - -/***/ }), - -/***/ 77: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var fs = __webpack_require__(7147) -var polyfills = __webpack_require__(2161) -var legacy = __webpack_require__(8520) -var clone = __webpack_require__(6458) - -var util = __webpack_require__(3837) - -/* istanbul ignore next - node 0.x polyfill */ -var gracefulQueue -var previousSymbol - -/* istanbul ignore else - node 0.x polyfill */ -if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { - gracefulQueue = Symbol.for('graceful-fs.queue') - // This is used in testing by future versions - previousSymbol = Symbol.for('graceful-fs.previous') -} else { - gracefulQueue = '___graceful-fs.queue' - previousSymbol = '___graceful-fs.previous' -} - -function noop () {} - -function publishQueue(context, queue) { - Object.defineProperty(context, gracefulQueue, { - get: function() { - return queue - } - }) -} - -var debug = noop -if (util.debuglog) - debug = util.debuglog('gfs4') -else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) - debug = function() { - var m = util.format.apply(util, arguments) - m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') - console.error(m) - } - -// Once time initialization -if (!fs[gracefulQueue]) { - // This queue can be shared by multiple loaded instances - var queue = global[gracefulQueue] || [] - publishQueue(fs, queue) - - // Patch fs.close/closeSync to shared queue version, because we need - // to retry() whenever a close happens *anywhere* in the program. - // This is essential when multiple graceful-fs instances are - // in play at the same time. - fs.close = (function (fs$close) { - function close (fd, cb) { - return fs$close.call(fs, fd, function (err) { - // This function uses the graceful-fs shared queue - if (!err) { - resetQueue() - } - - if (typeof cb === 'function') - cb.apply(this, arguments) - }) - } - - Object.defineProperty(close, previousSymbol, { - value: fs$close - }) - return close - })(fs.close) - - fs.closeSync = (function (fs$closeSync) { - function closeSync (fd) { - // This function uses the graceful-fs shared queue - fs$closeSync.apply(fs, arguments) - resetQueue() - } - - Object.defineProperty(closeSync, previousSymbol, { - value: fs$closeSync - }) - return closeSync - })(fs.closeSync) - - if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { - process.on('exit', function() { - debug(fs[gracefulQueue]) - __webpack_require__(9491).equal(fs[gracefulQueue].length, 0) - }) - } -} - -if (!global[gracefulQueue]) { - publishQueue(global, fs[gracefulQueue]); -} - -module.exports = patch(clone(fs)) -if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { - module.exports = patch(fs) - fs.__patched = true; -} - -function patch (fs) { - // Everything that references the open() function needs to be in here - polyfills(fs) - fs.gracefulify = patch - - fs.createReadStream = createReadStream - fs.createWriteStream = createWriteStream - var fs$readFile = fs.readFile - fs.readFile = readFile - function readFile (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$readFile(path, options, cb) - - function go$readFile (path, options, cb, startTime) { - return fs$readFile(path, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$writeFile = fs.writeFile - fs.writeFile = writeFile - function writeFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$writeFile(path, data, options, cb) - - function go$writeFile (path, data, options, cb, startTime) { - return fs$writeFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$appendFile = fs.appendFile - if (fs$appendFile) - fs.appendFile = appendFile - function appendFile (path, data, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - return go$appendFile(path, data, options, cb) - - function go$appendFile (path, data, options, cb, startTime) { - return fs$appendFile(path, data, options, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$copyFile = fs.copyFile - if (fs$copyFile) - fs.copyFile = copyFile - function copyFile (src, dest, flags, cb) { - if (typeof flags === 'function') { - cb = flags - flags = 0 - } - return go$copyFile(src, dest, flags, cb) - - function go$copyFile (src, dest, flags, cb, startTime) { - return fs$copyFile(src, dest, flags, function (err) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - var fs$readdir = fs.readdir - fs.readdir = readdir - var noReaddirOptionVersions = /^v[0-5]\./ - function readdir (path, options, cb) { - if (typeof options === 'function') - cb = options, options = null - - var go$readdir = noReaddirOptionVersions.test(process.version) - ? function go$readdir (path, options, cb, startTime) { - return fs$readdir(path, fs$readdirCallback( - path, options, cb, startTime - )) - } - : function go$readdir (path, options, cb, startTime) { - return fs$readdir(path, options, fs$readdirCallback( - path, options, cb, startTime - )) - } - - return go$readdir(path, options, cb) - - function fs$readdirCallback (path, options, cb, startTime) { - return function (err, files) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([ - go$readdir, - [path, options, cb], - err, - startTime || Date.now(), - Date.now() - ]) - else { - if (files && files.sort) - files.sort() - - if (typeof cb === 'function') - cb.call(this, err, files) - } - } - } - } - - if (process.version.substr(0, 4) === 'v0.8') { - var legStreams = legacy(fs) - ReadStream = legStreams.ReadStream - WriteStream = legStreams.WriteStream - } - - var fs$ReadStream = fs.ReadStream - if (fs$ReadStream) { - ReadStream.prototype = Object.create(fs$ReadStream.prototype) - ReadStream.prototype.open = ReadStream$open - } - - var fs$WriteStream = fs.WriteStream - if (fs$WriteStream) { - WriteStream.prototype = Object.create(fs$WriteStream.prototype) - WriteStream.prototype.open = WriteStream$open - } - - Object.defineProperty(fs, 'ReadStream', { - get: function () { - return ReadStream - }, - set: function (val) { - ReadStream = val - }, - enumerable: true, - configurable: true - }) - Object.defineProperty(fs, 'WriteStream', { - get: function () { - return WriteStream - }, - set: function (val) { - WriteStream = val - }, - enumerable: true, - configurable: true - }) - - // legacy names - var FileReadStream = ReadStream - Object.defineProperty(fs, 'FileReadStream', { - get: function () { - return FileReadStream - }, - set: function (val) { - FileReadStream = val - }, - enumerable: true, - configurable: true - }) - var FileWriteStream = WriteStream - Object.defineProperty(fs, 'FileWriteStream', { - get: function () { - return FileWriteStream - }, - set: function (val) { - FileWriteStream = val - }, - enumerable: true, - configurable: true - }) - - function ReadStream (path, options) { - if (this instanceof ReadStream) - return fs$ReadStream.apply(this, arguments), this - else - return ReadStream.apply(Object.create(ReadStream.prototype), arguments) - } - - function ReadStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - if (that.autoClose) - that.destroy() - - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - that.read() - } - }) - } - - function WriteStream (path, options) { - if (this instanceof WriteStream) - return fs$WriteStream.apply(this, arguments), this - else - return WriteStream.apply(Object.create(WriteStream.prototype), arguments) - } - - function WriteStream$open () { - var that = this - open(that.path, that.flags, that.mode, function (err, fd) { - if (err) { - that.destroy() - that.emit('error', err) - } else { - that.fd = fd - that.emit('open', fd) - } - }) - } - - function createReadStream (path, options) { - return new fs.ReadStream(path, options) - } - - function createWriteStream (path, options) { - return new fs.WriteStream(path, options) - } - - var fs$open = fs.open - fs.open = open - function open (path, flags, mode, cb) { - if (typeof mode === 'function') - cb = mode, mode = null - - return go$open(path, flags, mode, cb) - - function go$open (path, flags, mode, cb, startTime) { - return fs$open(path, flags, mode, function (err, fd) { - if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) - enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) - else { - if (typeof cb === 'function') - cb.apply(this, arguments) - } - }) - } - } - - return fs -} - -function enqueue (elem) { - debug('ENQUEUE', elem[0].name, elem[1]) - fs[gracefulQueue].push(elem) - retry() -} - -// keep track of the timeout between retry() calls -var retryTimer - -// reset the startTime and lastTime to now -// this resets the start of the 60 second overall timeout as well as the -// delay between attempts so that we'll retry these jobs sooner -function resetQueue () { - var now = Date.now() - for (var i = 0; i < fs[gracefulQueue].length; ++i) { - // entries that are only a length of 2 are from an older version, don't - // bother modifying those since they'll be retried anyway. - if (fs[gracefulQueue][i].length > 2) { - fs[gracefulQueue][i][3] = now // startTime - fs[gracefulQueue][i][4] = now // lastTime - } - } - // call retry to make sure we're actively processing the queue - retry() -} - -function retry () { - // clear the timer and remove it to help prevent unintended concurrency - clearTimeout(retryTimer) - retryTimer = undefined - - if (fs[gracefulQueue].length === 0) - return - - var elem = fs[gracefulQueue].shift() - var fn = elem[0] - var args = elem[1] - // these items may be unset if they were added by an older graceful-fs - var err = elem[2] - var startTime = elem[3] - var lastTime = elem[4] - - // if we don't have a startTime we have no way of knowing if we've waited - // long enough, so go ahead and retry this item now - if (startTime === undefined) { - debug('RETRY', fn.name, args) - fn.apply(null, args) - } else if (Date.now() - startTime >= 60000) { - // it's been more than 60 seconds total, bail now - debug('TIMEOUT', fn.name, args) - var cb = args.pop() - if (typeof cb === 'function') - cb.call(null, err) - } else { - // the amount of time between the last attempt and right now - var sinceAttempt = Date.now() - lastTime - // the amount of time between when we first tried, and when we last tried - // rounded up to at least 1 - var sinceStart = Math.max(lastTime - startTime, 1) - // backoff. wait longer than the total time we've been retrying, but only - // up to a maximum of 100ms - var desiredDelay = Math.min(sinceStart * 1.2, 100) - // it's been long enough since the last retry, do it again - if (sinceAttempt >= desiredDelay) { - debug('RETRY', fn.name, args) - fn.apply(null, args.concat([startTime])) - } else { - // if we can't do this job yet, push it to the end of the queue - // and let the next iteration check again - fs[gracefulQueue].push(elem) - } - } - - // schedule our next run if one isn't already scheduled - if (retryTimer === undefined) { - retryTimer = setTimeout(retry, 0) - } -} - - -/***/ }), - -/***/ 8520: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var Stream = (__webpack_require__(2781).Stream) - -module.exports = legacy - -function legacy (fs) { - return { - ReadStream: ReadStream, - WriteStream: WriteStream - } - - function ReadStream (path, options) { - if (!(this instanceof ReadStream)) return new ReadStream(path, options); - - Stream.call(this); - - var self = this; - - this.path = path; - this.fd = null; - this.readable = true; - this.paused = false; - - this.flags = 'r'; - this.mode = 438; /*=0666*/ - this.bufferSize = 64 * 1024; - - options = options || {}; - - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - - if (this.encoding) this.setEncoding(this.encoding); - - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.end === undefined) { - this.end = Infinity; - } else if ('number' !== typeof this.end) { - throw TypeError('end must be a Number'); - } - - if (this.start > this.end) { - throw new Error('start must be <= end'); - } - - this.pos = this.start; - } - - if (this.fd !== null) { - process.nextTick(function() { - self._read(); - }); - return; - } - - fs.open(this.path, this.flags, this.mode, function (err, fd) { - if (err) { - self.emit('error', err); - self.readable = false; - return; - } - - self.fd = fd; - self.emit('open', fd); - self._read(); - }) - } - - function WriteStream (path, options) { - if (!(this instanceof WriteStream)) return new WriteStream(path, options); - - Stream.call(this); - - this.path = path; - this.fd = null; - this.writable = true; - - this.flags = 'w'; - this.encoding = 'binary'; - this.mode = 438; /*=0666*/ - this.bytesWritten = 0; - - options = options || {}; - - // Mixin options into this - var keys = Object.keys(options); - for (var index = 0, length = keys.length; index < length; index++) { - var key = keys[index]; - this[key] = options[key]; - } - - if (this.start !== undefined) { - if ('number' !== typeof this.start) { - throw TypeError('start must be a Number'); - } - if (this.start < 0) { - throw new Error('start must be >= zero'); - } - - this.pos = this.start; - } - - this.busy = false; - this._queue = []; - - if (this.fd === null) { - this._open = fs.open; - this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); - this.flush(); - } - } -} - - -/***/ }), - -/***/ 2161: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -var constants = __webpack_require__(2057) - -var origCwd = process.cwd -var cwd = null - -var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform - -process.cwd = function() { - if (!cwd) - cwd = origCwd.call(process) - return cwd -} -try { - process.cwd() -} catch (er) {} - -// This check is needed until node.js 12 is required -if (typeof process.chdir === 'function') { - var chdir = process.chdir - process.chdir = function (d) { - cwd = null - chdir.call(process, d) - } - if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) -} - -module.exports = patch - -function patch (fs) { - // (re-)implement some things that are known busted or missing. - - // lchmod, broken prior to 0.6.2 - // back-port the fix here. - if (constants.hasOwnProperty('O_SYMLINK') && - process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { - patchLchmod(fs) - } - - // lutimes implementation, or no-op - if (!fs.lutimes) { - patchLutimes(fs) - } - - // https://github.com/isaacs/node-graceful-fs/issues/4 - // Chown should not fail on einval or eperm if non-root. - // It should not fail on enosys ever, as this just indicates - // that a fs doesn't support the intended operation. - - fs.chown = chownFix(fs.chown) - fs.fchown = chownFix(fs.fchown) - fs.lchown = chownFix(fs.lchown) - - fs.chmod = chmodFix(fs.chmod) - fs.fchmod = chmodFix(fs.fchmod) - fs.lchmod = chmodFix(fs.lchmod) - - fs.chownSync = chownFixSync(fs.chownSync) - fs.fchownSync = chownFixSync(fs.fchownSync) - fs.lchownSync = chownFixSync(fs.lchownSync) - - fs.chmodSync = chmodFixSync(fs.chmodSync) - fs.fchmodSync = chmodFixSync(fs.fchmodSync) - fs.lchmodSync = chmodFixSync(fs.lchmodSync) - - fs.stat = statFix(fs.stat) - fs.fstat = statFix(fs.fstat) - fs.lstat = statFix(fs.lstat) - - fs.statSync = statFixSync(fs.statSync) - fs.fstatSync = statFixSync(fs.fstatSync) - fs.lstatSync = statFixSync(fs.lstatSync) - - // if lchmod/lchown do not exist, then make them no-ops - if (fs.chmod && !fs.lchmod) { - fs.lchmod = function (path, mode, cb) { - if (cb) process.nextTick(cb) - } - fs.lchmodSync = function () {} - } - if (fs.chown && !fs.lchown) { - fs.lchown = function (path, uid, gid, cb) { - if (cb) process.nextTick(cb) - } - fs.lchownSync = function () {} - } - - // on Windows, A/V software can lock the directory, causing this - // to fail with an EACCES or EPERM if the directory contains newly - // created files. Try again on failure, for up to 60 seconds. - - // Set the timeout this long because some Windows Anti-Virus, such as Parity - // bit9, may lock files for up to a minute, causing npm package install - // failures. Also, take care to yield the scheduler. Windows scheduling gives - // CPU to a busy looping process, which can cause the program causing the lock - // contention to be starved of CPU by node, so the contention doesn't resolve. - if (platform === "win32") { - fs.rename = typeof fs.rename !== 'function' ? fs.rename - : (function (fs$rename) { - function rename (from, to, cb) { - var start = Date.now() - var backoff = 0; - fs$rename(from, to, function CB (er) { - if (er - && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") - && Date.now() - start < 60000) { - setTimeout(function() { - fs.stat(to, function (stater, st) { - if (stater && stater.code === "ENOENT") - fs$rename(from, to, CB); - else - cb(er) - }) - }, backoff) - if (backoff < 100) - backoff += 10; - return; - } - if (cb) cb(er) - }) - } - if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) - return rename - })(fs.rename) - } - - // if read() returns EAGAIN, then just try it again. - fs.read = typeof fs.read !== 'function' ? fs.read - : (function (fs$read) { - function read (fd, buffer, offset, length, position, callback_) { - var callback - if (callback_ && typeof callback_ === 'function') { - var eagCounter = 0 - callback = function (er, _, __) { - if (er && er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - } - callback_.apply(this, arguments) - } - } - return fs$read.call(fs, fd, buffer, offset, length, position, callback) - } - - // This ensures `util.promisify` works as it does for native `fs.read`. - if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) - return read - })(fs.read) - - fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync - : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { - var eagCounter = 0 - while (true) { - try { - return fs$readSync.call(fs, fd, buffer, offset, length, position) - } catch (er) { - if (er.code === 'EAGAIN' && eagCounter < 10) { - eagCounter ++ - continue - } - throw er - } - } - }})(fs.readSync) - - function patchLchmod (fs) { - fs.lchmod = function (path, mode, callback) { - fs.open( path - , constants.O_WRONLY | constants.O_SYMLINK - , mode - , function (err, fd) { - if (err) { - if (callback) callback(err) - return - } - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - fs.fchmod(fd, mode, function (err) { - fs.close(fd, function(err2) { - if (callback) callback(err || err2) - }) - }) - }) - } - - fs.lchmodSync = function (path, mode) { - var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) - - // prefer to return the chmod error, if one occurs, - // but still try to close, and report closing errors if they occur. - var threw = true - var ret - try { - ret = fs.fchmodSync(fd, mode) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret - } - } - - function patchLutimes (fs) { - if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { - fs.lutimes = function (path, at, mt, cb) { - fs.open(path, constants.O_SYMLINK, function (er, fd) { - if (er) { - if (cb) cb(er) - return - } - fs.futimes(fd, at, mt, function (er) { - fs.close(fd, function (er2) { - if (cb) cb(er || er2) - }) - }) - }) - } - - fs.lutimesSync = function (path, at, mt) { - var fd = fs.openSync(path, constants.O_SYMLINK) - var ret - var threw = true - try { - ret = fs.futimesSync(fd, at, mt) - threw = false - } finally { - if (threw) { - try { - fs.closeSync(fd) - } catch (er) {} - } else { - fs.closeSync(fd) - } - } - return ret - } - - } else if (fs.futimes) { - fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } - fs.lutimesSync = function () {} - } - } - - function chmodFix (orig) { - if (!orig) return orig - return function (target, mode, cb) { - return orig.call(fs, target, mode, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) - } - } - - function chmodFixSync (orig) { - if (!orig) return orig - return function (target, mode) { - try { - return orig.call(fs, target, mode) - } catch (er) { - if (!chownErOk(er)) throw er - } - } - } - - - function chownFix (orig) { - if (!orig) return orig - return function (target, uid, gid, cb) { - return orig.call(fs, target, uid, gid, function (er) { - if (chownErOk(er)) er = null - if (cb) cb.apply(this, arguments) - }) - } - } - - function chownFixSync (orig) { - if (!orig) return orig - return function (target, uid, gid) { - try { - return orig.call(fs, target, uid, gid) - } catch (er) { - if (!chownErOk(er)) throw er - } - } - } - - function statFix (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options, cb) { - if (typeof options === 'function') { - cb = options - options = null - } - function callback (er, stats) { - if (stats) { - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 - } - if (cb) cb.apply(this, arguments) - } - return options ? orig.call(fs, target, options, callback) - : orig.call(fs, target, callback) - } - } - - function statFixSync (orig) { - if (!orig) return orig - // Older versions of Node erroneously returned signed integers for - // uid + gid. - return function (target, options) { - var stats = options ? orig.call(fs, target, options) - : orig.call(fs, target) - if (stats) { - if (stats.uid < 0) stats.uid += 0x100000000 - if (stats.gid < 0) stats.gid += 0x100000000 - } - return stats; - } - } - - // ENOSYS means that the fs doesn't support the op. Just ignore - // that, because it doesn't matter. - // - // if there's no getuid, or if getuid() is something other - // than 0, and the error is EINVAL or EPERM, then just ignore - // it. - // - // This specific case is a silent failure in cp, install, tar, - // and most other unix tools that manage permissions. - // - // When running as root, or if other types of errors are - // encountered, then it's strict. - function chownErOk (er) { - if (!er) - return true - - if (er.code === "ENOSYS") - return true - - var nonroot = !process.getuid || process.getuid() !== 0 - if (nonroot) { - if (er.code === "EINVAL" || er.code === "EPERM") - return true - } - - return false - } -} - - -/***/ }), - -/***/ 6560: -/***/ ((module) => { - -"use strict"; - - -module.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); -}; - - -/***/ }), - -/***/ 6492: -/***/ (function(module, exports, __webpack_require__) { - -/* module decorator */ module = __webpack_require__.nmd(module); -var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/he v1.2.0 by @mathias | MIT license */ -;(function(root) { - - // Detect free variables `exports`. - var freeExports = true && exports; - - // Detect free variable `module`. - var freeModule = true && module && - module.exports == freeExports && module; - - // Detect free variable `global`, from Node.js or Browserified code, - // and use it as `root`. - var freeGlobal = typeof global == 'object' && global; - if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { - root = freeGlobal; - } - - /*--------------------------------------------------------------------------*/ - - // All astral symbols. - var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - // All ASCII symbols (not just printable ASCII) except those listed in the - // first column of the overrides table. - // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides - var regexAsciiWhitelist = /[\x01-\x7F]/g; - // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or - // code points listed in the first column of the overrides table on - // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides. - var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g; - - var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g; - var encodeMap = {'\xAD':'shy','\u200C':'zwnj','\u200D':'zwj','\u200E':'lrm','\u2063':'ic','\u2062':'it','\u2061':'af','\u200F':'rlm','\u200B':'ZeroWidthSpace','\u2060':'NoBreak','\u0311':'DownBreve','\u20DB':'tdot','\u20DC':'DotDot','\t':'Tab','\n':'NewLine','\u2008':'puncsp','\u205F':'MediumSpace','\u2009':'thinsp','\u200A':'hairsp','\u2004':'emsp13','\u2002':'ensp','\u2005':'emsp14','\u2003':'emsp','\u2007':'numsp','\xA0':'nbsp','\u205F\u200A':'ThickSpace','\u203E':'oline','_':'lowbar','\u2010':'dash','\u2013':'ndash','\u2014':'mdash','\u2015':'horbar',',':'comma',';':'semi','\u204F':'bsemi',':':'colon','\u2A74':'Colone','!':'excl','\xA1':'iexcl','?':'quest','\xBF':'iquest','.':'period','\u2025':'nldr','\u2026':'mldr','\xB7':'middot','\'':'apos','\u2018':'lsquo','\u2019':'rsquo','\u201A':'sbquo','\u2039':'lsaquo','\u203A':'rsaquo','"':'quot','\u201C':'ldquo','\u201D':'rdquo','\u201E':'bdquo','\xAB':'laquo','\xBB':'raquo','(':'lpar',')':'rpar','[':'lsqb',']':'rsqb','{':'lcub','}':'rcub','\u2308':'lceil','\u2309':'rceil','\u230A':'lfloor','\u230B':'rfloor','\u2985':'lopar','\u2986':'ropar','\u298B':'lbrke','\u298C':'rbrke','\u298D':'lbrkslu','\u298E':'rbrksld','\u298F':'lbrksld','\u2990':'rbrkslu','\u2991':'langd','\u2992':'rangd','\u2993':'lparlt','\u2994':'rpargt','\u2995':'gtlPar','\u2996':'ltrPar','\u27E6':'lobrk','\u27E7':'robrk','\u27E8':'lang','\u27E9':'rang','\u27EA':'Lang','\u27EB':'Rang','\u27EC':'loang','\u27ED':'roang','\u2772':'lbbrk','\u2773':'rbbrk','\u2016':'Vert','\xA7':'sect','\xB6':'para','@':'commat','*':'ast','/':'sol','undefined':null,'&':'amp','#':'num','%':'percnt','\u2030':'permil','\u2031':'pertenk','\u2020':'dagger','\u2021':'Dagger','\u2022':'bull','\u2043':'hybull','\u2032':'prime','\u2033':'Prime','\u2034':'tprime','\u2057':'qprime','\u2035':'bprime','\u2041':'caret','`':'grave','\xB4':'acute','\u02DC':'tilde','^':'Hat','\xAF':'macr','\u02D8':'breve','\u02D9':'dot','\xA8':'die','\u02DA':'ring','\u02DD':'dblac','\xB8':'cedil','\u02DB':'ogon','\u02C6':'circ','\u02C7':'caron','\xB0':'deg','\xA9':'copy','\xAE':'reg','\u2117':'copysr','\u2118':'wp','\u211E':'rx','\u2127':'mho','\u2129':'iiota','\u2190':'larr','\u219A':'nlarr','\u2192':'rarr','\u219B':'nrarr','\u2191':'uarr','\u2193':'darr','\u2194':'harr','\u21AE':'nharr','\u2195':'varr','\u2196':'nwarr','\u2197':'nearr','\u2198':'searr','\u2199':'swarr','\u219D':'rarrw','\u219D\u0338':'nrarrw','\u219E':'Larr','\u219F':'Uarr','\u21A0':'Rarr','\u21A1':'Darr','\u21A2':'larrtl','\u21A3':'rarrtl','\u21A4':'mapstoleft','\u21A5':'mapstoup','\u21A6':'map','\u21A7':'mapstodown','\u21A9':'larrhk','\u21AA':'rarrhk','\u21AB':'larrlp','\u21AC':'rarrlp','\u21AD':'harrw','\u21B0':'lsh','\u21B1':'rsh','\u21B2':'ldsh','\u21B3':'rdsh','\u21B5':'crarr','\u21B6':'cularr','\u21B7':'curarr','\u21BA':'olarr','\u21BB':'orarr','\u21BC':'lharu','\u21BD':'lhard','\u21BE':'uharr','\u21BF':'uharl','\u21C0':'rharu','\u21C1':'rhard','\u21C2':'dharr','\u21C3':'dharl','\u21C4':'rlarr','\u21C5':'udarr','\u21C6':'lrarr','\u21C7':'llarr','\u21C8':'uuarr','\u21C9':'rrarr','\u21CA':'ddarr','\u21CB':'lrhar','\u21CC':'rlhar','\u21D0':'lArr','\u21CD':'nlArr','\u21D1':'uArr','\u21D2':'rArr','\u21CF':'nrArr','\u21D3':'dArr','\u21D4':'iff','\u21CE':'nhArr','\u21D5':'vArr','\u21D6':'nwArr','\u21D7':'neArr','\u21D8':'seArr','\u21D9':'swArr','\u21DA':'lAarr','\u21DB':'rAarr','\u21DD':'zigrarr','\u21E4':'larrb','\u21E5':'rarrb','\u21F5':'duarr','\u21FD':'loarr','\u21FE':'roarr','\u21FF':'hoarr','\u2200':'forall','\u2201':'comp','\u2202':'part','\u2202\u0338':'npart','\u2203':'exist','\u2204':'nexist','\u2205':'empty','\u2207':'Del','\u2208':'in','\u2209':'notin','\u220B':'ni','\u220C':'notni','\u03F6':'bepsi','\u220F':'prod','\u2210':'coprod','\u2211':'sum','+':'plus','\xB1':'pm','\xF7':'div','\xD7':'times','<':'lt','\u226E':'nlt','<\u20D2':'nvlt','=':'equals','\u2260':'ne','=\u20E5':'bne','\u2A75':'Equal','>':'gt','\u226F':'ngt','>\u20D2':'nvgt','\xAC':'not','|':'vert','\xA6':'brvbar','\u2212':'minus','\u2213':'mp','\u2214':'plusdo','\u2044':'frasl','\u2216':'setmn','\u2217':'lowast','\u2218':'compfn','\u221A':'Sqrt','\u221D':'prop','\u221E':'infin','\u221F':'angrt','\u2220':'ang','\u2220\u20D2':'nang','\u2221':'angmsd','\u2222':'angsph','\u2223':'mid','\u2224':'nmid','\u2225':'par','\u2226':'npar','\u2227':'and','\u2228':'or','\u2229':'cap','\u2229\uFE00':'caps','\u222A':'cup','\u222A\uFE00':'cups','\u222B':'int','\u222C':'Int','\u222D':'tint','\u2A0C':'qint','\u222E':'oint','\u222F':'Conint','\u2230':'Cconint','\u2231':'cwint','\u2232':'cwconint','\u2233':'awconint','\u2234':'there4','\u2235':'becaus','\u2236':'ratio','\u2237':'Colon','\u2238':'minusd','\u223A':'mDDot','\u223B':'homtht','\u223C':'sim','\u2241':'nsim','\u223C\u20D2':'nvsim','\u223D':'bsim','\u223D\u0331':'race','\u223E':'ac','\u223E\u0333':'acE','\u223F':'acd','\u2240':'wr','\u2242':'esim','\u2242\u0338':'nesim','\u2243':'sime','\u2244':'nsime','\u2245':'cong','\u2247':'ncong','\u2246':'simne','\u2248':'ap','\u2249':'nap','\u224A':'ape','\u224B':'apid','\u224B\u0338':'napid','\u224C':'bcong','\u224D':'CupCap','\u226D':'NotCupCap','\u224D\u20D2':'nvap','\u224E':'bump','\u224E\u0338':'nbump','\u224F':'bumpe','\u224F\u0338':'nbumpe','\u2250':'doteq','\u2250\u0338':'nedot','\u2251':'eDot','\u2252':'efDot','\u2253':'erDot','\u2254':'colone','\u2255':'ecolon','\u2256':'ecir','\u2257':'cire','\u2259':'wedgeq','\u225A':'veeeq','\u225C':'trie','\u225F':'equest','\u2261':'equiv','\u2262':'nequiv','\u2261\u20E5':'bnequiv','\u2264':'le','\u2270':'nle','\u2264\u20D2':'nvle','\u2265':'ge','\u2271':'nge','\u2265\u20D2':'nvge','\u2266':'lE','\u2266\u0338':'nlE','\u2267':'gE','\u2267\u0338':'ngE','\u2268\uFE00':'lvnE','\u2268':'lnE','\u2269':'gnE','\u2269\uFE00':'gvnE','\u226A':'ll','\u226A\u0338':'nLtv','\u226A\u20D2':'nLt','\u226B':'gg','\u226B\u0338':'nGtv','\u226B\u20D2':'nGt','\u226C':'twixt','\u2272':'lsim','\u2274':'nlsim','\u2273':'gsim','\u2275':'ngsim','\u2276':'lg','\u2278':'ntlg','\u2277':'gl','\u2279':'ntgl','\u227A':'pr','\u2280':'npr','\u227B':'sc','\u2281':'nsc','\u227C':'prcue','\u22E0':'nprcue','\u227D':'sccue','\u22E1':'nsccue','\u227E':'prsim','\u227F':'scsim','\u227F\u0338':'NotSucceedsTilde','\u2282':'sub','\u2284':'nsub','\u2282\u20D2':'vnsub','\u2283':'sup','\u2285':'nsup','\u2283\u20D2':'vnsup','\u2286':'sube','\u2288':'nsube','\u2287':'supe','\u2289':'nsupe','\u228A\uFE00':'vsubne','\u228A':'subne','\u228B\uFE00':'vsupne','\u228B':'supne','\u228D':'cupdot','\u228E':'uplus','\u228F':'sqsub','\u228F\u0338':'NotSquareSubset','\u2290':'sqsup','\u2290\u0338':'NotSquareSuperset','\u2291':'sqsube','\u22E2':'nsqsube','\u2292':'sqsupe','\u22E3':'nsqsupe','\u2293':'sqcap','\u2293\uFE00':'sqcaps','\u2294':'sqcup','\u2294\uFE00':'sqcups','\u2295':'oplus','\u2296':'ominus','\u2297':'otimes','\u2298':'osol','\u2299':'odot','\u229A':'ocir','\u229B':'oast','\u229D':'odash','\u229E':'plusb','\u229F':'minusb','\u22A0':'timesb','\u22A1':'sdotb','\u22A2':'vdash','\u22AC':'nvdash','\u22A3':'dashv','\u22A4':'top','\u22A5':'bot','\u22A7':'models','\u22A8':'vDash','\u22AD':'nvDash','\u22A9':'Vdash','\u22AE':'nVdash','\u22AA':'Vvdash','\u22AB':'VDash','\u22AF':'nVDash','\u22B0':'prurel','\u22B2':'vltri','\u22EA':'nltri','\u22B3':'vrtri','\u22EB':'nrtri','\u22B4':'ltrie','\u22EC':'nltrie','\u22B4\u20D2':'nvltrie','\u22B5':'rtrie','\u22ED':'nrtrie','\u22B5\u20D2':'nvrtrie','\u22B6':'origof','\u22B7':'imof','\u22B8':'mumap','\u22B9':'hercon','\u22BA':'intcal','\u22BB':'veebar','\u22BD':'barvee','\u22BE':'angrtvb','\u22BF':'lrtri','\u22C0':'Wedge','\u22C1':'Vee','\u22C2':'xcap','\u22C3':'xcup','\u22C4':'diam','\u22C5':'sdot','\u22C6':'Star','\u22C7':'divonx','\u22C8':'bowtie','\u22C9':'ltimes','\u22CA':'rtimes','\u22CB':'lthree','\u22CC':'rthree','\u22CD':'bsime','\u22CE':'cuvee','\u22CF':'cuwed','\u22D0':'Sub','\u22D1':'Sup','\u22D2':'Cap','\u22D3':'Cup','\u22D4':'fork','\u22D5':'epar','\u22D6':'ltdot','\u22D7':'gtdot','\u22D8':'Ll','\u22D8\u0338':'nLl','\u22D9':'Gg','\u22D9\u0338':'nGg','\u22DA\uFE00':'lesg','\u22DA':'leg','\u22DB':'gel','\u22DB\uFE00':'gesl','\u22DE':'cuepr','\u22DF':'cuesc','\u22E6':'lnsim','\u22E7':'gnsim','\u22E8':'prnsim','\u22E9':'scnsim','\u22EE':'vellip','\u22EF':'ctdot','\u22F0':'utdot','\u22F1':'dtdot','\u22F2':'disin','\u22F3':'isinsv','\u22F4':'isins','\u22F5':'isindot','\u22F5\u0338':'notindot','\u22F6':'notinvc','\u22F7':'notinvb','\u22F9':'isinE','\u22F9\u0338':'notinE','\u22FA':'nisd','\u22FB':'xnis','\u22FC':'nis','\u22FD':'notnivc','\u22FE':'notnivb','\u2305':'barwed','\u2306':'Barwed','\u230C':'drcrop','\u230D':'dlcrop','\u230E':'urcrop','\u230F':'ulcrop','\u2310':'bnot','\u2312':'profline','\u2313':'profsurf','\u2315':'telrec','\u2316':'target','\u231C':'ulcorn','\u231D':'urcorn','\u231E':'dlcorn','\u231F':'drcorn','\u2322':'frown','\u2323':'smile','\u232D':'cylcty','\u232E':'profalar','\u2336':'topbot','\u233D':'ovbar','\u233F':'solbar','\u237C':'angzarr','\u23B0':'lmoust','\u23B1':'rmoust','\u23B4':'tbrk','\u23B5':'bbrk','\u23B6':'bbrktbrk','\u23DC':'OverParenthesis','\u23DD':'UnderParenthesis','\u23DE':'OverBrace','\u23DF':'UnderBrace','\u23E2':'trpezium','\u23E7':'elinters','\u2423':'blank','\u2500':'boxh','\u2502':'boxv','\u250C':'boxdr','\u2510':'boxdl','\u2514':'boxur','\u2518':'boxul','\u251C':'boxvr','\u2524':'boxvl','\u252C':'boxhd','\u2534':'boxhu','\u253C':'boxvh','\u2550':'boxH','\u2551':'boxV','\u2552':'boxdR','\u2553':'boxDr','\u2554':'boxDR','\u2555':'boxdL','\u2556':'boxDl','\u2557':'boxDL','\u2558':'boxuR','\u2559':'boxUr','\u255A':'boxUR','\u255B':'boxuL','\u255C':'boxUl','\u255D':'boxUL','\u255E':'boxvR','\u255F':'boxVr','\u2560':'boxVR','\u2561':'boxvL','\u2562':'boxVl','\u2563':'boxVL','\u2564':'boxHd','\u2565':'boxhD','\u2566':'boxHD','\u2567':'boxHu','\u2568':'boxhU','\u2569':'boxHU','\u256A':'boxvH','\u256B':'boxVh','\u256C':'boxVH','\u2580':'uhblk','\u2584':'lhblk','\u2588':'block','\u2591':'blk14','\u2592':'blk12','\u2593':'blk34','\u25A1':'squ','\u25AA':'squf','\u25AB':'EmptyVerySmallSquare','\u25AD':'rect','\u25AE':'marker','\u25B1':'fltns','\u25B3':'xutri','\u25B4':'utrif','\u25B5':'utri','\u25B8':'rtrif','\u25B9':'rtri','\u25BD':'xdtri','\u25BE':'dtrif','\u25BF':'dtri','\u25C2':'ltrif','\u25C3':'ltri','\u25CA':'loz','\u25CB':'cir','\u25EC':'tridot','\u25EF':'xcirc','\u25F8':'ultri','\u25F9':'urtri','\u25FA':'lltri','\u25FB':'EmptySmallSquare','\u25FC':'FilledSmallSquare','\u2605':'starf','\u2606':'star','\u260E':'phone','\u2640':'female','\u2642':'male','\u2660':'spades','\u2663':'clubs','\u2665':'hearts','\u2666':'diams','\u266A':'sung','\u2713':'check','\u2717':'cross','\u2720':'malt','\u2736':'sext','\u2758':'VerticalSeparator','\u27C8':'bsolhsub','\u27C9':'suphsol','\u27F5':'xlarr','\u27F6':'xrarr','\u27F7':'xharr','\u27F8':'xlArr','\u27F9':'xrArr','\u27FA':'xhArr','\u27FC':'xmap','\u27FF':'dzigrarr','\u2902':'nvlArr','\u2903':'nvrArr','\u2904':'nvHarr','\u2905':'Map','\u290C':'lbarr','\u290D':'rbarr','\u290E':'lBarr','\u290F':'rBarr','\u2910':'RBarr','\u2911':'DDotrahd','\u2912':'UpArrowBar','\u2913':'DownArrowBar','\u2916':'Rarrtl','\u2919':'latail','\u291A':'ratail','\u291B':'lAtail','\u291C':'rAtail','\u291D':'larrfs','\u291E':'rarrfs','\u291F':'larrbfs','\u2920':'rarrbfs','\u2923':'nwarhk','\u2924':'nearhk','\u2925':'searhk','\u2926':'swarhk','\u2927':'nwnear','\u2928':'toea','\u2929':'tosa','\u292A':'swnwar','\u2933':'rarrc','\u2933\u0338':'nrarrc','\u2935':'cudarrr','\u2936':'ldca','\u2937':'rdca','\u2938':'cudarrl','\u2939':'larrpl','\u293C':'curarrm','\u293D':'cularrp','\u2945':'rarrpl','\u2948':'harrcir','\u2949':'Uarrocir','\u294A':'lurdshar','\u294B':'ldrushar','\u294E':'LeftRightVector','\u294F':'RightUpDownVector','\u2950':'DownLeftRightVector','\u2951':'LeftUpDownVector','\u2952':'LeftVectorBar','\u2953':'RightVectorBar','\u2954':'RightUpVectorBar','\u2955':'RightDownVectorBar','\u2956':'DownLeftVectorBar','\u2957':'DownRightVectorBar','\u2958':'LeftUpVectorBar','\u2959':'LeftDownVectorBar','\u295A':'LeftTeeVector','\u295B':'RightTeeVector','\u295C':'RightUpTeeVector','\u295D':'RightDownTeeVector','\u295E':'DownLeftTeeVector','\u295F':'DownRightTeeVector','\u2960':'LeftUpTeeVector','\u2961':'LeftDownTeeVector','\u2962':'lHar','\u2963':'uHar','\u2964':'rHar','\u2965':'dHar','\u2966':'luruhar','\u2967':'ldrdhar','\u2968':'ruluhar','\u2969':'rdldhar','\u296A':'lharul','\u296B':'llhard','\u296C':'rharul','\u296D':'lrhard','\u296E':'udhar','\u296F':'duhar','\u2970':'RoundImplies','\u2971':'erarr','\u2972':'simrarr','\u2973':'larrsim','\u2974':'rarrsim','\u2975':'rarrap','\u2976':'ltlarr','\u2978':'gtrarr','\u2979':'subrarr','\u297B':'suplarr','\u297C':'lfisht','\u297D':'rfisht','\u297E':'ufisht','\u297F':'dfisht','\u299A':'vzigzag','\u299C':'vangrt','\u299D':'angrtvbd','\u29A4':'ange','\u29A5':'range','\u29A6':'dwangle','\u29A7':'uwangle','\u29A8':'angmsdaa','\u29A9':'angmsdab','\u29AA':'angmsdac','\u29AB':'angmsdad','\u29AC':'angmsdae','\u29AD':'angmsdaf','\u29AE':'angmsdag','\u29AF':'angmsdah','\u29B0':'bemptyv','\u29B1':'demptyv','\u29B2':'cemptyv','\u29B3':'raemptyv','\u29B4':'laemptyv','\u29B5':'ohbar','\u29B6':'omid','\u29B7':'opar','\u29B9':'operp','\u29BB':'olcross','\u29BC':'odsold','\u29BE':'olcir','\u29BF':'ofcir','\u29C0':'olt','\u29C1':'ogt','\u29C2':'cirscir','\u29C3':'cirE','\u29C4':'solb','\u29C5':'bsolb','\u29C9':'boxbox','\u29CD':'trisb','\u29CE':'rtriltri','\u29CF':'LeftTriangleBar','\u29CF\u0338':'NotLeftTriangleBar','\u29D0':'RightTriangleBar','\u29D0\u0338':'NotRightTriangleBar','\u29DC':'iinfin','\u29DD':'infintie','\u29DE':'nvinfin','\u29E3':'eparsl','\u29E4':'smeparsl','\u29E5':'eqvparsl','\u29EB':'lozf','\u29F4':'RuleDelayed','\u29F6':'dsol','\u2A00':'xodot','\u2A01':'xoplus','\u2A02':'xotime','\u2A04':'xuplus','\u2A06':'xsqcup','\u2A0D':'fpartint','\u2A10':'cirfnint','\u2A11':'awint','\u2A12':'rppolint','\u2A13':'scpolint','\u2A14':'npolint','\u2A15':'pointint','\u2A16':'quatint','\u2A17':'intlarhk','\u2A22':'pluscir','\u2A23':'plusacir','\u2A24':'simplus','\u2A25':'plusdu','\u2A26':'plussim','\u2A27':'plustwo','\u2A29':'mcomma','\u2A2A':'minusdu','\u2A2D':'loplus','\u2A2E':'roplus','\u2A2F':'Cross','\u2A30':'timesd','\u2A31':'timesbar','\u2A33':'smashp','\u2A34':'lotimes','\u2A35':'rotimes','\u2A36':'otimesas','\u2A37':'Otimes','\u2A38':'odiv','\u2A39':'triplus','\u2A3A':'triminus','\u2A3B':'tritime','\u2A3C':'iprod','\u2A3F':'amalg','\u2A40':'capdot','\u2A42':'ncup','\u2A43':'ncap','\u2A44':'capand','\u2A45':'cupor','\u2A46':'cupcap','\u2A47':'capcup','\u2A48':'cupbrcap','\u2A49':'capbrcup','\u2A4A':'cupcup','\u2A4B':'capcap','\u2A4C':'ccups','\u2A4D':'ccaps','\u2A50':'ccupssm','\u2A53':'And','\u2A54':'Or','\u2A55':'andand','\u2A56':'oror','\u2A57':'orslope','\u2A58':'andslope','\u2A5A':'andv','\u2A5B':'orv','\u2A5C':'andd','\u2A5D':'ord','\u2A5F':'wedbar','\u2A66':'sdote','\u2A6A':'simdot','\u2A6D':'congdot','\u2A6D\u0338':'ncongdot','\u2A6E':'easter','\u2A6F':'apacir','\u2A70':'apE','\u2A70\u0338':'napE','\u2A71':'eplus','\u2A72':'pluse','\u2A73':'Esim','\u2A77':'eDDot','\u2A78':'equivDD','\u2A79':'ltcir','\u2A7A':'gtcir','\u2A7B':'ltquest','\u2A7C':'gtquest','\u2A7D':'les','\u2A7D\u0338':'nles','\u2A7E':'ges','\u2A7E\u0338':'nges','\u2A7F':'lesdot','\u2A80':'gesdot','\u2A81':'lesdoto','\u2A82':'gesdoto','\u2A83':'lesdotor','\u2A84':'gesdotol','\u2A85':'lap','\u2A86':'gap','\u2A87':'lne','\u2A88':'gne','\u2A89':'lnap','\u2A8A':'gnap','\u2A8B':'lEg','\u2A8C':'gEl','\u2A8D':'lsime','\u2A8E':'gsime','\u2A8F':'lsimg','\u2A90':'gsiml','\u2A91':'lgE','\u2A92':'glE','\u2A93':'lesges','\u2A94':'gesles','\u2A95':'els','\u2A96':'egs','\u2A97':'elsdot','\u2A98':'egsdot','\u2A99':'el','\u2A9A':'eg','\u2A9D':'siml','\u2A9E':'simg','\u2A9F':'simlE','\u2AA0':'simgE','\u2AA1':'LessLess','\u2AA1\u0338':'NotNestedLessLess','\u2AA2':'GreaterGreater','\u2AA2\u0338':'NotNestedGreaterGreater','\u2AA4':'glj','\u2AA5':'gla','\u2AA6':'ltcc','\u2AA7':'gtcc','\u2AA8':'lescc','\u2AA9':'gescc','\u2AAA':'smt','\u2AAB':'lat','\u2AAC':'smte','\u2AAC\uFE00':'smtes','\u2AAD':'late','\u2AAD\uFE00':'lates','\u2AAE':'bumpE','\u2AAF':'pre','\u2AAF\u0338':'npre','\u2AB0':'sce','\u2AB0\u0338':'nsce','\u2AB3':'prE','\u2AB4':'scE','\u2AB5':'prnE','\u2AB6':'scnE','\u2AB7':'prap','\u2AB8':'scap','\u2AB9':'prnap','\u2ABA':'scnap','\u2ABB':'Pr','\u2ABC':'Sc','\u2ABD':'subdot','\u2ABE':'supdot','\u2ABF':'subplus','\u2AC0':'supplus','\u2AC1':'submult','\u2AC2':'supmult','\u2AC3':'subedot','\u2AC4':'supedot','\u2AC5':'subE','\u2AC5\u0338':'nsubE','\u2AC6':'supE','\u2AC6\u0338':'nsupE','\u2AC7':'subsim','\u2AC8':'supsim','\u2ACB\uFE00':'vsubnE','\u2ACB':'subnE','\u2ACC\uFE00':'vsupnE','\u2ACC':'supnE','\u2ACF':'csub','\u2AD0':'csup','\u2AD1':'csube','\u2AD2':'csupe','\u2AD3':'subsup','\u2AD4':'supsub','\u2AD5':'subsub','\u2AD6':'supsup','\u2AD7':'suphsub','\u2AD8':'supdsub','\u2AD9':'forkv','\u2ADA':'topfork','\u2ADB':'mlcp','\u2AE4':'Dashv','\u2AE6':'Vdashl','\u2AE7':'Barv','\u2AE8':'vBar','\u2AE9':'vBarv','\u2AEB':'Vbar','\u2AEC':'Not','\u2AED':'bNot','\u2AEE':'rnmid','\u2AEF':'cirmid','\u2AF0':'midcir','\u2AF1':'topcir','\u2AF2':'nhpar','\u2AF3':'parsim','\u2AFD':'parsl','\u2AFD\u20E5':'nparsl','\u266D':'flat','\u266E':'natur','\u266F':'sharp','\xA4':'curren','\xA2':'cent','$':'dollar','\xA3':'pound','\xA5':'yen','\u20AC':'euro','\xB9':'sup1','\xBD':'half','\u2153':'frac13','\xBC':'frac14','\u2155':'frac15','\u2159':'frac16','\u215B':'frac18','\xB2':'sup2','\u2154':'frac23','\u2156':'frac25','\xB3':'sup3','\xBE':'frac34','\u2157':'frac35','\u215C':'frac38','\u2158':'frac45','\u215A':'frac56','\u215D':'frac58','\u215E':'frac78','\uD835\uDCB6':'ascr','\uD835\uDD52':'aopf','\uD835\uDD1E':'afr','\uD835\uDD38':'Aopf','\uD835\uDD04':'Afr','\uD835\uDC9C':'Ascr','\xAA':'ordf','\xE1':'aacute','\xC1':'Aacute','\xE0':'agrave','\xC0':'Agrave','\u0103':'abreve','\u0102':'Abreve','\xE2':'acirc','\xC2':'Acirc','\xE5':'aring','\xC5':'angst','\xE4':'auml','\xC4':'Auml','\xE3':'atilde','\xC3':'Atilde','\u0105':'aogon','\u0104':'Aogon','\u0101':'amacr','\u0100':'Amacr','\xE6':'aelig','\xC6':'AElig','\uD835\uDCB7':'bscr','\uD835\uDD53':'bopf','\uD835\uDD1F':'bfr','\uD835\uDD39':'Bopf','\u212C':'Bscr','\uD835\uDD05':'Bfr','\uD835\uDD20':'cfr','\uD835\uDCB8':'cscr','\uD835\uDD54':'copf','\u212D':'Cfr','\uD835\uDC9E':'Cscr','\u2102':'Copf','\u0107':'cacute','\u0106':'Cacute','\u0109':'ccirc','\u0108':'Ccirc','\u010D':'ccaron','\u010C':'Ccaron','\u010B':'cdot','\u010A':'Cdot','\xE7':'ccedil','\xC7':'Ccedil','\u2105':'incare','\uD835\uDD21':'dfr','\u2146':'dd','\uD835\uDD55':'dopf','\uD835\uDCB9':'dscr','\uD835\uDC9F':'Dscr','\uD835\uDD07':'Dfr','\u2145':'DD','\uD835\uDD3B':'Dopf','\u010F':'dcaron','\u010E':'Dcaron','\u0111':'dstrok','\u0110':'Dstrok','\xF0':'eth','\xD0':'ETH','\u2147':'ee','\u212F':'escr','\uD835\uDD22':'efr','\uD835\uDD56':'eopf','\u2130':'Escr','\uD835\uDD08':'Efr','\uD835\uDD3C':'Eopf','\xE9':'eacute','\xC9':'Eacute','\xE8':'egrave','\xC8':'Egrave','\xEA':'ecirc','\xCA':'Ecirc','\u011B':'ecaron','\u011A':'Ecaron','\xEB':'euml','\xCB':'Euml','\u0117':'edot','\u0116':'Edot','\u0119':'eogon','\u0118':'Eogon','\u0113':'emacr','\u0112':'Emacr','\uD835\uDD23':'ffr','\uD835\uDD57':'fopf','\uD835\uDCBB':'fscr','\uD835\uDD09':'Ffr','\uD835\uDD3D':'Fopf','\u2131':'Fscr','\uFB00':'fflig','\uFB03':'ffilig','\uFB04':'ffllig','\uFB01':'filig','fj':'fjlig','\uFB02':'fllig','\u0192':'fnof','\u210A':'gscr','\uD835\uDD58':'gopf','\uD835\uDD24':'gfr','\uD835\uDCA2':'Gscr','\uD835\uDD3E':'Gopf','\uD835\uDD0A':'Gfr','\u01F5':'gacute','\u011F':'gbreve','\u011E':'Gbreve','\u011D':'gcirc','\u011C':'Gcirc','\u0121':'gdot','\u0120':'Gdot','\u0122':'Gcedil','\uD835\uDD25':'hfr','\u210E':'planckh','\uD835\uDCBD':'hscr','\uD835\uDD59':'hopf','\u210B':'Hscr','\u210C':'Hfr','\u210D':'Hopf','\u0125':'hcirc','\u0124':'Hcirc','\u210F':'hbar','\u0127':'hstrok','\u0126':'Hstrok','\uD835\uDD5A':'iopf','\uD835\uDD26':'ifr','\uD835\uDCBE':'iscr','\u2148':'ii','\uD835\uDD40':'Iopf','\u2110':'Iscr','\u2111':'Im','\xED':'iacute','\xCD':'Iacute','\xEC':'igrave','\xCC':'Igrave','\xEE':'icirc','\xCE':'Icirc','\xEF':'iuml','\xCF':'Iuml','\u0129':'itilde','\u0128':'Itilde','\u0130':'Idot','\u012F':'iogon','\u012E':'Iogon','\u012B':'imacr','\u012A':'Imacr','\u0133':'ijlig','\u0132':'IJlig','\u0131':'imath','\uD835\uDCBF':'jscr','\uD835\uDD5B':'jopf','\uD835\uDD27':'jfr','\uD835\uDCA5':'Jscr','\uD835\uDD0D':'Jfr','\uD835\uDD41':'Jopf','\u0135':'jcirc','\u0134':'Jcirc','\u0237':'jmath','\uD835\uDD5C':'kopf','\uD835\uDCC0':'kscr','\uD835\uDD28':'kfr','\uD835\uDCA6':'Kscr','\uD835\uDD42':'Kopf','\uD835\uDD0E':'Kfr','\u0137':'kcedil','\u0136':'Kcedil','\uD835\uDD29':'lfr','\uD835\uDCC1':'lscr','\u2113':'ell','\uD835\uDD5D':'lopf','\u2112':'Lscr','\uD835\uDD0F':'Lfr','\uD835\uDD43':'Lopf','\u013A':'lacute','\u0139':'Lacute','\u013E':'lcaron','\u013D':'Lcaron','\u013C':'lcedil','\u013B':'Lcedil','\u0142':'lstrok','\u0141':'Lstrok','\u0140':'lmidot','\u013F':'Lmidot','\uD835\uDD2A':'mfr','\uD835\uDD5E':'mopf','\uD835\uDCC2':'mscr','\uD835\uDD10':'Mfr','\uD835\uDD44':'Mopf','\u2133':'Mscr','\uD835\uDD2B':'nfr','\uD835\uDD5F':'nopf','\uD835\uDCC3':'nscr','\u2115':'Nopf','\uD835\uDCA9':'Nscr','\uD835\uDD11':'Nfr','\u0144':'nacute','\u0143':'Nacute','\u0148':'ncaron','\u0147':'Ncaron','\xF1':'ntilde','\xD1':'Ntilde','\u0146':'ncedil','\u0145':'Ncedil','\u2116':'numero','\u014B':'eng','\u014A':'ENG','\uD835\uDD60':'oopf','\uD835\uDD2C':'ofr','\u2134':'oscr','\uD835\uDCAA':'Oscr','\uD835\uDD12':'Ofr','\uD835\uDD46':'Oopf','\xBA':'ordm','\xF3':'oacute','\xD3':'Oacute','\xF2':'ograve','\xD2':'Ograve','\xF4':'ocirc','\xD4':'Ocirc','\xF6':'ouml','\xD6':'Ouml','\u0151':'odblac','\u0150':'Odblac','\xF5':'otilde','\xD5':'Otilde','\xF8':'oslash','\xD8':'Oslash','\u014D':'omacr','\u014C':'Omacr','\u0153':'oelig','\u0152':'OElig','\uD835\uDD2D':'pfr','\uD835\uDCC5':'pscr','\uD835\uDD61':'popf','\u2119':'Popf','\uD835\uDD13':'Pfr','\uD835\uDCAB':'Pscr','\uD835\uDD62':'qopf','\uD835\uDD2E':'qfr','\uD835\uDCC6':'qscr','\uD835\uDCAC':'Qscr','\uD835\uDD14':'Qfr','\u211A':'Qopf','\u0138':'kgreen','\uD835\uDD2F':'rfr','\uD835\uDD63':'ropf','\uD835\uDCC7':'rscr','\u211B':'Rscr','\u211C':'Re','\u211D':'Ropf','\u0155':'racute','\u0154':'Racute','\u0159':'rcaron','\u0158':'Rcaron','\u0157':'rcedil','\u0156':'Rcedil','\uD835\uDD64':'sopf','\uD835\uDCC8':'sscr','\uD835\uDD30':'sfr','\uD835\uDD4A':'Sopf','\uD835\uDD16':'Sfr','\uD835\uDCAE':'Sscr','\u24C8':'oS','\u015B':'sacute','\u015A':'Sacute','\u015D':'scirc','\u015C':'Scirc','\u0161':'scaron','\u0160':'Scaron','\u015F':'scedil','\u015E':'Scedil','\xDF':'szlig','\uD835\uDD31':'tfr','\uD835\uDCC9':'tscr','\uD835\uDD65':'topf','\uD835\uDCAF':'Tscr','\uD835\uDD17':'Tfr','\uD835\uDD4B':'Topf','\u0165':'tcaron','\u0164':'Tcaron','\u0163':'tcedil','\u0162':'Tcedil','\u2122':'trade','\u0167':'tstrok','\u0166':'Tstrok','\uD835\uDCCA':'uscr','\uD835\uDD66':'uopf','\uD835\uDD32':'ufr','\uD835\uDD4C':'Uopf','\uD835\uDD18':'Ufr','\uD835\uDCB0':'Uscr','\xFA':'uacute','\xDA':'Uacute','\xF9':'ugrave','\xD9':'Ugrave','\u016D':'ubreve','\u016C':'Ubreve','\xFB':'ucirc','\xDB':'Ucirc','\u016F':'uring','\u016E':'Uring','\xFC':'uuml','\xDC':'Uuml','\u0171':'udblac','\u0170':'Udblac','\u0169':'utilde','\u0168':'Utilde','\u0173':'uogon','\u0172':'Uogon','\u016B':'umacr','\u016A':'Umacr','\uD835\uDD33':'vfr','\uD835\uDD67':'vopf','\uD835\uDCCB':'vscr','\uD835\uDD19':'Vfr','\uD835\uDD4D':'Vopf','\uD835\uDCB1':'Vscr','\uD835\uDD68':'wopf','\uD835\uDCCC':'wscr','\uD835\uDD34':'wfr','\uD835\uDCB2':'Wscr','\uD835\uDD4E':'Wopf','\uD835\uDD1A':'Wfr','\u0175':'wcirc','\u0174':'Wcirc','\uD835\uDD35':'xfr','\uD835\uDCCD':'xscr','\uD835\uDD69':'xopf','\uD835\uDD4F':'Xopf','\uD835\uDD1B':'Xfr','\uD835\uDCB3':'Xscr','\uD835\uDD36':'yfr','\uD835\uDCCE':'yscr','\uD835\uDD6A':'yopf','\uD835\uDCB4':'Yscr','\uD835\uDD1C':'Yfr','\uD835\uDD50':'Yopf','\xFD':'yacute','\xDD':'Yacute','\u0177':'ycirc','\u0176':'Ycirc','\xFF':'yuml','\u0178':'Yuml','\uD835\uDCCF':'zscr','\uD835\uDD37':'zfr','\uD835\uDD6B':'zopf','\u2128':'Zfr','\u2124':'Zopf','\uD835\uDCB5':'Zscr','\u017A':'zacute','\u0179':'Zacute','\u017E':'zcaron','\u017D':'Zcaron','\u017C':'zdot','\u017B':'Zdot','\u01B5':'imped','\xFE':'thorn','\xDE':'THORN','\u0149':'napos','\u03B1':'alpha','\u0391':'Alpha','\u03B2':'beta','\u0392':'Beta','\u03B3':'gamma','\u0393':'Gamma','\u03B4':'delta','\u0394':'Delta','\u03B5':'epsi','\u03F5':'epsiv','\u0395':'Epsilon','\u03DD':'gammad','\u03DC':'Gammad','\u03B6':'zeta','\u0396':'Zeta','\u03B7':'eta','\u0397':'Eta','\u03B8':'theta','\u03D1':'thetav','\u0398':'Theta','\u03B9':'iota','\u0399':'Iota','\u03BA':'kappa','\u03F0':'kappav','\u039A':'Kappa','\u03BB':'lambda','\u039B':'Lambda','\u03BC':'mu','\xB5':'micro','\u039C':'Mu','\u03BD':'nu','\u039D':'Nu','\u03BE':'xi','\u039E':'Xi','\u03BF':'omicron','\u039F':'Omicron','\u03C0':'pi','\u03D6':'piv','\u03A0':'Pi','\u03C1':'rho','\u03F1':'rhov','\u03A1':'Rho','\u03C3':'sigma','\u03A3':'Sigma','\u03C2':'sigmaf','\u03C4':'tau','\u03A4':'Tau','\u03C5':'upsi','\u03A5':'Upsilon','\u03D2':'Upsi','\u03C6':'phi','\u03D5':'phiv','\u03A6':'Phi','\u03C7':'chi','\u03A7':'Chi','\u03C8':'psi','\u03A8':'Psi','\u03C9':'omega','\u03A9':'ohm','\u0430':'acy','\u0410':'Acy','\u0431':'bcy','\u0411':'Bcy','\u0432':'vcy','\u0412':'Vcy','\u0433':'gcy','\u0413':'Gcy','\u0453':'gjcy','\u0403':'GJcy','\u0434':'dcy','\u0414':'Dcy','\u0452':'djcy','\u0402':'DJcy','\u0435':'iecy','\u0415':'IEcy','\u0451':'iocy','\u0401':'IOcy','\u0454':'jukcy','\u0404':'Jukcy','\u0436':'zhcy','\u0416':'ZHcy','\u0437':'zcy','\u0417':'Zcy','\u0455':'dscy','\u0405':'DScy','\u0438':'icy','\u0418':'Icy','\u0456':'iukcy','\u0406':'Iukcy','\u0457':'yicy','\u0407':'YIcy','\u0439':'jcy','\u0419':'Jcy','\u0458':'jsercy','\u0408':'Jsercy','\u043A':'kcy','\u041A':'Kcy','\u045C':'kjcy','\u040C':'KJcy','\u043B':'lcy','\u041B':'Lcy','\u0459':'ljcy','\u0409':'LJcy','\u043C':'mcy','\u041C':'Mcy','\u043D':'ncy','\u041D':'Ncy','\u045A':'njcy','\u040A':'NJcy','\u043E':'ocy','\u041E':'Ocy','\u043F':'pcy','\u041F':'Pcy','\u0440':'rcy','\u0420':'Rcy','\u0441':'scy','\u0421':'Scy','\u0442':'tcy','\u0422':'Tcy','\u045B':'tshcy','\u040B':'TSHcy','\u0443':'ucy','\u0423':'Ucy','\u045E':'ubrcy','\u040E':'Ubrcy','\u0444':'fcy','\u0424':'Fcy','\u0445':'khcy','\u0425':'KHcy','\u0446':'tscy','\u0426':'TScy','\u0447':'chcy','\u0427':'CHcy','\u045F':'dzcy','\u040F':'DZcy','\u0448':'shcy','\u0428':'SHcy','\u0449':'shchcy','\u0429':'SHCHcy','\u044A':'hardcy','\u042A':'HARDcy','\u044B':'ycy','\u042B':'Ycy','\u044C':'softcy','\u042C':'SOFTcy','\u044D':'ecy','\u042D':'Ecy','\u044E':'yucy','\u042E':'YUcy','\u044F':'yacy','\u042F':'YAcy','\u2135':'aleph','\u2136':'beth','\u2137':'gimel','\u2138':'daleth'}; - - var regexEscape = /["&'<>`]/g; - var escapeMap = { - '"': '"', - '&': '&', - '\'': ''', - '<': '<', - // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the - // following is not strictly necessary unless it’s part of a tag or an - // unquoted attribute value. We’re only escaping it to support those - // situations, and for XML support. - '>': '>', - // In Internet Explorer ≤ 8, the backtick character can be used - // to break out of (un)quoted attribute values or HTML comments. - // See http://html5sec.org/#102, http://html5sec.org/#108, and - // http://html5sec.org/#133. - '`': '`' - }; - - var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/; - var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; - var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g; - var decodeMap = {'aacute':'\xE1','Aacute':'\xC1','abreve':'\u0103','Abreve':'\u0102','ac':'\u223E','acd':'\u223F','acE':'\u223E\u0333','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','acy':'\u0430','Acy':'\u0410','aelig':'\xE6','AElig':'\xC6','af':'\u2061','afr':'\uD835\uDD1E','Afr':'\uD835\uDD04','agrave':'\xE0','Agrave':'\xC0','alefsym':'\u2135','aleph':'\u2135','alpha':'\u03B1','Alpha':'\u0391','amacr':'\u0101','Amacr':'\u0100','amalg':'\u2A3F','amp':'&','AMP':'&','and':'\u2227','And':'\u2A53','andand':'\u2A55','andd':'\u2A5C','andslope':'\u2A58','andv':'\u2A5A','ang':'\u2220','ange':'\u29A4','angle':'\u2220','angmsd':'\u2221','angmsdaa':'\u29A8','angmsdab':'\u29A9','angmsdac':'\u29AA','angmsdad':'\u29AB','angmsdae':'\u29AC','angmsdaf':'\u29AD','angmsdag':'\u29AE','angmsdah':'\u29AF','angrt':'\u221F','angrtvb':'\u22BE','angrtvbd':'\u299D','angsph':'\u2222','angst':'\xC5','angzarr':'\u237C','aogon':'\u0105','Aogon':'\u0104','aopf':'\uD835\uDD52','Aopf':'\uD835\uDD38','ap':'\u2248','apacir':'\u2A6F','ape':'\u224A','apE':'\u2A70','apid':'\u224B','apos':'\'','ApplyFunction':'\u2061','approx':'\u2248','approxeq':'\u224A','aring':'\xE5','Aring':'\xC5','ascr':'\uD835\uDCB6','Ascr':'\uD835\uDC9C','Assign':'\u2254','ast':'*','asymp':'\u2248','asympeq':'\u224D','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','awconint':'\u2233','awint':'\u2A11','backcong':'\u224C','backepsilon':'\u03F6','backprime':'\u2035','backsim':'\u223D','backsimeq':'\u22CD','Backslash':'\u2216','Barv':'\u2AE7','barvee':'\u22BD','barwed':'\u2305','Barwed':'\u2306','barwedge':'\u2305','bbrk':'\u23B5','bbrktbrk':'\u23B6','bcong':'\u224C','bcy':'\u0431','Bcy':'\u0411','bdquo':'\u201E','becaus':'\u2235','because':'\u2235','Because':'\u2235','bemptyv':'\u29B0','bepsi':'\u03F6','bernou':'\u212C','Bernoullis':'\u212C','beta':'\u03B2','Beta':'\u0392','beth':'\u2136','between':'\u226C','bfr':'\uD835\uDD1F','Bfr':'\uD835\uDD05','bigcap':'\u22C2','bigcirc':'\u25EF','bigcup':'\u22C3','bigodot':'\u2A00','bigoplus':'\u2A01','bigotimes':'\u2A02','bigsqcup':'\u2A06','bigstar':'\u2605','bigtriangledown':'\u25BD','bigtriangleup':'\u25B3','biguplus':'\u2A04','bigvee':'\u22C1','bigwedge':'\u22C0','bkarow':'\u290D','blacklozenge':'\u29EB','blacksquare':'\u25AA','blacktriangle':'\u25B4','blacktriangledown':'\u25BE','blacktriangleleft':'\u25C2','blacktriangleright':'\u25B8','blank':'\u2423','blk12':'\u2592','blk14':'\u2591','blk34':'\u2593','block':'\u2588','bne':'=\u20E5','bnequiv':'\u2261\u20E5','bnot':'\u2310','bNot':'\u2AED','bopf':'\uD835\uDD53','Bopf':'\uD835\uDD39','bot':'\u22A5','bottom':'\u22A5','bowtie':'\u22C8','boxbox':'\u29C9','boxdl':'\u2510','boxdL':'\u2555','boxDl':'\u2556','boxDL':'\u2557','boxdr':'\u250C','boxdR':'\u2552','boxDr':'\u2553','boxDR':'\u2554','boxh':'\u2500','boxH':'\u2550','boxhd':'\u252C','boxhD':'\u2565','boxHd':'\u2564','boxHD':'\u2566','boxhu':'\u2534','boxhU':'\u2568','boxHu':'\u2567','boxHU':'\u2569','boxminus':'\u229F','boxplus':'\u229E','boxtimes':'\u22A0','boxul':'\u2518','boxuL':'\u255B','boxUl':'\u255C','boxUL':'\u255D','boxur':'\u2514','boxuR':'\u2558','boxUr':'\u2559','boxUR':'\u255A','boxv':'\u2502','boxV':'\u2551','boxvh':'\u253C','boxvH':'\u256A','boxVh':'\u256B','boxVH':'\u256C','boxvl':'\u2524','boxvL':'\u2561','boxVl':'\u2562','boxVL':'\u2563','boxvr':'\u251C','boxvR':'\u255E','boxVr':'\u255F','boxVR':'\u2560','bprime':'\u2035','breve':'\u02D8','Breve':'\u02D8','brvbar':'\xA6','bscr':'\uD835\uDCB7','Bscr':'\u212C','bsemi':'\u204F','bsim':'\u223D','bsime':'\u22CD','bsol':'\\','bsolb':'\u29C5','bsolhsub':'\u27C8','bull':'\u2022','bullet':'\u2022','bump':'\u224E','bumpe':'\u224F','bumpE':'\u2AAE','bumpeq':'\u224F','Bumpeq':'\u224E','cacute':'\u0107','Cacute':'\u0106','cap':'\u2229','Cap':'\u22D2','capand':'\u2A44','capbrcup':'\u2A49','capcap':'\u2A4B','capcup':'\u2A47','capdot':'\u2A40','CapitalDifferentialD':'\u2145','caps':'\u2229\uFE00','caret':'\u2041','caron':'\u02C7','Cayleys':'\u212D','ccaps':'\u2A4D','ccaron':'\u010D','Ccaron':'\u010C','ccedil':'\xE7','Ccedil':'\xC7','ccirc':'\u0109','Ccirc':'\u0108','Cconint':'\u2230','ccups':'\u2A4C','ccupssm':'\u2A50','cdot':'\u010B','Cdot':'\u010A','cedil':'\xB8','Cedilla':'\xB8','cemptyv':'\u29B2','cent':'\xA2','centerdot':'\xB7','CenterDot':'\xB7','cfr':'\uD835\uDD20','Cfr':'\u212D','chcy':'\u0447','CHcy':'\u0427','check':'\u2713','checkmark':'\u2713','chi':'\u03C7','Chi':'\u03A7','cir':'\u25CB','circ':'\u02C6','circeq':'\u2257','circlearrowleft':'\u21BA','circlearrowright':'\u21BB','circledast':'\u229B','circledcirc':'\u229A','circleddash':'\u229D','CircleDot':'\u2299','circledR':'\xAE','circledS':'\u24C8','CircleMinus':'\u2296','CirclePlus':'\u2295','CircleTimes':'\u2297','cire':'\u2257','cirE':'\u29C3','cirfnint':'\u2A10','cirmid':'\u2AEF','cirscir':'\u29C2','ClockwiseContourIntegral':'\u2232','CloseCurlyDoubleQuote':'\u201D','CloseCurlyQuote':'\u2019','clubs':'\u2663','clubsuit':'\u2663','colon':':','Colon':'\u2237','colone':'\u2254','Colone':'\u2A74','coloneq':'\u2254','comma':',','commat':'@','comp':'\u2201','compfn':'\u2218','complement':'\u2201','complexes':'\u2102','cong':'\u2245','congdot':'\u2A6D','Congruent':'\u2261','conint':'\u222E','Conint':'\u222F','ContourIntegral':'\u222E','copf':'\uD835\uDD54','Copf':'\u2102','coprod':'\u2210','Coproduct':'\u2210','copy':'\xA9','COPY':'\xA9','copysr':'\u2117','CounterClockwiseContourIntegral':'\u2233','crarr':'\u21B5','cross':'\u2717','Cross':'\u2A2F','cscr':'\uD835\uDCB8','Cscr':'\uD835\uDC9E','csub':'\u2ACF','csube':'\u2AD1','csup':'\u2AD0','csupe':'\u2AD2','ctdot':'\u22EF','cudarrl':'\u2938','cudarrr':'\u2935','cuepr':'\u22DE','cuesc':'\u22DF','cularr':'\u21B6','cularrp':'\u293D','cup':'\u222A','Cup':'\u22D3','cupbrcap':'\u2A48','cupcap':'\u2A46','CupCap':'\u224D','cupcup':'\u2A4A','cupdot':'\u228D','cupor':'\u2A45','cups':'\u222A\uFE00','curarr':'\u21B7','curarrm':'\u293C','curlyeqprec':'\u22DE','curlyeqsucc':'\u22DF','curlyvee':'\u22CE','curlywedge':'\u22CF','curren':'\xA4','curvearrowleft':'\u21B6','curvearrowright':'\u21B7','cuvee':'\u22CE','cuwed':'\u22CF','cwconint':'\u2232','cwint':'\u2231','cylcty':'\u232D','dagger':'\u2020','Dagger':'\u2021','daleth':'\u2138','darr':'\u2193','dArr':'\u21D3','Darr':'\u21A1','dash':'\u2010','dashv':'\u22A3','Dashv':'\u2AE4','dbkarow':'\u290F','dblac':'\u02DD','dcaron':'\u010F','Dcaron':'\u010E','dcy':'\u0434','Dcy':'\u0414','dd':'\u2146','DD':'\u2145','ddagger':'\u2021','ddarr':'\u21CA','DDotrahd':'\u2911','ddotseq':'\u2A77','deg':'\xB0','Del':'\u2207','delta':'\u03B4','Delta':'\u0394','demptyv':'\u29B1','dfisht':'\u297F','dfr':'\uD835\uDD21','Dfr':'\uD835\uDD07','dHar':'\u2965','dharl':'\u21C3','dharr':'\u21C2','DiacriticalAcute':'\xB4','DiacriticalDot':'\u02D9','DiacriticalDoubleAcute':'\u02DD','DiacriticalGrave':'`','DiacriticalTilde':'\u02DC','diam':'\u22C4','diamond':'\u22C4','Diamond':'\u22C4','diamondsuit':'\u2666','diams':'\u2666','die':'\xA8','DifferentialD':'\u2146','digamma':'\u03DD','disin':'\u22F2','div':'\xF7','divide':'\xF7','divideontimes':'\u22C7','divonx':'\u22C7','djcy':'\u0452','DJcy':'\u0402','dlcorn':'\u231E','dlcrop':'\u230D','dollar':'$','dopf':'\uD835\uDD55','Dopf':'\uD835\uDD3B','dot':'\u02D9','Dot':'\xA8','DotDot':'\u20DC','doteq':'\u2250','doteqdot':'\u2251','DotEqual':'\u2250','dotminus':'\u2238','dotplus':'\u2214','dotsquare':'\u22A1','doublebarwedge':'\u2306','DoubleContourIntegral':'\u222F','DoubleDot':'\xA8','DoubleDownArrow':'\u21D3','DoubleLeftArrow':'\u21D0','DoubleLeftRightArrow':'\u21D4','DoubleLeftTee':'\u2AE4','DoubleLongLeftArrow':'\u27F8','DoubleLongLeftRightArrow':'\u27FA','DoubleLongRightArrow':'\u27F9','DoubleRightArrow':'\u21D2','DoubleRightTee':'\u22A8','DoubleUpArrow':'\u21D1','DoubleUpDownArrow':'\u21D5','DoubleVerticalBar':'\u2225','downarrow':'\u2193','Downarrow':'\u21D3','DownArrow':'\u2193','DownArrowBar':'\u2913','DownArrowUpArrow':'\u21F5','DownBreve':'\u0311','downdownarrows':'\u21CA','downharpoonleft':'\u21C3','downharpoonright':'\u21C2','DownLeftRightVector':'\u2950','DownLeftTeeVector':'\u295E','DownLeftVector':'\u21BD','DownLeftVectorBar':'\u2956','DownRightTeeVector':'\u295F','DownRightVector':'\u21C1','DownRightVectorBar':'\u2957','DownTee':'\u22A4','DownTeeArrow':'\u21A7','drbkarow':'\u2910','drcorn':'\u231F','drcrop':'\u230C','dscr':'\uD835\uDCB9','Dscr':'\uD835\uDC9F','dscy':'\u0455','DScy':'\u0405','dsol':'\u29F6','dstrok':'\u0111','Dstrok':'\u0110','dtdot':'\u22F1','dtri':'\u25BF','dtrif':'\u25BE','duarr':'\u21F5','duhar':'\u296F','dwangle':'\u29A6','dzcy':'\u045F','DZcy':'\u040F','dzigrarr':'\u27FF','eacute':'\xE9','Eacute':'\xC9','easter':'\u2A6E','ecaron':'\u011B','Ecaron':'\u011A','ecir':'\u2256','ecirc':'\xEA','Ecirc':'\xCA','ecolon':'\u2255','ecy':'\u044D','Ecy':'\u042D','eDDot':'\u2A77','edot':'\u0117','eDot':'\u2251','Edot':'\u0116','ee':'\u2147','efDot':'\u2252','efr':'\uD835\uDD22','Efr':'\uD835\uDD08','eg':'\u2A9A','egrave':'\xE8','Egrave':'\xC8','egs':'\u2A96','egsdot':'\u2A98','el':'\u2A99','Element':'\u2208','elinters':'\u23E7','ell':'\u2113','els':'\u2A95','elsdot':'\u2A97','emacr':'\u0113','Emacr':'\u0112','empty':'\u2205','emptyset':'\u2205','EmptySmallSquare':'\u25FB','emptyv':'\u2205','EmptyVerySmallSquare':'\u25AB','emsp':'\u2003','emsp13':'\u2004','emsp14':'\u2005','eng':'\u014B','ENG':'\u014A','ensp':'\u2002','eogon':'\u0119','Eogon':'\u0118','eopf':'\uD835\uDD56','Eopf':'\uD835\uDD3C','epar':'\u22D5','eparsl':'\u29E3','eplus':'\u2A71','epsi':'\u03B5','epsilon':'\u03B5','Epsilon':'\u0395','epsiv':'\u03F5','eqcirc':'\u2256','eqcolon':'\u2255','eqsim':'\u2242','eqslantgtr':'\u2A96','eqslantless':'\u2A95','Equal':'\u2A75','equals':'=','EqualTilde':'\u2242','equest':'\u225F','Equilibrium':'\u21CC','equiv':'\u2261','equivDD':'\u2A78','eqvparsl':'\u29E5','erarr':'\u2971','erDot':'\u2253','escr':'\u212F','Escr':'\u2130','esdot':'\u2250','esim':'\u2242','Esim':'\u2A73','eta':'\u03B7','Eta':'\u0397','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','euro':'\u20AC','excl':'!','exist':'\u2203','Exists':'\u2203','expectation':'\u2130','exponentiale':'\u2147','ExponentialE':'\u2147','fallingdotseq':'\u2252','fcy':'\u0444','Fcy':'\u0424','female':'\u2640','ffilig':'\uFB03','fflig':'\uFB00','ffllig':'\uFB04','ffr':'\uD835\uDD23','Ffr':'\uD835\uDD09','filig':'\uFB01','FilledSmallSquare':'\u25FC','FilledVerySmallSquare':'\u25AA','fjlig':'fj','flat':'\u266D','fllig':'\uFB02','fltns':'\u25B1','fnof':'\u0192','fopf':'\uD835\uDD57','Fopf':'\uD835\uDD3D','forall':'\u2200','ForAll':'\u2200','fork':'\u22D4','forkv':'\u2AD9','Fouriertrf':'\u2131','fpartint':'\u2A0D','frac12':'\xBD','frac13':'\u2153','frac14':'\xBC','frac15':'\u2155','frac16':'\u2159','frac18':'\u215B','frac23':'\u2154','frac25':'\u2156','frac34':'\xBE','frac35':'\u2157','frac38':'\u215C','frac45':'\u2158','frac56':'\u215A','frac58':'\u215D','frac78':'\u215E','frasl':'\u2044','frown':'\u2322','fscr':'\uD835\uDCBB','Fscr':'\u2131','gacute':'\u01F5','gamma':'\u03B3','Gamma':'\u0393','gammad':'\u03DD','Gammad':'\u03DC','gap':'\u2A86','gbreve':'\u011F','Gbreve':'\u011E','Gcedil':'\u0122','gcirc':'\u011D','Gcirc':'\u011C','gcy':'\u0433','Gcy':'\u0413','gdot':'\u0121','Gdot':'\u0120','ge':'\u2265','gE':'\u2267','gel':'\u22DB','gEl':'\u2A8C','geq':'\u2265','geqq':'\u2267','geqslant':'\u2A7E','ges':'\u2A7E','gescc':'\u2AA9','gesdot':'\u2A80','gesdoto':'\u2A82','gesdotol':'\u2A84','gesl':'\u22DB\uFE00','gesles':'\u2A94','gfr':'\uD835\uDD24','Gfr':'\uD835\uDD0A','gg':'\u226B','Gg':'\u22D9','ggg':'\u22D9','gimel':'\u2137','gjcy':'\u0453','GJcy':'\u0403','gl':'\u2277','gla':'\u2AA5','glE':'\u2A92','glj':'\u2AA4','gnap':'\u2A8A','gnapprox':'\u2A8A','gne':'\u2A88','gnE':'\u2269','gneq':'\u2A88','gneqq':'\u2269','gnsim':'\u22E7','gopf':'\uD835\uDD58','Gopf':'\uD835\uDD3E','grave':'`','GreaterEqual':'\u2265','GreaterEqualLess':'\u22DB','GreaterFullEqual':'\u2267','GreaterGreater':'\u2AA2','GreaterLess':'\u2277','GreaterSlantEqual':'\u2A7E','GreaterTilde':'\u2273','gscr':'\u210A','Gscr':'\uD835\uDCA2','gsim':'\u2273','gsime':'\u2A8E','gsiml':'\u2A90','gt':'>','Gt':'\u226B','GT':'>','gtcc':'\u2AA7','gtcir':'\u2A7A','gtdot':'\u22D7','gtlPar':'\u2995','gtquest':'\u2A7C','gtrapprox':'\u2A86','gtrarr':'\u2978','gtrdot':'\u22D7','gtreqless':'\u22DB','gtreqqless':'\u2A8C','gtrless':'\u2277','gtrsim':'\u2273','gvertneqq':'\u2269\uFE00','gvnE':'\u2269\uFE00','Hacek':'\u02C7','hairsp':'\u200A','half':'\xBD','hamilt':'\u210B','hardcy':'\u044A','HARDcy':'\u042A','harr':'\u2194','hArr':'\u21D4','harrcir':'\u2948','harrw':'\u21AD','Hat':'^','hbar':'\u210F','hcirc':'\u0125','Hcirc':'\u0124','hearts':'\u2665','heartsuit':'\u2665','hellip':'\u2026','hercon':'\u22B9','hfr':'\uD835\uDD25','Hfr':'\u210C','HilbertSpace':'\u210B','hksearow':'\u2925','hkswarow':'\u2926','hoarr':'\u21FF','homtht':'\u223B','hookleftarrow':'\u21A9','hookrightarrow':'\u21AA','hopf':'\uD835\uDD59','Hopf':'\u210D','horbar':'\u2015','HorizontalLine':'\u2500','hscr':'\uD835\uDCBD','Hscr':'\u210B','hslash':'\u210F','hstrok':'\u0127','Hstrok':'\u0126','HumpDownHump':'\u224E','HumpEqual':'\u224F','hybull':'\u2043','hyphen':'\u2010','iacute':'\xED','Iacute':'\xCD','ic':'\u2063','icirc':'\xEE','Icirc':'\xCE','icy':'\u0438','Icy':'\u0418','Idot':'\u0130','iecy':'\u0435','IEcy':'\u0415','iexcl':'\xA1','iff':'\u21D4','ifr':'\uD835\uDD26','Ifr':'\u2111','igrave':'\xEC','Igrave':'\xCC','ii':'\u2148','iiiint':'\u2A0C','iiint':'\u222D','iinfin':'\u29DC','iiota':'\u2129','ijlig':'\u0133','IJlig':'\u0132','Im':'\u2111','imacr':'\u012B','Imacr':'\u012A','image':'\u2111','ImaginaryI':'\u2148','imagline':'\u2110','imagpart':'\u2111','imath':'\u0131','imof':'\u22B7','imped':'\u01B5','Implies':'\u21D2','in':'\u2208','incare':'\u2105','infin':'\u221E','infintie':'\u29DD','inodot':'\u0131','int':'\u222B','Int':'\u222C','intcal':'\u22BA','integers':'\u2124','Integral':'\u222B','intercal':'\u22BA','Intersection':'\u22C2','intlarhk':'\u2A17','intprod':'\u2A3C','InvisibleComma':'\u2063','InvisibleTimes':'\u2062','iocy':'\u0451','IOcy':'\u0401','iogon':'\u012F','Iogon':'\u012E','iopf':'\uD835\uDD5A','Iopf':'\uD835\uDD40','iota':'\u03B9','Iota':'\u0399','iprod':'\u2A3C','iquest':'\xBF','iscr':'\uD835\uDCBE','Iscr':'\u2110','isin':'\u2208','isindot':'\u22F5','isinE':'\u22F9','isins':'\u22F4','isinsv':'\u22F3','isinv':'\u2208','it':'\u2062','itilde':'\u0129','Itilde':'\u0128','iukcy':'\u0456','Iukcy':'\u0406','iuml':'\xEF','Iuml':'\xCF','jcirc':'\u0135','Jcirc':'\u0134','jcy':'\u0439','Jcy':'\u0419','jfr':'\uD835\uDD27','Jfr':'\uD835\uDD0D','jmath':'\u0237','jopf':'\uD835\uDD5B','Jopf':'\uD835\uDD41','jscr':'\uD835\uDCBF','Jscr':'\uD835\uDCA5','jsercy':'\u0458','Jsercy':'\u0408','jukcy':'\u0454','Jukcy':'\u0404','kappa':'\u03BA','Kappa':'\u039A','kappav':'\u03F0','kcedil':'\u0137','Kcedil':'\u0136','kcy':'\u043A','Kcy':'\u041A','kfr':'\uD835\uDD28','Kfr':'\uD835\uDD0E','kgreen':'\u0138','khcy':'\u0445','KHcy':'\u0425','kjcy':'\u045C','KJcy':'\u040C','kopf':'\uD835\uDD5C','Kopf':'\uD835\uDD42','kscr':'\uD835\uDCC0','Kscr':'\uD835\uDCA6','lAarr':'\u21DA','lacute':'\u013A','Lacute':'\u0139','laemptyv':'\u29B4','lagran':'\u2112','lambda':'\u03BB','Lambda':'\u039B','lang':'\u27E8','Lang':'\u27EA','langd':'\u2991','langle':'\u27E8','lap':'\u2A85','Laplacetrf':'\u2112','laquo':'\xAB','larr':'\u2190','lArr':'\u21D0','Larr':'\u219E','larrb':'\u21E4','larrbfs':'\u291F','larrfs':'\u291D','larrhk':'\u21A9','larrlp':'\u21AB','larrpl':'\u2939','larrsim':'\u2973','larrtl':'\u21A2','lat':'\u2AAB','latail':'\u2919','lAtail':'\u291B','late':'\u2AAD','lates':'\u2AAD\uFE00','lbarr':'\u290C','lBarr':'\u290E','lbbrk':'\u2772','lbrace':'{','lbrack':'[','lbrke':'\u298B','lbrksld':'\u298F','lbrkslu':'\u298D','lcaron':'\u013E','Lcaron':'\u013D','lcedil':'\u013C','Lcedil':'\u013B','lceil':'\u2308','lcub':'{','lcy':'\u043B','Lcy':'\u041B','ldca':'\u2936','ldquo':'\u201C','ldquor':'\u201E','ldrdhar':'\u2967','ldrushar':'\u294B','ldsh':'\u21B2','le':'\u2264','lE':'\u2266','LeftAngleBracket':'\u27E8','leftarrow':'\u2190','Leftarrow':'\u21D0','LeftArrow':'\u2190','LeftArrowBar':'\u21E4','LeftArrowRightArrow':'\u21C6','leftarrowtail':'\u21A2','LeftCeiling':'\u2308','LeftDoubleBracket':'\u27E6','LeftDownTeeVector':'\u2961','LeftDownVector':'\u21C3','LeftDownVectorBar':'\u2959','LeftFloor':'\u230A','leftharpoondown':'\u21BD','leftharpoonup':'\u21BC','leftleftarrows':'\u21C7','leftrightarrow':'\u2194','Leftrightarrow':'\u21D4','LeftRightArrow':'\u2194','leftrightarrows':'\u21C6','leftrightharpoons':'\u21CB','leftrightsquigarrow':'\u21AD','LeftRightVector':'\u294E','LeftTee':'\u22A3','LeftTeeArrow':'\u21A4','LeftTeeVector':'\u295A','leftthreetimes':'\u22CB','LeftTriangle':'\u22B2','LeftTriangleBar':'\u29CF','LeftTriangleEqual':'\u22B4','LeftUpDownVector':'\u2951','LeftUpTeeVector':'\u2960','LeftUpVector':'\u21BF','LeftUpVectorBar':'\u2958','LeftVector':'\u21BC','LeftVectorBar':'\u2952','leg':'\u22DA','lEg':'\u2A8B','leq':'\u2264','leqq':'\u2266','leqslant':'\u2A7D','les':'\u2A7D','lescc':'\u2AA8','lesdot':'\u2A7F','lesdoto':'\u2A81','lesdotor':'\u2A83','lesg':'\u22DA\uFE00','lesges':'\u2A93','lessapprox':'\u2A85','lessdot':'\u22D6','lesseqgtr':'\u22DA','lesseqqgtr':'\u2A8B','LessEqualGreater':'\u22DA','LessFullEqual':'\u2266','LessGreater':'\u2276','lessgtr':'\u2276','LessLess':'\u2AA1','lesssim':'\u2272','LessSlantEqual':'\u2A7D','LessTilde':'\u2272','lfisht':'\u297C','lfloor':'\u230A','lfr':'\uD835\uDD29','Lfr':'\uD835\uDD0F','lg':'\u2276','lgE':'\u2A91','lHar':'\u2962','lhard':'\u21BD','lharu':'\u21BC','lharul':'\u296A','lhblk':'\u2584','ljcy':'\u0459','LJcy':'\u0409','ll':'\u226A','Ll':'\u22D8','llarr':'\u21C7','llcorner':'\u231E','Lleftarrow':'\u21DA','llhard':'\u296B','lltri':'\u25FA','lmidot':'\u0140','Lmidot':'\u013F','lmoust':'\u23B0','lmoustache':'\u23B0','lnap':'\u2A89','lnapprox':'\u2A89','lne':'\u2A87','lnE':'\u2268','lneq':'\u2A87','lneqq':'\u2268','lnsim':'\u22E6','loang':'\u27EC','loarr':'\u21FD','lobrk':'\u27E6','longleftarrow':'\u27F5','Longleftarrow':'\u27F8','LongLeftArrow':'\u27F5','longleftrightarrow':'\u27F7','Longleftrightarrow':'\u27FA','LongLeftRightArrow':'\u27F7','longmapsto':'\u27FC','longrightarrow':'\u27F6','Longrightarrow':'\u27F9','LongRightArrow':'\u27F6','looparrowleft':'\u21AB','looparrowright':'\u21AC','lopar':'\u2985','lopf':'\uD835\uDD5D','Lopf':'\uD835\uDD43','loplus':'\u2A2D','lotimes':'\u2A34','lowast':'\u2217','lowbar':'_','LowerLeftArrow':'\u2199','LowerRightArrow':'\u2198','loz':'\u25CA','lozenge':'\u25CA','lozf':'\u29EB','lpar':'(','lparlt':'\u2993','lrarr':'\u21C6','lrcorner':'\u231F','lrhar':'\u21CB','lrhard':'\u296D','lrm':'\u200E','lrtri':'\u22BF','lsaquo':'\u2039','lscr':'\uD835\uDCC1','Lscr':'\u2112','lsh':'\u21B0','Lsh':'\u21B0','lsim':'\u2272','lsime':'\u2A8D','lsimg':'\u2A8F','lsqb':'[','lsquo':'\u2018','lsquor':'\u201A','lstrok':'\u0142','Lstrok':'\u0141','lt':'<','Lt':'\u226A','LT':'<','ltcc':'\u2AA6','ltcir':'\u2A79','ltdot':'\u22D6','lthree':'\u22CB','ltimes':'\u22C9','ltlarr':'\u2976','ltquest':'\u2A7B','ltri':'\u25C3','ltrie':'\u22B4','ltrif':'\u25C2','ltrPar':'\u2996','lurdshar':'\u294A','luruhar':'\u2966','lvertneqq':'\u2268\uFE00','lvnE':'\u2268\uFE00','macr':'\xAF','male':'\u2642','malt':'\u2720','maltese':'\u2720','map':'\u21A6','Map':'\u2905','mapsto':'\u21A6','mapstodown':'\u21A7','mapstoleft':'\u21A4','mapstoup':'\u21A5','marker':'\u25AE','mcomma':'\u2A29','mcy':'\u043C','Mcy':'\u041C','mdash':'\u2014','mDDot':'\u223A','measuredangle':'\u2221','MediumSpace':'\u205F','Mellintrf':'\u2133','mfr':'\uD835\uDD2A','Mfr':'\uD835\uDD10','mho':'\u2127','micro':'\xB5','mid':'\u2223','midast':'*','midcir':'\u2AF0','middot':'\xB7','minus':'\u2212','minusb':'\u229F','minusd':'\u2238','minusdu':'\u2A2A','MinusPlus':'\u2213','mlcp':'\u2ADB','mldr':'\u2026','mnplus':'\u2213','models':'\u22A7','mopf':'\uD835\uDD5E','Mopf':'\uD835\uDD44','mp':'\u2213','mscr':'\uD835\uDCC2','Mscr':'\u2133','mstpos':'\u223E','mu':'\u03BC','Mu':'\u039C','multimap':'\u22B8','mumap':'\u22B8','nabla':'\u2207','nacute':'\u0144','Nacute':'\u0143','nang':'\u2220\u20D2','nap':'\u2249','napE':'\u2A70\u0338','napid':'\u224B\u0338','napos':'\u0149','napprox':'\u2249','natur':'\u266E','natural':'\u266E','naturals':'\u2115','nbsp':'\xA0','nbump':'\u224E\u0338','nbumpe':'\u224F\u0338','ncap':'\u2A43','ncaron':'\u0148','Ncaron':'\u0147','ncedil':'\u0146','Ncedil':'\u0145','ncong':'\u2247','ncongdot':'\u2A6D\u0338','ncup':'\u2A42','ncy':'\u043D','Ncy':'\u041D','ndash':'\u2013','ne':'\u2260','nearhk':'\u2924','nearr':'\u2197','neArr':'\u21D7','nearrow':'\u2197','nedot':'\u2250\u0338','NegativeMediumSpace':'\u200B','NegativeThickSpace':'\u200B','NegativeThinSpace':'\u200B','NegativeVeryThinSpace':'\u200B','nequiv':'\u2262','nesear':'\u2928','nesim':'\u2242\u0338','NestedGreaterGreater':'\u226B','NestedLessLess':'\u226A','NewLine':'\n','nexist':'\u2204','nexists':'\u2204','nfr':'\uD835\uDD2B','Nfr':'\uD835\uDD11','nge':'\u2271','ngE':'\u2267\u0338','ngeq':'\u2271','ngeqq':'\u2267\u0338','ngeqslant':'\u2A7E\u0338','nges':'\u2A7E\u0338','nGg':'\u22D9\u0338','ngsim':'\u2275','ngt':'\u226F','nGt':'\u226B\u20D2','ngtr':'\u226F','nGtv':'\u226B\u0338','nharr':'\u21AE','nhArr':'\u21CE','nhpar':'\u2AF2','ni':'\u220B','nis':'\u22FC','nisd':'\u22FA','niv':'\u220B','njcy':'\u045A','NJcy':'\u040A','nlarr':'\u219A','nlArr':'\u21CD','nldr':'\u2025','nle':'\u2270','nlE':'\u2266\u0338','nleftarrow':'\u219A','nLeftarrow':'\u21CD','nleftrightarrow':'\u21AE','nLeftrightarrow':'\u21CE','nleq':'\u2270','nleqq':'\u2266\u0338','nleqslant':'\u2A7D\u0338','nles':'\u2A7D\u0338','nless':'\u226E','nLl':'\u22D8\u0338','nlsim':'\u2274','nlt':'\u226E','nLt':'\u226A\u20D2','nltri':'\u22EA','nltrie':'\u22EC','nLtv':'\u226A\u0338','nmid':'\u2224','NoBreak':'\u2060','NonBreakingSpace':'\xA0','nopf':'\uD835\uDD5F','Nopf':'\u2115','not':'\xAC','Not':'\u2AEC','NotCongruent':'\u2262','NotCupCap':'\u226D','NotDoubleVerticalBar':'\u2226','NotElement':'\u2209','NotEqual':'\u2260','NotEqualTilde':'\u2242\u0338','NotExists':'\u2204','NotGreater':'\u226F','NotGreaterEqual':'\u2271','NotGreaterFullEqual':'\u2267\u0338','NotGreaterGreater':'\u226B\u0338','NotGreaterLess':'\u2279','NotGreaterSlantEqual':'\u2A7E\u0338','NotGreaterTilde':'\u2275','NotHumpDownHump':'\u224E\u0338','NotHumpEqual':'\u224F\u0338','notin':'\u2209','notindot':'\u22F5\u0338','notinE':'\u22F9\u0338','notinva':'\u2209','notinvb':'\u22F7','notinvc':'\u22F6','NotLeftTriangle':'\u22EA','NotLeftTriangleBar':'\u29CF\u0338','NotLeftTriangleEqual':'\u22EC','NotLess':'\u226E','NotLessEqual':'\u2270','NotLessGreater':'\u2278','NotLessLess':'\u226A\u0338','NotLessSlantEqual':'\u2A7D\u0338','NotLessTilde':'\u2274','NotNestedGreaterGreater':'\u2AA2\u0338','NotNestedLessLess':'\u2AA1\u0338','notni':'\u220C','notniva':'\u220C','notnivb':'\u22FE','notnivc':'\u22FD','NotPrecedes':'\u2280','NotPrecedesEqual':'\u2AAF\u0338','NotPrecedesSlantEqual':'\u22E0','NotReverseElement':'\u220C','NotRightTriangle':'\u22EB','NotRightTriangleBar':'\u29D0\u0338','NotRightTriangleEqual':'\u22ED','NotSquareSubset':'\u228F\u0338','NotSquareSubsetEqual':'\u22E2','NotSquareSuperset':'\u2290\u0338','NotSquareSupersetEqual':'\u22E3','NotSubset':'\u2282\u20D2','NotSubsetEqual':'\u2288','NotSucceeds':'\u2281','NotSucceedsEqual':'\u2AB0\u0338','NotSucceedsSlantEqual':'\u22E1','NotSucceedsTilde':'\u227F\u0338','NotSuperset':'\u2283\u20D2','NotSupersetEqual':'\u2289','NotTilde':'\u2241','NotTildeEqual':'\u2244','NotTildeFullEqual':'\u2247','NotTildeTilde':'\u2249','NotVerticalBar':'\u2224','npar':'\u2226','nparallel':'\u2226','nparsl':'\u2AFD\u20E5','npart':'\u2202\u0338','npolint':'\u2A14','npr':'\u2280','nprcue':'\u22E0','npre':'\u2AAF\u0338','nprec':'\u2280','npreceq':'\u2AAF\u0338','nrarr':'\u219B','nrArr':'\u21CF','nrarrc':'\u2933\u0338','nrarrw':'\u219D\u0338','nrightarrow':'\u219B','nRightarrow':'\u21CF','nrtri':'\u22EB','nrtrie':'\u22ED','nsc':'\u2281','nsccue':'\u22E1','nsce':'\u2AB0\u0338','nscr':'\uD835\uDCC3','Nscr':'\uD835\uDCA9','nshortmid':'\u2224','nshortparallel':'\u2226','nsim':'\u2241','nsime':'\u2244','nsimeq':'\u2244','nsmid':'\u2224','nspar':'\u2226','nsqsube':'\u22E2','nsqsupe':'\u22E3','nsub':'\u2284','nsube':'\u2288','nsubE':'\u2AC5\u0338','nsubset':'\u2282\u20D2','nsubseteq':'\u2288','nsubseteqq':'\u2AC5\u0338','nsucc':'\u2281','nsucceq':'\u2AB0\u0338','nsup':'\u2285','nsupe':'\u2289','nsupE':'\u2AC6\u0338','nsupset':'\u2283\u20D2','nsupseteq':'\u2289','nsupseteqq':'\u2AC6\u0338','ntgl':'\u2279','ntilde':'\xF1','Ntilde':'\xD1','ntlg':'\u2278','ntriangleleft':'\u22EA','ntrianglelefteq':'\u22EC','ntriangleright':'\u22EB','ntrianglerighteq':'\u22ED','nu':'\u03BD','Nu':'\u039D','num':'#','numero':'\u2116','numsp':'\u2007','nvap':'\u224D\u20D2','nvdash':'\u22AC','nvDash':'\u22AD','nVdash':'\u22AE','nVDash':'\u22AF','nvge':'\u2265\u20D2','nvgt':'>\u20D2','nvHarr':'\u2904','nvinfin':'\u29DE','nvlArr':'\u2902','nvle':'\u2264\u20D2','nvlt':'<\u20D2','nvltrie':'\u22B4\u20D2','nvrArr':'\u2903','nvrtrie':'\u22B5\u20D2','nvsim':'\u223C\u20D2','nwarhk':'\u2923','nwarr':'\u2196','nwArr':'\u21D6','nwarrow':'\u2196','nwnear':'\u2927','oacute':'\xF3','Oacute':'\xD3','oast':'\u229B','ocir':'\u229A','ocirc':'\xF4','Ocirc':'\xD4','ocy':'\u043E','Ocy':'\u041E','odash':'\u229D','odblac':'\u0151','Odblac':'\u0150','odiv':'\u2A38','odot':'\u2299','odsold':'\u29BC','oelig':'\u0153','OElig':'\u0152','ofcir':'\u29BF','ofr':'\uD835\uDD2C','Ofr':'\uD835\uDD12','ogon':'\u02DB','ograve':'\xF2','Ograve':'\xD2','ogt':'\u29C1','ohbar':'\u29B5','ohm':'\u03A9','oint':'\u222E','olarr':'\u21BA','olcir':'\u29BE','olcross':'\u29BB','oline':'\u203E','olt':'\u29C0','omacr':'\u014D','Omacr':'\u014C','omega':'\u03C9','Omega':'\u03A9','omicron':'\u03BF','Omicron':'\u039F','omid':'\u29B6','ominus':'\u2296','oopf':'\uD835\uDD60','Oopf':'\uD835\uDD46','opar':'\u29B7','OpenCurlyDoubleQuote':'\u201C','OpenCurlyQuote':'\u2018','operp':'\u29B9','oplus':'\u2295','or':'\u2228','Or':'\u2A54','orarr':'\u21BB','ord':'\u2A5D','order':'\u2134','orderof':'\u2134','ordf':'\xAA','ordm':'\xBA','origof':'\u22B6','oror':'\u2A56','orslope':'\u2A57','orv':'\u2A5B','oS':'\u24C8','oscr':'\u2134','Oscr':'\uD835\uDCAA','oslash':'\xF8','Oslash':'\xD8','osol':'\u2298','otilde':'\xF5','Otilde':'\xD5','otimes':'\u2297','Otimes':'\u2A37','otimesas':'\u2A36','ouml':'\xF6','Ouml':'\xD6','ovbar':'\u233D','OverBar':'\u203E','OverBrace':'\u23DE','OverBracket':'\u23B4','OverParenthesis':'\u23DC','par':'\u2225','para':'\xB6','parallel':'\u2225','parsim':'\u2AF3','parsl':'\u2AFD','part':'\u2202','PartialD':'\u2202','pcy':'\u043F','Pcy':'\u041F','percnt':'%','period':'.','permil':'\u2030','perp':'\u22A5','pertenk':'\u2031','pfr':'\uD835\uDD2D','Pfr':'\uD835\uDD13','phi':'\u03C6','Phi':'\u03A6','phiv':'\u03D5','phmmat':'\u2133','phone':'\u260E','pi':'\u03C0','Pi':'\u03A0','pitchfork':'\u22D4','piv':'\u03D6','planck':'\u210F','planckh':'\u210E','plankv':'\u210F','plus':'+','plusacir':'\u2A23','plusb':'\u229E','pluscir':'\u2A22','plusdo':'\u2214','plusdu':'\u2A25','pluse':'\u2A72','PlusMinus':'\xB1','plusmn':'\xB1','plussim':'\u2A26','plustwo':'\u2A27','pm':'\xB1','Poincareplane':'\u210C','pointint':'\u2A15','popf':'\uD835\uDD61','Popf':'\u2119','pound':'\xA3','pr':'\u227A','Pr':'\u2ABB','prap':'\u2AB7','prcue':'\u227C','pre':'\u2AAF','prE':'\u2AB3','prec':'\u227A','precapprox':'\u2AB7','preccurlyeq':'\u227C','Precedes':'\u227A','PrecedesEqual':'\u2AAF','PrecedesSlantEqual':'\u227C','PrecedesTilde':'\u227E','preceq':'\u2AAF','precnapprox':'\u2AB9','precneqq':'\u2AB5','precnsim':'\u22E8','precsim':'\u227E','prime':'\u2032','Prime':'\u2033','primes':'\u2119','prnap':'\u2AB9','prnE':'\u2AB5','prnsim':'\u22E8','prod':'\u220F','Product':'\u220F','profalar':'\u232E','profline':'\u2312','profsurf':'\u2313','prop':'\u221D','Proportion':'\u2237','Proportional':'\u221D','propto':'\u221D','prsim':'\u227E','prurel':'\u22B0','pscr':'\uD835\uDCC5','Pscr':'\uD835\uDCAB','psi':'\u03C8','Psi':'\u03A8','puncsp':'\u2008','qfr':'\uD835\uDD2E','Qfr':'\uD835\uDD14','qint':'\u2A0C','qopf':'\uD835\uDD62','Qopf':'\u211A','qprime':'\u2057','qscr':'\uD835\uDCC6','Qscr':'\uD835\uDCAC','quaternions':'\u210D','quatint':'\u2A16','quest':'?','questeq':'\u225F','quot':'"','QUOT':'"','rAarr':'\u21DB','race':'\u223D\u0331','racute':'\u0155','Racute':'\u0154','radic':'\u221A','raemptyv':'\u29B3','rang':'\u27E9','Rang':'\u27EB','rangd':'\u2992','range':'\u29A5','rangle':'\u27E9','raquo':'\xBB','rarr':'\u2192','rArr':'\u21D2','Rarr':'\u21A0','rarrap':'\u2975','rarrb':'\u21E5','rarrbfs':'\u2920','rarrc':'\u2933','rarrfs':'\u291E','rarrhk':'\u21AA','rarrlp':'\u21AC','rarrpl':'\u2945','rarrsim':'\u2974','rarrtl':'\u21A3','Rarrtl':'\u2916','rarrw':'\u219D','ratail':'\u291A','rAtail':'\u291C','ratio':'\u2236','rationals':'\u211A','rbarr':'\u290D','rBarr':'\u290F','RBarr':'\u2910','rbbrk':'\u2773','rbrace':'}','rbrack':']','rbrke':'\u298C','rbrksld':'\u298E','rbrkslu':'\u2990','rcaron':'\u0159','Rcaron':'\u0158','rcedil':'\u0157','Rcedil':'\u0156','rceil':'\u2309','rcub':'}','rcy':'\u0440','Rcy':'\u0420','rdca':'\u2937','rdldhar':'\u2969','rdquo':'\u201D','rdquor':'\u201D','rdsh':'\u21B3','Re':'\u211C','real':'\u211C','realine':'\u211B','realpart':'\u211C','reals':'\u211D','rect':'\u25AD','reg':'\xAE','REG':'\xAE','ReverseElement':'\u220B','ReverseEquilibrium':'\u21CB','ReverseUpEquilibrium':'\u296F','rfisht':'\u297D','rfloor':'\u230B','rfr':'\uD835\uDD2F','Rfr':'\u211C','rHar':'\u2964','rhard':'\u21C1','rharu':'\u21C0','rharul':'\u296C','rho':'\u03C1','Rho':'\u03A1','rhov':'\u03F1','RightAngleBracket':'\u27E9','rightarrow':'\u2192','Rightarrow':'\u21D2','RightArrow':'\u2192','RightArrowBar':'\u21E5','RightArrowLeftArrow':'\u21C4','rightarrowtail':'\u21A3','RightCeiling':'\u2309','RightDoubleBracket':'\u27E7','RightDownTeeVector':'\u295D','RightDownVector':'\u21C2','RightDownVectorBar':'\u2955','RightFloor':'\u230B','rightharpoondown':'\u21C1','rightharpoonup':'\u21C0','rightleftarrows':'\u21C4','rightleftharpoons':'\u21CC','rightrightarrows':'\u21C9','rightsquigarrow':'\u219D','RightTee':'\u22A2','RightTeeArrow':'\u21A6','RightTeeVector':'\u295B','rightthreetimes':'\u22CC','RightTriangle':'\u22B3','RightTriangleBar':'\u29D0','RightTriangleEqual':'\u22B5','RightUpDownVector':'\u294F','RightUpTeeVector':'\u295C','RightUpVector':'\u21BE','RightUpVectorBar':'\u2954','RightVector':'\u21C0','RightVectorBar':'\u2953','ring':'\u02DA','risingdotseq':'\u2253','rlarr':'\u21C4','rlhar':'\u21CC','rlm':'\u200F','rmoust':'\u23B1','rmoustache':'\u23B1','rnmid':'\u2AEE','roang':'\u27ED','roarr':'\u21FE','robrk':'\u27E7','ropar':'\u2986','ropf':'\uD835\uDD63','Ropf':'\u211D','roplus':'\u2A2E','rotimes':'\u2A35','RoundImplies':'\u2970','rpar':')','rpargt':'\u2994','rppolint':'\u2A12','rrarr':'\u21C9','Rrightarrow':'\u21DB','rsaquo':'\u203A','rscr':'\uD835\uDCC7','Rscr':'\u211B','rsh':'\u21B1','Rsh':'\u21B1','rsqb':']','rsquo':'\u2019','rsquor':'\u2019','rthree':'\u22CC','rtimes':'\u22CA','rtri':'\u25B9','rtrie':'\u22B5','rtrif':'\u25B8','rtriltri':'\u29CE','RuleDelayed':'\u29F4','ruluhar':'\u2968','rx':'\u211E','sacute':'\u015B','Sacute':'\u015A','sbquo':'\u201A','sc':'\u227B','Sc':'\u2ABC','scap':'\u2AB8','scaron':'\u0161','Scaron':'\u0160','sccue':'\u227D','sce':'\u2AB0','scE':'\u2AB4','scedil':'\u015F','Scedil':'\u015E','scirc':'\u015D','Scirc':'\u015C','scnap':'\u2ABA','scnE':'\u2AB6','scnsim':'\u22E9','scpolint':'\u2A13','scsim':'\u227F','scy':'\u0441','Scy':'\u0421','sdot':'\u22C5','sdotb':'\u22A1','sdote':'\u2A66','searhk':'\u2925','searr':'\u2198','seArr':'\u21D8','searrow':'\u2198','sect':'\xA7','semi':';','seswar':'\u2929','setminus':'\u2216','setmn':'\u2216','sext':'\u2736','sfr':'\uD835\uDD30','Sfr':'\uD835\uDD16','sfrown':'\u2322','sharp':'\u266F','shchcy':'\u0449','SHCHcy':'\u0429','shcy':'\u0448','SHcy':'\u0428','ShortDownArrow':'\u2193','ShortLeftArrow':'\u2190','shortmid':'\u2223','shortparallel':'\u2225','ShortRightArrow':'\u2192','ShortUpArrow':'\u2191','shy':'\xAD','sigma':'\u03C3','Sigma':'\u03A3','sigmaf':'\u03C2','sigmav':'\u03C2','sim':'\u223C','simdot':'\u2A6A','sime':'\u2243','simeq':'\u2243','simg':'\u2A9E','simgE':'\u2AA0','siml':'\u2A9D','simlE':'\u2A9F','simne':'\u2246','simplus':'\u2A24','simrarr':'\u2972','slarr':'\u2190','SmallCircle':'\u2218','smallsetminus':'\u2216','smashp':'\u2A33','smeparsl':'\u29E4','smid':'\u2223','smile':'\u2323','smt':'\u2AAA','smte':'\u2AAC','smtes':'\u2AAC\uFE00','softcy':'\u044C','SOFTcy':'\u042C','sol':'/','solb':'\u29C4','solbar':'\u233F','sopf':'\uD835\uDD64','Sopf':'\uD835\uDD4A','spades':'\u2660','spadesuit':'\u2660','spar':'\u2225','sqcap':'\u2293','sqcaps':'\u2293\uFE00','sqcup':'\u2294','sqcups':'\u2294\uFE00','Sqrt':'\u221A','sqsub':'\u228F','sqsube':'\u2291','sqsubset':'\u228F','sqsubseteq':'\u2291','sqsup':'\u2290','sqsupe':'\u2292','sqsupset':'\u2290','sqsupseteq':'\u2292','squ':'\u25A1','square':'\u25A1','Square':'\u25A1','SquareIntersection':'\u2293','SquareSubset':'\u228F','SquareSubsetEqual':'\u2291','SquareSuperset':'\u2290','SquareSupersetEqual':'\u2292','SquareUnion':'\u2294','squarf':'\u25AA','squf':'\u25AA','srarr':'\u2192','sscr':'\uD835\uDCC8','Sscr':'\uD835\uDCAE','ssetmn':'\u2216','ssmile':'\u2323','sstarf':'\u22C6','star':'\u2606','Star':'\u22C6','starf':'\u2605','straightepsilon':'\u03F5','straightphi':'\u03D5','strns':'\xAF','sub':'\u2282','Sub':'\u22D0','subdot':'\u2ABD','sube':'\u2286','subE':'\u2AC5','subedot':'\u2AC3','submult':'\u2AC1','subne':'\u228A','subnE':'\u2ACB','subplus':'\u2ABF','subrarr':'\u2979','subset':'\u2282','Subset':'\u22D0','subseteq':'\u2286','subseteqq':'\u2AC5','SubsetEqual':'\u2286','subsetneq':'\u228A','subsetneqq':'\u2ACB','subsim':'\u2AC7','subsub':'\u2AD5','subsup':'\u2AD3','succ':'\u227B','succapprox':'\u2AB8','succcurlyeq':'\u227D','Succeeds':'\u227B','SucceedsEqual':'\u2AB0','SucceedsSlantEqual':'\u227D','SucceedsTilde':'\u227F','succeq':'\u2AB0','succnapprox':'\u2ABA','succneqq':'\u2AB6','succnsim':'\u22E9','succsim':'\u227F','SuchThat':'\u220B','sum':'\u2211','Sum':'\u2211','sung':'\u266A','sup':'\u2283','Sup':'\u22D1','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','supdot':'\u2ABE','supdsub':'\u2AD8','supe':'\u2287','supE':'\u2AC6','supedot':'\u2AC4','Superset':'\u2283','SupersetEqual':'\u2287','suphsol':'\u27C9','suphsub':'\u2AD7','suplarr':'\u297B','supmult':'\u2AC2','supne':'\u228B','supnE':'\u2ACC','supplus':'\u2AC0','supset':'\u2283','Supset':'\u22D1','supseteq':'\u2287','supseteqq':'\u2AC6','supsetneq':'\u228B','supsetneqq':'\u2ACC','supsim':'\u2AC8','supsub':'\u2AD4','supsup':'\u2AD6','swarhk':'\u2926','swarr':'\u2199','swArr':'\u21D9','swarrow':'\u2199','swnwar':'\u292A','szlig':'\xDF','Tab':'\t','target':'\u2316','tau':'\u03C4','Tau':'\u03A4','tbrk':'\u23B4','tcaron':'\u0165','Tcaron':'\u0164','tcedil':'\u0163','Tcedil':'\u0162','tcy':'\u0442','Tcy':'\u0422','tdot':'\u20DB','telrec':'\u2315','tfr':'\uD835\uDD31','Tfr':'\uD835\uDD17','there4':'\u2234','therefore':'\u2234','Therefore':'\u2234','theta':'\u03B8','Theta':'\u0398','thetasym':'\u03D1','thetav':'\u03D1','thickapprox':'\u2248','thicksim':'\u223C','ThickSpace':'\u205F\u200A','thinsp':'\u2009','ThinSpace':'\u2009','thkap':'\u2248','thksim':'\u223C','thorn':'\xFE','THORN':'\xDE','tilde':'\u02DC','Tilde':'\u223C','TildeEqual':'\u2243','TildeFullEqual':'\u2245','TildeTilde':'\u2248','times':'\xD7','timesb':'\u22A0','timesbar':'\u2A31','timesd':'\u2A30','tint':'\u222D','toea':'\u2928','top':'\u22A4','topbot':'\u2336','topcir':'\u2AF1','topf':'\uD835\uDD65','Topf':'\uD835\uDD4B','topfork':'\u2ADA','tosa':'\u2929','tprime':'\u2034','trade':'\u2122','TRADE':'\u2122','triangle':'\u25B5','triangledown':'\u25BF','triangleleft':'\u25C3','trianglelefteq':'\u22B4','triangleq':'\u225C','triangleright':'\u25B9','trianglerighteq':'\u22B5','tridot':'\u25EC','trie':'\u225C','triminus':'\u2A3A','TripleDot':'\u20DB','triplus':'\u2A39','trisb':'\u29CD','tritime':'\u2A3B','trpezium':'\u23E2','tscr':'\uD835\uDCC9','Tscr':'\uD835\uDCAF','tscy':'\u0446','TScy':'\u0426','tshcy':'\u045B','TSHcy':'\u040B','tstrok':'\u0167','Tstrok':'\u0166','twixt':'\u226C','twoheadleftarrow':'\u219E','twoheadrightarrow':'\u21A0','uacute':'\xFA','Uacute':'\xDA','uarr':'\u2191','uArr':'\u21D1','Uarr':'\u219F','Uarrocir':'\u2949','ubrcy':'\u045E','Ubrcy':'\u040E','ubreve':'\u016D','Ubreve':'\u016C','ucirc':'\xFB','Ucirc':'\xDB','ucy':'\u0443','Ucy':'\u0423','udarr':'\u21C5','udblac':'\u0171','Udblac':'\u0170','udhar':'\u296E','ufisht':'\u297E','ufr':'\uD835\uDD32','Ufr':'\uD835\uDD18','ugrave':'\xF9','Ugrave':'\xD9','uHar':'\u2963','uharl':'\u21BF','uharr':'\u21BE','uhblk':'\u2580','ulcorn':'\u231C','ulcorner':'\u231C','ulcrop':'\u230F','ultri':'\u25F8','umacr':'\u016B','Umacr':'\u016A','uml':'\xA8','UnderBar':'_','UnderBrace':'\u23DF','UnderBracket':'\u23B5','UnderParenthesis':'\u23DD','Union':'\u22C3','UnionPlus':'\u228E','uogon':'\u0173','Uogon':'\u0172','uopf':'\uD835\uDD66','Uopf':'\uD835\uDD4C','uparrow':'\u2191','Uparrow':'\u21D1','UpArrow':'\u2191','UpArrowBar':'\u2912','UpArrowDownArrow':'\u21C5','updownarrow':'\u2195','Updownarrow':'\u21D5','UpDownArrow':'\u2195','UpEquilibrium':'\u296E','upharpoonleft':'\u21BF','upharpoonright':'\u21BE','uplus':'\u228E','UpperLeftArrow':'\u2196','UpperRightArrow':'\u2197','upsi':'\u03C5','Upsi':'\u03D2','upsih':'\u03D2','upsilon':'\u03C5','Upsilon':'\u03A5','UpTee':'\u22A5','UpTeeArrow':'\u21A5','upuparrows':'\u21C8','urcorn':'\u231D','urcorner':'\u231D','urcrop':'\u230E','uring':'\u016F','Uring':'\u016E','urtri':'\u25F9','uscr':'\uD835\uDCCA','Uscr':'\uD835\uDCB0','utdot':'\u22F0','utilde':'\u0169','Utilde':'\u0168','utri':'\u25B5','utrif':'\u25B4','uuarr':'\u21C8','uuml':'\xFC','Uuml':'\xDC','uwangle':'\u29A7','vangrt':'\u299C','varepsilon':'\u03F5','varkappa':'\u03F0','varnothing':'\u2205','varphi':'\u03D5','varpi':'\u03D6','varpropto':'\u221D','varr':'\u2195','vArr':'\u21D5','varrho':'\u03F1','varsigma':'\u03C2','varsubsetneq':'\u228A\uFE00','varsubsetneqq':'\u2ACB\uFE00','varsupsetneq':'\u228B\uFE00','varsupsetneqq':'\u2ACC\uFE00','vartheta':'\u03D1','vartriangleleft':'\u22B2','vartriangleright':'\u22B3','vBar':'\u2AE8','Vbar':'\u2AEB','vBarv':'\u2AE9','vcy':'\u0432','Vcy':'\u0412','vdash':'\u22A2','vDash':'\u22A8','Vdash':'\u22A9','VDash':'\u22AB','Vdashl':'\u2AE6','vee':'\u2228','Vee':'\u22C1','veebar':'\u22BB','veeeq':'\u225A','vellip':'\u22EE','verbar':'|','Verbar':'\u2016','vert':'|','Vert':'\u2016','VerticalBar':'\u2223','VerticalLine':'|','VerticalSeparator':'\u2758','VerticalTilde':'\u2240','VeryThinSpace':'\u200A','vfr':'\uD835\uDD33','Vfr':'\uD835\uDD19','vltri':'\u22B2','vnsub':'\u2282\u20D2','vnsup':'\u2283\u20D2','vopf':'\uD835\uDD67','Vopf':'\uD835\uDD4D','vprop':'\u221D','vrtri':'\u22B3','vscr':'\uD835\uDCCB','Vscr':'\uD835\uDCB1','vsubne':'\u228A\uFE00','vsubnE':'\u2ACB\uFE00','vsupne':'\u228B\uFE00','vsupnE':'\u2ACC\uFE00','Vvdash':'\u22AA','vzigzag':'\u299A','wcirc':'\u0175','Wcirc':'\u0174','wedbar':'\u2A5F','wedge':'\u2227','Wedge':'\u22C0','wedgeq':'\u2259','weierp':'\u2118','wfr':'\uD835\uDD34','Wfr':'\uD835\uDD1A','wopf':'\uD835\uDD68','Wopf':'\uD835\uDD4E','wp':'\u2118','wr':'\u2240','wreath':'\u2240','wscr':'\uD835\uDCCC','Wscr':'\uD835\uDCB2','xcap':'\u22C2','xcirc':'\u25EF','xcup':'\u22C3','xdtri':'\u25BD','xfr':'\uD835\uDD35','Xfr':'\uD835\uDD1B','xharr':'\u27F7','xhArr':'\u27FA','xi':'\u03BE','Xi':'\u039E','xlarr':'\u27F5','xlArr':'\u27F8','xmap':'\u27FC','xnis':'\u22FB','xodot':'\u2A00','xopf':'\uD835\uDD69','Xopf':'\uD835\uDD4F','xoplus':'\u2A01','xotime':'\u2A02','xrarr':'\u27F6','xrArr':'\u27F9','xscr':'\uD835\uDCCD','Xscr':'\uD835\uDCB3','xsqcup':'\u2A06','xuplus':'\u2A04','xutri':'\u25B3','xvee':'\u22C1','xwedge':'\u22C0','yacute':'\xFD','Yacute':'\xDD','yacy':'\u044F','YAcy':'\u042F','ycirc':'\u0177','Ycirc':'\u0176','ycy':'\u044B','Ycy':'\u042B','yen':'\xA5','yfr':'\uD835\uDD36','Yfr':'\uD835\uDD1C','yicy':'\u0457','YIcy':'\u0407','yopf':'\uD835\uDD6A','Yopf':'\uD835\uDD50','yscr':'\uD835\uDCCE','Yscr':'\uD835\uDCB4','yucy':'\u044E','YUcy':'\u042E','yuml':'\xFF','Yuml':'\u0178','zacute':'\u017A','Zacute':'\u0179','zcaron':'\u017E','Zcaron':'\u017D','zcy':'\u0437','Zcy':'\u0417','zdot':'\u017C','Zdot':'\u017B','zeetrf':'\u2128','ZeroWidthSpace':'\u200B','zeta':'\u03B6','Zeta':'\u0396','zfr':'\uD835\uDD37','Zfr':'\u2128','zhcy':'\u0436','ZHcy':'\u0416','zigrarr':'\u21DD','zopf':'\uD835\uDD6B','Zopf':'\u2124','zscr':'\uD835\uDCCF','Zscr':'\uD835\uDCB5','zwj':'\u200D','zwnj':'\u200C'}; - var decodeMapLegacy = {'aacute':'\xE1','Aacute':'\xC1','acirc':'\xE2','Acirc':'\xC2','acute':'\xB4','aelig':'\xE6','AElig':'\xC6','agrave':'\xE0','Agrave':'\xC0','amp':'&','AMP':'&','aring':'\xE5','Aring':'\xC5','atilde':'\xE3','Atilde':'\xC3','auml':'\xE4','Auml':'\xC4','brvbar':'\xA6','ccedil':'\xE7','Ccedil':'\xC7','cedil':'\xB8','cent':'\xA2','copy':'\xA9','COPY':'\xA9','curren':'\xA4','deg':'\xB0','divide':'\xF7','eacute':'\xE9','Eacute':'\xC9','ecirc':'\xEA','Ecirc':'\xCA','egrave':'\xE8','Egrave':'\xC8','eth':'\xF0','ETH':'\xD0','euml':'\xEB','Euml':'\xCB','frac12':'\xBD','frac14':'\xBC','frac34':'\xBE','gt':'>','GT':'>','iacute':'\xED','Iacute':'\xCD','icirc':'\xEE','Icirc':'\xCE','iexcl':'\xA1','igrave':'\xEC','Igrave':'\xCC','iquest':'\xBF','iuml':'\xEF','Iuml':'\xCF','laquo':'\xAB','lt':'<','LT':'<','macr':'\xAF','micro':'\xB5','middot':'\xB7','nbsp':'\xA0','not':'\xAC','ntilde':'\xF1','Ntilde':'\xD1','oacute':'\xF3','Oacute':'\xD3','ocirc':'\xF4','Ocirc':'\xD4','ograve':'\xF2','Ograve':'\xD2','ordf':'\xAA','ordm':'\xBA','oslash':'\xF8','Oslash':'\xD8','otilde':'\xF5','Otilde':'\xD5','ouml':'\xF6','Ouml':'\xD6','para':'\xB6','plusmn':'\xB1','pound':'\xA3','quot':'"','QUOT':'"','raquo':'\xBB','reg':'\xAE','REG':'\xAE','sect':'\xA7','shy':'\xAD','sup1':'\xB9','sup2':'\xB2','sup3':'\xB3','szlig':'\xDF','thorn':'\xFE','THORN':'\xDE','times':'\xD7','uacute':'\xFA','Uacute':'\xDA','ucirc':'\xFB','Ucirc':'\xDB','ugrave':'\xF9','Ugrave':'\xD9','uml':'\xA8','uuml':'\xFC','Uuml':'\xDC','yacute':'\xFD','Yacute':'\xDD','yen':'\xA5','yuml':'\xFF'}; - var decodeMapNumeric = {'0':'\uFFFD','128':'\u20AC','130':'\u201A','131':'\u0192','132':'\u201E','133':'\u2026','134':'\u2020','135':'\u2021','136':'\u02C6','137':'\u2030','138':'\u0160','139':'\u2039','140':'\u0152','142':'\u017D','145':'\u2018','146':'\u2019','147':'\u201C','148':'\u201D','149':'\u2022','150':'\u2013','151':'\u2014','152':'\u02DC','153':'\u2122','154':'\u0161','155':'\u203A','156':'\u0153','158':'\u017E','159':'\u0178'}; - var invalidReferenceCodePoints = [1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65000,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111]; - - /*--------------------------------------------------------------------------*/ - - var stringFromCharCode = String.fromCharCode; - - var object = {}; - var hasOwnProperty = object.hasOwnProperty; - var has = function(object, propertyName) { - return hasOwnProperty.call(object, propertyName); - }; - - var contains = function(array, value) { - var index = -1; - var length = array.length; - while (++index < length) { - if (array[index] == value) { - return true; - } - } - return false; - }; - - var merge = function(options, defaults) { - if (!options) { - return defaults; - } - var result = {}; - var key; - for (key in defaults) { - // A `hasOwnProperty` check is not needed here, since only recognized - // option names are used anyway. Any others are ignored. - result[key] = has(options, key) ? options[key] : defaults[key]; - } - return result; - }; - - // Modified version of `ucs2encode`; see https://mths.be/punycode. - var codePointToSymbol = function(codePoint, strict) { - var output = ''; - if ((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF) { - // See issue #4: - // “Otherwise, if the number is in the range 0xD800 to 0xDFFF or is - // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD - // REPLACEMENT CHARACTER.” - if (strict) { - parseError('character reference outside the permissible Unicode range'); - } - return '\uFFFD'; - } - if (has(decodeMapNumeric, codePoint)) { - if (strict) { - parseError('disallowed character reference'); - } - return decodeMapNumeric[codePoint]; - } - if (strict && contains(invalidReferenceCodePoints, codePoint)) { - parseError('disallowed character reference'); - } - if (codePoint > 0xFFFF) { - codePoint -= 0x10000; - output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800); - codePoint = 0xDC00 | codePoint & 0x3FF; - } - output += stringFromCharCode(codePoint); - return output; - }; - - var hexEscape = function(codePoint) { - return '&#x' + codePoint.toString(16).toUpperCase() + ';'; - }; - - var decEscape = function(codePoint) { - return '&#' + codePoint + ';'; - }; - - var parseError = function(message) { - throw Error('Parse error: ' + message); - }; - - /*--------------------------------------------------------------------------*/ - - var encode = function(string, options) { - options = merge(options, encode.options); - var strict = options.strict; - if (strict && regexInvalidRawCodePoint.test(string)) { - parseError('forbidden code point'); - } - var encodeEverything = options.encodeEverything; - var useNamedReferences = options.useNamedReferences; - var allowUnsafeSymbols = options.allowUnsafeSymbols; - var escapeCodePoint = options.decimal ? decEscape : hexEscape; - - var escapeBmpSymbol = function(symbol) { - return escapeCodePoint(symbol.charCodeAt(0)); - }; - - if (encodeEverything) { - // Encode ASCII symbols. - string = string.replace(regexAsciiWhitelist, function(symbol) { - // Use named references if requested & possible. - if (useNamedReferences && has(encodeMap, symbol)) { - return '&' + encodeMap[symbol] + ';'; - } - return escapeBmpSymbol(symbol); - }); - // Shorten a few escapes that represent two symbols, of which at least one - // is within the ASCII range. - if (useNamedReferences) { - string = string - .replace(/>\u20D2/g, '>⃒') - .replace(/<\u20D2/g, '<⃒') - .replace(/fj/g, 'fj'); - } - // Encode non-ASCII symbols. - if (useNamedReferences) { - // Encode non-ASCII symbols that can be replaced with a named reference. - string = string.replace(regexEncodeNonAscii, function(string) { - // Note: there is no need to check `has(encodeMap, string)` here. - return '&' + encodeMap[string] + ';'; - }); - } - // Note: any remaining non-ASCII symbols are handled outside of the `if`. - } else if (useNamedReferences) { - // Apply named character references. - // Encode `<>"'&` using named character references. - if (!allowUnsafeSymbols) { - string = string.replace(regexEscape, function(string) { - return '&' + encodeMap[string] + ';'; // no need to check `has()` here - }); - } - // Shorten escapes that represent two symbols, of which at least one is - // `<>"'&`. - string = string - .replace(/>\u20D2/g, '>⃒') - .replace(/<\u20D2/g, '<⃒'); - // Encode non-ASCII symbols that can be replaced with a named reference. - string = string.replace(regexEncodeNonAscii, function(string) { - // Note: there is no need to check `has(encodeMap, string)` here. - return '&' + encodeMap[string] + ';'; - }); - } else if (!allowUnsafeSymbols) { - // Encode `<>"'&` using hexadecimal escapes, now that they’re not handled - // using named character references. - string = string.replace(regexEscape, escapeBmpSymbol); - } - return string - // Encode astral symbols. - .replace(regexAstralSymbols, function($0) { - // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - var high = $0.charCodeAt(0); - var low = $0.charCodeAt(1); - var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000; - return escapeCodePoint(codePoint); - }) - // Encode any remaining BMP symbols that are not printable ASCII symbols - // using a hexadecimal escape. - .replace(regexBmpWhitelist, escapeBmpSymbol); - }; - // Expose default options (so they can be overridden globally). - encode.options = { - 'allowUnsafeSymbols': false, - 'encodeEverything': false, - 'strict': false, - 'useNamedReferences': false, - 'decimal' : false - }; - - var decode = function(html, options) { - options = merge(options, decode.options); - var strict = options.strict; - if (strict && regexInvalidEntity.test(html)) { - parseError('malformed character reference'); - } - return html.replace(regexDecode, function($0, $1, $2, $3, $4, $5, $6, $7, $8) { - var codePoint; - var semicolon; - var decDigits; - var hexDigits; - var reference; - var next; - - if ($1) { - reference = $1; - // Note: there is no need to check `has(decodeMap, reference)`. - return decodeMap[reference]; - } - - if ($2) { - // Decode named character references without trailing `;`, e.g. `&`. - // This is only a parse error if it gets converted to `&`, or if it is - // followed by `=` in an attribute context. - reference = $2; - next = $3; - if (next && options.isAttributeValue) { - if (strict && next == '=') { - parseError('`&` did not start a character reference'); - } - return $0; - } else { - if (strict) { - parseError( - 'named character reference was not terminated by a semicolon' - ); - } - // Note: there is no need to check `has(decodeMapLegacy, reference)`. - return decodeMapLegacy[reference] + (next || ''); - } - } - - if ($4) { - // Decode decimal escapes, e.g. `𝌆`. - decDigits = $4; - semicolon = $5; - if (strict && !semicolon) { - parseError('character reference was not terminated by a semicolon'); - } - codePoint = parseInt(decDigits, 10); - return codePointToSymbol(codePoint, strict); - } - - if ($6) { - // Decode hexadecimal escapes, e.g. `𝌆`. - hexDigits = $6; - semicolon = $7; - if (strict && !semicolon) { - parseError('character reference was not terminated by a semicolon'); - } - codePoint = parseInt(hexDigits, 16); - return codePointToSymbol(codePoint, strict); - } - - // If we’re still here, `if ($7)` is implied; it’s an ambiguous - // ampersand for sure. https://mths.be/notes/ambiguous-ampersands - if (strict) { - parseError( - 'named character reference was not terminated by a semicolon' - ); - } - return $0; - }); - }; - // Expose default options (so they can be overridden globally). - decode.options = { - 'isAttributeValue': false, - 'strict': false - }; - - var escape = function(string) { - return string.replace(regexEscape, function($0) { - // Note: there is no need to check `has(escapeMap, $0)` here. - return escapeMap[$0]; - }); - }; - - /*--------------------------------------------------------------------------*/ - - var he = { - 'version': '1.2.0', - 'encode': encode, - 'decode': decode, - 'escape': escape, - 'unescape': decode - }; - - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - true - ) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() { - return he; - }).call(exports, __webpack_require__, exports, module), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else { var key; } - -}(this)); - - -/***/ }), - -/***/ 9318: -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; - -// EXPORTS -__webpack_require__.d(__webpack_exports__, { - lX: () => (/* binding */ createBrowserHistory), - q_: () => (/* binding */ createHashHistory), - ob: () => (/* binding */ createLocation), - PP: () => (/* binding */ createMemoryHistory), - Ep: () => (/* binding */ createPath) -}); - -// UNUSED EXPORTS: locationsAreEqual, parsePath - -// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js -var esm_extends = __webpack_require__(7462); -;// CONCATENATED MODULE: ./node_modules/resolve-pathname/esm/resolve-pathname.js -function isAbsolute(pathname) { - return pathname.charAt(0) === '/'; -} - -// About 1.5x faster than the two-arg version of Array#splice() -function spliceOne(list, index) { - for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) { - list[i] = list[k]; - } - - list.pop(); -} - -// This implementation is based heavily on node's url.parse -function resolvePathname(to, from) { - if (from === undefined) from = ''; - - var toParts = (to && to.split('/')) || []; - var fromParts = (from && from.split('/')) || []; - - var isToAbs = to && isAbsolute(to); - var isFromAbs = from && isAbsolute(from); - var mustEndAbs = isToAbs || isFromAbs; - - if (to && isAbsolute(to)) { - // to is absolute - fromParts = toParts; - } else if (toParts.length) { - // to is relative, drop the filename - fromParts.pop(); - fromParts = fromParts.concat(toParts); - } - - if (!fromParts.length) return '/'; - - var hasTrailingSlash; - if (fromParts.length) { - var last = fromParts[fromParts.length - 1]; - hasTrailingSlash = last === '.' || last === '..' || last === ''; - } else { - hasTrailingSlash = false; - } - - var up = 0; - for (var i = fromParts.length; i >= 0; i--) { - var part = fromParts[i]; - - if (part === '.') { - spliceOne(fromParts, i); - } else if (part === '..') { - spliceOne(fromParts, i); - up++; - } else if (up) { - spliceOne(fromParts, i); - up--; - } - } - - if (!mustEndAbs) for (; up--; up) fromParts.unshift('..'); - - if ( - mustEndAbs && - fromParts[0] !== '' && - (!fromParts[0] || !isAbsolute(fromParts[0])) - ) - fromParts.unshift(''); - - var result = fromParts.join('/'); - - if (hasTrailingSlash && result.substr(-1) !== '/') result += '/'; - - return result; -} - -/* harmony default export */ const resolve_pathname = (resolvePathname); - -// EXTERNAL MODULE: ./node_modules/tiny-invariant/dist/esm/tiny-invariant.js -var tiny_invariant = __webpack_require__(8776); -;// CONCATENATED MODULE: ./node_modules/history/esm/history.js - - - - - - -function addLeadingSlash(path) { - return path.charAt(0) === '/' ? path : '/' + path; -} -function stripLeadingSlash(path) { - return path.charAt(0) === '/' ? path.substr(1) : path; -} -function hasBasename(path, prefix) { - return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1; -} -function stripBasename(path, prefix) { - return hasBasename(path, prefix) ? path.substr(prefix.length) : path; -} -function stripTrailingSlash(path) { - return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path; -} -function parsePath(path) { - var pathname = path || '/'; - var search = ''; - var hash = ''; - var hashIndex = pathname.indexOf('#'); - - if (hashIndex !== -1) { - hash = pathname.substr(hashIndex); - pathname = pathname.substr(0, hashIndex); - } - - var searchIndex = pathname.indexOf('?'); - - if (searchIndex !== -1) { - search = pathname.substr(searchIndex); - pathname = pathname.substr(0, searchIndex); - } - - return { - pathname: pathname, - search: search === '?' ? '' : search, - hash: hash === '#' ? '' : hash - }; -} -function createPath(location) { - var pathname = location.pathname, - search = location.search, - hash = location.hash; - var path = pathname || '/'; - if (search && search !== '?') path += search.charAt(0) === '?' ? search : "?" + search; - if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : "#" + hash; - return path; -} - -function createLocation(path, state, key, currentLocation) { - var location; - - if (typeof path === 'string') { - // Two-arg form: push(path, state) - location = parsePath(path); - location.state = state; - } else { - // One-arg form: push(location) - location = (0,esm_extends/* default */.Z)({}, path); - if (location.pathname === undefined) location.pathname = ''; - - if (location.search) { - if (location.search.charAt(0) !== '?') location.search = '?' + location.search; - } else { - location.search = ''; - } - - if (location.hash) { - if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash; - } else { - location.hash = ''; - } - - if (state !== undefined && location.state === undefined) location.state = state; - } - - try { - location.pathname = decodeURI(location.pathname); - } catch (e) { - if (e instanceof URIError) { - throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.'); - } else { - throw e; - } - } - - if (key) location.key = key; - - if (currentLocation) { - // Resolve incomplete/relative pathname relative to current location. - if (!location.pathname) { - location.pathname = currentLocation.pathname; - } else if (location.pathname.charAt(0) !== '/') { - location.pathname = resolve_pathname(location.pathname, currentLocation.pathname); - } - } else { - // When there is no prior location and pathname is empty, set it to / - if (!location.pathname) { - location.pathname = '/'; - } - } - - return location; -} -function locationsAreEqual(a, b) { - return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state); -} - -function createTransitionManager() { - var prompt = null; - - function setPrompt(nextPrompt) { - false ? 0 : void 0; - prompt = nextPrompt; - return function () { - if (prompt === nextPrompt) prompt = null; - }; - } - - function confirmTransitionTo(location, action, getUserConfirmation, callback) { - // TODO: If another transition starts while we're still confirming - // the previous one, we may end up in a weird state. Figure out the - // best way to handle this. - if (prompt != null) { - var result = typeof prompt === 'function' ? prompt(location, action) : prompt; - - if (typeof result === 'string') { - if (typeof getUserConfirmation === 'function') { - getUserConfirmation(result, callback); - } else { - false ? 0 : void 0; - callback(true); - } - } else { - // Return false from a transition hook to cancel the transition. - callback(result !== false); - } - } else { - callback(true); - } - } - - var listeners = []; - - function appendListener(fn) { - var isActive = true; - - function listener() { - if (isActive) fn.apply(void 0, arguments); - } - - listeners.push(listener); - return function () { - isActive = false; - listeners = listeners.filter(function (item) { - return item !== listener; - }); - }; - } - - function notifyListeners() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - listeners.forEach(function (listener) { - return listener.apply(void 0, args); - }); - } - - return { - setPrompt: setPrompt, - confirmTransitionTo: confirmTransitionTo, - appendListener: appendListener, - notifyListeners: notifyListeners - }; -} - -var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); -function getConfirmation(message, callback) { - callback(window.confirm(message)); // eslint-disable-line no-alert -} -/** - * Returns true if the HTML5 history API is supported. Taken from Modernizr. - * - * https://github.com/Modernizr/Modernizr/blob/master/LICENSE - * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js - * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586 - */ - -function supportsHistory() { - var ua = window.navigator.userAgent; - if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false; - return window.history && 'pushState' in window.history; -} -/** - * Returns true if browser fires popstate on hash change. - * IE10 and IE11 do not. - */ - -function supportsPopStateOnHashChange() { - return window.navigator.userAgent.indexOf('Trident') === -1; -} -/** - * Returns false if using go(n) with hash history causes a full page reload. - */ - -function supportsGoWithoutReloadUsingHash() { - return window.navigator.userAgent.indexOf('Firefox') === -1; -} -/** - * Returns true if a given popstate event is an extraneous WebKit event. - * Accounts for the fact that Chrome on iOS fires real popstate events - * containing undefined state when pressing the back button. - */ - -function isExtraneousPopstateEvent(event) { - return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1; -} - -var PopStateEvent = 'popstate'; -var HashChangeEvent = 'hashchange'; - -function getHistoryState() { - try { - return window.history.state || {}; - } catch (e) { - // IE 11 sometimes throws when accessing window.history.state - // See https://github.com/ReactTraining/history/pull/289 - return {}; - } -} -/** - * Creates a history object that uses the HTML5 history API including - * pushState, replaceState, and the popstate event. - */ - - -function createBrowserHistory(props) { - if (props === void 0) { - props = {}; - } - - !canUseDOM ? false ? 0 : (0,tiny_invariant/* default */.Z)(false) : void 0; - var globalHistory = window.history; - var canUseHistory = supportsHistory(); - var needsHashChangeListener = !supportsPopStateOnHashChange(); - var _props = props, - _props$forceRefresh = _props.forceRefresh, - forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh, - _props$getUserConfirm = _props.getUserConfirmation, - getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, - _props$keyLength = _props.keyLength, - keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength; - var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : ''; - - function getDOMLocation(historyState) { - var _ref = historyState || {}, - key = _ref.key, - state = _ref.state; - - var _window$location = window.location, - pathname = _window$location.pathname, - search = _window$location.search, - hash = _window$location.hash; - var path = pathname + search + hash; - false ? 0 : void 0; - if (basename) path = stripBasename(path, basename); - return createLocation(path, state, key); - } - - function createKey() { - return Math.random().toString(36).substr(2, keyLength); - } - - var transitionManager = createTransitionManager(); - - function setState(nextState) { - (0,esm_extends/* default */.Z)(history, nextState); - - history.length = globalHistory.length; - transitionManager.notifyListeners(history.location, history.action); - } - - function handlePopState(event) { - // Ignore extraneous popstate events in WebKit. - if (isExtraneousPopstateEvent(event)) return; - handlePop(getDOMLocation(event.state)); - } - - function handleHashChange() { - handlePop(getDOMLocation(getHistoryState())); - } - - var forceNextPop = false; - - function handlePop(location) { - if (forceNextPop) { - forceNextPop = false; - setState(); - } else { - var action = 'POP'; - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (ok) { - setState({ - action: action, - location: location - }); - } else { - revertPop(location); - } - }); - } - } - - function revertPop(fromLocation) { - var toLocation = history.location; // TODO: We could probably make this more reliable by - // keeping a list of keys we've seen in sessionStorage. - // Instead, we just default to 0 for keys we don't know. - - var toIndex = allKeys.indexOf(toLocation.key); - if (toIndex === -1) toIndex = 0; - var fromIndex = allKeys.indexOf(fromLocation.key); - if (fromIndex === -1) fromIndex = 0; - var delta = toIndex - fromIndex; - - if (delta) { - forceNextPop = true; - go(delta); - } - } - - var initialLocation = getDOMLocation(getHistoryState()); - var allKeys = [initialLocation.key]; // Public interface - - function createHref(location) { - return basename + createPath(location); - } - - function push(path, state) { - false ? 0 : void 0; - var action = 'PUSH'; - var location = createLocation(path, state, createKey(), history.location); - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (!ok) return; - var href = createHref(location); - var key = location.key, - state = location.state; - - if (canUseHistory) { - globalHistory.pushState({ - key: key, - state: state - }, null, href); - - if (forceRefresh) { - window.location.href = href; - } else { - var prevIndex = allKeys.indexOf(history.location.key); - var nextKeys = allKeys.slice(0, prevIndex + 1); - nextKeys.push(location.key); - allKeys = nextKeys; - setState({ - action: action, - location: location - }); - } - } else { - false ? 0 : void 0; - window.location.href = href; - } - }); - } - - function replace(path, state) { - false ? 0 : void 0; - var action = 'REPLACE'; - var location = createLocation(path, state, createKey(), history.location); - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (!ok) return; - var href = createHref(location); - var key = location.key, - state = location.state; - - if (canUseHistory) { - globalHistory.replaceState({ - key: key, - state: state - }, null, href); - - if (forceRefresh) { - window.location.replace(href); - } else { - var prevIndex = allKeys.indexOf(history.location.key); - if (prevIndex !== -1) allKeys[prevIndex] = location.key; - setState({ - action: action, - location: location - }); - } - } else { - false ? 0 : void 0; - window.location.replace(href); - } - }); - } - - function go(n) { - globalHistory.go(n); - } - - function goBack() { - go(-1); - } - - function goForward() { - go(1); - } - - var listenerCount = 0; - - function checkDOMListeners(delta) { - listenerCount += delta; - - if (listenerCount === 1 && delta === 1) { - window.addEventListener(PopStateEvent, handlePopState); - if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange); - } else if (listenerCount === 0) { - window.removeEventListener(PopStateEvent, handlePopState); - if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange); - } - } - - var isBlocked = false; - - function block(prompt) { - if (prompt === void 0) { - prompt = false; - } - - var unblock = transitionManager.setPrompt(prompt); - - if (!isBlocked) { - checkDOMListeners(1); - isBlocked = true; - } - - return function () { - if (isBlocked) { - isBlocked = false; - checkDOMListeners(-1); - } - - return unblock(); - }; - } - - function listen(listener) { - var unlisten = transitionManager.appendListener(listener); - checkDOMListeners(1); - return function () { - checkDOMListeners(-1); - unlisten(); - }; - } - - var history = { - length: globalHistory.length, - action: 'POP', - location: initialLocation, - createHref: createHref, - push: push, - replace: replace, - go: go, - goBack: goBack, - goForward: goForward, - block: block, - listen: listen - }; - return history; -} - -var HashChangeEvent$1 = 'hashchange'; -var HashPathCoders = { - hashbang: { - encodePath: function encodePath(path) { - return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path); - }, - decodePath: function decodePath(path) { - return path.charAt(0) === '!' ? path.substr(1) : path; - } - }, - noslash: { - encodePath: stripLeadingSlash, - decodePath: addLeadingSlash - }, - slash: { - encodePath: addLeadingSlash, - decodePath: addLeadingSlash - } -}; - -function stripHash(url) { - var hashIndex = url.indexOf('#'); - return hashIndex === -1 ? url : url.slice(0, hashIndex); -} - -function getHashPath() { - // We can't use window.location.hash here because it's not - // consistent across browsers - Firefox will pre-decode it! - var href = window.location.href; - var hashIndex = href.indexOf('#'); - return hashIndex === -1 ? '' : href.substring(hashIndex + 1); -} - -function pushHashPath(path) { - window.location.hash = path; -} - -function replaceHashPath(path) { - window.location.replace(stripHash(window.location.href) + '#' + path); -} - -function createHashHistory(props) { - if (props === void 0) { - props = {}; - } - - !canUseDOM ? false ? 0 : (0,tiny_invariant/* default */.Z)(false) : void 0; - var globalHistory = window.history; - var canGoWithoutReload = supportsGoWithoutReloadUsingHash(); - var _props = props, - _props$getUserConfirm = _props.getUserConfirmation, - getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, - _props$hashType = _props.hashType, - hashType = _props$hashType === void 0 ? 'slash' : _props$hashType; - var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : ''; - var _HashPathCoders$hashT = HashPathCoders[hashType], - encodePath = _HashPathCoders$hashT.encodePath, - decodePath = _HashPathCoders$hashT.decodePath; - - function getDOMLocation() { - var path = decodePath(getHashPath()); - false ? 0 : void 0; - if (basename) path = stripBasename(path, basename); - return createLocation(path); - } - - var transitionManager = createTransitionManager(); - - function setState(nextState) { - (0,esm_extends/* default */.Z)(history, nextState); - - history.length = globalHistory.length; - transitionManager.notifyListeners(history.location, history.action); - } - - var forceNextPop = false; - var ignorePath = null; - - function locationsAreEqual$$1(a, b) { - return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash; - } - - function handleHashChange() { - var path = getHashPath(); - var encodedPath = encodePath(path); - - if (path !== encodedPath) { - // Ensure we always have a properly-encoded hash. - replaceHashPath(encodedPath); - } else { - var location = getDOMLocation(); - var prevLocation = history.location; - if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change. - - if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace. - - ignorePath = null; - handlePop(location); - } - } - - function handlePop(location) { - if (forceNextPop) { - forceNextPop = false; - setState(); - } else { - var action = 'POP'; - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (ok) { - setState({ - action: action, - location: location - }); - } else { - revertPop(location); - } - }); - } - } - - function revertPop(fromLocation) { - var toLocation = history.location; // TODO: We could probably make this more reliable by - // keeping a list of paths we've seen in sessionStorage. - // Instead, we just default to 0 for paths we don't know. - - var toIndex = allPaths.lastIndexOf(createPath(toLocation)); - if (toIndex === -1) toIndex = 0; - var fromIndex = allPaths.lastIndexOf(createPath(fromLocation)); - if (fromIndex === -1) fromIndex = 0; - var delta = toIndex - fromIndex; - - if (delta) { - forceNextPop = true; - go(delta); - } - } // Ensure the hash is encoded properly before doing anything else. - - - var path = getHashPath(); - var encodedPath = encodePath(path); - if (path !== encodedPath) replaceHashPath(encodedPath); - var initialLocation = getDOMLocation(); - var allPaths = [createPath(initialLocation)]; // Public interface - - function createHref(location) { - var baseTag = document.querySelector('base'); - var href = ''; - - if (baseTag && baseTag.getAttribute('href')) { - href = stripHash(window.location.href); - } - - return href + '#' + encodePath(basename + createPath(location)); - } - - function push(path, state) { - false ? 0 : void 0; - var action = 'PUSH'; - var location = createLocation(path, undefined, undefined, history.location); - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (!ok) return; - var path = createPath(location); - var encodedPath = encodePath(basename + path); - var hashChanged = getHashPath() !== encodedPath; - - if (hashChanged) { - // We cannot tell if a hashchange was caused by a PUSH, so we'd - // rather setState here and ignore the hashchange. The caveat here - // is that other hash histories in the page will consider it a POP. - ignorePath = path; - pushHashPath(encodedPath); - var prevIndex = allPaths.lastIndexOf(createPath(history.location)); - var nextPaths = allPaths.slice(0, prevIndex + 1); - nextPaths.push(path); - allPaths = nextPaths; - setState({ - action: action, - location: location - }); - } else { - false ? 0 : void 0; - setState(); - } - }); - } - - function replace(path, state) { - false ? 0 : void 0; - var action = 'REPLACE'; - var location = createLocation(path, undefined, undefined, history.location); - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (!ok) return; - var path = createPath(location); - var encodedPath = encodePath(basename + path); - var hashChanged = getHashPath() !== encodedPath; - - if (hashChanged) { - // We cannot tell if a hashchange was caused by a REPLACE, so we'd - // rather setState here and ignore the hashchange. The caveat here - // is that other hash histories in the page will consider it a POP. - ignorePath = path; - replaceHashPath(encodedPath); - } - - var prevIndex = allPaths.indexOf(createPath(history.location)); - if (prevIndex !== -1) allPaths[prevIndex] = path; - setState({ - action: action, - location: location - }); - }); - } - - function go(n) { - false ? 0 : void 0; - globalHistory.go(n); - } - - function goBack() { - go(-1); - } - - function goForward() { - go(1); - } - - var listenerCount = 0; - - function checkDOMListeners(delta) { - listenerCount += delta; - - if (listenerCount === 1 && delta === 1) { - window.addEventListener(HashChangeEvent$1, handleHashChange); - } else if (listenerCount === 0) { - window.removeEventListener(HashChangeEvent$1, handleHashChange); - } - } - - var isBlocked = false; - - function block(prompt) { - if (prompt === void 0) { - prompt = false; - } - - var unblock = transitionManager.setPrompt(prompt); - - if (!isBlocked) { - checkDOMListeners(1); - isBlocked = true; - } - - return function () { - if (isBlocked) { - isBlocked = false; - checkDOMListeners(-1); - } - - return unblock(); - }; - } - - function listen(listener) { - var unlisten = transitionManager.appendListener(listener); - checkDOMListeners(1); - return function () { - checkDOMListeners(-1); - unlisten(); - }; - } - - var history = { - length: globalHistory.length, - action: 'POP', - location: initialLocation, - createHref: createHref, - push: push, - replace: replace, - go: go, - goBack: goBack, - goForward: goForward, - block: block, - listen: listen - }; - return history; -} - -function clamp(n, lowerBound, upperBound) { - return Math.min(Math.max(n, lowerBound), upperBound); -} -/** - * Creates a history object that stores locations in memory. - */ - - -function createMemoryHistory(props) { - if (props === void 0) { - props = {}; - } - - var _props = props, - getUserConfirmation = _props.getUserConfirmation, - _props$initialEntries = _props.initialEntries, - initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries, - _props$initialIndex = _props.initialIndex, - initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex, - _props$keyLength = _props.keyLength, - keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength; - var transitionManager = createTransitionManager(); - - function setState(nextState) { - (0,esm_extends/* default */.Z)(history, nextState); - - history.length = history.entries.length; - transitionManager.notifyListeners(history.location, history.action); - } - - function createKey() { - return Math.random().toString(36).substr(2, keyLength); - } - - var index = clamp(initialIndex, 0, initialEntries.length - 1); - var entries = initialEntries.map(function (entry) { - return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey()); - }); // Public interface - - var createHref = createPath; - - function push(path, state) { - false ? 0 : void 0; - var action = 'PUSH'; - var location = createLocation(path, state, createKey(), history.location); - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (!ok) return; - var prevIndex = history.index; - var nextIndex = prevIndex + 1; - var nextEntries = history.entries.slice(0); - - if (nextEntries.length > nextIndex) { - nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location); - } else { - nextEntries.push(location); - } - - setState({ - action: action, - location: location, - index: nextIndex, - entries: nextEntries - }); - }); - } - - function replace(path, state) { - false ? 0 : void 0; - var action = 'REPLACE'; - var location = createLocation(path, state, createKey(), history.location); - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (!ok) return; - history.entries[history.index] = location; - setState({ - action: action, - location: location - }); - }); - } - - function go(n) { - var nextIndex = clamp(history.index + n, 0, history.entries.length - 1); - var action = 'POP'; - var location = history.entries[nextIndex]; - transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { - if (ok) { - setState({ - action: action, - location: location, - index: nextIndex - }); - } else { - // Mimic the behavior of DOM histories by - // causing a render after a cancelled POP. - setState(); - } - }); - } - - function goBack() { - go(-1); - } - - function goForward() { - go(1); - } - - function canGo(n) { - var nextIndex = history.index + n; - return nextIndex >= 0 && nextIndex < history.entries.length; - } - - function block(prompt) { - if (prompt === void 0) { - prompt = false; - } - - return transitionManager.setPrompt(prompt); - } - - function listen(listener) { - return transitionManager.appendListener(listener); - } - - var history = { - length: entries.length, - action: 'POP', - location: entries[index], - index: index, - entries: entries, - createHref: createHref, - push: push, - replace: replace, - go: go, - goBack: goBack, - goForward: goForward, - canGo: canGo, - block: block, - listen: listen - }; - return history; -} - - - - -/***/ }), - -/***/ 8679: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var reactIs = __webpack_require__(9864); - -/** - * Copyright 2015, Yahoo! Inc. - * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms. - */ -var REACT_STATICS = { - childContextTypes: true, - contextType: true, - contextTypes: true, - defaultProps: true, - displayName: true, - getDefaultProps: true, - getDerivedStateFromError: true, - getDerivedStateFromProps: true, - mixins: true, - propTypes: true, - type: true -}; -var KNOWN_STATICS = { - name: true, - length: true, - prototype: true, - caller: true, - callee: true, - arguments: true, - arity: true -}; -var FORWARD_REF_STATICS = { - '$$typeof': true, - render: true, - defaultProps: true, - displayName: true, - propTypes: true -}; -var MEMO_STATICS = { - '$$typeof': true, - compare: true, - defaultProps: true, - displayName: true, - propTypes: true, - type: true -}; -var TYPE_STATICS = {}; -TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS; -TYPE_STATICS[reactIs.Memo] = MEMO_STATICS; - -function getStatics(component) { - // React v16.11 and below - if (reactIs.isMemo(component)) { - return MEMO_STATICS; - } // React v16.12 and above - - - return TYPE_STATICS[component['$$typeof']] || REACT_STATICS; -} - -var defineProperty = Object.defineProperty; -var getOwnPropertyNames = Object.getOwnPropertyNames; -var getOwnPropertySymbols = Object.getOwnPropertySymbols; -var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; -var getPrototypeOf = Object.getPrototypeOf; -var objectPrototype = Object.prototype; -function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { - if (typeof sourceComponent !== 'string') { - // don't hoist over string (html) components - if (objectPrototype) { - var inheritedComponent = getPrototypeOf(sourceComponent); - - if (inheritedComponent && inheritedComponent !== objectPrototype) { - hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); - } - } - - var keys = getOwnPropertyNames(sourceComponent); - - if (getOwnPropertySymbols) { - keys = keys.concat(getOwnPropertySymbols(sourceComponent)); - } - - var targetStatics = getStatics(targetComponent); - var sourceStatics = getStatics(sourceComponent); - - for (var i = 0; i < keys.length; ++i) { - var key = keys[i]; - - if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) { - var descriptor = getOwnPropertyDescriptor(sourceComponent, key); - - try { - // Avoid failures from read-only properties - defineProperty(targetComponent, key, descriptor); - } catch (e) {} - } - } - } - - return targetComponent; -} - -module.exports = hoistNonReactStatics; - - -/***/ }), - -/***/ 5110: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - - -var CleanCSS = __webpack_require__(9039); -var decode = (__webpack_require__(6492).decode); -var HTMLParser = (__webpack_require__(6337)/* .HTMLParser */ .Ji); -var endTag = (__webpack_require__(6337)/* .endTag */ .r7); -var RelateUrl = __webpack_require__(7961); -var TokenChain = __webpack_require__(2564); -var Terser = __webpack_require__(4950); -var utils = __webpack_require__(4402); - -function trimWhitespace(str) { - return str && str.replace(/^[ \n\r\t\f]+/, '').replace(/[ \n\r\t\f]+$/, ''); -} - -function collapseWhitespaceAll(str) { - // Non-breaking space is specifically handled inside the replacer function here: - return str && str.replace(/[ \n\r\t\f\xA0]+/g, function(spaces) { - return spaces === '\t' ? '\t' : spaces.replace(/(^|\xA0+)[^\xA0]+/g, '$1 '); - }); -} - -function collapseWhitespace(str, options, trimLeft, trimRight, collapseAll) { - var lineBreakBefore = '', lineBreakAfter = ''; - - if (options.preserveLineBreaks) { - str = str.replace(/^[ \n\r\t\f]*?[\n\r][ \n\r\t\f]*/, function() { - lineBreakBefore = '\n'; - return ''; - }).replace(/[ \n\r\t\f]*?[\n\r][ \n\r\t\f]*$/, function() { - lineBreakAfter = '\n'; - return ''; - }); - } - - if (trimLeft) { - // Non-breaking space is specifically handled inside the replacer function here: - str = str.replace(/^[ \n\r\t\f\xA0]+/, function(spaces) { - var conservative = !lineBreakBefore && options.conservativeCollapse; - if (conservative && spaces === '\t') { - return '\t'; - } - return spaces.replace(/^[^\xA0]+/, '').replace(/(\xA0+)[^\xA0]+/g, '$1 ') || (conservative ? ' ' : ''); - }); - } - - if (trimRight) { - // Non-breaking space is specifically handled inside the replacer function here: - str = str.replace(/[ \n\r\t\f\xA0]+$/, function(spaces) { - var conservative = !lineBreakAfter && options.conservativeCollapse; - if (conservative && spaces === '\t') { - return '\t'; - } - return spaces.replace(/[^\xA0]+(\xA0+)/g, ' $1').replace(/[^\xA0]+$/, '') || (conservative ? ' ' : ''); - }); - } - - if (collapseAll) { - // strip non space whitespace then compress spaces to one - str = collapseWhitespaceAll(str); - } - - return lineBreakBefore + str + lineBreakAfter; -} - -var createMapFromString = utils.createMapFromString; -// non-empty tags that will maintain whitespace around them -var inlineTags = createMapFromString('a,abbr,acronym,b,bdi,bdo,big,button,cite,code,del,dfn,em,font,i,ins,kbd,label,mark,math,nobr,object,q,rp,rt,rtc,ruby,s,samp,select,small,span,strike,strong,sub,sup,svg,textarea,time,tt,u,var'); -// non-empty tags that will maintain whitespace within them -var inlineTextTags = createMapFromString('a,abbr,acronym,b,big,del,em,font,i,ins,kbd,mark,nobr,rp,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var'); -// self-closing tags that will maintain whitespace around them -var selfClosingInlineTags = createMapFromString('comment,img,input,wbr'); - -function collapseWhitespaceSmart(str, prevTag, nextTag, options) { - var trimLeft = prevTag && !selfClosingInlineTags(prevTag); - if (trimLeft && !options.collapseInlineTagWhitespace) { - trimLeft = prevTag.charAt(0) === '/' ? !inlineTags(prevTag.slice(1)) : !inlineTextTags(prevTag); - } - var trimRight = nextTag && !selfClosingInlineTags(nextTag); - if (trimRight && !options.collapseInlineTagWhitespace) { - trimRight = nextTag.charAt(0) === '/' ? !inlineTextTags(nextTag.slice(1)) : !inlineTags(nextTag); - } - return collapseWhitespace(str, options, trimLeft, trimRight, prevTag && nextTag); -} - -function isConditionalComment(text) { - return /^\[if\s[^\]]+]|\[endif]$/.test(text); -} - -function isIgnoredComment(text, options) { - for (var i = 0, len = options.ignoreCustomComments.length; i < len; i++) { - if (options.ignoreCustomComments[i].test(text)) { - return true; - } - } - return false; -} - -function isEventAttribute(attrName, options) { - var patterns = options.customEventAttributes; - if (patterns) { - for (var i = patterns.length; i--;) { - if (patterns[i].test(attrName)) { - return true; - } - } - return false; - } - return /^on[a-z]{3,}$/.test(attrName); -} - -function canRemoveAttributeQuotes(value) { - // https://mathiasbynens.be/notes/unquoted-attribute-values - return /^[^ \t\n\f\r"'`=<>]+$/.test(value); -} - -function attributesInclude(attributes, attribute) { - for (var i = attributes.length; i--;) { - if (attributes[i].name.toLowerCase() === attribute) { - return true; - } - } - return false; -} - -function isAttributeRedundant(tag, attrName, attrValue, attrs) { - attrValue = attrValue ? trimWhitespace(attrValue.toLowerCase()) : ''; - - return ( - tag === 'script' && - attrName === 'language' && - attrValue === 'javascript' || - - tag === 'form' && - attrName === 'method' && - attrValue === 'get' || - - tag === 'input' && - attrName === 'type' && - attrValue === 'text' || - - tag === 'script' && - attrName === 'charset' && - !attributesInclude(attrs, 'src') || - - tag === 'a' && - attrName === 'name' && - attributesInclude(attrs, 'id') || - - tag === 'area' && - attrName === 'shape' && - attrValue === 'rect' - ); -} - -// https://mathiasbynens.be/demo/javascript-mime-type -// https://developer.mozilla.org/en/docs/Web/HTML/Element/script#attr-type -var executableScriptsMimetypes = utils.createMap([ - 'text/javascript', - 'text/ecmascript', - 'text/jscript', - 'application/javascript', - 'application/x-javascript', - 'application/ecmascript', - 'module' -]); - -var keepScriptsMimetypes = utils.createMap([ - 'module' -]); - -function isScriptTypeAttribute(attrValue) { - attrValue = trimWhitespace(attrValue.split(/;/, 2)[0]).toLowerCase(); - return attrValue === '' || executableScriptsMimetypes(attrValue); -} - -function keepScriptTypeAttribute(attrValue) { - attrValue = trimWhitespace(attrValue.split(/;/, 2)[0]).toLowerCase(); - return keepScriptsMimetypes(attrValue); -} - -function isExecutableScript(tag, attrs) { - if (tag !== 'script') { - return false; - } - for (var i = 0, len = attrs.length; i < len; i++) { - var attrName = attrs[i].name.toLowerCase(); - if (attrName === 'type') { - return isScriptTypeAttribute(attrs[i].value); - } - } - return true; -} - -function isStyleLinkTypeAttribute(attrValue) { - attrValue = trimWhitespace(attrValue).toLowerCase(); - return attrValue === '' || attrValue === 'text/css'; -} - -function isStyleSheet(tag, attrs) { - if (tag !== 'style') { - return false; - } - for (var i = 0, len = attrs.length; i < len; i++) { - var attrName = attrs[i].name.toLowerCase(); - if (attrName === 'type') { - return isStyleLinkTypeAttribute(attrs[i].value); - } - } - return true; -} - -var isSimpleBoolean = createMapFromString('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible'); -var isBooleanValue = createMapFromString('true,false'); - -function isBooleanAttribute(attrName, attrValue) { - return isSimpleBoolean(attrName) || attrName === 'draggable' && !isBooleanValue(attrValue); -} - -function isUriTypeAttribute(attrName, tag) { - return ( - /^(?:a|area|link|base)$/.test(tag) && attrName === 'href' || - tag === 'img' && /^(?:src|longdesc|usemap)$/.test(attrName) || - tag === 'object' && /^(?:classid|codebase|data|usemap)$/.test(attrName) || - tag === 'q' && attrName === 'cite' || - tag === 'blockquote' && attrName === 'cite' || - (tag === 'ins' || tag === 'del') && attrName === 'cite' || - tag === 'form' && attrName === 'action' || - tag === 'input' && (attrName === 'src' || attrName === 'usemap') || - tag === 'head' && attrName === 'profile' || - tag === 'script' && (attrName === 'src' || attrName === 'for') - ); -} - -function isNumberTypeAttribute(attrName, tag) { - return ( - /^(?:a|area|object|button)$/.test(tag) && attrName === 'tabindex' || - tag === 'input' && (attrName === 'maxlength' || attrName === 'tabindex') || - tag === 'select' && (attrName === 'size' || attrName === 'tabindex') || - tag === 'textarea' && /^(?:rows|cols|tabindex)$/.test(attrName) || - tag === 'colgroup' && attrName === 'span' || - tag === 'col' && attrName === 'span' || - (tag === 'th' || tag === 'td') && (attrName === 'rowspan' || attrName === 'colspan') - ); -} - -function isLinkType(tag, attrs, value) { - if (tag !== 'link') { - return false; - } - for (var i = 0, len = attrs.length; i < len; i++) { - if (attrs[i].name === 'rel' && attrs[i].value === value) { - return true; - } - } -} - -function isMediaQuery(tag, attrs, attrName) { - return attrName === 'media' && (isLinkType(tag, attrs, 'stylesheet') || isStyleSheet(tag, attrs)); -} - -var srcsetTags = createMapFromString('img,source'); - -function isSrcset(attrName, tag) { - return attrName === 'srcset' && srcsetTags(tag); -} - -async function cleanAttributeValue(tag, attrName, attrValue, options, attrs) { - if (isEventAttribute(attrName, options)) { - attrValue = trimWhitespace(attrValue).replace(/^javascript:\s*/i, ''); - return await options.minifyJS(attrValue, true); - } - else if (attrName === 'class') { - attrValue = trimWhitespace(attrValue); - if (options.sortClassName) { - attrValue = options.sortClassName(attrValue); - } - else { - attrValue = collapseWhitespaceAll(attrValue); - } - return attrValue; - } - else if (isUriTypeAttribute(attrName, tag)) { - attrValue = trimWhitespace(attrValue); - return isLinkType(tag, attrs, 'canonical') ? attrValue : options.minifyURLs(attrValue); - } - else if (isNumberTypeAttribute(attrName, tag)) { - return trimWhitespace(attrValue); - } - else if (attrName === 'style') { - attrValue = trimWhitespace(attrValue); - if (attrValue) { - if (/;$/.test(attrValue) && !/&#?[0-9a-zA-Z]+;$/.test(attrValue)) { - attrValue = attrValue.replace(/\s*;$/, ';'); - } - attrValue = options.minifyCSS(attrValue, 'inline'); - } - return attrValue; - } - else if (isSrcset(attrName, tag)) { - // https://html.spec.whatwg.org/multipage/embedded-content.html#attr-img-srcset - attrValue = trimWhitespace(attrValue).split(/\s+,\s*|\s*,\s+/).map(function(candidate) { - var url = candidate; - var descriptor = ''; - var match = candidate.match(/\s+([1-9][0-9]*w|[0-9]+(?:\.[0-9]+)?x)$/); - if (match) { - url = url.slice(0, -match[0].length); - var num = +match[1].slice(0, -1); - var suffix = match[1].slice(-1); - if (num !== 1 || suffix !== 'x') { - descriptor = ' ' + num + suffix; - } - } - return options.minifyURLs(url) + descriptor; - }).join(', '); - } - else if (isMetaViewport(tag, attrs) && attrName === 'content') { - attrValue = attrValue.replace(/\s+/g, '').replace(/[0-9]+\.[0-9]+/g, function(numString) { - // "0.90000" -> "0.9" - // "1.0" -> "1" - // "1.0001" -> "1.0001" (unchanged) - return (+numString).toString(); - }); - } - else if (isContentSecurityPolicy(tag, attrs) && attrName.toLowerCase() === 'content') { - return collapseWhitespaceAll(attrValue); - } - else if (options.customAttrCollapse && options.customAttrCollapse.test(attrName)) { - attrValue = trimWhitespace(attrValue.replace(/ ?[\n\r]+ ?/g, '').replace(/\s{2,}/g, options.conservativeCollapse ? ' ' : '')); - } - else if (tag === 'script' && attrName === 'type') { - attrValue = trimWhitespace(attrValue.replace(/\s*;\s*/g, ';')); - } - else if (isMediaQuery(tag, attrs, attrName)) { - attrValue = trimWhitespace(attrValue); - return options.minifyCSS(attrValue, 'media'); - } - return attrValue; -} - -function isMetaViewport(tag, attrs) { - if (tag !== 'meta') { - return false; - } - for (var i = 0, len = attrs.length; i < len; i++) { - if (attrs[i].name === 'name' && attrs[i].value === 'viewport') { - return true; - } - } -} - -function isContentSecurityPolicy(tag, attrs) { - if (tag !== 'meta') { - return false; - } - for (var i = 0, len = attrs.length; i < len; i++) { - if (attrs[i].name.toLowerCase() === 'http-equiv' && attrs[i].value.toLowerCase() === 'content-security-policy') { - return true; - } - } -} - -function ignoreCSS(id) { - return '/* clean-css ignore:start */' + id + '/* clean-css ignore:end */'; -} - -// Wrap CSS declarations for CleanCSS > 3.x -// See https://github.com/jakubpawlowicz/clean-css/issues/418 -function wrapCSS(text, type) { - switch (type) { - case 'inline': - return '*{' + text + '}'; - case 'media': - return '@media ' + text + '{a{top:0}}'; - default: - return text; - } -} - -function unwrapCSS(text, type) { - var matches; - switch (type) { - case 'inline': - matches = text.match(/^\*\{([\s\S]*)\}$/); - break; - case 'media': - matches = text.match(/^@media ([\s\S]*?)\s*{[\s\S]*}$/); - break; - } - return matches ? matches[1] : text; -} - -async function cleanConditionalComment(comment, options) { - return options.processConditionalComments ? await utils.replaceAsync(comment, /^(\[if\s[^\]]+]>)([\s\S]*?)( -1) { - return await minify(text, options); - } - } - return text; -} - -// Tag omission rules from https://html.spec.whatwg.org/multipage/syntax.html#optional-tags -// with the following deviations: -// - retain if followed by