From d6388ad6db00b465be876efd5b8bf768bdefeb16 Mon Sep 17 00:00:00 2001 From: Hank Lee Date: Mon, 7 Aug 2023 12:20:54 -0400 Subject: [PATCH 01/17] Revert "update feature label" This reverts commit dcbc32557e6ae4851dda9e84410bbf4bbf2bd682. --- popup.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/popup.tsx b/popup.tsx index e3ebcf0..676ebde 100644 --- a/popup.tsx +++ b/popup.tsx @@ -347,13 +347,13 @@ function FacebookSwitches() { update={setNotif} /> Date: Mon, 7 Aug 2023 12:34:46 -0400 Subject: [PATCH 02/17] Revert "Merge branch 'ESM-study' of github.com:brave-experiments/purpose-mode into ESM-study" This reverts commit 5d9659de1493cffe7203bed1d71ec2b6031af97b, reversing changes made to ed6e96c69ca5086e4180f1991db23f9a970d3c0d. --- assets/Facebook.png | Bin 16055 -> 0 bytes assets/LinkedIn.png | Bin 11481 -> 0 bytes assets/Twitter.png | Bin 13575 -> 0 bytes assets/YouTube.png | Bin 4440 -> 0 bytes assets/survey.png | Bin 15880 -> 0 bytes background.ts | 482 ++------------------------ contents/content.ts | 417 +--------------------- package.json | 9 +- pnpm-lock.yaml | 703 ++++++++++++++++++++++---------------- popup.tsx | 267 ++------------- tabs/esm.tsx | 513 ---------------------------- tabs/feature_feedback.tsx | 280 --------------- tabs/start.tsx | 74 ---- 13 files changed, 481 insertions(+), 2264 deletions(-) delete mode 100644 assets/Facebook.png delete mode 100644 assets/LinkedIn.png delete mode 100644 assets/Twitter.png delete mode 100644 assets/YouTube.png delete mode 100644 assets/survey.png delete mode 100644 tabs/esm.tsx delete mode 100644 tabs/feature_feedback.tsx delete mode 100644 tabs/start.tsx diff --git a/assets/Facebook.png b/assets/Facebook.png deleted file mode 100644 index 1eb64d2d3e0ae278637d54d3f0691a8e7dabee50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16055 zcmX9_2RN1AA3v9FL`WHBm#wTMT`JV4OpYuJR^IGSQ3Kazt1pt6bO;t$`0225s2_QcWe{4S;IDkJ+ zxhbgWlf!>LO1Jc%rmRgoOEGo#J^8b@FfRRgzFTuB@g>KtbCLQwwBzUk zg>wCm%#R9c7?xjPA2JxP42C2oq7iu&?}ixicX@q zM@{R0n5?Z&I);qOY%0%Bt~!QV{U`h^IWse}qLrmsS#QF!{wAm0wx~ICOiZ+c>UzJ8 z+`P>U!&ri`%p;qC_0c_TJ13Tf)7I^&#bb?y^Yf|d#ubt$w*cLXKx!~h(jCUx!P!&T z{p?{mp8fKOeS`!2$zvCoId|x<{|=!h%}rHRHen*oHMMTzui5hbX2i@|U3~dE1?&0T zdvqW@p?g=Ul~z$(=lU~!F8NVQ`B5#E#Fa;h;kW@h)I*C4xOMj>x#)HAk-Fj$-|R$h zv9LAc*a}GuI^9SYU`Y%s93Adm*_@ffm%B=v^%;rD-s^kUJ0dVpmg&ts!M|0Lxp)V^ z{%w59wX(3>WYHO&^&WsN_rhU!AvW3DA==kN?}S*&w|A!TJab!oB>wPrAG=j`^MsRH zo1y4JIU$_wm#;DkkEirl;Y@Z8JkE5_^7=Sf7QDZp=XjlLS=l^k4-kwcIBk|FL+Tnt4jCFS*N`$gm1lx`CVJ4_E8h(y8hDODG}vw zNU%vI2Unbu3Yk&jdYGW(w+~7#H1FLi2;n{nvl^~Z9+nUnI#`M;(+Z+S#!&eG$yhF^ zdb<6RkG7%7DyQa1-(`iB+Tn}!iS6c!>37e=8e>NqR&qWb3h<#jsZ8RIW_YT-i%+#? zQ6xrlQ8O2vE${VlgkjhbB9pEG4Q9$-YB z`*e;D=*Q5rUtIfSvd%Ilu_$k#M~Av#Z*-?G4CiYYRi82v!$i(Xo^X`{e4AVjt>qsR zInZmLYUA~dDNd>JqgD3k(v;cfPLsmAsvywM)V)hA9cH;1_L;e)H9n53C>Oi%*Wc;$ zw^?^0PW7O8uY;<$1_W_nn7n~a} zaVO0~J$_nHGkK-IRB-_j(rhZBeqb^#vww2B@9J&Egk9F&h-PF@pgOagkZxN*3;#$Nw7GhCeL7G%DK1FF$KX;+1Bd#6>G(Xh6e*UEV-|ZCT zg~X*W91|2ups_5os5MGx3ZJ*LknuI$3(oJUT?DFC#oTV55xw=}&z3Wy}TZEr` ztZvMLI{SeV36P~X*LG@ngUqjv+*WH1>?YNZIy620lbt=JUCd8Q5lDiq6*QKJRKHI! z*77LM9L(4P_dc4>pNvXgGB2JBX%2uxmFR*`7Wu+VM%V8ag=%`#XIAt+!y5hSOK+Dq zbMk8*D%`Eh*h;^y3q+iPpRkxExyesW2#Ms$V%XAy!oKaio_(|TNm+D0lmsi~?ff%- zEO7dQyw085U8_^BQN9iftwslm!MCi_!OzIJ9M1|a9_A_T;oG9WN#`8&3$-;3J^Clt zxfP)twQz*|a=W4_F{uL^&y!b~;l0m5=ZItCO^KV?g|mf-&L9$Os|IuopII%QlgLhL z8dkDKg^~a8Ibt-Kg%30y$}k{7L|^fPZOmPtL=)bZ-6ZK2>o>PT52{D&FQCZ3ks$#t z6DGUXtGjG!{=jX8vF>KZ_3?2(^F==L2ojx{f3_Kl~TeW^5;+# z>H#D=lznNd2^aA{GW{cA3Z=%nTF+e9wq?2-fAz^oubqww9af<7Az|@#)O3%k*X_k? zKp;S^!DXwV9aByaz%bC!Ak)f4e_sJ^bu?IP6Nq2Y5S4aE+vQdkesCt0bMP~pG% zz`aLv2T=?7BYU;hASlT6#0Ep^@YJBI;vxs%H3~Gnq1&&?-PZ?7m5Il z-q5yF0$&fDj<1i?;F`p*ScV=b*na+^3j}_AaQ`YCq4hSd>>7pvh}*_%IBje=61)~U z?q8%pBaM8cB<7fI*NhWnGfF|OOLor!6YrE%q?sraieerb3#I>x_IaTbM?j*K<^q)ESiWY=BdiTTLxWxB{A zDQN?~4G^=7)qr!Xi4#RC5-==IxoSl-enNke(FNanAHbZ_-h2>}Sq?i#r>*N+6?HnO zPtc>t*}^n{b++Zi?+({u$MXU5*k$LB4^NaAs-p~osb8pAo=!JOS$p06K1iOg(*N9v zInZa1&*$AjFK<+7q|1o(#ytOelUg{;@(|b2Lk z%xO;h8u<^$?E1^AcwH)ZbzWwLh*52={?3R$$~k)s zem~`5W#B(s11X1fz@&V?lg0&vW8xd3PnbBJ;_0 z49;E&!S{mK;i8Gm+INE{hI$am=sA(lwlwz-(4=O;m677(%=BkYL0VspJ{O|yVyh$= z4--j~$BxgTRK+s@oz6l~M)cgSmfBSXTLf01pS}4{VqNl>6BTQw(I@gxXw;ParVoCC zOY$#XuAEe44#9v(4=Hah_H}BmzU6U85Ky4gpfevl zjy_h=y9(E&A9MjAG|*NY1{6f``b8!SxOFD0uUU8iE@DoZk-tvGm> z!5#OiUJx2S7uj*%aai`j*Pqk9w-oZ%NSq6YtygxeVWJI(11IuodvBM&@7W82Z$JDZ z`8kBQnk~iE@nOybbi1rm*|Wb>d$Pj0HwPUMP!UJ8_{no9GQdIS{R9RFP2e3`b*-Ck zyWPJ!MJ-JcO?PU+wT`>L|A0LsAjYVR9@|aDDI9s|$vp@cAizf{=J-94U@9m9T}55| z9zaQivuqSkJ<{`rZiX$nz8Z38ZNm{Si;2|BOB4qkav~La>r)SZlK~cVK7YOA{-KIA z)In?#A5eL_LDg=u{@9fjE}$UYp+HUPkHK(u9gh(0uoB|pW2SvuVpc!^KJT7USveo; z#dBFYJC6bMY_EW1(+hAG>8@2vPY9+3_k1hw-($qyW8Re$+-(ZOB@wl%AEUPQx2!&G zHyI8X_dyU4p$V>_GMSt8pGD7)4Dqe-?wAc#U&Y`a=5~t%yNHsV?~KjRyY7qlE2M0n z^o^vEr)FOKPy#S_-ZtfEh(asC;NpaUol#DH796lH*-mMcK;vPtOGw?9m_w9hm8L=!j znedv34hOHP9`V#LU;C+z`;I(0XVj9~y*#e3^k2ApQ&#elZ7`248%z8~s`Ho_6YptW zneXzeRNgHGm&IZpud#>6zq#{RxBcWj$0^Sxdcs73ISp%OQzNs>6h&(k9%g{&_rn3W1O#~jfzi? z)L-5wc)PZfogUb3TsIkG-)rdzZmAQ*+@H1Pqg{$&O*ZmpN2zA$Ya#AeIC8|61toK_ zGD0{sQeepRM1F<8UB3S353AjFR$XK7XjZ#yql+x9Id04BsoTGv7eB?cvh^JMaoARF z{GP8ln916sY0A$oEw7XJMOKLo-`M~7d^_ZO?=6Z9dkSJE_m5xEf(Ce6HY0su@2#8O z!^5T4LEhnO<(yZ4-u2~63yr;$w*9<5pt7VYU3$3l*(oOX7=oGxFn12olvBbVh2pv!w7R{UQ3&Ms!zPfmWDAIj zr}l?Gj~ZW>Kl}IZlQGxtMHTa-j$;f(lVbB43c>l@HoMF9g##xqyQ7Ligh6ltvw3Ri zsuR~ADsZX~dV{dP{bu;qoq}Y!Le4+>ubW-6%3QyyE|QBkXMKKI!n^AsJi>(1ki%t= z&T_BmI=arv&z(I+=W$<|Gb5DE7BJSPi+azxO6&HuXNV!PEcCoT&Mw64ip9WfZ(87o zMUq}oxe~MNh2U<)0PgFkpxd7%s=eBSC3h8G&eOgF9~nLFgx3mlKA~o{$`IH+-}ucv zpvO7Xk0(zE!;sF9vJ*2~aPqgLrHa#9+aOj>>7$;@8IFXdHrJlzHKU`I-dhasu27;| zn-i7e9@Q)N6~kq0@Y?m}1)2BjasEDbmTnpWLqXjEq!1|V)a2T2U;6(hxzoVfj70T@ zxzK6<^hda;k`39qKMM;D>FcjGw@Ar$W}o_ex5iDrrz+V{)Q%kBXDgVP)`o&;-u?G^V7w@wvhdh9&9X$Bv7yLx1flFF+aFrkr)rC{=BmP*++cQ? zZQbb$r&9E%N41#TYmzvc-tit~imBD;`_OBMwRisV;I;S3!g%&l+-Ye!48v>$1ZdWt zDX)gskM3*uFLDIy(TV{obu*|N4ySh2kq+~TzcU+YQ$CVVJUWf{CO-ET&$;RDiUHP@ z+vZjb=0y~36fvcoaY}VlzS>)96}JzgdkuB&cY>I=>OVwsKiY!-vb>YKrnO&xW^e0| z(k?n2>=_ocxB5+{{&nJH{|xhK#^7!j5o=R0{W^|D10{f=PS=C}RsVZFo8A1`of)w= ztYXjgmQ%vlEHe~YG)MeO%!>WCn^gZ4HI*JeN805L|A?3z^BI1yb|!7sV6N(vPQ~=;8_*)@Jc-O%#4i|j=q~Vm9qrrvAA7w+Dg3v>sayf;^ z)?UMevtd~*HTt1;_kxX6OelG-S%erxLD(SMhlxNQH#noSftZYyUf%IJ;IVIkV{ zth@@>K!L6m?Yu+l17Rj@+EAP4B{mHHwJ8jz;_1bXe@EJ%%43t?3Kc*Zys5mZ@?cEC5O}YAETR{E4M>v-gvz1 zz8tHDP&HbAf1WZPi$^(HPd^u~E8i#o<4dZa^j}8{`x#aRfdG^nS!bWG7FC^_Z>u((xsx#@KP9k#ta%Cmj-_qm1B z0$t@!PStsNli_DlNzt@b;TP?g1|@M!g}|3s}4E)Z@)bK{2d{>Wy@*{M-B5-U&9 zV}V&RygGUHf8&CTmoEs^$TlJ9(vllah!GOMnZhjy(gqH>VttZGb8qk#sZA0(Iique zx)JGCquClq2)q^Y=cll*8m3+bdEI3C0%H4&lYKGwF3IFwK=Y3vvr>?JBjzG5ANNAE zPZ}@R?J4g_WHW8^LXYReSJ=S@C_^=h#^unUxGMdd-W;TJ9}2z)O&z`qvQ%6E=YncX zKh1xs;~rVe=R#U!n=z`{3pV4i>K@G_VU@SD=U_MFUo&^x53JN|5Ft=EnVyyEEjj)_ z&&3Iq$O_BJ?Z1KG`jm~|=gsZzck=tCi^z1pl6BTqV``SshNF8kYclJM*v#hdN?(mb zd~xp>un;t!#;YGYlcx85bO=4rmPS2uU1R~@0@{Tj@Zp=63NZpLNh*_kcK1Yk5c&ZT zZzr59Gl|eYCX7=$g2h)^R9mN(#U`DVy12WK0F` zrqpdSBvipH_j%()5;vFm(OGu=Ojb$6z{S$92CU-S?|i7EI#-UO8lI2%TR3+6sJmXr zobC*(32M#uJuK9vlKpg5!ndb8W#T)tgwxbYXiN4zdC|3F?A76Gd`^ybV8*o0KoyhFl?Nqq^gqNCnrR-B{ zg6jRX*N52&yR*a(Rn*|(%)`OX|AQ)dDyon0z0$kI>s&T_43h8kvK1wmeYpDC5{s>RV zxb+7WX~}w{R(fbyPxHN~maH()I2iDms`_+md`h3YmEyXinh7pzKX~B24=GL zt{v-tiS?}J*-f`HEQ!d*10UiJ?t*Tu;&{*5PBmWzG5=aFdJTK>)U4ZY2s4#Aj)$`m zId7R!NU^X;vw?)eG8Y{ z8N!^;)Qywp<1+?bhq7oY>HSwtwMJ45HhT#t2Tc*-6-QpioojKqQZ`9@KV*tXoPV_Z z$`bPa?4wOGP?A%4=T2a^&f0GHzF^NHlf2DFmGGHVB>C(%EYPG3|2MNG0Prbh*)r_x zX9tpa-JM%CMXACMS$X%~$UbxBF{49Kp3|AobP!JMVV=JSI_Lev5V`Kbl`46?mp%+O zl})*+?=2=3^E*+)PP@9yZoVDv!2=fGdWov0ul~@`Ps+Ms%cz>5m`p?%kcG2 z*W-caR&@nHqa0jraO`#pRV7!<`fUa#+oWBBE4<^CJ*kL6H(}stE5t{o^ELebwOzpX z3Hn9LW1ci7*dpA-Z^*=4I)~)b^z`=&Tm^=YIMV-PExuvYD>so~+OwCveu-(X0%DWv zJ59v1isTN;1%2>N=?HhU3Cfq+tY0s|xwN;%O#S)8{wGHMr-jUd8&fH4qv_%0=Yk!@ zDAhD)i0Mbu_`BJ6ri#-yey&=5gRfnWL|SN#GMoC@A4g$FOJ%GbNKH8Iius+yJEloV zLCm?Dm?j@ThM+M7Ev>$(uCk|BMnt|VnNFuu{-qJGl5fC1z$RTtT!ztssZ+$)HzZ*8vu1nmC4q?@&(@g?F+jhZZu$2k(n8J4Gk;dI2C?t#NZL7E z-jHS^ZEf)&tzM?iZOGKeRuJsmZNJNXyh*b8pk=^4E!(d~P)-0to~|%B@|5tghcuxa z+;@<1Vs2wca?nJJjpD-aZ%D4`TiskyXf&k6YV-))VM)&x35^Rb@OGNP zP5X@$CfRj#gJ&a2q-s;oHAgNWSw`m3ETej+ExLyN_w`1H$AAxj7v2`0<4h=0oj=p0 z5ldv(fKaO5_zmFvsOEO6MijcflSVRIz7Tv=^M0R6Y97mo zLZBH=^Oj@X^t8_DY@0WAbl9Uotq3aClOMuz5ZNnhU)5p*l2v&QM^)N_U|!f0TTF04 za>U&QASTeHGav@5AmV-Wkqt^8&dn{paxSKX}X+%eUlzbIn;i zw%c@ZPk+PH{lTm(OU&Xc6~AA)NDhwz!6$40=$vPewSVKk&5ixR=9vsn^>cj~mUJzT z-cw@#bu3;2!RmccBmh|Z*;0CJnF^0|#Vm0Mei=ho@866x^jJbZDV`KISRQcwQT_TW z+flP3vXPUOm4^lZzCe>0Z?xi=BLHlCL@vOikN&wpDJ~rjrPFM3{Fj7d@BNER1OVK$ zcs8aLb^%~x0%w$-gx~&q39I5q3xNJxQWFyA=+!oze^X0b{T@#&ya`3uN||uMZbdo5sBFcJ5VyNm6?lpBx=|3WT0+FH0NYor+VMW+ zyvYfy-32K{RjNeg%VN&Ku~5Z6E_5A z`ZKS({!g_PH1T$rzu_c}WaT zSj};QL6{~L5!;oy)RqFjq37~G=^kJ1y{z*mo70vG`o){2lnSi{eMUIuB!){0PC%fk zo0gqC6*1VD&Dnnc6gi-urXk>8_g>OLj^nA$0fF`>(lStpdmPiS60f7{IEm_KK#>Z( z#rG)jguSFD0SU=d4x!MUpSg`V&-SGe%@91_H#uS1&4X@B#_uZOc7tFu$+BN+PoQ*z zpR?+s;GqG~K~$`@7oRyt@dZARj)&ShKmNUg2hI1U%|UziHdKJRbH|X0<>J{~YRAzF z$|3kua7sUi$4VSXUcPW1F@x4hzi#E<(2qx+Lq@e(?1O0@}R| zzk8eNZYMM*p84Xx!E8{p8?P%W%c<2v6oV0r9 zJXSIH;}m(|b-s~f(<~Ed64;idNzmAhIJU@|_dBby6N9lA+3@LrlV?-Df-TzpH^I`6 zOKlxG0H47+)2P&Rhr$B7{C7d$G0C|^T_~((*qyD*RDm;&5eW#LT5%XNjSdxSe?CKH z%U;IAMU}1BfKo=22J@JA76JKlGT%Y{d_>|Y>}K>Kp*ukftHYNl-G5V1w(7J6I|B*q zKe5~H5HrLKg&TbOFS%4z!JPiBYh8Eh64b;uMN0ywEvSf*BLhDz)>+$#Hd>0HIiAgc z^O#`ep#&B;8z!N3`B)?f>!07sZ&d;Q&R zVf`9i-+P+_c2n?h;oq|--Vbjg6cGEX$i`+AR5D{j$6rn89X#JZQvhNB2sutBJvj?~ zwTay~@kAGyUSF6d4xjV*)rk`wDzcB z6FzV~0HCzm)7J4Cv=D6syF>+C%AVq21ZEI**Diy?AQp?9@EU!pYUdGvdNHoRMF2Jp zi>jZG^JY72Zk6aPYsUGRhA06n>ET-VQ)@UariM}Z3i)r(a}rEUP6I4@T)a<$&husW za{?r7P99U?`IHD7}Ld<0qZa`pv~>VN&(a#@eGBxUxH`Rr1u`6zDvrS zkchyea{Gs@(42i~qP7<}=z^9Oh}GUw!tSlN;;hLhpMFCdl;WKXI*C#LgBlgY?o;|& z@)ivJ^VLs`9iW;~33k7b>3Pq-hv9fA;T%Nr&7UONQ4#Z13u9R2(WXU_1jI1*M(V$wTSi*;4p?T6FB&tbS?1pX@gKKZ~L7QF<_SA)&IdbW{Rh*BaD z>2xjGzR5NBNwFk+XvF;zz8wvyrlgyg{07k?u5HzK{BNKDlZ>y|s?8xmUH15%=WSMw|{Ct{5ThGQvM zGu{=9i=0Q1=%^itY31EhH>-?QtS9yJ&d7s#@lO?I!i3D<&hIg>a)f>cBev`D zn=}K&tC`}BkO>4lO_R9rI{W)Z&jJ%>`ZgQVBr&OWF8$CZl!>-zJ+>?A8M zb<20GmJ-W_-)CgpB(}Yu9T?V5DFFJz#LS~^6i4pCl&(1kzK3wZFU^wstAd+lPcq*}CDX`x6GZKyKd_$bXDT}nJizx<(wi^{kN`1RN z;RpccJ1TYs)h7~qXg39by79H)_)Q{kNMPR+?y_B(B89b!Rp~}s?q~I_u(jLt>zBuZ z|B4-6-bNcy+wXlMAk?Amnw^>|&fD4BXXD)<;ZSqj%~K#^B9;_y{YcSD4y1*lWrqRx z4&(HF04)AX?6l~3!A3Z|kK_lQ*-u6@d+3QTem0sMUow3n7AX1OEeb4GGybo=+Oq;x zxIC7IbWQg#EL$M2LQ7T1bByc+q9D3^8slVJ&EUj8@R{O2z}4Pqc$OT%!l{0*Xhk|Q zy-0M2D&B)`GXWwMnY|~3y`1`cZHf$KfbWT6G~?<4>^CxVvA=rA6)F4hG7XPfyVb-X zj-gf>BF(2Uc`0K#l)k+$7_n>dH#Q=R<)QupEed;R930!}4yusC05=bDGOx0(tDeI*oM9S`NaJsTF>RJ(^&xb!22p2b>Fhp zeJ62@K+R}$VAD>G=B1giPvf_t;2(-8o7$xo;h~7^9R^3 zpQwnyf)>?m8EXnt(J>@Kw(V@eqAqCb*GkNe(+;F|;ef|lF%>@qQQ8o~LkN6L=O(Sn zLZHv&$>$hbMC8EKglkPEv04o*E^Ag}TIb`&6c!S+Mxcd5l5Wd$Egcj4OUMy)aXflY zJb5!@#7=I1a1rx2fc06>8PQO4($`(w%TJyC5h`xSz1&x2Q<$iRMw6-$#_JPLPMA@x z88N<4K$DazG+f|df08dJzAe{fD0V6<(_x=?30`tLO#b&=(%Y7pp)>9h-vG7c6*XVw zP2%ALM*V=tIdY_s6)N zLAnQ6U5MHrtAtpOiq%R^-~$Y%`iYn$bK-RtWd>-q6sT*y^`qZ1D^y|%PRw1xfT z#E@i(DCSjQZX3y`4aBWKD@|q)Avl+??I(M~5KtsDd=+vH;0A^V{X&!Xhy;*a-TC-! zC;LO|#fy~pilKaQ;uU^MCC0>o22zs6yp4q685cXfDRD)|bi?W=6Oluw!)(HY2{nJ8 zU+_*?(EtOL^t`ab+ggVE9NhJ@CDzq7AcYC$t0Aq9B%`5VYF)m2(D}-{l;V5~GAA#Y{*_{r^RwWh9aHfJqC~^nEYvVg^TKCI0?wTFCE=Jn}3zy zcQT@Hi|DQ20a4rPYIk9^76^2|c_?jr$lWEa@PFzHZeVQU;BMmaO?Xg;wiaD7P3+2J z5AN30yk`oy`1=PBHgKl&L_*E=D$Fx;&y^g-1-^<8FxSW68|JRy>;Jv0OJ}D3IfCwcr#^}Ebu{A=`Hn)n=oAzn67zq4tJO^oh6#WBZz+F zYNbhWl}*d5B$!19#`?V?ynVtmlOA~jtW-PyX2Z9Cgho~VL49bcRN1xR}Pl$>W(LC^) zuOEW`L#y6J)STI9j8|Q|6FDoC=3zFw#EmSo{KtZfD0RMaW56{5(_&usYQBk|F_Fl0 z-ep3!=r6r--_1)XbyabwBs*=dCFkyF|I2n7#0FQ~rWgjfd&Wlx>m@KTz4rCc`3uvO z>!h~CxYqv7_(si@kxO;)H=HP0Gg%-bjCs+%#$aAJ_67ry?bPca6TV$CnKtCDz{}4_ zhgE5Vgj@B^;a6lx1X?^XYT969eBfXUQqj&pDjG4;ufnKnCK`8>A^Ff4KAECs%^cSO z)Exa29$_X3DJT58E)T`}~CILE=HFgUjQ)LhmyRK3+ z-rC+P^Bc?;!;e!j`n?^ZVNPCJx@6=^|z zP%~C|V`~o{iUP?~{Vm7q75NISxu@u`Qp+p$H741i#F%7BsF90YvR|W4eXpkj<}ddT zdL?SE5XogSNqB-UBywc;N(r1nTBKb!ElAe-KP&LCYK7ESHctaq#%~aLhAVe`^&L0P z!$lJtIX*5t9ewge2QcvUM;~N%OmW!pKtgBkEvdxG(cyj%YiOf0fDwxuD@E5X^Bz}u{@AzHgu-d4B38f0}fzY9C+?HGC z|Aca_5p%}}SPhha-;h5CX>}hE$aFN+s?*KN1+`Il_zv_l55m|DBUoz$I-`rb0UXL47w9VszWX+Wg`v!U1CA!38VdCH<4X@lh?5C_l zPcEWV%OMl=bGTMPjd6>fZNh3OG%^}lb5knS>%qT#9iY!ifsPu78=xKc%38B|c6bT_ z1i})1W%^^h)^#y*BZuB`riVqry@iBs$iRumOvB-^!5!97DY+HS@!Um22BpKEHb zEWA?{rmH+d()f8bc1#00(J-6cMR9Z9yY9g3Oqgx2R z3}WWI5S7Nc#7mTJ#F;Sew!1p1Rp1#MuBQRNuYh%c^_J{`P;OsHECS?RCU5N$RSEo8 z2^zweP-wwX;+D>7%|w2iv;Fv<-rb+7K*#>B&2C!#I?*8q1Rz)V8>Z6qLi3+ITm_K} z%w0CY>F;OG7~ro;hi&wdsGMT5b}wl!q=A!H|Ec0~#q0J-c7-{l@~-d!>-4>nAyePI z%A@_`;L|QsS7EW%)!lYoJGFkxQjn1G6)O(rW{f(lGcm0Pzl^y|Eg@kMion5Xvl|CR zIDsthU{O*Xn}ZtThNw5&n)r313sL-ZRNnnqFLe6ERS^O2Ufe7{mXnG`HFv@q6D7Eo zu(XxN?0?(l?s8$T?(e52Bz$)dB^s+N=7N5)<5&7|aL0WLxWNk$RvU{O>I8$uYYD7k zz`C#~e|@j@iNQK7wlrFkANy9t#NxoG&~Ec(DkST%5vlIVSo+1!$QO`W?HF@(0T&n8eJXwaY};CD;`)F;B#j3? zIGz5&y85npVddY8o_}PXfGkYG731Wk2fvG~Iw2RInA*8hhavI1njlSCNS%5HJ@_qQ zDb?4sz?=&5^&#n8-Ku)**i(H(eng)6C-KgJfDj~q_t(dLZtxNz)lr7Dw@Wz8QJ2hJ?Gn?AU`9D1{*TFUX2>Q@r)$E z-@T+4p<|MNlUiOPe1~7{F^n^1U(>u^T7gl>@Xp{I;OTd=?4NRdZ0-)l`L^R|UndH~ zW%)RVoElzlN%z6uSlpx(3(JeXc$CkMOlQax9GjZ(u)fl#d&thw6kQFGPsjE%ZKc*7 z&q~w0GHXRLg+DH5(oe$;_*0zsb`LI%9;Hz}a~|yn`A`%dk6HF>_M6PT6A-z#h}Qv4k?%VPY zn7^*N7r5l;giW7^xcVx*mUdaa$rN`igNd{M!i_z0K9k;PGUXb2bKA3W92)b>%q?^z z*II4aTqUmCq}b)}i0(%rwH``nk8sD!rF#J6Vr+S~0Jl!#i zx(pRgxhtLM%hx}+IfeW4%2|fuF{~*OxxH3QceSHOq;PEHsbr0{4icqX*Y|SLa7*f@ z9X}&TGk}GMU8tC8-sAY2S>a-(TTQH_X#5ywe-MoSXjl<9C~c%6`+5c4IYMN{Eyq^< zuv*Ztr%cT`|A|~g{u)UNbNp$o<3CH;tJdCq8o}`1lyy3=m?V;YxIZ2j@E8l*Sue`W z!IaHT(Ri7v?I=1d`VYNv;eDBlsIvl;NI>bay+0{Z@n~C%t<_(+^sC|mzY07+(g8NH zQA;7YF54dM9NqA3+=l1azD|XybX0OXP1d>CZ4oficZ1Zu;&f5uf7zj}KB?b6W%9;s%5?m)X zt<_PbotWpDj6vZ@eZKf3GNGE12HqVl$2r9e*x#vnf^7AjK6iL7Ajjk39beOMPfugf z3XM#NSu)ytBo?u%Eb4Lwa2Ipc)s#OdIWAxK%gE#n?!GHvLei!kW=c|}ovqEAbJYL; zOLS*Hup>cM>~5~5>uO;3UlRPW!o6eLNRr66Onks`bE8Jtz;^xdJ_XJCEq>T-R=HDZ zBNfi^e!1h{A3s)2h5Q55;I#}y)^wi**I|SMi~mClw=s4Fcx~;&vbK5dSt22uvy0Q; zrjMDcPT`)uW+I|ZJGKin@ti!@cpH(_a-4j)M{6{Aq#XLqedFFu?j>eexN?~I@!_R) zPq>wn3*Op8YwC!2no=K0^MTbHI>nZ zr_S(9o0sQyw@ClUIx2LGLRVFYDhX3JJJl(!N87fur!cnN!SDiz^8ak+o*N@zn(Rq>h%Ec~EME)wrd<$7I}6B(s#K9-3fV8l|n z?X2^&Z^DVvu z?{a8IQKIjZjLrH5sC=g)goXMw{a2IAO$P?bxR)jh+-KZ{Mf%;iWmWpra7h&IJ``v_ z3KPI%Rc%=8H=oVyCb#q6RJNnTHTJR&1s(Vq1#gU{T$CNs>~Y`Eb4}&3>r$X04w8mU z*UmQPBHVDDxIYzBo#?&wJQ!ZORa_kZ9BR{)mKAS z8TS4%h&7aE6tCTpn;_l#>IUnk@TReOwfUi+&&+3G_6nD$c0+4TeBs*8r5CuQZ}qtd zY~|3$6^pj7#~oG9ACJMiGRZeix`?Psk&N^MLJXjz@P`l8v{U9XWxL$F;sE5oG?R4JWOf!t&SrntB+Q ze(8w{+O5(yRPNErvyYt|_Tz%MsnnRpPi8)w)5uOQ)Nt=4k97MS`y%M3PRI(LUTF&y Tr_qMBH=w3`N2yT3;>G^}=}7g5 diff --git a/assets/LinkedIn.png b/assets/LinkedIn.png deleted file mode 100644 index a97d0c6fd270b109af7e8a4e06b8efbe47ee504d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11481 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 JUbTJjKLE$y0(k%c diff --git a/assets/Twitter.png b/assets/Twitter.png deleted file mode 100644 index eb76313e82b9e5d8e81baf50e919ed867d9d3f1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13575 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 T&gy|TMVO0&hkdo}{!{-05ATiZ diff --git a/assets/survey.png b/assets/survey.png deleted file mode 100644 index d40a2be259ecc0f541c7ac4c2fa23496cdf21a21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15880 zcmdU$XH*kg`0gj6Nk;|gMX>;afQa;>AXR!(S`ei77MfHA5g~L?Iz+k<>79TmC@4rT zp-L~IcSv%FbN*+odq3W9_pW6mnX+g0%r4LGect^}TT_{uf`tMA0BThgMO^@Zf?uJ) zB~tLuzVFZ}_=nt0<+&#S&~#jUAYHCSFTst>UQeER>ABi?`MmJ327G*c?%BIIdRo13 zv%cr*VVk}w%>n>ifU4pnecuf1l-~z4gU~J9%tS!8XNl%-1wK{ln=d(-h$7@w6d{kk zM#JkU#`t)g&m3q+kNmPXG5fEaG4T32lYSQyw#Fy)^oq`pLWvbbND|`S0p!egt@4*7 zy?dw6aNHU*k<2A)8G7p*E$Hm!9nR1aSc&H0X<5yvIpz{il^aGGrQf<86h0?G@fuDN zlu7SPVg2b3y!oB8ycR zep`iK%oqrr*4$kmd@V(|oZ*WV{_s#oDJ>n{VO`0)eg<8n0Txf+G|{JR-KA=^?>*j7 zuN~wHs!z*(`E}bxEB)v^`8+rFF3-?duO7YCC$G$;Vu^=6WE=j5O2J6pY`-5LR0Ps< z!*l@cD{~`KvgNsxwhZ(oPPV*J!d;}er!qaKMT&x|yzgShx zTQ2wO>{HD1sHK8@r^JN?)m=|vODxErHtCT*l8JZC}FEH;>Tpc09VLOe6>u0xvc$>2N18|s{a9h zGa$rI;2w{jc9DYeT_pkTTwChGfEVC+EqBHB9Tq5hnuP^)j#>qsOSca9QW^9=2o#UU z7t<;XkNL2$68VK2O#XMRl_dUunirSUY?mH*A0>+)+i)$95_ ztbu{N=^xp+4H^(7x`+}PWRl~8Q)ip)_isJ>gU+mZetyuV zh`EW}eA?Jzf{F zvijuItz$M}@DQ7H{-AK_sn$Dm-V?+DjM2i(Su*9Swb6ash}_->6evBOsl#Cb_D0(t zpO~F3TqirFc_sUo0Ubc|Z_1YQ(y6s@CMAcW-68G8AHs`L*@d0& z_toZ5cjx=aBcmL|T&2D~`^XiZO{K7$ST|L*c*`oRZ(p>xiGV+%B3!de5R&mP74j-S zojgTxOlECiIjDjJx89DB1$Qyk=m(^Ye9+OWF&SxxC6ritSLA@hD#}7CjATyYg&kf7 z(_p<<1{>eSk7YO*Kc)|vH{Cml5kt>!iFqATk#O=7mqey_jaMU!sd+^Wo2(vw^rnyg zEd~|39epLxSKBd`vU1sGaoN1JI5_7^&>vc3CtE+gz|P@Ml3M2RvAYmJ za}8Vm%aikXw;;Us^;psvbbC|K=~&w**A312rX0)f>hRe^w7l~w>nM=3aa#gWb$W<$ zHnow86nMuE7!f)m2!#P{1Y5bHjQHAy2|e``0cJo5{ zBUl6W+L!OzYdI-&8t8d{=T`*e6ZCsNymiIxc6vIKF+0BF14aYgI|j;gXYpJ`8Ox6x z2NA}OA5Mruo*Z<#bNJ1S)@szUzvRDF0DP`L+bPL1Jrgao=eB>) z9A0YEuk}W62s0&v2vdqlW4ZM~9Ott@^_iXM_}fGI-9aUsfW?RC6snRXL8mUJyYF}a zqhS2v%sMBrhitWPVoi-@t4a|B1{p3E^X3qQ0SDG(M2VVkwOP>th)@<&9M|!;X zhSbmXtWTU$&WTRsVO`Dc>*ZD0^>KH;rLauoj9x>0%JX~OPHcuMz?Ea%;2!^@)Rton(cVD@b)fYN& z;B{|KtDgJA2}H73l?TqG)(&G3Iy4phK&!i~p{n3n{3re+JcKK%q?s=`980%I*Q4_@ zm2WdkBbl*>Qxy0HE2;yBIGPH!S(LU>H6Q>ApQ;kbx93G+je&z@L8-}Cif_eQ3g?B(mypWQ2 ztw@sbIYo%Rqg0#8$HK> zg#7UA%hf+0f_ipy0l-)?AcI14{zFio>GdImf`UJ`EoTJF@uxp1_$gXWGZw0SJ^IrL z)}ZmFVOcLzYK5`r+xu1gK}T2i=0zzXO1(dPj62VpY^0GASMR5ZTt}8(6SX_b%`ij{ zl>R;=Z4frP&I2%5*q9_6W|^VLsgvEa?+J+}BqoG4V|l*sS#8?_QL|D96auidn0TA$ z9=p!^=tJ+tgKc#)f2>8X!)ZRwjU&5glssUDNoX-aGmW)T?NmsiIZ99`o3X(Z;JOD^#<@C*gL^g(~Z69MaB1X`c8YIy>o%@Qhj z@*0#dRxUy{f8cLkxU(aV%!cxQY9v=&mgMCDtUgI%R|3`3k`aGOLj%@PsTm)ft}<`b zWCBcjp~b^FVl(jQ7d^g8b@!ZgG$LNuf8I{y;6{5tN@S@@4(KB&LJjPB0uWfHd>y8R zc=?-Zu+tmiQ6tffxf8>`-={lusZde0F^LDL8G7C^97hQAnNg#;8~Pg~Gltr9FytY^ zb5b!ZDo^&VO`pFrFdj4ai&g5nOp^0UdUU1HlP}IeGbkq76zvNeAfOVE0@b`Vey%xIeuyyel&A+{F{qj%?-xDju%4K}rx-&00C>8ln3RI^)`hcUx zmDJwi#q-|#NFb?y@|{82GtMdN`gsz~%*M1}qx-_gKj=Ml%X`2Z`t&%lzke;AA*~wA zb4$2QOTpqysem?K?Z||J7$L#iJ)nD~9!5+lAae|5om1YlF`5|@H`_t*` zZYeByv6%P=t+EqZItKSCUS0X{WmWTdx zFxUS}2QQ4%08P*nNhY>Gp*adNFH%W6AmJ3wT`VHZ*7{a!4|<&keFw{vR51u*z$y$H zr%m(%U3 z+zM}N!~-vvLIBHm8X@HUtcPpGxiF#Q*tQ(fYMT{RZ{h%FWk^T@61XY79*AcJ9hoC;s=)N+)hV;Pe0wGll#wEH!*x z{?7|3r3LCYIREc6FTod^L`A~Y`8a&Sc+5^p$;pY+0rpGTj1ZHbfmT1-wc1KCjsApf7;St=a9(i zOtQyi!2*Bq+_~rS4ke;#65}hMnGvR=@W$OAXQ75$W2i#-hMuw(nu7mOzq(+p`kIE_ zNYm0&L&w@~INK~*2cT1BSAHD0+#goENfA7sEpr++q<^<%`M%b2A7b>zs1<6npKyLc zIWavBg1^#=Rxmznv)&DXUm2)M@|ZtpP<*h%tGM8VVPA1Yd;V=FXk@kw$j~zEcMR_| zzzBw zKmER3Fdq6kIQsnM`aPM(7_0mjj3hvOh2L@obuhPRTw>NV{Zyt0t?PJx%M_a|y%=G4 z@*3uHoEtr$_?Sse&evoANJDHZa&zBrc>T;tS)TdxxSza)+-Y6mMchR3Yg$Yze3KK$ z6_g{=NMbSCZw?YSsh^y-@=*wuNkxbP6m$0kadzHbsoU=vrq-Z231ARs2R|wv(RYTa9z4G|EoeXJeG+kwCeVQ_3U!A;_b#vdf`V9`6tE%;~WiFdNctykzZaSa_f>l z1aCL~ym2`~{XqpnBUC5JgB`c|cl@;9IkhyG&smD54Fl--g~|Kp5DV^n9J8$6`0VRF z>A0*l$WV1>wcj~le+Yq_z)Yd8%QeKRD7Dw8MPJjj>j!IQ=b;dT6>kd$@A2t!0SJ#Ie0~FXdC>SDi)m!?b-)X9* zOptlxas)LVj}w~h5!bRVcl2`tYHy$+FM1a9l}C<^Yh;gO#CG#d?SH;98Wr@6ns6sn z*+LKY8O6?g*jASqTy$VWz+VJ-f`spbAx1RpPbl&ZN5)=jwf}2WsyU_C=s{Mm6Q>`! z_$2#U1!Gh;PB3%Ju3NnJ8BtsD7p17dHTFvf4QHCN$DF7_xuMjcxY13W$qvGt1MK8R z7vZT|Bb>P^7!YR%gGcN5u0ZxxW_*ZjTw?2aN7yOpTY^mO7UjW4%3q%}_(buN7(Gh{&T zxT>Wi-`_a@$_X$znhLwCDTM!}kY`exIez{qK(mr}dxsJC!ug(bX1Y;*Mi~vjEe~nq z6-}947?_OP59Z)6@|hhaJH==04-)u;=4ZxjS$?N?uh0VAkHF(H`_0odyx%rG#;t4N zV3?Joc~QJ;QdqnP+iIt}L@yLjih_pd8H-O9<<>rcId-gvau|DV1Q9}!xmmsy#{q=Y zEUcX+MKy?$Q-pPCR0_|!%)OA?K4 zF7~o~t}Ya>+)Z|l@F?@YC0TW)(6%CNK#0GtrDwQ$C;zzvXE!53)R-lD+FkZ79%!@E z0eABDtsqDJO3G?87e272HmC{XiQ0<59ZmuVN}SI>CRm;5d3Guyzk439K;?zU9)(~2 zC^o!usy>;JF)e0X_jy}1Z9x8Auu>0iuR-t@zLuXMG#XxX%f5*NH7r6=!#oE9hq=89(Au@VdS~~{I=N8N&$)OiWTE;Jq3da zINLKNNLwT`_tfbwoS zvS|>AjZpXMuimNUZolF3$x{D5@9O+$KuH-#)A+IVa+8DO)1?i5>%{p66Xh z;Oo<}E!lEgANFc?l51eq9R#SAI9oee6E#A|qrHYP2~uZ-{l2W>^-P&sD=wu7iq_3n zv%Ck(SnP5rIDXPw;~yZC)qCWGP|afo8V2KNjVBZJXgyljpbj|IH*IBCH2&bEtk$aS z3K-FbA7CacWmCk;`|VC7erDnbzI&Pv&vKnOCKMZ<@_`4~M0;V9vnEV>JcIE|4CT$l z!MdY9ZZn*VRXg&9=OGav70Fva=Ox{@UoBsku@=b}fK=UK&6E-u=N#+}y^gs|XB9+O z5)jw-?8>dP?x+L@#|NiB)aqWQLt`W!o@q4}IAo0~ozx?AWNe`~uaE$@YAhO&K7zcz zb6Q?zAy=;+N8V$aagu^sIt7^^P49e+9lgzNWRx^1%Ge<33U}u$OS1Kvx|N}KOZD!u z#^Q=q(r?j=(F#!K0eB>=K4E4Si(9Psks}Q6*+oZFh4kMDr2Y9^YO4j#Z^A={dS$c% zSyob{{JB65f62f==BR%O$M=G^QtI?4_XpDnjtA z=bO?PVN0t#k>|f@dI-SZP$-?Jt+;K;$j~_AvR}FB@4agi2ncXX0TL>qzd+1 z_oJhi8s0y^q`OK{07+~lT#t-149yaP-lk<-!|3pt*Zg!)b@*uG?|C7ND`(q|-~3Et zF-vHCO7KPc_P@QB>>|X}5#p+s?V6)c0wbK{?M9MsbK>uH7p#P2A;%ub=z7C5q)aDmu32L58 zL>TwZH}N_XFZCVQz<*9%kPu-ID!xpAQ4ToIT)T8sA_W>o2m^!LrR17T6PZ69+&jk+ zM1Zw2L?tKGO&)WuF|oL%o%8b7p_Z-C#wZQJ0J{w{s2a@k+kEZ-H+JrVhE(PPH-B*i z7mhGwr3%h~{NsI7{4*TW0z@f6B8yFh?4%w$QHM+X*Ej$6qj!0E zT*1C}(I@qCAA>sphG?-2u3d`OYJy79W3HMZ)?q`8=7WclXP#>-?Ao%kI(=#*x@P(B z4u(CbT$2^8a{;c(hb@=aDwYGC{ki|_Sj~RBhE(r^SD!l>WjPAMB|`B7X=MZ6dxdL9g62g#s`f=iz91AJw$x{WhDK55vOBVG1K%o49jU{#oG*DT zt7%P7^+jV5KZC&`Fz+gI_!`+MhZ=t*ejT8y@y77()<$Ap`oaL=21u zWyr101~f-*_u`JO$83&#q0C-mnzhQkOF|J2#>3`(XFLR?Q1lO?l_RdRoJv6IkIu<~ z=P;gU#I0m4tB9Gi;Km8*w@0iG<}s)tbjyBPEAECXQFH=0(UoV)8K8rApx~T4fgn=J z19G6=Y~(fmfjf7OT5zUD&N2NhN5MC;=2u4cY*xWfag|(QU<;0qxL;<0hdixR!~xaU z{i2JLkBS6fSjOLZMe+nexX@_{D}uOeHNA((0{*^uA|?<%losr^D#lL=*h3F}A}FB6 zWk2l>>6Jl=O)oP)-7GQ`G5S6m2df$~a26H02Z%F+Zag+skksGJ;8DXlia?N(e2iV$ zJ{Y5HEjQg*n|N>5fUG~@h!{A^<_VgInIQY4Jm)>PIDu|Z=Ds*-=Oa`%?Y@>jU9D=R zfrp=NH_1qFn}))w`bW!&zz6ASy7}|{(V86CyL)bGu75XreOV^q=t9*$6Rn&N*bCRD zC6pYu6Mn&wp0<_yv_K)~mh+N?dd&zbwek~I_CmA9rOzQa+dfjs0li5VxYehl=BasK z1Aqz4BhXx3WJhv-Kp*UV{gSdDdl-It;`x2%4DD8q6uEu>l&H<^f`~9jh#*7Rq}0}P zWSBphCQg*Y7)$8v{2H&;FmTW_c1#9zfUZ5S_rbL~{@^0@(}|AoMA=a^h~A>;Kt&{XMwMZ;(wOtsTTQWc%>dLIW6g;6~#BJF4jlrWL8WtAY@DrP+_F{e7tuapWWh0Oet^r&}0N? zQ(ZJQpL;%{fnif0j~L#Yi4GaZ06=`#0}Ad0kNjBk^Z{6K(}Q%Va!JL=N)+V=>hahE zeXwCU1{@3>UIYpXLm%(N>fM-@?y@u0Nbb#^EGb=js&f&>x~UJ2hf1Ft%uj!ambY%> z5;=EF?v29!@+Gohww|j7HCq>M25pdFSJ&!55b~Ni9X+s(ZOv&)`89e+@HtPct=-j_ z8CfOkO?_oCepU=#+&ZKG31z}rJnk#Xe1x6$v(2`$4(V>IY@Pq>X~I-j^4@b9waNu^ z4V~({f^J^zlND!|rkcMdtFCksI9(=l`=l#0=f-BdA3c?6Xi><<|EvPR<_5?u9%oIH z!hUR98zM1F8tO}3HQ=Bw7vNQfWs1x_8$p-b!a=?wO1Zfg6_udsr^MORtLN-}()xDZ z?w6~WegdcKcrj5R5jav6wC;SpTg&|qEsf~9?#DYeS7!c1gYy@*jNI%jwc6oK_5yRX znp;QV#Lpf>37lX%t@Jts!HJXtOo|VT(|X2%wCb#@8}xwb_NT`Re`asZ)4UXw6wd{}-x9}&=e`VWL@8{ zyRKwc8h5g|yt60&vt=veW242cI7ZlloCL7;Jh)=C+{<>N?6mq=S>%rJ1iR~Ev;8T- zFhhY{{--J2rU}2){r%tf(cQ_k`r0TU?O|9V^v(lT+@ZCTie!AOpjl3Ei*-Z6!%AK{ zq!AcDlS|3YcWt!|AK*xLN{GHI&|ShO5V$788@Q-U;ymuRW<=JT;kBXP{?tGE>ytmp zRkznGnX&%oHG%#PU9#BCH6vJ-ZN0mL{b>L3ghQrSv4PR=tj`5bo&Pr6?tAI+vfl3t z3&lwNJu*?)vmji|!^BSJmc3WX>PrnCALB9%yS=@>Z>Tm}9^M4!enln{!0PJoNI1AMY+un8h&3+ybLe}fLUG*jh}VQQl^{$i>v9t{{cs%U((A>O*b` zr}^J|8$IT1DY?zwmbV}ptsuep^T<%q$Pj3}sn1i{77~HEX7bT7KE5$d z#iD682F%mH$hc0y(;oJNuIuBC>ZU|zWgsL03|v1;v^Pu_>4!&;73tO#G>JHas_$a^ zBy@{k;yg{=vQ`XM?%RAtURvn>H`B7>QGVAfEK~d_2sZjhRR5zn$%QbPDAi4UjPQ-p z&Y@Ll*LTsr!H|$+5I4S!Pg}>Z# z?s5=yZhU~#1bqPeIzj{uDH;8bI`$quZlqG-b8IiYhNtZp45$1Cc&*PyU1^JrU0O?(jYNYYUfEzm666t~v5mbwB&gOlb$_pooB+5Gq0j{p^l|Gxm} zU*l@mi7dp7gu#nztdIyV>-~1BoA(Zk1XI!Z=BlJxdNlYZj58m`_)Hi$ms}7G7&BHW zYW<>|PRTlac~ggpw08bkA|=`IRk%IuiwSGB;cv~-rTV?$wdgu_YM?s`8Ye`;P~Gsw zTndM!NSX{KyhISc-S_&U=G;pxu-mIQG6X7Rz`C6ygqWG?tj1=A9E2vTZMhhtM{f-m zIR|sML$Ex6_BHyDH!I{#)ebAd-r;FMy$nIQRRu4)?Qv#!N znoJLXRgbKo38qyi+@k0CbNKb)MT@=(_LN$| zNh`3YY%JSSaNP!fGem^aoU+$iee0DMZ$l;lmSC7bZ|X(eZa2tt>Y42?{)3)1qipP@ zitnuyfV(^hMbIijH6BSwY81sLe~9@BfJD|H+oC1?QBc zKY}n!X?AmE51i^I+l4(ecOcK|6aA{g#6`v5-^$Af!ZCdwL9zvBjdzRYA`&N zL#11e-0?O5C;D~}N$ivx^Sef_1rJP37WdF)}Wd z)(Q?f@%syRe`P8f5H&5~nE={Z;^1wK1fuuf%L%u2$n?R$brpMG;_re(3G`_EOG+p_4Fx|mfxt-^wsSz6O6}m~t z^eKAyyC=kgGyAbV+e|8lZzbqQ6hw;{OUjwEAMHL*thVe_ESv7n9mX8l`xv1c-=0|# zM>kZj+dVd`=}jB^?DIP-&t0dLF&vCz&6I)Jkc0#cPLts#Q`J!NjOl=(Nb)k=gaySw0j@o3q0|aQQ&g_7n5~ zoQNb=+Y2d-_dIfPVJ6;(i;V+*Rcuq$lLnqsD`eBkS@()iKL&N!l^gB-_Qmj!i>wbJ z{tNGP4j+ct&+xUMKFVLNCBBGa#+oh1tj%V=1}WJ*Od&WWbFru;98~-nYE)Zsc|(n7 zpZcbJcH0TQ;59ip`R$auer(Ojedz|BiygG2l^0g`Kfecj4g5u=uE#|F_XIEW#=$-< z0qy6lRaAokApz!>i)`fo&qrDXReT@%{%+`ridIno$KfKal^l#o?MP0C=k!nZlK<-N z-iZoGIc_!Ic%8>M5dIcH)7s#|~yYvA8nv zQ3DfhN6_`r1zn$nd6lh}&t7Co_;U%EqdCn!?#?;PgqkVFNvYAFobv_1L|vXGUbbf= z)%fzosx043P<74$ic#(?_(<2NX83~P9)SL0%1p!LAoEpqk+Ex0Ge?E)F-op-Zv((< zT%gYTWi=nOR9!0#>tFS*#+yH_&dEY_kbuP)i$lH?%5(8Kekfzy#cT6dH_r`#&Y+ow ziQB`b37I~#x!Q#0X(xY#w20oH?lGmo#Sejojf@#?jTIdK!zfbWW;MeGj>ZaQrf<>G z;t>}v(T1sV(~*?_+Tvfa-I$?pPj-#$xXJL+X3mxA8q9tf`038QhjFJ9E*s~Y`eKn5 zMED!dVx(s+MZ*u?l77&chgK6ULp9QBLruOrxg3@<$x3KyI`zUFWepV&f%7F-9?b#m znq!~y@X2EEnaklgtn87zvt_s37it=SY_M~2fsLnIH zn9g;sfP;1;HbBen06~M%vA9eEAV*AX_bb+=8?1zQQ9UeXelI*2KjXLKZTFRIQ6Tih zKc-tLCkxKcVhd170A0VlUl}hu7x?jxsf{JQNjQxDrvrB7{Xrx6I3koua!9TSh5j-O zr@G*o{(EvW!vj~c=#LGrrp2UWCQrt$b)@@DAVQeVc5J%Af#|3tD#3qdF{>a(un%`) zVp#8S`Y%>CO1gDeqc^3k7J(kSYN36}EYTctx~h7D5>*LyS9?E0f$20x9Zp&19u z+Iy`n^Lhh}!Mub$*U|mg@8cVHnqpdATKpNfv8AD*I&}`F!$~04N(VryfKmWz4%7O2 zm9__h<|}p%A6@P${v5w*0%jCM3$V?6TMZ!xvxa_}HH;0Dct)Msft2LUc;~1BJztg~ zmW+(mc{tjeZ6gJ}Fn<=J<6Y3*0uF~k-z|-(Yi?07yx5yy@$Lv)1t*3GFm&X7c2ecs z6>pjh^|18$2#Bu@M%~2|mKd9*G&5=ZKiBfib;ka14eu*?%n2J2z7Y9kgy6 zQ)K^J6!Un2ywxXKb1ZKnAFQ0mp-62#l(t!q@hOL`6oq9@S%L9U%NDz2ux=@q=OP$a zY3v)(Plno!Fo3ctpO*EQg0?R8)>Zq`;t^Wc7E_q1U;H&Km*kF4Ao|aKfiZ5b@`*97 zBH159-~Do+qKCrzsMZgWwk{nACOVwayuEYobNc~n%h7!!%7Q^vt?$B0TM~{D)1D(# z2h94enl|C2GYHy#SR2ZdK(Ovy%TG8TR zyQP;#w!eioyf|~ystcc&QG+q*NFLB%ik@eax??e||BxLL;{3Vpe{&z`^bqyA<`1uf zhK?eqQRRnSFm%y<>wDidc`8s`l}v!Dlg{Ma3GxjBrsu3Zea%*ZX=P*4NW@+Ov>$)~ z)!-r8YyYoRRCfFA=pOVRO44w*L5{Y{yBlT z!rUn?*=6!sq($NamM+YLPwn;tl|z_+GUAzD9!H$6CltZq^rd5(Xz_ zR=rN~5(AJ5+|yHXUXC&f%3f6hs6M;^c%jco%{+e`E&Z^f8Zgo0Y)(Yk&0?3 zmn6h;k%AwRL`jnKl;+^pdYM0sW zx>QQ{W@6^MgF}Nh(0z03t^Zz zgjM63G9y_m1EBPa_Hh~JH=hG28oF0jLQstGN-*hnv(%0I>HGPnlzQ* zK<{s<9t++Qn7CMleH*dA%du$%X>)TPlgXKqRx^XshX`-aP9RzS#>)fZWzC#x@zkLI zauZ5oLB)nWI!HWtl>?de;xHfmz8Y-x1}dbK6;!6R4zIXQ2WT$kXA=1@9e~!(mDf+EZQ-%ckw!-5>34ui^UJ?p2_g zfM~hHeZ)Xkyt)XW{Q^8w`@d9r_9;KC_=myuw;n9NL{^M$P{@a~{2-gC_t9oO+Le3? z$gh6i<_-C>+Z*@tD-95D^O(WO_Mf!_$|d!lH;J+ih(hcr8Jdo+c9jE62GfG?cEGg< zy~WKH`OkLl0-bCXnR8`OntEu63T4N35tb_d8X8LHkckDos^tnsAo9T-A=E_gKkE)C zTDqK-eM_&KyFq~dYsBER!c%jM)uL5c9_aggm-xlv`FM#QVq#r zj4 z_3K$AZRA^3;JuOVg88bEd4I@*?WGhXzEuMI@O!5z%SCyb#2ZL3hjro20ITiB$Fn>v z8@Mh5y8UgcKzmUVT)5`mYZ|KiVBNb#s(UFU@(Ba>d!w}?%?5qiPXyEe zK(j+Ye5N)t*VNJk;5hx3r(D9fVIPw9DBCI&!X+7Wc+j-uQp28ivHNCmw@B~{sg9j< z?X}(tumkB>WX!sPkGn8Rg1^vodT0E=tl_b?t5jDy7$$a5Fur{#=LbXzA@6LqSWRQV z^zy=IV3lv4Nw zufI&XJH8DpAIcj z`zTVN8%x+1`;A+`Z53xIf9qmFMt>?L1a-_DoVIh4JbHFnj+VRl)_QSncMUrU@VB7r z!#2WoQkc*LE)O%jOk{qm{*Y48d^*(!oqCrzrnaiN_%^mkbp5C2u_#2ITza#qoqYzs z9cJWAR!kht@4B-o*nE!m_r!CafMpN5cBxPsl&6(Qn{yEZ$iZBp^Zgc|-m{eG7s%n@ z7b+5=j_B>vggc>Q`T#x)57Y3Y{FWmEqt6t&z?z5 zbFMphY;1$)xXbkVGl_+_qP2S}T@T40zBC=SVRNAd+Q^w!nZuV@19759(*!a-Qm5r& z{b;TZuiwiL%`#~zv+uo;6f?TC=Cm9iU74i=F6^mU=2_e=C60R*uI)b(&*A-QZwrQY z+%&|5=7s23(YrL;4t@*8&vsCR-Fn2-%m2nEj5A{R1(%rq%9wA`jOQo5KAi~>H3=pA z(Rkqm$LQ!eMry9z(_05>YX)|QKl<<99vW%;kV>{2K72%&4l~C { - console.log("Created repeating alarm for backend pings."); - }); - // initialize local storage - // init value false - const toggle_keys = [ - "Enable", - "enableIntervention", - - "TwitterCompact", - "TwitterInfinite", - "TwitterNotif", - "TwitterFeed", - "TwitterDesaturate", - - "FacebookCompact", - "FacebookInfinite", - "FacebookNotif", - "FacebookFeed", - "FacebookDesaturate", - - "LinkedInCompact", - "LinkedInInfinite", - "LinkedInNotif", - "LinkedInFeed", - "LinkedInDesaturate", - - "YouTubeCompact", - "YouTubeInfinite", - "YouTubeNotif", - "YouTubeFeed", - "YouTubeDesaturate", - - "TwitterAutoplay", - "SetTwitterAutoplay", - "LinkedInAutoplay", - "SetLinkedInAutoplay", - "FacebookAutoplay", - "SetFacebookAutoplay", - "YouTubeAutoplay", - - // feature questionnaire sampling - "sampling_feature_lock" - ] - - // init value null - const temp_storage_keys =[ - // data logging and questionnaire sampling - "last_active_date", - "sampled_esm", - "esm_in_progress", - - // feature questionnaire sampling - "sampling_feature_site", - "feature_before", - "sampled_feature_questioinnaire", - "sampled_feature_questioinnaire_in_progress" - - ] - - // init value 0 - const counter_keys = [ - // data logging and questionnaire sampling - "last_esm_time", - "esm_counter_today", - "esm_counter_total", - - // feature questionnaire sampling - "sampling_feature_lock_timer", - "last_feature_questionnaire_time", - "feature_questionnaire_counter_total", - - // feature use - "TwitterSeeMoreClick", - "FacebookSeeMoreClick", - "YouTubeSeeMoreClick", - "LinkedInSeeMoreClick" - ] - - chrome.storage.local.get([...toggle_keys,...temp_storage_keys,...counter_keys], (result) => { - console.log(result); - // set init value to false - for (const key of toggle_keys) { + const keys = ["TwitterAutoplay", + "SetTwitterAutoplay", + "LinkedInAutoplay", + "SetLinkedInAutoplay", + "FacebookAutoplay", + "SetFacebookAutoplay", + "YouTubeAutoplay" + ] + + chrome.storage.local.get(keys, (result) => { + for (const key of keys) { let currentKeyValue = result[key]; if (currentKeyValue === undefined) { let initKeyValue = false; chrome.storage.local.set({[key]: initKeyValue}); } } - // set init value to null - for (const key of temp_storage_keys) { - let currentKeyValue = result[key]; - if (currentKeyValue === undefined) { - let initKeyValue = null; - chrome.storage.local.set({[key]: initKeyValue}); - } - } - // set init value to 0 - for (const key of counter_keys) { - let currentKeyValue = result[key]; - if (currentKeyValue === undefined) { - let initKeyValue = 0; - chrome.storage.local.set({[key]: initKeyValue}); - } - } }); } @@ -146,357 +43,16 @@ function settingAutoPlay(site: string, toggled: boolean){ } } -function cacheESM(esm, webpage_screenshot) { - console.log("cache ESM in background..."); - esm['esm_screenshot'] = webpage_screenshot; - // console.log("screenshot: ",webpage_screenshot); - chrome.storage.local.set({"sampled_esm": esm}); - var timestamp = new Date().getTime(); - var questionnaireNotification = "questionnaire-notification" + timestamp; - console.log("send notification for a new ESM..."); - chrome.notifications.create(questionnaireNotification, { - "type": "basic", - "iconUrl": surveyIcon, - "title": "User study questionnaire", - "message": "Click this notification to answer the questionnaire.", - }); - chrome.notifications.onClicked.addListener((notificationId) => { - if (notificationId == questionnaireNotification) { - openQuestionnaire(); - } - }); - chrome.action.setBadgeText({ text: "!" }); - chrome.action.setBadgeTextColor({ color: "white"}); - chrome.action.setBadgeBackgroundColor({ color: [255, 0, 0, 255] }); -} - -function openQuestionnaire(){ - // move the sampled esm into in progress cache - chrome.storage.local.get("sampled_esm").then(function (esm) { - chrome.storage.local.set({"esm_in_progress": esm.sampled_esm}); - chrome.tabs.create({ url: chrome.runtime.getURL("tabs/esm.html")}); - }); -} - -function openFeatureQuestionnaire(){ - chrome.storage.local.get("sampled_feature_questioinnaire").then(function (questionnaire) { - chrome.storage.local.set({"sampled_feature_questioinnaire_in_progress": questionnaire.sampled_feature_questioinnaire}); - chrome.tabs.create({ url: chrome.runtime.getURL("tabs/feature_feedback.html")}); - }); -} - -function diffAfterFeature(feature_before,feature_after){ - var diff = {}; - for (const [key, value] of Object.entries(feature_after)) { - if(feature_before[key] != feature_after[key]){ - diff[key] = feature_after[key]; - } +chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { + if (msg.name !== "autoplay") { + console.log("Ignoring non-autoplay event."); + return; } - return diff; -} - -function createFeatureQuestionnaire(){ - console.log("attempt to create feature questionnarie after 3 minutes..."); - - const keys = ["sampling_feature_lock","feature_before","sampling_feature_site", - "TwitterCompact","TwitterInfinite","TwitterNotif","TwitterFeed","TwitterDesaturate","TwitterAutoplay", - "LinkedInCompact","LinkedInInfinite","LinkedInNotif","LinkedInFeed","LinkedInDesaturate","LinkedInAutoplay", - "FacebookCompact","FacebookInfinite","FacebookNotif","FacebookFeed","FacebookDesaturate","FacebookAutoplay", - "YouTubeCompact","YouTubeInfinite","YouTubeNotif","YouTubeFeed","YouTubeDesaturate","YouTubeAutoplay", - ]; - chrome.storage.local.get(keys).then(function (status) { - var sampled_site = status.sampling_feature_site; - var feature_before = status.feature_before; - var feature_after = {}; - if(sampled_site === "Twitter"){ - feature_after["Compact"] = status.TwitterCompact; - feature_after["Infinite"] = status.TwitterInfinite; - feature_after["Notif"] = status.TwitterNotif; - feature_after["Feed"] = status.TwitterFeed; - feature_after["Desaturate"] = status.TwitterDesaturate; - feature_after["Autoplay"] = status.TwitterAutoplay; - } - else if(sampled_site === "Facebook"){ - feature_after["Compact"] = status.FacebookCompact; - feature_after["Infinite"] = status.FacebookInfinite; - feature_after["Notif"] = status.FacebookNotif; - feature_after["Feed"] = status.FacebookFeed; - feature_after["Desaturate"] = status.FacebookDesaturate; - feature_after["Autoplay"] = status.FacebookAutoplay; - } - else if(sampled_site === "LinkedIn"){ - feature_after["Compact"] = status.LinkedInCompact; - feature_after["Infinite"] = status.LinkedInInfinite; - feature_after["Notif"] = status.LinkedInNotif; - feature_after["Feed"] = status.LinkedInFeed; - feature_after["Desaturate"] = status.LinkedInDesaturate; - feature_after["Autoplay"] = status.LinkedInAutoplay; - } - else if(sampled_site === "YouTube"){ - feature_after["Compact"] = status.YouTubeCompact; - feature_after["Infinite"] = status.YouTubeInfinite; - feature_after["Notif"] = status.YouTubeNotif; - feature_after["Feed"] = status.YouTubeFeed; - feature_after["Desaturate"] = status.YouTubeDesaturate; - feature_after["Autoplay"] = status.YouTubeAutoplay; - } - // compare features before and after - var sampled_feature_questioinnaire = {}; - var feature_changed = {}; - var feature_has_changed = false; - for (const [key, value] of Object.entries(feature_before)) { - if(feature_after[key] !== feature_before[key]){ - feature_changed[key] = feature_after[key]; - feature_has_changed = true; - } - } - if(feature_has_changed){ - console.log("changed features: ",feature_changed); - var current_time = new Date().getTime()/1000; - var date = new Date(Date.now()); - var sampled_time = date.toString().replace(/ \(.*\)/ig, '');//.replace(/(-|:|\.\d*)/g,'');//format: yyyyMMddThhmmssZ eg:19930728T183907Z - sampled_feature_questioinnaire["sampled_time_unix_second"] = current_time; - sampled_feature_questioinnaire["sampled_time"] = sampled_time; - sampled_feature_questioinnaire["sampled_site"] = sampled_site; - sampled_feature_questioinnaire["feature_changed"] = feature_changed; - chrome.storage.local.set({"sampled_feature_questioinnaire": sampled_feature_questioinnaire}); - var questionnaireNotification = "questionnaire-notification" + current_time; - console.log("send notification for a new feature questionnaire..."); - chrome.notifications.create(questionnaireNotification, { - "type": "basic", - "iconUrl": surveyIcon, - "title": "It seems that you made some change(s) on purpose mode!", - "message": "Click this notification to answer the questionnaire and let us know why!", - }); - chrome.notifications.onClicked.addListener((notificationId) => { - if (notificationId == questionnaireNotification) { - openFeatureQuestionnaire(); - } - }); - chrome.action.setBadgeText({ text: "!" }); - chrome.action.setBadgeTextColor({ color: "white"}); - chrome.action.setBadgeBackgroundColor({ color: [255, 0, 0, 255] }); - } - else{ - console.log("no feature changes at the end of the lock..."); - // reset feature change cache - chrome.storage.local.set({"sampled_feature_questioinnaire": null}); - chrome.storage.local.set({"sampling_feature_lock": false}); - } - }); -} - -// This callback sends a ping to our backend containing all the variables that -// are set in the extension's local storage. For the purposes of the ping -// message, we need to know: -// 1) The time spent on the sites we're analyzing. -// 2) What features are toggled. -// 3) The user's UID. -chrome.alarms.onAlarm.addListener((alarm) => { - chrome.storage.local.get(null, (result) => { - /* update questionnaire status */ - console.log("check ESM status..."); - var current_time = new Date().getTime()/1000; - var current_date = new Date(Date.now()); - - //check if ESM expires - if(result.sampled_esm !== null){ - var esm_time = result.sampled_esm["esm_time_unix_second"]; - if(current_time - esm_time > 5*60){ - console.log("sampled ESM expired (5 min), clear sampled ESM..."); - chrome.storage.local.set({"sampled_esm": null}); - if(result.sampled_feature_questioinnaire === null){ - chrome.action.setBadgeText({ text: "" }); - } - } - } - else{ - if(result.sampled_feature_questioinnaire === null){ - chrome.action.setBadgeText({ text: "" }); - } - } - - //check if daily ESM counter needs to be upated - if(result.last_active_date !== current_date.getDate()){ - console.log("reset ESM daily counter..."); - chrome.storage.local.set({"esm_counter_today": 0}); - chrome.storage.local.set({"last_active_date": current_date.getDate()}); - } - - // check if feature questionnaire clock is up and try to create a questionnaire - if(result.sampling_feature_lock && result.sampled_feature_questioinnaire === null && current_time-result.sampling_feature_lock_timer > 180){ - console.log("create a feature questionnaire"); - createFeatureQuestionnaire(); - } - // check if feature questionnaire expires - if(result.sampled_feature_questioinnaire !== null){ - var qusetionnaire_time = result.sampled_feature_questioinnaire["sampled_time_unix_second"]; - if(current_time - qusetionnaire_time > 30*60){ - console.log("sampled feature questionnaire expired (30 min), clear sampled feature questionnaire..."); - // reset feature change cache - chrome.storage.local.set({"sampled_feature_questioinnaire": null}); - chrome.storage.local.set({"sampling_feature_lock": false}); - if(result.sampled_esm === null){ - chrome.action.setBadgeText({ text: "" }); - } - } - } - else{ - if(result.sampled_esm === null){ - chrome.action.setBadgeText({ text: "" }); - } - } - - /* process ping */ - // add timestamp - var date = new Date(Date.now()); - var localReadableTime = date.toString().replace(/ \(.*\)/ig, '');//.replace(/(-|:|\.\d*)/g,'');//format: yyyyMMddThhmmssZ eg:19930728T183907Z - result["timestamp"] = new Date().getTime(); - result["local_readable_time"] = localReadableTime; - - // To preserve privacy, don't send the screenshot and window URL - // that's part of the ESM data. - const esmAttr = "sampled_esm"; - if (esmAttr in result && result[esmAttr] !== null) { - result[esmAttr].esm_screenshot = undefined; - result[esmAttr].esm_url = undefined; - } - // remove esm in progress to ping - const esmInProgress = "esm_in_progress"; - if (esmInProgress in result) { - result[esmInProgress] = undefined; - } - - - // Make it clear to the backend that this is a ping message. - result.type = "ping"; - let blob = new Blob( - [JSON.stringify(result)], - { type: "application/json" } - ) - fetch("https://purpose-mode-backend.nymity.ch/submit", { - method: "POST", - body: blob, - }).then((response) => { - console.log("Backend responded to ping with status code: " + - response.status); - }) - }); -}); - -chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { - if (msg.name === "autoplay") { - console.log("UI wants the autoplay of " + msg.body.site + + console.log("UI wants the autoplay of " + msg.body.site + "' changed to '" + msg.body.state + "'."); - settingAutoPlay(msg.body.site,msg.body.state); - } - else if(msg.name === "test notification"){ - var timestamp = new Date().getTime(); - var questionnaireNotification = "questionnaire-notification" + timestamp; - chrome.notifications.create(questionnaireNotification, { - "type": "basic", - "iconUrl": surveyIcon, - "title": "User study questionnaire", - "message": "Click this notification to answer the questionnaire.", - }); - } - else if(msg.name === "open questionnaire"){ - openQuestionnaire(); - } - else if(msg.name === "open feature questionnaire"){ - openFeatureQuestionnaire(); - } - else if(msg.name === "cache ESM"){ - if (msg.esm) { - chrome.tabs.query({ - url: msg.esm["esm_url"], - active: true, - lastFocusedWindow: true, - }).then(tabs => { - if (tabs.length > 0) { - var current_tab = tabs[0]; - chrome.tabs.captureVisibleTab(current_tab.windowId).then(webpage_screenshot => { - cacheESM(msg.esm,webpage_screenshot); - }); - } - else { - console.error('no tab to screenshot'); - } - }); - } - } - else if(msg.name === "feature change"){ - console.log("Changed feature:", msg.body["changed_feature"]); - console.log("Value before change:", msg.body["initial_value"]); - const keys = ["sampling_feature_lock","last_feature_questionnaire_time", - "TwitterCompact","TwitterInfinite","TwitterNotif","TwitterFeed","TwitterDesaturate","TwitterAutoplay", - "LinkedInCompact","LinkedInInfinite","LinkedInNotif","LinkedInFeed","LinkedInDesaturate","LinkedInAutoplay", - "FacebookCompact","FacebookInfinite","FacebookNotif","FacebookFeed","FacebookDesaturate","FacebookAutoplay", - "YouTubeCompact","YouTubeInfinite","YouTubeNotif","YouTubeFeed","YouTubeDesaturate","YouTubeAutoplay", - ]; - chrome.storage.local.get(keys).then(function (lock) { - var current_time = new Date().getTime()/1000; - var last_esm_time_diff = current_time - lock.last_feature_questionnaire_time; - if(lock.sampling_feature_lock || last_esm_time_diff < 30*60){ - console.log("does not meet the feature changes sampling criteria:"); - console.log("sampling lock:",lock.sampling_feature_lock); - console.log("since last feature questionnaire submitted (seconds):",last_esm_time_diff); - return; - }else{ - chrome.storage.local.set({"sampling_feature_lock": true}); - chrome.storage.local.set({"sampling_feature_lock_timer": current_time}); - var sample_site; - var feature_before = {}; - // determine the sampling site and log current site-specific features - if(msg.body["changed_feature"].includes("Twitter")){ - sample_site = "Twitter"; - feature_before["Compact"] = lock.TwitterCompact; - feature_before["Infinite"] = lock.TwitterInfinite; - feature_before["Notif"] = lock.TwitterNotif; - feature_before["Feed"] = lock.TwitterFeed; - feature_before["Desaturate"] = lock.TwitterDesaturate; - feature_before["Autoplay"] = lock.TwitterAutoplay; - } - else if(msg.body["changed_feature"].includes("Facebook")){ - sample_site = "Facebook"; - feature_before["Compact"] = lock.FacebookCompact; - feature_before["Infinite"] = lock.FacebookInfinite; - feature_before["Notif"] = lock.FacebookNotif; - feature_before["Feed"] = lock.FacebookFeed; - feature_before["Desaturate"] = lock.FacebookDesaturate; - feature_before["Autoplay"] = lock.FacebookAutoplay; - } - else if(msg.body["changed_feature"].includes("LinkedIn")){ - sample_site = "LinkedIn"; - feature_before["Compact"] = lock.LinkedInCompact; - feature_before["Infinite"] = lock.LinkedInInfinite; - feature_before["Notif"] = lock.LinkedInNotif; - feature_before["Feed"] = lock.LinkedInFeed; - feature_before["Desaturate"] = lock.LinkedInDesaturate; - feature_before["Autoplay"] = lock.LinkedInAutoplay; - } - else if(msg.body["changed_feature"].includes("YouTube")){ - sample_site = "YouTube"; - feature_before["Compact"] = lock.YouTubeCompact; - feature_before["Infinite"] = lock.YouTubeInfinite; - feature_before["Notif"] = lock.YouTubeNotif; - feature_before["Feed"] = lock.YouTubeFeed; - feature_before["Desaturate"] = lock.YouTubeDesaturate; - feature_before["Autoplay"] = lock.YouTubeAutoplay; - } - // update the changed value - for (const [key, value] of Object.entries(feature_before)) { - if(msg.body["changed_feature"].includes(key)){ - feature_before[key] = msg.body["initial_value"]; - } - } - console.log("before change setting:", feature_before); - chrome.storage.local.set({"sampling_feature_site": sample_site}); - chrome.storage.local.set({"feature_before": feature_before}); - } - }); - } + settingAutoPlay(msg.body.site,msg.body.state); + }) -export {}; +export {}; \ No newline at end of file diff --git a/contents/content.ts b/contents/content.ts index 45b4463..77b4c1e 100644 --- a/contents/content.ts +++ b/contents/content.ts @@ -1,57 +1,6 @@ import $ from "jquery"; import "../finite_scroll_style.css"; import twitterIcon from "data-base64:~assets/twitter.ico"; -import { sendToBackground } from "@plasmohq/messaging" -import BrowserInteractionTime from 'browser-interaction-time'; - -// The time (in milliseconds) after which our updateTimeSpent callback is -// being called. -const timeSpentGranularityInMs = 1000; -const cb = { - multiplier: (time: number) => time + timeSpentGranularityInMs, - timeInMilliseconds: 0, - callback: updateTimeSpent -} - -function formatSecs(secs: number): string { - const hours = Math.floor(secs / 60 / 60); - const minutes = Math.floor(secs / 60 % 60); - const seconds = Math.floor(secs % 60); - return hours + "h " + minutes + "m " + seconds + "s"; -} - -// Continuously write the time spent on the current site to local storage. -// The service worker periodically reads local storage and submits the -// "time spent on site"t o our backend. -function updateTimeSpent(ms) { - const key = "TimeSpentOn" + getCurrentPage(); - chrome.storage.local.get(key, (result) => { - let alreadySpent = result[key]; - if (alreadySpent === undefined) { - alreadySpent = 0; - } - const newlySpent = timeSpentGranularityInMs / 1000; - const totalSpent = alreadySpent + newlySpent; - - chrome.storage.local.set({[key]: totalSpent}, () => { - console.log(formatSecs(totalSpent) + " spent on this type of site."); - }); - }); -} - -// Keep track of the time spent on this site. -const minute = 1000 * 60; -const timer = new BrowserInteractionTime({ - timeIntervalEllapsedCallbacks: [cb], - absoluteTimeEllapsedCallbacks: [], - browserTabInactiveCallbacks: [], - browserTabActiveCallbacks: [], - // Idle timeout is 24 hours on YouTube and one minute for all other sites. - idleTimeoutMs: getCurrentPage() === "YouTube" ? minute * 60 * 24 : minute, - checkCallbacksIntervalMs: 250 -}) - -timer.startTimer(); const extName = "Purpose Mode"; const settingToHandler = { @@ -116,9 +65,7 @@ function showSelectors(selectors: Array) { function getCurrentPage(): string { const currentWindowURL = window.location.href; - - // Note: When we update the values below, we also need to update - // the onAlarm listener in the service worker. + // console.log("current url", currentWindowURL); if (currentWindowURL.includes("twitter.com")){ return "Twitter"; } @@ -131,7 +78,7 @@ function getCurrentPage(): string { else if (currentWindowURL.includes("linkedin.com")){ return "LinkedIn"; } else { - return "Other"; + return "NA"; } } @@ -255,24 +202,7 @@ function showMore(container: JQuery, button: JQuery) { container.css("min-height", `${feedHeight}px`); } button.css("top", `${feedHeight+containerTop-100}px`); - // update show more button click time - var keys=["TwitterSeeMoreClick","FacebookSeeMoreClick","LinkedInSeeMoreClick","YouTubeSeeMoreClick"]; - - chrome.storage.local.get(keys).then(function (counter) { - if (currentPage == "Twitter") { - chrome.storage.local.set({"TwitterSeeMoreClick": counter.TwitterSeeMoreClick+1}); - } - else if(currentPage == "Facebook"){ - chrome.storage.local.set({"FacebookSeeMoreClick": counter.FacebookSeeMoreClick+1}); - } - else if(currentPage == "LinkedIn"){ - chrome.storage.local.set({"LinkedInSeeMoreClick": counter.LinkedInSeeMoreClick+1}); - } - else if(currentPage == "YouTube"){ - chrome.storage.local.set({"YouTubeSeeMoreClick": counter.YouTubeSeeMoreClick+1}); - } - }); -}; +}; var mutationObserver = new MutationObserver(function(mutations) { @@ -1512,265 +1442,7 @@ function onYouTubeAutoPlay(toggled: boolean){ } } -function detectVideos(){ - var currentSite = getCurrentPage(); - if(currentSite === "Twitter" || currentSite === "Facebook" || currentSite === "LinkedIn"){ - const videos = $('video'); - if(videos.length > 0){ - return true; - } - else{ - return false; - } - } - else if(currentSite === "YouTube"){ - const currentWindowURL = window.location.href; - if (currentWindowURL.includes("https://www.youtube.com/watch?")){ - return true; - } - else{ - return false; - } - } -} - -function detectNotifications(features){ - var currentSite = getCurrentPage(); - if(currentSite === "Twitter"){ - const selectors = [ - // Blue notification circle on top of home icon. - $('div[aria-label="undefined unread items"]'), - // Blue button that promotes new tweets. (this button will be on the page even when unvisible) - // $('div[aria-label="New Tweets are available. Push the period key to go to the them."]'), - // DM box notification - $('svg[aria-label="New Direct Message"]'), - // Notifications - $('div[aria-label*="unread"]') - ] - for (const s of selectors) { - if(s.length>0){ - return true; - } - } - return false; - } - else if(currentSite === "Facebook"){ - const selectors = [ - // "Red dot" update notification. - $('div[aria-label*="Notifications"][aria-label*="unread"][tabindex="-1"]'), - // "Red dot" notification for Messenger. - $('div[aria-label*="Messenger"][aria-label*="unread"][tabindex="-1"]'), - // "New posts" push notification - $('button:has(> div > span:contains("New posts"))'), - // DM bubble - $('div[aria-label*="Open chat"]').find('div[aria-label*="unread"]'), - ] - for (const s of selectors) { - if(s.length>0){ - return true; - } - } - return false; - } - else if(currentSite === "LinkedIn"){ - const selectors = [ - // DM notification - $('mark.msg-overlay-bubble-header__unread-count'), - // "Red dot" notification icon. - $('span.notification-badge--show'), - ] - for (const s of selectors) { - if(s.length>0){ - return true; - } - } - return false; - } - else if(currentSite === "YouTube"){ - const selectors = [ - // Notification icons. - $("div.yt-spec-icon-badge-shape__badge"), - ] - for (const s of selectors) { - if(s.length>0){ - return true; - } - } - if(isHomePage() && !features["compact_layout"]){ // check newnessDot only on landing page && compact layout is disabled - var newnessDotCheck = false; - $("div[id=newness-dot]").each(function(){ - if($( this ).css('display') !== 'none'){ - newnessDotCheck = true; - } - }); - if(newnessDotCheck === true){ - return true; - } - } - return false; - } -} - -function distractionDetection(features){ - var distractions = {}; - // Infinite newsfeed scrolling - distractions['infinite_newsfeed_scrolling'] = isHomePage(); - // Autoplay video - distractions['autoplay_video'] = detectVideos(); - // Notifications - distractions['notifications'] = detectNotifications(features); - // Newsfeed recommendations - distractions['newsfeed_recommendations'] = isHomePage(); - // Cluttered layout - distractions['cluttered_layout'] = true; - // Saturation - distractions['saturation'] = true; - - console.log("distractions:", distractions); - return distractions; -} - -function getCurrentFeatures(currentSite){ - return new Promise((resolve) =>{ - var compact_key; - var finite_key; - var feed_key; - var notif_key; - var desaturate_key; - var autoplay_key; - - if(currentSite === "Twitter"){ - compact_key = "TwitterCompact"; - finite_key = "TwitterInfinite"; - notif_key = "TwitterNotif"; - feed_key = "TwitterFeed"; - desaturate_key = "TwitterDesaturate"; - autoplay_key = "TwitterAutoplay"; - const keys = [compact_key,finite_key,notif_key,feed_key,desaturate_key,autoplay_key]; - chrome.storage.local.get(keys).then(function (features) { - var current_features = {}; - current_features["compact_layout"] = features.TwitterCompact; - current_features["hide_notification"] = features.TwitterNotif; - current_features["finite_newsfeed_scrolling"] = features.TwitterInfinite; - current_features["hide_newsfeed"] = features.TwitterFeed; - current_features["desaturate"] = features.TwitterDesaturate; - current_features["block_autoplay"] = features.TwitterAutoplay; - console.log("Current feature:", current_features); - resolve(current_features); - }); - } - else if(currentSite === "Facebook"){ - compact_key = "FacebookCompact"; - notif_key = "FacebookNotif"; - finite_key = "FacebookInfinite"; - feed_key = "FacebookFeed"; - desaturate_key = "FacebookDesaturate"; - autoplay_key = "FacebookAutoplay"; - const keys = [compact_key,finite_key,notif_key,feed_key,desaturate_key,autoplay_key]; - chrome.storage.local.get(keys).then(function (features) { - var current_features = {}; - current_features["compact_layout"] = features.FacebookCompact; - current_features["hide_notification"] = features.FacebookNotif; - current_features["finite_newsfeed_scrolling"] = features.FacebookInfinite; - current_features["hide_newsfeed"] = features.FacebookFeed; - current_features["desaturate"] = features.FacebookDesaturate; - current_features["block_autoplay"] = features.FacebookAutoplay; - console.log("Current feature:", current_features); - resolve(current_features); - }); - } - else if(currentSite === "LinkedIn"){ - compact_key = "LinkedInCompact"; - notif_key = "LinkedInNotif"; - finite_key = "LinkedInInfinite"; - feed_key = "LinkedInFeed"; - desaturate_key = "LinkedInDesaturate"; - autoplay_key = "LinkedInAutoplay"; - const keys = [compact_key,finite_key,notif_key,feed_key,desaturate_key,autoplay_key]; - chrome.storage.local.get(keys).then(function (features) { - var current_features = {}; - current_features["compact_layout"] = features.LinkedInCompact; - current_features["hide_notification"] = features.LinkedInNotif; - current_features["finite_newsfeed_scrolling"] = features.LinkedInInfinite; - current_features["hide_newsfeed"] = features.LinkedInFeed; - current_features["desaturate"] = features.LinkedInDesaturate; - current_features["block_autoplay"] = features.LinkedInAutoplay; - console.log("Current feature:", current_features); - resolve(current_features); - }); - } - else if(currentSite === "YouTube"){ - compact_key = "YouTubeCompact"; - notif_key = "YouTubeNotif"; - finite_key = "YouTubeInfinite"; - feed_key = "YouTubeFeed"; - desaturate_key = "YouTubeDesaturate"; - autoplay_key = "YouTubeAutoplay"; - const keys = [compact_key,finite_key,notif_key,feed_key,desaturate_key,autoplay_key]; - chrome.storage.local.get(keys).then(function (features) { - var current_features = {}; - current_features["compact_layout"] = features.YouTubeCompact; - current_features["hide_notification"] = features.YouTubeNotif; - current_features["finite_newsfeed_scrolling"] = features.YouTubeInfinite; - current_features["hide_newsfeed"] = features.YouTubeFeed; - current_features["desaturate"] = features.YouTubeDesaturate; - current_features["block_autoplay"] = features.YouTubeAutoplay; - console.log("Current feature:", current_features); - resolve(current_features); - }); - } - else{ - console.error("Unknown page for purpose mode."); - } - }); -} - -function adjustedDistractionDetection(distractions,current_features){ - var adjusted_distractions = {}; - - var infinite_newsfeed_scrolling = distractions["infinite_newsfeed_scrolling"]; - var autoplay_video = distractions["autoplay_video"]; - var notifications = distractions["notifications"]; - var newsfeed_recommendations = distractions["newsfeed_recommendations"]; - - var compact = current_features["compact_layout"]; - var finite = current_features["finite_newsfeed_scrolling"]; - var feed = current_features["hide_newsfeed"]; - var notif = current_features["hide_notification"]; - var desaturate = current_features["desaturate"]; - var autoplay = current_features["block_autoplay"]; - - // Adjusted infinite scrolling - adjusted_distractions['adj_infinite_newsfeed_scrolling'] = infinite_newsfeed_scrolling && (!finite) && (!feed); - // Adjusted autoplay video - if(newsfeed_recommendations && feed){ - adjusted_distractions['adj_autoplay_video'] = false; // autoplay video will also be removed when newsfeeds are remvoed - } - else{ - adjusted_distractions['adj_autoplay_video'] = autoplay_video && (!autoplay); - } - // Adjusted notifications - adjusted_distractions['adj_notifications'] = notifications && (!notif); - // Adjusted newsfeed recommendations - adjusted_distractions['adj_newsfeed_recommendations'] = newsfeed_recommendations && (!feed); - // Adjusted cluttered layout - adjusted_distractions['adj_cluttered_layout'] = (!compact); - // Adjusted Saturation - adjusted_distractions['adj_saturation'] = (!desaturate); - - console.log("Adjsuted distractions:", adjusted_distractions); - return adjusted_distractions; -} - chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => { - if (msg.name === "test questionnaire"){ // backdoor to manually generate questionnaire - if (window.self === window.top){ - if (currentPage !== "Twitter" && currentPage !== "Facebook" && currentPage !== "YouTube" && currentPage !== "LinkedIn") { - return; - } - create_esm(); - } - } if (msg.name !== "toggle") { console.log("Ignoring non-toggle event."); return; @@ -1792,83 +1464,16 @@ function run() { if(isAutoPlaySettingPage()){ setAutoPlay(); } -} - -function create_esm(){ - console.log("new ESM attempt..."); - var currentWindowURL = window.location.href; - var current_time = new Date().getTime()/1000; - var date = new Date(Date.now()); - var esm_time = date.toString().replace(/ \(.*\)/ig, '');//.replace(/(-|:|\.\d*)/g,'');//format: yyyyMMddThhmmssZ eg:19930728T183907Z - getCurrentFeatures(currentPage).then((features: JSON) => { - var esm = {}; - esm['esm_url'] = currentWindowURL; - esm['esm_site'] = currentPage; - esm['esm_time'] = esm_time; - esm['esm_time_unix_second'] = current_time; - esm['distractions'] = distractionDetection(features); - esm['features'] = features; - esm['adjusted_distractions'] = adjustedDistractionDetection(esm['distractions'],features); - const resp = sendToBackground({ - name: "cache ESM", - esm: esm, - }) - }); -} - -function sample_esm(){ - if (window.self === window.top){ // only capture the top window's browsing context - if (currentPage !== "Twitter" && currentPage !== "Facebook" && currentPage !== "YouTube" && currentPage !== "LinkedIn") { - return; - } - const keys = ["sampled_esm","last_esm_time","esm_counter_today"]; - chrome.storage.local.get(keys).then(function (esm_status) { - var current_time = new Date().getTime()/1000; - var last_esm_time_diff = current_time - esm_status.last_esm_time; - if( - esm_status.sampled_esm===null && - last_esm_time_diff >= 60*60 && - esm_status.esm_counter_today < 6 - ){ - create_esm(); - } - else{ - console.log("ESM sampling criteria do not fulfill:"); - console.log("exising ESM:",esm_status.sampled_esm); - console.log("since last submitted ESM (seconds):",last_esm_time_diff); - console.log("completed ESM today:", esm_status.esm_counter_today); - } - }); - } - else{ - console.log("Page not on top; skip esm sampling..."); - } -} - -function esm_clock(){ - const key = "Enable"; - chrome.storage.local.get(key, (result) => { - if (!result.hasOwnProperty(key)) { - console.error("'" + key + "' property unset in configuration."); - return - } - if(result.Enable){ // if the purpose mode is enabled, count down for 30 seconds to sample the ESM - if(currentPage === "Twitter" || currentPage === "Facebook" || currentPage === "YouTube" || currentPage === "LinkedIn"){ - setTimeout(() => { - console.log("try to sample ESM after 30 seconds."); - sample_esm(); - }, 30*1000); - } - } - setTimeout(() => { - console.log("try to resample ESM..."); - esm_clock(); - }, 60*1000); // check the status for every minute - }); + // if(isYouTubeVideo()){ + // chrome.storage.local.get("YouTubeAutoplay", (result) => { + // setTimeout(() => { + // onYouTubeAutoPlay(result.YouTubeAutoplay); + // }, 7000); + // }); + // } } console.log(__filename + " running."); run(); -esm_clock(); -export {}; +export {}; \ No newline at end of file diff --git a/package.json b/package.json index 25fac5b..89d670b 100644 --- a/package.json +++ b/package.json @@ -13,10 +13,8 @@ "@plasmohq/messaging": "^0.4.0", "@plasmohq/storage": "^1.6.1", "@types/jquery": "^3.5.16", - "axios": "^1.4.0", - "browser-interaction-time": "^3.0.0", "jquery": "^3.7.0", - "plasmo": "0.81.0", + "plasmo": "0.77.5", "react": "18.2.0", "react-collapsed": "^4.0.2", "react-dom": "18.2.0", @@ -34,11 +32,6 @@ "manifest": { "host_permissions": [ "https://*/*" - ], - "permissions": [ - "notifications", - "activeTab", - "alarms" ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 569b3c2..13a0df7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,18 +14,12 @@ dependencies: '@types/jquery': specifier: ^3.5.16 version: 3.5.16 - axios: - specifier: ^1.4.0 - version: 1.4.0 - browser-interaction-time: - specifier: ^3.0.0 - version: 3.0.0 jquery: specifier: ^3.7.0 version: 3.7.0 plasmo: - specifier: 0.81.0 - version: 0.81.0(react-dom@18.2.0)(react@18.2.0) + specifier: 0.77.5 + version: 0.77.5(react-dom@18.2.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -823,7 +817,7 @@ packages: json5: 2.2.3 msgpackr: 1.9.5 nullthrows: 1.1.1 - semver: 7.5.4 + semver: 7.5.3 dev: false /@parcel/diagnostic@2.9.3: @@ -854,7 +848,7 @@ packages: '@parcel/fs-search': 2.9.3 '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 - '@parcel/watcher': 2.2.0 + '@parcel/watcher': 2.1.0 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) dev: false @@ -907,7 +901,7 @@ packages: '@parcel/fs': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 nullthrows: 1.1.1 - semver: 7.5.4 + semver: 7.5.3 transitivePeerDependencies: - '@parcel/core' dev: false @@ -992,7 +986,7 @@ packages: '@parcel/plugin': 2.9.3(@parcel/core@2.9.3) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 - '@swc/core': 1.3.66 + '@swc/core': 1.3.64 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -1013,7 +1007,7 @@ packages: '@parcel/types': 2.9.3(@parcel/core@2.9.3) '@parcel/utils': 2.9.3 '@parcel/workers': 2.9.3(@parcel/core@2.9.3) - semver: 7.5.4 + semver: 7.5.3 dev: false /@parcel/packager-css@2.9.3(@parcel/core@2.9.3): @@ -1188,7 +1182,7 @@ packages: browserslist: 4.21.9 json5: 2.2.3 nullthrows: 1.1.1 - semver: 7.5.4 + semver: 7.5.3 transitivePeerDependencies: - '@parcel/core' dev: false @@ -1202,7 +1196,7 @@ packages: '@parcel/source-map': 2.1.1 '@parcel/utils': 2.9.3 browserslist: 4.21.9 - lightningcss: 1.21.1 + lightningcss: 1.21.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' @@ -1230,7 +1224,7 @@ packages: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.5.4 + semver: 7.5.3 srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' @@ -1274,7 +1268,7 @@ packages: browserslist: 4.21.9 nullthrows: 1.1.1 regenerator-runtime: 0.13.11 - semver: 7.5.4 + semver: 7.5.3 dev: false /@parcel/transformer-json@2.9.3(@parcel/core@2.9.3): @@ -1310,7 +1304,7 @@ packages: clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 - semver: 7.5.4 + semver: 7.5.3 transitivePeerDependencies: - '@parcel/core' dev: false @@ -1325,7 +1319,7 @@ packages: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.5.4 + semver: 7.5.3 transitivePeerDependencies: - '@parcel/core' dev: false @@ -1385,7 +1379,7 @@ packages: posthtml: 0.16.6 posthtml-parser: 0.10.2 posthtml-render: 3.0.0 - semver: 7.5.4 + semver: 7.5.3 transitivePeerDependencies: - '@parcel/core' dev: false @@ -1427,96 +1421,6 @@ packages: nullthrows: 1.1.1 dev: false - /@parcel/watcher-android-arm64@2.2.0: - resolution: {integrity: sha512-nU2wh00CTQT9rr1TIKTjdQ9lAGYpmz6XuKw0nAwAN+S2A5YiD55BK1u+E5WMCT8YOIDe/n6gaj4o/Bi9294SSQ==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-darwin-arm64@2.2.0: - resolution: {integrity: sha512-cJl0UZDcodciy3TDMomoK/Huxpjlkkim3SyMgWzjovHGOZKNce9guLz2dzuFwfObBFCjfznbFMIvAZ5syXotYw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-darwin-x64@2.2.0: - resolution: {integrity: sha512-QI77zxaGrCV1StKcoRYfsUfmUmvPMPfQrubkBBy5XujV2fwaLgZivQOTQMBgp5K2+E19u1ufpspKXAPqSzpbyg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-linux-arm-glibc@2.2.0: - resolution: {integrity: sha512-I2GPBcAXazPzabCmfsa3HRRW+MGlqxYd8g8RIueJU+a4o5nyNZDz0CR1cu0INT0QSQXEZV7w6UE8Hz9CF8u3Pg==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-linux-arm64-glibc@2.2.0: - resolution: {integrity: sha512-St5mlfp+2lS9AmgixUqfwJa/DwVmTCJxC1HcOubUTz6YFOKIlkHCeUa1Bxi4E/tR/HSez8+heXHL8HQkJ4Bd8g==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-linux-arm64-musl@2.2.0: - resolution: {integrity: sha512-jS+qfhhoOBVWwMLP65MaG8xdInMK30pPW8wqTCg2AAuVJh5xepMbzkhHJ4zURqHiyY3EiIRuYu4ONJKCxt8iqA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-linux-x64-glibc@2.2.0: - resolution: {integrity: sha512-xJvJ7R2wJdi47WZBFS691RDOWvP1j/IAs3EXaWVhDI8FFITbWrWaln7KoNcR0Y3T+ZwimFY/cfb0PNht1q895g==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-linux-x64-musl@2.2.0: - resolution: {integrity: sha512-D+NMpgr23a+RI5mu8ZPKWy7AqjBOkURFDgP5iIXXEf/K3hm0jJ3ogzi0Ed2237B/CdYREimCgXyeiAlE/FtwyA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-win32-arm64@2.2.0: - resolution: {integrity: sha512-z225cPn3aygJsyVUOWwfyW+fY0Tvk7N3XCOl66qUPFxpbuXeZuiuuJemmtm8vxyqa3Ur7peU/qJxrpC64aeI7Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@parcel/watcher-win32-x64@2.2.0: - resolution: {integrity: sha512-JqGW0RJ61BkKx+yYzIURt9s53P7xMVbv0uxYPzAXLBINGaFmkIKSuUPyBVfy8TMbvp93lvF4SPBNDzVRJfvgOw==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - /@parcel/watcher@2.1.0: resolution: {integrity: sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==} engines: {node: '>= 10.0.0'} @@ -1528,27 +1432,6 @@ packages: node-gyp-build: 4.6.0 dev: false - /@parcel/watcher@2.2.0: - resolution: {integrity: sha512-71S4TF+IMyAn24PK4KSkdKtqJDR3zRzb0HE3yXpacItqTM7XfF2f5q9NEGLEVl0dAaBAGfNwDCjH120y25F6Tg==} - engines: {node: '>= 10.0.0'} - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.5 - node-addon-api: 7.0.0 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.2.0 - '@parcel/watcher-darwin-arm64': 2.2.0 - '@parcel/watcher-darwin-x64': 2.2.0 - '@parcel/watcher-linux-arm-glibc': 2.2.0 - '@parcel/watcher-linux-arm64-glibc': 2.2.0 - '@parcel/watcher-linux-arm64-musl': 2.2.0 - '@parcel/watcher-linux-x64-glibc': 2.2.0 - '@parcel/watcher-linux-x64-musl': 2.2.0 - '@parcel/watcher-win32-arm64': 2.2.0 - '@parcel/watcher-win32-x64': 2.2.0 - dev: false - /@parcel/workers@2.9.3(@parcel/core@2.9.3): resolution: {integrity: sha512-zRrDuZJzTevrrwElYosFztgldhqW6G9q5zOeQXfVQFkkEJCNfg36ixeiofKRU8uu2x+j+T6216mhMNB6HiuY+w==} engines: {node: '>= 12.0.0'} @@ -1713,8 +1596,8 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@plasmohq/init@0.7.0: - resolution: {integrity: sha512-P75g48dqOGneJ+n0AcqnLE/TYflcaPc3B7h6EopnCBBYUDnCNBMwYmKAkaf5pnhsEB0ybPS6TU1C2DTGfqaW7A==} + /@plasmohq/init@0.6.5: + resolution: {integrity: sha512-Auxj4bSPHpJCrSjdyGP+iEiHAdDUAipB6vo51kwEt0vJp3JHiDZ2csoi8kvPZhCmLmPcnRackDTcMF8+KeT3eg==} dev: false /@plasmohq/messaging@0.4.0(react@18.2.0): @@ -1751,8 +1634,8 @@ packages: - '@parcel/core' dev: false - /@plasmohq/parcel-config@0.39.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Pg5/f4QpB/KdtAyFNlzDdi/zjOEeHk9GnH6Ydoz0qqVcOmaxfTNMoMcdacD6GuB4u27PJsSMwq2jF2YTg7L3aw==} + /@plasmohq/parcel-config@0.38.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ctJUk99ry+KHvUM2212V+JaCIPLWxBywT1aY3Oi/rbW+TcXZt7EGeJqb6FC/K+Zab8WJruHWDEihSR/dWfJEsA==} dependencies: '@parcel/compressor-raw': 2.9.3(@parcel/core@2.9.3) '@parcel/config-default': 2.9.3(@parcel/core@2.9.3) @@ -1786,9 +1669,9 @@ packages: '@plasmohq/parcel-runtime': 0.21.1 '@plasmohq/parcel-transformer-inject-env': 0.2.11 '@plasmohq/parcel-transformer-inline-css': 0.3.8 - '@plasmohq/parcel-transformer-manifest': 0.17.7 + '@plasmohq/parcel-transformer-manifest': 0.17.6 '@plasmohq/parcel-transformer-svelte': 0.5.2 - '@plasmohq/parcel-transformer-vue': 0.5.0(react-dom@18.2.0)(react@18.2.0) + '@plasmohq/parcel-transformer-vue': 0.4.1(react-dom@18.2.0)(react@18.2.0) transitivePeerDependencies: - '@swc/core' - '@swc/helpers' @@ -1977,8 +1860,8 @@ packages: lightningcss: 1.21.1 dev: false - /@plasmohq/parcel-transformer-manifest@0.17.7: - resolution: {integrity: sha512-lnszdDYmt7NwDetGhA0hNxn7RhsaOeks4qlEVyKYgbdf3wBeauEixs8I7pieKvZeYP7fmTyX8JQ15x3VSefkwQ==} + /@plasmohq/parcel-transformer-manifest@0.17.6: + resolution: {integrity: sha512-pri8N91tKpOfu35JhQmTCV/Z5KxXz2KbgiUUIlrDNzeyDfW5+KU4LcC/sBXYd2AdnmIv2YpnhxoztHUWsB8B2g==} engines: {parcel: '>= 2.7.0'} dependencies: '@mischnic/json-sourcemap': 0.1.0 @@ -2005,8 +1888,8 @@ packages: svelte: 4.0.1 dev: false - /@plasmohq/parcel-transformer-vue@0.5.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-/3oVbajt+DRqtbM0RkKFtfyZR8DVjcsYpj1jHqPParGVBiXwgP0D/8Bj5p5/5Iqihs08gzasTcjKcwQKKdj0og==} + /@plasmohq/parcel-transformer-vue@0.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5xsqhHute4q87b5ItDkPhxOMFydceTelZxchklREfx653ltu54SZaaEajAgh+p8bAFIye5qk+/En1T8rxnZzEw==} engines: {parcel: '>= 2.7.0'} dependencies: '@parcel/core': 2.9.3 @@ -2018,7 +1901,7 @@ packages: '@plasmohq/consolidate': 0.17.0(react-dom@18.2.0)(react@18.2.0) '@vue/compiler-sfc': 3.3.4 nullthrows: 1.1.1 - semver: 7.5.4 + semver: 7.5.3 vue: 3.3.4 transitivePeerDependencies: - arc-templates @@ -2262,6 +2145,15 @@ packages: svgo: 2.8.0 dev: false + /@swc/core-darwin-arm64@1.3.64: + resolution: {integrity: sha512-gSPld6wxZBZoEvZXWmNfd+eJGlGvrEXmhMBCUwSccpuMa0KqK7F6AAZVu7kFkmlXPq2kS8owjk6/VXnVBmm5Vw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@swc/core-darwin-arm64@1.3.66: resolution: {integrity: sha512-UijJsvuLy73vxeVYEy7urIHksXS+3BdvJ9s9AY+bRMSQW483NO7RLp8g4FdTyJbRaN0BH15SQnY0dcjQBkVuHw==} engines: {node: '>=10'} @@ -2271,6 +2163,15 @@ packages: dev: false optional: true + /@swc/core-darwin-x64@1.3.64: + resolution: {integrity: sha512-SJd1pr+U2pz5ZVv5BL36CN879Pn1V0014uVNlB+6yNh3e8T0fjUbtRJcbFiBB+OeYuJ1UNUeslaRJtKJNtMH7A==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /@swc/core-darwin-x64@1.3.66: resolution: {integrity: sha512-xGsHKvViQnwTNLF30Y/5OqWdnN6RsiyUI8awZXfz1sHcXCEaLe+v+WLQ+/E8sgw0YUkYVHzzfV/sAN2CezJK5Q==} engines: {node: '>=10'} @@ -2280,6 +2181,15 @@ packages: dev: false optional: true + /@swc/core-linux-arm-gnueabihf@1.3.64: + resolution: {integrity: sha512-XE60bZS+qO+d8IQYAayhn3TRqyzVmQeOsX2B1yUHuKZU3Zb/mt/cmD/HLzZZW7J3z19kYf2na7Hvmnt3amUGoA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@swc/core-linux-arm-gnueabihf@1.3.66: resolution: {integrity: sha512-gNbLcSIV2pq90BkMSpzvK4xPXOl8GEF3YR4NaqF0CYSzQsVXXTTqMuX/r26xNYudBKzH0345S1MpoRk2qricnA==} engines: {node: '>=10'} @@ -2289,6 +2199,15 @@ packages: dev: false optional: true + /@swc/core-linux-arm64-gnu@1.3.64: + resolution: {integrity: sha512-+jcUua4cYLRMqDicv+4AaTZUGgYWXkXVI9AzaAgfkMNLU2TMXwuYXopxk1giAMop88+ovzYIqrxErRdu70CgtQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@swc/core-linux-arm64-gnu@1.3.66: resolution: {integrity: sha512-cJSQ0oplyWbJqy4rzVcnBYLAi6z1QT3QCcR7iAey0aAmCvfRBZJfXlyjggMjn4iosuadkauwCZR1xYNhBDRn7w==} engines: {node: '>=10'} @@ -2298,6 +2217,15 @@ packages: dev: false optional: true + /@swc/core-linux-arm64-musl@1.3.64: + resolution: {integrity: sha512-50MI8NFYUKhLncqY2piM/XOnNqZT6zY2ZoNOFsy63/T2gAYy1ts4mF4YUEkg4XOA2zhue1JSLZBUrHQXbgMYUQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@swc/core-linux-arm64-musl@1.3.66: resolution: {integrity: sha512-GDQZpcB9aGxG9PTA2shdIkoMZlGK5omJ8NR49uoBTtLBVYiGeXAwV0U1Uaw8kXEZj9i7wZDkvjzjSaNH3evRsg==} engines: {node: '>=10'} @@ -2307,6 +2235,15 @@ packages: dev: false optional: true + /@swc/core-linux-x64-gnu@1.3.64: + resolution: {integrity: sha512-bT8seQ41Q4J2JDgn2JpFCGNehGAIilAkZ476gEaKKroEWepBhkD0K1MspSSVYSJhLSGbBVSaadUEiBPxWgu1Rw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@swc/core-linux-x64-gnu@1.3.66: resolution: {integrity: sha512-lg8E4O/Pd9KfK0lajdinVMuGME8dSv7V9arhEpmlfGE2eXSDCWqDn5Htk5QVBstt9lt1lsRhWHJ/YYc2eQY30Q==} engines: {node: '>=10'} @@ -2316,6 +2253,15 @@ packages: dev: false optional: true + /@swc/core-linux-x64-musl@1.3.64: + resolution: {integrity: sha512-sJgh3TXCDOEq/Au4XLAgNqy4rVcLeywQBoftnV3rcvX1/u9OCSRzgKLgYc5d1pEN5AMJV1l4u26kbGlQuZ+yRw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /@swc/core-linux-x64-musl@1.3.66: resolution: {integrity: sha512-lo8ZcAO/zL2pZWH+LZIyge8u2MklaeuT6+FpVVpBFktMVdYXbaVtzpvWbgRFBZHvL3SRDF+u8jxjtkXhvGUpTw==} engines: {node: '>=10'} @@ -2325,6 +2271,15 @@ packages: dev: false optional: true + /@swc/core-win32-arm64-msvc@1.3.64: + resolution: {integrity: sha512-zWIy+mAWDjtJjl4e4mmhQL7g9KbkOwcWbeoIk4C6NT4VpjnjdX1pMml/Ez2sF5J5cGBwu7B1ePfTe/kAE6G36Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@swc/core-win32-arm64-msvc@1.3.66: resolution: {integrity: sha512-cQoVwBuJY5WkHbfpCOlndNwYr1ZThatRjQQvKy540NUIeAEk9Fa6ozlDBtU75UdaWKtUG6YQ/bWz+KTemheVxw==} engines: {node: '>=10'} @@ -2334,6 +2289,15 @@ packages: dev: false optional: true + /@swc/core-win32-ia32-msvc@1.3.64: + resolution: {integrity: sha512-6HMiuUeSMpTUAimb1E+gUNjy8m211oAzw+wjU8oOdA6iihWaLBz4TOhU9IaKZPPjqEcYGwqaT3tj5b5+mxde6Q==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@swc/core-win32-ia32-msvc@1.3.66: resolution: {integrity: sha512-y/FrAIINK4UBeUQQknGlWXEyjo+MBvjF7WkUf2KP7sNr9EHHy8+dXohAGd5Anz0eJrqOM1ZXR/GEjxRp7bGQ1Q==} engines: {node: '>=10'} @@ -2343,6 +2307,15 @@ packages: dev: false optional: true + /@swc/core-win32-x64-msvc@1.3.64: + resolution: {integrity: sha512-c8Al0JJfmgnO9sg6w34PICibqI4p7iXywo+wOxjY88oFwMcfV5rGaif1Fe3RqxJP/1WtUV7lYuKKZrneMXtyLA==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /@swc/core-win32-x64-msvc@1.3.66: resolution: {integrity: sha512-yI64ACzS14qFLrfyO12qW+f/UROTotzDeEbuyJAaPD2IZexoT1cICznI3sBmIfrSt33mVuW8eF5m3AG/NUImzw==} engines: {node: '>=10'} @@ -2352,6 +2325,28 @@ packages: dev: false optional: true + /@swc/core@1.3.64: + resolution: {integrity: sha512-be1dk2pfjzBjFp/+p47/wvOAm7KpEtsi7hqI3ofox6pK3hBJChHgVTLVV9xqZm7CnYdyYYw3Z78hH6lrwutxXQ==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.64 + '@swc/core-darwin-x64': 1.3.64 + '@swc/core-linux-arm-gnueabihf': 1.3.64 + '@swc/core-linux-arm64-gnu': 1.3.64 + '@swc/core-linux-arm64-musl': 1.3.64 + '@swc/core-linux-x64-gnu': 1.3.64 + '@swc/core-linux-x64-musl': 1.3.64 + '@swc/core-win32-arm64-msvc': 1.3.64 + '@swc/core-win32-ia32-msvc': 1.3.64 + '@swc/core-win32-x64-msvc': 1.3.64 + dev: false + /@swc/core@1.3.66: resolution: {integrity: sha512-Hpf91kH5ly7fHkWnApwryTQryT+TO4kMMPH3WyciUSQOWLE3UuQz1PtETHQQk7PZ/b1QF0qQurJrgfBr5bSKUA==} engines: {node: '>=10'} @@ -2595,6 +2590,35 @@ packages: picomatch: 2.3.1 dev: false + /archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + dev: false + + /archiver@5.3.1: + resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + async: 3.2.4 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.0 + dev: false + /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: false @@ -2610,18 +2634,8 @@ packages: engines: {node: '>=8'} dev: false - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /axios@1.4.0: - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} - dependencies: - follow-redirects: 1.15.2 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: false /axobject-query@3.2.1: @@ -2630,10 +2644,6 @@ packages: dequal: 2.0.3 dev: false - /b4a@1.6.4: - resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} - dev: false - /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: false @@ -2676,6 +2686,12 @@ packages: concat-map: 0.0.1 dev: false + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -2683,11 +2699,6 @@ packages: fill-range: 7.0.1 dev: false - /browser-interaction-time@3.0.0: - resolution: {integrity: sha512-v7VLDyhaz11YDxdofZ3EclWLjNF7Lgi0oBfJP8sb4yjlOO+R2xkQ9ul8m3yYxBRKEkOwrOEHTHgPFa0FT0TIWA==} - engines: {node: '>=6.0.0'} - dev: false - /browserslist@4.21.9: resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -2698,6 +2709,10 @@ packages: node-releases: 2.0.12 update-browserslist-db: 1.0.11(browserslist@4.21.9) + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: false + /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -2789,8 +2804,8 @@ packages: supports-color: 7.2.0 dev: false - /chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + /chalk@5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: false @@ -2910,13 +2925,6 @@ packages: color-string: 1.9.1 dev: false - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -2927,6 +2935,16 @@ packages: engines: {node: '>= 10'} dev: false + /compress-commons@4.1.1: + resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} + engines: {node: '>= 10'} + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.2 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + dev: false + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: false @@ -2960,6 +2978,10 @@ packages: is-what: 3.14.1 dev: false + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + /cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -2981,6 +3003,20 @@ packages: path-type: 4.0.0 dev: false + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: false + + /crc32-stream@4.0.2: + resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} + engines: {node: '>= 10'} + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + dev: false + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -3089,11 +3125,6 @@ packages: engines: {node: '>=10'} dev: false - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -3299,10 +3330,6 @@ packages: tmp: 0.0.33 dev: false - /fast-fifo@1.3.0: - resolution: {integrity: sha512-IgfweLvEpwyA4WgiQe9Nx6VV2QkML2NkvZnk1oKnIzXgXdWxuhF7zw4DvLTPZJn6PIUneiAXPF24QmoEqHTjyw==} - dev: false - /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} @@ -3314,17 +3341,6 @@ packages: micromatch: 4.0.5 dev: false - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: false - /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -3350,30 +3366,11 @@ packages: to-regex-range: 5.0.1 dev: false - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - /form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} dev: false - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - /fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} dev: false @@ -3435,6 +3432,17 @@ packages: path-is-absolute: 1.0.1 dev: false + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -3452,7 +3460,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.2.12 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -3647,12 +3655,12 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: false - /inquirer@9.2.8: - resolution: {integrity: sha512-SJ0fVfgIzZL1AD6WvFhivlh5/3hN6WeAvpvPrpPXH/8MOcQHeXhinmSm5CDJNRC2Q+sLh9YJ5k8F8/5APMXSfw==} + /inquirer@9.2.7: + resolution: {integrity: sha512-Bf52lnfvNxGPJPltiNO2tLBp3zC339KNlGMqOkW+dsvNikBhcVDK5kqU2lVX2FTPzuXUFX5WJDlsw//w3ZwoTw==} engines: {node: '>=14.18.0'} dependencies: ansi-escapes: 4.3.2 - chalk: 5.3.0 + chalk: 5.2.0 cli-cursor: 3.1.0 cli-width: 4.0.0 external-editor: 3.1.0 @@ -3749,6 +3757,10 @@ packages: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} dev: false + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + /isbinaryfile@4.0.10: resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} engines: {node: '>= 8.0.0'} @@ -3822,6 +3834,13 @@ packages: json-buffer: 3.0.1 dev: false + /lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + dependencies: + readable-stream: 2.3.8 + dev: false + /less@4.1.3: resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} engines: {node: '>=6'} @@ -3842,6 +3861,15 @@ packages: - supports-color dev: false + /lightningcss-darwin-arm64@1.21.0: + resolution: {integrity: sha512-WcJmVmbNUnCbUqqXV46ZsriFtWJujcPkn+w2cu4R+EgpXuibyTP/gzahmX0gc4RYQxTz2zXIeGx4cF2gr8fLwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /lightningcss-darwin-arm64@1.21.1: resolution: {integrity: sha512-dljpsZ15RN4AxI958n9qO7sAv29FRuUMCB10CSDBGmDOW+oDDbNLs1k5/7MlYg5FXnZqznUSTtHBFHFyo1Rs2Q==} engines: {node: '>= 12.0.0'} @@ -3851,6 +3879,15 @@ packages: dev: false optional: true + /lightningcss-darwin-x64@1.21.0: + resolution: {integrity: sha512-xHwMHfcTIHX6fY4YQimI1V/KcbozoNVeKMncZzrp/3NAj0sp3ktxobCj1e0sGqVJMUMaHu/SWvt0mS8jAIhkYw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + /lightningcss-darwin-x64@1.21.1: resolution: {integrity: sha512-e/dAKKOcLe2F/A5a89gh03ABxZHn4yjGapGimCFxnCpg68iIdtoPrJTFAyxPV3Jty4djLYRlitoIWNidOK35zA==} engines: {node: '>= 12.0.0'} @@ -3860,6 +3897,15 @@ packages: dev: false optional: true + /lightningcss-linux-arm-gnueabihf@1.21.0: + resolution: {integrity: sha512-rk1cr+C2IA1QHvh0QJAPXsQ2vrwCksms7fgfaw43RIERBWa6EEM5p0/1CWhdZ5zrl9veUdY6NRaNGRJjJL0iLw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + /lightningcss-linux-arm-gnueabihf@1.21.1: resolution: {integrity: sha512-Ak12ti7D4Q9Tk3tX9fktCJVe+spP12/dOcebw67DBeZ3EQ4meIGTkFpl2ryZK8Z7kbIJNUsscVsz3zXW21/25A==} engines: {node: '>= 12.0.0'} @@ -3869,6 +3915,15 @@ packages: dev: false optional: true + /lightningcss-linux-arm64-gnu@1.21.0: + resolution: {integrity: sha512-JkOG8K2Y4m5MeP3DlaHOgGDDtHbhbJcN8JcizFN0snUIIru1qxYNWPhAQsEwysuTRY9aANP0nScZJkALpcYmgA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /lightningcss-linux-arm64-gnu@1.21.1: resolution: {integrity: sha512-ggCX0iyG/h2C1MfDfmfhB0zpEUTTP+kG9XBbwHRFKrQsmb3b7WC5QiyVuGYkzoGiHy1JNuyi27qR9cNVLCR8FQ==} engines: {node: '>= 12.0.0'} @@ -3878,6 +3933,15 @@ packages: dev: false optional: true + /lightningcss-linux-arm64-musl@1.21.0: + resolution: {integrity: sha512-4Zx51DbR41neTFMs28CI9cZpX/mF5Urc6pChTio5nZhrz6FC1pRGiwxNJ+G15a/YPvRmPmvQd3Mz1N4WEgbj2A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /lightningcss-linux-arm64-musl@1.21.1: resolution: {integrity: sha512-vGaVLju7Zhus/sl5Oz/1YbV7L/Mr/bfjHbThj/DJcFggZPj1wfSeWc6gAAISqK3bIAUMVlcUEm2UnIDGj0tsOQ==} engines: {node: '>= 12.0.0'} @@ -3887,6 +3951,15 @@ packages: dev: false optional: true + /lightningcss-linux-x64-gnu@1.21.0: + resolution: {integrity: sha512-PN33pPK/O3b4qMfWcJ2eis7NLqEkyW2NEh9X4rWfJrBtOnSbgafuYUuEtO5Ylu+dL3oUKc5usB07FGeil3RzeA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /lightningcss-linux-x64-gnu@1.21.1: resolution: {integrity: sha512-W6b+ndCCO/SeIT4s7kJhkJGXZVz96uwb7eY61SwCAibs5HirzRMrIyuMY3JKcRESg9/jysHo4YWrr1icbzWiXw==} engines: {node: '>= 12.0.0'} @@ -3896,6 +3969,15 @@ packages: dev: false optional: true + /lightningcss-linux-x64-musl@1.21.0: + resolution: {integrity: sha512-S51OT7TRfS5x8aN/8frv/JSXCGm+11VuhM4WCiTqDPjhHUDWd8nwiN/7s5juiwrlrpOxb5UKq21EKDrISoGQpw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + /lightningcss-linux-x64-musl@1.21.1: resolution: {integrity: sha512-eA2ygIg/IbjglRq/QRCDTgnR8mtmXJ65t/1C1QUUvvexWfr0iiTKJj3iozgUKZmupfomrPIhF3Qya0el9PqjUA==} engines: {node: '>= 12.0.0'} @@ -3905,6 +3987,15 @@ packages: dev: false optional: true + /lightningcss-win32-x64-msvc@1.21.0: + resolution: {integrity: sha512-yW6/ZDJAHrSWtRltH1tr2I+2sn374gK2yclc44HMfpxfjIYgXMUkzqstalloMUQpZFR6M0ltXo5/tuLWoBydGQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + /lightningcss-win32-x64-msvc@1.21.1: resolution: {integrity: sha512-2PKZvhrMxr7TjceUkkAtNQtDOEozcbp8GdcOKCrhNmrQ1OT8Mm5p4sMp7bzT0QytT7W5EuhIteWQFW/qI64Wtw==} engines: {node: '>= 12.0.0'} @@ -3914,6 +4005,22 @@ packages: dev: false optional: true + /lightningcss@1.21.0: + resolution: {integrity: sha512-HDznZexdDMvC98c79vRE+oW5vFncTlLjJopzK4azReOilq6n4XIscCMhvgiXkstYMM/dCe6FJw0oed06ck8AtA==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.21.0 + lightningcss-darwin-x64: 1.21.0 + lightningcss-linux-arm-gnueabihf: 1.21.0 + lightningcss-linux-arm64-gnu: 1.21.0 + lightningcss-linux-arm64-musl: 1.21.0 + lightningcss-linux-x64-gnu: 1.21.0 + lightningcss-linux-x64-musl: 1.21.0 + lightningcss-win32-x64-msvc: 1.21.0 + dev: false + /lightningcss@1.21.1: resolution: {integrity: sha512-TKkVZzKnJVtGLI+8QMXLH2JdNcxjodA06So+uXA5qelvuReKvPyCJBX/6ZznADA76zNijmDc3OhjxvTBmNtCoA==} engines: {node: '>= 12.0.0'} @@ -3971,14 +4078,34 @@ packages: resolution: {integrity: sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==} dev: true + /lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: false + + /lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + dev: false + + /lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + dev: false + /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} dev: true + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: false + /lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: false + /lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + dev: false + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: false @@ -4063,18 +4190,6 @@ packages: picomatch: 2.3.1 dev: false - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -4110,6 +4225,13 @@ packages: brace-expansion: 1.1.11 dev: false + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: false @@ -4212,7 +4334,7 @@ packages: resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} engines: {node: '>=10'} dependencies: - semver: 7.5.4 + semver: 7.5.3 dev: false /node-addon-api@3.2.1: @@ -4227,10 +4349,6 @@ packages: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} dev: false - /node-addon-api@7.0.0: - resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} - dev: false - /node-gyp-build-optional-packages@5.0.6: resolution: {integrity: sha512-2ZJErHG4du9G3/8IWl/l9Bp5BBFy63rno5GVmjQijvTuUZKsl6g8RB4KH/x3NLcV5ZBb4GsXmAuTYr6dRml3Gw==} hasBin: true @@ -4336,7 +4454,7 @@ packages: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.5.4 + semver: 7.5.3 dev: false /param-case@3.0.4: @@ -4429,39 +4547,40 @@ packages: engines: {node: '>= 6'} dev: false - /plasmo@0.81.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-VL/kpxF+Vl/y3SqGr/T9w3fyvWcWcWIYuVccVO2VKU6yoxDmS8WA10CUxp/lGYfCTa6Fe9XABbrh70BILS+kaQ==} + /plasmo@0.77.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oaa1xsOvA03NqcySLKRfMZMrfyCQ57W73Vb+wmRcY3H6ABhLNO81GVDR/DehLqFwD2kvmZJNo2JuQ626TwzfhQ==} hasBin: true dependencies: '@expo/spawn-async': 1.7.2 '@parcel/core': 2.9.3 '@parcel/fs': 2.9.3(@parcel/core@2.9.3) '@parcel/package-manager': 2.9.3(@parcel/core@2.9.3) - '@parcel/watcher': 2.2.0 - '@plasmohq/init': 0.7.0 - '@plasmohq/parcel-config': 0.39.0(react-dom@18.2.0)(react@18.2.0) + '@parcel/watcher': 2.1.0 + '@plasmohq/init': 0.6.5 + '@plasmohq/parcel-config': 0.38.3(react-dom@18.2.0)(react@18.2.0) '@plasmohq/parcel-core': 0.1.6 + archiver: 5.3.1 buffer: 6.0.3 - chalk: 5.3.0 + chalk: 5.2.0 change-case: 4.1.2 dotenv: 16.3.1 dotenv-expand: 10.0.0 events: 3.3.0 - fast-glob: 3.3.0 + fast-glob: 3.2.12 fflate: 0.8.0 get-port: 7.0.0 got: 13.0.0 ignore: 5.2.4 - inquirer: 9.2.8 + inquirer: 9.2.7 is-path-inside: 4.0.0 json5: 2.2.3 mnemonic-id: 3.2.7 node-object-hash: 3.0.0 package-json: 8.1.1 process: 0.11.10 - semver: 7.5.4 - sharp: 0.32.3 - tempy: 3.1.0 + semver: 7.5.3 + sharp: 0.32.1 + tempy: 3.0.0 typescript: 5.1.6 transitivePeerDependencies: - '@swc/core' @@ -4606,6 +4725,10 @@ packages: hasBin: true dev: true + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} @@ -4615,10 +4738,6 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: false - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false - /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} dev: false @@ -4640,10 +4759,6 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: false - /queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - dev: false - /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -4701,6 +4816,18 @@ packages: loose-envify: 1.4.0 dev: false + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream@3.6.2: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} @@ -4710,6 +4837,12 @@ packages: util-deprecate: 1.0.2 dev: false + /readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + dependencies: + minimatch: 5.1.6 + dev: false + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -4794,6 +4927,10 @@ packages: tslib: 2.5.3 dev: false + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false @@ -4833,8 +4970,8 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -4849,8 +4986,8 @@ packages: upper-case-first: 2.0.2 dev: false - /sharp@0.32.3: - resolution: {integrity: sha512-i1gFPiNqyqxC4ouVvCKj5G8WfPIMeeSxpKcMrjic6NY4e8zktW7bIdqHPc3FCG+pNKU/XCEabKA57hhvZi8UmQ==} + /sharp@0.32.1: + resolution: {integrity: sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==} engines: {node: '>=14.15.0'} requiresBuild: true dependencies: @@ -4858,9 +4995,9 @@ packages: detect-libc: 2.0.1 node-addon-api: 6.1.0 prebuild-install: 7.1.1 - semver: 7.5.4 + semver: 7.5.3 simple-get: 4.0.1 - tar-fs: 3.0.4 + tar-fs: 2.1.1 tunnel-agent: 0.6.0 dev: false @@ -4937,13 +5074,6 @@ packages: deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: false - /streamx@2.15.0: - resolution: {integrity: sha512-HcxY6ncGjjklGs1xsP1aR71INYcsXFJet5CU1CHqihQ2J5nOsbd4OjgjHO42w/4QNv9gZb3BueV+Vxok5pLEXg==} - dependencies: - fast-fifo: 1.3.0 - queue-tick: 1.0.1 - dev: false - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -4953,6 +5083,12 @@ packages: strip-ansi: 6.0.1 dev: false + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + /string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: @@ -5049,14 +5185,6 @@ packages: tar-stream: 2.2.0 dev: false - /tar-fs@3.0.4: - resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} - dependencies: - mkdirp-classic: 0.5.3 - pump: 3.0.0 - tar-stream: 3.1.6 - dev: false - /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -5068,25 +5196,17 @@ packages: readable-stream: 3.6.2 dev: false - /tar-stream@3.1.6: - resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} - dependencies: - b4a: 1.6.4 - fast-fifo: 1.3.0 - streamx: 2.15.0 - dev: false - - /temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} + /temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} dev: false - /tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + /tempy@3.0.0: + resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} dependencies: is-stream: 3.0.0 - temp-dir: 3.0.0 + temp-dir: 2.0.0 type-fest: 2.19.0 unique-string: 3.0.0 dev: false @@ -5355,3 +5475,12 @@ packages: resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} engines: {node: '>= 14'} dev: false + + /zip-stream@4.1.0: + resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} + engines: {node: '>= 10'} + dependencies: + archiver-utils: 2.1.0 + compress-commons: 4.1.1 + readable-stream: 3.6.2 + dev: false diff --git a/popup.tsx b/popup.tsx index 676ebde..ecef929 100644 --- a/popup.tsx +++ b/popup.tsx @@ -10,21 +10,9 @@ import noIcon from "data-base64:~assets/no.png"; import setting from "data-base64:~assets/settings.png"; import upIcon from "data-base64:~assets/up.png"; import downIcon from "data-base64:~assets/down.png"; -import facebookIcon from "data-base64:~assets/Facebook.png"; -import twitterIcon from "data-base64:~assets/Twitter.png"; -import linkedInIcon from "data-base64:~assets/LinkedIn.png"; -import youTubeIcon from "data-base64:~assets/YouTube.png"; -import axios from 'axios'; const extName = "Purpose Mode"; -function startFeatureSampling(storage_var,current_status){ - const resp = sendToBackground({ - name: "feature change", - body: {"changed_feature": storage_var, "initial_value": current_status} - }); -} - function setBool(key: string, value: boolean) { console.log("Setting '" + key + "' to '" + value + "'."); chrome.storage.local.set({key: JSON.stringify(value)}); @@ -52,64 +40,6 @@ function ToggleSwitch({ label, storage_var, checked, update }) { name: "toggle", body: {"button": storage_var, "state": e.target.checked} }) - startFeatureSampling(storage_var,checked); - }} /> - - - - - - ); -} - -function StudyToggleSwitch({storage_var, checked, update }) { - return ( -
-
- Study condition -
-
-
- { - var status_change = e.target.checked; - update(e.target.checked); - setBool(storage_var, e.target.checked); - chrome.storage.local.set({"esm_counter_today": 0}); - - // ping server - chrome.storage.local.get("uid").then(function (uid) { - var ping = {}; - var date = new Date(Date.now()); - var current_time = date.toString().replace(/ \(.*\)/ig, ''); - var unix_time = new Date().getTime(); - var status; - if(status_change){ - status = "interventions enabled"; - } - else{ - status = "interventions disabled"; - } - ping["timestamp"] = current_time; - ping["unix_time"] = unix_time - ping["status"] = status; - axios.post('https://purpose-mode-backend.nymity.ch/submit', { - uid: uid.uid, - type:"study_status", - data: ping - }) - .catch(function (error) { - console.log(error); - alert("ping failed: "+ error); - }); - }); }} />
@@ -347,13 +276,13 @@ function FacebookSwitches() { update={setNotif} /> { const fetchURL = async () => { const url = await getTabURL(); - if (matchURL === "setting"){ + if (matchURL === ""){ setExpanded(false); } else if (url.includes(matchURL)) { @@ -694,14 +618,7 @@ function ExpandableMenu({name, matchURL, Switches}) { onClick: () => setExpanded((prevExpanded) => !prevExpanded), })}> { isExpanded ? -

-

- {name} +

{name}

: -

-

- {name} +

{name} -

-
-
+
- - */} -