From e0df5a8c097cdb7ffc1fbd36d8bc64a47e3661bd Mon Sep 17 00:00:00 2001 From: Bye Date: Sat, 2 Mar 2024 12:41:57 +0000 Subject: [PATCH] Commit --- accounts_handler.php | 23 ++------ admin_apps_create.php | 10 ++-- admin_initdatabase.php | 17 ++++++ api_handler.php | 24 ++++++++- assets/icons/apple-icon-180.png | Bin 0 -> 698 bytes assets/icons/apple-splash-1125-2436.png | Bin 0 -> 16356 bytes assets/icons/apple-splash-1136-640.png | Bin 0 -> 4561 bytes assets/icons/apple-splash-1170-2532.png | Bin 0 -> 17311 bytes assets/icons/apple-splash-1179-2556.png | Bin 0 -> 17783 bytes assets/icons/apple-splash-1242-2208.png | Bin 0 -> 15967 bytes assets/icons/apple-splash-1242-2688.png | Bin 0 -> 19355 bytes assets/icons/apple-splash-1284-2778.png | Bin 0 -> 20320 bytes assets/icons/apple-splash-1290-2796.png | Bin 0 -> 19153 bytes assets/icons/apple-splash-1334-750.png | Bin 0 -> 5868 bytes assets/icons/apple-splash-1488-2266.png | Bin 0 -> 18170 bytes assets/icons/apple-splash-1536-2048.png | Bin 0 -> 17136 bytes assets/icons/apple-splash-1620-2160.png | Bin 0 -> 18407 bytes assets/icons/apple-splash-1640-2360.png | Bin 0 -> 20641 bytes assets/icons/apple-splash-1668-2224.png | Bin 0 -> 19755 bytes assets/icons/apple-splash-1668-2388.png | Bin 0 -> 21173 bytes assets/icons/apple-splash-1792-828.png | Bin 0 -> 7886 bytes assets/icons/apple-splash-2048-1536.png | Bin 0 -> 16264 bytes assets/icons/apple-splash-2048-2732.png | Bin 0 -> 28653 bytes assets/icons/apple-splash-2160-1620.png | Bin 0 -> 17730 bytes assets/icons/apple-splash-2208-1242.png | Bin 0 -> 13787 bytes assets/icons/apple-splash-2224-1668.png | Bin 0 -> 18647 bytes assets/icons/apple-splash-2266-1488.png | Bin 0 -> 16890 bytes assets/icons/apple-splash-2360-1640.png | Bin 0 -> 19371 bytes assets/icons/apple-splash-2388-1668.png | Bin 0 -> 19070 bytes assets/icons/apple-splash-2436-1125.png | Bin 0 -> 13640 bytes assets/icons/apple-splash-2532-1170.png | Bin 0 -> 14600 bytes assets/icons/apple-splash-2556-1179.png | Bin 0 -> 14863 bytes assets/icons/apple-splash-2688-1242.png | Bin 0 -> 16322 bytes assets/icons/apple-splash-2732-2048.png | Bin 0 -> 26953 bytes assets/icons/apple-splash-2778-1284.png | Bin 0 -> 17014 bytes assets/icons/apple-splash-2796-1290.png | Bin 0 -> 17412 bytes assets/icons/apple-splash-640-1136.png | Bin 0 -> 5494 bytes assets/icons/apple-splash-750-1334.png | Bin 0 -> 7083 bytes assets/icons/apple-splash-828-1792.png | Bin 0 -> 9836 bytes assets/icons/manifest-icon-192.maskable.png | Bin 0 -> 721 bytes assets/icons/manifest-icon-512.maskable.png | Bin 0 -> 2331 bytes dashboard.php | 12 +++++ database.php | 9 ++++ head.php | 56 +++++++++++++++++--- image_grabber.php | 17 ++++++ index.php | 26 ++++++--- login_external_basic.php | 9 +++- manifest.json | 34 ++++++++++++ profile.php | 37 ++++++++++--- signin.php | 17 +++--- signup.php | 4 +- styles/design.css | 23 ++++++-- styles/global.css | 6 +-- styles/profiles.css | 30 +++++++++++ styles/types.css | 31 +++++++++-- 55 files changed, 322 insertions(+), 63 deletions(-) create mode 100644 assets/icons/apple-icon-180.png create mode 100644 assets/icons/apple-splash-1125-2436.png create mode 100644 assets/icons/apple-splash-1136-640.png create mode 100644 assets/icons/apple-splash-1170-2532.png create mode 100644 assets/icons/apple-splash-1179-2556.png create mode 100644 assets/icons/apple-splash-1242-2208.png create mode 100644 assets/icons/apple-splash-1242-2688.png create mode 100644 assets/icons/apple-splash-1284-2778.png create mode 100644 assets/icons/apple-splash-1290-2796.png create mode 100644 assets/icons/apple-splash-1334-750.png create mode 100644 assets/icons/apple-splash-1488-2266.png create mode 100644 assets/icons/apple-splash-1536-2048.png create mode 100644 assets/icons/apple-splash-1620-2160.png create mode 100644 assets/icons/apple-splash-1640-2360.png create mode 100644 assets/icons/apple-splash-1668-2224.png create mode 100644 assets/icons/apple-splash-1668-2388.png create mode 100644 assets/icons/apple-splash-1792-828.png create mode 100644 assets/icons/apple-splash-2048-1536.png create mode 100644 assets/icons/apple-splash-2048-2732.png create mode 100644 assets/icons/apple-splash-2160-1620.png create mode 100644 assets/icons/apple-splash-2208-1242.png create mode 100644 assets/icons/apple-splash-2224-1668.png create mode 100644 assets/icons/apple-splash-2266-1488.png create mode 100644 assets/icons/apple-splash-2360-1640.png create mode 100644 assets/icons/apple-splash-2388-1668.png create mode 100644 assets/icons/apple-splash-2436-1125.png create mode 100644 assets/icons/apple-splash-2532-1170.png create mode 100644 assets/icons/apple-splash-2556-1179.png create mode 100644 assets/icons/apple-splash-2688-1242.png create mode 100644 assets/icons/apple-splash-2732-2048.png create mode 100644 assets/icons/apple-splash-2778-1284.png create mode 100644 assets/icons/apple-splash-2796-1290.png create mode 100644 assets/icons/apple-splash-640-1136.png create mode 100644 assets/icons/apple-splash-750-1334.png create mode 100644 assets/icons/apple-splash-828-1792.png create mode 100644 assets/icons/manifest-icon-192.maskable.png create mode 100644 assets/icons/manifest-icon-512.maskable.png create mode 100644 dashboard.php create mode 100644 image_grabber.php mode change 100644 => 100755 index.php create mode 100644 manifest.json diff --git a/accounts_handler.php b/accounts_handler.php index 5d862b9..34e6c0a 100644 --- a/accounts_handler.php +++ b/accounts_handler.php @@ -2,27 +2,14 @@ // This file carries functions related to accounts. function get_avatar_url($bcid):string { - global $pdo; - $sql = "SELECT has_pfp FROM `accounts` WHERE id = ?"; + $exists = db_execute('SELECT public FROM avatars WHERE id = ? LIMIT 1', [$bcid]); - try { - $stmt = $pdo -> prepare($sql); - $stmt->execute([$bcid]); - $has_pfp = $stmt->fetch(); - } catch (PDOException $e) { - http_response_code(500); - die($e); - } - - $appendix = "default.png"; - - if ($has_pfp['has_pfp']) { - $appendix = $bcid; - } - - return 'https://cdn.byecorps.com/id/profile/'.$appendix; + if (empty($exists)) { + return '/assets/default.png'; + } + return '/public/avatars/' . $bcid; } function get_display_name($bcid, $use_bcid_fallback=true, $put_bcid_in_parenthesis=false, $format_bcid=false):string { diff --git a/admin_apps_create.php b/admin_apps_create.php index 1e495fb..c769a22 100644 --- a/admin_apps_create.php +++ b/admin_apps_create.php @@ -23,11 +23,11 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") {
- + - - + + + + diff --git a/admin_initdatabase.php b/admin_initdatabase.php index 838580c..fb860c9 100644 --- a/admin_initdatabase.php +++ b/admin_initdatabase.php @@ -119,6 +119,23 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { echo('

An error occurred: '. $e->getMessage() .'. Most likely this is already set.'); } + echo '

Create the `tokens` table'; + + try { + db_query('CREATE TABLE `badge_owners` ( + `badge_id` int(11) NOT NULL, + `owner_id` varchar(7) NOT NULL, + `earned` timestamp NULL DEFAULT current_timestamp(), + `info` text DEFAULT NULL COMMENT \'App may attach more info about how the badge was won (Killed "CoolGamer69 in battle!")\', + + constraint badges_owners_badge + foreign key (badge_id) references badges (id), + constraint badges_owners_owner + foreign key (owner_id) references accounts (id) +);'); + } catch (PDOException $e) { + echo('

An error occurred: ' . $e->getMessage() . '. Most likely this is already set.'); + } echo "

Database initialised.

"; } diff --git a/api_handler.php b/api_handler.php index 64e3c59..34c5c5a 100644 --- a/api_handler.php +++ b/api_handler.php @@ -53,6 +53,19 @@ function api_health_check(): array return ["message" => "Science compels us to explode the sun!", "time" => time(), "response_code" => 200]; } +// Potentially authenticated image endpoints + +function get_avatar(): array +{ + if (!array_key_exists('id', $query)) { + return [ + 'response_code' => 404, + 'message' => 'ID not assigned/found' + ]; + } + $user_id = $query['id']; +} + // User (REQUIRES AUTHORISATION) function api_user_info() { @@ -94,7 +107,10 @@ $api_routes = [ // base url is base_url.'/api' "/status" => "api_health_check", // Account stuff - "/account/me" => "api_user_info" + "/account/me" => "api_user_info", + + // Get avatar + "/avatars/get" => "get_avatar" ]; $path = str_replace("/api", "", $path); @@ -107,7 +123,11 @@ if (isset($api_routes[$path])) { "message" => "Token expired or invalid." ])); } - echo json_encode($api_routes[$path]()); + $response = $api_routes[$path](); + if (array_key_exists('response_code', $response)) { + http_response_code($response['response_code']); + } + echo json_encode($response); } else { http_response_code(404); echo (json_encode([ diff --git a/assets/icons/apple-icon-180.png b/assets/icons/apple-icon-180.png new file mode 100644 index 0000000000000000000000000000000000000000..f07b87c89f135d2996cc9bca2cbc94c5493f5cc7 GIT binary patch literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD4M^IaWitX&jKx9jP7LeL$-HD>U@Gx+aSW-L z^Y-q;%tHV8dSMC2ED^`aN&_WWv$u-z`;UJ=_x}1>8JqX--L&leg-fzu z-;O$bFZ<{E^#9`h2~Nna3w~Gh<|gZmkAAi57q2TkpLa>a2ifVVr(*kT&zs2n{B!t3 z`S16qTFCR^GMle&x0ps_7@fX^#$l&Sf=d#Wzp$PzV C`w3V8 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1125-2436.png b/assets/icons/apple-splash-1125-2436.png new file mode 100644 index 0000000000000000000000000000000000000000..50920b97b8336200fa3538251b3e401f13f82176 GIT binary patch literal 16356 zcmeI3Ur19?9LIn6da1c7%-KUp>0ZJjVQaI8Al;Ig4u>_XN9SH@1x7_Z457HWE7d~@ z(L+YvhaiJo8i?2*iA$wXX(dBZgCYjShNu)PLB!6v_ceP;80-78!#!~B#`pft_xCy9 zZI=%;))ksd%tTb^ulF?(Nk@qC71KI46W^M6%m(31Q(X=9zT2E4vXkGp_fYiK?9@&{ zvy8xgoFGY?BO^3 zLJDkRud=*7j}2BQ7C{J91hxh|0%nP>f%XX`02=`kLCfrL03-ks011EuKms5EkN`*k zBwz{v34jEDLV}^$nepQ+&z2_4=YX}@UeI8|h|8hQI2 zJ*4*PauT3O6`8DUCJIohdNX+JTyuqS8AS%1Ye+$6A-e3KrKAgyt2d*sL zFK3h*c>VwQm1g6uizw=Lrtsy33yG^+ES&!ez7Lj;sLxFs>-9|Wf_{9%1raoW2K;X;r~_z#IzV3_85%$X n)(}t!&;YCqECLn*i?Rj@qHi6&7>k44ofy`glX=O&AlU8c z;uumf=k2Y)+}92wt{1l%F(w@Zq5AeV=? zUokS+T&|lFe1G?P!>@a9{!W|yxALdt{q%qB_w^apKVV`9s#fqjzzC!|gn@-P1H&U0 z86eqU!AK9OZC9BYDwh403ci24zxY-4=I;k5|ET@b^Iw}G?jY*`7xTHR*%?0g{4QKK z@59<(`*!`7TCL8&@JCaR{-H$A7#X#ToV<`1ZOhP*zH9x)DkcU7n>KDbW+7}5b~}up z;la#rk7H~b#UYM5F#pkD$my1B12eyr_-MrqEN=%(#l3y49I$PD zx^B*D^*>qPO~d>d9yG>006K60o7i`L*Y=*jstj_(5A)IFGTQ9{CWO&W-~&*880`{| hjsk$v0nypvJ8P!Ak=U=0drv^xJYD@<);T3K0RTFQ`v?F4 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1170-2532.png b/assets/icons/apple-splash-1170-2532.png new file mode 100644 index 0000000000000000000000000000000000000000..c6cd4a14d981cb7e3f5c66917698e312042b608c GIT binary patch literal 17311 zcmeI4Ur1AN6vxlH!?xiX4zrLTn~R7dx2G_QwzcI(G>15|m$shlKgGyQu`c1mWYU%v z1gU#03|#nNfe&6uh=>*;BGS5?_BtYEH<3D}Dq?pUtcN&e6oI-L8x6)crHLxYWw+M1^k%26THZv0 zV9xghi;O09CLEdB{%K??5WB=4Az^H3k7)U;CiXreXO~el`bsss^5f1m%v6}M1aBZV zkPavgsE1Go2qN$RL5 zjBOoQck5nxy)79#pvvkV_l=+Sp5NHk^{TitqGU;FF&GuhL{u(zC8JF*8Z5yZEDR7E zNQV_%9EJ|-sAYKn^|abIGgZCs-JO^56OJ8M&Mj!}zsawkPn>E}#)jtFxn$1<8Kt}A zm1f_^Tu0TnCuYejDn9z-`3G;qV(r|BcK%tYu*w z_~m%;$fH=Gm38i;5jn+$>^R`2r)}HsvjC7fIg;P&9Pv%xFS=_P>%3iiOnxBzMz?n&ouU>qAyPt}We*QVjC_zEIAVUFMt-_A)lC~iJ!nf|Tt*qcJ zdBwOFHeX;UsN}<8U6q7*L0Nb#HQU}7ovdVTpvEXD4}%~U2y!GK%r{o>d_#5}+yC#< zp5~jg7Ev`UkK=D+p}HWu_s literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1179-2556.png b/assets/icons/apple-splash-1179-2556.png new file mode 100644 index 0000000000000000000000000000000000000000..5f90799a900db4524bee7e853a59e7aa7c9e28b3 GIT binary patch literal 17783 zcmeI4-Aj{U7{>3dO`0~h%0A3wMz+XfruT9f%G9_S(@F?`v&ZNQ^{LB0K=ZIe2DG{Y&%qmLe`Hi9^_Z#@r z-x|?z$sciRxul&tEY{yVfMt*bU4o4RD1eh}2(S*=B9emG2nbIs0`eq_fUL|S017Mu zpdds56j%g6fkglm#C||hU=aWX76DLT5dZ}i0Z(zUBs}YpP#H zb+Z>oBWx}5T>#2Q9N|d0QXWXMibJam1>qz7 z(k0U~wMB9F_!^pww0V5m#SGyYL{mppC&HhD#Xw9WJzvUtyqku~>r6S{4&`ddZ>d%8 zGl7brqIwRXOhwK{RU#}&*S()E`m|EQZFNp0#_mT4f4SON51KltRy1M^#g|wynd5uC z@Im&YLl8<_&gxt3qEM2G zE{qyWyDSL`O|O;&1?6Z2DV8LNrcFZHS1pU`J${q&Dt99a&((ns-hJcjInVQZ54*g- zti+JAK81)3_EKv(k#3MkAJ8X@Cll8kt)gg7m6u4=5!yIGludT4<)Hi4=Tb13 z_xt*#g-CrnC3Vs5Qy1NObk-HF1JjaRW5&f_s*pL{V*{fy( z&BvyXz@;?prGF3RUXSQr8=mf-od0=;d7oY`D q0R{nH05k#}A`Ov-NJFIIB1l7Hh2M0j*_&~gzl+^gX6=xi7ybb7<&fwA literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1242-2688.png b/assets/icons/apple-splash-1242-2688.png new file mode 100644 index 0000000000000000000000000000000000000000..45c72d46c48e015edf310793b4ba6d92755a33fb GIT binary patch literal 19355 zcmeHPT}V@57=AaGt=U4+*7}iz0xt^FgaYSm9;VY94eO$)Xd!7BqENEw`Z=aWq9hev z6gm9qqKlHi(ClhiP+*RBQHmuArdgAaT(#`?dv_Xm6-A*L&(%8)eCOMFzvq3P=Y82u z-PSytUbjL=MEcwuYXOmFkVq$MBgK`Bex)>z`QGP7D$CC%2?&DN6U+AGz; z#Izgr8@JtAYUr#8$nqm)UfrS$x+P`MU8@YbwaTD7S{ZaFD1&ax52J#G%umrs4v@n- zh3Wux2pm{IkI)W*ga1ZY*S9UCXZwcU`(lq(G~FLxw7PHlVbSKPVqN~lkDm&kI1Y~$ zN9JF87r!95ZrQxB3y*s}I|W~dehVNDinO!ga(c&Af>zT8a1OZqDt++w|F%SbD_7?Fr@7o%jy-`VJSULNnP#5y3=>62x>jB}7A38ihs? zS;+(`5h{(SEJQg-F$vNL`e8(73Ni@{kxDYx_nuRCN>^Ky&(*u_aLxx0@Ap1G=VNC} zONvrW>r6zH>T$cuh?0y%rih#@e(`>^Y!yZFmlZjwdw6}6NFk4_(0jb?(_6cwDx}`E z$K0+JYg^CN?%4ODucGHfy10RqvHmo!G#|Ez$5Ftt%ferss|&fvcB3SU@&p$F0y+WP z0W$%E5$phpgia8X5Fh{qC}Y?IcqAA_F$nJ!QoE8bcjb6Hs!CHlk`xP8w)+onc{DVX-Iyd>bvfwz6`2?6VS!Q4({WMAB!B=A zupP*WnIN-mvYap8D>hT>?7KI! z!7E?J+d`jTPK}rY59ZR!FUAfyuC4+#|ACbrMkTtWA@@43pp*Mh9F2J24B)_IV6u2I zSwd;%pEU0ms_RL;F*(q=Nl={H4gy?~=rsbozhQFL_+e$}`?Zk3t0sI}5d}hF5fFy5 z^Xc0t6CTZ12%VLuGu}WgB-V15lF-v}Hx<15h>k>B{Pl+Nk(0%H$u{nU&R9ZcOpHJ7 z8HrkXim9W=79CJCPn**;`zO!zrcVsIHA|>A>3O|Xzh$G2@SdQ;PdYDap2%j^Ok`H3 zmhk&rxDnupHbduNcZiJ;!05nuDhsbQ;{{=|=>R1ti5Q&+>1OPz@LCAd&Z$VfUUc*Q5$vAh=TvyH?Aw3{H y{)Y4b`GfpH{t6FckUz+u`yk%r&ubuoUNnK0LW9m{y%o==86(f`5?8m=*YFdOHsi(s literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1290-2796.png b/assets/icons/apple-splash-1290-2796.png new file mode 100644 index 0000000000000000000000000000000000000000..cee06dbbb8b2de6722bfbc0d2f5f7e9201eac4fa GIT binary patch literal 19153 zcmeHPUr19?96obS=Wr<_C~ejXA?cyNP!A%`vD#hKv>`qCbS)uR^bjMFsX2xQ_F#)7 z%xW$l7X7n5^iYsvSkOz%2b0AnX%Ddsn+vBEi`F^!C_M;+STAzFr*qG}cMs>|`+dLf z_d92|zsY9NYAQ8^5Uo`(+X+$8Yt4eXh~61ezurp+h0|^^k+Fz=o)81Enj4xs?kv1N zpa>gCICwBCn3cLKrJHoB@!FN)9{N5BPle(N>7x7CPBx003)sLX-cxEeY2)`Q`q;#X zM-oCn1KdD3Kpdcl$PO$oB3Hs5Fdo1xNj?(cfN(%Kpj?6;qFzS541Y)n8YXC%&^X9Z zFNa&B1CBP;XwB7RS*c&q|Jk^!GMLh*4&9nL^Pxp!d#F6wzUN*!vlT*3AsciW*1UB0 zn%KmEM?iz}0Ng-0Fg<`cKq@H>kR6aKnH<0#Y%H_nj|Ga!W3fImU-HzK8TO?d%S##0 zbkEtLmA>z9zf6AH5-ATn`K?#}I($T08R7n~d}A&1Khn~1dpikw5~0BEm$7S3*Tkdg z$+CFEyZdWr0o=NzFvltVgl+6K?<;xS+~5nEr}v z;aoAx=M~X!@_XFVxig0 zbRbv#4#O#(q(w0zwJP8oHk5M+&kj`a-R9Vc>-vOR$NldpKcmDqNBa4}HU6*jYQB$e z=Br#i!-5~>0mMZ|mq5Q5;AGzg0Q}xOkOX=_&kbdQL>rK+khBH37uYyhf*h7$+B9fN Tw*1H*XC=P%sLecP5F1{9g{!1D``Vk{1FcVbv~PUa;8gV-`p z7srr_Id5+r%zf-2!s>WCfvKla(WsAeqM-rH?``F}HgcvBq6Z#0PAJLvbN;u~eR-e> z3=E3#tJ%SfJzh6hK#ZamUl66>KFS>pjnTv~niockg3*$2sFj52(Y6c>^D^wuW#-?% zKI7ZBGj}(i{Sy60T5tIF z?O%)Kdu@x&KUDt-yZ+%nH$(mDqiP_JOi<2Y0@0R-1||3QD@KM7F24)c&HE6)YWM4R z*=yzj9h-lANH~6Q2I;7)1~S=iUMt7I;9nA-{1w=2ZZHv_4a$5DeH%DI^b?Lj$;|<_ z^$!TYJ-)MwN%6aBm_N|r+aC|Pa|p%5PuHO&xq zqA6I|n0F@vO;X6i~oxpGy?SX<)!{}(t l=-AX~UKkyj9O^|u9mB>GMxQ!c-7bJiHBVPRmvv4FO#s<@3bgmWNFGXCI+rAxsa-@= zQ_KsyP&6w_C~4-!Kx!Df*r+TpJZt>LECoA!-?pHO$dopUp546v4&TMz?|q-=d7uB| zuRWNV5fT&|L_{Il{ps060YgNp7b+$D{YW+;<;G7TovlR>Q@KyXw8bKPdGJxUcS7}sGI_tcjE7qA>MPovkjl;T3Vz;n>oJM zmRBwiSzHg$W8299j?s}ip zIJt`Hn2|^DLtrH_iw|Cqzaa46b0FtWI6@ClwIBwqKVk{iY^#ZQrdK3L4TI5U?d@?Z zn}?SAPh-#dsnz+b$A>jpMn|(Xg$+?*5}?P|&|@!~aZE&TkwenHOcctk~-vEy? Bu@3+M literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1536-2048.png b/assets/icons/apple-splash-1536-2048.png new file mode 100644 index 0000000000000000000000000000000000000000..c313eec3775251e5d3334bcdf6937cf53be6848e GIT binary patch literal 17136 zcmeI4Ur1AN6vvOdt4&b~qsSp`l48)vB_vT?bGC9CS&RyTC?TOJ%ZI&`Y2FqDickna z^yi@->>->FVI_!NeF{o#3}PnepkhoS3tC&Gv-`W})Esux_>b)Kx(Ms*oN>*W_p;VP-a{Ru!S_)1S$B7(N?{OcxaQEYsyFhi2 zs%~BKdZfZzU1g=?_X6pi-)_fpw675PW~TW|R06k~~ z5Em>1Z~zBE0Otkk035(U5I`NpIsgZ75Cl**vkt%k95ezbn^^|n01kox%4XI9IDms7 zu*_w1D)LkcH{9RU{lMI!+MJ;s&XCPn5*~AP_P(4B9v*d9S6mriA@)&d_`}OqaqzsD z0%pE}1zE`9^qmc)_AG9HSl<4AXds?zKf3s1;Cy0s)$r8Zd~9xha&Fc>(~?M9l+Jf1 z-aq`AIS%Zu*hpV_d-JXdc9*1fFD!l-Us%fj+_;6e=0FVUATq+?Nj!&MMXvkX#vXl7 z4^R0|gx6@BIX)_qr1mlAvRz%uw&n&~avSl51q=inz(Ei|T(Az7k;BO5V%x9(0w5jf zxU(WHzpj!=DVprqe?aUhY8hfBptQ~)hqrwea-9^#m%2|*Zj-exC%X0+ZzwB7^S=i0 zxv)e>2JNx0W~Hn@eYx83&A_t^iUmEf4j-*QYY-g3K@j*oLJ@}vk=iQSMN`kkPiNaq zB;hd8Rg%#LxkFASWSKki)N^4}3( literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1620-2160.png b/assets/icons/apple-splash-1620-2160.png new file mode 100644 index 0000000000000000000000000000000000000000..7e08f6d724ade8c556a3c48c08137261c8fde802 GIT binary patch literal 18407 zcmeI4ZAep57{{O0Hm`3usX(Kxg_WR!i|mE8(z!B2=Mp7D&`IQn3^dk<878+8rW8cP z3dHOM3O|UMLL%l`N*I(14m6R#3X!3ysECke=ic3Y3_r!L_P<~5;cmMep7Xr?&i_2D z&SK6857`+)MB$ldOu0nrJR+`wQ?n<9VV)1{rm*E^7^!7omzPLSnWnTnd&BhTfk@s! zZg=jQvsS&=qUyeDSc(7GIMq3l%znbIqxHo>zR}9#XIsRPCTxdz=dDe?Pn78@aiEWi z^F4TPQHTSsMwk&%s)5Z$xEy!|Y{488enE&4LcSnE?j+O^BGgpC0plaU0pLL3WWWL7 zfVlzS0C2$E0B`^}U~T|7030wk02~nC@6t9L4l|wG-fs+VQahWD@NwF5c>>oGH8BQ`mfMfBc1s1=ZV9XP5m&SDEvmqNsgnRpm}dL}KG)p5)(n z71aEr^OZNayj@(=0&f=avn#{tg%j^q`)<#sxRbDqv>}%9;>iJTaMic0@k4_*vU3=l zjo(`^f*epSH$=6JIqNF$_W}qT3t%!~%fM7e@ct&|{VSfWRM2ND_G}YEe*C=M-;x8o z4-nq3%d4%~5oFc=x@yj$<@=Mam$7W&=K3nJaH%rYaRkI)`&!+=V(fQ!{>*o2%@RI^ zLS_og7JA(n+w90%)m9#~kBkb9DKf#Tj;ZghEnSXG>fs+H&KEhlBSKO2i8gW7m#K_B zH7zs>yOYPNKR42oBQ3TiB~|zM+lgg5>Hj{L5S2uaR1WHVP2O{tbU0?go(b8LWip(R zuuhGDoRJ_YL%w5LCXfLj50Gb-2&IVG0HuiJDv?2LhIg`-R+$R8@J<pS}RhjuvqGv)YF{)vY=!QPpt%%&Ej)$s?Ig+Oiq literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1640-2360.png b/assets/icons/apple-splash-1640-2360.png new file mode 100644 index 0000000000000000000000000000000000000000..b400cd308b32ad1d04bb18a3348f3e3a9d1b4270 GIT binary patch literal 20641 zcmeI4-%C?r7{{OE?9f>)t#y%-Z5NR@LM|l&9Zs9L#n6<{FetGfWa*9laH!;(AXdwp zqE?!VAR!7R5<`(TQtCoe3$)ZEA!ukCGfP=U^`5hx`UfVl@jW-^<-p#thv)sg-{*J+?&6%l?2C*ra1TjILVC@i4K)@rm3<3&(0s;yMC;$owC;$prp@;$j zssJbe3V;F@0iYnPP*6KJng5{AusQp+YfEE;$}a%Y-oc#Im^*t zm&Q9Q{OlX|RJE=Y>)ELZTV^jrd}srWN&wq`#BTpE1$5!Gr-N+$l3<@(Te*ymIDH>ndaMK#mW99vahD(deMB|xK zf+rx7)xmSKcp!#_5DzH~$d5n|2i*8HhoogrqTTj)e*_!y*hz3<|{uONOSFwZuh554}_t zTZBY`;U5gqqVz`@Lr9Gbrlq(UB<94Ce-MJ~-n;EJ@?kLBcQ3pAcK6%%{e8|k_ndq7 zyLr@*7ZtH1f{3CD^7TbTVa-H}E=3qSvVBFD$)04!qC6dSjKt3osi{Dpd%Vu#n#hfk z)Fesi>-qZ7Z7sLVPhKATc-2A-fuVVS#t~}JAcxQJV}6J z%FI=Wf!YugA_g~9tPso}n8H-D&pixT(FHaw)z|Ii+t?t_f3EMj4R0>>UfGx{i6x z)0D}|snt1UZ<{rmF6={}o7e!V z9wd@vZ2y{*EpvRuGpIV(7CH3BJ1+V?(uaStNQx&)7h^ZM2Uf^ptYd%0vP;h z=>Mp0`-^Zklcu{DY%Zny z@A+uerR6tfD7!PTlHLEw)3Mv4@-}W6b)Exd25&9>gVNg$l;yp>LRyNqxbwZ))8i#s zyd5Pt2|*JRIDzdDTmf7G!4(i(0bBvW6$GOzi0u5FQ#&*{Jk67zg2M)Vhpw#Y50Z1A A%m4rY literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-1668-2388.png b/assets/icons/apple-splash-1668-2388.png new file mode 100644 index 0000000000000000000000000000000000000000..41f4ca6780f387ab26cb46b3839cfb4423c5b609 GIT binary patch literal 21173 zcmeI4-%C?r7{?!fU{hNhG|HrMiZBRE7hM=@rgQ#++WfJSO2nuTtP~Mzn&uL-^2Xh@ zXxdHcmFp(cMCD}Cph5$&@JBHs6v=8ZiO9sx`|j*Nn9=aNo4ssjhw<=vzt8i2pNDg= z(3q!;ijN{9WkJ57m?)x+DAKHmkUq&M72>3~khsCOI96t}l%k46 zQL~Y62#c|I+31}G-q3P=+y41fVJAUARbkQ-ST00Uqk*V5mp}eojvO4GywEt_ zU$s(TR*K$aBBy&JFFWoqZ1i|WKGXf@P*1Kg!0ARSgDK6UZ2BpiPW_Z za9qqeJ$C;rKwu($u6G-G%04ulFb&NNf18f2KBY|{cg9V%xb&xnDmr$fDrJY-V6VOo zPKS}jSwG*W_OyF%{U}?~=-5a|`3Uwc#0nxVF@Ve^1pyfyWz1Hu-G(kT5>3^2xmLMD zX9-V5NgKq%Q2k&(iFN(+8M+X6rPFKgW-^yrzPYZen6P%Oa6F9+MK=9*Lw0g*UUF`B z^3z?RJt+-cMIO_QhATl|QU>_!8CW}G;joUZYwxc<>L&5zz{6&FH;=iqabQKQ18XAi z)9jW1GmraH)7<&wh_6w!*ycOriVnGvZjY4*ChGJ)r?J8)|FyS~vh8$Ke&#}& zT5c@hCRW4*oDlX7K?)!R1SxpgtWBNk2kY=wCS)D-B6)j7eY&i@(o~JHjtdrbUQ}N(>ZSQ+=pb0=Q z;Y0pc2#euCEsFz$$sx$V2xcj`FtC6b4FZe;5ILt&MWaE$Fd77-LBKE?1fxL!tQ1De zg3%xtO$8_!;bs^=14F~|Z;$5`ovZEDe14{CUSwKrUX9-Vz^pyj85n-#-WeGUs|mTF z)@8-3eaEI0gF|D@b4I(_9&`yG?85fZ5jn z?)3;;P!IV*@=nI#Q%d0rircS%{{3*JZq91;5AJuM-j^$89vPzo+paP*Fub_YU;LG& zVs+&Gm%pWg&jG{ZL4Lsq34qZ-pJCa{fi%w;9(=t8O4|P(?>qL26PV3Aq#J;R8xRc7 z))>5;`&1hLxcV!!0DoXh_cr;T%=3IHpm1jU8GZk;b}xv@z>weqZ2}+YfOQfCVYQ4h z6STl}V^IJrX6WH?fG{Kk8z2k=CFtnws6h&l5E%_4=qUbZIvUL)pb!`>Mj-QBqa~yQ lBtwjrkfS9eC?!zbh+x^(ZQQ5)GQSjLny0Iu%Q~loCIEAYGLZlP literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2048-1536.png b/assets/icons/apple-splash-2048-1536.png new file mode 100644 index 0000000000000000000000000000000000000000..a53ba1c6cf49be2e67de301f6eec55585a6a4d0b GIT binary patch literal 16264 zcmeHOQAkr^6h3#3>$Jp6P(~S!dho$8%*tk)-r2+?QL&&zjDZA^M1p8*8D5q|f~36+ z3tK(S9>R>oq9j)@5`hvC5gRmok)g4InZj&!?#;XRg2;{Uf4KK>$1Xqr{r+>l^PThe zH`dqWWbeo(qMX`ejwT`#n37oyt{nphPZd+T6^)#^_c-rLH2!D zv+7<`#kY7P4295Q`Cufgvia#%_v;2xdokPQRzJObXOo6!zCd9{8p$w#A4q3EVAgj#6ca$5u>i#+r4^IFey+eP zS6UZJY#QfRDm(t3`?vI44-*v}QhNay8bXp9qSUgn^_0{8OzyyV)D;{pqim`-i~_n-IR`OC+Y&xqaYNv5o*#3R5O!SNE+%eI&E+R=5V%n!7o2+3l*XlO06 TY%432cB#MAR@Xbms+^u*kXIZt literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2048-2732.png b/assets/icons/apple-splash-2048-2732.png new file mode 100644 index 0000000000000000000000000000000000000000..75dcd5f3ae0de1f09db1e13167367bab02147c34 GIT binary patch literal 28653 zcmeHQTS!z<6y4*DIt*iuM)tD2NMIjf(+he@qfI_~*n=VoD$9>P>|qFDBjv5JD3SUI zD#_>tTBPPrnjh)tM+(sc0+UFbFdRawDI~LLn$Ef2Gx;sbT$*)0?%5yrUJm=Lz4qGs z9%e3X%gu^0%`p*COis3a2a%DPraEI3n>GzhuVj<1ct=(SHM~sxL?ls;J$+|M_0YTY zIN3_B#wCF(7orwe<4TK$<0EIh9&CBLhCRZEy#L1j=rNPXV-}VrUsy8fg=v^2EXgG- z((yGY!)O(jP1XrB03lNCO4~NCSd2 zfHYu{0BHbez`NMW2UQu8O*L2oju58NA}pIMEWDBkzGSQf5FvU9v;n?k znE{D{6)eb*P#cg2ykOCiG}!5FYGUeHISare6c`0YwT4mPQpuett2D-)z$I|0c;NrT zWy#I?L_gaG{j1VCwzqvf|@mp}SMeOuX}ugw4Z%-%s?5+#fV)eNMAR;5Ep zPs_b{Sch@CYopCP?*q7xU*jTx*=UBZVx_tJz7m;B@Wj!_QAZuUgmqJI!egDeZ zl*&E+Q9ac?^Ci_iA9>Wbj=KAU{arM$(7Z#Xduab{Kv1{%L-1}v{_D3HS<35> zc2uv@gxv~1G7mt>3LJr{!PF`iKq(?9G^b=OmdzPQ3$hDu^A+Z7$h9|Q88ZlKg>nz zrIU=npn5X|VW5&+P*#x3La>tZ)c%wxINsS8{CKA{qCOM z^RP>Y%1h&7(qf1xu57>2LKNLZq^XG32uIHOY@37+Rg0yxggn0V1)@wUGw!WuyY~52 zu8PYf&cGEVK4Z^s?SGgUl{8_0`b#`7xVew4mzzKOI@d|>6T^j9u=r*sYZ zzW(b?PPgy4ez0SdJz*Vk+J;B01v-SQ1&WxSd*7+y|4Fpyb@JPpG@2lm9w_QO7IEsr%<1(@Z#c9%m<F*5F^O>V9+^g zECa)6AOO?CXdsLR!f2T=S}-z<)(*gIFd7J>fdDBDM^nORN*GNEqkRX4(GC zjH6=`gSX#&8Z>%z;Pag0c2$R>Uw@ObeYiOCJWoS*rF_BC$p6wi*%=rL{P&HHB{2-z z0kuh~Ux2ysLFKi#rd5aDS{Sb@lKcIF6DaiI_&M3jZal1kBB3h625inIe9k6p&K_M? zGQWAvd~@ECBhK{dRR-=)qxo}mTnm_7Mgw6q5WpcYni3$vFgn&v@075~mmg^5wa<61 ze_;W~LES|D(WxnhK|4Qpa~ZIC$ng4Re{mJlhvw(|mZ^hcZG(dR=+q*^pq*cZWU{!; z^3T7pJmCHN^!7(sc8hz$JUX*6fP?xj)lK&q7(_ckYXL@Q>_?X^0L#+RK%ikDKuSUe zhJA03TiQ0(KiRqdC9vOoz^P_*z0BZEcqfk+$Irj43~FeAKt;UW0x$ze4B9GpbOF|A zNd``&L#sHCe|u{q$k_)J>R&s)(d}z+g%^wog77AO1PgrHPYf}XII46s1V%$(Gz3ON uU^E0qLtr!nMnhmU1V%$(Gz5lH2&kTaWp?WBA`8%@6oaR$pUXO@geCwPQ<%H} literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2224-1668.png b/assets/icons/apple-splash-2224-1668.png new file mode 100644 index 0000000000000000000000000000000000000000..24d1b32565d5304d4d697dec113b95a8840c87cb GIT binary patch literal 18647 zcmeI4T}V@57{{M&>NZn~l~J;CK_-$H3ojgIm@;vSXo-lH;JgSz2?CMa2sUM9yT}SE zEYb@FTUdVNS5e|Y0&gS}{GgN2AVN(?N|<$F^q%u>vzsAAQpx|^>|vZU&iU>4JntvR zeJVdYIx;qrh@x{W=0YM(H&KL36T!Y&D5$y5J`~l3*_qV&TE9SKpd52XQSE~z@t8s| zkYE(jbrVk4p|(+7c+4By_z&qi`7jqB2!z7${*pj!K`5gD2W|v7fCE7SNB{}A1KQ6sb`%kk8iY-+7GwI)ByOqp-E zUS=7;=gm0WcTsy&$7Ub-fe;+%cO{5jW$>ELy}Mx_DO#(U-rau2ce%JvOi`x|ip@jf z`hfVIhD&{oD)KsPb>V*HoVT3_84GaWLWJNj=}{92NwQbs*R~epROOtC#y(t9rp-B2 zL>A<=tVfo6Jy7#j)r3KQZ&Y4=&DH#Ncw5(Ey z;siRNv*l_iCTwkiy#VMgpwB3^PbfSnJbzY#U;5b`t@@>)lp~^(xdWDuKy}@HSVvV|bUawv;>RnCs zako<49lOS=%AZK>yCL4H;HHHN`=^*{^Gl;_xaMtlym(vHXqSss`78Ba|CLmzL@2QU z2W|v7fCG|&I{*&<5{I)V6$6O$otaXj=c- z&eY+@_(v6%LnIX2zh5o?;do5$Jve{^a-KT?4&ZlH$7a4OLnAKdQPtqYE)O0-D=B$ry>;%EjvZY5r_=^x`*W7vR ztpPUay#R2S2#L&!7a#xvZ^K{$On?dK=FwL5bz}O&Qx7IR%)2I8mXnol?##5-{{%j{ B)3E>m literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2266-1488.png b/assets/icons/apple-splash-2266-1488.png new file mode 100644 index 0000000000000000000000000000000000000000..fa7ff4ee0aa9e55aa9a7317dc916cb5b4dcdc0ff GIT binary patch literal 16890 zcmeAS@N?(olHy`uVBq!ia0y~y;JC%Wz3 z#WAE}&YN3~ybT5n2M!qipWMNwV!-ZQ-}1!Ik@ZW}yRUpeJz(%4qfQpaW~fit!U*Lw z9LQjXi8o#Z*#rhmi+N#87B^`alcUEB#uSjqg)tQjfX;*fhf#w^g8~u)qp4yvgFy4b zXjw5@Y(kU5Xbm!2nL?AoXuD#xi3Lpxqpi)+hBq`RjP^lByJL`~FxoR6?W98sh0$S! z(GeDCQW%ND3JIHw+0FZy0!3V_9hr_ebR2Q)IO4#ycV1*{q{n{4=Pn;YHl2=(5f$J- zj5r7&5{v?(7;!)v>$`wxax6qNM4b@blNLm$6}!P3eE5Np@@{+H?=LO=vCj={A1eFX zeO_MmDxLM-qm|zuO@2RZ`8>-#2PeN5V_!CxhU~2)G$ZW|Ey)+H&dz8;T{)Gh`8$YZ@`xhfSV?z5EYj4}xGX8M7Ug_fx z3Xg`s(R48a)5Wxxzy(eprh^m1gYy-i=2pN;ihT{@^c^M{dWGw#i$_w9c`$vhwHBiQ zSA#-F0;93SMHx4fX2C6o>NNZd)DE&nKvocP5F8C0O*A7Z(Lnq<%u_{zoGsX&Kh~$- zb@OkyKKHm?6%(*p5$Gp0G(MUchFxYjSR(h^v@StVEFz@4!(6tD6 z-ri~iMR0>c{cBM+jXr2(Gb9MWTOXrLNT7^{!)Q1Rk$hom@$ee(jDR_ya{)#(GC0`| cw%p6HVyVS8-nm;rhdD5Ky85}Sb4q9e02N#AfB*mh literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2360-1640.png b/assets/icons/apple-splash-2360-1640.png new file mode 100644 index 0000000000000000000000000000000000000000..74192f744471ed19a0b948dc4128faac759c707c GIT binary patch literal 19371 zcmeHPT}V@582+|&Ytvy^5JkmqN-qpj!&YidS#F|jWfGZThKU)0f{A9$PTGatGzot) zGzGzKLP|>wMUEh7W#=-`C?--Vn>uiW1ZL-K-`94l6n5;{&E6e2=j^=i^Zq=~_i^r@ zwwiU?-C9D3F5P0vB1B^#M0ItmN<1>uXgDW+Dax|Usia%jGe?M?q?=N*D_h-Du?k*K z_~)^!7SooU_kmL1u~vAm@u@eKbbWpSRFggc>%Vn6inoFUA9@i>Em**Um4a|PT2v`{P{iBMZ86i{-}EGQJvLor%VC}85kAWES? zFhYY_P%MCOfrnBkfSyCOpiqFY0AYbbVST~^=V(hjc6pnsBl^dTQgGG@({+MV+t!gk z@;Jj#RHH6Ft8JEUkfRLbTt?7jn(9a`-$R93FgGk2V7Ul|L zlWfuQA+Ab%3eRx)N3*SRqI_RxRMNGs-j+Al+vAgS5Kv005Hr{C_qXMTSpf$+)ItJ6o~SJa*rHQ{azp>{I| zqou9489yuZicWOeU44!x{7yktT_%A}@+;qdGiWgoy^LW^#=T6wUHCuy=c5X@IHUXb z0!X-9YXd>HB3u0)z!U~nOLIXFvLD#cv=K7J!A`Xpip4>p!0X?i#pPm#-`J3B3e78c zh9{mnS5lhIm-0U+{uwobi%6^}t<@9LnL`H-8+8qqy$u#!Lr2BTqu+`I?%rAn)VWi?qIRbyeF zdIM|kScj%ikTIFU3OXxpU`$|43=3dPU`!MXJ$ds}FC?4S-*FYYqaTF)o`CW*0y9=0 z4*MJipHSS$2@rYFM0`m=*eU6~00^KA1Bjp@XoSeA5y zG)Q_d%53%!UQyC8d=VK82_b6O91dJDFtC4j-re=0CPFQ~`|$6-m;0t zIPIO9#QecTt|)pYdy_G}efCrpyTgBIzq*7iS^Bj`iEuVluuj-+JiJ-hrf(<~wxq+w zKm*($L<*#UAdCblfD{m<08&7Z0)iAk3J6jFDPZj~8U$1Ykb=J}1r3i{diGIFc zFFN2cq64lEvdc3>yF3CH1C1bV+^aM*uDO$JH**br6V7)AwpKX8X>xcr!rQi>AmUD! zA=@DLu0?SXENt#*M|l6+v9o5rl5t-K$wEDCp(w=@q$Ok`VZ4~tEB;vkf5Sp3*HNyA ze7O$YgYGS*duyn57stbiEawAd6LIl-(ekaJr=4JSo90YBb!f8HksWGf=T2p(T4^7R zEzq1B-`6?S{=-wU_?)0eEJ+7BiAg-?s!FZ5%we4Eq(hg+kL2|o+zvl72qtuh!K7Ip zjZqJaH}5s)8-szS@)oZ5yqIfg<3q4!xB;d&Tz!;PD64);M9XUmEb z{}{S5m;I$Lw{WT&XWF2q$)9Ih#0e9vm~P551H&d hfSxZv1wgTKC`y|4rzBWDs-F68$vKj*@6If*{RQ%iImG|~ literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2436-1125.png b/assets/icons/apple-splash-2436-1125.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b6f87215d890a45f561fd0949edcf8701bdd8e GIT binary patch literal 13640 zcmeAS@N?(olHy`uVBq!ia0y~y;A~-FU`gd*1Bx)m1&RSF#^NA%Cx&(BWL`2bC@^@s zIEGZrd2{Dr?jZ*T*MlmH7_UDNif#8U;nh>zsaU+FWy|d2KCJQF-4-@)zgNE59}hGE z0{&FnFJ^~v7(U1~8NfIV9F7t&wnK{o4~(tgBmi;;7zikGFvHj#0xgU%whPB07?VMX zB@xaR95tSSVKi`n>0vbG00Ut(TY*Z3(LwP_pX1@FCQ=Yl3xN&#dE^nZ!8a4gV;R1%iHkKj>9t%2fwernkbsOE+W>tr} zXP#qw5d7oq({(fd+5h;*G#Ycj#0vz2HRd+uEmrqAeY4;=C z!B&Qk*o3*!7u;|Rf4y%Rq|Q2U{S&n-Er!wgEKs7SWHt^KO}`8M{2N+I<1Y(?Ol)AZ z8*RxCy7u6ydWsFOBbiDF}`*5V7Zc`{)9s(II|NQWzcL2L{4m8{((wy1oOOW34BEnynH~@@xCo zTQqSZI)MpJh?Ryj1Q4qW)mjkc#i;VpkZBlA1fz*yG!Zb2CW6sKFq#M$MiaqkA{b2s d48uMVDBUnHebAYA(;U=u^mO%eS?83{1OV`$3F80& literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2532-1170.png b/assets/icons/apple-splash-2532-1170.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ca512a0fabc881e1ab01a2fd4a59c854c078f6 GIT binary patch literal 14600 zcmeAS@N?(olHy`uVBq!ia0y~y;C#Zsz%q%04JdL;ujV+AVk{1FcVbv~PUa;8g93x6 zi(^Q|oHut4avpLJa0nEY-oWO)rEkg%si3BLt~Ngt*(=vKB~IqFtoc^+=Jsb6pneGW z^JG&MjLpFCgT2WH&g0mgb~JZaG1ajV>2*1V$pD* zd#?40UI~sx8Y?{15_sA&WZE)#+9u3tN|=9X^K31ac;&NiS28k;j@i+<&ds?D%G?R5 zzYG2RBj%Ye`f%s^7x1WS!}Ohm;uNTnv_vqffq{W=Rv8VY(NF?Tn_w$NN0Y{A(ilw| z4CFUM@MWOJT<{Fznm0SwzvKie1h#o+7buSO*8dP45<6gK3yQ(8ZSv2*u>268_j}en z5TD_Lk@)Bk*8mT3eZRbOD+7bXHqcrCaHJ477kB#$Nb!%YpcqX!k@f#SET0~bE*j0I zqy27hQUVc!z27}L&oV?Sm0=fgkRp|V;oq^kIhTch2%N9=^#^942G!BN{}Aea{iu5P zy1ELnR&I~=plstjSRQLF1}dK=p5)th&OIs!VuQc|2c$`cMx;?EW~6GJ%?UB8$kT$T z?Ibu5Ly`sph_+pV0%CY_)B;FA1If`Kf(ONDDuM^aXhwqt#b{9h3yIO9Vzk16q=kmj zIvJKJMq3rIkYE^Xc)^2Wv~3CtiqWD177`4jMFl)4MvDq~P>dE8u%H;CMTG*3l$llK SiEv|(KRjLiT-G@yGywo*1N8|2 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2556-1179.png b/assets/icons/apple-splash-2556-1179.png new file mode 100644 index 0000000000000000000000000000000000000000..44a462f07bc14bc2fc2e6ca4c24abf548a97cedb GIT binary patch literal 14863 zcmeAS@N?(olHy`uVBq!ia0y~y;QYhDz%rYI4JdLl;*BtnVk{1FcVbv~PUa;8g93x6 zi(^Q|oHut4<{mZ>U~p6|U|x4nbr;{%6;dHipUnPv$T3x9p9v{g;L_C3y8m4A|C>M) zAfVymzHojRhk@ab?+11`kFm)f&gKyK!wBOzG(13PVPdI=i8BZ&{9uN08W;}B!`KWg z9RJ{K1&2{9Mgxk0VKhYn^Ym!GU>GexfTj6pNjq9!Fffc(tiZ<1X!BsS9R+MGjy4ZQ zn+Kpi!)Wthw0Qtb2BXb`(dGfDI2dgnFrYRM8g9P=4a__Uz9WDBs`4Jo{@Sk``fBSg zx?J8T9h3RU(xC9XZ;bkmQ%7t;13RK|qa!p!xMi{ZDrkJ|z;X*vEa$)LfBs4^&L>8h z;oot|bD_)b`foe?pBGq8w2KoMZfl4yd$+(WNuguW0;QP^h7yYkB^DX-w6r+#1#a1U zKDzZmHeYd77SO6899F}-OMSr178pGY^OEe(z2wY4Fa2@;wOU_)kPt(KCZXsDsTz&h z(e^bc9gMcGN88uHWH8#k9&KNPii6?azP_;x)C@ilyyo|;c_9BXFxbrC9-YA)S`!dC zmqE?o2b$j=&zZ*{pL+ND7Zy-VHcT&iIC3YZzfaqx!oVQ87qk`t6dFJcX4-UqR_F+d`@1w1EP!1n$y^prufyscv);n}CfuZ61cKPRDSmctRW$lTP zT%Urn7Z42LI<#i(?_cxe;LG+H{+w&2WI^BjvbPPOc9z41|JUDgl(aJ+LM-s(;Xt&Z z4HOVd1rIbJE%qDLFd9muNdvLIb~HbX=7-VzFq$90?FGj_OeF1mhe9OXn%TGcbWve519GbyqvcMR0DXr`njxgN@xNAfN3 z#WAE}&YL@qyiA4y4uJ|14$MLqHwuLx_F`Zzc(7^i{5{JPE~QoddinLn_V27f?GVt= zbNdw|jKje2qn|+p&Qow>0672x1e6&Nx;g|Km|zkNM>rf1CM2;efJ-nKG6ldn4HAqR zaE?RIs5PU3Hk#5#^9{U67%gl@i_X#dX0-MkZE`Gtmx-edsL@vEXd8O8<1yNe8tr?I z_M}ILAK(px(ZQ6VKLS-8Zwrb~gX52XM%f+;KfZ6R+{5K7)6MQav2NY$Q)j>I-HRv2 z&BnfW1A(d@#MD8Gzz2uV$zHMIa19iho4~;9;leI-v7uG!hws0R-(|a|H3?4=W3v_q znLG3YXtdtPS?`}Q1E-yc8_d`K%6(D}N&@eT7)OWL zM#d1^?JuARPmujx=;wdp%~dPq>jksL;o0K+hwRfZ;k{b`^i;Bev8e_41c_+dGk3Px8L zVXqfP3xeTR5I}1-`LcHl*c=oZ8WTJW8rW18F?VKIa3(a~-bdSPle`vHnG`i_#bf*%$VKBPyYIL*O=q&H(Ebr(n?_itd zwRwAskrP->H!S$S{hnt?t@Ikzf*1-I4KY|kVqh3e gFz|Lz16A`2r@E`zDW{3=7lO?9boFyt=akR{0EzNJ00000 literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2732-2048.png b/assets/icons/apple-splash-2732-2048.png new file mode 100644 index 0000000000000000000000000000000000000000..6d325da141e93fba0e7959687c6e32d2b0bfee56 GIT binary patch literal 26953 zcmeHQT}V?=96!@Cr(2mc8Tqvck?NrY3u{f&W_}>9Mv3*1SE2`zSz=nu$oY|whzS>9^ReMArkjBUHw!d%i}+f4=Cw7yqn@l*@ne^LLBEBPxwY!3lfvL0Yw6U00Sln@BkQq2Mhu502l}~fG0u=0uhjn z@Wf?%qWtjF5el2I7QkaCtJO~`^ES~h;Ha|Ml&bzto8^9%yk}v)cfvIvT&=5d>!#cj z1My>}P8VIs@atA|fyn!H3CR{?01UtbCWrt$h#d~5FL?gGqG)(~^MSM}`{pCMv>Ia2 zU3ObfyK26q5i*@thQIYn(uPA3nbz=-L4*22vpSg*$#%bJ>(V;fES6+X zq}*Hg$g{(4|9;S7XHoS`*{w)N|3^L_tQ41j1Mi7)-x3#fCHAm(2FYy|R1^W&8Al-!!vp z)p<5P*Kge@m*7_`nIrv{xD|^1R@NCC{4PRQ(C^pd+vT4bI1E4o)1Vue&7#>70_#NH zAU#oXpn&pSW(8FzYG_P6Fpa|86EkVwd7HJ`emGyGNTUB9Fvb2Oz&CF|V`asZ;>%*o7Gn=-h%-3 z#WAE}&YN3?f(-@?2Mz@NpW4Bua$#rr&BPz!0*pK7Rqtg6>VX1_GwYFf5Bhty!DJX1 z1V%ZdVE{}Hqv>EY3_zvAXgU}TgVA&V3W3pdFd7EnWH4GLj^+h$LKv+ZN6W;~GI6v_ zgoMCoUKq^_qj_P#^TL6&=X`l8tcx@_;tCj~4Fs(X1f>fS-)UT(F8g-R+J^#LW#9#9^&(-^r!|Ln8 z?d@l5`(?}nRQ9L-P6jt3ZX8EB3?nBD5@*YSqW;6TJJ-Lo^nZIiXWoa4ub#6Xxb>&s z;AFWNP-=se`7I`R@^BCs<&4xYxUq~Kln(a1J#K0HaJ8lVGTZN_wv6DUQP(P+3t@q{ z3LK-H(J&ZI2cvlbTsVxD2cu;oI3Wy^GI4tFy<*r}07wEKjbB3Xn{yew65`&x-?QdH z!z^zLymQFVpoGj(809n!>oC~h%MVHf6}S6~tC&8pBND~_L%qmrWLic!0wX63w!H*( zAr9Q%F8}-s%LDmszpS6_T>p|2TwK&}j`l(sKpoEm{MO|GObQ|ljv@z{(hL?^_GGll zJDxvuXa9q0PO}3Wz@Y^qM$Q<b8R6Z^P?}zopr0H3$V4gdfE literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-2796-1290.png b/assets/icons/apple-splash-2796-1290.png new file mode 100644 index 0000000000000000000000000000000000000000..e906f5e324f8ef8943d0b0a47db4fab149682d06 GIT binary patch literal 17412 zcmeAS@N?(olHy`uVBq!ia0y~y;CjQrz{3 z#WAE}&YN3|yayB*4j3HxueyklbAMOslT1;c1J7=rw+8Bff`%izWMOO|U7vP?70zv# zkSGr4FgUfvA~+n9WsGp1LdvKnaA1rE1T;;I2E=GUFpQQF&_pmA5TgMxT75#(z-T~> z1_Z-s%MzLhMgw9rAQ(nl%g{tH8W5uaG1_f_rh(Cb7~BEzAo)38o-)fK4URaE1__Rd z790~LJPwA>4|5Cq-5e@<@ba1j%PpWGIxyhiL>@3xK^ZVhKptglLLOxs)kK@nyI^Ds zGWfx|(%Z|`Yf9!G|I*SwudXit!Q?a~Kp4>LEBSEQ4NC{F^(0oDBgCERL+)GY)n0r4xNESKgL!*=rj&a08{{?BStR zjf|F4G$^Ms_MLkyXNzcQF#J0;nk*nGZKyS~M)L;^^2d;Fc#o!t(G&qs1EWn`SWt{M zaiJkG8W5uaG2}**V7YiWjgV2r05Ym#n1Qnz)$^#zAt8_*!0>$ZQ(1Ai>G}VDZVKgy-Lt)q?1`!@v zK?VlqWuS8bz&-;J!^U@`K4KWH1VM>lcvR~mzvi23MaXhBfV|}C>gTe~DWM4f+S+H^ literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-640-1136.png b/assets/icons/apple-splash-640-1136.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8208d9a18f8aa37048edc74032e9fb8a988450 GIT binary patch literal 5494 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sU@72W1Bz7jKLwHujKx9jP7LeL$-HD>5H;|0 zaSW-L^Y%t#=A8f$*Mk--7_Tl63T^ia;ng~rd4Q#9|KB~9#;i5(4!tX?$Uk4Z_dgSZ z!sG8>fadI*&cMRZA=tpcV8|rEpy0;9#BhYefuTWyk%K`%nSqfZiA90Ip=VUlXb_C1 zg3*jHS{95Jhod#ZFs>9g`|>ZywLiD?z3um{U-n-89Txq!@~6!G^nb1Q^(V*Bs6B9V z8T*BAcdlRh{_SzhuY0d*KiGf#{X^z|xK9xyZ5k(Ov*jFa*Uh;s{O{HB_rG7x`#ozO z!vS_$d2h6Jg{6TxBe#kn_k69dKSP6zIE@;d+g>tmd3)T_wo(7fo$Fs%80;P}(WX^< z#>}?i`X>43Us&Q!yn27SINtj{^9oue-XYsY2j)741KGFwi>nTKSHH`yVoKDbQNLr4 z?f0*CwoD8S?;q1B#z(sYquqhg?!ahwV6;0h+8r3i-GN~_0{DkO8@`> literal 0 HcmV?d00001 diff --git a/assets/icons/apple-splash-750-1334.png b/assets/icons/apple-splash-750-1334.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ae50458736d90a8ac0082dae5bd5653f009d65 GIT binary patch literal 7083 zcmeAS@N?(olHy`uVBq!ia0y~yV0y>Ez-q?91{67U-55kM76-XIF|0c$^OAujV(AW->kot;=s)6SNwUe=6vnuCu}0^%cc)9`*8gW< zXo!FN{|zGp!-3~5)(i|R9OVoQ90EXl1QhNtGAKCgU}kV=C}3x3V0g#}wC<2B&=sQ! zM}ucHQH*AV(UM}cd>pM6Mk~$Hrow0giPC0a!c1F+cU$s)Z`i*6v&6S=C+;rp{Sz}I z`OEi<`JL-O*&p6qP&g2cP_VN~<{sa${d%rE$XN%@e~g}c_`m-7Lr3Y{6h2^7&2T64 z?zfx5`Be{B<&-VYq?uzN=DJTN-^LFYneG{8p#d~^_Ubm(;;+WMnq&uG~*TK0^V eJ$TEW4{RqI%$p1|p_(ZOtT!7v-o;XNSZiVIR+{ec)b3a$5&1H&d3eg=jKsuc_j4LS#z85mMHN0p9- zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#_BFx5D@vmfz|xK4tlR$Fe!b zuPf7Le%<+T-ygS?ALE+m7akrIo$uV$><5DHKAu%{u5M27xtU*W4pe{EtBC){{~-O& z;21u*{fhBJ$nU~+^F9P^eXhCl_|_^W2AgTpV!Z literal 0 HcmV?d00001 diff --git a/assets/icons/manifest-icon-192.maskable.png b/assets/icons/manifest-icon-192.maskable.png new file mode 100644 index 0000000000000000000000000000000000000000..f7735bce248c912588326cf1a2ae3c5fe9ecbe81 GIT binary patch literal 721 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcaljKx9jP7LeL$-HD>VCwdCaSW-L z^Y-q+%) + +

Hey there !

diff --git a/database.php b/database.php index bd1fcbd..9d794f9 100644 --- a/database.php +++ b/database.php @@ -10,6 +10,15 @@ function db_execute($sql, $variables=[]) { } +function db_execute_all($sql, $variables=[]) { + global $pdo; + + $stmt = $pdo->prepare($sql); + $stmt->execute($variables); + return $stmt->fetchAll(); + +} + function db_query($sql) { global $pdo; diff --git a/head.php b/head.php index 2d5c655..37e681a 100644 --- a/head.php +++ b/head.php @@ -1,13 +1,55 @@ - - - + -<?php if (isset($doc_title)) { echo $doc_title." | "; } ?>ByeCorps ID + - + - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/image_grabber.php b/image_grabber.php new file mode 100644 index 0000000..ed82256 --- /dev/null +++ b/image_grabber.php @@ -0,0 +1,17 @@ + ["admin_accounts.php"], "/admin/list/apps" => ["admin_apps.php"], "/admin/create/app" => ["admin_apps_create.php"], + "/admin/signinas" => ["signinas.php"], "/admin/purge" => ["admin_purge.php"], - "/account" => ["account.php", "Your account"], + // Settings + "/dashboard" => ["dashboard.php", "Dashboard", true], + + "/account" => ["account.php", "Your account", true], "/signin" => ["signin.php", "Sign in"], "/signup" => ["signup.php", "Sign up"], - "/signout" => ["signout.php", "Signed out"], + "/signout" => ["signout.php", "Signed out". false, true], "/forgot/password" => ["forgot_password.php", "Forgot password"], - "/admin/signinas" => ["signinas.php"], "/reset/password" => ["reset_password.php", "Reset password"], "/docs" => ["docs.php", "Docs"], "/credits" => ["credits.php", "Credits"], @@ -139,6 +142,10 @@ if (!empty($uri) ) { // Go to jail. Go directly to jail. Do not pass Go. include("api_handler.php"); exit(); // fuck this shit i'm out } + if ($uri[0] == "public" && $uri[1] == "avatars") { + include("image_grabber.php"); + exit(); + } } if (isset($paths[$path])) { @@ -146,6 +153,11 @@ if (isset($paths[$path])) { if (isset($paths[$path][1])) { $doc_title = $paths[$path][1]; } + if (array_key_exists(3, $paths[$path])) { + if ($paths[$path][3]) { + goto skip_formalities; + } + } } else { @@ -167,8 +179,7 @@ if ($include == "login_external_basic.php") {
- + include($include); + ?>
- \ No newline at end of file + diff --git a/login_external_basic.php b/login_external_basic.php index 9169211..5b3d55b 100644 --- a/login_external_basic.php +++ b/login_external_basic.php @@ -96,9 +96,14 @@ login:
-

Sign into

+
+ <?= htmlspecialchars($user['display_name']) ?>'s avatar + × + <?= htmlspecialchars($user['title']) ?>'s avatar +
+

Sign into

Owned by

-

+ $badges); + } +} ?>
Avatar
-
+
@@ -48,6 +52,23 @@ if ($_SESSION['id'] != $profile['id']) {

Badges

+ This profile has no badges :(

'; + } else { + foreach ($badges as $badge) { + echo "
+". htmlspecialchars($badge[ +
+" . htmlspecialchars($badge['title']) . " +

". htmlspecialchars($badge['description']) ."

+

". htmlspecialchars($badge['description']) ."

+

Earned " . $badge['earned'] . "

+
+
"; + } + } + ?>
@@ -58,6 +79,10 @@ if ($_SESSION['id'] != $profile['id']) { Joined + + Badges earned + +
diff --git a/signin.php b/signin.php index a1904f5..88f8619 100644 --- a/signin.php +++ b/signin.php @@ -29,11 +29,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // print_r($_POST); // echo(is_string($_POST['keep_logged_in'])); - if ($_POST['keep_logged_in'] == "on") { - $token = generate_cookie_access_token($user['id']); + if (array_key_exists('keep_logged_in', $_POST)) { + if ($_POST['keep_logged_in'] == "on") { + $token = generate_cookie_access_token($user['id']); // print_r($token); - setcookie("keep_me_logged_in", $token['access']); + setcookie("keep_me_logged_in", $token['access']); + } } + // if (isset($query['callback'])) { header("Location: ".$query['callback']); @@ -57,14 +60,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { echo "
$message
"; }?> - - + +

- Forgot password? • New? Register for a ByeCorps ID. + Forgot password? • New? Sign up for a ByeCorps ID.

-
\ No newline at end of file +
diff --git a/signup.php b/signup.php index 13fc42e..612426a 100644 --- a/signup.php +++ b/signup.php @@ -55,7 +55,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {

Sign up for ByeCorps ID

- - + +
\ No newline at end of file diff --git a/styles/design.css b/styles/design.css index c6748d9..0d5d2d8 100644 --- a/styles/design.css +++ b/styles/design.css @@ -15,9 +15,9 @@ button, .button { cursor: pointer; } -header a { - text-decoration: none; -} +/*header a {*/ +/* text-decoration: underline;*/ +/*}*/ /* inputs */ @@ -72,6 +72,23 @@ table > tbody > tr > td { padding: .5em; } +#connection_img { + display: flex; + gap: 1rem; + + justify-content: center; +} + +#connection_img img { + height:7.5rem; + border-radius: 50%; +} + +#connection_img .sep { + font-size: 4rem; + align-self: center; +} + @media screen and (prefers-color-scheme: dark) { table { background-color: var(--grey-9); diff --git a/styles/global.css b/styles/global.css index c689015..adf6fc5 100644 --- a/styles/global.css +++ b/styles/global.css @@ -9,10 +9,10 @@ } body::after { - content: "Development: Subject To Change"; + content: "BETA"; position: fixed; - top: 4.5rem; - right: -1rem; + top: 5rem; + right: 1rem; text-align: right; font-size: 2.5rem; diff --git a/styles/profiles.css b/styles/profiles.css index 147c159..01c8d67 100644 --- a/styles/profiles.css +++ b/styles/profiles.css @@ -32,6 +32,36 @@ grid-template-columns: 3fr 1fr; } +#badges { + display: grid; + grid-template-columns: repeat(auto-fit, 1fr); + gap: 0.5rem; +} + +#badges .badge { + display: flex; + align-items: center; + + gap: 1rem; +} + +.badge .details { + display: flex; + flex-direction: column; +} + +.badge img { + height: 7.5em; + width: 7.5em; + object-fit: contain; + border-radius: 1em; +} + +.badge .details .title { + font-size: 1.5rem; + font-weight: 700; +} + @media screen and (prefers-color-scheme: dark) { #profile { background: var(--grey-9); diff --git a/styles/types.css b/styles/types.css index 10cea60..2fec09e 100644 --- a/styles/types.css +++ b/styles/types.css @@ -1,7 +1,7 @@ /* This file deals with font types and font families. */ @import url(https://fonts.bunny.net/css?family=montserrat:400,400i,600,600i,700,700i,900,900i); -@import url(https://fonts.bunny.net/css2?family=courier+prime:wght@400;700&display=swap); /* for BCIDs */ +@import url(https://fonts.bunny.net/css2?family=Space+Mono:wght@400;700&display=swap); /* for BCIDs */ @import url(/fontawesome/css/all.css); @@ -39,10 +39,10 @@ h2.subheading + h1 { } .bcid { - font-family: 'Courier Prime', monospace; + font-family: 'Space Mono', monospace; } -p.subtitle { +.subtitle { font-size: 0.9rem; margin: 0; opacity: 0.8; @@ -59,3 +59,28 @@ p.subtitle { .icon-false::before { content: "\f00d"; } + +.space-mono-regular { + font-family: "Space Mono", monospace; + font-weight: 400; + font-style: normal; +} + +.space-mono-regular-italic { + font-family: "Space Mono", monospace; + font-weight: 400; + font-style: italic; +} + +.space-mono-bold { + font-family: "Space Mono", monospace; + font-weight: 700; + font-style: normal; +} + +.space-mono-bold-italic { + font-family: "Space Mono", monospace; + font-weight: 700; + font-style: italic; +} +