From 38317b7883a10469c5c450ffa2dd4225ecc65cbb Mon Sep 17 00:00:00 2001 From: Alison Myers Date: Tue, 17 Sep 2024 16:59:58 -0700 Subject: [PATCH] Update metrics (#29) * reorg / cleanup csv writing * add new metrics and output * topic_posted_at and topic_created_at * add 0 for no replies * add description for summary * add better descriptions * Pr to updatemetrics add summary by module (#30) * add function to get module and items * create unique functions for re-usability * create data strucuture for modules * create summary by module fn and remove old code * add variable and explain in readme for inclusion of summary by module * update output names and include info in readme * REFACTOR - being refactor to util fns * REFACTOR - use functions to clean wordcount string * REFACTOR - remove comments * REFACTOR - extract postSummary to function in util * resolve spacing issue * fix numbering * mention all files created * create warning and error helpers * add comments and remove uneccessary exports * remove trailing spaces * move comment to appropriate place * use more meaningful name * resolve header comments * fix async and await of apis so not sequential * dont need flat * create conditional promise * rm white space * remove sort comparison * address refactor comments * update timestamps and associated functions * return null if not posted_at instead of 1969 date --- README.md | 48 +- image-1.png | Bin 0 -> 97352 bytes index.js | 158 +- package-lock.json | 2687 ++++++++++++++++++++++++---------- package.json | 1 + util.js | 106 +- writeSummaryByModuleToCSV.js | 50 + writeSummaryToCSV.js | 61 + writeToCSV.js | 77 +- 9 files changed, 2368 insertions(+), 820 deletions(-) create mode 100644 image-1.png create mode 100644 writeSummaryByModuleToCSV.js create mode 100644 writeSummaryToCSV.js diff --git a/README.md b/README.md index c3c143d7..40b82c46 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,18 @@ > 💡 If you are teaching at the University of British Columbia, you may also be interested in the tool `Threadz` which provides visualizations and data from your Canvas discussion forums through a user interface in Canvas. You can learn more about the tool and how to request access in your course from the [LTHub Instructor Guide](https://lthub.ubc.ca/guides/threadz-instructor-guide/). `Threadz` was developed by Eastern Washington University. # Canvas Discussion + +### Data +> `{course_id}-discussion.csv` + This project pulls data via the Canvas API the discussions for the specified Canvas course(s) and exports the results as CSV. The columns exported are: * 'topic_id', * 'topic_title', * 'topic_message', * 'topic_author_id', * 'topic_author_name', -* 'topic_timestamp', +* 'topic_created_at', +* 'topic_posted_at', * 'post_author_id', * 'post_author_name', * 'post_id', @@ -18,7 +23,42 @@ This project pulls data via the Canvas API the discussions for the specified Can * 'post_likes', * 'post_timestamp' -Where a `topic` corresponds to a `discussion_topic` and `post` refers to replies to the `discussion_topic`. If a `discussion_topic` has no posts then you will see the `topic_` columns filled with no corresponding `post_` data. A `post` may have a `post_parent_id ` if it is part of a threaded response. +Where a `topic` corresponds to a `discussion_topic` and `post` refers to all replies to the `discussion_topic`. If a `discussion_topic` has no posts then you will see the `topic_` columns filled with no corresponding `post_` data. A `post` may have a `post_parent_id ` if it is part of a threaded response. + +### Summary Data +> `{course_id}-discussion-summary.csv` + +We have calculated summary metrics for each topic. The csv with the summary information includes the following columns: +* 'topic_id', +* 'topic_title', +* 'topic_author_id', +* 'topic_author_name', +* 'topic_created_at', +* 'topic_posted_at', +* 'number_of_posts': the total number of posts and replies in the topic +* 'median_posts_word_count': the median word count for all posts and replies to the topic +* 'average_time_to_post_hours': the average time to post or reply from the topic created_at date +* 'first_reply_timestamp': the timestamp of the first post +* 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) +* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) + +Where a `post` is a response to a topic, and a `reply` is a reply to the post. + +![alt text](image-1.png) + +> `{course_id}-module-discussion-summary.csv` + +We have calculated summary metrics at the level of `module` where there are multiple discussion topics. This is optional (see .env creation above) The csv with the summary information includes the following columns: +* 'module_id', +* 'module_name', +* 'module_unlock_at': assuming the course uses an unlock_at date this will be used to calculate, +* 'number_of_posts': the total number of posts and replies in the module +* 'median_posts_word_count': the median word count for all posts and replies to the module topics +* 'average_time_to_post_hours': the average time to post or reply from the module_unlock_at date +* 'first_reply_timestamp': the timestamp of the first post +* 'average_time_to_post_from_first_reply_hours': the average time to post or reply from the first post (for cases where all discussions are released at once, this may be a more meaningful metric of time to reply) +* 'average_posts_per_author': the average posts per author (does not include enrollments with no posts) + ## Getting Started These instructions will get you a copy of the project up and running on your local machine for use with your own API tokens and Canvas domains. @@ -39,15 +79,17 @@ These instructions will get you a copy of the project up and running on your loc 1. Create a `.env` file. 1. Add the following: `CANVAS_API_TOKEN={YOUR API TOKEN}`, `CANVAS_API_DOMAIN={YOUR API DOMAIN}`, `COURSE_IDS={YOUR COURSE ID(s)}`. > - At UBC the `CANVAS_API_DOMAIN` is `https://ubc.instructure.com/api/v1` > - At another institution it might be something like `https://{school}.instructure.com/api/v1` +1. Add `INCLUDE_MODULE_SUMMARY=true` (or `INCLUDE_MODULE_SUMMARY=false`) to indicate whether you would like to include a summary grouped by module. If this is not in the .env it will default to false and no module summary will be created. Your .env file should look like ``` CANVAS_API_TOKEN=22322... CANVAS_API_DOMAIN=https://ubc.instructure.com/api/v1 COURSE_IDS=1111,1112 + INCLUDE_MODULE_SUMMARY=false ``` 1. Run the script. `npm start`. -1. A `{course_id}-discussion.csv` file should be generated with discussion data in the output folder for each provided course_id. +1. A `{course_id}-discussion.csv` and a ` {course_id}-discussion-summary.csv` file should be generated with discussion data in the output folder for each provided course_id. If you have set `INCLUDE_MODULE_SUMMARY` to `true` then you will also see a file `{course_id}-module-discussion-summary.csv`. ## Authors diff --git a/image-1.png b/image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1d6c6c04c0e6786d6e4fb4c298b49a0a0dd3ed GIT binary patch literal 97352 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
>p~~mnooof zCj3>J0-$07>9T%KX6vDp)g6xuz2hbt-DfJKQiQKRFxV7fLlD%o6AC!nAlug`(1mrw zHm@2MeW0(G6_=#NzZ#-miYPdT4p}i;yuz^FoihE)N6I=wHO@JDSoF|P9^2jg+w8aV zx7>ebVF~s@SeV!-mKfFoM-=~?7zZFcfkBw4uZQbeZ*i-Dis3p2JvBGsCT<0Cg1J6R zf4(8@9Ux`|B&e}jdJk?whnT$tlFI`^*7gtnOgaCJ70apuGUo4zRy}S&hXiuc0!e!v zN5`nV{QP(lNBakXV-Nn1S^MzM5z)ekyAR4v$lu>WIVbo(ez;VFPKnoko?g&>FF#bL zGlN>1I;t=LIFv0uyV3_Q@(<^1r(?OLm^8C1wopdwCQ zO19E};%x=^j|lSRll z9L+IdK1dW(31O0QJ^XFq6vMV$(lBnL%BlQ=fT12arO=m@!_%_XtV~%EM=o!H+EzVc zMRqVBgo-ucQ$8k9|Gi?EjDgW6nekY)1+sFg#$xji`C|3Oyz{IA1iVIkXWZAS&3>8A z-M9wNaptyp@q)O8iKdzs0C(1czWqPap+XPHP5-J1$B1I$g&-Jv-1_bfbrb+@q-MR$LGOvtr6}mc2oyZ(sjHwGFSoEWL>!IdMQ$9*i_S`9p#K89u=O z7piUDId|fpCx2>UKGi*)@hQD#C&gEpF-LzCa{YtD!=zfm45YyaL(<14@AJK+{agS3 zgrXRt5wja?*{E;Dzr7venecxPpaP&Oi{(Wh{~Z5snpC=fE$A8kt;Wb3-Y)%;gFTJ$ ze-gWY@`rH+SSYhgjDXqSD)lE}sQ32uft7M+vA${j5J{y z-1-0d$X~zG{le}ouj<{q!Ek>y1XlX;q;K@b8bE?yAgQ-b>^Fj>DuI?^Y?YCyAdSy9Uw?9Ee+=;896HjB(Fn+A9ACOSVp-`SO61s zRB_vz(OnL>alTnQn5Zw33dAAhUDEyT&VHf%SgfuUJ(s1ov<%~DRN z@>~UuT$sYB2Cw*iFNaEh`LJe=*X;x(B-D+I*F`?UHWA)LlQ-F={;UAQQ-yG4nYxAO z2EP^JVzt@=T>qtKQ@OtYlOZQtav*cXJZ*5dYN3WA7H8YQp_&e_gEfV-MCsZXECwgv zB2yO{Yh~DH_Aos&6a1gxv%f77)mPNZ8Vel-m$)?F$>ho04ae@{v2qYvMWsB4kaEr- zGTC`e_Bz|WZ={7XhN8vo;aTcifEuuPRmfW*{oX=Ji2i8+vBPJAHoh%7KUE> zcPT`SVT-j69eNWES+?`-k}o@sL+TB;TTMbD3oJ~(3>j5!c!Mjx?3$my?UVpY8x-W^ zVnptQ_LVgq)!44zxk*4bvChnfxuK+9+lmR0xJ|>pSq@>A_+@5uH3i^mV|;q$_=T&` zUVTY)t+s(0^?sAC%8qL$068S}nEcuIk|v8ik*3qNY^Of7^-gW=LT`P+f z2uWU zJ>BsNcU=n2_Hj7#X|UA;XyTWMT^FYA+fg4wht8fjG<7(%!X8h|i!6sGNT-EkEGeAyMwMq-5*mhh*#x-d zd5SC+yzQ)hc6F0&0dH#H)p8x-a9CvgFM$2umPj-w5$P6U1+p&+1SJ!4S}AnGDjR2n zIy3zS!=3z!&X0SW9|rDTIb1AdZaQzDTR}e8$z=O~1r6u4r*Ug2z;AMZZ^$9r(ae22 zp6**03el6{NdWFB?u8k zZ!Hbk`aGq{d2Vs*;XD*=6SP2H$1--XBnGdjbZ8eiXl)S*Kac+XZY){8 z$sxhw%;XB2O1=z2oVT@HI&BcN_NvhgW1+hcIxpV|LT>jqWJSRuO)fI@(R4dpu^&yL z?@Z0Hn}V{XUX;}hBJF}%Z-5^3s3&`@meLUahTGn>9f-+N{ zyT0n9+Gw{-nQ{(MU2xx}9P79RXH1?Waw48ydQTE@7t=inS++g!cbuf-@S5`VRQ5A| zt25p={7C)}^|jdVvP4DOI9Wu>M~HY6zkFF2>R*Z>o$HL*NwEU1)Q1meo!8hp=Odq4 zER~JP$;+4SM!9L24kbAs)M+ndzb{?#y`d=E25o=J06ZLJcQlkil282ZrED}RsJ2~4 zGmxelKK^mCGN_3y?Dm(jdXZ1zjW9Jnf38IV9umMW#w}g6R23B!4F$y%f!qrX9B3Ko zonyXcesKML$+~I~ENoJ(6D1LW62C!H(+lV|A=Wb z9vS3B%t1_pkB_f0-frELv!rv!y?!ecf3*JQf1Qwj{hG6ZxRa*kG^3C92V2)Q_6t1R zKA!aXeUR`Q*0^x+z-L<-^c!%2gV=32c<{S_1pHG`fam}k96V%jYyZiK_~HEPhP8hH z*PonQ_-NtaVHCvlC**wD0tXM-BBG!_VOkX@gj^c;lBKG8)6LQ)rt1H?SN)f63sl2@ zCz(0}(Tr5H{C51OlZ?8-05b*ZtKQG|_J)&><@O6(-(UADlhX$}mW&hW=|2<8gUmn);2%A4n02}<1 z^FJ=pKb{4|Amj?qoU|-_{;J?xsUY=VtM%6aZsjQGdtUh4u-pFu`3-_ZV;L+CvNF9o zpPsnvCFC0XX#~-5;dWknl`HnA7nSkgFaG~`{{Iz1_^~pL!HfVa>n$|nqox$kU>nba3qg_WJ8g=bo_ctA==vxjck?&lRM|jq zd$Z+d>aEwRz7Wywz_tvV4@_&H@;!%m`+BF})Rdz{i;9K=q3OVdjd90nJ+cC*uF%NO&Dy2v4-U7^6hpQ+6lznwk$@&Ip9%PQF9 zy}W`#9jl3dBW!Ng6>EIob*yk^+WxR_&r1Fqykrt-v~ENBH{H~Q@>pQU32THS`b@sg zyJ%M}(m;FmK!y3un>m0x*5pzX(169w_lD$rd$`@_;{WbrqBDOZD*(PrcJL|&j&a%E z=~QnS%CK#aW$i+ct=+=Ft_SvRLapzwbt4V>Rz@d9e%ZK_mI<5RrxO%FnmE6f#>%a@ z*x*{k{2=5k-UFs zNqPaeKt3S>6d7W5UAX<;XzwTdqH@cDq0PA!LPLhjotgKH$CSu|BGYffeH4g*Vck{u z)o>vY#9B5}vIX_Luv?~CoUxCCw`Z4AR!&Y#d;w#EJI(uSWA4?vSIbqlMyo{_Y6Gtk zP8FSp^K&TwAzS}89x9UvZaGPmTMvr;GdY@OWhwJn6|FQQh-NKGN=!46en7OCrzs(H zTydohWqN&!+pZ#p-e6!3SfSNg$XlnlJ*uz{zF`@6KGvkaovRlg1H9)7Vdp8S;k>X0 zJNgFDOoLZy%LS`|7qu$SUF)a|aA+lGBY&XQW&$0zt5ELDi@O5-oX_>L$Y4J=>pBg4 zMC)hO=1=;m&IKjgKQ2czitZt7MY%XP^_(6f5UIMeMT_e-d#{mANroReB@nR_~Eu_rR{{5|uXOn^z&{Ykks!*3t` zA}|2ijL2sGaT@EHLJ#NNq)D3Fj)nis&_Z93jFfB=@^nS=&U>_*nEp!FMFSS7S1Zp! z_2~S@m#vw}j*#}LlZ9<((*6h|)N#%cHZt6(-y%JMc`x2!HE_+L^W*2iPYJTkH69U> z4a>n8WVO^$oQs7hOiJ@pTq&llxowuRX-=JwO%>P8kaKDg+1sCNkG;TGvnP2Czstv? z$CzVF-XG>+l`021V_cXcOOdvn$PVCWKOj5!tI*5HXePSp54MAq4Sn9lyLLGM-f8B8 zN6IN)8CjvFKqP}cuMFT@u4POAU10&#x~6#r%t5Y~brKEz z#}o4aa}*#zI|f><41@7;k2@cwfo~W_;XyLzd(OPz-^Ut+;AU-cp*-|-nBya>0DWDG zTPj#V;3YIS{hV*#ay}4rH*a{j+M-=LRcd*r0(G`71}juJ8ugs$pVu&F{t8YHZ;O}x zrU`RW;fGm)4cFZAq(0PRfik7tDCIl_8JKp)=^Y0&z?`qQ76o(qfD6r^J(-4g$aG9@ z-b<>$9yv_1L~+a#g4PRvy@D^qsK0dm?=is$QPGcV-a3Wtm6T}?bv+#IpS)wZF+28s z4=K~z9cG(SlJ>NcmSJu?GGzs{MF7h5tiJon6BvYaWq!6U#$?wHj!3OU$N`~$1HixF znH0TosI`~8K~rR$O=sIYwX-Nv?lV}O;MKpb_FLwO}0p% zsf(!_HACRIsP#S2Vq%9@4?mmW%Bd5vH83c;41FX7yPf++Ry~6UA3A$sn0`?w?+eXvKnrcr3W?n;jIEaWF;y5{BDXd4azR zLk7a3Nt&U|6V@@~k;?p=$^u*`jZ@BQw=xvAoe~c~ z-oKi={SzWbNOcLlfnv;MyO#9u9Z=?E!Om62R5+hb)y;{ew^M7Jyg1GtgNykePkmxe z0BPPX%>l)T;er^b{nW=1WW_1e!|9j{BFjIcABCGH=kt?X*WZUfh(MGBtm)ytDD)1q zyikM|T216;xdng~F5Zn)D#ThUyzx%E+vRUfyMvV_WXw zZZ)hokpA?-1sB`nidOxLUy-Aik59amL@a;$2Pv6SDw*@q8|5nQ7$N%%EoU z$mDg8rQ6$!Z;G?a-o+Lr!zeQFfHU9q&+#|Eza11nT0GyKwypNDf$^-=0@x@t4CPdT z${#M)l6*mt`SrcWHRJTZzp*x;>CwnxCivhP8s^B14<W`_34kIAKH<8{fOFO0ip&Ys0Sa10qZS_&uQi4DTJ* zbba_?_VN>+u?sNif-k#56{o-(=cCN6aXqlE1N_iBye$7iWV{32Bg8r@yS<%P=?T}3 zLX{bc&H3c4t$NidVlCD;miETPa3(quA;$16n6+9wH4Tk|yiI9A+H2@8;qJ^G3JQ`! z*e)`WWv`ZuWRQZnWRRqkw0!+l-tQCRMC5t{{Z5$E;&^es!X?!E47%i9@Elz7$^XUY zdK?dBneVt8-{N|lF8iO$ad+!FNJ%uDPPyRL7Rr8}kkp=5!L9z9%mk;R`6}O%YCY?w z^}B8}M_PKqImSNXi-XXb1k z&G(;XI=?xjfu;oGIYUB^>e#G9Z4R>!TrUcJ%SkhKg)dw$Amsw^G-JiftRX+#oP&j? zu{{HD(d-WFjpvaH4O|6U%uxhYJZ;b_|Fz+pS5tqO8*gWGW*iC3khaS?G1P zr`F_PP@-3r^+l_g;%B%_#XE2Le2izfnwixDC9&&e63_nzO z6VB5s) zhYQ5^F}to{no1ueJ|E*ww6@;CYggFDqyk%#`dcAQ##BmBIIW+nMf?Pa2VcRAs!0xS-;`lV?Z~0gviLPK?z{TNmVau*+qbp2H zS74n9?al#==(s`^w+8Ln0pSbC+x^rdH0 z<$r7ZW9)tg<{_ZBLs8w6hNZpgF+#Y)Me=#ZU#~8~ggIH-`*q+8mT;_rWyr|mC&;q; z!4b8?ZL9k~3gmDsyh_t<6{$v=oQU#*LsPL?B*i5Z!|?H`x|6<3swp~han1+qs#!MB zQdi~$rCpQ;lP)o-%9Y>%SBk*7fHu!2z<1DeJj5ny|ME;bywf6p%ho;Fbz~rcZb)X! z%lG;`Y5C?t&mQCT>_j*k{r|Sk@XE_)@#r|>d{-UTddBG1qY?u}0m?kaov)POcRFI- z`cF||aH0cl&#w3}u>AM3D%pC%5JLP!${NaU90I~uc#N8f$4N|b%^?;_>GB@wjW~eT zN?8rbWPHS=$Yd4Hbt?~OGLC9dZBC+W*%NY8IX(^>K zKQ}R%EYoJQReNF|*(ev;sJciLMzdxOdfVj6#b+?7G&`Ti=vCS|OA=eriW|9?I6s;{ zE30^Xa9>M0jQn4_(KUwX@}Z+dy$E0g?-JoR;|0>gMH$;o!S1O-wnZKAxqdw0I#PnIRHVb}NcuZ1i>7EH=ttXSG)v0=@iqy)WeVqATJ}EPp;NvHsjtI!(jD zp+=>M)x1+Ji#r-DpIAa*7ve$Nep6}pl6Q3P&P{i=vex^8wM=P&hh;&_zD^{G|E?ot zi2QomHbEq|9lCvb>cY4An6qq;m)NH?Td%NFi!`2S&X00$-{gy8nq4sAZ{SDd@h)*|NA ztCll(UudO^B+H4lOn}SGXtw{g+)TOdD{Uj+hM?fkp}jHTgs^a2YC9MY8gF|a<7^pI z(uiV4+;pj&xneyb4iOblz+Luw)F8fg-$+ikU2BpjeSBYbW<%)JT5*B>JZp*VupjOe zQZUFQ_d2?Ph?}O=M2Nwt4EzO@TM!490mKrLfsTL5)cSr$!LhJJXx}R>tGH;~l|)^T zW^qfe!1B92V1vHeU#J<{IF-iRh!j|quX3BVn7p;$3XaxwWE6g_S?O&OPMx+^m%X~8 zMRqtLYstJ!hZ0kugJ*TyrbI^4Nd*%t{IMHR^ic2BGM_>w;+!ui?40nlBL~jDJflUV z6&c^6;5Of?``_5=F@p-+V#C_kuMdCnTP7xp;CXwLTBSQL9O{nUaZ2bfb7!<4HoJp? zM|G?CcQi*G*BRXAlUuNNTf0uz19XEdJ%>qKO4~z7+b*^4NpotUiez$ODb?fbzf4S8 zgL8+z&(E)F-A~JIFUqQ@?Rs6%gh|*aySs7B_9UewBT|i-g|3PV$ONf@mh{DUhFnHO znQ`%^!9XCq^q(7dRL-=`Jaxq(x8^ktvHdj|2}z+h&^O+LOHQpLgHmt!X%;5y5ha29 zE|qh~gCU^F!Ct%rwQOYJyg4Fm4a7F}1nA?`N z&F18}uDzF!&}>t%%aO(q|5mR8v8Vd7GDQ2b1-E1Kzz!|+~ zv7>^m_w2KVmxpOmVOamvQP^P!lv_tjaDtVa=?YJbp?&*vHOGG60@ZP2>uw2p$6G_#OV0d zKSjS7GJK$-XqT`?i(MIdxV7X=Zyf?t8sq!-Y#$D13UIm~UL3Nz`}0|iekXNW>Ux1E zqPbL#GfAf2G~VR5!02hyz;k<^y~!m+Rw+iAmEEY^;d}coJPJL|NMj0e{`Kqeplf@< zk=T0#_u<992L=pYg8sBnTK>0%s@hDOg>Ps3gN`OGWc<=HCfMY@R+TJMnvz&)N>Ov z5Ht}nG-ih>Fln)iE7Kn{22m32IQT_eQkZf@ebZIV)gx?FE1}n5;*FvJfVJM&D5MNL z|4Or`T>4qxI3Tf%NE^&rbXC+f1*`E(^;(Y4iin&w&Z|G z`NnDKIim)Rf3y6k@6}t+_X}QpN5%L~ht(S48f$}TkcP;(`~}IOgjMiR{VK=C(ksvq zOpb%ZBhO)1D z2T1|G+0n93^)2`_h_n56o~UK>PV@NqYi6NY8GXxU0}amUs1u>LC$DaMzRux<8P+Eo zwvXP_{hE$!DQ@JIiQZEnhn?>5?fMaXh#5%rx8EU^!Yx-3nZ6NX!5bLVp@#GBO)Kb`izC66kYr~Ma0DV${C zobPeDRCHoFnf85h#*EcU-om-7o)9aY3Z_|X1{H{9ap|Ucw<|?js!KiCT0`AdKVe=M z506vpmF>#;lsbpU4{Ts5EScs0);av{P{2$KzdTOhmByU7%ZMo6Fr&D}o=pPd-6;Q% zPDF4?D)Nb@T_7XG#Mw`$t?DJdl^c_`NreW>R0Mab=nUM+J8fK~E~r+)oI@zkC~Q)( zFOybNyMhT0q+PvCnaKI87eEVjrdtS!&yVio#L+VgOqEBkF=xMxnF4H_3T}_*OpXVq z8je@??VUD*@Hl?9j&R(q1@5WAuEh}~bhLbZ{6z>KI$b&BW;KXUI?s+LXLpYeB%Tz! zO?e|1ffjfB9i2}sn2|aR$X!^qUE-RHZgXVxuKM&SnL_4NF?LZSpmrC@V0(W~`SoOx zb4Cfjaz)3=9We4aROS7BmwC(g4K8Q9!7;s!iv~U%TtccRtu{9dRCg}IGG$$%L07lM z$?w-)m+P?}`V$9iCftU|1vY+`dCA&u^X2PhD9$*GE8gtQ+Q+K{D2vJ{&c7~I)G`)H zk`Yd-fuutRt2@Gvt7|`6tag*?KW3yT$b4_k#MkH_@f>=upUqSRn*R~}+xB8TMg>BP z-ty83++VKWNvqU-CZs(q`vh51G&mfH%S-RZkc+b6qHMB|!NtD|5QXc3>(hPK&ingN z<0vj8w7zjme{kC^0s|{UGP{BQev{|PaC&3}^L6w;^U?pNX1qDtjqOEp1a{Qa_pytNwrd4XyS!0aohkO8&j1^lGdDD~b4Xr#P=Az_TOzTvYhp~tDz(+UdyV4EZRJVp9PQa4uVph;K%??P zCSjf<>(FFa8Dq{$nd%#R{sN^$zc|Qw#sxoEuDalexpu^7EA-5oc8+X}H93;(Mkz}L z1`(Lzu4_EW@YZ1BTfdU3)tdc~p4W{hU5cmAlzFr@?BX2FYgMVeHgjenRBTXR*`$3} z({xfd<4Z%cDZKslpRB2HF098mbJ~bMyl2T1?lK*m^*^#Kwuxh!WiZr?945P88d&xsRLE?si8w_;)Lym2>A28wDVa2HW9=(rssz2+7(_(uQ1eKBwvKurknWYg{9-61r^+&Tpeo1h5WN3B}O9n@Nmtn;y0=_VsU<)zWBGH8h?)JxZY( zd6hiqy=tcs*_g?36+*UkTT!}o^F>oA3Zv9nO(!KP{C^8M(UU-U4vp`yd41TC$N$|) zkjfU*+64q}!tQW+bayL!wfNkEsCidvkaxL> z&xGZ@&UYA~U?tpP(gFQQ^2;1Yt;i}g&Y3j6^+LT?9nUpr!*Oeb=xpY=Rt4gdO$*nW zeQaFDP#2dL=7nCz5gj)7&L%YnzT7Am6@|u_>2@5TPSP3Rq?!H7Yk)Pa&b+9AR!SD& zoH9M1&cA|c5cDv@rjNjIeF_5wC>maxH|YDR30x_{xvh6i8_+W5BwK+yQT-5w2&QSgKr`_v*HShiiw{#ho%|rGiyXYJ~0Sm9PDOP zMhOZj?%(8Ce;UGQpjP@GaWINM%C>I6Z@l^lUdY%{KKChd`>lvV>#ZQ#501PKQY1^5 zA2p4cDxSthSTGe*_$E-h95PcvLKdZ?5N!;E-YY46HZYAAGBO+Thwj7^bao62RmgDZ zbe%zj1mCyZ-q>s3sbF&bxX%<)L{xT{U?CBqkixH+Kss|BsW+g(>n*iC<`z;kSFRWE z_b9zBr<#eq@lPUP-JvG1efL2DODVopv)o%E-)Y6elsK(&f;U&wO*tyrYV45yVvipP zb-An6Q?_BEbBS=xJ_JD*VR;XQP6wAXwMt)04M#p(4D)3!_1QAI*pbpa%$!Y0``2oD z70+Ev=Z6l=od^sy$ISHW63KC?RZNTuH>Y_YG(bk3XX02!KvvqM^Wyml5M~OKWuDFG z6{mD$sU6R4=5X|9vCcQtpmn}0?vYP_G2X%ns{VSMQ5yRXy}D?yuwPz#t(a4JgjqA} zE%8dvYKV-q1-gTZxPy6NpFOt&Uig7Fa&MpebZ5D4jg(Xf`>}JR^!}%)=wvqTIZ-b! zNQTRIxmxpu2kPU(6l!`ABLqB?42XersRbaX5o1c9hJ!(KsNQ`YcjHoqEbiQX5oDbq z#TblwhPJ69jSr43y74hWhG3;^S{A*=M3X);rg?s8=P35Q zu|U)a4T_${8A6w?fq~?q>5)d2MQKl|n=e0|HZ{SAIqwJ>N<_c1e=1qEZ>1@Z332VC z(7BcmLj-B7Sbo5`!QI?RziT$!$1ih+ z(>VK3{I=6LpyICATW^swIb;GVWx%)W9W8ATd$|XNkf9G~~_C_@h0;EDJd(!}q$jhlwmMYGQ zF|AY^nrg^Od=PwIYzr3a`Yg~o$;__9AXW;bv0J5$B==XG|Sd8=u=VoblRS|4Dp1ZQXh(+stukWr@V6h=_Lvb?$m$rYoOc&X|@lOw)*) zu<%Om+F2jdpkCuV>^FORku`tdi2Juk^Y>3tGwSO1>(aWFD@L*`fO>YZTcUNr_HD%1 zm}s4|zV<5zxB$8qmhp0(t>K9*uQc9<-j=toE23}I%0Cm}NY=tRN#$|A$S_i< zZa3^8FPM0J5J@06HJG$uBvOpWSj?vuFk|v8aPK=|F}^k)xN{#+|NW? zAI+-<8v3;VLC^dzoB)Rkmp7=!42AvuvYd|-iJhGyEK`e?L#sn-M^w*~GQOwbjb^xZ zTvu2Ae4dl4)hEOdjF&36*IN{b`g!W}Q_ud<%)_kecaz2-R(A#NP08nfhqx_ z4e#Km=*|X-N8B1qb-3JDtI%mA=2LRBuy0`!ps>3hnucCmXC4YkYt&?Fe58{KBtMFw z?fs(CE2}h=q}NEO4t-}pj_KSeR9ZFQiJbgTV!r?3Y%_kq4T$BjnWA?#Wnw>g(B-=Q zq$OL|qAq)a=hMXin&+5NXtFqJTjMm1xswVo1&|h)JhzOGQ2*iiOygqE6x9r=5;gmc zr4)0b$!kkVE+#v;CoS*0 z5zx{^-sVxn@1}0*yv3lK)Zh+Uo+h!b7|t0XLlTn;UX$IJ7iAGC?aFJ+NnAO7;sS zp@K)1$yl@Atd{E5QG1@-g=>~II|-qEa22l)Rk38A%86@n;TmJu4Xvr<^LG12_P-7L zuQd)}L%8&f+ITVHqg$BNni5$`hSZG`Tkf%yxo8G{ZbT&Xi`sIDN^&=dhG1n!r|&7o z^()PwV2Jk~=s|kuLoi5P7GvfP8*l7`D+b4B5aT!iC1ostk#|Iq)WRh6e9~{6;+L0U zTg#WU^I=I}_v%oduSON5}8E28oa*&ytRPY94Lw7PhoC?07 z+u%%RoZcHLXa+MPYJs>{K77>Vt+3hXpj`~)`_qz(wxjBZjihK2MQ@s$dw;?uB)9N` zNxV66`&lk$eDX3tASxP8pvmtbhbl>*fIuyeRR7@v0^YQEAvNphGIZ`^Nsh>a=;< zKCs(H48IgE+YlGzbc#pMo@3%$LM)1#x#=p}UC3O5>K&E=pT2F9X%?uwdS~f((@?)$ zYrrzEf0&28^XX0KNh*iFjH{hcr>>9E&cu)&R%@3wK-oU9<~!xa6~587c72H2Ay7!4-4T(uW-GRy2c0A)&_!sE93 zKE;k2Kx8E)gBCGy)jy-WTdcLfx$1d~lb@;NPx^#hILz5WObJU=!+BM9dWzBhMWP#! z_J^plTXZ;fgso`p?8X8-|MmwZBI=9!Myeh(xU!C@Nx1t)iqp0*q>-NUir{e*^12ap z#lH>{3xku6N!__hs{$ZrX$gK_jDV9+pwBX0eV-=RJFOWn=?*egTu$?LrdZrdMZ79`jrLPhX|VW zJ$-M@+(5gs)%+hzQ$yafZzr?p*?dD_ZU!rqXc{DxQ5yY0aR(sUyi!Scw^c6VZ`6&V z;#e^myI6}iRo)-srg$&*OH*GkPzf&8(=)OrPfclS*bi)RDirgAj&&mw<^`UZ*1 zss*mHm46PSTXpPZKt%5>KWq6D{L(M6j(OtR)zT~UGxS*%nz5gW{ovVkoR^Cl5z}fc z)g1kZ_^9;i?#g)G*af&$1YcNjTj~ZYpjouq2Yr@>jqySG(TQ2@UUHuxUZ#pxj9QQP z;raH>@qM4VMv#yt68F9tCO0BiSBo*4m2|*b+O;K0X&KO>FItTV&weWci+U?swxAhb zANRjmeg8*zM0-$01tpxel*L8_E=4uO>wz(=o7`yD%Fjo1c}TA&>Crq&-$Xe@_&*fn zl~K7%_w~YQ=pxE>>!hdD)gu<&HDFaQ;Re|@e^>B%km#}iWvSTyv9dJ>9izD0)0gz^ zF7S&TD=a&Y68AMl?x;!O)aG*(MLt_ZnA{F9E>s)rA1<5@Ss)ZM)|%I9E4d$E0Ef73 zXF+^shqC8@;nBxGYG3=-y(lg;_QmP=)-@}T+tEB|Gj@|&Mb^8@wgGm17zWA=ctN#N1qq?;endC zbkg7QmUoy-i>1vC_$|-}PZAl6jQOqbRYAS&tg^T(X|0bz3NxiyR*ft)CIsE4@S13U zv0a^IV9RBXxjkA?4W8}hVzlme&`xMI3$?rVh#=WLd+fsFB4>BKHqF_MpiCg2AUYj} z!0knkfGcZb%P>iwtE;P9YkK9>vI|ZhUV4pOSy)qKDDx?Hh6MyWYp$$MN`AQ6=n*aw zI&4YV{O&A0K-mtt5p-bUi9|S?#xVe9OUF542a`%+jmWzF210ZF6Z6 zyu5@0$aC+GH*?`EvdX0Tfs|REz_#JcPSL?r!)%v*_7>TykH7f|vN`W@e&CO0+|b`} zte|Qfu{**~fvuKko#%R+&FJ8-L(oy|F)by<69-SMxt=j6ulU}8`qOQvzr%7qK8qg- zC1tgL(4nWasd#~%Q;Lr-{}DnX7CW<4B3W1!lb=uHHusLN*xP-5W%n+y8^v*XiEk3n z1R;6-nkT4UUWkBsTH`^h>1`BsX-DCeM5sa_B)U?!wYR)4gwJuMV;LUC`$|4p@N?{l zn+YP4QW5()MvxL{uO`Imdop8xJTXOhykg5{9Ry|fT$|?IY>yF68e$ck&Cgu^)kW9* zR}ifFRg6k5hn_P3g^|-nPLKIruZySc_t4`}rZIWksKM(&y(4&_OfeQ#)uz!K?Jb=} zA|MTDl#SDM-X6jo>tu$vxJ}J+hiq(a4i)@lOAWy1UE-5oC`0A7Hum@C-}*NcIHNFr zK;OUfw^2Gfdl|3v9}eO!y2nKxmcg7>nN`Z?gh(F%N_j-r^KKoz#s=%JM0v-&RuV43 zth@vJ8Tu_(Tj>_-y-~f#Oro#eSCR-TYL>I7G#6H85h3Nse=8*ul$C1Cy1K&Qh7k+^ z8q|)bYSH3&4tj(ETSp5te9$7f6MKO&ff+RpDo_>%!=rB0)1EZVF?7Vj_+jy78&xBh`Z0g5kroM z`FkN9d7PiG*F0lFldN2FlcCQbDzG?Ue5Z|^EXs8|OV5#AoM`XWt5?%L+D8q5vAZ8b zc6{%@u)iu;ni;JWXWmX#3dtx|zW7F2cI$c?I)JTpq|CZfHn$BjvX z*ZUMHE-Fu_^_0W6!4d-6! z?Z-zf&^^y=91u^^aAqqtJkbMjgRzE^IE8ibSJ=*0#!u9x*v&U;^537gq67ChD~=xI zN1k9u7F#m7G_p!SdwGr56_r7*v%*(C zV8Mqu30H3JK9RKZmJE;K3I0Bnc?gTdHQ6L|nN2x(_Fzvd;%q$QB=yI=jMG*LU8>tI zoEt=3Kcn?+U66+_mc9E?-M_)93g_dSoV~j)T{V5iT$3yX`ne<1qekwS(O3V0vESsn zguQd{EtvA=eW&I}>WXZ~^xo9nyxC*E*&BlN%H;qKfEg#Y8g=p!F}x@9l@o$vZ`Plh z>HfMQ)1;*#Jg90SV`+3PjCt)p28s97t^(21b$dCmQzkpdD7P?*-K(<3IV|*~ zEk9Obi_{ zgoj7RugPG&KSRSvnylRuM%90$txo$dgc-PiHW#W}^hPVyi1|qHjX`gwz(77{M<@n5 zx=jQB`A!$@-28|9<10uX2 ze6CFs;*iC<>dU9@cQ_>%ed!!0$&dIlMmd@k6{zx=iL1amIKpc4^+fIW)aSLY8C2a$ z&z4Fx%gm>WRdJTNl-)MX6*LlLyO-`5x(_A@Jzp4!7LoXWa)C`w==TO&#Uz3aXM@;k zj*mIk4*{#TNPQ39rwqH^@80q`Tu!*U={5Qk3Z4%~9)E7G*_+t~_*Y7un9r9dTk@E& zG-@#p&XaqQzrEAPXEC6SS@n;xr>fB7Nnz1zvR(N+Rp>a+$l^-!uO+<{K>OxB<>x-_ zPR4y!QnC^agEd$2FRpA^uiu(|#ZuoI(q?0gjbB0!S3IwmmmqJRT#un06?S9(AD#P4 zddF1|Jn(DMVeT!k3%kS*r*2My`B*Tt z{c5d$nhuPNB$aQNr}-`H)>f!{n^7W(RkTet1%uk-ts9I4Y6>)1_3LH5 zb|6-+G^oH$O>v^*Hn)=F#bQniDZTQ9WQIsr)>PcB5I(ATzFBTJGvSq1D=gP_{Q?Al zdL1PKSZRKc3@s2jPh-wb3#&$BKalAmr0f zb}UFa@5GA1yZ6o7@TFKm6z@;{osMgIlsvb1MfyKEcBF*LtnRKId*1%Y-;l5mWi!%g zP`a{%kO-X8AE`TK|4MM2V?4eQwI<&ua#CCDiw-0in3?5D7IL_mF2Y*yh&1i=ss4fr z8UxGh& zjs@V!k$N-aJG>DD4=mQg20QSCt+@-83Im@x_8BR^tfyMMPtgPyR(K}e0l__Gx76OC zc0^~M8D_(B#nd~m@>qO}ynq=&!dtHH1?zX@6)J(1g4D7cSbRG8 zGp+89oOHvOXwF|V?u0Tu7s8Lb*53|U5cxbZ;s@FTh76kYi!9=F_YnB6>VUOQXZ(cT zNA|6{U<-!GR&tLeNiG&v);N)r%Gf@#X1$Mi!%1l5epDmVd5*_c*~F4huF04$mfiAi zVb_Zr`AtSii5rr<5L<`Vw@w=D0^7B)C091#*IE#_U21J3uUvhfvk{!MbW ztvWpRD^%`F4`IlDVQ_;fFm?*3fr=wcpz9x}l-Uu~8uUytvSp@K*7#Xrb@6d&z4l+a z_$J{|kgsE0Y3_EP`$<-T(7|l1vq{S%c+L~s)K1|q;A@OFC(`d3Y2C4BPoB=Jpv2Q@ z^fM#aiYz^U-v`+#+1_X?DqS?76itFuwz}oh5{o~^k^RE$jlTD6BEgMD;@lT`B0l7^LX^=cJR4w4>;>Y5w z%e?oj`!Vaqp-f{d@@(zGVyvB)ZOcI|3%z|ZXd*L299Z>zXWx9gC4WuN9|fLOmXeY} zz+g@9$Y58vPi^Vl@1^FB!yp$l6!tq8(0#aZ8(7hye*V5Yeu_a$dii}lb;0E`hdP%- zqAS1eN42iHjW4#XMU$%^g#*c0Ss-7AfV?C$aW&7+T@HN~Lr6K!g0t(#SQ&;H6OO;j zqlG_B3$PBm={Zger2yu> zr5|}nP>^hKWrIEMzFCi>%xz->Rl1B7xxn>e4W-(LnCChTO{n`qXC{s#{cn2%Wi=}! zAC3k`dA?6e5g6GCBi6xPEV#E#r2Pen=*-!mm1~#RD!CreX-MTFR7YW8Evz!l&Q!YQ zCEDq4O z+kZ?~5U8mnuBmjk106>+Ih-?*;gOZ?;rr1(Gw$gT`2jPNX))nfEYpZ4AXJ=L^VQK$~DMnU%>ugPLx6!sz-LZ0oSeZUx|Z6H-->H*8>mUg(LZ2GVABrmKuo zQgG`(W6K8a)p0m2JJ$=1&yKbh6n~LW98w=L^^sYpO#X-4LL}c6VZ*(-IOFj1C5MU> zNBR%F3GbfQHfG7O51TKb_n(DqOKb}$#Z-o-4t((H7K$TRPsfUEDFQO%%lj0l()+b# zp2j6Qq)j>uS<1<;GXG@sliJvlRY_w#wYyKPWYfgJ1$~_{?gOLiNr|?+kdahSh9%d& z;@0E=*T*U`FvRDZz8&2fskL9^Im!RFUpK~MTcA6uj0$vf@LxN=uQB*(R%UMl^WQ%^ z`3#Sg-18y+U=Qmo7q|ZWpxc3if4-Uq!N?u&X~wNO+H+1O{dRx-X2Z5y!4RMU~2r3 zsxyyGO!pc{N~7%G{AF`no-^wDWksG|5Fi!F78^mQI0*&La$8flw(};+yGNT2A z8VJ_|7>ECkh1t9c*hZ!<3e!?=5zj8kDA6s2VTEW3o{UZ;k5Ma|-fMzW8wm~x^o4t- zR{4BycyPryshRaFTknx|kGD+;c^xv~CEw|tmvmg}s!AUp+hL(41zcLg)R){s6TtH1aOs2uInXXSg*?1J*?ewPtogvW3JYU z{&&?w)h`G=PuQWXS`Yl*BPXvm*Em;_GnBr9pRuM9?h4S90t>E0RG#RkpTbaV%}*jS zCrkX9cDW1kmo5+KfjD@qxoeb_$k%ZHgr96lTAa%G`8E#pgZLAr%vM#+#}C<-Wk`JY z{uWe!$8G~duz%2Gt)+d|%}&@wf3!nF;E=U4W8HzsZAG4Z7YYwLx4TqPm`X_oVIbgc z;B63_R7k-z2p@Whj~ClKkKsitLtv$J^GJx5X(n^I(nnXlZ)(;e#;Fl_&}s()d=6&j zsoZKDI($O=*k!U77tP28+N161L^>LW4LU7VA#m{v<+8_R z)rINfJH4Y>=3*PNTWzb>p-PY_Fj%GL+ls%BpW^RcZt4go_rINJcAseyTKtb^8;}qH zPt8#g4Z8W4RieQZ#VEyk_lETZ>pJf;@qweY&QFtxdExOG@1OUg!#0bhg~&+#Josi; zQo$c8ltQDOG-Jr(%lz?Ha{^IkV2vg{$m^A9X=w~$>>-_?SCn}uK|IZ&jWfniN+4Q9 zGbRetEPz?@AvWgtkwpVmR?2S5_<{rLs73-us?c8>6X;J72qF7!n%<&M`}09F_1-8{ z1U6BJMM7l$|bC+(BZkA(&Xra%zg-@1$P4DU({FrNPv((Ryp@xn0Hn;mkv=(o7kI>opqaWU0apMZ>~X$?B= zW!$AEK4ry#FK+%v7YyS*CsO0J`n5ihGX%GAiTMI*KSV|4yBXMLc}D)_VFbVR6R&=l z^1M#Rc8Yf>Cuiryw}v1RNtR$6D*=vtbB6a1Q#zIsxydJvm+gb6LpizIB&!cy9_cc_ z?{FhCl+mob0*DzHi&+2!rQ%-V{Z_8POIfoqk`k6OIS%wjH7_{NsbGMHD1J=gE>h13 ztXFB7#A|{aGGb>l@(=N02(@gp`#J3hZ^=V&b8sf2Xx(2a)yOyaUp&^V+v|z1{?P-e z-dwZS&{;a`BEyDgx7kOx_P8G2@7eaevhUaGF4jh?%h6dTD7TLj_}a|V(SrVS36VJw z*g)-Y_?j}CCZ2y_ds+QOU%A14<-D}?2p0>psxIT86H9EKj~Dt`cP9wko=;hIKhh`$ z<(Mnies~4{(i=$g?uNr-rn7biN=kMox{r7yiL8y!{#2j#Rz|hNcD~&l*!Wgq)HoER zcqvgLE$;b)gQTPiNw+dsdzL<`jBII}66;2gB`P*$aOQ%pkMkXnA^O#}{zq6X$|*RC z1H=lvM|r!eiFG=KdC-!rvu?xHw5F(df9A$iRE~A)=LRy}rXC_i$k)6~2VZ#%DENJr84U+eeyzyoNuhkD5G0~JyPDK=R8FOaXIdc`>J_tBv zoDhS6!5cgnFt^`swF-wesJhPan!J8oIS$_F=ChS-+J{H`vLa$VGzYwGngY6;T}~UGhN<*ID)>a!Acz}(@q&m zx2T*u!BLfuvI~;a1?sodhdeGP^n`> zKHB``^t$!%F8sP8O!u#(b0r);@q0I#F-W8LQBjm}>1zkD47dO6l@S(c ze{`Bqzh{_}L*Z~gXk4hK0H);Yx2EqE)wwy;>eI2=hVEG+as8W1q5u&)>VA{`qgu= zrMcM%lk9!;%K;YxBa>m|$~+PjOk!FW+qv!W*T(~y&2ab%WK%dDjnj9= zD0FPq_n#s4y9~Zay~v4125!8?G}>`*pL=D3_vZ#~(_y{0PkANXlfKg--6_gImEn7! zz-%W~8MID8MP*$&uveLsn#zH3J$Nnq$xks$%2SACeYs9RLL$)Pj+(Iyx|zig0)6)m z?=W%k;==cIr)l?B5h>rfQ=gK&JP+3W;oxVO?k|_pGBSC#6ZtP$QiZ^nHjn&6wV|Q3 z^iI#h(?vW|!gV7jTK#+`=)p^-LGyL-IDbW7xv@w`>|6+J9~<5sn({Hsdz9PwFj7;# z2AgDi?r`Izy;aAA?sxwEEeRHB$)1@_Xubv4{m0Y3kKUPprb?YLU85idwKnGbdIeHH zJI~%=9BtCt&>K+9o9{XKH#ypR@E21JjhMR~drm2zKQqnNISNSYsjGk92zRy%(xyI> zd>ag6dm*e>uq^7t-Q5t)ye#_p^JgnX1%=NT;%ZFi9{!tn+khG8OyOY>8UQh9e|8~SpK&rt*Sn|OEatrhVD_CJMY_6dI}+X(~f8^?T+aL?NA%N`@WgaJ~?D=d4FY z)NzM2?FLEtIxdJ0&sLD+%-|W3pA%Oa)tXe$o)zbJo;pl4BBfz`sAhO};Pziy_o|)1 zy0^>|ISA&h@pb8BKw&UBgZ5%B=iy?h=MUb+f6T!6>n{T$1f~9z$+Q6Wb}-%7;)=E_ z0~N6&EsG~Q6NpMHgeoSjjKR*uPn8+c1`=RVJss-o>>TW3>L*1QK!BDnp6Ru82osTH zk=8KgcL498Dy3Muf{Q7TjIABKM6_R@apY$+VDtWz3aIz_F8FkWF<0ts4eA-|oZJ|t zLk3ig9{5ic)lup?jHt200hn&(A=cPMF)53=G&i^O)Sk=WUq+%{HSN*wGfsv@TF)rj zL9qRvEhAdo?@Znhq899ANjAk83|b4qAsjrjz?9dM+1cD;BBrIk|9P(x?-`*qWf0Lc z5lNpeNV`V@jgQLU5<)LNvjto{qQokL~Uw9`H zEKj6lbpyqC>02xC1GEWunSSbz`LEAKE2ga}#UoB`?5t^%V;Vx~KDp{P3VB+Rouz z_}olf-p28K=9u5(xXX(%LrSltqy^QJ_MdCh_ip6~1L<(|cI)#I#OD@6UD|H4kw?Qs zBV5yUBf|WP_BV7+=rGR_e~$q{^WT#8!DciupXb#}F;C}xr&0MLIFIHY{Tbtj4r5+S zpQ@Q+7|oPu@LTQ7kSlrq3RQ;L)>c0|kyJSPft}p%=%*wW;O^VER%K&prwQ@29$P`y zq#P+i-F$}OEABGZ;x*f0qr2>n^H1kFS3>@@r)Il%+q)i2kq4_;m5o$aSI=#wEi;jB z#Y;H_YtsbXZimE>1p4gKJF)yW5`o`j+6}U$Bx@|KcTnG{$-kf7V$S%OCQWmkZn)AQ zJ^aRzG%E=z@Yv_$^MWELN0ldN~KXqz0i!tZorrk$PWGU+dCD!(Mj zY{rR^AQF?YK!`kof_9*#|$K+JuxnXa?^DVyAPjd5QN zuYGzs{)9pWwn*O~@gRl${kt+>wi5vB9XPVQ4D(jsSfRqY2`pP(9GUFvhD-Mhu>$=? zz$$-}{(n}4NhmzL$&q{7Uss0Mc4jS2w36imeMXXxIt{W~Bc`6AO)=j41$x2xZ)uso z927|`pZ9MeDj0ueIJ+g7gaxYX9AT@YCF2kZ_zC$=(@#Drx!f*KK0zFL-dpk)kn8V* zlL+kQ98UvXRgPMr@K2Eu{8-5pBX&{zI$9XvNhDlm{!-nx@Mf&vvi~r4LR0jWq@p0bgZ9$#VQpOf4SG^6-4u8!3 zeFuMyv#Rd$1nFDmB_~jfrGbAwDul^N%Fwc;iuAle1YiVM($nJOd@(z2G5Soy#AK)D zC{%ahvF^NU;)un0^+7s`cnsNa>kCX?-r6+7sv_!gZG6=QLz_eRf-hI(n`kNAscO4_ zM(pdJiP*mB{XqsHxO)Q#?ijtDHaC;9?LO##drzpHe|xfK^)YWMlql51C7Wq5OjL2{-)H_2Q{tF# z9hJ$r7AXpw6!4Uk3;*eQU6nDjE(bQQC|{zRfw)Cmeg2P~{D0YsWAB|8u`&%IGQTIs zev`;idS=fsXI)waIGwoe>$y&40tsxAAfQDqur{vfF5I8bt;hj*$N89;I6aWWZqZe%Q`MY+ds_2;Ct1w&Qz@w3EbB^!k3MqPlu&i>`4Lva6$>ph9GG?<>G!2;(vBc+INcm@ zTL`D|Xtg%+H#YHoUCO7b;{K`bHH@YK)f)ce)R{y9Q;|7$1ic~94qwQ4Tr%Yl9W3k~ zy@2ac7p_EHlDzAm!dW4PW~jM7$I#PlB$^~z3Ohu^y%1WRw)hcLGZLMZ#d!GWc$rOe zl?+m?Ut=Ddi$TGGhXu7&MBS5=&N1cZ*E>E3`yueT73()U(Te2_vh>YsIzqYD9+*PG z&ud3CR=$V9B(|mdL=E-CB7%CGV&4ufe=NpS_q|6}=xQ=Gay;8T{WVGrM z5JvnIqhexEzBH=asP?{mX`8bf9{Y*b;j6}+L~aW5IJl8L;3wkF1QPm;M4=Me(}L4v z(vLELgn;vL83GI*c6O~!ZB@AH5E{``)bA5}?Ns5eqR^}Z0%un;G+qbJE(qB*1+}b! z`&16!DljB~zUPN_eZA96>B6}fLVz^;g)R5?Cz;BL_-9vh#h^1cJGc%PY(aQUcw=D{h`*GT+CtgmLJsH=C#Uii zly|qR_Lbe{bdS!LNc16A>7_yrv)Ptz;6D+DjNU&Q4okE+kU zk$)PCVkny6DEy+LjXMt0Twf(h^mUe~6I?kaDVovksAgrh`9*j3(MIY#sA2waDIgMW zACU`RO;5~xh81|pTj^&P1?V^N2Y=a~PJW~+aTdV)vzJ*b>HO22xK(MS=n?iro8K(I zOAUdg{>(8CMMQNqc=Z;=&Ge0V5($lt$72Q2$A@XAA8F0t!*rJ4OGf(B1xy}+k(UmQ zv)pX;$My*5{A9K-%pTo87EBWBD4xusD$Zvh+scEM{>a^O1re!eCG39b3;^F9gqZy->+LmS?z*eeapWsMX8LEf&(4 zbWB|4?O%E(^IhRE#|>*{uke=DY;97vIx3HET`GTD@JSUdiDddYceu1-#noyux>knH z?~SZzji0T!u4_IVpFsMXcpVyRXczz+C)efxEhHL-km$Q|MEomv;OBl<$pr&%Wqi(4 zUbSpiLa9SWkL?XgQXR;=R);*WgSIgIm&^>U`(H2^19>lP30zgt>uR6o6y)uy8q-XZ z{CS~*%-6`eP2P-cX>zh=u0F$~oU&zq*Vx0iU-3A&4QoA-J(~ z6+z~1e@~|J^P#o~-yR zg_|Pp@6&WHe}!knN?o4ye?*I#edXrswB9WZFy_Q`0y!9u{nVRdv6E0;&0E&=lChcz z_OmrADk?!!MeyarhYxeD>w*VGRYmp%C&K?5^xujCg}F%MSk;U7xS49HCy2p(UfJ>lW@_B2f z*T(udv~>94O-aB(H?T}ic`8{3xF2ho=d|3lo{`O`8N*5kyI{)Iz;y&J2^^*S#2c%& z8%XibpE?a7R>3xiVoR{ahWp?cmpQ&NNCYW139e|)mL4O8@YC25Lx5v*@7}Lno!_Rg z@OLs~glO+?UNt$mc}Sf9jQtVlJdzB;mN0$tjLBrD?OaD7v+2ms^}s9f7mJ8x@A54z zrPA{`NDGO#>lRRDwn)Zj!{?o1^8w&f$|mE_jUR7%qKtW0wst3joXVOHCiMbI&#FI! zqvu>do?n9dPOXc!tlx^Be)sGm(D4Qg5$)}VYhze9Kw;5GA0b44hg(e@)d_OY zDe3OsIo{p$cCpTI38L;w>)pyz!s)9*&oklgJ0p8P0`bpI;S#;pnImzj6%Eo0r%M*; za!HY`m#mly8h*+TC&bjQa~lWWM0S%$bnJKM#c|QR@Ue%F5EkVo6H8pb;~0Nf+;(xs zr7e$LaY3T+3tGJG@;jGAv3rS{{?As8Pd8)VH`$93Z*I4S0BD}vm563jxzZYL*``7B z8_VMDzVpUKmr~xM86WZEt>|0@-u)S4kZPRuWw?oEqoy1$`Q}YnorE5zX-Y|`zHdBf zc(!3NUSM2eruD&RHU{oIAjM%DwQ0)br)zXWt&&1aSMi*#vL%eLwEN1aO8WMxAkuE_ zX`Ol-|zD<8GsrYEy+eiCYRBG0nbK*mI`6nD?MzJ}tm|+52 z=)5_Q0;*zcet1YY`T8f1EhQBjTbkQ@(YqY%vRZ{rs4X(5gWi@u|@%(IM%n;z6R22pS6 ziwU{cR&Af2oo7xG9ea7na4s)+?^9E}VOLsYr}}BoQ?$W|g+F+*WZyA8(RQZ7IlmAa zzT0A~a{t*RwoBng653O*jvzsgUV)ABKDmvNirD7$cNGo#G4f)=fOJyW4%Ls>9~pzknD|HPknck9_5uE4Wzj(Sn8danV;gb zV{>T>bW)VSZOlS+Ue+4cdlq?sYZ!`dQdQ>1Ptc5fAQ~oqNvc)Xv`@3Q^wlDYKag;H zevJ&xo*o77iiPv_=gGOV4KzZNwneM-^$A#0{aeL> zbkV~35E$g()tip*kLbnx)pchQHi>P6fJImORt}~XOz3F z@qUTi)c3L_t)zU6NI_56vB*HceH?vX!`gVjzP!8wFG4icEc@gz&1;i*zC$OOk=c53 zuhm`P^w(y7x{9EIiZkZ=QN1EY4NUij))I$x z?U@OG_xl&U0W0Zf<=PjM_AuE?@Z^{7tH*VyE8s%Dn<9jOhDB3LPjIW2EKlJ@EKRtm zF_p-*ma+8RF|w@^zmmJ8nLewW6ASP!QKa`+*Rd}21c+?&2%PT%g+f9PnOxJ$)_krY z0+tyBO7G0-m5i6ZiSiED?w0Sk$yaPN8dD1o$5?W_`PrqKBz%5=v50*P+E@g`fp2k) zT~VC57-3!Uw;h;L_3sJ~Kj&_>+Ch!fto1XiUh0l(?a}V&g%3d;<)Z+-`6WIa3j$6u zp_U6w^G!4ZLXn#AhAnS~_U{Bcg@;s6C(-g@r4wMuw1%DIbEO-RVS_LPJh>qp+*Xfg;6H*&d3&ZnJ=@u8no$nd?Qu*iEi(jT$1IJHE6xSFEK&1b*# z<+K~VNW-6m-UMvrf!2r}IF#xaA2RkKISrNH=$`wBEqUz=F|U#tAKnQR*rs_88A3zq z7GRRM5Xk2Ta~u_^N3fR}zF#(6b_yq0v}8|x7--lcex7w${_I-Gtt`~z684C*)r9*{ zfyOu|TTgsB4XW)b=5}Yw!+ZWb7Jr?OB}q0+C54|;__bf(={n78yCw&dNrl3k4f|POLhYi)Y%BEWEh7$=ma7L%FGc-KLVMJVsn|7SGuh~yd+5}bS&h@^ z)QRr8-F>L=+E?>5@#V4Imk3xF?`An|h0fhWfR`NnXfwaF$FFXl5pHXk+ONgeXq;30 zTKVaVo{-0$n1^3d7lf|n(mqP^#tMDCT!!CRib#U8$|Wo2Bf=lMA99x5-UmffwIq7H})q8^3=C17fzCcum&)C$tlbAA84q;2g-U z?vHm@T?@EuyMCmuuFOZ;@xtq5gDTfnsWx&F-Av@74)-DdK2gQ~(!`_ZJ{{Zm3$R#i z9f!QMHPNfUx72=sbxF;hMt{H%#b+DLbB135{w|S|Z?9v;VkfTaoB^29m3|U>Ey{B3 zwPV?Eo_&3PxjNn;_G81Px6nrYaz2p~WKoC7>1U2AhYy5QGeQQNpb}q-$Et9e|Mg_3 zl}Ux@W&Q0sCmbfJrQq;Mm&48))w&_j5K{tOz?3Xf>|;BDW9weX*Pe!;ckRmFoe`?k zildm9qW-RWo|j`=*j}5TDB)E*>hc6I$){Ee%waL${($?BNYSrg z(G6D8EQw)ulF6+`6S z0{5^7K20>oNVuq5TZS=AHMA z(dGU8-P!LnBf;XHs%Ar?Yr>B1Pk%sKJe<>IyJdx2w=%X-=cqK?fxkyaS(Y5J_nIS7 zRK`$bw1aVE)vF>Jv$*wLR=dX*hG!GfpAhle11TCyl*&xJTY#q^H1H{ zHNCVPn!JxGE4OD@3{A3G3{o>Ln4j=JvFmu`Vw(4nM%yK<90#!6U9jaxz%e~pcMCf` zC4?_Bko#dh#o4QM!&sizv$KFIOgf?hl~j|?31_LEUhzqRhwIy~m2dgIJ-SH4Pl)q* z4r9q(e&9AVL?AwV+J5O#`N4vSC?9jkZ|>&J%uIIUP`VCdKSK|_k6jgo+&+9XB|IxU zkR)f1CbKu*eV@`+4f5G-{8m9Ju+_-5HmAq>_i*z6kM~&A4!NI?xX&@)lv%2ipzOoE ze_6zu7+yT|NtR4$WaWSH7BNuZSliWs<(Oz-Xi~H@;g(l9O3K{WJ;ex}f?Ze8n^plK zx3g_H3Si6Q9}ii+_M|rK5S4su6LviQ3pnvt47^a{W~0|sCWYZY;;_GCEDy{u;S{g8 z^P`teLIHl+1(!Su89~1<&c7_=?*Yv%Ov2{lGM5waKcxD%aJ@gKS~taXj#VY*-zLGt zunS8|?d&wa`yT(A>ij0Js?tJ`^M6|g%aQ~(){AQ# zY(CFU9m$fyLMOwV(`qfyUiD@tzWC=(uH2*@cGOU zfQBC&*7cy#kUih?FidLGuPZ+1UuAJZeX}4M`SiRo5(VO?{X9qjglYZcK zq-9h7xBaf<#?#v$OkNRvk4o8f7q0hCNK8x}`e4hCri6_q2hBL(T~>E$>KqLyE@ALP z|0Y_q5qwEOO)|bZ3YwR^Zc$9ksV{|&jb!V+zwv`Mp|66YZ##27e%xyu?#%eb>r>sV znNOAU2vu$u1kTwEoPIR~-+16sa!it>Q~^-pz6}Qg%6T~}ra+tvx>UBRwH4pi>i>1= zETilAlH1imiJ0UT2Jon1VzARnS?_ISZKdGr5`+OiCfN2eeL)bV^UxooyykA9%%yr> zjh4f=+?8OYrXb>*DE9djEf}IydiFX?M0fpEcji^V(2+sP#$4tE>dw4$b9s)|r+{2H z_$I{4o9=v|34;;ml_viCS@~_^}qTD;3@mB0_J{#7l1rBgmwlTKEe zqn;Z=9~w%hzUkAek!AdX2yr<(II_CL6o0RW&mC8-NSoETt(SD_1wWmvy=X0z)d0MW)GUrvUy$b79f}vJEClpaEwkuKCrvHJ6Kw} zxB^|`VXZg?6@7kmf_&!kQ)radxF|RGO>_e5x(+JS(9KTuIR^LoD(dp@#^bLsF&>uA zcF-tJ2jMyCS391YaVT-DyIN4i&w~&{F>F9-CKL?H$K))3P>zo-MiHsqzlB9}Z<98r z*0d1XBW&itRL0Y$moIt>vD1rw;-T6wYEdr~tMf|#^Olj}`OX39ge!du0U;q>Ub&xT~{5EzCBogPUN-El*Y}RAu3S|GO`}$M)i~%sJ!5(g(?l1uv za!m1IK?Uc-@SYH^PAKQ9?MqWqwiQx`e3Ilx`wuh z709ahl|03GW&Zu~mPXDguoCRTYMxOP7QX{KR;*S3;II$i^H-aFI$=?_>83Kl`+_fR zOL)FHnAs*?Bzy7pe3SmU@|X*V^IA^exhV!%)Fj6lib0NHziB`H;F^=9L&!n@AK>@j zEpVVPzMd2zkvfzXo4ZL$4MUpDuLI(*myDg3SCChZ8FZVSTYKv^Q>`D7dnAQoVaiM1 zaO{zBi1pCN$uYnIq-loMve^gx_@lmUxUo%br`)d!z~WXWx571p4Dj|_0m%8(Cr+_- z5ZG5ApKBdDo__l&>7={eaP(K5KKj=wvQ{|H9i@nRp5=>0RhQqjYD)G!y>R0_ z+Q@w50j_Flb&@NJY+5p&Cy54`2+KTt=z*S8GHp>7_d&8DT6yI#6%Z`KkCZe>Y+0=r z#OIhjJAUp<^u_E>rB;z?oxcZFE_(p$=@14GmT8%V~%j7I4JJUCLfXI|18c)8`c|(}_gAfkj z21GhN)G#$G3~ZBi1D{BC`=)Mxe{Vdd*vTFKgTk`WJ3!l5LA}r6wZXT3Bd`7OA`KnA zmN)mmR&{S|RNIdExXk7r{uDM&aG9OjcKrka$z+#a_@`=VZFn_JQT8LXMFxfH?5CMl z98*|@Qj2B99!xjntJS&ci=B%Jp_g;=RyypJe45FBQ1;g(`aed{ik_QYeBX9K@OUIP zAMDz??BvKPz^~qUEWHwhm%x?do6BIGuhn%L>@M6Ao1OX!fYf?^#?X=0!4i7{^s2rf z|G%Bq8~A)0SX1`~35<2rf=5G%f@t`k`jb2(N-gW!FFd)gV6zfMwA9*9q&W5JTfY6b z#ygZ&mX?+~L|a+UOdhNcMg|6EhlGa^`Qny%+N9%HS~vtzdwk>l2Bs_$0S8SZ z=KTPgLW*&_;G1k7&%57SSnaUp;uDK8a#Qwb0a;$16ejD<`c(q+&Pu)aD8iih$ zC;zDFp#w(sd}X#l?i6Y7=DYM+u)TVt6ykfaEx@}r58HXkfwYV3u>R@1D?&(GdKL*} z>&TX>wpGY?rJa^S4(hSYCj4kf1#FQ&Vcw;A_?~k`o9A4G(jVIQU|`XNeX$i?^1x3; zqNdG#!QCVCU5Hu3M!I^?Y3I@5m?j%dqAFkSg2uW-9kAmzL~_7oH~a-ozt<-^PUACZ z?BEcvFP{>$Fy*}S?YvMDgCz)Dt^8N_=}M-ZK!5lF7S#(*y=;9cBCJHWqZbH=dJR0F zO&v%kzbDj(5I79ZiX4ji6m=}PY1RStJ9k%5aewcuM?zE{%XF9L7WlobRCXZ!P8>ZO zJUy%OMuY2Ip96X%wu1g4n5|5wPD^*7bMD?Q*UqJi9NR!|YIp-$UGD-#^Xbx}e4WF- z3CibYz2G1D^mLObFqC>ch`MC%^~}5`S6u0!k^W)NONCd;m<|y$KP)NawKS62Ka%59 zI`fw$wRKP``%inNe~b=G$AArg)Qa5hGlcu0#;i@b zq?0Koqb-6ft#J6_nB21$2wpEgQ)Yo`H@|V5*>E0Gks`833E3fz<#y5&p6WlewY5F{ zoYMRWX5FSB{mxKc<~+;H&5(%1iO^&kP0ypJUS;ZP1=YwnC1fapO$gGOzQFb(_dqS8Xj30?uKrXJaBwA#q& zgGp{>W8JoWJ(A&^F7fH?Bq&Lii~PUglWtyP(6^i-U=COPyF>}EF)ixeS$?j2)Q z%F+8)8##fO)RY#E9W;{wOU<=M6UR*QBHlUOr?r@=8fEC)G32Oc%k(`MILAO}wLab4 zY9LFl^l=?&&jNOoK+QE~_-9d0Ci&Jk0^=98n;g9bxQ2^NM(^AeGHuu=LtMy3c|0HS z3(rVO)kht?f9d>$%R_h7wET6xejXvU{-uiIMA-&PbiUkhFZ--(fAd{ZeWDJl8j@x$TbGJ`rdDD2BrF|2V$ z*kH?Mt5D|>Loft|31bK;bV|Os8B*X#eu8e`T|v|-vXe#gzH9P2vkK*(u|gK)y}M==j~ zcj)TsD&pHm+PY{-0CC0w*W`1_mDFzISc*Bh?dS}OW_eCNa^gY!Az4+ZbGGq(wGX%F zR6>A>X$dC>_mKBag5xdpj;-cmhINE^k&l3Z@es7pZ)Qz4GXS-D6lk0Q#Cz#bod0D% z#cfQt#t(@%0sX`*_dkT_fh-hzQU>*tWxxdzf)2iu6p;27d)ez#gErw}tt@1n=7tPk zz@4@#EPlxLRDhaemlW5-;8v z%X$M_e+koX^t$H8IywofYik@z5#IQQhG>)OMzLZJ;5=Yz>P4H+(__zB-pqsr9^p-~ zQpL&a1^?I5Z~TYjWZf4@OreVm=s06=@8xk~rr6q4k?!!G+GK?$i#&&M<@l@oDfkj$ z+w-!;a45 zR3vbd+RiYM(SCu4nPa?vjK6&TjlhG$Xzc{}O!ub;j`Qafr(F~6Da6iYR3rA5kn>y_EK<&VXqeL9Q?crTmYS#xeDJKPR2mkIWXS76Au z=PvZ@5we-2->0m(^FMOCr)0Jr(x zzu44!(Dzj{b2;6#KqD|E#YZKXH?OtKqOy5p$GFt>tg$zrAerx}X>DV7S8ZBW zaHvK316%HegDRK~?2&b2f<{Rjy|H4Qd4v1Ox*x#S_?*%JZY->~QQK%wp5(XxvdD1l z>fHv3`3!E2-3gP-TrnA!MDLaVevj^=(I=XvRlpncFCz8o3DSv~qTO0!FR=%Q9v zqxbCY^aK3=Sr@6i-c5$W(>*0IPvFnP5=GsaFC$0*b?%cFThknijl?^aD3P^Bv%xly za$cqbfx@il$x?6xyxf@9%W=j$2VM0geO3;YkbwBcuY>(0KI{zM&@Co+()>{wPWSjK zGbd_hX!v?-EMZY%cIKNF?A3^aMN{VJELY<$xuRl4g_Otf?x!jf=7TT9g*>Hj6EF9^ zl^(;?GiCcukm(EPRvU=>yicabaLpg_*)pYfGtFx8^r&^p@r_^2#9qq_`(`@p8SH>( z273Uv+5J~_%WALU*PiOt68TK+j%z(1IV($&{%;)&d_k!eRynd~JkJ>-!^emnoX3=9ssS~R(%9_E>r+fU|d<{a;5 zN0;X{H_r)s?D)1PJ+p8S{Qi!a7(de$(HRdl`=+rq&bH`HvQ3HLZdO)Qg-&ugs zPo{I$7&sX|ajoEe0k)4s#7)|SudBPtW)eUC3yW_qx!Su`P*%~Ma3DuwdFAN@lCOC; zi(k*-({RFPP57;R>1Ux91pS>Bf_#Ly)K%)aR- z7amqAmc;BAOKolKBSP+Gp368*6@-}Ym)ctBlw)Fs!yRr%JK>7L99ztrxDI?Se>j5N zzFrPzP;ne~H>@EV60Lg~VgEm0$hd*yJH%)DEzI_?U~7L!BzR*>oMt)Z`v2t(SniPa_Z*^aLz8oMLvmy%{7+Ey0@wPF=%7EHfs zUH?P$ga2^p7N6-EraMK7Elf%^cA1IOrd*G&Fx=8(@I4<)%L$q4RP0rdsZ*rB)diUJ ztx+*OTLGEO-VR7g7amMzaD$&(?D?OHEoDr3!V_)ztw3R~Hlj06=}-h|3UK zdU3jzndyCb1aAZQ9B*58oHf!D@@Lv$dVs9PvZEys4Vboj)$O8bYW_taukY{K#KkrXb29ueOn6qe0W173(^;m?_rG_S1S9J{`;0vc zvMizZTnenpdHK=%;dCqS{iAlMVb(X1iB46fVZL3Zh~UnL|6n=8C{~P8d)sqmCWCs` z6kfLL48C|82|tLzX+p`e4P7`LEpn+Cr_jdCe5$AR%=!D*gRB~C93vWvw?$fp zF!zq6*0l^DYSwc7o2lh3_88#A8HPnt+ z*LGZ6_JZaz-+cdd@zPIELJrN7NX9!M6Bn*_(Ma@u9u^d>;~87BG$ z>nNnk*tjs}S3S4Dsc{&sn!KY0*&u(djh)l@efvS=j4t|Kt5y1LX>7Uf`KIR# z8wgxv=Ev0x5(vkquALOjU!)~Ub_oM6SB3*t3etxuqc@h>! zs8R}CoS>Vp%#4HWJ|xq$!VjWy{+L^%XitGDZMZ}dsLoSP^b*zf^nMeLg*i{L3^qgb z#(jbgtzi38r25*_scXwJ%FQ8NcWu-^1&V>i;2Yy%88krRJ31ktnXFxlv&8nH{d9r&4gN4w&e? zY2Y~%Zc_yq!<@eFAwcnI4Q1|78G;F|0YzmlzsLEb3OQJhh=dDC2FOKi)1?c`%98U9 zj0wibH8uo`o%7WL2J!!^dO(S}(i?0lRMN|9fHmcxotGN-0(qZNlOrUjj`6s#HANN_{eay8TswhFX zQ0v=QET4qz;*DR6_QWfM_c_H zf(q7uay23oNb+6pv}GQ{*4HR>itF^9?)hpu*UW7MBl z5B5;zga$jC<~5Bg-PK&HD+fRKbuoNN)u$=A#2s4zZaRM;G~Ay>RRe_o~+L4 zA^#dp=PbYV`5sO<`eCZ*mQr2Hg{4(=F*-T!L%?Y*zoPMo5CkqX)s6QJf;K!;qQpaw1l>53}vs75Ws*X zz_RM%{{E>=y0;y(7uD6A6`E{Ya|*l6Z~psVXSorau*Q`=(K>*C59T%nHhepl%7U_6 zG!(rrV3_dWmt}~HE=!_PnbDC;eB2eR{GW-GEv4`)$x_>`C(ND3q;1zX=rv8Ze;W0S|dm$;s z5<0OH$*2616E2*G7XF!BP+xb2$<=aWZHH51LLtKM9#hft3WmMQNU| zS$smoOPm+cRbTr%FrZ3ifWiq;$?IKZpN1-HHG8HV8B*xoI0zL5rZaRuK?KD0t+qIT zc8L*-kXZjq=ShA}0Qd?;_Vlp!+3`Zbz)HsV3~TEK(A7ZO+E?Qd>3>|GjPW=L+@=m& zLH#T=fcca#r^5UjoX0KJs6!eZ1ASqTI*YvKJ1C|?x7QccC{S)Wi-URo&X>y`mlhR4 z8VD(8inH_!!rHD*#m|SI$<0d8`%h~VYS%T=VCZp-sG6>Vi%1~1{VE|J#rIUN4>ONj zVpXf#=FwDjDm{}`Zc#5D06}fFa*M`xsOK{?5(|bv7{FWAyo-sW@U#1m(P8&>2OJ_@ z=xEH+_%_tq3LtnkLj-g0i8!QrYJKyc>L!^kxx3I}k8v#AEhFAXLEB}E0-W#!|l;W7ZuiKT(UTRan+nDrQpF>CY!9QPlh9r$36MXtjoYTGV0 z7J9>V7_>eT43MWhQPVtvPror@_%<_Rkm$d4Oy7L%c)S800nlj1d`%ixv3lQUEGtNl$Z!}{#j zrXLlkAi=x;SWGk{)|qnCqW^h=`b3#IUbwZmb^E*H0(wg93 zc3(ZK1o?ylVK5lK!?vD?&rcG&nMvDnM8R;pO&55VvnnWS3NfNeXC?+7MNrc-(Q>jJPoik|Rds+x&d4%uaW&&gdcV2)om?gW85n-U0zL@F^0o!nqx0bWBqqB1cn35vqK2rp&#Tua7! zb}e<>k(>bfnVpiU9|esc2pgD>4v^2}<4phpXQ z7~Ae?wF#MMV@92U{4G~Inuh+by*CYqx()xv+oVXk6N)UQsDz3k`)K2iK@r)LEHh(J z7_u*+a@$%g!=Nw>jeYF9N@0*;hOwu}I%HqxxwPGP%kTf@e>^Xq=XktujN>rZ_xhgK zxqi;&T6J%Bx{J{h#IQZpAL{h5?<1?dv%6W4`Y z57blCu9~z^*#qdIh*t%DnE~R7%XRlY&L{c1cf1l|%U0Lqw@F%{TY0b8#E2Q0aLP7{ z4euseuzxb==A-t_n&uy1tC3! zoXR#uFC2C6U=RI-%%HXh1T2S5MXWgGk=g0IouNB_*46tw{ za4kAACT3*IX%rPqrH}`}3JL^o+3(-qlnLd5)N3lQIq{ykb)U5@H!rWpi>9>d+kRR^ zGrGSi#d*COV@ImhQK{R?6YuT)z+`Fo`26_Ll1N{sy?AHG9AmPvdj76<29lb1_rrjG zxjo`cvCZ9pE|2S#nh`zd631(jwvcCKL2r-@@k!nU-pY*Hkr$9vB48diN(V$O)=<>H<<;uE~a#iKcfzHLD)45 z$M}~UcYlgP7OOngQ{MH-piiffscxZ=zxcpB!3bR6r$T;r+9GP1bnGWo!1vx?HWSaT z+NKR{#NTr{{Us71%P{_x(lTP7<9PWg0WoccsG^&!quJxC(cC)=yYq@2hqf!ataoDD znc)<-TT<*gV@@kNN-HbrT%49h; zRB8UY=p?n-i47|c3Ow~>PaZR|Z-$wn`bMema-|m@J&K@ELObwD`;_zg6qRZ-*Q#$6HoSN>x6)*q+bcHKT5O^dguH`2mt((ub4L$7 zvZI-O1pcb0iy4MU+FI0|7}$MRC8S8z&nm^l|I~PQVhr5PLAm^4Zch%q=!OjM{xW|t z1rO;g1%)vj^IQ{gfiCw(DZZjU)BS_v%0L3H`lotL4WqSw6Lzyazv-xL(|9rcle~}{ZYEN@kA>_jy>y6dW zb7rZAML6R{ANn>d$1$}oRH`N@Zs)qid@Xc|-68ru{J)Z{wr4XFf^bM}#(2O%oy_Bz zI5g}z61C##X;9$d?0-t^VCK@qF%B)CQz&MoymY}GI;xv^rFA=Ww3J2=Q2{y#0o(}I znkQeA*t+i_o^J_^t~h+CD^AwYc71h8+<{lgqi96=LQkoS%d@xwYQMi!pY1H(TM5ot zUF^(O5=l9`?Z9(Iu2~x1C1L_n?61 zyJWe1B**M_xt0LU1(TAXiCz(^CS!1)ybyp0F0_1@39DXtQ-R=58CxBmTe%)af{@-D zN3!jjw5Hq1O1mY9Q^a;GO6_w(ST}FS9(fXZt;?=*v1NDZ?YOZVNm0r5I;X2sO~l83 zri$|MOC{wz-Gd1d-H=}V^}tO(xk%X|Ta-@Cq%g4j;%g-x{EAT|G58+b$eDd09+jyT z*m<-?*!BLj&i#8OA&cDd=$c!xc{i@CJ|!71uW^JTh9ZqBJL@6H7q>dkxX;YVj6X~; z9r8QHIIFwt)D>hVPcO^MxJJp)m*B=7Kgg@#n$6m1)fhd1LC>>dQ0YUo#pywlplw-Y zpD%y#PiJ>^ZIQJrAKWd!*m9oW9wn|99>r~n)g?bw8D@(0GgWZR9rb%PMZ%|Quptmj z&TNmZ2sw&b{73=g%EE~}brpYdI^4#}jkiI~ei?)CH~p(^CJhsM<`)q=mZ+yM;5i$S zu?D&GK~3NHmTGsNz2li^t|5voD(b(vxb z=eQ0yU(lhPZQyqE{+V>z^^Z+TBjg8}J5w1qUVB}i8!)c)Dt8w!ym&Ey^=;b|ot;HP z?Yr{9eW>ED8R_YF=;~uVrG=i$BdK;q*b6&L_S&1BNFy)dv|>jytIdLA2g10xi&pco z{!?d!T(^sPozVPA>FvlzY%X6Y1zzPaih$my};KUr0f=~*n*X z`8E%{g^elf;_tXx;_b}>aq!@&`~-a_F0nAaRl4U>FF7>t5YVF-xcpR13K1sRzGH0P zwwoV8L5%;f{6Xy zZ=_>?$dIm_zrJXgihD-W^3M#|{99U!hkFOJ6~^x51?2dS^}=EaA{JL$hq5(`EaV4B z3g6<%GiO=}1?iNBD|30r9}5?s(iqTRJkPm)Bi#x!q<;DG3!PL=J!9i>j7NH43Tr`J#*`$`Kb8E`TThYQ_rF-UO(*>K*uH5ovAxqWgHyVJKp)uM;-R{^M1!F3s7cV*Y3fv|W5Q4xcpzq6 zZFV{nQqD(T2q&;m_vPbjw*Zj1bv5XE%4-vs9@5TFhCfFF8?+EKgsQ|a#0U@=ll41y zO7l`*zv27T+PW8gkMI}v^kcy(9RGNW3duQ`v(P(Pn~b^1!|Abf1=6&dhOuIy>UO;V zcY0(VPxU)9_Xe*`*bv+6V-#X6k|mwTmZjZoVR8aqdWG{4Sa$?&maU8l^ zGvsGe;R8Ll^PWEhR>!-8^d5g?{tN;)Q8i3GBvOaJ4(&CpBN zm)iMt@a!3KhqSG?f<%&Ixid)BG(!5?+~0v~i^yn}H~Zp_+mP2;hVxAUZ1{F)t9$@L zmEZ9nOQxYskr4HdWnxlbHHC z?8o6Sh)IL%*KL^joWjRkq4djSIaHQQ5?s4p5k-@t?vs-EbX0c*smzyU*7B}8-hC2o zQsQ)bpev_NfIdG>?YCOo`WxdHTu#inL84v&h<4#AJWK1odc0NaWlt#QbF9-SezM7V@)qxj6DRx=b21%+ zrpn)5*dDSLtm0~f`&A*@WI`<}B^&f#fud z?wqDuYBZX8CH!CM>ilw7^ z_o&1Dp~6%RW8Y7yaYYLeQ~JF^JId12r48vyL>MudlB+*3p`q#c$H|jm5Yuvu9v@5N~$P%P;t`65PWkGs&B=k`aLt zR-_zi-`(a`$@dIm`N+Kcc;r}CK?S(8NF+fsw{&u)w8v#w3{78S?|NG&fa;T5tV-M| z9#FJtlRWzG3o5!4(-^*$H33>R^Y}2PM!0p&k?@Pe5Y(ZY4bSS1wPuxy#pIm269M5x z99sO3jL0pYe$6ZGGHE=V;^{U&YMJUm zU!f4(WftP4u%Z!xbG#?Uaq^QnUG_z*t=;Eb&UITw~2xgbd!iloT!7W$L;F;l3KW;*>i_@2aya89EVL=@6kfm&J|poN6j= zR!V?Vjc?->8Lj(y86*4TZzTMMo_HE{F%%4O{fQt@1j|d-D!C8#OV|$s+9YNK{&;ke z3-*yY?H>s%nl)KDuXBd0NQ9bI6gF|j>HdU*P5*AsMmo`(@zb!TkfJ--OhMnuwaW8Sk4i4&#t3UJCRt+p@k|5b40Y$(QM zQebxd?qY;$i91q2iu+nP&hcog!{CHV=Ur>B=7%gvebZcYWmA1)mn5;{28e}TFGqhP zkM$J&@#tE1BHA|wFweuBvj;)ZUo>gvsemh%s&Y%eGv3Dg^?}f2t z>e`gZd=#U!Gn4VEdHl({;jUq`#@y;^>0i|;UMR6IVc@jK@U&O#^4vhxNrefjj&MA* zJ^;>eXPh@8B2rA;s$~lnrh0lfcx7%s>X`u^)Y4~8bk+LGWJ_vVc!pU^o8#YbJb?vc z&wsb^T>-UMXxy7#fwbuJ?rRfD#ke%ZD|X4*diBNhhTuY3z(sz>bMIcfI7xP`c_3n# zRq={KG%|72EEf`che3~;E6mUt(Q=nNyxZPvZ?>9s(Xz`PuW`K8rJhw`&b~Uha|Lw9 zt5US$q+XdGoVnC8o2PWE3vVU>ENF1oQ2*LOPMC7chnjp-#Zn`?{)`-yp%HKHj9|kq z#Nvds?R_y;IX6L#;OsNLKk0zv7e4INf^B;;LvX0IGKs=`?Xr=9$iiQ#40X{%1c6~jg;(jbKZeDB5qXNTC$BS5`X6*pXc~(Y2=WGQLfFi zr_8<^xet>f+(NSD@Q3TMi9;AU-Z#w>*-Zff5j1N96_j+ql?RkgA8#cN5v{x!$03@k za@;2_G2^l}XQ`?Fa+mGT%zIV_+s27boh)OWNwIUR7^LY`lH^2-g;wxActUeDys&p} zII(~R1BtOgcD`$wMumqEz0Ju)I1)uGxSfaczeC0)jtXr3MGESH6uiTvW4QvKqYbYM zoley`p%Kd^HL(iU7J`uuTQG~2E|%p@WGXASoT!m9NvM$s$!MrY!L-$3wc@3_9S6;0 zV^JjmA*;`Xv3FHa`Ayh@ZmZIW^Z5^7$(R^1LZwVvc3Q8#iFfVSnxt`wo8IK}$7Pz? zr4#ccmW$UUZ7`j(63xO|F?Nb2oW-ailGzPvw?}D@XM_C6LuxNiBQeaoRy-WMb0S$d7MKt9)YR_S~8j^Q*@xbhzPVqbw?U@q|a@!#7v!>a% z1nf#zlz5AWC(*CrBAp+(vB)HEj~G@m!Y^KHE>x0Dx%j=Is99lC#X?fB&_VBtL17sa zy^5yUP>AA!Nzk~hs@IrytgO4{EqURekYupuaA;X#qXf0&HKlHJ$w3S)JM%y&{HnR( zdxgkF{d5Nn3l-DVIehNyk}5r{dz8`RgdKaQ%eq^6_J)k!HggN~o@2`cDXIMPkFR{3 zZLU03&N~sxo8?%Zly1SycAl9%x3c@L`mL@7vo-x&%QBT^3TH^aD!|d5QZiDk4SNy; zAbY(_Q1AQB&CqY8CQ>z>rCT}@oku$#AG*D5pUL0#*4Mn%fy|%UCJX^N9j9SZ>Ed;j}8BFf|*`c~o zxVF+ODZTXRK6Xd72k~!-v zw~0S#b0Eb>DxnsKFp(>_JG&npyFc3)Xiq(SJ^1kDH!*=)kVE!KOWdA7SAEg$Sd}d7 zXgJg#-=R;n|yUSY))#=>;^V+HCeQDc8vcnB;uTuU;eT9d)U8=PrBE8 zJhAEc1N#5`q+T~59|D*nDJUj=fwfsjh`^~>MJU@>lTX-Y;rLr{p$6M5fC1$fJ;o6Z zi9-vAuFvd!aAhy<=xfLKCw`?lG?8b&TYt8pXFZ|9DNA~P)_XyXkxC!ePogFafetJ?v4Fuu$JZz1n ze%AQlKs-#ofQwDMylG;wMthxQM`A{<%wVRgF%q>6JhqK~dK>J45Mbl}1AANqHCF?B zNM^B-?Y1wb^D@UwH&f_)JC$DQq%YPdJ>Ntc8K)RAK`F_}<&_e0<#$JXEZl`?P%RfF0 zztKu3Y3D)OB{M4``wvUlvKNp8`Qjhyk`Ft{13$*%UAR-i{sD3*T1=#63gs&1A|CpK zkEPV11J|9MiJ%|#VuAN`h06=Xd15U6bau!iD&fQwnEfk-+3rMs2!>94FHcDTRtl(fu0h^BekrMekQM{(mWYinzxvua(f zUIVB#=Os^`(gZ@Wu=mN!-=tDaY_q4CjqR+jVVQ9Js0Xx91;eAGex`Ub@|0L{yoihc zm%Ud>@BGw|h~c*-wOm)@R0`~S9W~%=gz1g+bZQ)$Or7wUqI7!}IFVkce&t}_4;=T| z$R77`A2FtK?zh`u84s+B{!Xp1w%H{yBR|FWQvHZtv2!1WW30Ex@Y_yo0(~mB;XWr0 zJ^SIqLUp!)nnx9k1X011LyNBgRFzq}ViWY}1^KhHF8 zk7F@{Sm%)VSHM-XL+4Tb{GLK%Q6w`CS@hk%Q+hm`$khd$5p%qHZ5?Htq7&??%E-R* zY2Jc{3K+xtx?5>M!Oe3$#8E*V=q}SSCMU2tACFJ)eFNNr3nWDf= zdm9N{?kk7CTTM1UDKlPDkPS=6`*I1GQx5T6&5W1g%Lk%R$>x`yXk*#0TyACnHK);t zNM1!vl;xCoI7tQ5XVZ4OwCHVJmNx<1?<`ERx75qYeH~vmPk7`0c9hx%Lm8JI-Kr@X37{1k1{ZrHbXl{9xM&gPz2vAoQXgg(!{fYG%4d3zXsSYc$SL}wq@?8C z*grJi1K-6(*4Kd`C6ES>!CCZ0MMg$&?QDJDetG7ZVf`WDPBsqQ(axcW7(Qs?rnDDS^fK40%he5J%A`Ra0NR`9sq*|hSt#p_&GF*x!` z2Pd`1rcYsAN`744xuM}aggGBL@FE=+T8h>p33n^_rY1NhM*Dhi4xm;EBemX>NA+m} zjO9eLeaGz=*96ArOXtVorK0$i_#_*&q>lx8r*`Z<>s7SU+KGhf%TFx(Cl$m< z<{UvN^)~jOce})uQPA~-L2{bm70p1sZOeUA5?}h!z|M5#O3o!ug6``RAU0c*3PdGj zn?vQ7cNkUNd5T5P2Sid&Q`gZ{`o#1K!{*}{wKTiYEOWkeInao3!WI5`qH^u&S|5zs zxu})e0W0jAka_TA*@54!WqrP%qnS1eK^|`42BB1Q+2TXb8QvAu$kX5Hv>t4($rgc(YD)LDUaD}$zDduqsRLNtZP{!a7>@-yk`%wb||JibpKwWYyVV5WP5Q1 z!Dgv-c>#YBwI3t9n6G%=(Q43iy^-XtAZ+u#IA^jUn`_)zW39AJO4+*U;6m2RiLSzp zt_`u9KcLAtA4cd0btY@fZt7*S$9Q62-#}F(6*`krK$SXwlXVY{_-J^cbj-^Q>fpq@iF$SKn`^-yfLs{Bw28nF}@Os2MZ0JUI%p5hwDdX$Pf$ zhZSfG!eC;S&DZNhyK{ugmAWKy|CvXjKKxaCcm|`*(F|^SNE{vuZPN^XWWN2I_gLn` zPQIxgfS8sOn0f}DGooG@CrD}#MjJ35MZByCyH~MXzR=xsl)5gAYmOf2?YlF?6t#RY z)0Q`xs;(Yolwj&iG61D0Nfh?+zGi8rx2|tnQzEH&i?)(^m9q;y9AQL}c+cKT-t=1; zczl7iscWZ~^U|v;U8lcVVCV~|-U>P=_@tufa^D~e^N>`>YYCgjl*P)5OoIZ-=TdZT zcein6F{)d;Zv+?D2USYA7<^U}5yWgTqkjV7p#0EhgsPUYlN- zwtFQhFDpCH1~Ky?YpR_@eN#%m70r@T87+(cm`;M7CAYp;rsz~UzF1qEPMxS!nShkr z%E^~v`Os4;IYH+9U){iCo7Wgu$HR@DSR%QpGJOhjnDd0@{>cc^5X{V$k5#TH@nr6) zrk77#tPL0@WAZ1j=iMY+dy$?M64`ZhSs?WN!5T5S{(A%SuM*tvn0=UgXs?Y(k`W+Zzc`J1f#5DQr?YghgO4=QTqI7ljh{|)* zI#FO6ImIpZ{Px}1QH+(y6eh;y%&5aMF8k#tIT{dA@Nzc_BYG#ji>MyK=f3!C{)3~$ z^^1FOo{SG1el9Pi7>ffIr@!QK!sWKWN7#_4IeyBkNDo7Xp>JVA^o=BM$Ncj#l9mx` zbKU*KE!8epoG-MvyH;Qs-XgD=cp2TcU2EaKnKOPg8f?CeZdxcYCWJa+jWx z6s>)z%0(M@i7LJJ6gkS?T7e9lDAT{)CZ6EEUJMZ1cP}L`2Yk0z;n1@RqY3@S91Ni!Z3M$!uEm%C01lptvBDT7FV>Opub(k)9ZW(U#a>9CGC z2I0Of=C5tHRk7~STVCoMD+vcpRvPVUO zt)CUB?)z-*9*H;y)X4bqLJaG1F(JZRLwH58^<{tIcO)G#Jf~9QYSZ2MsRVj{EQ20~ z{(w&+;0h?q^W)~jaknv+mhF{=R#Aui$D7>gg%5O64eX{WqI9&*(!^Ka#lU*sHEngt z-MqHkaX*plTUJ&kTxfapt3ML5^TP+LuG9LV`P}wPXItZPotEW9iOyF_op>XWL1Dcz z2m@CfY6^BsrzPES>7P%%Dq?R&DyEanDHS?1n7gCV=NCHP(p)^7DNz&|j`rKTRd`tA$F$acnbmz-4j_2r`-&N7o%YxEsGoTmdbBAy|u;7QyG3-scug83c|1yhYwkUxV=#WLu680Owl61_X%3Q=_qlbvC}WM)(`HR1^;y$nYc47BjYOBUMke;{F=1e9PrwdQ&v&MUHs+48f@K zT!U>?&MSW>QSp2;B}JOv)5y*;d@y0SDw9IgQt4i^bDfDRYN%z^Kl#EtEH;wvb%8O3 zFe-D+Db;V+(8=mpzS;2IuifFgSs-z#l^O13YKfZa0bL}@O%MpeeSNcpp4jc-o#ef< zofDi=qP&fzmU%2EdE#QvUQ&Qb8l; z%&T%ySeBeNhgL;fp!1I^7KuH(o24d@$@r64qxUk7mRMeB(V`l3f8Ck}Vj>(dbGDhVBU&E~w?w}_Fog9oX=`dc zk_-T|b4t?UJYNk=mUw^V2Yeu9d2Vc?NuHiB6neI1`>y@{HNxJYx>35LyV!B!6}Oqw zAq+;fVtsi`+OGSo{8ZIe)Z)}YW+2{zjexWU4%;X>x+po zX>6EnW`0+}Ppi1hhfx(!L<_ePDk?U14C8kq{Dg!=A?Wt(tYoa&yH6Gmcb}F+kK2Gd z?F!uH5QUm%XWI`-9mH|Yk@Ea}GY(VZ-({|6s9l_r^XsxJB~6sx9=xRQsG*W@jwsXX zD)c#E{*6#rK8NPnYQFQ3<~uB8RBe5K&(Z3SR{8eG^7&7;BF6J<4Wf-9ajG0Fj1u(3 zD53;^iO=j-l56x=(P+qFig1N-2Vh8CMrmxdu`>z;0k*N?;txGswm=Z#*8?teCLpELj*{D&H6F>M}HWDS!={rHX{*X?TxQX!%P9sSeNv6F~ zr#jZ2C!Gi778X+@9$>}NKl@5&43b{_sV0DRB7oa8o2)5Mf^0^OKjcgvQG|~kg!*E) zK-vSzw{^#0bSJVb<%PkZ9JFPnOH*znc{^R3RluyeS5?6C7Gs%OX*|=$ujp1ZI2v7I z|D!)oFdlkVjTHnKpSRQ1MJI291qXDzv7;6InQ3aN2{(4&C=`S#dMp6+P3f7W~|$>cBP6X zyt4E+pJa!i;AYRL`+VS9_T`VnYUS})ysHa`%|_)PY@lZz8+%&NC>HvID0 zC7S}wSn7b99L69<*ANv27z)xTz$pFNMlBbDfIkk`!EUv2_tt=jiiwFi*Xg1l00`lQ zsJ8 zzo-tu5c({-<}}F2dgA)k%iT{bwnkkgQ13WPCmO;*TPW?;094$=-!O9lJF;e%j>4ff zD$QQJXmnOf1hapmSw1-_gveF+<>StkOx^u%*L>Ud-RDkR5`>LWGVf2Ol$}?}^lx?9 z7l42*oLNdS zpm+?nY{A9JS-g;dzndl}d>?eLT8ysQoN(Sfks9%%nC`yFp53kQVWPUomL+I{cm#d_ zdg&$GG%mXFNp+8nH}?+g{#N-&(1V(tycVlLR{>3(m2u0gl;x=?&B`+T)h^Lw9W~tG zviIrvmBm5)teNea+;`v>DtI!HF3e+Gyi^WfFAZSyzHgZF!stnAF-(Mv5hmkhk*AM@ z0croNp#Dv-`sy9;uhclvO*1{Oe$dg~gtzXy^Zat}lrJWe#%z7U1SQq3#`?Oo_$Zs* ziB->JymuoRz3c7K?6rz^;V9N`aPWU~KgSREpOZp%B&D)bDJM-19DOHEsMub{-tKWA zlaKB%Wp;`0Ud%m^^HT3ntqb@qK~|;DseJ>d5&$$Ru{GaTX9AZ-b{eI1LO#w`$4C$( zHr62uN&bBZ8XdVWEF$&?B=J4_<4gD}js4vy#%Wnl%=CbJw_mSG_hBY0;JRQb3g_>z z?7A>?U?JG4qVQ%FA&;8D&23G~DR?9P?5#=KC!YlrjRmB4I~QVv9>1jM=qrY7xvsZq1B@$sa=-*S-98%U;`{s4jWJh06= z#~edJr4vHrE~?Ob&JCQP zn9a~gO`dj|-bTg#`IMAYRYVflTQFN2&v>I>GAIF7e^~bh_Cuh*8aa^IbY$`f=Q81# zP|sjPJOhQ>ppN~4+%3?qs0-jxTmT@Y5Gm>k^9|u&?Bjn{YI)+5^>hfZ2qnmRP6ZQ* z*E1x&#-yF+;&cgayR5FR?nq`Kd8Fas$_Ujh#A6l7F^4qNF{*Dv{13#Sjj1wU=tn2w<*=iak7j)M^L$>ig4TB&u34cUl12^32-}%RlaW zNB-BP1hqv#w*q|t339B=aF%z{Oc1hEC1T{^c9MK8vDL!|2Njdnoguc{^p3oGoOeV+ zy=l1KeZPA!H;fczJsgUxY9&JEP53@e+rsbn7F0PfRwu7^Jmlnfy zF>+RN-i2ODMT{Z zNePqGj7EuSJ=<@@@!96#Go&71gPAwS_~pw!u5iGz-+NUu*(PKc9vL6ce@&ef1V2%` z)fd#hEa7&NAJJp(sQ$W@ppMFO10w8A7Ix zK&7Ug;{IM^hL9gEPv3F;^>qaIa7~#<)vsnUMaK5MYx}GEB|gEx^on&Mo^t${4qHA* zw#T}@-VPral*F!XxB!fQiqC&bZ2YTOcWeW1l64K|qv6lqln=9w9-=Otf?1Y9NdkR* z;mVKnKm`C?KuqTM6tXEua32RU3L6tc!xGC|ZIGo|l^FJB47rS)5Oih<NZ?G<=m+Ns}m5L7%-~H0*Ql{x`O816y?y^{;(&1fp5pCl0tqYtiHWP zIA+U0zvw|6+;DSjV1Wu7@bc~Cu1}tqL?yw^mOs*(1gH})1&#{=_Bj)V;l22;F8=aK z5W=+24OH)MIsKGJ7cuJ_?Ja^~Z@`?;(TOOX2ghXU_dOK(*NQ#T6f_OTX~X<~iHev<2l#ryhH-zR&f4q@ylpqV@eWU^$+Wi@8b z(kS-yu)j=)Q;+Lx)OXCq%ewr?i+`taJ*Y)L-Q(eEYK}oqO?or`VezvV{=B^8RfvJpwz($ZqsI`(H(nmDNT7pn!i?isQnET`N@Ns zknMX*wJf@FzzujnUDIP6>wae#P-dmk@Lo&{e#}lO6Kb-+d0Ri{_garHB&z{bG-vx4 zLHIAv+nfVs2|Ew!{mK$wEXy7Md$1x;{aTp+h5w)&U{zRuHp?#*{u)_j1NvY0|EXQ> zhlpVS#gJQquKoH>Ur2oqh)4~O#&4Qpex==Yz-BM1f3INK*bWSE2gJAb#D7oe2kriU9Hkn2^O3>XN&jWP)_+XU3aKa{%!s9<#mW}riI|4{| zF8koGBKYO7mNv}e|NG|uCJMDarbkvR^QBG+P3>Czy>EE9eq#tIlJm{tB$6=KT9kR@uf!PZM+$0ozqgL;fhK+gl55x-{crU9 zAAvgZ07<P2YS|1VV4UOykaTs>9j;dC?zKmfz5;Ol_RWCeH2G<~M-Xs&}$S{-A%V zLid73!=}$lY5>np#=5?L(6#hQ%&`a*T)8vW7EoZko0#L4(1*Y4ks}YFZjZWEGm1hS z!slxR)~7_x$U)2H)Yee0CW z(n&edlP70`e{22QP&PLKSKNdaI8&J6068i|g$asz@GW#ZhIuZ1jN0gd;FU+eF!5fS zLw|g#PXjnGY0B!4N;@A|0vdW#Cb;H<{spfD9g-xkwJ|f*P#O-#J4Q|oW7~hK3QdEH zjP;h6!aFIuwleQ_S{W~!X+n3H2X)>Z##&2MEFLzeQ3P|vekWiyAJ}Ta)|+6S>;%Ym zf}Yo`^7-7=)zvpwt|e(S^tp|Rt&kJeZ-F6qc^l&>N}NXac3L5Y!GOE&(_n}WeefCg~7{ys#uvsT4S9fojbYhdNtC(C9uT|(*(I%>2X{e*?PNyPTH zb9qT@z<|T&R00Bj)R_ItR?u`1bffA-vY;^7*=rmpO%rj3mZ?}YCgT;(L7k7~pZ%wA z2J0sd;sd*KEgNhHUx%RAmxf~zk#JXlvY!+cZ4fW&-=eOS6CLYtT?8=r$GfW(t9dugI6SM$!P_t0r zFmR5$^&(-1)xJbFeua*B@AbQdmr1JaOTJB{FAmYqzmjt|LCA*vBcj^msXoR!Ra5rk zJ{i81IxzCtZiQZ1sR*WWh;Iru5s23(U+#lf0}*AW#`wCiwI^b%g;YbG=;o~SLFx#f z&Ghzibr_^`^|nRf6;eU0eMRR+hnPg!lwTIhJnuda?i zB07Xmz5owF4WNZGjn_8JeQsHIbhX>uK&Zi_z&HaHk_ttC}+ zFTdyP74k}}u6*bZ=^51V>+0RNN27`~w|gy= z_7yiVg(|PR>gc=!`LC|F7dmx1+Mw5sq`a2sl7Wwmp;Ruu58lYv$( zNq%fRA;*M1AG8~l&BprgA%Fh_>eM&dueFTLyAoCWZRf{3Nfi&{;trDK-?bH20WJ65 z?L!$D?D+!7t}gH7Jr2!mz}i%FkF!2&r3g&X$@KOsPP;W7Eya($BLyi8-eEHC&#sgW3TV_M64|70{M_69g?Ykn0{NF; z^i6Q-z1uax()P^9F9#RcAxOwU$)ISrw3OHKGv49`f0-ii)xt!-Ym|J;-~zqekm2!; zoI$-FJSLuto4c#9a&3Y@3;WYZ*IQhP^;ga)_w@Jfd*0(jh8cNA0sWe9288WL{_=;> z`tq2!C!wVLTV5sIyuY)Y52*PC=aLzB@b@Xlzy*)lh;Nrh?%4myB6eK^J?o`+?wtCA zW9xfsBf&b9+ED(dIK);T@Zm)L+v@M!@vk=u#)ujKUpgj1eBt+ie1{-NlmO!(D#H9* zw*go}&B}N7Rz-2v9s2`)o)a14O%;FI_TR@qTrvENqBJ*gR^8y741`$6!3 zwQ!3q*pZb^&Y?dMKAkmLM82wH=i|p~T*bB9x-&Mj#Ne@7w!*UN5j{Y>$lpXLyL-=mlypy&TV-<)FbrsjK^6Ab+~fuFxG MYF@}Zcf;?00rHm@wEzGB literal 0 HcmV?d00001 diff --git a/index.js b/index.js index 22b5f08a..7b539894 100644 --- a/index.js +++ b/index.js @@ -1,13 +1,32 @@ const capi = require('node-canvas-api') const { flatten } = require('./util') const writeToCSV = require('./writeToCSV') -require('dotenv').config(); +const writeSummaryToCSV = require('./writeSummaryToCSV') +const writeSummaryByModuleToCSV = require('./writeSummaryByModuleToCSV') +require('dotenv').config() -// Check for COURSE_IDS in environment variables -if (!process.env.COURSE_IDS) { - console.error('Error: COURSE_IDS environment variable is not defined.'); - process.exit(1); // Exit the script with a non-zero status +const envVariableWarning = (msg) => { + console.info(msg) } +const envVariableError = (msg) => { + console.error(msg) + process.exit(1) + +} +const checkEnvVariable = (varName, errMsg) => { + if (!process.env[varName]) { + if (varName === 'INCLUDE_MODULE_SUMMARY') { + envVariableWarning(errMsg) + } else { + envVariableError(`Error: ${errMsg}. See README for an example.env`) + } + } +} + +checkEnvVariable('COURSE_IDS', 'COURSE_IDS environment variable is not defined.') +checkEnvVariable('INCLUDE_MODULE_SUMMARY', 'INCLUDE_MODULE_SUMMARY environment variable is not defined. Define and set to `true` to include summary at module.') +checkEnvVariable('CANVAS_API_TOKEN', 'CANVAS_API_TOKEN environment variable is not defined. You need a token to run this script.') +checkEnvVariable('CANVAS_API_DOMAIN', 'CANVAS_API_DOMAIN environment variable is not defined.') const getDiscussionTopicIds = courseId => capi.getDiscussionTopics(courseId) .then(discussions => discussions.map(x => x.id)) @@ -27,54 +46,111 @@ const getNestedReplies = (replyObj, participants, topicId) => { postAuthorName: authorName, postMessage: replyObj.message, postLikes: replyObj.rating_sum || 0, - postTimestamp: replyObj.created_at, + postTimestamp: new Date(replyObj.created_at), postParentId: replyObj.parent_id || '', postId: replyObj.id }, ...replies] } +const getDiscussionsAndTopics = async (courseId, topicIds) => { + const fetchDetails = topicId => Promise.all([ + capi.getFullDiscussion(courseId, topicId), + capi.getDiscussionTopic(courseId, topicId), + ]) + + const discussionsAndTopics = await Promise.all( + topicIds.map(async topicId => { + const [discussion, topic] = await fetchDetails(topicId) + return { discussion, topic } + }) + ) + + return discussionsAndTopics +} + +const processDiscussionTopic = ({ discussion, topic }) => { + const topicId = topic.id + const topicTitle = topic.title + const topicMessage = topic.message + const author = topic.author + const topicCreatedAt = topic.created_at ? new Date(topic.created_at) : null + const topicPostedAt = topic.posted_at ? new Date(topic.posted_at) : null + const participants = discussion.participants + const replies = discussion.view.length > 0 + ? discussion.view + .filter(x => !x.deleted) + .map(reply => getNestedReplies(reply, participants, topicId)) + : [] + + return { + topicId, + topicTitle, + topicMessage, + topicAuthorId: author.id || '', // the topic author id can be null + topicAuthorName: author.display_name || '', // the topic author can be null + topicCreatedAt, + topicPostedAt, + replies + } +} + const getDiscussions = async courseId => { const discussionTopicIds = await getDiscussionTopicIds(courseId) - const discussionAndTopic = await Promise.all( - discussionTopicIds - .map(topicId => Promise.all([ - capi.getFullDiscussion(courseId, topicId), - capi.getDiscussionTopic(courseId, topicId) - ])) - ) - return discussionAndTopic.map(([discussion, topic]) => { - const topicId = topic.id - const topicTitle = topic.title - const topicMessage = topic.message - const author = topic.author - const topicCreatedAt = topic.created_at - const participants = discussion.participants - const replies = discussion.view.length > 0 - ? discussion.view - .filter(x => !x.deleted) - .map(reply => getNestedReplies(reply, participants, topicId)) - : [] + const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionTopicIds) + + return discussionsAndTopics.map(processDiscussionTopic) +} + + +const getPublishedModuleDiscussions = async courseId => { + + const modules = await capi.getModules(courseId) + + const modulesWithDiscussionItems = await Promise.all(modules.map(async module => { + const items = await capi.getModuleItems(courseId, module.id) + const discussionItems = items.filter(item => item.type === "Discussion" && item.published) + + const discussionsAndTopics = await getDiscussionsAndTopics(courseId, discussionItems.map(item => item.content_id)) + const processedDiscussions = discussionsAndTopics.map(processDiscussionTopic) + + const discussionItemWithDiscussionData = discussionItems.map(discussionItem => { + const discussionAndReplies = processedDiscussions.find(d => d.topicId === discussionItem.content_id) + return { + ...discussionItem, + discussionAndReplies + } + }) return { - topicId, - topicTitle, - topicMessage, - topicAuthorId: author.id || '', - topicAuthorName: author.display_name || '', - topicCreatedAt, - replies + ...module, + discussionItems: discussionItemWithDiscussionData } - }) + })) + + return modulesWithDiscussionItems + } -const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()); +const courseIds = process.env.COURSE_IDS.split(',').map(id => id.trim()) +const returnSummaryByModule = process.env.INCLUDE_MODULE_SUMMARY ? process.env.INCLUDE_MODULE_SUMMARY === 'true' : false Promise.all( - courseIds.map(courseId => - getDiscussions(courseId) - .then(discussions => writeToCSV(courseId, discussions)) - ) + courseIds.map(courseId => { + const basePromise = getDiscussions(courseId).then(discussions => + Promise.all([ + writeToCSV(courseId, discussions), // Writes detailed discussion data to CSV + writeSummaryToCSV(courseId, discussions) // Writes summary of discussion data to CSV + ]) + ) + + const additionalPromise = returnSummaryByModule + ? getPublishedModuleDiscussions(courseId).then(modulesWithDiscussionItems => + writeSummaryByModuleToCSV(courseId, modulesWithDiscussionItems) // Writes summary of module data to CSV + ) + : Promise.resolve() // No additional operation if condition is false + + return Promise.all([basePromise, additionalPromise]) + }) ).catch(error => { - const detailedErrorMessage = error.message || `An unexpected error occurred: ${error}` - console.error('Error processing discussions:', detailedErrorMessage) -}); + console.error('Error processing discussions and modules:', error.message || `An unexpected error occurred: ${error}`) +}) \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 32abbccf..0a33ad1b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", + "luxon": "^3.5.0", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" } @@ -18,6 +19,7 @@ "version": "6.4.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -26,17 +28,19 @@ } }, "node_modules/acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { - "acorn": "^6.0.0" + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -49,33 +53,28 @@ } }, "node_modules/ajv-keywords": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.0.tgz", - "integrity": "sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, - "node_modules/ajv/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, "node_modules/ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, + "node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -84,26 +83,74 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", "dependencies": { "safer-buffer": "~2.1.0" } @@ -111,7 +158,8 @@ "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -119,25 +167,44 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT" }, "node_modules/babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "license": "MIT", "dependencies": { "chalk": "^1.1.3", "esutils": "^2.0.2", @@ -147,7 +214,8 @@ "node_modules/babel-code-frame/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -155,7 +223,8 @@ "node_modules/babel-code-frame/node_modules/ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -163,7 +232,8 @@ "node_modules/babel-code-frame/node_modules/chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -175,15 +245,11 @@ "node": ">=0.10.0" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, "node_modules/babel-code-frame/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -194,20 +260,23 @@ "node_modules/babel-code-frame/node_modules/supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", "dependencies": { "tweetnacl": "^0.14.3" } @@ -215,26 +284,49 @@ "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "license": "MIT", "dependencies": { "callsites": "^0.2.0" }, @@ -242,10 +334,11 @@ "node": ">=0.10.0" } }, - "node_modules/caller-path/node_modules/callsites": { + "node_modules/callsites": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -253,36 +346,27 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0" }, "node_modules/chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "license": "MIT" }, "node_modules/circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor." + "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", + "license": "MIT" }, "node_modules/cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "license": "MIT", "dependencies": { "restore-cursor": "^2.0.0" }, @@ -291,27 +375,16 @@ } }, "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "license": "ISC" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -322,12 +395,14 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/config": { "version": "1.31.0", "resolved": "https://registry.npmjs.org/config/-/config-1.31.0.tgz", "integrity": "sha512-Ep/l9Rd1J9IPueztJfpbOqVzuKHQh4ZODMNt9xqTYdBBNRXbV4oTu34kCkkfdRVcDq0ohtpaeXGgb+c0LQxFRA==", + "license": "MIT", "dependencies": { "json5": "^1.0.1" }, @@ -338,7 +413,8 @@ "node_modules/contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -346,12 +422,14 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" }, "node_modules/cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -366,7 +444,8 @@ "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" }, @@ -374,42 +453,111 @@ "node": ">=0.10" } }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/debug-log": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", + "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/deglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "license": "ISC", "dependencies": { "find-root": "^1.0.0", "glob": "^7.0.5", @@ -422,12 +570,14 @@ "node_modules/deglob/node_modules/ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "license": "MIT" }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -436,6 +586,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -447,6 +598,7 @@ "version": "16.4.5", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -457,7 +609,8 @@ "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -467,30 +620,123 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -498,12 +744,16 @@ }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -512,6 +762,7 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "license": "MIT", "dependencies": { "ajv": "^6.5.0", "babel-code-frame": "^6.26.0", @@ -563,6 +814,7 @@ "version": "12.0.0", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0", "eslint-plugin-import": ">=2.13.0", @@ -575,102 +827,65 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0", "eslint-plugin-react": ">=7.11.1" } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", - "dependencies": { - "debug": "^2.6.9", - "resolve": "^1.5.0" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz", - "integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "license": "MIT", "dependencies": { - "debug": "^2.6.8", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/eslint-module-utils/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" + "ms": "^2.1.1" } }, - "node_modules/eslint-module-utils/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/eslint-module-utils": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dependencies": { - "p-limit": "^1.1.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-module-utils/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "engines": { - "node": ">=4" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/eslint-module-utils/node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-es": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz", - "integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "license": "MIT", "dependencies": { - "eslint-utils": "^1.3.0", + "eslint-utils": "^1.4.2", "regexpp": "^2.0.1" }, "engines": { @@ -684,6 +899,7 @@ "version": "2.14.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "license": "MIT", "dependencies": { "contains-path": "^0.1.0", "debug": "^2.6.8", @@ -703,10 +919,19 @@ "eslint": "2.x - 5.x" } }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", "dependencies": { "esutils": "^2.0.2", "isarray": "^1.0.0" @@ -715,151 +940,43 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/eslint-plugin-import/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, - "node_modules/eslint-plugin-import/node_modules/load-json-file": { + "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "node_modules/eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-node": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", - "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", - "dependencies": { - "eslint-plugin-es": "^1.3.1", - "eslint-utils": "^1.3.1", - "ignore": "^4.0.2", - "minimatch": "^3.0.4", - "resolve": "^1.8.1", - "semver": "^5.5.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, "node_modules/eslint-plugin-promise": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", + "license": "ISC", "engines": { "node": ">=6" } @@ -868,6 +985,7 @@ "version": "7.11.1", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "license": "MIT", "dependencies": { "array-includes": "^3.0.3", "doctrine": "^2.1.0", @@ -883,9 +1001,24 @@ } }, "node_modules/eslint-plugin-standard": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz", - "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", + "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0" } @@ -894,6 +1027,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.1.0", "estraverse": "^4.1.1" @@ -906,6 +1040,7 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -913,50 +1048,81 @@ "node": ">=6" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", - "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", "engines": { "node": ">=4" } }, - "node_modules/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { "node": ">=4" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/eslint/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { "node": ">=4" } }, + "node_modules/eslint/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, "node_modules/eslint/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "node_modules/eslint/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/eslint/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "has-flag": "^3.0.0" }, "engines": { "node": ">=4" @@ -966,6 +1132,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "license": "BSD-2-Clause", "dependencies": { "acorn": "^6.0.2", "acorn-jsx": "^5.0.0", @@ -979,6 +1146,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -988,39 +1156,61 @@ } }, "node_modules/esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "license": "BSD-3-Clause", "dependencies": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.6" + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", "dependencies": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -1028,12 +1218,14 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" }, "node_modules/external-editor": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "license": "MIT", "dependencies": { "chardet": "^0.4.0", "iconv-lite": "^0.4.17", @@ -1046,25 +1238,35 @@ "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "engines": [ "node >=0.6.0" - ] + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "license": "MIT" }, "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -1075,7 +1277,8 @@ "node_modules/file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "license": "MIT", "dependencies": { "flat-cache": "^1.2.1", "object-assign": "^4.0.1" @@ -1087,12 +1290,26 @@ "node_modules/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } }, "node_modules/flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "license": "MIT", "dependencies": { "circular-json": "^0.3.1", "graceful-fs": "^4.1.2", @@ -1103,10 +1320,20 @@ "node": ">=0.10.0" } }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", "engines": { "node": "*" } @@ -1115,6 +1342,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1127,67 +1355,174 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0" } }, "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", "engines": { "node": ">=4" } @@ -1197,6 +1532,7 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "deprecated": "this library is no longer supported", + "license": "MIT", "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -1206,12 +1542,10 @@ } }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -1219,7 +1553,8 @@ "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -1230,23 +1565,80 @@ "node_modules/has-ansi/node_modules/ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { "node": ">= 0.4" } @@ -1254,12 +1646,14 @@ "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "license": "ISC" }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -1274,6 +1668,7 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -1285,6 +1680,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -1292,7 +1688,8 @@ "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -1300,21 +1697,25 @@ "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/inquirer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "license": "MIT", "dependencies": { "ansi-escapes": "^3.0.0", "chalk": "^2.0.0", @@ -1334,115 +1735,354 @@ "node": ">=6.0.0" } }, - "node_modules/inquirer/node_modules/ansi-regex": { + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/inquirer/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/inquirer/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/inquirer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", "dependencies": { - "ansi-regex": "^3.0.0" + "has-flag": "^3.0.0" }, "engines": { "node": ">=4" } }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "license": "ISC" + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, - "node_modules/is-regex": { + "node_modules/is-symbol": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", "dependencies": { - "has": "^1.0.1" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==" - }, - "node_modules/is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "license": "MIT" + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT" }, "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1454,37 +2094,44 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "license": "MIT" }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "license": "MIT" }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "license": "ISC" }, "node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -1493,32 +2140,28 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.4.0", "verror": "1.10.0" }, - "dependencies": { - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - } + "engines": { + "node": ">=0.6.0" } }, "node_modules/jsx-ast-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz", - "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "license": "MIT", "dependencies": { - "array-includes": "^3.0.3" + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" }, "engines": { "node": ">=4.0" @@ -1528,6 +2171,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", "engines": { "node": ">=6" } @@ -1535,7 +2179,8 @@ "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -1545,28 +2190,44 @@ } }, "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", + "parse-json": "^2.2.0", + "pify": "^2.0.0", "strip-bom": "^3.0.0" }, "engines": { "node": ">=4" } }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -1574,29 +2235,50 @@ "loose-envify": "cli.js" } }, + "node_modules/luxon": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1605,45 +2287,55 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "dependencies": { - "minimist": "^1.2.5" + "minimist": "^1.2.6" }, "bin": { "mkdirp": "bin/cmd.js" } }, "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "license": "ISC" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "license": "MIT" }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "license": "MIT" }, "node_modules/node-canvas-api": { "version": "1.7.6", "resolved": "https://registry.npmjs.org/node-canvas-api/-/node-canvas-api-1.7.6.tgz", "integrity": "sha512-FVW9GMDYad7taFM/DeD3TCBt8znjEzyRa6hkvIefamnFhVVA15yiryOM2Fi1cjAqZNNu4quvCEYOj4nETDpprQ==", + "license": "MIT", "dependencies": { "bottleneck": "^2.19.4", "config": "^1.31.0", @@ -1659,6 +2351,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", "integrity": "sha512-XcaMACOr3JMVcEv0Y/iUM2XaOsATRZ3U1In41/1jjK6vJZ2PZbQ1bzCG8uvaByfaBpl9gqc9QWJovpUGBXLLYQ==", + "license": "BSD-2-Clause", "engines": { "node": ">=4.6.0" } @@ -1667,6 +2360,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -1678,6 +2372,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", "engines": { "node": "*" } @@ -1685,23 +2380,56 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -1709,7 +2437,8 @@ "node_modules/onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "license": "MIT", "dependencies": { "mimic-fn": "^1.0.0" }, @@ -1717,59 +2446,82 @@ "node": ">=4" } }, - "node_modules/onetime/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "license": "MIT", "dependencies": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/optionator/node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" }, "engines": { "node": ">=4" } }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "license": "MIT", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parse-link-header": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parse-link-header/-/parse-link-header-2.0.0.tgz", "integrity": "sha512-xjU87V0VyHZybn2RrCX5TIFGxTVZE6zqqZWMPlIKiSKuWh/X5WZdt+w1Ki1nXB+8L/KtL+nZ4iq+sfI6MrhhMw==", + "license": "MIT", "dependencies": { "xtend": "~4.0.1" } @@ -1777,7 +2529,8 @@ "node_modules/path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1785,7 +2538,8 @@ "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1793,12 +2547,14 @@ "node_modules/path-is-inside": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1806,25 +2562,41 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "license": "MIT", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT" }, "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, "node_modules/pkg-conf": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "license": "MIT", "dependencies": { "find-up": "^2.0.0", "load-json-file": "^4.0.0" @@ -1833,55 +2605,39 @@ "node": ">=4" } }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/pkg-conf/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { "node": ">=4" } }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "node_modules/pkg-conf/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { "node": ">=4" } }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "node_modules/pkg-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1889,7 +2645,8 @@ "node_modules/pkg-config": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", + "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", + "license": "MIT", "dependencies": { "debug-log": "^1.0.0", "find-root": "^1.0.0", @@ -1903,14 +2660,24 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "engines": { "node": ">= 0.8.0" } @@ -1919,6 +2686,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -1927,6 +2695,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -1936,50 +2705,122 @@ } }, "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "react-is": "^16.13.1" } }, "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" }, "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.6" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/ramda": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==" + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "license": "MIT" }, "node_modules/react-is": { - "version": "16.8.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz", - "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==" + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "license": "MIT", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "license": "MIT", "engines": { "node": ">=6.5.0" } @@ -1989,6 +2830,7 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "license": "Apache-2.0", "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2020,6 +2862,7 @@ "resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz", "integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==", "deprecated": "request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "license": "ISC", "dependencies": { "bluebird": "^3.5.0", "request-promise-core": "1.1.4", @@ -2037,6 +2880,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "license": "ISC", "dependencies": { "lodash": "^4.17.19" }, @@ -2047,10 +2891,21 @@ "request": "^2.34" } }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, "node_modules/require-uncached": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", + "license": "MIT", "dependencies": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" @@ -2059,26 +2914,37 @@ "node": ">=0.10.0" } }, - "node_modules/require-uncached/node_modules/resolve-from": { + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dependencies": { - "path-parse": "^1.0.6" - } - }, "node_modules/restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "license": "MIT", "dependencies": { "onetime": "^2.0.0", "signal-exit": "^3.0.2" @@ -2091,6 +2957,8 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -2099,36 +2967,18 @@ } }, "node_modules/run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dependencies": { - "is-promise": "^2.1.0" - }, + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==" - }, - "node_modules/rxjs": { - "version": "5.5.12", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", - "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", - "dependencies": { - "symbol-observable": "1.0.1" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -2142,25 +2992,117 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "license": "Apache-2.0", + "dependencies": { + "symbol-observable": "1.0.1" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -2171,25 +3113,47 @@ "node_modules/shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" }, "node_modules/slice-ansi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0" }, @@ -2198,42 +3162,48 @@ } }, "node_modules/spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==" + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "license": "CC0-1.0" }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -2258,6 +3228,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "license": "MIT", "dependencies": { "eslint": "~5.4.0", "eslint-config-standard": "12.0.0", @@ -2280,6 +3251,7 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", + "license": "MIT", "dependencies": { "deglob": "^2.1.0", "get-stdin": "^6.0.0", @@ -2290,7 +3262,8 @@ "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "license": "ISC", "engines": { "node": ">=0.10.0" } @@ -2299,6 +3272,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "license": "MIT", "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -2307,18 +3281,60 @@ "node": ">=4" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string-width/node_modules/strip-ansi": { + "node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "license": "MIT", "dependencies": { "ansi-regex": "^3.0.0" }, @@ -2329,7 +3345,8 @@ "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", "engines": { "node": ">=4" } @@ -2337,26 +3354,29 @@ "node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/symbol-observable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", - "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2365,6 +3385,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "license": "BSD-3-Clause", "dependencies": { "ajv": "^6.0.1", "ajv-keywords": "^3.0.0", @@ -2377,20 +3398,85 @@ "node": ">=4.0.0" } }, + "node_modules/table/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/table/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/table/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/table/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -2402,6 +3488,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -2413,7 +3500,8 @@ "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -2424,12 +3512,14 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" }, "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -2437,32 +3527,114 @@ "node": ">= 0.8.0" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "license": "MIT" }, "node_modules/uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -2471,10 +3643,11 @@ "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", "engines": [ "node >=0.6.0" ], + "license": "MIT", "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -2485,6 +3658,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -2492,15 +3666,61 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "license": "MIT", "dependencies": { "mkdirp": "^0.5.1" }, @@ -2509,9 +3729,10 @@ } }, "node_modules/xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { "node": ">=0.4" } diff --git a/package.json b/package.json index 07862e90..feb343a0 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "ISC", "dependencies": { "dotenv": "^16.4.5", + "luxon": "^3.5.0", "node-canvas-api": "^1.7.0", "standard": "^12.0.1" } diff --git a/util.js b/util.js index 99b5fcd6..9cbd364f 100644 --- a/util.js +++ b/util.js @@ -1,9 +1,113 @@ +const fs = require('fs') +const path = require('path') +const { DateTime } = require('luxon') + +const toPacificTimeString = (date) => + date + ? DateTime.fromJSDate(date, { zone: 'utc' }) // Convert JS Date to Luxon DateTime in UTC + .setZone('America/Los_Angeles') // Convert to Pacific Time + .toFormat('yyyy-MM-dd HH:mm:ss ZZZZ') // Format the DateTime object + : null + const flatten = arr => arr.reduce((acc, cur) => Array.isArray(cur) ? [...acc, ...cur] : [...acc, cur] , []) +const average = (arr) => { + if (arr.length === 0) return 0 + const sum = arr.reduce((acc, curr) => acc + curr, 0) + return sum / arr.length +} + +// median from array +const median = (arr) => { + const sorted = arr.slice().sort() + const mid = Math.floor(sorted.length / 2) + return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 +} + +const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' +const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replace(/ /g, " ") : '' +const writeHeader = (pathToFile, headers) => fs.writeFileSync(pathToFile, headers + '\r\n') +const appendRow = (pathToFile, row) => fs.appendFileSync(pathToFile, row.join(',') + '\r\n') + +// Word count function +const getWordCount = (str) => { + const cleanStr = stripHTML(escapeComment(str)) + //const cleanStr = str.replace(/<\/?[^>]+(>|$)/g, "") // Remove HTML tags + return cleanStr.trim().split(/\s+/).length +} + +// Function to calculate the topic summary +const postStatistics = (posts, referenceTimestamp) => { + // Number of posts + const numberOfPosts = posts.length + + if (numberOfPosts === 0) { + return { + numberOfPosts: 0, + medianWordCount: 0, + averageTimeDiff: null, + firstReplyTimestamp: null, + averageTimeToPostFromFirst: null, + averagePostsPerAuthor: null + } + } + + // Word counts + const wordCounts = posts.map(post => getWordCount(post.postMessage)) + + const medianWordCount = Math.round(median(wordCounts) * 10) / 10 + + // Average time in hours from topicCreatedAt to postTimestamp + const timeDiffs = posts.map(post => { + return (post.postTimestamp - referenceTimestamp) + }) + + const averageTimeDiff = parseFloat(average(timeDiffs).toFixed(1)) / (1000 * 60 * 60) // Convert from milliseconds to hours + + const postCountsByAuthor = posts.reduce((acc, post) => { + acc[post.postAuthorId] = (acc[post.postAuthorId] || 0) + 1 + return acc + }, {}) + // Average number of posts per postAuthorId + + const postCounts = Object.values(postCountsByAuthor) + const averagePostsPerAuthor = parseFloat(average(postCounts).toFixed(1)) + + const firstReplyTimestamp = new Date(Math.min(...posts.map( + post => new Date(post.postTimestamp)))) + + const timeDiffsFromFirst = posts + .map(post => { + return post.postTimestamp > firstReplyTimestamp + ? (post.postTimestamp - firstReplyTimestamp) / (1000 * 60 * 60) // Convert from milliseconds to hours + : null + }) + .filter(diff => diff !== null) + + const averageTimeToPostFromFirst = timeDiffsFromFirst.length > 0 + ? parseFloat(average(timeDiffsFromFirst).toFixed(1)) + : 0 + + return { + numberOfPosts, + medianWordCount, + averageTimeDiff, + firstReplyTimestamp, + averageTimeToPostFromFirst, + averagePostsPerAuthor + } + +} module.exports = { - flatten + flatten, + escapeComment, + stripHTML, + writeHeader, + appendRow, + postStatistics, + toPacificTimeString } diff --git a/writeSummaryByModuleToCSV.js b/writeSummaryByModuleToCSV.js new file mode 100644 index 00000000..0c1ab182 --- /dev/null +++ b/writeSummaryByModuleToCSV.js @@ -0,0 +1,50 @@ + +const path = require('path') +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') + +// Function to calculate the module summary +const moduleSummary = (module) => { + const posts = module.discussionItems.map(item => item.discussionAndReplies.replies).flat().flat() + const moduleUnlockedAt = new Date(module.unlock_at) + + const postSummary = postStatistics(posts, moduleUnlockedAt) + + return postSummary +} + +// Function to write the summary to CSV +const writeSummaryByModuleToCSV = (courseId, modules) => { + console.log(`Writing summary of module discussion data for course: ${courseId}`) + const csvPath = path.join(__dirname, `output/${courseId}-module-discussion-summary.csv`) + const headers = [ + 'module_id', + 'module_name', + 'module_unlock_at', + 'number_of_posts', + 'median_word_count', + 'average_time_to_post_hours', + 'first_reply_timestamp', + 'average_time_to_post_from_first_hours', + 'average_posts_per_author' + ] + + writeHeader(csvPath, headers) + + modules.forEach(module => { + const summary = moduleSummary(module) + const moduleDetails = { + module_id: module.id, + module_name: stripHTML(escapeComment(module.name)), + module_created_at: toPacificTimeString(module.unlock_at) || toPacificTimeString(module.created_at), + number_of_posts: summary.numberOfPosts, + median_word_count: summary.medianWordCount, + average_time_to_post_hours: summary.averageTimeDiff, + first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), + average_time_to_post_from_first_hours: summary.averageTimeToPostFromFirst, + average_posts_per_author: summary.averagePostsPerAuthor + } + appendRow(csvPath, Object.values(moduleDetails)) + }) +} + +module.exports = writeSummaryByModuleToCSV diff --git a/writeSummaryToCSV.js b/writeSummaryToCSV.js new file mode 100644 index 00000000..490f2ca0 --- /dev/null +++ b/writeSummaryToCSV.js @@ -0,0 +1,61 @@ +const path = require('path') +const { escapeComment, stripHTML, writeHeader, appendRow, postStatistics, toPacificTimeString } = require('./util') // Adjust the path as necessary + +const topicSummary = (topic) => { + const posts = topic.replies.flat() + const topicCreatedAt = new Date(topic.topicCreatedAt) + + const postSummary = postStatistics(posts, topicCreatedAt) + + return postSummary + +} + +// Function to write the summary to CSV +const writeSummaryToCSV = (courseId, data) => { + + console.log(`Writing summary of discussion data for course: ${courseId}`) + const csvPath = path.join(__dirname, `output/${courseId}-discussion-summary.csv`) + + const headers = [ + 'topic_id', + 'topic_title', + //'topic_message', + 'topic_author_id', + 'topic_author_name', + 'topic_created_at', + 'topic_posted_at', + 'number_of_posts', + 'median_posts_word_count', + 'average_time_to_post_hours', + 'first_reply_timestamp', + 'average_time_to_post_from_first_reply_hours', + 'average_posts_per_author' + ] + + // Write the headers to the CSV file + writeHeader(csvPath, Array.from(headers)) + + data.forEach(discussion => { + const summary = topicSummary(discussion) + + const topicDetails = { + topic_id: discussion.topicId, + topic_title: stripHTML(escapeComment(discussion.topicTitle)), + //topic_message: stripHTML(escapeComment(discussion.topicMessage)), + topic_author_id: discussion.topicAuthorId, + topic_author_name: escapeComment(discussion.topicAuthorName), + topic_created_at: toPacificTimeString(discussion.topicCreatedAt), + topic_posted_at: toPacificTimeString(discussion.topicPostedAt), + number_of_posts: summary.numberOfPosts, + median_posts_word_count: summary.medianWordCount, + average_time_to_post_hours: summary.averageTimeDiff, + first_reply_timestamp: toPacificTimeString(summary.firstReplyTimestamp), + average_time_to_post_from_first_reply_hours: summary.averageTimeToPostFromFirst, + average_posts_per_author: summary.averagePostsPerAuthor + } + appendRow(csvPath, Object.values(topicDetails)) + }) +} + +module.exports = writeSummaryToCSV diff --git a/writeToCSV.js b/writeToCSV.js index e62d0f59..e5c27d93 100644 --- a/writeToCSV.js +++ b/writeToCSV.js @@ -1,25 +1,21 @@ -const fs = require('fs') const path = require('path') -const fswrite = fs.writeFileSync -const fsappend = fs.appendFileSync -const writeHeader = (pathToFile, header) => fswrite(pathToFile, header + '\r\n') -const append = (pathToFile, row) => fsappend(pathToFile, row + '\r\n') +const { escapeComment, stripHTML, writeHeader, appendRow, toPacificTimeString} = require('./util') // Adjust the path as necessary -const escapeComment = comment => comment ? '"' + comment.replace(/"/g, "'") + '"' : '' +const writeToCSV = (courseId, data) => { -const stripHTML = comment => comment ? comment.replace(/(<([^>]+)>)/gi, "").replaceAll(' ', " ") : '' + console.log(`Writing discussion data for course: ${courseId}`); -const writeToCSV = (courseId, data) => { - const csv = path.join(__dirname, `output/${courseId}-discussion.csv`); + const csvPath = path.join(__dirname, `output/${courseId}-discussion.csv`) - const header = [ + const headers =[ 'topic_id', 'topic_title', 'topic_message', 'topic_author_id', 'topic_author_name', - 'topic_timestamp', + 'topic_created_at', + 'topic_posted_at', 'post_author_id', 'post_author_name', 'post_id', @@ -27,43 +23,40 @@ const writeToCSV = (courseId, data) => { 'post_message', 'post_likes', 'post_timestamp' - ]; + ] - writeHeader(csv, header); + // Write the headers to the CSV file + writeHeader(csvPath, headers) data.forEach(discussion => { - const topicDetails = [ - discussion.topicId, - stripHTML(escapeComment(discussion.topicTitle)), - stripHTML(escapeComment(discussion.topicMessage)), - discussion.topicAuthorId, - escapeComment(discussion.topicAuthorName), - discussion.topicCreatedAt - ]; + const topicDetails = { + topic_id: discussion.topicId, + topic_title: stripHTML(escapeComment(discussion.topicTitle)), + topic_message: stripHTML(escapeComment(discussion.topicMessage)), + topic_author_id: discussion.topicAuthorId, + topic_author_name: escapeComment(discussion.topicAuthorName), + topic_created_at: toPacificTimeString(discussion.topicCreatedAt), + topic_posted_at: toPacificTimeString(discussion.topicPostedAt) + }; if (Array.isArray(discussion.replies) && discussion.replies.length > 0) { discussion.replies.flat().forEach(post => { - append(csv, [ - discussion.topicId, - stripHTML(escapeComment(discussion.topicTitle)), - stripHTML(escapeComment(discussion.topicMessage)), - discussion.topicAuthorId, - escapeComment(discussion.topicAuthorName), - discussion.topicCreatedAt, - post.postAuthorId, - escapeComment(post.postAuthorName), - post.postId, - post.postParentId, - stripHTML(escapeComment(post.postMessage)), - post.postLikes, - post.postTimestamp - ]); - }); + const postDetails = { + ...topicDetails, + post_author_id: post.postAuthorId, + post_author_name: escapeComment(post.postAuthorName), + post_id: post.postId, + post_parent_id: post.postParentId, + post_message: stripHTML(escapeComment(post.postMessage)), + post_likes: post.postLikes, + post_timestamp: toPacificTimeString(post.postTimestamp) + }; + appendRow(csvPath, Object.values(postDetails)) + }) } else { - append(csv, topicDetails); + appendRow(csvPath, Object.values(topicDetails)) } - }); -}; - -module.exports = writeToCSV + }) +} +module.exports = writeToCSV;