From 087ff0e18a5bd7536a18099ad9052dfbdc59eaba Mon Sep 17 00:00:00 2001 From: Robert-Stackflow Date: Thu, 5 Sep 2024 00:46:00 +0800 Subject: [PATCH] Fix import bugs --- assets/auth/ic_2fas.png | Bin 0 -> 2134 bytes assets/auth/ic_aegis.png | Bin 0 -> 5140 bytes assets/auth/ic_andotp.png | Bin 0 -> 4894 bytes assets/auth/ic_authenticatorplus.png | Bin 0 -> 7812 bytes assets/auth/ic_authenticatorpro.png | Bin 0 -> 24132 bytes assets/auth/ic_authy.png | Bin 0 -> 5110 bytes assets/auth/ic_bitwarden.png | Bin 0 -> 1191 bytes assets/auth/ic_blizzard.png | Bin 0 -> 5254 bytes assets/auth/ic_enteauth.png | Bin 0 -> 1315 bytes assets/auth/ic_freeotp.png | Bin 0 -> 7975 bytes assets/auth/ic_freeotpplus.png | Bin 0 -> 5416 bytes assets/auth/ic_googleauthenticator.png | Bin 0 -> 67870 bytes assets/auth/ic_lastpass.png | Bin 0 -> 3162 bytes assets/auth/ic_steam.png | Bin 0 -> 10390 bytes assets/auth/ic_totpauthenticator.png | Bin 0 -> 3765 bytes assets/auth/ic_winauth.png | Bin 0 -> 12556 bytes assets/auth/run.py | 36 +++ .../Token/import_export_token_screen.dart | 133 ---------- lib/Screens/main_screen.dart | 18 ++ .../ThirdParty/enteauth_importer.dart | 108 ++++----- .../ThirdParty/xchacha20poly1305.dart | 0 lib/Utils/asset_util.dart | 17 ++ lib/Widgets/BottomSheet/add_bottom_sheet.dart | 16 ++ .../import_from_third_party_bottom_sheet.dart | 228 ++++++++++++++++++ lib/Widgets/Item/item_builder.dart | 4 +- lib/l10n/intl_en.arb | 1 + lib/l10n/intl_zh_CN.arb | 1 + lib/main.dart | 2 + pubspec.yaml | 1 + .../ente_crypto/lib/src/crypto_util.dart | 6 +- 30 files changed, 379 insertions(+), 192 deletions(-) create mode 100644 assets/auth/ic_2fas.png create mode 100644 assets/auth/ic_aegis.png create mode 100644 assets/auth/ic_andotp.png create mode 100644 assets/auth/ic_authenticatorplus.png create mode 100644 assets/auth/ic_authenticatorpro.png create mode 100644 assets/auth/ic_authy.png create mode 100644 assets/auth/ic_bitwarden.png create mode 100644 assets/auth/ic_blizzard.png create mode 100644 assets/auth/ic_enteauth.png create mode 100644 assets/auth/ic_freeotp.png create mode 100644 assets/auth/ic_freeotpplus.png create mode 100644 assets/auth/ic_googleauthenticator.png create mode 100644 assets/auth/ic_lastpass.png create mode 100644 assets/auth/ic_steam.png create mode 100644 assets/auth/ic_totpauthenticator.png create mode 100644 assets/auth/ic_winauth.png create mode 100644 assets/auth/run.py create mode 100644 lib/TokenUtils/ThirdParty/xchacha20poly1305.dart create mode 100644 lib/Widgets/BottomSheet/import_from_third_party_bottom_sheet.dart diff --git a/assets/auth/ic_2fas.png b/assets/auth/ic_2fas.png new file mode 100644 index 0000000000000000000000000000000000000000..25e67fdbb2251fc8fc798fc60c8620838c4418a3 GIT binary patch literal 2134 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 C8#Z46 literal 0 HcmV?d00001 diff --git a/assets/auth/ic_andotp.png b/assets/auth/ic_andotp.png new file mode 100644 index 0000000000000000000000000000000000000000..f13eba3449a2e3224ffd309b7df6ebff3c96bcbc GIT binary patch literal 4894 zcmV+(6XEQMP)i1s9M&#DI!2#GOII8Uz(=gl21?m#S(+$@nHSj&I~eW8yZ>BtDm@ zaa#ztXeBpbgR0>!#~?Z5&(2rU1d;@EW`apLv9o$V>AF&7c*= z6@IjVo~q+?3v?XwJj=8DS&nUDdFCsYV_I0Axyy14vP$>fYq|GXwu#Zx2jCubExiEl z3HOFE9wFV~Dl02<(bQOnzz&uS^v>z7FcypnWAkiOzhQ*@nB29vq1a!?(~DV-sbTd@ z3y2OUfNqrpv2||_H83Zb8_e;c1i!et*q^CmR_J(!V>r6Cr$Fz5T3L?aVU94@hey@Al;bNL|#zn#8ds+k=5 zG5O$L0sgYeWo`_|tYA6js?$Y-UMrB(nNUYxr7vhoVeLKc%@)@&G|Mrqjsmz?uR$yI zO0=F&M|+LWpz4Mx=-tLZ^nd12=yUTh^hMK9^oe;SdcQFM@r_~VfH4MbZxDVtPy*Y0hdqSe`Cr_0on9O7v>9hR;NMjj`x_!!-0)(`a_Oc9u}j$eXS=!+y}0$r=UtEyD}EcZaJb0e_wV{(~}V{|Ofd?(dnmUAk! z-H?dPjZdO~n0-)7^8jMdyCQf}-Z70w`;9T^XIz1FjHso*Q=cnb2ADXF0dyTbpXJ!= zQY=8H*P^Y46m-cv9NlSlkrZ@m1dRR0@)+7@oR602)siqlTdnzL;pxIyXJ9`-Q=^&0 za?GdpP8!6)Rz4N|(KO!Spm#=}n0?VsLxLnvgr-XUS>Exy$$*jLc0NZ3vU;Y`UQ=^5 zmyPs|;pjWd;2s0Noj|`dHwFtz-d-lCDvM0H2Xeu>gT~<#E3%%O(nB+3v z9%^kKfPS#JpTo?_e0Yd z(M(WRs_ta$&6sDGRirql7{==9qhfZyPOm|4)<>ZmmO(^|zSiU^SV*rLl7)LnVW+>u zr=!Y-spxXkP}EA~Gq|9}#tCS-UL{5pwH2JmuTX4P3=_=&?OWPJmSesav*_K1ICR4z zBii+UGL1v)csVK&v*2zB;zGaXvXHScjL6}G&q6pujCG{0RDF|uXlart@FRCc4r1!) z-C`CCaTgM?1OC7p#%QNSGkBATNZ6P2#jqP&W{yQ!A!3pKvxUx8#YmElb zH5!H#d=Mdq#;0ro|I4PKXcNDv*Q6QCxJ)6zV`~5pd>g`ODO$RB=`x#4($o#9UQ8W* zmelKA%gJrBF2Ess)$nYu%k_eM|IXrW6BAxHK0|!}ydyc4Nz0OkbjyIklQ~n^I_58= zvi}`ZkPW6Lg-+E^@3jf{&HN&pHqobMU-X>5kW3k$E&N;Rmei@;Dqqccje^yaWxBw2 z|Eg(7w-blQ9As{9WdJx_5C`f`AApy>!;nbo6Z|0GBhT$p87D1Ea?@68*OPd@Ap4Kj z&lZAMT}>LCGRX6?y}ayXvtgkSF7M81gyH}ai%46eY0EyCwJ}B+=-zp*cbD9ouF;+) z3Nv#>f+^SC?*FrCOt0Sk9X)2Sifj=>Bvu?xLM}J1bfZy>8`aJ{AHbfEW0mUK3Wx)D=27p%f zWcAE-5=ZGZLtMXS0M`&k#DJXg>>mK@`z;~(=P@`@PI5D-I_~cbfT}tY%yN(9v;fxD z7%+r11Pyj@e`f&Xu}QLdxkqvkU~QEFq)ylo)*FOei-;6O!xXFzqsWFiJ+9mxE;QwC^jH1Ck;ftUHT9$7Rv ze}6ZRLhqXb(0ir;p@NR221!bSf@2Z}WbDcKpfd(|sm`m;kT3wkv8_%nGlwW8oNj^Q z*?Y=QD|qC)jd8?Pcv8?7!$KlYIDLD1C17pU3@tpR+)Ba#h@IP-N0q9Me`6ORV93ll z``p2=xNM?WP|C)XSFD+#;FWo1AIR2`Mnm5<1v+i9AZofw>Oe`Osqsmt%?I)zB?MV9 z%>^}zT^(DB9kB;P5s5D*KEu?}L?>XNdf8bEK3)H`Pyo=?d=A&oB`UzRhm4IA$?^ej z7T%qyo|#}R6aoLZO)r@K6kV&mLUL0mRBEv}=dnLoKcicx=TLpL(-;7Hhp05=XztaC z$rHl?Yin6CS?HqBKy{VcNODt9#E>6##)6^NzpKO6kR*rG^3IsczbrDLpo=6DnzcX6 z6c8OS9*3hJOvsF!JknQrQu!L`@gt}ZaK^5KnjNUD=xi>(F{GlKPO^mFHa$U9WB}E1 z={wT*`i}PMsn6y4=B}Gx*ouwo}CV8a1oRUP>X#PRMfR$XnP;BcgWehzamUj?E zU=IJ?#@bFP=t`3}dV$X%EYQurG?SjW05I;VM$~QMf{7tT=Zfk{&Czn>T<2LsR+1n` z>YW!Dgd*f(!sAn!uVGHGZUyiw@E;0!%rO%a1Ga)$f| zXAo+kNY4l)txecWQIt<-^8f$!07VU%rJWT`*J+6l=KZfwBji|<^sp8A|DWKX(ec5- zGxa|qt~1K7$ZHEr37d~&KwUP56&x~ZFf}^ABDYG+Y4|_bP$eyv-~?q?r`VzR>&qr@ zhm8+ybVv`CXlpbmWz&K>ilRnabHJ=!&|Q4QoaJ*CXsb0Xj?96 zn+*p$Hu8&w!YZl9f6o+1d|nuWZ|OT0*SdMTJ%J;jHua?*fHn2VluaomnhWZGk+&x( z5?YN(3BZTuu|g#_Ft{s%C#2aFEa}*ALJ|)2k>XHzy5L64^D)Z-%g(|Nom)c`eo}Cw567tECzjbP6P%#5C>5cuj5&`e{%U zcD{)EP`lvjEx*Kdi6z=@oWe^`(Z4J z8g~r992@F2+UrThK}7?|Gcje}Ah)kMDMTP8L5dU3H0VTt4{@K=O{q;@K3?E>4aHaz zH|=o2X49zf#o=*}d_~SMz9_TNyYz*$;gy){E!|(LwaIEq--z^_VH6o(9ZFEuXIZ z0?1*Go?bXTJ+C775@h%7ISLA0t*$uGV-=Izt!tQMSFbq0By)e}=MhUL$tj8&gE5oj z_h|m3klo$ggXWgZRu!C5{wPKtbPOLuDzm9ExW~bVFg6^@v#Uo@9gVUND_WxRr)em6 zD##wi+m%9g!;e)+d|7;1(b*!qn9#1E;gH{@rr}N%OFuTd2#OX83Z&@Dr97d$6I~j; z7O?3cdL(b^?TV8Lemx-In51;&WU9`n_?U(A*DzX?0*W?E}+Tp{iS| zPAx@ei*7%=E^(jF6F!mH=J$|F^jH%`t~jPKCLk(c*21j|E7XKuCZgv$CGVRoYspD(VG67Cy{>406C}9*6!?CIN z!#UO6#1|6Y1PlNRjL9H}_Kxm&qLQL0=mr?*8|phVbxZ2uqBDiJ?9~a~DQ;lMT0TSQ z=K!`k9FcUZHr$WyWKy`e+~wJxTBP=EliNLGeIVkO`4^h@myYc z&Mh%MeWW2w<>>w@2jk!s)t<-SUf2mfhFDhmf*-*OH5o zc~h6cTCkJl=L}QRUO&MDdxIb&pYosT9~)m5Uy)m$`=zEzeYdxZC75GQdG?j~U&S8x z5BHCQHQ=>8-oeT0b>MeoLc4_o@eqGu=g6qZ5g8Hr$s3XnXCG2r1DR@1K+h4@jk-#O zvJWY~O@2AKd{WvZCCnM`dVjo@c1x$%f^SVEdE#m?a8yEvj2aRZ92>kaZgt$A%-?5z z+Z!06sZyh?eM_&$u8Q3oJTG{m$0!fT;fCT}?}OJcu&)4b?P-u*Jkz+7NXcy8nIT)jG2 zIeiX%YfpnawjM^|-39s5NyEktn;V%O$tJ8x*qy#3-H`o;;&Q=BWh-=-lH%!rduT6c zP{CJ#b{6OtH`HbXU|B=#5cccgAf;WJ*7f0c7MyS4C4K^rgy%v#vR0PF))BkXSI&DI7j z0Wx;Wze@d0Dj&BhZU@{mG%+L%#(=S~at+3F@Wpd_D1qhyieR zAjkzkO&bw3;+f$2!MW42B7QzoGxMdGmC<|RR>zemtVuWl1b@$48M6o8gU`Tc;XCkM ze2*#ko)hsH0eH;ecn)s8-MVq4j%a@>+L_^t3t0p44xNC33&S8z?m$y8b$l%xe|94N zZZN*rXngN>(A#&rOMe5tJ7&0Hd)o_}eIN`2r!r#3_{otfMKFBVggKOL)TFkRv{1p6h((r zLtiyTL+3sI@wSQ*`tK3Fl(+A`cx3(mYXwv-U#?bf_kE`>s-4wr;G(~*+<#7s$pIk& z0SO6)K?GAF2x)?u03r}12n>J#00f2t69B*<>pvDCm|zfK7#e`iI+V_}&9b7t+5DHS zwc^>c9$vKyzQDqsTGR4VPLZ3c#*8ukpD2K7((CKSZTN@zOl?T^Ggzp^3<5w5FaeSU z*pe>#One*CMKZ#rYi z|5*jR^v<@fOZFVSp~d{{>ec&sxWOz0Gc-0}rU~hrJq!r-V6z-{Fe2YQ?V(RLc2c8n zOz5@uKkvBq+N1vm6u@-b^Y0fL{^B3c-O==PSmy#J1^_4^FbPNkAnm?OX_m{(uD>Rw zbiNbjUKfVIdA^^nCAFG`{z;sGt(`9UUS{9 zP{FUF4aTVkE0!0r6O643alQUAGn;4(!L0|(83BL69TT2j_1N2YocRV3@jrzEn3?XF zwW|MB|GD;&gCV+tz>v^j8JT$u9)UXiiUKhh1Zs-KhHtLLYiB>Y`id)`UvE%V=eO){P=418(UT~ii9mL|pjc$-fYZHJn^y@#B)>~UI2e+b9S)mkj(c*| z9|630Tq@vKv)1=M5SCT@8jTyG&=g8}c;<8;o+%iwpM9H0)DS)P9O38Ad+g)WOM}LJ z^M7&n{^Ldg&n?_q`S)GshlgT%ACBkh3{IwkiDc2%iaGr=_P9_aIr_l()tpmPr*w+yIX{ZHf-ar3~3nyPPboaNefS=9!e8M~1!_#zwyMwZqe%3>!{@tr}=dlVn zPiNDXZ`MUI9RyAtwNz%O6@^kEXe=Z_C0$_D8qWziubppDPfZ1~GcoB{dnhmf5O&tf$yYqLCj8gi zG2@si;O1HDFWXcfo0h2R+0o@t4ogc2C|!l@#nZF>s!3D6?X}w%XtE!L>|l`MPpc!- zFL>&c`X#^e9+*8V;PJ&@^jr2t^GgyU4hQF6)@hlLt@}Y6a(@Qf#E@Lq_Tq-x>z0@; zJc(Ig&*8|ls#jO6tGe#&y&a~2+h?xp^}(*#hcQETOU2I8Z(O7ZMCPbW$vg;Q}#9%Fn z^z-aJe@+(^Z_>y(wraUIYW4dBNanbsq;|WX%tXOCRwO!f5`aK;gL&OKQ&zA1@V95o z%mv`(RKQ(-SvTN7$gI+#3TI57(lQ0kPGsUiAo~eg&n3@gm%-+HH+Foc>L6x=i{r=nV07Q}n^{Ppy6*z>d5XP{k}Z zPy76dqcTvgatxBPyH+gOF?&f5jO1=@4A*Oc1$q<P@r&koASLXma6=+c6_auTM7DhE5X>I z-Edv?5j?tdFV^mB0h==Zo0PwxDK!ftPiu;yU{A=HuxQHL3%LD$LHFe%gh+uqY!_%WFY!=4MGv**^>w%Fs!08p1-CTZ+%vc$Cp;aV5>2o zl}g*(e|uLAu>`TijymJc3m)I_*CmsNH+xb*qiJ3h)y)yo>fFX}guT}=+y`jeto((67QI1quKr!o*P(&;HwlwLJ8E10G-ckV z`S(pYhhNlS{&oo!DJ#V-4Yf0-Jk~@=R}0?R z(s&bqhjJ-^A`$Z{tKDiN{KSuPI{1}s0qmSdd&nM47PxF=Ilfm}obFB>4~e94cO?o3o&ok3!XzVkZK(zD#%G5y@$?uv1$_X3it;YF`J75TzcvgK?xe8H>e%TS zvi?k|CZeJ_CP!TN!iw>)-gfr8Sqi9HzFgh7G5n|m3G&KR>!9*KGkgswFG1gKg%(xO z!!NAc{3Z74CFtY}!X$=C8WN-c0`PUCfgQCWjI1n6X1|w>9*jSKx)Lqu)V`bbcnCRjfNN{{ared~ap`G2 z;3Eb|xC);^ICQibTA&DqP~vq%>s?7G00_+yGtF^yEh)eW{s?v$8DL++{UmD@Ve^dn z$)8di4eke@ z*lz0v1SEVu4V7Js(v)4`_hDd}f-m+PP}Te!gHByN`{aXCGBs9f!t$If1(+r-5y_M7 zF3LHA3}@U+ewh%b0B7BcRFwJzyo#Ry4CvJr=bzjYAJrHzNCjY6i=F|H55s#GqGxH! z^+pzY5ADt}p;1iF+;{frfe8vFTt8QVK{?p~1k2-ah>92YsNbzU*LM zTnHm}6iOk!u|u##i!RRk?YvFp4^24bpb7w+_8gkfVkiNxUM(SX_Ha&KEyp+&FyF(3 zg32D9Fze@|uwr{XmTdSMI{EN}Q@Y`t{+*y|J`l$M@@K3biu-&%rUZdZuMyTcuw`4# z#QKwh8EVy>EoDo0 zHxCuekl;3DT3&K{ubqGoz- zhB{d;nTr_`Od`)8^eA|4_4Dj<&4>Z4_@WNuPwsK-oB{(ak!E~Za}?|^k7vtq1Ehq7 z=SF$ckbx{_hVz3m7(@hOz4-I513gs3Z0SxgicA}Py(5dOBv?neK`jRG=4Z9|mtozZ z3305J01h^UQQgcCUHuMGid-`b&I`EXw1k6!A|qy$tAa#tmaIt<8SOi-a72D(ye*QG z(%cbjU}LR`J$20(SYCY03}XKB&(S1`p}EvA9o0F@l$9x=ks|u3ism~b3KI&OIavpp zOU}!WrUhAY7Cci*B@7Mae)jAR^Am&w!Nl&G!+3VyYN!=wWdUnh^vYxbNjdQ#yN;lJ zXN^)6t_)Wrv1o5$d8XE0dRupv?6*O#KDq(1__ z0wB3QT_^RDjJS+?P0R;UxRV7s$ zLaf6iw0XBK$J=jSj%2D!ah_1z?{_N=;Zju4UWpJdJbIAuu_mjA)rfNgf!z~QK7T?{QrMEK(r4~8y|Ce_P;)#j<(Y3JS z-3|kYMkAR1*86yV@fHMzd>^VmXp=&_i2^A(KV?_5E(YkfdQxF+&anQ((GrV6H4LLeNlR81 zz*(!8GxmltfD<}vc;X5V!e<5(0|?z5o;e=u&}dQ{wA- z3DinRDZvOpp-P}~0D|!>ic`vvR-B(~H;A-`Ca>&h$|fAA#Jfb`b^5-l3aFZ@A!6h= zLcl4wcxlXc>r{xxCiX|)E(NZZAJuhCo4X8C7k&Y)@-!%lmQo-IP<&@5D-4lr8Yut^ zYvz#0`}7PTW*QoMhuQ6}SLjoqmKF#cjsm{;UMI(5$&SC2N=wP)Or~_v7z6rR8@1Hn!<>O-S~wl^EqjTF+C#2bHGiDwpVhFUoasu~ZV z+>t_H+(N64-C=eY0#^sYBDL$oIEfnUyx&)Is4{oGgPar#Wl&I+J z!_+GVp;u`^7EMKhak%j)?)=kV(Wq;XLV=Vz{;@vTjv=sT2-Kr$9Nr3?aS{7xy zy_I0^&OtnV)esEs?(Fjo!@$-<63wNR7F$6O3M&AUL|)w{=S|^oWp?Yj=>o)Mx?%fR znY=G@mzw~CB{r+36nmslVq}^=&L{8BMH8D~2&JBv^9Mu6L)HgK2G-cLKF81JGowl;3 zpnaYo>O?Y0Htj<<<-2#s9G(R-_v(JPn7z7DPJ`j2Byk!pa^WZwXWK2$Db|}B#nu{5iM%ZNz^)KOC^~KxHIdbl! zE5ED{%gSUIitN3XC%43a#u6m#>3#|%nyCOr*K)9;#;uUx!~%E1Ytks>$!`gF+GL{3 zm2@eTQL$(GeUSs{Oc$(I!!?P~J0QP&^RDrSRRHK)7@Kn_to&;}?Z);(QAFg(`**v3 zHqz+b>T|UWy;jLt1YWn_=G2ucAta$!3C;dTg41+rWv{n49jSdLVsg;gioE6A1cD^W z+JtRY!wi-ZG2OIgE3^ZFl;AXiSVFJ_nFgk%&aRX3ZX82E635XYZUrJ)rh9cJ5DPGw ztw3Um)pI=Ku@et-Yj-Slo3ud+N)#h<&MBSey_ZnH-4_q3Kl7mvKZ%%hKA75R+ZGp| zK~OUC_n4t$)`E|*;j4OReJVZrc?ZjMs8I;O&FA;Q*daw(Cnp|FGGl0uVlWB#G=XXN zT#2yihoJ14a)N>S<|yubWj&ful-4_k>xNCriX}d&Bj8t8RmF#gCml8U0t+}AIUg+A zHF-*~iG7VGmVLSfQa4jjTgE4wwqyE-Un6+JNqLa~T626x`ed5SV$ibW0o@95dfzTK z_m+Zuk^r%ULWJ)Ou5jE6#V}BJID}aJUdS#()2Ok7Yi`V?d3woC<_ zI6`c!UWKi75uBR$7T-(`y-=Z)RY1*}luNFAzMLvrx6H^=kbr=JM;C3wld~2Ik3J9U;xtdqmR!LHnWeomIoJN$oHk9x3HwV$ zO07jNEISrjcG;GI4J06h5_e|=!4jnSK#D&*U6u?MiC07b#7D5S_)0kcOUlbg`ZRFULBL18mg!>NaxtEl2uOwfX@DOZ)9 zvfI<41(`aS#BM`6F~cup_|joTv(~#Q;M!}iJ$mWmD}M21gE2iu8d)3Oy!8m$+&S_% zvMkF3c_`fSt=co;=Uh$oRE6aF9YM^)x{5oht{YtoHw6GdF`8#9zJgn&E>CM)LdqTs zsP-YR+-5#GCDT(%`5Pex2KV5qJYcN=7zLVG9|#z;?ar`Oz<*5|*L>mB51!g~7=KA% z`JM-$=9sgS=u~-iH%>k~HKojD!P)FJkp%6m9G$HRD{|O%kn!f$B^$_ z?tSej1Q`^s;I%5*W;c=^YGg+ja#>junPV2u3kOT%4#Qyy0 zPq!B#?>&3}eXp&&;H}N!HDQVFvJKgv_kin- z80+3YCQqF#Csfl*Jz*Dv3ZU0sb8@HgkKAzP{ti4T<;J5H} zj{>)Cp18$h&OO#ReGqQ~1apEmGWMjUbh0?dz9L5JHmY1!Z&mXIA58AwMY;Kr8_xX7 zt6cLMl=JRy$G!dIrB$0nBtISF**8er|-BIS*<=j*Qm_I z;fLOIdN1Eyi+?j_em*kIds5NtUw(i31yhz3Zf#JXBt`K|&vv6Sw#D5fE!E>ja<8=X zeCaKQVc?`PESxuFO!{S zGl?X<(rxwkGIQ{DE?g%i0kC8LWd~e9MXYIfnS5ZypB54Pgq+u4L+lH;I2jYoj zrg}*TXsm-l=%mKB{p6(5aZ`RadQW@h*CFqcy#K~=`>uTQopXyDj0g8d3a&SDba6b> z-Cas)FRx4S$~Cp?OJo6fUa^d(5we)mNg!;1*P))K%rbUDg zTB2*kDZ4gPX(3*VxMbH#Cf_f{@j>3!hHL|hG~hD~qen3O<-k5=cg?$V?BcHgtiv~V zsQ4C+SMIv#Z&k~epR{&m=(`8P;n6L+a#6^jv!O@)rsA{M2_7xoH3dzK%p{9|tH>Dq zf}@3szB1@j7nBz&ADoLW8>{XdV|*L3_*N8vI2RSbn)rWDO?`cB*N=A`y!5M3^xC=> z^o@u>i4;^M8CqHkg{YNPRSBCThPk^y>IYBhgWBhBpLl2sfQ2}Ij{gN5 W$yOD%87-Fp0000QIXkOq4&Hh2Tc0%2rJtZo(wB(>CPwR-Q`a*4R-d_N*1;@%rKGPA0y7eVLq z^wU*YnURqZ=bZbV_q^v^!r8~!$G7o=&R&AEkFySN_Hp)c)&b5w&OXjMz}d$dKi(_S zY8*$K`e;N6wnO3Z1e|9K<`iKaDNF(AG2=LZ<3!j8g)f^3dk1~=Hz;)P+K%2XB0hUH z&pN=P;&IafnNGX7Ks9ha8$1ny?NpU%Z=P{eA?3ZxG=#0^F{FZw$J) z_tlrt{Mjpf)&b7Q$Gb%0sl9lbCOl6BHxS{8B4|4=lJcsH07Mhrq%H$@E8sRJ`~ye0 z<%hP>(%CD1)&b6#$NL|Y|G z=?EX(c`kZHBxmo=SqC_IIRBfn&L~{bAp8^v-v`MezMs%q(K?It`Kkaw+0os5vt#Jq zK?#5iR|%1d6MZt$c>7=(cfR&9IDFO-&N{%FKHhncG-HjcmBK3s_#p_k+BPaays>__ z9lYcrFXC2^#AAhu8w(v4uqX{n);3@)| zA%hQISg{N}0FN-j;PWShtmixr@y~+*1K=JZ{4E*0>&Gskd(Pg$vktJT$IhEXKl>?o zg#msMj7ve7Ud;veqdrUc!q;GY7g9+enGPh_MCbu{fEj;8Gx(F&Z=uDrcl4|SO!g3= z-+d5QX@lQp#`6?`Y|KqwL?@5i&v8DB#o$=~6SBYMxj>QdlIt)${1E$f`SS&1e~-;u0iyr3hXRV0$Pkk79C0K^j@*MX$sDGKOvP zK5r3(_p-tt%?a*1n;)EY04L(V{p+}pG@cz1{tE-w`GzGSm@xvb$OJ||E~%}9K#sxN zRppRVRG<7NfOjLpN6)zccfXRzoOOV2T2@Q9W zs4pw18Jy@%9)6!bfPVpSbE}OH{p7iH_^bnb+Xa20x8H-SL3jgzX93tE0+r)?JGv_i zcf+dMiih#*v^^4_fGVp?AcFgMN30VII;C}9cD;beWt6CV%Mk!~k;2=5{$hOM+p%`= zZRr5-6lpHqgEs;ASpcn}jiV0l*Wvh4@Ms((l&>zZv_2T24yBrN!Wir?V<6Yi-v=Ok zh=Bk0#>;5$SqJzQO>i4u!+I6txrXtp5M1W4CLYb`8)~RJD}e%)V7z>x?r*sl+EnK_ zXA0d+8Sz59C|5Zq;Qm@j`yT;JSKvhr4i6cc z1AXj7)GuIJ@&*4OH0lmW)mVkNKJ|u6>A+bBc$7YN z-X!|!$KzU~@B;w82Z9SjI6?xrykhL5l2^-n9K3B|dFQq8atB!N^((#N9wTJ+fWO)NHOiL-(3gf_a0CaEuVl0=X+mtwVWIicyfwW~!W(#9D29n%7^!hQ~@2 zu%8uv`|8Ky55ARZ2j4OduV;zmj_3C5;c~tau`ayUQuoRKeQGTRh1y-O*&VLd)MCiRVf-M^NnFJgI;R7k- z{pmbD_l~Dh_pAe)hR09umh)ra6(o2SfF}|VPlBB%y%;hEE6W5>i2@Ysr1=Gn$s0!H zF{5M}lYH;7uOo;Ez9xj58ifDz8&_aA9)+vHqtXF(-6ySuC48RTB!;wg&pW&qa%SYOAQj1!~P*{&~p2r@Dr)mV2yM@4U^ zt&uz_!w4n_p8Od#nx)*~6pe;PvVtn}s6rlqMF4j~Y#)2H1SeXfZ|Eu$*_>L8Y9ODTC;MVqYZ1M(bmEvs#l0Q4)3vG7zL?D ztUOYBZAuFNyW7Vv9{mm+z4;7hjLv8W*d?O&e-Yawg{MOB%S3ph9|c3-fL4NM#Vb@z zU~LtrAQx8I$+K_hlWG`FUfZIX%^MvrRKRE;QgEP(nM1)@d1zazL|15;(1K0tpiYqIqw9+c^>?G8w zOwhyYC&43Y1s=~osm0M`_kdKY3d@BNk zuwMbc(IfoN_g#H@hy0#a2l$EIGQHfxlZfy$0=y7FYpqX6CMYf*&H|LK)DdO8Yer^Nww?v_TYizgBAQc`%e2+qmbl?r`F zR=c1#Bo;n>N7dFspVCCAp&X-Irz+Ta1U)LNya~1>+n*p8l4j5(6zmvkbJRIgK*Ehs z!EHppLj{g{@N;;GE)o8M1%DBD@NfU~a$5M7bpR2e|8xf~)e*jr1us_$PaKP<$*bgg z;;>r$AJXNo&{F+*o%+_{sS9Q`L=j${gSY_egWYB3>m1uK{qi0MoTe*toIcHE_jOKVk$! z;oLw8H=!4aA5}55pgQ!bPHy4LAu4=&jrtR)Z?d=L88m?v*TOk3zp6+wCWL`2;h`mP z&4zF365$&JyzjW+4?cPdns82u1APCTaybaU$AYIr(8$qgSQhadY1DgAjp!kKD-!-3 zjM2^1;_E<8QTI6&Npe8aFp8FS=7;(X{2|FTg~zspMlIU;Nhn`{j6bi?G41zy!o4LS zd{8ldZ+-*5_VLT8|EO?)op;LlB6tA{UQ2?jLE$RyO0@b|nJ{Z2<^q#!Xi-CNuL1BZ0cPr$fpNnMR2NM@Z9~}U<3zWCqE`y83j7Y zHN=E7hA?8KTdmJ5e1Z_LUkD!(g?D`P8hYT2aDbh=WxBVBUlGPn2r%O_3jR!c z8+(#J8r-uY@%v#%RJO*=@~ks(_O$gtm2&l+hHA3MAmtihK~!K9JfB7K#~Rjg^$xBd zH-csO+DZ;Zf#XPpt{l$_+4G2K#L5t2*d~aEL-wl=#`|K0U;L|UPi(H~2|K_G?vW-P z!s`V1by(EqBm<@Ruj_w;|5jLNd;Dmk5^iK_2m;ZW<-lj zeksQWoJpXi{rPG{hn#hOzjf_(_@xuc2~OAno_~j2O^llacnro=9qTN39K5K!EwFA1 z!pz4gIuJE1$!ZJ%R9`h61;r*&t&Vg2Q9ol0)yZ{E8|qQ0sY?45_zBw;g0RPF$CMFy zO7@3T6rT0>*V3m>n*%)eGxDntylEv-X_89kq^}9y>=BS8G`USy@Y!p@;;hwmnB+Z^ zHuFzQSC_)Z--3sgBZB1SY|Ef8smoA5Xah?7T_z zfgMrG*0BAMR&=>fj^cN9-{<6=&+6~*ioZ8&p=aIl4EpEO0)d|K zDgHD>o`!GHN3CJ4!s5maxjM7H;M%_RB=$%2R6|{M>vgN!*yDuH>FKwbp9Ra?1<>Q5 z!z6~W+SkYgJEe?;uyx}Bsiu}O;dx3O%Q7bETgfgov_|&7(t9B%B99m`x`k?rb%FEy zzuUe`zhbrHS5ABd_~+hb%<6ptT)RRJVGXz-j2(O;kjcMfC2I_1YAf2aWzF!x3NoeB zhG8Z+#}gSqUww|0I>Kze>od=6{`+a8LBHcpiQ9{Vm$1;=A#%a^C__WDocttYWx}bG zB0gKKU~fWFX-&tXtn6BjHn!D%_mHVg9*ib>?K0`;=Wf46y$8EaV<9Y0hWBpl|F{6Z zO2cu5vPR43YT(h>F&$$JLsr1ZjC~(vQ)Fqv>f18{%P1U+$y^Osfniqs|*+7}VNx z8<7xaub}}5yU=R<&cB@CWa>2wI6Fo3zFP;cFf4C@$faUYqqIWB;c5(FH6z1MP@OpO z%29F9x^0eDAP$_wAy$)oPZCTf{+<(7g;zj{3jy~)==WPu^S!q|lNQ$sxUJdaKm1eg zF$(eq5qYiv=Z_Flt_iZ7l&4-TF}UX2CQVpGTIsp0L~FIuuD7*7^;m&az2iK%2VUGBU#l7J=%aKxsT;_hjULX@`9*Kz-=J)7p9kd z?5-Eh9y%GR`-8Y|v-yL(aT$ z#w)$v{_CwEBm^vi=uRcko9=w!)a|F{{7>=YhFfHMzBm68X8bUOuLIHaStC4wW1k65 zapLFD2jngy^+9Fm18a@*&nO4TA5Z$*qZhEj%S6#m5_yV1qEY%k7p~NE9_4b4kwhsC zU*lrkdIHf;e zPhY_+UwKM*lsT=jC26zH-hLzlk+iH16F&b$DC-i>`Bt?)bx$gi5`bm*r9O(_d&o!_$(>B8I6sf{nGQl zjmM({0Cw$C*B;(5-Cs^$N`~LYThH5Ou6icda`&-Sw{59zLD>3!m0Yd+krXb2jPG^)Tkg45!}>pal`2 z*#=+uSnxR)K&ID~gE!ag2Aycax58siu))Xawey2(?5IIMNBdWw2_Q`Xbz~@{9 z-f=$AnwlWbt5Ky;Xa-=N%z2W1(?zqUWCu={=?TVek(fwUHiH} zzBDEJ&%)+=MfgfE4-=)__^qEIfQ}*SH^H2D33&Ut5FM=$yVh(bP_fk!@_|r0=8ENC zD^b;q$w3IK+o-J8iPuW;RK89f+y}kq9;m|yfWa`oB~?_Avm}{7qyPdF>3fOP$D(HQ zU3YAJ;A_~m>sxDofU9=h)aV@Sem`^a(<0^y5otjfGW-V-NHJTSvuw%QeHl>`ylD&4 z%N`F|w|<4aQ{#uFyZZAg={Xs#IGO0#)g09yFAR&qjvmqsjX%HDw5^X`8EI)A(LKAN z9@z^dgL3t=j6Pcdh7O?=0F|+Er20y$eWdgs@*w%$yWah}az#b%=oO%ESgYhSvhYnDfg^E#u`Y#(FX&lg`?2-?1nzH zzxNXGr#dYyUXnk&ol?vwM#uU zx$Z?G{NoUFy|9_}4L&n^2D1U>&}V4mGJIXJ3cy+oM7(4<%M}EGw5PzEwj(|NV(_|+ zV~ni4t>UpWz9ELO`ieQzn*1X48uI=k4wJLe^Qj&)FoN3qv?^Ow%?W660ny(3pdZ-_ zT3)nXkw9>Dq>5OuK8+P3? zmvHiPEc~NjK37;EY=$rTdxiig)n7%IkmUg&OwlI5{!duUtP8vVZW+|Yw4FiKq? zIf%wr?t)reC`$x6wzqJ932ladD~vfaddXJ8{^=?(x&=05|Nqr8QuBjljGWBC`d5Zy7L#hA$Yd3b`YIU58*E4T+>YZn+xB@Z;E- zY9$1it>{+I8nd&yYE=T&j!8u z`RbX!zUy?3MY(p@ZBI~aJ|w{9j^P(kxs2*rvMYt57mgwJs$e;Z*v=x}N+HG1WGBl- zjcEAUjRw+lFGjNU9PrF6pmcT2m|b9+xbhoHQl)B#D(kgFTg>r(o-QsxX2^RhY zP)qZO4(&&@_dck_c`KQ<4L)T2R8W~V=FcLy&SWj*K^$c{NWl!{tAbCX+Bt^m#k%p- z+ur=t&!092xNg^NzYI3NUR=`LFs+|$Hpg`U3-$n^Y;O{Gg*#dF-1kr0C5b$ z%*?@TI~U2e^B}D$FS61oMNA+$9bLPv6DZVcJgrjbbtZz~p14s?`dqIEk#vpb=0NO?Zoi5gk5&#)IF4K6V&L z(-Pa;?9OndB+85yIYhw_!a(N zvwG@XzxMPyPQwZy^prQR?Djh&#*Wp>B-X+K zUJcueS7Heg2bv-UyR7QWPFi5$h7%O*hljtJHu;7&YIqpgz_PLQlvT-Yt zt>+@yxCI==IP)GS);2>Th>jdU_uh;6$N{MCvS;|J;ska?E~C8V7`cpjnD9y-@!|e%)0iO`6*71tWr-E3 z(w0^tN4Y08&8L0-zdz&P>8k|q+NG}L@BA)K<@bf;N_+pzGO?^C$j*vjX?$q-GuzN5 z&ll|afxQA)iLp~a0}o3BrO*y2oebQKS;?bjqfe8*d#_YY@;7U;>p{Ex3x!fylN!g4T=&3v%y0M1fTr7Q_~^?3Nc zA--o}m-826sYuy@J%wYyD$cP-pCV_FEN(uRT|>Ze6HAYM0tOqlLGq=3L=>M~U|08A zOgL@7DqeGLEF0*hc}(B)Wkko1WS?X~39`6+r>LbYBQByndC9J}#BKg-l?$B;dX$E% zsm14$H}rtWBO>fsPflt50Epf&9mgNIb=Nb~Gr|D?;3@y@@1G$oH;UjXAatBGz?Wx< zxYB@J(tt3RFAhv9qkloGI&}qar6?jlJC$V=Fv-qAYV7OFuHN1Mmt6uF5JS<<{aZ-)>cF#lG3%RCP(b#90IoGqhEo9<>u@aVpHCXwxbr zvJ&Ot`Ejd-{-*8dZ8-LC=kfg;dLi)bC%hvp-D zp}Wftl%k=2r;NN*Rd4#3UHO!!MQP@_gR+WRPR;<&p{!O&c#+--@lkGcVR`z;Q8e*>6wYxFZz3&=^dL@8Y3wUF(@Y?Bs(*{@?KY1&G40-FETD7A# zoFrMQ%#fEONT7o3N~;4EWg8j+Fr69nH*Q6D+xal9j;HoK4U+~;iuV3JXdT#xXlXv1 zzL3k49jJq{3R_`!R8YF?;CkgUID}H-AO%%Qg_6^uD?R0?9r5c{vtbf^n20{iP#>CK zGPi%@_g>gv(`$DUDLcA$*T-j)K3@%{UxCQ;O3Y7=!N9K{*sDXXE6NgqB2jjrQ4Vo} zP9QZs2l;zS>b0m-*fgroR^_iz3Z^rI;($+#m% zBnIK%!1Pw`Onv$bZ@J<4$rzw@%7WE3Z~U8AvB+;ioC3`gTKLhQJbF_Nl?s+- z2jm$(x$~KPoNp-zNl{;bH}|Kyzq@?oYc5ERTZz93ifBiMa`|uSPZQ>vPAj3uWF)kUNx9+0JtmrLc6)#prI{fwVaV z(b16g2+i`OK)+U~m%!aviHt$i@1c2QKROTJ58dmPP@%xo$~FFqqLONjzfff=atd9U zG`VDZ#BOo41#(bs<+fZ$yH*QCN-A1JC4w80fh{54%ef(L8P79W$=@&uNTSnAfL}UIa+J_%T++7^5 z9aI{>SQtNK{KZfzkJ<603zeZ&N;$={lH)I(q*#3_@W!p+mN^0ZzJ=o;`a6R9bL!A1 z@7ndE990(3v@>eJT;5bIwo<=e?jifV+v^9ma*@kIOfoq2T5&#m;H2M8yMEx$} zrFq0li->xQP=mgOB5c8$&+wqCsn3miXy`(v7|o$OEuFu;5;)9{)9?hB-Nkz;yYgS(5be=)8+soLN@~R@i%^aM?dYo03yEt$faH$ZBc%%WWm=O zxenoLe#GiC7AH}Lr8RQ2NL+oL*i@-?%)%v|pRIF?Vu;pYtsyD`M-f;@5FKZd0pV=S zh)JQ+wD_6WfYP*B9UP2ruPDmq*aNy7FQVr%<&5g2Lc#zG?%2nvh~s?yj!WCP5XhO& zY8$@#CMo(I9mOBJ@X5=2ZrZt%=`>7Z{4sX!ho?x7KRkWm zQ}(`S$7{`7-r{v=pCU(~(`EPo@VM{(x%K_z=(AbOk3i&^0%=18q+>*LI}p#Ei>Nb~ z%>cD3Xzot4;#A8^tv`FxiZXF!2*}n9<*%`rAb3N&Tn7oYU$SHPE?Xql!X;yNDe}$8 z!rJz1O`GlU6WTzJZke=N&Y%KO-kbANZBU_rqms+#Tg#jn1MbZuIkpeU;XM#e^Hp7l z)Tfow??H3smRDc<&V9ZUoC-&vQ*HP+-Uzzmj^B&#?tkG~AoD6=c`ih@ixauC3#b~? zh-bGV-f%8-Yc??I4;5y}uPob|9^YtPjgj9@IVv&cihLWv5$~haup@2>c>*yH^Vjyw zl0Sb_1#$spMf*~$W=DDPr4ybc*^T;S%}}B;KLUXVOGu9FMRNRMaDTyjUBO^25~+^^ z`U9Jq=YQe_*S=*D08Z74K&R610pKq_^SZ~dNqrRj> z6rw~-L=QpKKgEsa?>u4V4|iX6735T`2y`l-&W$&MZoU7;#@>hay;{Wl0z@tn;YdOg z90V5Cm=AOvPA6-xLwoxbh^9As9D1H8OC?bzJ1PlWfm>1a73X&c{)C2n*-qgpRekMH zXeFw0|5a6Kg<Qk&p9 z@&)jqi~gbeFgWr6gwx@7^I9Ao7R!ZKIjpmCmw#7L^h=#a{OQZ$cP!j=6ZnjEfMA0A z${RcV#lw#y;U5q&uYpKQD$VawyT2At7{T?;Y+I$J(bz7mEQ{{~ua;9QWi?y0? z9F@L!Rb_k3qJ%f<@EiDDCtA8R1dDUB%*E%<#lVSWm4N8VlsEVyHVlPo?uHl@C$KqDBIv30 zXs$m8@!a-oMX+iJQgot)G&uow#_3P+25zCc66E~|7`4Y4kAOg^-#x>IA;HFRM~Z-= z%PP#}m+-?@Yf_Nap^AxwHtpbafMosv2FLaxT{vKQvh7R(VO~z(+It7s8YSg5bOU;74y}zBAYQi>j_lfLNUY02aavH_M*u56l+x@hjGuf<8p++UA`LM+96`8UiSvZ3Jp*={K4nxv` zvr_oSF7g#;_!V4VwbC= zrhdS#PxSA z>%%AN1azW?4*(zjw_jS2wWlPD zKt)Zow_b|I`g1@<|1Q~j>$0y_tR@pL33rlLZ?IOiYps-DxT_Rb_I@!R z<&8}#9Uhia)!B*WUF}Bv=9gXl_Cxt~wH;wnC!iBG{+kcnIMuuV=#N9>R{)tU(E}GS zK&*DgqC#s&)XFSR@#MzgL0T1Aw8a(yglKvL+FLG0G&KhmHOgJ=e36~C#Y)-F>oPbF zrD@GR4JOlmPjN-NRGuk?HnpZI6IAJ?4MkLo`Kd&G>ode2olX=cp+q1iMY4DVy+ijS zSv;JLQ=~G#a`p$XAzOg*gv0W zsqyEA4*8!M5`2-e5g`0HI1ABwyxWoX!XVqI{1}a>Ha(Z@=e0>=2GccjhYguzEZLGmu*0(9iu}>( z<)+x;tOBsqspa|Q;}4axoTYFoRTk=C&zq_C8vvBfO}Ee4aP{{b*?i?eS*a7yi5UOh z<9qeqFWtRtui~)iMzZ09P5(I&d^jbV0|Tk@gxQ8w%pQ*~<#X^EnyRs7^eRC$T9`fm z@rY+Pm4+d%Lctf?Im5iXR!F~UZ70{_!6{fx^3`or;Y4#0yX&jKz80dXwi`-i){a=+ zSz@z{tdL2TxgIsvT&`sBv{nC&xk^x=DH@9w>N?~%J7gvdtw;spD6?IhJ-6-25=EfNrw zvDNd7iX7Q4I60K5<9rtSCymD3HncZgfT%q)lvQ|>r!dqQ*&@5j5HD0kd8nI`Jt;p& z&aIYW$%mt@acD@X8b8%+Cm?KK23_mqrT0v4+$O#gtjYl;w>b63u$#Ig-5l&Fc$WXX{clglF4q6+|L1T6^qV}xkuy!#`y!wG}_^zP~ z1?C*tD@t%iu4TZbwFjcIufV536AfG`$nYuCTS9;S0D4CrDsjHg230z~Y6^0;Hpv>1 zQg)g7;}Dfa)1v52cE2CF`_$U2gp}jQGNGhCOk3Aoc5&me-S*6a*iJCXDlm})mf!@GYT;{=%{FYB64pkjRhfd2)sZ-+0bNXj z{?YyDAKQ<#du+IoIeEpbYH}Tn)D%iusen4fVhwt5YRAzQOMnX<7)&WA%|5n_p0AMo?s>Q?m>Dc~MEwzlAiCOJC zv~NeU-1{G3dEuxf-dPobym%;bqhjnquH9peNZ`%)tdS=NqB4<2G_?+`P3NOAyUCqk zES`b-c|r|L!i4+0)GyEEesmZMyUygjE?GQ+<%9PjT|N#m_Doqdgo8e_gkpXf6(bd` z9K_o*%pSW4a);kaKz>m;kk}jFRkcYJ?3XAU;u|w_Tb{FF?&2d0$r0{s(ma<&JiT$7 z+`I3nT>PB%JZ=@B)kOb=#z3{wW4afK>Y1Ki-22G&W|00ifXjnT9>c8CkqA(^jS>YQ zgu4N@KSi3Wvw1>7G^bWj9c2Q$=p{ZhAvD)*!}PgVWLtjPg)6ZzcQO9ZcLZ|B7>aoD zU7X2rsFBDCxjelK|EUa$cA&97m(u~3_J0F|WBaql6j+T!3`v_Te6E4Ne3fk2*8 z)k|ijP@uxAB?MY4$@#&l&IiWQAB^M1f0;UO%k3@QGBeSPSx6(E88o;(vmgihO}1Bo zi5y^}=pUtOMsHHbA3mo0u~E8jq9p35e_lCLrpc2$6wFjDr3qI8Vdnk8bsAXwJ-@67&*Bcb^|ocQ4WBB7EpcWN zDIFv3Y(R5vE8>|=BX?p9M`;9U*2%1YT;*&iUpW2Bir*I@5pMn%R7BOva>0O{+1Trc0?A%q3=O zzGJ$oZ|q#aW`tJd0QdgWQDrkf^LyuYYkf;MOi%Z$=&wa<6?dalrnE_Vt=`h%$M%<( zULa}uQi04>C_n^;;#wQ(WlNzI$t^0?WsKO1_^7B#-RTeIz^clQk&udW*M98=m- zEi;%On3>IGF0lE+4zH;LuMd zm-ZKqy`Gt`3mS^JQA~VRuuy2a{JldlI$IvWQ)=1;Gzmi=f0!2RJqWzj#xg_|HPBqY z9qkS0fpk=*Fs(@mlk7zw*h<)yYE&3gM(^l;bPwGRPW$BuMImRCxzhNnQzk-D-0enF zwX~)!Tq{=-Ut(8v#HxdellwABD&c01a`-JsTF3+=(p_$hAIYLcwk= z!77v$w!>WZ1_!&lJmqEuBB45|TBHKobbA(^t(QQzrn73Y)A8<4yN0!CAk~)v?2a~X zPcdNw(_6ywfqRiIA9F~Cii)(DNbc>u<;fUOSK#v1oz9T1YEN-luOe?`B3UatoI+P2 z_sFn*B7%jeHTC}4jpuxrqPWLkqlt}1WW-R)dXRETX#`_9LfUFfr>RPf8R)d524*2q z-05ld9UxDHCvt$@SKdqju>R=9>cM~iOyK}+Uef(|oze{x^%weD#}cU&k%}csWlAg4 zj}k4BhSExu&K-cky5F1MwtVc^OE?`oO$?t$3QD{J6M2h*c)PCndis#T7GgMOKowU; zCHjIoyMd)TejQb%r<1fRG-tPU1Tbz)3U57IcHl%uJ%)lg}wQZrag%oO!aS9MIMr+IE$#0UCK z_L-nnIY3_gYV(p_mZok@$65_I>L<&QmPnTlAW@?Gkzzzjlx8JLF(T25SXfIcjpc&0XL6c8O@ueqS4wkOM3rU~DwLTu5@@N3=%JA%m1dWkv5E*!e|8*LM~FKc5VdEa zTOCBrX}}uYGPVd@EzBV8Ex`1bk#>(ESv-=B7j&y|E^Kk=Lwo!Ps*UKO6`|n%t4%II zcrSpQ|Cay^s^l+~o&;J_I{tLC)%j#|cKw%iBVHznxYhy4n4Y0D>Mt8<%qHU;U}nd| zas%GNr*#Do1;xTz8BwAYnWR76oj-czpu6zhoTk?UXjGCtr$#`-!B+@2n3ph0DyxIr zOW;bgoz_N2PbAeS-Ou||#QKA%yfnrLP4EnQ6$BtZ+^cR0n zj5)`-=y~&q?F4XV{p3DEp+Q;_(CO#ZWvk9W0mrbD=Ss1RtU07k_Zx-Bo>X>BSLJAO zQq^(nZ0|+D)-jcvG+IU}=2H&-gc7E9MI~1zP|BGA)|1s(}m&NFwnZUL~387 z-T7d9dcz&6-8!lyVkj0R8Q@m}CI&NUb0RrFs2FzYSRfTE6)DY$(TYSdSPMZZ(n^F$ zhBX4siqc+p=J>IPUS<0I7eS;UL*lJ63OzRmWi_-986IU%cCfrdLNLbG7Y+ZnJIkCd zw8972W1=kWQ3WP>yIaE@l`oY-mc6I2SUDrP)M-8q!dBkGHe#`QXYB-6RTJcVzb@sE zLmB=}ku~8Bfxcpovlp+yKd>r5(UR8jr>53zdVhO*!y^D-6bl(8Bq=K$vk|b;U`1lg zAYq0!k)qU)Hm8LJn!FCcQ7T$1BT*WsTCqe*jAn|Jg3&^eVgscqRUB{v5vHYuBbW5% z4}Bk-^a&z7H%tHmc-bLGOU^&9A2=yRwL7dj4bGEiczPs)RK}aw6=kZCM7t@C1j`{d zBjT!;y}be~b)?udr_&%)8oxN&{b~+Syxz$dYT7HU=q+B4u_Mobcsy=#^7BgT`x;ZT zH_xu$dMBxfjbb5E0#-sa5G9%MlVVZO#z?{%Y?yQr{WTeLO6veCtprDnRFjb?6{WRk zZIJ4a69}bB>zIU@#6XGW>=qa(PWn>|M-N<|^p|d6HdjN?1W90n33AvXyW^_TjaC_Z zf&lf2z>wS=a`6}mg}XV2OJ})`IDSBSb(0K7UFjvE{`RQF%Ax8c51t6FGRh=8A+98j zypia|(&ovyGl%IZt-lsG+PBSY*#1c!x0dawpTiy^EqUZ8AvTh*V&csB*<{f_NhNKi zDH(H8E5R$*0%<+qezpR16RjKBDqvKsv>0uWY9mJL+zD8bC@4;|Oj%SG{lSVvGig>N zoT_g3__o2~{F4X0r5B1ZmpZ#B)-Wg%=*A*@izN@o*G_rxC{SBYA$DIwNLdPh7O4c; zo$z3wIu)EJ9|#t?d^INO=YWQqS)AkhGHeQn)v7C)4cCa&Lvds3W3B1g&o(<7_OWI| zN)?7rq=cBI!2FcKAR}PI#M(0c2y6@)!x5zs#m4lEiK$^uiWX=!YS6gd(<pPeS%7Yp-T zP#R!2y87ECSyLWLSp`=kcOXA-VG)8|XHgy$P_eKaz zYRDVT{lZnzR%1JdqM|A*7NC;AMjd3!x@iQjE8wWr`kSfgO@AFv%{&stjlLc63&ST7 zl88yM5QABWNfI_1tVtWi#J2HA6d6OtG^0+MDr5Q!%RCjYOV>;dx|)7~ffm&`7VD@J z=~RgdIYBC^W`fcKqgg>|id4Z4<*NZfMXZQPROSRsqE!KlAWX{(hc8?@cJOtQrUB|5 z72;P56;dl}5`>>Dddf?XJ3_@ycB$+ob~foi34@3Olj8zaWVc%EJC?nJe4P}UyxbvN zajl5YygprVMytbV?hzs=s49zNGelNfKY2U5yUBME0EBeBdwOouA55*=a_>+=AuK~C zVQBnHsKEMUSV$vFd^vkwH%jBzoUm>DF*Qs|4U=?@Y0jjkXBK(Q`T<5cKwU>z4ux8J zT1D(SK@Nu^)ljCNYNJHutAQpcBiU-8wIU%=B8n72iAhRWH2gnLl3CJd{*i~CHRvtA zR5;xZpdB7G<@Q`;lOuffA-g-cNI9_q*0@Be?N$pU(0=iaynbkZ_3^Pk1^U690+)Cb zo~hy}#n4>q{l#1$hu`-)!fZtfdHa6l-@zYMlKq@2rT0Xw_Qz(|Z@)!1+Dk-ALQ$V| z%*G5v>4;%iScpl3l_bo=sGmmQh$5q8zy^^q${5Yy-1sBza!RQwq0g)db%f3Ac#PbD z8+b(>VJqzk&Y@6Si|TPtH}sTBm8fKCptU60=%$JqsWyqINHtU{85GiDG&f_VQ&CJ% zHY{R-(gv!8MT(%fa0CDtbQjkz9NzZ=lk~omIlT~|sH(ZKduOXfG!g`w|S3^;Hb!L2QynpCgJ*gNzw4xS^V6U=+7h zYPyEFnP~2+zKPqjvL-#jlT3xkE5p7MBwAE!nN>6DsJ`@cszgN?Xrn|K)l!-h&8a9Y zS{s!azDBBrH7PNgl_;<#MWRFv;Sr@u3lS3(mH8uOG&W3Zoq_i?du^`Q04{30o;F3|2<9uUSC>p|@2&@xr zk|7fmH6o(~Y``WRLZX7vK67q76~(HQDg?) zPH*A(h0BYFU&`s=>E8G7Iu^;B^<%FHREp*T{mG$uNA74ByN@+Qxw=La$^*(Nc2-k5 z{O&37bT~PdS5@vlq|~>l5LN2;>Yeb12pFxJ+7qzSW-ltIphpuj*!Jk#&ag3%Fxg zl#V$qC{86th{^Obem??}(V~Zj9w9QMjATEvNf;c#n1sQ)0dA=Erf-%xPM5eh1&+-+ z?xzq&tv_;t+Yf}#_t5~)>@914}A zR|>@8G~T$KX+_nT$Stg~FOl$eim#(TLoK4@?#@^;FUl%?ga%3tRhL$ut_+zd8~TWq z7Zj|Ic;$A7XD(KaZnHD@$1|JH|D=whK?vt7Ax`tkZo%%POoCyRmsmyMl!=uLI6{;; zK{Ga5h!gH{Obs(I#A=X8W4dVuW|>>6Wfr@AX-pHhQsRX~ac7g}=F#<1XZ$BL8E&)_ zWP@=XCs;a4d19RQ+mu0~jEf z*tG*;MOrHolPJ#1m_tWUCi{KRU0gqZ=)sqnLGK0;*#r>;u}M`TPA6YJ$Z8;Xr? zf+Hr5Tg3h2#J#CSj?Fr5CYsypG%utPH#$plqQ;N4m=5j0p{1iVSl^+Ivu(;(gTbPx z>2{L_npMPo&1p=j5*10t7@2{nNQMki0>!O{GDC-8B^e}YK(P^}hsm<&j4i^DHqCC+ zaD^Bq$-<)M4?pm@!Q!#+F(!SSu-WW(Y1O3(u7rV{fw|?#6JKIY0qWD$<^`(5quL(> z)8DG23K1A=Rc$#Gztu25rchvpkUjT^j;pBo`S$eO-*q-_`?6Mzq*BGz5t9)yL(HGi znlT$mvg9__MoDJ)WQ?Q?j+&84nM%VK;)sa{Ci}lRotkbxk=TH{DRCC{H*;r0%!lW@ z(m1*#bK5TG>5Yp50IM~Ati}ESHaoOyY|4!D_Y;PyJrM;4Z) z)6?ASlu_SidvLP$2M9SqC@}^A+YydMsTwSGDCy4AOw6jcAj))_)YhT~%dC<}R8x!M zMoh`lKxeSXWsCCsz=+mSDk>|YiDHv@`2lJj0RU9Wy1%@zVQK!*cMO(}zYJ_H6sOcf z9>ZhR`*T^gc-Bv$Ar?H`tGK%Dk}sDO7N;M+jNtB!oU&aIl`3v!Wsov)bzWi zYpOV+BK<%-HT~D^*$sELr#I{`L~C_$CpUPD)-*z_7@S54D`~K1V$(E6^@!8B&k;pN zGjU>wwE;&h;=Un{+r&MiSati-NQhfA8P<>6v%{!ga{K^r@pIfg0dTT*h#BVuwq(LC znB`RIV5vhhQL2*OBIVWN=|KjIlCG$xo>Buos>Q?4tSBg%?rtVmNS{1e$D*$ltHFkuDN1@RTH<+a z+C6G7iApq7ySbi{9;*TObwg*YQ7VaU7)_~Y9Vt6L&4?Llo4R^#*>o_JV{-7_BA?al8Y8kS4tLQ}|n}uDmT3P7x zM1poZV*WhYCs3?9Jt4hkdi}OPn%Q*zSBXUG48MRoanqPyzu@ypDPf9?;)D%pL&}I| zVndP9@qm*qIBLhH!1*oW{=zcHtr?DuVjT}8oPJ8|$Uw+3>9Y&FPXQQB!!e<7{6c@4z8y5MFkUK#-=(iS*Ja}Dy@%RhGq*nlFh6Zvu zkfaXpkCZ%nRV9&dUvN+n>Ppn?=q(khQmp-bLt_>l7O6){?}=MepIEp3l84*l3RqW8FT4mH~Mw>Ee-5{Y1BIWubEh_6p5T@n%gFCv%4}NFbTY5Sh^O$P+-;U^> zBfuNv~eOr5W(`}t~n;&v< zz7ir9QY^-Zkbp@kAqK06*l>pPQ^is$HjPnfBr49TxLUwTOdJo4i5kQMwrEWz*1dt) z>`q?LvZ>AU9`{tf>#n9*1`&}JaYNIHZ>4Hc=pkd}$;Y*~d6l+No1N|B>4GN}?#geZeWY*;TJ z+jmiS;plZqfARUkyfwg;luh&wT`BHvtHJ;6IjLmHB|PKIC#mJx0|inO@^~FVWf)g3 zg?3s>L0#Qwe|&0g)2;2;sHk# znS_aTgE(PgZMqyWao>QOGnvmD~mG*$1!||*367w#VwQedZHp?4Q_`mwrDNG`6(NtrKB}e*3gEOmR!4|WWec=&!;4nxIJqk?(tyJ zr8P60KhMo%14qrS-=f8Ut0bMHy{srka#HLPndG`9WSk z(2{CHO{I})P8vg4G|UeON)3z_osDD3)ushoWXZ0DQm08jO}fov`@XR=?JnLREL(-7 zfgqFPP5Px!x0j5RK-6h)97m%O@3FQAAf*oIM*EK0&F9|Sn%Q))F#Mtkot>z!p-isN zhsxv&CL$(dMCW=PM22)%45AF@58+NORnFi}X85|-l5S^#8;3GJ|Nn3AT6W{el50fV zM`l%#lqjjYA-}p|w+C_yUTJ3-CuWc5<@4esFW$%no-IJbh-e2l0dbAHXIx*J&q&zzQ@vT4n!B3F2)8|Kk zA+4D5fbpMM<5s11^%HqA*vA>O@?U zEMOF6G)#>%D+&t6Rl528Ir4=miEDKFxz8UeHZQ~HUuEIHaR7W*Nkyhjm)|n+W{S5D z7ucyymCB|qniOd^s5QwdYORerix~(>R^fxd&xXcpOK$d(duersMW^+q|!i8b8sU-@CDQwH<8?B^Xg1Bkg=2nbiY@v=9tyO*`+wb2^xOh+(TOS|%Wv31!)J27)C|f{?!N%>;sughNkuy-k}A z2j%QPIDPut2kUR2`~yq;6jW}#@_pU+p@5h9e@Lgsx?fIjee^F!AAS5YBrAQHGMfAZ z7|N7ESe=lGg3Ovt=v)}a*pn|vklKS-bZnO>q3QQ+i4vH^O&7A<1a%B8yR)&kd06uNU;a^AbUn>AE$`0$gi1z z%%;&6HEPqmKS)t6N@@%WH|zcvG=gFZ!*PQWUC)H>QOtnW92Wj|pMQC^=5-eRTM2;gOJB4( ziFDu_S%uL=o7NudTQhQt=SIB6q%SgtO=^o6fw+n$$tv7lS%ozQJAF}?RS60oe7A$9(GNWY@6vLI+Vj_W2JQcjIUTC5&2rNoSjAR9o zbmzuz@^_H68*nqN*#yhB=?mU)tZJdgj#x)lTR5)Ql^74L3EehgHODJ)46<}V`(E5E zQ$7qn$rYLmp6gs>y|)1PKAr}BZ!(7hYjaAaIp|~+*`It)T7^-QgmuE00)By%T`$c} znl!sKAGAQQ7L>cKa`&3#LhpHIboxuIT=)P0q$rV-YLkpjiOMXBT5qK<7?AeXPcmf` zM~-XR$XT?epOOp{7_v+`-}>KFh2+A&O10*V2Eb+5qO)kz41}Cp)XoP3S%qEIsXgkY zRoIxe$T_xUm{zfqW|yA;$_W6i{90OI-!)qEy#v5y8KeLG@d> z5C5i3V1Pa0Q}0UQzmovCC=iBWz5oFGW!HH=IBaCs(k;@mEwf3hh_EykJ*hPqLp1x+ z>>z!*8>P7SluR)M0|2y7fMGk-Z+jvDAgV$x`lkPnC`$dpZw6dyomh#&vaV7>^FaQ7;!t;jVT=3~hAR21`v`&(c4H_YvZ{h{(w(!XnDSbgx;iGYy(-*9) zWnI-;92RUgLHo4kS?$idN^9OY09=eVO(y*egb#~~06v9%X%!g=`_d{ntjG}%PYZH& z+8^}ui)?IErIt`)O$LRMPg-5MUOElIirGf zK3vB}tHkOIVn=KV5;&zVtY>rad`E0i>4bZ<<{x;OJo`uw?k?UMneqsLD|j00ORMMu z;qK7{!)lIe!&J?a?ApIrnVeRU_Xl}CVAQ=pP%&sRkV=wVYa^?60HDICX8<6zKI!HM z0ElEX%af6eBD2P($0r4e7KI|KEiKn86kBxqd@G6BIWK)77e2tR;7ys(M*zGPK~tA%!RLFb|Y!YC_qSG z0|1dIIWKi&&0$l)#Po^dev+un5Op}YF0K5)ux-ZsopFcSlC001^Nc?7~j32vpIIaw+Ve-GCl0Ty7K zZwt`4QUL%KzEU^^Fuv>U0RXzf@3i?Bi5I*{?9K>)E0_W^s3;=NFaEbr`^`^vF zEiukky`Oyy99BE;z46ng7*D_!Q-$XMwwS3aHwpldi$3-8X}E=6wBWGEA8-8;09Qtv z=J^16(rbWEArH&|e*|H9f&c({!`%Ow`AN|~t~_W9(oYW+0N~lnbnE-su>$-KQk#=x z3ug_t@CLIrM*xhi(HUR>SkIp$06?`oLI8lUd3mAt+m}aeaTc?enp&JYttP)bzTX!8 zzTtMf@kao>@u$K*Fl0b-{GEcS~O{#g7Y z0Nz?qT*)7AEcOuqHwg@5!H)pA5#SgLeFVUG#xnw7JmVPwFrM*@02t4BuIBtd!kiE_ TDM+3-00000NkvXXu0mjfv->E& literal 0 HcmV?d00001 diff --git a/assets/auth/ic_authy.png b/assets/auth/ic_authy.png new file mode 100644 index 0000000000000000000000000000000000000000..d3778e5d6e17ced9adacb3bf7ba2816a06b87f08 GIT binary patch literal 5110 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 Y152}m)II#cmMzZ literal 0 HcmV?d00001 diff --git a/assets/auth/ic_bitwarden.png b/assets/auth/ic_bitwarden.png new file mode 100644 index 0000000000000000000000000000000000000000..93f8d1d1a6a80c6b46cef18d57fa8f0dd1e7247f GIT binary patch literal 1191 zcmcIk`!|~h0R58q5>jGHG@dD?i&vU%8t>5Ic+In22|6FgFcW23kA_MZMTV}W;-GOj zEHfqbE+wC;S_uKX3M8vLK?kEnj-^Q_eyGanCpoSDv*Q6b&cK;@+fmF+y$R0E= zV%rgOLna>%Jmdt}KB4l2y0kay^WvG+LIb$Dg6Yr6Ra|%>U<4}wR{KdeegyhHda&fD zAcW>IU{>Jh9HPi^&$u_a3V~K8P>w1D>i-Tm5PcmZdiGXZaq-=zf~d zc~*)k1?VZT<|hLj^JQB2h6WhlDqpW3*7{it%`@5rVGc#MTPvEx^&bZ9v22Yol6 zl5?)M?vZSaLb|{2ypXt3eN_Q&3n+Y9TH4!Yv8t@ADtn+G7&)PgD5}*Gu9x<5;-dI zQF)FUC>mmr%DrX3;EB5y*U5&gy)JJ(Q5vq-6~M`yFKBfZ*4l7-DmijIx7e`%dCkS5 zC|z@2j%p?A{=OEMRk60|lvhV$pNJDKPD>A`@;7@o&~B}IuGc8~;RIEBShW`dO=TYT zFLuV3jh88hs=oz?gd~SNSYq(3Q+KqaNLIUmWf@~Iksvs8uo7P~kk;b&?b)V$X`i5x zcgJFTOKI*6p|deYA3@Q1d^hY)P8i{(iBbB-sa9<0r7m(v!ZTl3@;LA-G5ECm zw)oSisywu2I;vfw3a>e%+bY}EY(Li1hce;x6%9*^P z{gBJ@L_WFODfCx|0_t1vWDsyw@hT4Sz5jdg8!~OFv<1ohjaWUJ9vQ47K8QMpJxpCO zvNS>_Vrq<9G2kugde(ZR0<7UeVb>q+PA(N^z-9iR{9xbV-gm<*C#rMx6C#HiJoD$!cXvH|RomEl zz=^Fi?r1A(flT&&C>-QH$4PSGHXYt@9h~JEm0a6uwo;i7pN*p- yl8Ftucj-wa3egr<>O3-T(LBh1`6n|@FanaV)4l03`oPfv0UoYCE=^xRS^oiaF$)s_ literal 0 HcmV?d00001 diff --git a/assets/auth/ic_blizzard.png b/assets/auth/ic_blizzard.png new file mode 100644 index 0000000000000000000000000000000000000000..6012444e819a12a5993eb2df46732c2b52a56763 GIT binary patch literal 5254 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 M07*qoM6N<$f-Qdh8UO$Q literal 0 HcmV?d00001 diff --git a/assets/auth/ic_enteauth.png b/assets/auth/ic_enteauth.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6bf36885f8ef2f7351eb4c0400144e51ea5f62 GIT binary patch literal 1315 zcmV+;1>E|HP)S{8E}YXF0$j63+01+3|vRd7KtDP&HwjhZ1oP(oUz7 z_1jC-s*B1h2+Hb;S{3$(-=YBpNdwxfke57a4OsYN2yJq~0X@kVJV5Z&#q-W7SEaO2 zOAr;KMNyYZHq7g~^Y3!lK%GkyRRmR4G`chg^!p#{gLRHBQ$uid)zR?0TQtmQf#FC5 zS}s@s3t#~(fCaDs7Qg~n01IFNEPw^D02aUkSb&);bhiT-A;s9OsfD){%v}dK%?@q? zu!o0(2++qF{s!RI{7#`1`%Iv#c{+$=pr4QV1Aw+U1^EA0Au&RV6mhzNrBqW+g^xSI z2mlo<^!7?J+#n6W0v0n$ikoD;y3+?ZM5o->AEA$KE+J}(v8cH8n0_yFSo`(5R;xmo zSB09iOMN*$YZO&fQEgM&vn5n-tZzso>5Oh zfC6J+B~=KBu#iQRo75R(KYPf`aW-FJ6bO0gIm$8G3tpu_nk`}zNt$?qI?CwfG`r~q z(tO8D#EJ~9hV7*I+?3GEI?Q5gCdxAN&Cg}NJ`2yyM7E2s0En`jTEf5(rx?yVnGccinj7!0naG*@nK;dE zgQLtLd6lsm64Hr1=)JoTg`*-nnDH$dYse5TU_@4_8ewoX{iY?+Ly(@BZXd zQj@$&y-Qt~Q-o;&Dkw7(*D<=dNiV;!X;K2gM$?UhY@vZxHd4>IJTuC8j-O;F$JtE> zb8<*v`YQXDsmEc}t66KcKzK`wlg6h{>+>u($e9Pmw0F`cuc+TQ5B!vK-D_H6tUu3g zDY2EcW;C4R2RcbnL;aL~`j8cqY>!Q`zze+U`~Mh;|9&}L%|1S$gCR1wM0tvxY&U~A z>{X8je&l@)aElBjL}+9u?~*ilfs{&gosf`DKJ2f8Pt_TJik%m zd91e$U~g<$01IFNEPw^D02aUkSO5!P0W5$8umBdo0$70g2apbQ{ArhXpaBvtX9Epz z-sJ$ny*nz7xEu;_62&>}lHg!K`#>Dzvg-`f&b2@S^w93ya)C}hGP@B$(jYtN9Pf*; zHV5v(7+aNl;7cL3DIS_5H8=R9X;^WFde002ovPDHLkV1j!&YC-@2 literal 0 HcmV?d00001 diff --git a/assets/auth/ic_freeotp.png b/assets/auth/ic_freeotp.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5cebe1bc98b002c555a96b4e2ce34bebe4356e GIT binary patch literal 7975 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 literal 0 HcmV?d00001 diff --git a/assets/auth/ic_lastpass.png b/assets/auth/ic_lastpass.png new file mode 100644 index 0000000000000000000000000000000000000000..423aced466e06aa6aed82b372f6eb1ed38b041d1 GIT binary patch literal 3162 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 AlmGw# literal 0 HcmV?d00001 diff --git a/assets/auth/ic_totpauthenticator.png b/assets/auth/ic_totpauthenticator.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bfc66b087602a8d68cb224a267ec5d54f01f57 GIT binary patch literal 3765 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 literal 0 HcmV?d00001 diff --git a/assets/auth/ic_winauth.png b/assets/auth/ic_winauth.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9aa123dfe3982c625a74e266871cd40751084d GIT binary patch literal 12556 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 itKglN%g }, ), const SizedBox(height: 10), - ItemBuilder.buildCaptionItem( - context: context, title: S.current.importFromThirdParty), - ItemBuilder.buildEntryItem( - context: context, - title: S.current.importFromGoogleAuthenticator, - description: S.current.importFromGoogleAuthenticatorTip, - onTap: () async { - if (ResponsiveUtil.isMobile()) { - BottomSheetBuilder.showBottomSheet( - rootContext, - enableDrag: false, - responsive: true, - (context) => const AddBottomSheet(onlyShowScanner: true), - ); - } - }, - ), - ItemBuilder.buildEntryItem( - context: context, - title: S.current.importFrom2FAS, - description: S.current.importFrom2FASTip, - onTap: () async { - FilePickerResult? result = await FileUtil.pickFiles( - dialogTitle: S.current.importFrom2FASTitle, - type: FileType.custom, - allowedExtensions: ['2fas'], - lockParentWindow: true, - ); - if (result != null) { - TwoFASTokenImporter().importFromPath(result.files.single.path!); - } - }, - ), - ItemBuilder.buildEntryItem( - context: context, - title: S.current.importFromAegis, - description: S.current.importFromAegisTip, - onTap: () async { - FilePickerResult? result = await FileUtil.pickFiles( - dialogTitle: S.current.importFromAegisTitle, - type: FileType.custom, - allowedExtensions: ['json'], - lockParentWindow: true, - ); - if (result != null) { - AegisTokenImporter().importFromPath(result.files.single.path!); - } - }, - ), - // ItemBuilder.buildEntryItem( - // context: context, - // title: S.current.importFromFreeOTP, - // description: S.current.importFromFreeOTPTip, - // onTap: () async { - // FilePickerResult? result = await FileUtil.pickFiles( - // dialogTitle: S.current.importFromFreeOTPTitle, - // type: FileType.custom, - // allowedExtensions: ['xml'], - // lockParentWindow: true, - // ); - // if (result != null) { - // FreeOTPTokenImporter().importFromPath(result.files.single.path!); - // } - // }, - // ), - ItemBuilder.buildEntryItem( - context: context, - title: S.current.importFromFreeOTPPlus, - description: S.current.importFromFreeOTPPlusTip, - onTap: () async { - FilePickerResult? result = await FileUtil.pickFiles( - dialogTitle: S.current.importFromFreeOTPPlusTitle, - type: FileType.custom, - allowedExtensions: ['json'], - lockParentWindow: true, - ); - if (result != null) { - FreeOTPPlusTokenImporter() - .importFromPath(result.files.single.path!); - } - }, - ), - ItemBuilder.buildEntryItem( - context: context, - title: S.current.importFromEnteAuth, - description: S.current.importFromEnteAuthTip, - onTap: () async { - FilePickerResult? result = await FileUtil.pickFiles( - dialogTitle: S.current.importFromEnteAuthTitle, - type: FileType.custom, - allowedExtensions: ['txt'], - lockParentWindow: true, - ); - if (result != null) { - EnteAuthTokenImporter() - .importFromPath(result.files.single.path!); - } - }, - ), - ItemBuilder.buildEntryItem( - context: context, - title: S.current.importFromAndOTP, - description: S.current.importFromAndOTPTip, - onTap: () async { - FilePickerResult? result = await FileUtil.pickFiles( - dialogTitle: S.current.importFromAndOTPTitle, - type: FileType.custom, - allowedExtensions: ['json', 'aes'], - lockParentWindow: true, - ); - if (result != null) { - AndOTPTokenImporter().importFromPath(result.files.single.path!); - } - }, - ), - ItemBuilder.buildEntryItem( - context: context, - bottomRadius: true, - title: S.current.importFromBitwarden, - description: S.current.importFromBitwardenTip, - onTap: () async { - FilePickerResult? result = await FileUtil.pickFiles( - dialogTitle: S.current.importFromBitwardenTitle, - type: FileType.custom, - allowedExtensions: ['json', 'csv'], - lockParentWindow: true, - ); - if (result != null) { - BitwardenTokenImporter().importFromPath(result.files.single.path!); - } - }, - ), - const SizedBox(height: 10), ItemBuilder.buildCaptionItem( context: context, title: S.current.exportToThirdParty), ItemBuilder.buildEntryItem( diff --git a/lib/Screens/main_screen.dart b/lib/Screens/main_screen.dart index 350bea7d..4e30b978 100644 --- a/lib/Screens/main_screen.dart +++ b/lib/Screens/main_screen.dart @@ -41,6 +41,8 @@ import '../Utils/itoast.dart'; import '../Utils/lottie_util.dart'; import '../Utils/route_util.dart'; import '../Utils/utils.dart'; +import '../Widgets/BottomSheet/bottom_sheet_builder.dart'; +import '../Widgets/BottomSheet/import_from_third_party_bottom_sheet.dart'; import '../Widgets/Custom/loading_icon.dart'; import '../Widgets/Dialog/custom_dialog.dart'; import '../Widgets/General/EasyRefresh/easy_refresh.dart'; @@ -646,6 +648,22 @@ class MainScreenState extends State }, ), const SizedBox(height: 4), + ItemBuilder.buildIconTextButton( + context, + quarterTurns: quarterTurns, + text: S.current.importFromThirdParty, + fontSizeDelta: -2, + showText: false, + direction: Axis.vertical, + icon: const Icon(Icons.apps_rounded), + onTap: () async { + RouteUtil.pushDialogRoute( + context, + const ImportFromThirdPartyBottomSheet(), + ); + }, + ), + const SizedBox(height: 4), if (provider.canShowCloudBackupButton && provider.showCloudBackupButton) ItemBuilder.buildIconTextButton( diff --git a/lib/TokenUtils/ThirdParty/enteauth_importer.dart b/lib/TokenUtils/ThirdParty/enteauth_importer.dart index d338404f..f8f36b8c 100644 --- a/lib/TokenUtils/ThirdParty/enteauth_importer.dart +++ b/lib/TokenUtils/ThirdParty/enteauth_importer.dart @@ -11,7 +11,6 @@ import 'package:cloudotp/Widgets/Dialog/progress_dialog.dart'; import 'package:ente_crypto_dart/ente_crypto_dart.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; -import 'package:pointycastle/export.dart'; import '../../Utils/ilogger.dart'; import '../../Utils/itoast.dart'; @@ -94,16 +93,16 @@ class EnteAuthTokenImporter implements BaseTokenImporter { static const int KeyLength = 32; static const int DerivationParallelism = 1; - static dynamic decrypt(String password, KdfParams param, String data, - String header) async { - final derivedKey = await CryptoUtil.deriveKey( - utf8.encode(password), - CryptoUtil.base642bin(param.salt), - param.memLimit, - param.opsLimit, - ); - Uint8List? decryptedContent; + static dynamic decrypt( + String password, KdfParams param, String data, String header) async { try { + final derivedKey = await CryptoUtil.deriveKey( + utf8.encode(password), + CryptoUtil.base642bin(param.salt), + param.memLimit, + param.opsLimit, + ); + Uint8List? decryptedContent; decryptedContent = await CryptoUtil.decryptData( CryptoUtil.base642bin(data), derivedKey, @@ -120,18 +119,15 @@ class EnteAuthTokenImporter implements BaseTokenImporter { List categories = []; List bindings = []; List uniqueTags = - toImportTokens.expand((element) => element.tags).toSet().toList(); + toImportTokens.expand((element) => element.tags).toSet().toList(); categories.addAll(uniqueTags .map((e) => TokenCategory.title(title: e)) .where((element) => !categories.contains(element))); for (var token in toImportTokens) { - bindings.addAll(token.tags.map((e) => - TokenCategoryBinding( + bindings.addAll(token.tags.map((e) => TokenCategoryBinding( tokenUid: token.uid, categoryUid: - categories - .firstWhere((element) => element.title == e) - .uid, + categories.firstWhere((element) => element.title == e).uid, ))); } await BaseTokenImporter.importResult( @@ -139,7 +135,8 @@ class EnteAuthTokenImporter implements BaseTokenImporter { } @override - Future importFromPath(String path, { + Future importFromPath( + String path, { bool showLoading = true, }) async { late ProgressDialog dialog; @@ -163,7 +160,7 @@ class EnteAuthTokenImporter implements BaseTokenImporter { } if (showLoading) dialog.dismiss(); InputValidateAsyncController validateAsyncController = - InputValidateAsyncController( + InputValidateAsyncController( listen: false, validator: (text) async { if (text.isEmpty) { @@ -172,25 +169,27 @@ class EnteAuthTokenImporter implements BaseTokenImporter { if (showLoading) { dialog.show(msg: S.current.importing, showProgress: false); } - var res = await compute( - (receiveMessage) async { - return await decrypt( - receiveMessage["password"] as String, - KdfParams.fromJson( - receiveMessage["params"] as Map), - receiveMessage["data"] as String, - receiveMessage["header"] as String); - }, - { - 'data': backup.encryptedData, - "params": backup.kdfParams.toJson(), - 'header': backup.encryptedNonce, - 'password': text, - }, - ); + // var res = await compute( + // (receiveMessage) async { + // return await decrypt( + // receiveMessage["password"] as String, + // KdfParams.fromJson( + // receiveMessage["params"] as Map), + // receiveMessage["data"] as String, + // receiveMessage["header"] as String); + // }, + // { + // 'data': backup.encryptedData, + // "params": backup.kdfParams.toJson(), + // 'header': backup.encryptedNonce, + // 'password': text, + // }, + // ); + var res = await decrypt(text, backup.kdfParams, backup.encryptedData, + backup.encryptedNonce); if (res[0] == DecryptResult.success) { List tokens = - await ImportTokenUtil.importText(res[1], showToast: false); + await ImportTokenUtil.importText(res[1], showToast: false); await import(tokens); if (showLoading) { dialog.dismiss(); @@ -209,29 +208,28 @@ class EnteAuthTokenImporter implements BaseTokenImporter { rootContext, responsive: true, useWideLandscape: true, - (context) => - InputBottomSheet( - validator: (value) { - if (value.isEmpty) { - return S.current.autoBackupPasswordCannotBeEmpty; - } - return null; - }, - checkSyncValidator: false, - validateAsyncController: validateAsyncController, - title: S.current.inputImportPasswordTitle, - message: S.current.inputImportPasswordTip, - hint: S.current.inputImportPasswordHint, - inputFormatters: [ - RegexInputFormatter.onlyNumberAndLetterAndSymbol, - ], - tailingType: InputItemTailingType.password, - onValidConfirm: (password) async {}, - ), + (context) => InputBottomSheet( + validator: (value) { + if (value.isEmpty) { + return S.current.autoBackupPasswordCannotBeEmpty; + } + return null; + }, + checkSyncValidator: false, + validateAsyncController: validateAsyncController, + title: S.current.inputImportPasswordTitle, + message: S.current.inputImportPasswordTip, + hint: S.current.inputImportPasswordHint, + inputFormatters: [ + RegexInputFormatter.onlyNumberAndLetterAndSymbol, + ], + tailingType: InputItemTailingType.password, + onValidConfirm: (password) async {}, + ), ); } catch (e) { List tokens = - await ImportTokenUtil.importText(content, showToast: false); + await ImportTokenUtil.importText(content, showToast: false); await import(tokens); } } diff --git a/lib/TokenUtils/ThirdParty/xchacha20poly1305.dart b/lib/TokenUtils/ThirdParty/xchacha20poly1305.dart new file mode 100644 index 00000000..e69de29b diff --git a/lib/Utils/asset_util.dart b/lib/Utils/asset_util.dart index 5844e647..235c857b 100644 --- a/lib/Utils/asset_util.dart +++ b/lib/Utils/asset_util.dart @@ -14,6 +14,23 @@ class AssetUtil { static const String emptyIcon = "assets/icon/empty.png"; + static const String ic2Fas = "assets/auth/ic_2fas.png"; + static const String icAegis = "assets/auth/ic_aegis.png"; + static const String icAndotp = "assets/auth/ic_andotp.png"; + static const String icAuthenticatorplus = "assets/auth/ic_authenticatorplus.png"; + static const String icAuthenticatorpro = "assets/auth/ic_authenticatorpro.png"; + static const String icAuthy = "assets/auth/ic_authy.png"; + static const String icBitwarden = "assets/auth/ic_bitwarden.png"; + static const String icBlizzard = "assets/auth/ic_blizzard.png"; + static const String icEnteauth = "assets/auth/ic_enteauth.png"; + static const String icFreeotp = "assets/auth/ic_freeotp.png"; + static const String icFreeotpplus = "assets/auth/ic_freeotpplus.png"; + static const String icGoogleauthenticator = "assets/auth/ic_googleauthenticator.png"; + static const String icLastpass = "assets/auth/ic_lastpass.png"; + static const String icSteam = "assets/auth/ic_steam.png"; + static const String icTotpauthenticator = "assets/auth/ic_totpauthenticator.png"; + static const String icWinauth = "assets/auth/ic_winauth.png"; + static load( String path, { double size = 24, diff --git a/lib/Widgets/BottomSheet/add_bottom_sheet.dart b/lib/Widgets/BottomSheet/add_bottom_sheet.dart index a68451aa..a08aeb76 100644 --- a/lib/Widgets/BottomSheet/add_bottom_sheet.dart +++ b/lib/Widgets/BottomSheet/add_bottom_sheet.dart @@ -18,6 +18,7 @@ import '../../Utils/route_util.dart'; import '../../Utils/utils.dart'; import '../../generated/l10n.dart'; import 'bottom_sheet_builder.dart'; +import 'import_from_third_party_bottom_sheet.dart'; class AddBottomSheet extends StatefulWidget { const AddBottomSheet({ @@ -313,6 +314,21 @@ class AddBottomSheetState extends State }, leading: Icons.import_export_rounded, ), + ItemBuilder.buildEntryItem( + context: context, + horizontalPadding: 20, + title: S.current.importFromThirdParty, + showLeading: true, + showTrailing: false, + onTap: () { + Navigator.pop(context); + RouteUtil.pushDialogRoute( + context, + const ImportFromThirdPartyBottomSheet(), + ); + }, + leading: Icons.apps_rounded, + ), ], ); } diff --git a/lib/Widgets/BottomSheet/import_from_third_party_bottom_sheet.dart b/lib/Widgets/BottomSheet/import_from_third_party_bottom_sheet.dart new file mode 100644 index 00000000..0f6e29b4 --- /dev/null +++ b/lib/Widgets/BottomSheet/import_from_third_party_bottom_sheet.dart @@ -0,0 +1,228 @@ +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:cloudotp/TokenUtils/ThirdParty/andotp_importer.dart'; +import 'package:cloudotp/TokenUtils/ThirdParty/enteauth_importer.dart'; +import 'package:cloudotp/TokenUtils/ThirdParty/freeotpplus_importer.dart'; +import 'package:cloudotp/Utils/asset_util.dart'; +import 'package:cloudotp/Utils/itoast.dart'; +import 'package:cloudotp/Utils/responsive_util.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; + +import '../../TokenUtils/ThirdParty/2fas_importer.dart'; +import '../../TokenUtils/ThirdParty/aegis_importer.dart'; +import '../../TokenUtils/ThirdParty/bitwarden_importer.dart'; +import '../../Utils/app_provider.dart'; +import '../../Utils/file_util.dart'; +import '../../generated/l10n.dart'; +import '../General/EasyRefresh/easy_refresh.dart'; +import '../Item/item_builder.dart'; +import '../Scaffold/my_scaffold.dart'; +import 'add_bottom_sheet.dart'; +import 'bottom_sheet_builder.dart'; + +class ImportFromThirdPartyBottomSheet extends StatefulWidget { + const ImportFromThirdPartyBottomSheet({ + super.key, + }); + + @override + ImportFromThirdPartyBottomSheetState createState() => + ImportFromThirdPartyBottomSheetState(); +} + +class ImportFromThirdPartyBottomSheetState + extends State { + @override + Widget build(BuildContext context) { + return MyScaffold( + appBar: ItemBuilder.buildAppBar( + context: context, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + leading: ResponsiveUtil.isLandscape() + ? Icons.close_rounded + : Icons.arrow_back_rounded, + onLeadingTap: () { + if (ResponsiveUtil.isLandscape()) { + dialogNavigatorState?.popPage(); + } else { + Navigator.pop(context); + } + }, + title: Text( + S.current.importFromThirdParty, + style: Theme.of(context) + .textTheme + .titleMedium + ?.apply(fontWeightDelta: 2), + ), + center: !ResponsiveUtil.isLandscape(), + actions: ResponsiveUtil.isLandscape() + ? [] + : [ + ItemBuilder.buildBlankIconButton(context), + const SizedBox(width: 5), + ], + ), + body: EasyRefresh( + child: _buildBody(), + ), + ); + } + + _buildBody({ + double spacing = 6, + }) { + return ListView( + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.only(left: 10, right: 10, bottom: 20), + children: [ + _buildItem( + asset: AssetUtil.icAndotp, + title: S.current.importFromAndOTP, + description: S.current.importFromAndOTPTip, + allowedExtensions: ['json', 'aes'], + onImport: (path) { + AndOTPTokenImporter().importFromPath(path); + }, + ), + SizedBox(height: spacing), + _buildItem( + asset: AssetUtil.icAegis, + title: S.current.importFromAegis, + description: S.current.importFromAegisTip, + onImport: (path) { + AegisTokenImporter().importFromPath(path); + }, + ), + SizedBox(height: spacing), + _buildItem( + asset: AssetUtil.icBitwarden, + title: S.current.importFromBitwarden, + description: S.current.importFromBitwardenTip, + onImport: (path) { + BitwardenTokenImporter().importFromPath(path); + }, + ), + SizedBox(height: spacing), + _buildItem( + asset: AssetUtil.icEnteauth, + title: S.current.importFromEnteAuth, + description: S.current.importFromEnteAuthTip, + allowedExtensions: ['txt'], + onImport: (path) { + EnteAuthTokenImporter().importFromPath(path); + }, + ), + // SizedBox(height: spacing), + // _buildItem( + // asset: AssetUtil.icFreeotp, + // allowedExtensions: ['xml'], + // title: S.current.importFromFreeOTP, + // description: S.current.importFromFreeOTPTip, + // onImport: (path) { + // FreeOTPTokenImporter().importFromPath(path); + // }, + // ), + SizedBox(height: spacing), + _buildItem( + asset: AssetUtil.icFreeotpplus, + title: S.current.importFromFreeOTPPlus, + description: S.current.importFromFreeOTPPlusTip, + onImport: (path) { + FreeOTPPlusTokenImporter().importFromPath(path); + }, + ), + SizedBox(height: spacing), + _buildItem( + asset: AssetUtil.icGoogleauthenticator, + title: S.current.importFromGoogleAuthenticator, + description: S.current.importFromGoogleAuthenticatorTip, + useImport: false, + onImport: (path) { + if (ResponsiveUtil.isMobile()) { + BottomSheetBuilder.showBottomSheet( + rootContext, + enableDrag: false, + responsive: true, + (context) => const AddBottomSheet(onlyShowScanner: true), + ); + }else{ + IToast.showTop(S.current.importFromGoogleAuthenticatorInMobile); + } + }, + ), + SizedBox(height: spacing), + _buildItem( + asset: AssetUtil.ic2Fas, + title: S.current.importFrom2FAS, + description: S.current.importFrom2FASTip, + allowedExtensions: ['2fas'], + onImport: (path) { + TwoFASTokenImporter().importFromPath(path); + }, + ), + ], + ); + } + + _buildItem({ + required String asset, + required String title, + required String description, + List allowedExtensions = const ['json'], + Function(String)? onImport, + bool useImport = true, + }) { + return Material( + color: Theme.of(context).canvasColor, + borderRadius: BorderRadius.circular(10), + child: InkWell( + onTap: useImport + ? () async { + FilePickerResult? result = await FileUtil.pickFiles( + dialogTitle: S.current.importFromFreeOTPPlusTitle, + type: FileType.custom, + allowedExtensions: allowedExtensions, + lockParentWindow: true, + ); + if (result != null) { + onImport?.call(result.files.single.path!); + } + } + : () { + onImport?.call(""); + }, + borderRadius: BorderRadius.circular(10), + child: Container( + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + ), + child: Row( + children: [ + AssetUtil.load(asset, size: 32), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AutoSizeText( + title, + maxLines: 1, + style: Theme.of(context).textTheme.titleMedium, + ), + const SizedBox(height: 5), + Text( + description, + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/Widgets/Item/item_builder.dart b/lib/Widgets/Item/item_builder.dart index 54504233..341fe5b4 100644 --- a/lib/Widgets/Item/item_builder.dart +++ b/lib/Widgets/Item/item_builder.dart @@ -592,7 +592,7 @@ class ItemBuilder { ? Text(description, style: Theme.of(context) .textTheme - .labelSmall + .bodySmall ?.apply(fontSizeDelta: 1)) : emptyWidget, ], @@ -757,7 +757,7 @@ class ItemBuilder { description, style: Theme.of(context) .textTheme - .labelSmall + .bodySmall ?.apply( fontSizeDelta: 1, color: descriptionColor, diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 72279f3b..de7611ce 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -485,6 +485,7 @@ "importFromThirdParty": "Import from third-party software", "importFromGoogleAuthenticator": "Import from Google Authenticator", "importFromGoogleAuthenticatorTip": "Select the sidebar-Migrate Account-Export in Google Authenticator. A QR code will be displayed on the screen. Use CloudOTP to scan the QR code to import", + "importFromGoogleAuthenticatorInMobile": "Please scan the QR code from your mobile device to import", "importFrom2FAS": "importFrom2FAS", "importFrom2FASTitle": "Select the 2fas-backup.2fas file", "importFrom2FASTip": "In 2FAS select Settings - 2FAS Backup - Export to File; then import the 2fas-backup.2fas file", diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index 33be6ce2..6f18cb4f 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -485,6 +485,7 @@ "importFromThirdParty": "从第三方软件导入", "importFromGoogleAuthenticator": "从Google Authenticator导入", "importFromGoogleAuthenticatorTip": "在Google Authenticator中选择侧边栏-迁移账户-导出,屏幕上将会显示二维码,使用CloudOTP扫描该二维码即可导入", + "importFromGoogleAuthenticatorInMobile": "请从移动端设备扫码导入", "importFrom2FAS": "从2FAS导入", "importFrom2FASTitle": "选择2fas-backup.2fas文件", "importFrom2FASTip": "在2FAS中选择设置-2FAS备份-导出到文件;然后导入2fas-backup.2fas文件", diff --git a/lib/main.dart b/lib/main.dart index 66ea24e8..b34b58f3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -10,6 +10,7 @@ import 'package:cloudotp/Utils/hive_util.dart'; import 'package:cloudotp/Utils/request_header_util.dart'; import 'package:cloudotp/Widgets/Item/item_builder.dart'; import 'package:desktop_webview_window/desktop_webview_window.dart'; +import 'package:ente_crypto_dart/ente_crypto_dart.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_displaymode/flutter_displaymode.dart'; @@ -94,6 +95,7 @@ Future initApp(WidgetsBinding widgetsBinding) async { HiveUtil.setEncryptDatabaseStatus(EncryptDatabaseStatus.defaultPassword); } } + await initCryptoUtil(); NotificationUtil.init(); await TokenImageUtil.loadBrandLogos(); if (ResponsiveUtil.isMobile()) { diff --git a/pubspec.yaml b/pubspec.yaml index bb5569d9..6f4fb67f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -145,6 +145,7 @@ flutter: uses-material-design: true assets: - assets/lottie/ + - assets/auth/ - assets/icon/ - assets/brand/ - assets/logo.png diff --git a/third-party/ente_crypto/lib/src/crypto_util.dart b/third-party/ente_crypto/lib/src/crypto_util.dart index 3f370fae..17cc6195 100644 --- a/third-party/ente_crypto/lib/src/crypto_util.dart +++ b/third-party/ente_crypto/lib/src/crypto_util.dart @@ -1,13 +1,14 @@ import 'dart:async'; import 'dart:convert'; -import 'dart:io' as io; import 'dart:developer'; +import 'dart:io' as io; import 'dart:typed_data'; import 'package:ente_crypto_dart/src/core/errors.dart'; import 'package:ente_crypto_dart/src/models/derived_key_result.dart'; import 'package:ente_crypto_dart/src/models/device_info.dart'; import 'package:ente_crypto_dart/src/models/encryption_result.dart'; +import 'package:flutter/cupertino.dart'; import 'package:logging/logging.dart'; import 'package:sodium/sodium_sumo.dart'; import 'package:sodium_libs/sodium_libs.dart'; @@ -19,7 +20,7 @@ const int hashChunkSize = 4 * 1024 * 1024; const int loginSubKeyLen = 32; const int loginSubKeyId = 1; const String loginSubKeyContext = "loginctx"; -late SodiumSumo sodium; +late final SodiumSumo sodium; // Computes and returns the hash of the source file Future getHash(io.File source) { @@ -500,6 +501,7 @@ class CryptoUtil { cryptoPwHash(password, salt, memLimit, opsLimit, sodium), ); } catch (e, s) { + debugPrint("$e\n$s"); final String errMessage = 'failed to deriveKey memLimit: $memLimit and ' 'opsLimit: $opsLimit'; Logger("CryptoUtilDeriveKey").warning(errMessage, e, s);