From f5e29189f70c5c8532916504a1a22f8c586f6e73 Mon Sep 17 00:00:00 2001 From: navewindre Date: Tue, 11 Nov 2025 08:11:24 +0100 Subject: new web --- web/BlackWhiteResult.php | 21 - web/ColorResult.php | 20 - web/Processor.php | 103 ---- web/Result.php | 31 -- web/icons/css.png | Bin 6250 -> 0 bytes web/imgs/good1.jpg | Bin 424444 -> 0 bytes web/imgs/good2.jpg | Bin 131635 -> 0 bytes web/imgs/good3.png | Bin 1067796 -> 0 bytes web/imgs/good4.jpg | Bin 163927 -> 0 bytes web/imgs/good5.png | Bin 101000 -> 0 bytes web/imgs/good6.jpg | Bin 25231 -> 0 bytes web/imgs/good7.jpg | Bin 454225 -> 0 bytes web/imgs/good8.jpg | Bin 131065 -> 0 bytes web/index.php | 180 ------ web/minecraft.php | 300 ---------- web/package.json | 32 ++ web/src/api.tsx | 39 ++ web/src/ascii-art.tsx | 148 +++++ web/src/blog.tsx | 10 + web/src/components.tsx | 259 +++++++++ web/src/header.tsx | 10 + web/src/home.tsx | 24 + web/src/index-page.tsx | 14 + web/src/index.html | 31 ++ web/src/jsx.tsx | 267 +++++++++ web/src/pkg.tsx | 164 ++++++ web/src/sidebar.tsx | 126 +++++ web/src/tsconfig.json | 121 ++++ web/src/user.tsx | 6 + web/src/util.tsx | 42 ++ web/static/fonts/LICENSE.TXT | 428 +++++++++++++++ web/static/fonts/README.NFO | 45 ++ web/static/fonts/README.TXT | 46 ++ web/static/fonts/Web437_ACM_VGA_8x14.woff | Bin 0 -> 9836 bytes web/static/fonts/Web437_ACM_VGA_8x16.woff | Bin 0 -> 9996 bytes web/static/fonts/Web437_ACM_VGA_8x8.woff | Bin 0 -> 9184 bytes web/static/fonts/Web437_ACM_VGA_9x14.woff | Bin 0 -> 9856 bytes web/static/fonts/Web437_ACM_VGA_9x16.woff | Bin 0 -> 10008 bytes web/static/fonts/Web437_ACM_VGA_9x8.woff | Bin 0 -> 9216 bytes web/static/fonts/Web437_AMI_EGA_8x14.woff | Bin 0 -> 9596 bytes web/static/fonts/Web437_AMI_EGA_8x8-2y.woff | Bin 0 -> 9184 bytes web/static/fonts/Web437_AMI_EGA_8x8.woff | Bin 0 -> 8884 bytes web/static/fonts/Web437_AMI_EGA_9x14.woff | Bin 0 -> 9604 bytes web/static/fonts/Web437_AST_PremiumExec.woff | Bin 0 -> 9996 bytes web/static/fonts/Web437_ATI_8x14.woff | Bin 0 -> 9664 bytes web/static/fonts/Web437_ATI_8x16.woff | Bin 0 -> 9848 bytes web/static/fonts/Web437_ATI_8x8-2y.woff | Bin 0 -> 9208 bytes web/static/fonts/Web437_ATI_8x8.woff | Bin 0 -> 8896 bytes web/static/fonts/Web437_ATI_9x14.woff | Bin 0 -> 9696 bytes web/static/fonts/Web437_ATI_9x16.woff | Bin 0 -> 9892 bytes web/static/fonts/Web437_ATI_9x8.woff | Bin 0 -> 8924 bytes web/static/fonts/Web437_ATI_SmallW_6x8.woff | Bin 0 -> 9004 bytes web/static/fonts/Web437_ATT_PC6300-2x.woff | Bin 0 -> 10136 bytes web/static/fonts/Web437_ATT_PC6300.woff | Bin 0 -> 9940 bytes web/static/fonts/Web437_Acer710_CGA-2y.woff | Bin 0 -> 9544 bytes web/static/fonts/Web437_Acer710_CGA.woff | Bin 0 -> 9264 bytes web/static/fonts/Web437_Acer710_Mono.woff | Bin 0 -> 9876 bytes web/static/fonts/Web437_Acer_VGA_8x8-2y.woff | Bin 0 -> 9252 bytes web/static/fonts/Web437_Acer_VGA_8x8.woff | Bin 0 -> 8936 bytes web/static/fonts/Web437_Acer_VGA_9x8.woff | Bin 0 -> 8952 bytes web/static/fonts/Web437_Amstrad_PC-2y.woff | Bin 0 -> 9164 bytes web/static/fonts/Web437_Amstrad_PC.woff | Bin 0 -> 8872 bytes web/static/fonts/Web437_ApricotPortable.woff | Bin 0 -> 9376 bytes web/static/fonts/Web437_ApricotXenC.woff | Bin 0 -> 9928 bytes web/static/fonts/Web437_Apricot_200L-2y.woff | Bin 0 -> 9376 bytes web/static/fonts/Web437_Apricot_200L.woff | Bin 0 -> 9056 bytes web/static/fonts/Web437_Apricot_256L-2y.woff | Bin 0 -> 9848 bytes web/static/fonts/Web437_Apricot_256L.woff | Bin 0 -> 9612 bytes web/static/fonts/Web437_Apricot_Mono.woff | Bin 0 -> 10332 bytes web/static/fonts/Web437_CL_EagleIII_8x16.woff | Bin 0 -> 9876 bytes web/static/fonts/Web437_CL_EagleIII_9x16.woff | Bin 0 -> 9700 bytes web/static/fonts/Web437_CL_EagleII_8x16.woff | Bin 0 -> 9988 bytes web/static/fonts/Web437_CL_EagleII_9x16.woff | Bin 0 -> 9880 bytes web/static/fonts/Web437_CL_Stingray_8x16.woff | Bin 0 -> 10004 bytes web/static/fonts/Web437_CL_Stingray_8x16_bold.woff | Bin 0 -> 9608 bytes web/static/fonts/Web437_CL_Stingray_8x19.woff | Bin 0 -> 10056 bytes web/static/fonts/Web437_CL_Stingray_8x19_bold.woff | Bin 0 -> 9620 bytes web/static/fonts/Web437_CompaqThin_8x14.woff | Bin 0 -> 10400 bytes web/static/fonts/Web437_CompaqThin_8x16.woff | Bin 0 -> 10696 bytes web/static/fonts/Web437_CompaqThin_8x8.woff | Bin 0 -> 9480 bytes web/static/fonts/Web437_Compaq_Port3-2x.woff | Bin 0 -> 10132 bytes web/static/fonts/Web437_Compaq_Port3.woff | Bin 0 -> 9884 bytes web/static/fonts/Web437_Compis.woff | Bin 0 -> 10092 bytes web/static/fonts/Web437_Copam_BIOS-2y.woff | Bin 0 -> 9328 bytes web/static/fonts/Web437_Copam_BIOS.woff | Bin 0 -> 9020 bytes web/static/fonts/Web437_Cordata_PPC-21.woff | Bin 0 -> 11356 bytes web/static/fonts/Web437_Cordata_PPC-400.woff | Bin 0 -> 12148 bytes web/static/fonts/Web437_DG_One-2y.woff | Bin 0 -> 9220 bytes web/static/fonts/Web437_DG_One-2y_bold.woff | Bin 0 -> 9164 bytes web/static/fonts/Web437_DG_One.woff | Bin 0 -> 8888 bytes web/static/fonts/Web437_DG_One_bold.woff | Bin 0 -> 8772 bytes web/static/fonts/Web437_DOS-V_TWN16.woff | Bin 0 -> 10016 bytes web/static/fonts/Web437_DOS-V_TWN19.woff | Bin 0 -> 10068 bytes web/static/fonts/Web437_DOS-V_re_ANK16.woff | Bin 0 -> 11200 bytes web/static/fonts/Web437_DOS-V_re_ANK19.woff | Bin 0 -> 11212 bytes web/static/fonts/Web437_DOS-V_re_ANK24.woff | Bin 0 -> 12792 bytes web/static/fonts/Web437_DOS-V_re_ANK30.woff | Bin 0 -> 13028 bytes web/static/fonts/Web437_DOS-V_re_JPN12.woff | Bin 0 -> 9516 bytes web/static/fonts/Web437_DOS-V_re_JPN16.woff | Bin 0 -> 11432 bytes web/static/fonts/Web437_DOS-V_re_JPN19.woff | Bin 0 -> 11528 bytes web/static/fonts/Web437_DOS-V_re_JPN24.woff | Bin 0 -> 13016 bytes web/static/fonts/Web437_DOS-V_re_JPN30.woff | Bin 0 -> 13248 bytes web/static/fonts/Web437_DOS-V_re_PRC16.woff | Bin 0 -> 11372 bytes web/static/fonts/Web437_DOS-V_re_PRC19.woff | Bin 0 -> 11412 bytes web/static/fonts/Web437_DTK_BIOS-2y.woff | Bin 0 -> 9480 bytes web/static/fonts/Web437_DTK_BIOS.woff | Bin 0 -> 9080 bytes web/static/fonts/Web437_EagleSpCGA_Alt1-2y.woff | Bin 0 -> 9168 bytes web/static/fonts/Web437_EagleSpCGA_Alt1.woff | Bin 0 -> 8840 bytes web/static/fonts/Web437_EagleSpCGA_Alt2-2y.woff | Bin 0 -> 9076 bytes web/static/fonts/Web437_EagleSpCGA_Alt2.woff | Bin 0 -> 8812 bytes web/static/fonts/Web437_EagleSpCGA_Alt3-2y.woff | Bin 0 -> 9584 bytes web/static/fonts/Web437_EagleSpCGA_Alt3.woff | Bin 0 -> 9304 bytes web/static/fonts/Web437_EpsonMGA-2y.woff | Bin 0 -> 9196 bytes web/static/fonts/Web437_EpsonMGA.woff | Bin 0 -> 8908 bytes web/static/fonts/Web437_EpsonMGA_Alt-2y.woff | Bin 0 -> 9680 bytes web/static/fonts/Web437_EpsonMGA_Alt.woff | Bin 0 -> 9392 bytes web/static/fonts/Web437_EpsonMGA_Mono.woff | Bin 0 -> 9720 bytes web/static/fonts/Web437_EuroPC_CGA-2y.woff | Bin 0 -> 9208 bytes web/static/fonts/Web437_EuroPC_CGA.woff | Bin 0 -> 8936 bytes web/static/fonts/Web437_EuroPC_Mono.woff | Bin 0 -> 9908 bytes web/static/fonts/Web437_EverexME_5x8.woff | Bin 0 -> 8376 bytes web/static/fonts/Web437_EverexME_7x8.woff | Bin 0 -> 9048 bytes web/static/fonts/Web437_EverexME_8x16.woff | Bin 0 -> 9828 bytes web/static/fonts/Web437_FMTowns_re_8x16-2x.woff | Bin 0 -> 11304 bytes web/static/fonts/Web437_FMTowns_re_8x16.woff | Bin 0 -> 11052 bytes web/static/fonts/Web437_FMTowns_re_8x8.woff | Bin 0 -> 9432 bytes web/static/fonts/Web437_HP_100LX_10x11.woff | Bin 0 -> 10116 bytes web/static/fonts/Web437_HP_100LX_16x12.woff | Bin 0 -> 11196 bytes web/static/fonts/Web437_HP_100LX_6x8-2x.woff | Bin 0 -> 9020 bytes web/static/fonts/Web437_HP_100LX_6x8.woff | Bin 0 -> 8800 bytes web/static/fonts/Web437_HP_100LX_8x8-2x.woff | Bin 0 -> 9588 bytes web/static/fonts/Web437_HP_100LX_8x8.woff | Bin 0 -> 9264 bytes web/static/fonts/Web437_HP_150_re.woff | Bin 0 -> 10860 bytes web/static/fonts/Web437_IBM_3270pc.woff | Bin 0 -> 9768 bytes web/static/fonts/Web437_IBM_BIOS-2x.woff | Bin 0 -> 9100 bytes web/static/fonts/Web437_IBM_BIOS-2y.woff | Bin 0 -> 9220 bytes web/static/fonts/Web437_IBM_BIOS.woff | Bin 0 -> 8832 bytes web/static/fonts/Web437_IBM_CGA-2y.woff | Bin 0 -> 9212 bytes web/static/fonts/Web437_IBM_CGA.woff | Bin 0 -> 8808 bytes web/static/fonts/Web437_IBM_CGAthin-2y.woff | Bin 0 -> 10028 bytes web/static/fonts/Web437_IBM_CGAthin.woff | Bin 0 -> 9484 bytes web/static/fonts/Web437_IBM_Conv-2x.woff | Bin 0 -> 9720 bytes web/static/fonts/Web437_IBM_Conv-2y.woff | Bin 0 -> 9768 bytes web/static/fonts/Web437_IBM_Conv.woff | Bin 0 -> 9348 bytes web/static/fonts/Web437_IBM_DOS_ISO8-2x.woff | Bin 0 -> 10512 bytes web/static/fonts/Web437_IBM_DOS_ISO8.woff | Bin 0 -> 10288 bytes web/static/fonts/Web437_IBM_DOS_ISO9-2x.woff | Bin 0 -> 10528 bytes web/static/fonts/Web437_IBM_DOS_ISO9.woff | Bin 0 -> 10288 bytes web/static/fonts/Web437_IBM_EGA_8x14-2x.woff | Bin 0 -> 9980 bytes web/static/fonts/Web437_IBM_EGA_8x14.woff | Bin 0 -> 9688 bytes web/static/fonts/Web437_IBM_EGA_8x8-2x.woff | Bin 0 -> 9116 bytes web/static/fonts/Web437_IBM_EGA_8x8.woff | Bin 0 -> 8844 bytes web/static/fonts/Web437_IBM_EGA_9x14-2x.woff | Bin 0 -> 10044 bytes web/static/fonts/Web437_IBM_EGA_9x14.woff | Bin 0 -> 9732 bytes web/static/fonts/Web437_IBM_EGA_9x8-2x.woff | Bin 0 -> 9152 bytes web/static/fonts/Web437_IBM_EGA_9x8.woff | Bin 0 -> 8860 bytes web/static/fonts/Web437_IBM_MDA.woff | Bin 0 -> 9864 bytes web/static/fonts/Web437_IBM_Model30r0-2x.woff | Bin 0 -> 10100 bytes web/static/fonts/Web437_IBM_Model30r0.woff | Bin 0 -> 9844 bytes web/static/fonts/Web437_IBM_Model3x_Alt1.woff | Bin 0 -> 10884 bytes web/static/fonts/Web437_IBM_Model3x_Alt2.woff | Bin 0 -> 10484 bytes web/static/fonts/Web437_IBM_Model3x_Alt3.woff | Bin 0 -> 10612 bytes web/static/fonts/Web437_IBM_Model3x_Alt4.woff | Bin 0 -> 10404 bytes web/static/fonts/Web437_IBM_PGC-2x.woff | Bin 0 -> 10012 bytes web/static/fonts/Web437_IBM_PGC.woff | Bin 0 -> 9760 bytes web/static/fonts/Web437_IBM_PS-55_re.woff | Bin 0 -> 13312 bytes web/static/fonts/Web437_IBM_VGA_8x14-2x.woff | Bin 0 -> 9976 bytes web/static/fonts/Web437_IBM_VGA_8x14.woff | Bin 0 -> 9684 bytes web/static/fonts/Web437_IBM_VGA_8x16-2x.woff | Bin 0 -> 10060 bytes web/static/fonts/Web437_IBM_VGA_8x16.woff | Bin 0 -> 9788 bytes web/static/fonts/Web437_IBM_VGA_9x14-2x.woff | Bin 0 -> 10040 bytes web/static/fonts/Web437_IBM_VGA_9x14.woff | Bin 0 -> 9732 bytes web/static/fonts/Web437_IBM_VGA_9x16-2x.woff | Bin 0 -> 10112 bytes web/static/fonts/Web437_IBM_VGA_9x16.woff | Bin 0 -> 9804 bytes web/static/fonts/Web437_IBM_VGA_9x8-2x.woff | Bin 0 -> 9152 bytes web/static/fonts/Web437_IBM_VGA_9x8.woff | Bin 0 -> 8860 bytes web/static/fonts/Web437_IBM_XGA-AI_12x20.woff | Bin 0 -> 12884 bytes web/static/fonts/Web437_IBM_XGA-AI_12x23.woff | Bin 0 -> 11308 bytes web/static/fonts/Web437_IBM_XGA-AI_7x15.woff | Bin 0 -> 9968 bytes web/static/fonts/Web437_IGS_VGA_8x16.woff | Bin 0 -> 9904 bytes web/static/fonts/Web437_IGS_VGA_9x16.woff | Bin 0 -> 9960 bytes web/static/fonts/Web437_ITT_Xtra-2y.woff | Bin 0 -> 9064 bytes web/static/fonts/Web437_ITT_Xtra.woff | Bin 0 -> 8808 bytes web/static/fonts/Web437_Kaypro2K_G-2y.woff | Bin 0 -> 9884 bytes web/static/fonts/Web437_Kaypro2K_G.woff | Bin 0 -> 9392 bytes web/static/fonts/Web437_LE_Model_D_CGA-2y.woff | Bin 0 -> 9488 bytes web/static/fonts/Web437_LE_Model_D_CGA.woff | Bin 0 -> 9248 bytes web/static/fonts/Web437_LE_Model_D_Mono.woff | Bin 0 -> 9972 bytes web/static/fonts/Web437_MBytePC230_8x16.woff | Bin 0 -> 10220 bytes web/static/fonts/Web437_MBytePC230_CGA-2y.woff | Bin 0 -> 9428 bytes web/static/fonts/Web437_MBytePC230_CGA.woff | Bin 0 -> 9164 bytes web/static/fonts/Web437_MBytePC230_EGA.woff | Bin 0 -> 10120 bytes web/static/fonts/Web437_MBytePC230_Mono.woff | Bin 0 -> 10144 bytes web/static/fonts/Web437_Master_512-2y.woff | Bin 0 -> 9192 bytes web/static/fonts/Web437_Master_512-2y_bold.woff | Bin 0 -> 8476 bytes web/static/fonts/Web437_Master_512-M7.woff | Bin 0 -> 9192 bytes web/static/fonts/Web437_Master_512-M7_bold.woff | Bin 0 -> 8480 bytes web/static/fonts/Web437_Master_512.woff | Bin 0 -> 8916 bytes web/static/fonts/Web437_Master_512_bold.woff | Bin 0 -> 8236 bytes web/static/fonts/Web437_Mindset-2x.woff | Bin 0 -> 9484 bytes web/static/fonts/Web437_Mindset-2y.woff | Bin 0 -> 9452 bytes web/static/fonts/Web437_Mindset.woff | Bin 0 -> 9136 bytes web/static/fonts/Web437_NEC_APC3_8x16-2x.woff | Bin 0 -> 11240 bytes web/static/fonts/Web437_NEC_APC3_8x16.woff | Bin 0 -> 10988 bytes web/static/fonts/Web437_NEC_APC3_8x8-2y.woff | Bin 0 -> 9268 bytes web/static/fonts/Web437_NEC_APC3_8x8.woff | Bin 0 -> 8956 bytes web/static/fonts/Web437_NEC_MultiSpeed-2x.woff | Bin 0 -> 9784 bytes .../fonts/Web437_NEC_MultiSpeed-2x_bold.woff | Bin 0 -> 9396 bytes web/static/fonts/Web437_NEC_MultiSpeed.woff | Bin 0 -> 9480 bytes web/static/fonts/Web437_NEC_MultiSpeed_bold.woff | Bin 0 -> 9044 bytes web/static/fonts/Web437_Nix8810_M15.woff | Bin 0 -> 9976 bytes web/static/fonts/Web437_Nix8810_M16.woff | Bin 0 -> 10148 bytes web/static/fonts/Web437_Nix8810_M35-2y.woff | Bin 0 -> 9280 bytes web/static/fonts/Web437_Nix8810_M35.woff | Bin 0 -> 9000 bytes web/static/fonts/Web437_OlivettiThin_8x14.woff | Bin 0 -> 9932 bytes web/static/fonts/Web437_OlivettiThin_8x16.woff | Bin 0 -> 9992 bytes web/static/fonts/Web437_OlivettiThin_9x14.woff | Bin 0 -> 9988 bytes web/static/fonts/Web437_OlivettiThin_9x16.woff | Bin 0 -> 10112 bytes web/static/fonts/Web437_Olivetti_M15-2y.woff | Bin 0 -> 9176 bytes web/static/fonts/Web437_Olivetti_M15.woff | Bin 0 -> 8948 bytes web/static/fonts/Web437_Paradise132_7x16.woff | Bin 0 -> 10020 bytes web/static/fonts/Web437_Paradise132_7x9.woff | Bin 0 -> 8996 bytes web/static/fonts/Web437_Philips_YES_G-2x.woff | Bin 0 -> 9880 bytes web/static/fonts/Web437_Philips_YES_G-2y.woff | Bin 0 -> 9888 bytes web/static/fonts/Web437_Philips_YES_G.woff | Bin 0 -> 9600 bytes web/static/fonts/Web437_Philips_YES_T-2y.woff | Bin 0 -> 9836 bytes web/static/fonts/Web437_Philips_YES_T.woff | Bin 0 -> 9548 bytes web/static/fonts/Web437_PhoenixEGA_8x14.woff | Bin 0 -> 9668 bytes web/static/fonts/Web437_PhoenixEGA_8x16.woff | Bin 0 -> 9816 bytes web/static/fonts/Web437_PhoenixEGA_8x8-2y.woff | Bin 0 -> 9084 bytes web/static/fonts/Web437_PhoenixEGA_8x8.woff | Bin 0 -> 8844 bytes web/static/fonts/Web437_PhoenixEGA_9x14.woff | Bin 0 -> 9720 bytes web/static/fonts/Web437_PhoenixVGA_8x14.woff | Bin 0 -> 9680 bytes web/static/fonts/Web437_PhoenixVGA_8x16.woff | Bin 0 -> 9756 bytes web/static/fonts/Web437_PhoenixVGA_8x8.woff | Bin 0 -> 8856 bytes web/static/fonts/Web437_PhoenixVGA_9x14.woff | Bin 0 -> 9688 bytes web/static/fonts/Web437_PhoenixVGA_9x16.woff | Bin 0 -> 9764 bytes web/static/fonts/Web437_PhoenixVGA_9x8.woff | Bin 0 -> 8888 bytes web/static/fonts/Web437_Phoenix_BIOS-2y.woff | Bin 0 -> 9376 bytes web/static/fonts/Web437_Phoenix_BIOS.woff | Bin 0 -> 9012 bytes web/static/fonts/Web437_Portfolio_6x8.woff | Bin 0 -> 8676 bytes web/static/fonts/Web437_RM_Nimbus-2y.woff | Bin 0 -> 9180 bytes web/static/fonts/Web437_RM_Nimbus.woff | Bin 0 -> 8872 bytes web/static/fonts/Web437_Rainbow100_re_132.woff | Bin 0 -> 9128 bytes web/static/fonts/Web437_Rainbow100_re_40.woff | Bin 0 -> 8960 bytes web/static/fonts/Web437_Rainbow100_re_66.woff | Bin 0 -> 8956 bytes web/static/fonts/Web437_Rainbow100_re_80.woff | Bin 0 -> 9136 bytes web/static/fonts/Web437_Robotron_A7100.woff | Bin 0 -> 9868 bytes web/static/fonts/Web437_STB_AutoEGA_8x14.woff | Bin 0 -> 9744 bytes web/static/fonts/Web437_STB_AutoEGA_9x14.woff | Bin 0 -> 9804 bytes web/static/fonts/Web437_SanyoMBC16-2y.woff | Bin 0 -> 9616 bytes web/static/fonts/Web437_SanyoMBC16.woff | Bin 0 -> 9284 bytes web/static/fonts/Web437_SanyoMBC55x-2y.woff | Bin 0 -> 9096 bytes web/static/fonts/Web437_SanyoMBC55x.woff | Bin 0 -> 8832 bytes web/static/fonts/Web437_SanyoMBC775-2y.woff | Bin 0 -> 9252 bytes web/static/fonts/Web437_SanyoMBC775.woff | Bin 0 -> 8940 bytes web/static/fonts/Web437_SeequaCm-2y.woff | Bin 0 -> 9176 bytes web/static/fonts/Web437_SeequaCm.woff | Bin 0 -> 8884 bytes web/static/fonts/Web437_Sharp_PC3K-2x.woff | Bin 0 -> 9108 bytes web/static/fonts/Web437_Sharp_PC3K.woff | Bin 0 -> 8772 bytes web/static/fonts/Web437_Sharp_PC3K_Alt-2x.woff | Bin 0 -> 9528 bytes web/static/fonts/Web437_Sharp_PC3K_Alt.woff | Bin 0 -> 9264 bytes web/static/fonts/Web437_Siemens_PC-D.woff | Bin 0 -> 9676 bytes web/static/fonts/Web437_Sigma_RM_8x14.woff | Bin 0 -> 9836 bytes web/static/fonts/Web437_Sigma_RM_8x16.woff | Bin 0 -> 9940 bytes web/static/fonts/Web437_Sigma_RM_8x8.woff | Bin 0 -> 9088 bytes web/static/fonts/Web437_Sigma_RM_9x14.woff | Bin 0 -> 9864 bytes web/static/fonts/Web437_Sigma_RM_9x16.woff | Bin 0 -> 9984 bytes web/static/fonts/Web437_Sigma_RM_9x8.woff | Bin 0 -> 9116 bytes web/static/fonts/Web437_SperryPC_8x16.woff | Bin 0 -> 11120 bytes web/static/fonts/Web437_SperryPC_CGA-2y.woff | Bin 0 -> 9716 bytes web/static/fonts/Web437_SperryPC_CGA.woff | Bin 0 -> 9428 bytes web/static/fonts/Web437_Tandy1K-II_200L-2x.woff | Bin 0 -> 9292 bytes web/static/fonts/Web437_Tandy1K-II_200L-2y.woff | Bin 0 -> 9416 bytes web/static/fonts/Web437_Tandy1K-II_200L.woff | Bin 0 -> 8988 bytes web/static/fonts/Web437_Tandy1K-II_225L-2y.woff | Bin 0 -> 9452 bytes web/static/fonts/Web437_Tandy1K-II_225L.woff | Bin 0 -> 9016 bytes web/static/fonts/Web437_Tandy1K-II_Mono.woff | Bin 0 -> 9824 bytes web/static/fonts/Web437_Tandy1K-I_200L-2x.woff | Bin 0 -> 9404 bytes web/static/fonts/Web437_Tandy1K-I_200L-2y.woff | Bin 0 -> 9424 bytes web/static/fonts/Web437_Tandy1K-I_200L.woff | Bin 0 -> 9112 bytes web/static/fonts/Web437_Tandy1K-I_225L-2y.woff | Bin 0 -> 9432 bytes web/static/fonts/Web437_Tandy1K-I_225L.woff | Bin 0 -> 9140 bytes web/static/fonts/Web437_Tandy2K-2x.woff | Bin 0 -> 10196 bytes web/static/fonts/Web437_Tandy2K.woff | Bin 0 -> 9920 bytes web/static/fonts/Web437_Tandy2K_G-2x.woff | Bin 0 -> 10296 bytes web/static/fonts/Web437_Tandy2K_G-TV.woff | Bin 0 -> 9396 bytes web/static/fonts/Web437_Tandy2K_G.woff | Bin 0 -> 10028 bytes web/static/fonts/Web437_TelePC-2y.woff | Bin 0 -> 9824 bytes web/static/fonts/Web437_TelePC.woff | Bin 0 -> 9532 bytes web/static/fonts/Web437_Ti_Pro.woff | Bin 0 -> 10236 bytes web/static/fonts/Web437_ToshibaSat_8x14.woff | Bin 0 -> 9632 bytes web/static/fonts/Web437_ToshibaSat_8x16.woff | Bin 0 -> 9744 bytes web/static/fonts/Web437_ToshibaSat_8x8.woff | Bin 0 -> 9000 bytes web/static/fonts/Web437_ToshibaSat_9x14.woff | Bin 0 -> 9620 bytes web/static/fonts/Web437_ToshibaSat_9x16.woff | Bin 0 -> 9752 bytes web/static/fonts/Web437_ToshibaSat_9x8.woff | Bin 0 -> 9004 bytes web/static/fonts/Web437_ToshibaT300_8x16.woff | Bin 0 -> 11628 bytes web/static/fonts/Web437_ToshibaT300_8x8-2y.woff | Bin 0 -> 9684 bytes web/static/fonts/Web437_ToshibaT300_8x8.woff | Bin 0 -> 9384 bytes web/static/fonts/Web437_ToshibaTxL1_8x16.woff | Bin 0 -> 10032 bytes web/static/fonts/Web437_ToshibaTxL1_8x8.woff | Bin 0 -> 9464 bytes web/static/fonts/Web437_ToshibaTxL2_8x16.woff | Bin 0 -> 10964 bytes web/static/fonts/Web437_ToshibaTxL2_8x8.woff | Bin 0 -> 9948 bytes web/static/fonts/Web437_TridentEarly_8x11.woff | Bin 0 -> 9372 bytes web/static/fonts/Web437_TridentEarly_8x14.woff | Bin 0 -> 9748 bytes web/static/fonts/Web437_TridentEarly_8x16.woff | Bin 0 -> 9964 bytes web/static/fonts/Web437_TridentEarly_8x8.woff | Bin 0 -> 8924 bytes web/static/fonts/Web437_TridentEarly_9x14.woff | Bin 0 -> 9792 bytes web/static/fonts/Web437_TridentEarly_9x16.woff | Bin 0 -> 9980 bytes web/static/fonts/Web437_TridentEarly_9x8.woff | Bin 0 -> 8952 bytes web/static/fonts/Web437_Trident_8x11.woff | Bin 0 -> 9280 bytes web/static/fonts/Web437_Trident_8x14.woff | Bin 0 -> 9692 bytes web/static/fonts/Web437_Trident_8x16.woff | Bin 0 -> 9816 bytes web/static/fonts/Web437_Trident_8x8.woff | Bin 0 -> 8984 bytes web/static/fonts/Web437_Trident_9x14.woff | Bin 0 -> 9728 bytes web/static/fonts/Web437_Trident_9x16.woff | Bin 0 -> 9852 bytes web/static/fonts/Web437_Trident_9x8.woff | Bin 0 -> 9004 bytes web/static/fonts/Web437_TsengEVA_132_6x14.woff | Bin 0 -> 9392 bytes web/static/fonts/Web437_TsengEVA_132_6x8.woff | Bin 0 -> 8788 bytes web/static/fonts/Web437_VTech_BIOS-2y.woff | Bin 0 -> 9916 bytes web/static/fonts/Web437_VTech_BIOS.woff | Bin 0 -> 9380 bytes web/static/fonts/Web437_Verite_8x14.woff | Bin 0 -> 9848 bytes web/static/fonts/Web437_Verite_8x16.woff | Bin 0 -> 9940 bytes web/static/fonts/Web437_Verite_8x8-2y.woff | Bin 0 -> 9344 bytes web/static/fonts/Web437_Verite_8x8.woff | Bin 0 -> 9060 bytes web/static/fonts/Web437_Verite_9x14.woff | Bin 0 -> 9848 bytes web/static/fonts/Web437_Verite_9x16.woff | Bin 0 -> 9940 bytes web/static/fonts/Web437_Verite_9x8.woff | Bin 0 -> 9088 bytes web/static/fonts/Web437_Wang_Pro_Color-2y.woff | Bin 0 -> 9164 bytes web/static/fonts/Web437_Wang_Pro_Color.woff | Bin 0 -> 8920 bytes web/static/fonts/Web437_Wang_Pro_Mono.woff | Bin 0 -> 9824 bytes web/static/fonts/Web437_Wyse700a-2y.woff | Bin 0 -> 11208 bytes web/static/fonts/Web437_Wyse700a.woff | Bin 0 -> 10920 bytes web/static/fonts/Web437_Wyse700b-2y.woff | Bin 0 -> 11192 bytes web/static/fonts/Web437_Wyse700b.woff | Bin 0 -> 10888 bytes web/static/fonts/Web437_Zenith_Z-100.woff | Bin 0 -> 9792 bytes web/static/fonts/Web437_Zenith_Z-100_Alt.woff | Bin 0 -> 9288 bytes web/static/fonts/WebPlus_AST_PremiumExec.woff | Bin 0 -> 22996 bytes web/static/fonts/WebPlus_Amstrad_PC-2y.woff | Bin 0 -> 20984 bytes web/static/fonts/WebPlus_Amstrad_PC.woff | Bin 0 -> 20484 bytes web/static/fonts/WebPlus_Cordata_PPC-21.woff | Bin 0 -> 27860 bytes web/static/fonts/WebPlus_Cordata_PPC-400.woff | Bin 0 -> 30876 bytes web/static/fonts/WebPlus_HP_100LX_10x11.woff | Bin 0 -> 23168 bytes web/static/fonts/WebPlus_HP_100LX_16x12.woff | Bin 0 -> 26132 bytes web/static/fonts/WebPlus_HP_100LX_6x8-2x.woff | Bin 0 -> 20668 bytes web/static/fonts/WebPlus_HP_100LX_6x8.woff | Bin 0 -> 20192 bytes web/static/fonts/WebPlus_HP_100LX_8x8-2x.woff | Bin 0 -> 22424 bytes web/static/fonts/WebPlus_HP_100LX_8x8.woff | Bin 0 -> 21300 bytes web/static/fonts/WebPlus_HP_150_re.woff | Bin 0 -> 26088 bytes web/static/fonts/WebPlus_IBM_BIOS-2x.woff | Bin 0 -> 21984 bytes web/static/fonts/WebPlus_IBM_BIOS-2y.woff | Bin 0 -> 21836 bytes web/static/fonts/WebPlus_IBM_BIOS.woff | Bin 0 -> 21260 bytes web/static/fonts/WebPlus_IBM_CGA-2y.woff | Bin 0 -> 20892 bytes web/static/fonts/WebPlus_IBM_CGA.woff | Bin 0 -> 20288 bytes web/static/fonts/WebPlus_IBM_CGAthin-2y.woff | Bin 0 -> 23472 bytes web/static/fonts/WebPlus_IBM_CGAthin.woff | Bin 0 -> 22860 bytes web/static/fonts/WebPlus_IBM_EGA_8x14-2x.woff | Bin 0 -> 23340 bytes web/static/fonts/WebPlus_IBM_EGA_8x14.woff | Bin 0 -> 22572 bytes web/static/fonts/WebPlus_IBM_EGA_8x8-2x.woff | Bin 0 -> 21996 bytes web/static/fonts/WebPlus_IBM_EGA_8x8.woff | Bin 0 -> 21276 bytes web/static/fonts/WebPlus_IBM_EGA_9x14-2x.woff | Bin 0 -> 23424 bytes web/static/fonts/WebPlus_IBM_EGA_9x14.woff | Bin 0 -> 22708 bytes web/static/fonts/WebPlus_IBM_EGA_9x8-2x.woff | Bin 0 -> 22032 bytes web/static/fonts/WebPlus_IBM_EGA_9x8.woff | Bin 0 -> 21316 bytes web/static/fonts/WebPlus_IBM_MDA.woff | Bin 0 -> 23316 bytes web/static/fonts/WebPlus_IBM_VGA_8x14-2x.woff | Bin 0 -> 23340 bytes web/static/fonts/WebPlus_IBM_VGA_8x14.woff | Bin 0 -> 22572 bytes web/static/fonts/WebPlus_IBM_VGA_8x16-2x.woff | Bin 0 -> 23280 bytes web/static/fonts/WebPlus_IBM_VGA_8x16.woff | Bin 0 -> 22584 bytes web/static/fonts/WebPlus_IBM_VGA_9x14-2x.woff | Bin 0 -> 23424 bytes web/static/fonts/WebPlus_IBM_VGA_9x14.woff | Bin 0 -> 22708 bytes web/static/fonts/WebPlus_IBM_VGA_9x16-2x.woff | Bin 0 -> 23444 bytes web/static/fonts/WebPlus_IBM_VGA_9x16.woff | Bin 0 -> 22712 bytes web/static/fonts/WebPlus_IBM_VGA_9x8-2x.woff | Bin 0 -> 22032 bytes web/static/fonts/WebPlus_IBM_VGA_9x8.woff | Bin 0 -> 21312 bytes web/static/fonts/WebPlus_IBM_XGA-AI_12x20.woff | Bin 0 -> 31516 bytes web/static/fonts/WebPlus_Rainbow100_re_132.woff | Bin 0 -> 21236 bytes web/static/fonts/WebPlus_Rainbow100_re_40.woff | Bin 0 -> 20868 bytes web/static/fonts/WebPlus_Rainbow100_re_66.woff | Bin 0 -> 20880 bytes web/static/fonts/WebPlus_Rainbow100_re_80.woff | Bin 0 -> 21236 bytes web/static/fonts/WebPlus_Tandy1K-II_200L-2x.woff | Bin 0 -> 22324 bytes web/static/fonts/WebPlus_Tandy1K-II_200L-2y.woff | Bin 0 -> 22196 bytes web/static/fonts/WebPlus_Tandy1K-II_200L.woff | Bin 0 -> 21532 bytes web/static/fonts/WebPlus_Tandy1K-II_225L-2y.woff | Bin 0 -> 22256 bytes web/static/fonts/WebPlus_Tandy1K-II_225L.woff | Bin 0 -> 21596 bytes web/static/fonts/WebPlus_ToshibaSat_8x14.woff | Bin 0 -> 21904 bytes web/static/fonts/WebPlus_ToshibaSat_8x16.woff | Bin 0 -> 22164 bytes web/static/fonts/WebPlus_ToshibaSat_8x8.woff | Bin 0 -> 20708 bytes web/static/fonts/WebPlus_ToshibaSat_9x14.woff | Bin 0 -> 21908 bytes web/static/fonts/WebPlus_ToshibaSat_9x16.woff | Bin 0 -> 22172 bytes web/static/fonts/WebPlus_ToshibaSat_9x8.woff | Bin 0 -> 21048 bytes web/static/fonts/WebPlus_ToshibaTxL1_8x16.woff | Bin 0 -> 24320 bytes web/static/fonts/WebPlus_ToshibaTxL2_8x16.woff | Bin 0 -> 27420 bytes web/static/highlight.css | 7 + web/static/main.css | 607 +++++++++++++++++++++ web/static/networkheaven.png | Bin 0 -> 900513 bytes web/static/nh.ico | Bin 0 -> 106046 bytes web/static/nh.jpg | Bin 0 -> 10349 bytes web/static/nh.png | Bin 0 -> 49370 bytes web/static/prompts.json | 104 ++++ web/static_elements/f.html | 2 - web/static_elements/h.html | 9 - web/static_elements/networkheaven.png | Bin 900513 -> 0 bytes web/static_elements/px437_12.ttf | Bin 25960 -> 0 bytes web/static_elements/px437_16.ttf | Bin 32376 -> 0 bytes web/style.css | 73 --- web/tsconfig.json | 120 ++++ web/types/custom.d.ts | 8 + web/webpack-dev.config.cjs | 45 ++ web/webpack-prod.config.cjs | 48 ++ 411 files changed, 2751 insertions(+), 739 deletions(-) delete mode 100644 web/BlackWhiteResult.php delete mode 100644 web/ColorResult.php delete mode 100644 web/Processor.php delete mode 100644 web/Result.php delete mode 100644 web/icons/css.png delete mode 100644 web/imgs/good1.jpg delete mode 100644 web/imgs/good2.jpg delete mode 100644 web/imgs/good3.png delete mode 100644 web/imgs/good4.jpg delete mode 100644 web/imgs/good5.png delete mode 100644 web/imgs/good6.jpg delete mode 100644 web/imgs/good7.jpg delete mode 100644 web/imgs/good8.jpg delete mode 100644 web/index.php delete mode 100644 web/minecraft.php create mode 100644 web/package.json create mode 100644 web/src/api.tsx create mode 100644 web/src/ascii-art.tsx create mode 100644 web/src/blog.tsx create mode 100644 web/src/components.tsx create mode 100644 web/src/header.tsx create mode 100644 web/src/home.tsx create mode 100644 web/src/index-page.tsx create mode 100644 web/src/index.html create mode 100644 web/src/jsx.tsx create mode 100644 web/src/pkg.tsx create mode 100644 web/src/sidebar.tsx create mode 100644 web/src/tsconfig.json create mode 100644 web/src/user.tsx create mode 100644 web/src/util.tsx create mode 100644 web/static/fonts/LICENSE.TXT create mode 100644 web/static/fonts/README.NFO create mode 100644 web/static/fonts/README.TXT create mode 100644 web/static/fonts/Web437_ACM_VGA_8x14.woff create mode 100644 web/static/fonts/Web437_ACM_VGA_8x16.woff create mode 100644 web/static/fonts/Web437_ACM_VGA_8x8.woff create mode 100644 web/static/fonts/Web437_ACM_VGA_9x14.woff create mode 100644 web/static/fonts/Web437_ACM_VGA_9x16.woff create mode 100644 web/static/fonts/Web437_ACM_VGA_9x8.woff create mode 100644 web/static/fonts/Web437_AMI_EGA_8x14.woff create mode 100644 web/static/fonts/Web437_AMI_EGA_8x8-2y.woff create mode 100644 web/static/fonts/Web437_AMI_EGA_8x8.woff create mode 100644 web/static/fonts/Web437_AMI_EGA_9x14.woff create mode 100644 web/static/fonts/Web437_AST_PremiumExec.woff create mode 100644 web/static/fonts/Web437_ATI_8x14.woff create mode 100644 web/static/fonts/Web437_ATI_8x16.woff create mode 100644 web/static/fonts/Web437_ATI_8x8-2y.woff create mode 100644 web/static/fonts/Web437_ATI_8x8.woff create mode 100644 web/static/fonts/Web437_ATI_9x14.woff create mode 100644 web/static/fonts/Web437_ATI_9x16.woff create mode 100644 web/static/fonts/Web437_ATI_9x8.woff create mode 100644 web/static/fonts/Web437_ATI_SmallW_6x8.woff create mode 100644 web/static/fonts/Web437_ATT_PC6300-2x.woff create mode 100644 web/static/fonts/Web437_ATT_PC6300.woff create mode 100644 web/static/fonts/Web437_Acer710_CGA-2y.woff create mode 100644 web/static/fonts/Web437_Acer710_CGA.woff create mode 100644 web/static/fonts/Web437_Acer710_Mono.woff create mode 100644 web/static/fonts/Web437_Acer_VGA_8x8-2y.woff create mode 100644 web/static/fonts/Web437_Acer_VGA_8x8.woff create mode 100644 web/static/fonts/Web437_Acer_VGA_9x8.woff create mode 100644 web/static/fonts/Web437_Amstrad_PC-2y.woff create mode 100644 web/static/fonts/Web437_Amstrad_PC.woff create mode 100644 web/static/fonts/Web437_ApricotPortable.woff create mode 100644 web/static/fonts/Web437_ApricotXenC.woff create mode 100644 web/static/fonts/Web437_Apricot_200L-2y.woff create mode 100644 web/static/fonts/Web437_Apricot_200L.woff create mode 100644 web/static/fonts/Web437_Apricot_256L-2y.woff create mode 100644 web/static/fonts/Web437_Apricot_256L.woff create mode 100644 web/static/fonts/Web437_Apricot_Mono.woff create mode 100644 web/static/fonts/Web437_CL_EagleIII_8x16.woff create mode 100644 web/static/fonts/Web437_CL_EagleIII_9x16.woff create mode 100644 web/static/fonts/Web437_CL_EagleII_8x16.woff create mode 100644 web/static/fonts/Web437_CL_EagleII_9x16.woff create mode 100644 web/static/fonts/Web437_CL_Stingray_8x16.woff create mode 100644 web/static/fonts/Web437_CL_Stingray_8x16_bold.woff create mode 100644 web/static/fonts/Web437_CL_Stingray_8x19.woff create mode 100644 web/static/fonts/Web437_CL_Stingray_8x19_bold.woff create mode 100644 web/static/fonts/Web437_CompaqThin_8x14.woff create mode 100644 web/static/fonts/Web437_CompaqThin_8x16.woff create mode 100644 web/static/fonts/Web437_CompaqThin_8x8.woff create mode 100644 web/static/fonts/Web437_Compaq_Port3-2x.woff create mode 100644 web/static/fonts/Web437_Compaq_Port3.woff create mode 100644 web/static/fonts/Web437_Compis.woff create mode 100644 web/static/fonts/Web437_Copam_BIOS-2y.woff create mode 100644 web/static/fonts/Web437_Copam_BIOS.woff create mode 100644 web/static/fonts/Web437_Cordata_PPC-21.woff create mode 100644 web/static/fonts/Web437_Cordata_PPC-400.woff create mode 100644 web/static/fonts/Web437_DG_One-2y.woff create mode 100644 web/static/fonts/Web437_DG_One-2y_bold.woff create mode 100644 web/static/fonts/Web437_DG_One.woff create mode 100644 web/static/fonts/Web437_DG_One_bold.woff create mode 100644 web/static/fonts/Web437_DOS-V_TWN16.woff create mode 100644 web/static/fonts/Web437_DOS-V_TWN19.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_ANK16.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_ANK19.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_ANK24.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_ANK30.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_JPN12.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_JPN16.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_JPN19.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_JPN24.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_JPN30.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_PRC16.woff create mode 100644 web/static/fonts/Web437_DOS-V_re_PRC19.woff create mode 100644 web/static/fonts/Web437_DTK_BIOS-2y.woff create mode 100644 web/static/fonts/Web437_DTK_BIOS.woff create mode 100644 web/static/fonts/Web437_EagleSpCGA_Alt1-2y.woff create mode 100644 web/static/fonts/Web437_EagleSpCGA_Alt1.woff create mode 100644 web/static/fonts/Web437_EagleSpCGA_Alt2-2y.woff create mode 100644 web/static/fonts/Web437_EagleSpCGA_Alt2.woff create mode 100644 web/static/fonts/Web437_EagleSpCGA_Alt3-2y.woff create mode 100644 web/static/fonts/Web437_EagleSpCGA_Alt3.woff create mode 100644 web/static/fonts/Web437_EpsonMGA-2y.woff create mode 100644 web/static/fonts/Web437_EpsonMGA.woff create mode 100644 web/static/fonts/Web437_EpsonMGA_Alt-2y.woff create mode 100644 web/static/fonts/Web437_EpsonMGA_Alt.woff create mode 100644 web/static/fonts/Web437_EpsonMGA_Mono.woff create mode 100644 web/static/fonts/Web437_EuroPC_CGA-2y.woff create mode 100644 web/static/fonts/Web437_EuroPC_CGA.woff create mode 100644 web/static/fonts/Web437_EuroPC_Mono.woff create mode 100644 web/static/fonts/Web437_EverexME_5x8.woff create mode 100644 web/static/fonts/Web437_EverexME_7x8.woff create mode 100644 web/static/fonts/Web437_EverexME_8x16.woff create mode 100644 web/static/fonts/Web437_FMTowns_re_8x16-2x.woff create mode 100644 web/static/fonts/Web437_FMTowns_re_8x16.woff create mode 100644 web/static/fonts/Web437_FMTowns_re_8x8.woff create mode 100644 web/static/fonts/Web437_HP_100LX_10x11.woff create mode 100644 web/static/fonts/Web437_HP_100LX_16x12.woff create mode 100644 web/static/fonts/Web437_HP_100LX_6x8-2x.woff create mode 100644 web/static/fonts/Web437_HP_100LX_6x8.woff create mode 100644 web/static/fonts/Web437_HP_100LX_8x8-2x.woff create mode 100644 web/static/fonts/Web437_HP_100LX_8x8.woff create mode 100644 web/static/fonts/Web437_HP_150_re.woff create mode 100644 web/static/fonts/Web437_IBM_3270pc.woff create mode 100644 web/static/fonts/Web437_IBM_BIOS-2x.woff create mode 100644 web/static/fonts/Web437_IBM_BIOS-2y.woff create mode 100644 web/static/fonts/Web437_IBM_BIOS.woff create mode 100644 web/static/fonts/Web437_IBM_CGA-2y.woff create mode 100644 web/static/fonts/Web437_IBM_CGA.woff create mode 100644 web/static/fonts/Web437_IBM_CGAthin-2y.woff create mode 100644 web/static/fonts/Web437_IBM_CGAthin.woff create mode 100644 web/static/fonts/Web437_IBM_Conv-2x.woff create mode 100644 web/static/fonts/Web437_IBM_Conv-2y.woff create mode 100644 web/static/fonts/Web437_IBM_Conv.woff create mode 100644 web/static/fonts/Web437_IBM_DOS_ISO8-2x.woff create mode 100644 web/static/fonts/Web437_IBM_DOS_ISO8.woff create mode 100644 web/static/fonts/Web437_IBM_DOS_ISO9-2x.woff create mode 100644 web/static/fonts/Web437_IBM_DOS_ISO9.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_8x14-2x.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_8x14.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_8x8-2x.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_8x8.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_9x14-2x.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_9x14.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_9x8-2x.woff create mode 100644 web/static/fonts/Web437_IBM_EGA_9x8.woff create mode 100644 web/static/fonts/Web437_IBM_MDA.woff create mode 100644 web/static/fonts/Web437_IBM_Model30r0-2x.woff create mode 100644 web/static/fonts/Web437_IBM_Model30r0.woff create mode 100644 web/static/fonts/Web437_IBM_Model3x_Alt1.woff create mode 100644 web/static/fonts/Web437_IBM_Model3x_Alt2.woff create mode 100644 web/static/fonts/Web437_IBM_Model3x_Alt3.woff create mode 100644 web/static/fonts/Web437_IBM_Model3x_Alt4.woff create mode 100644 web/static/fonts/Web437_IBM_PGC-2x.woff create mode 100644 web/static/fonts/Web437_IBM_PGC.woff create mode 100644 web/static/fonts/Web437_IBM_PS-55_re.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_8x14-2x.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_8x14.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_8x16-2x.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_8x16.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_9x14-2x.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_9x14.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_9x16-2x.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_9x16.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_9x8-2x.woff create mode 100644 web/static/fonts/Web437_IBM_VGA_9x8.woff create mode 100644 web/static/fonts/Web437_IBM_XGA-AI_12x20.woff create mode 100644 web/static/fonts/Web437_IBM_XGA-AI_12x23.woff create mode 100644 web/static/fonts/Web437_IBM_XGA-AI_7x15.woff create mode 100644 web/static/fonts/Web437_IGS_VGA_8x16.woff create mode 100644 web/static/fonts/Web437_IGS_VGA_9x16.woff create mode 100644 web/static/fonts/Web437_ITT_Xtra-2y.woff create mode 100644 web/static/fonts/Web437_ITT_Xtra.woff create mode 100644 web/static/fonts/Web437_Kaypro2K_G-2y.woff create mode 100644 web/static/fonts/Web437_Kaypro2K_G.woff create mode 100644 web/static/fonts/Web437_LE_Model_D_CGA-2y.woff create mode 100644 web/static/fonts/Web437_LE_Model_D_CGA.woff create mode 100644 web/static/fonts/Web437_LE_Model_D_Mono.woff create mode 100644 web/static/fonts/Web437_MBytePC230_8x16.woff create mode 100644 web/static/fonts/Web437_MBytePC230_CGA-2y.woff create mode 100644 web/static/fonts/Web437_MBytePC230_CGA.woff create mode 100644 web/static/fonts/Web437_MBytePC230_EGA.woff create mode 100644 web/static/fonts/Web437_MBytePC230_Mono.woff create mode 100644 web/static/fonts/Web437_Master_512-2y.woff create mode 100644 web/static/fonts/Web437_Master_512-2y_bold.woff create mode 100644 web/static/fonts/Web437_Master_512-M7.woff create mode 100644 web/static/fonts/Web437_Master_512-M7_bold.woff create mode 100644 web/static/fonts/Web437_Master_512.woff create mode 100644 web/static/fonts/Web437_Master_512_bold.woff create mode 100644 web/static/fonts/Web437_Mindset-2x.woff create mode 100644 web/static/fonts/Web437_Mindset-2y.woff create mode 100644 web/static/fonts/Web437_Mindset.woff create mode 100644 web/static/fonts/Web437_NEC_APC3_8x16-2x.woff create mode 100644 web/static/fonts/Web437_NEC_APC3_8x16.woff create mode 100644 web/static/fonts/Web437_NEC_APC3_8x8-2y.woff create mode 100644 web/static/fonts/Web437_NEC_APC3_8x8.woff create mode 100644 web/static/fonts/Web437_NEC_MultiSpeed-2x.woff create mode 100644 web/static/fonts/Web437_NEC_MultiSpeed-2x_bold.woff create mode 100644 web/static/fonts/Web437_NEC_MultiSpeed.woff create mode 100644 web/static/fonts/Web437_NEC_MultiSpeed_bold.woff create mode 100644 web/static/fonts/Web437_Nix8810_M15.woff create mode 100644 web/static/fonts/Web437_Nix8810_M16.woff create mode 100644 web/static/fonts/Web437_Nix8810_M35-2y.woff create mode 100644 web/static/fonts/Web437_Nix8810_M35.woff create mode 100644 web/static/fonts/Web437_OlivettiThin_8x14.woff create mode 100644 web/static/fonts/Web437_OlivettiThin_8x16.woff create mode 100644 web/static/fonts/Web437_OlivettiThin_9x14.woff create mode 100644 web/static/fonts/Web437_OlivettiThin_9x16.woff create mode 100644 web/static/fonts/Web437_Olivetti_M15-2y.woff create mode 100644 web/static/fonts/Web437_Olivetti_M15.woff create mode 100644 web/static/fonts/Web437_Paradise132_7x16.woff create mode 100644 web/static/fonts/Web437_Paradise132_7x9.woff create mode 100644 web/static/fonts/Web437_Philips_YES_G-2x.woff create mode 100644 web/static/fonts/Web437_Philips_YES_G-2y.woff create mode 100644 web/static/fonts/Web437_Philips_YES_G.woff create mode 100644 web/static/fonts/Web437_Philips_YES_T-2y.woff create mode 100644 web/static/fonts/Web437_Philips_YES_T.woff create mode 100644 web/static/fonts/Web437_PhoenixEGA_8x14.woff create mode 100644 web/static/fonts/Web437_PhoenixEGA_8x16.woff create mode 100644 web/static/fonts/Web437_PhoenixEGA_8x8-2y.woff create mode 100644 web/static/fonts/Web437_PhoenixEGA_8x8.woff create mode 100644 web/static/fonts/Web437_PhoenixEGA_9x14.woff create mode 100644 web/static/fonts/Web437_PhoenixVGA_8x14.woff create mode 100644 web/static/fonts/Web437_PhoenixVGA_8x16.woff create mode 100644 web/static/fonts/Web437_PhoenixVGA_8x8.woff create mode 100644 web/static/fonts/Web437_PhoenixVGA_9x14.woff create mode 100644 web/static/fonts/Web437_PhoenixVGA_9x16.woff create mode 100644 web/static/fonts/Web437_PhoenixVGA_9x8.woff create mode 100644 web/static/fonts/Web437_Phoenix_BIOS-2y.woff create mode 100644 web/static/fonts/Web437_Phoenix_BIOS.woff create mode 100644 web/static/fonts/Web437_Portfolio_6x8.woff create mode 100644 web/static/fonts/Web437_RM_Nimbus-2y.woff create mode 100644 web/static/fonts/Web437_RM_Nimbus.woff create mode 100644 web/static/fonts/Web437_Rainbow100_re_132.woff create mode 100644 web/static/fonts/Web437_Rainbow100_re_40.woff create mode 100644 web/static/fonts/Web437_Rainbow100_re_66.woff create mode 100644 web/static/fonts/Web437_Rainbow100_re_80.woff create mode 100644 web/static/fonts/Web437_Robotron_A7100.woff create mode 100644 web/static/fonts/Web437_STB_AutoEGA_8x14.woff create mode 100644 web/static/fonts/Web437_STB_AutoEGA_9x14.woff create mode 100644 web/static/fonts/Web437_SanyoMBC16-2y.woff create mode 100644 web/static/fonts/Web437_SanyoMBC16.woff create mode 100644 web/static/fonts/Web437_SanyoMBC55x-2y.woff create mode 100644 web/static/fonts/Web437_SanyoMBC55x.woff create mode 100644 web/static/fonts/Web437_SanyoMBC775-2y.woff create mode 100644 web/static/fonts/Web437_SanyoMBC775.woff create mode 100644 web/static/fonts/Web437_SeequaCm-2y.woff create mode 100644 web/static/fonts/Web437_SeequaCm.woff create mode 100644 web/static/fonts/Web437_Sharp_PC3K-2x.woff create mode 100644 web/static/fonts/Web437_Sharp_PC3K.woff create mode 100644 web/static/fonts/Web437_Sharp_PC3K_Alt-2x.woff create mode 100644 web/static/fonts/Web437_Sharp_PC3K_Alt.woff create mode 100644 web/static/fonts/Web437_Siemens_PC-D.woff create mode 100644 web/static/fonts/Web437_Sigma_RM_8x14.woff create mode 100644 web/static/fonts/Web437_Sigma_RM_8x16.woff create mode 100644 web/static/fonts/Web437_Sigma_RM_8x8.woff create mode 100644 web/static/fonts/Web437_Sigma_RM_9x14.woff create mode 100644 web/static/fonts/Web437_Sigma_RM_9x16.woff create mode 100644 web/static/fonts/Web437_Sigma_RM_9x8.woff create mode 100644 web/static/fonts/Web437_SperryPC_8x16.woff create mode 100644 web/static/fonts/Web437_SperryPC_CGA-2y.woff create mode 100644 web/static/fonts/Web437_SperryPC_CGA.woff create mode 100644 web/static/fonts/Web437_Tandy1K-II_200L-2x.woff create mode 100644 web/static/fonts/Web437_Tandy1K-II_200L-2y.woff create mode 100644 web/static/fonts/Web437_Tandy1K-II_200L.woff create mode 100644 web/static/fonts/Web437_Tandy1K-II_225L-2y.woff create mode 100644 web/static/fonts/Web437_Tandy1K-II_225L.woff create mode 100644 web/static/fonts/Web437_Tandy1K-II_Mono.woff create mode 100644 web/static/fonts/Web437_Tandy1K-I_200L-2x.woff create mode 100644 web/static/fonts/Web437_Tandy1K-I_200L-2y.woff create mode 100644 web/static/fonts/Web437_Tandy1K-I_200L.woff create mode 100644 web/static/fonts/Web437_Tandy1K-I_225L-2y.woff create mode 100644 web/static/fonts/Web437_Tandy1K-I_225L.woff create mode 100644 web/static/fonts/Web437_Tandy2K-2x.woff create mode 100644 web/static/fonts/Web437_Tandy2K.woff create mode 100644 web/static/fonts/Web437_Tandy2K_G-2x.woff create mode 100644 web/static/fonts/Web437_Tandy2K_G-TV.woff create mode 100644 web/static/fonts/Web437_Tandy2K_G.woff create mode 100644 web/static/fonts/Web437_TelePC-2y.woff create mode 100644 web/static/fonts/Web437_TelePC.woff create mode 100644 web/static/fonts/Web437_Ti_Pro.woff create mode 100644 web/static/fonts/Web437_ToshibaSat_8x14.woff create mode 100644 web/static/fonts/Web437_ToshibaSat_8x16.woff create mode 100644 web/static/fonts/Web437_ToshibaSat_8x8.woff create mode 100644 web/static/fonts/Web437_ToshibaSat_9x14.woff create mode 100644 web/static/fonts/Web437_ToshibaSat_9x16.woff create mode 100644 web/static/fonts/Web437_ToshibaSat_9x8.woff create mode 100644 web/static/fonts/Web437_ToshibaT300_8x16.woff create mode 100644 web/static/fonts/Web437_ToshibaT300_8x8-2y.woff create mode 100644 web/static/fonts/Web437_ToshibaT300_8x8.woff create mode 100644 web/static/fonts/Web437_ToshibaTxL1_8x16.woff create mode 100644 web/static/fonts/Web437_ToshibaTxL1_8x8.woff create mode 100644 web/static/fonts/Web437_ToshibaTxL2_8x16.woff create mode 100644 web/static/fonts/Web437_ToshibaTxL2_8x8.woff create mode 100644 web/static/fonts/Web437_TridentEarly_8x11.woff create mode 100644 web/static/fonts/Web437_TridentEarly_8x14.woff create mode 100644 web/static/fonts/Web437_TridentEarly_8x16.woff create mode 100644 web/static/fonts/Web437_TridentEarly_8x8.woff create mode 100644 web/static/fonts/Web437_TridentEarly_9x14.woff create mode 100644 web/static/fonts/Web437_TridentEarly_9x16.woff create mode 100644 web/static/fonts/Web437_TridentEarly_9x8.woff create mode 100644 web/static/fonts/Web437_Trident_8x11.woff create mode 100644 web/static/fonts/Web437_Trident_8x14.woff create mode 100644 web/static/fonts/Web437_Trident_8x16.woff create mode 100644 web/static/fonts/Web437_Trident_8x8.woff create mode 100644 web/static/fonts/Web437_Trident_9x14.woff create mode 100644 web/static/fonts/Web437_Trident_9x16.woff create mode 100644 web/static/fonts/Web437_Trident_9x8.woff create mode 100644 web/static/fonts/Web437_TsengEVA_132_6x14.woff create mode 100644 web/static/fonts/Web437_TsengEVA_132_6x8.woff create mode 100644 web/static/fonts/Web437_VTech_BIOS-2y.woff create mode 100644 web/static/fonts/Web437_VTech_BIOS.woff create mode 100644 web/static/fonts/Web437_Verite_8x14.woff create mode 100644 web/static/fonts/Web437_Verite_8x16.woff create mode 100644 web/static/fonts/Web437_Verite_8x8-2y.woff create mode 100644 web/static/fonts/Web437_Verite_8x8.woff create mode 100644 web/static/fonts/Web437_Verite_9x14.woff create mode 100644 web/static/fonts/Web437_Verite_9x16.woff create mode 100644 web/static/fonts/Web437_Verite_9x8.woff create mode 100644 web/static/fonts/Web437_Wang_Pro_Color-2y.woff create mode 100644 web/static/fonts/Web437_Wang_Pro_Color.woff create mode 100644 web/static/fonts/Web437_Wang_Pro_Mono.woff create mode 100644 web/static/fonts/Web437_Wyse700a-2y.woff create mode 100644 web/static/fonts/Web437_Wyse700a.woff create mode 100644 web/static/fonts/Web437_Wyse700b-2y.woff create mode 100644 web/static/fonts/Web437_Wyse700b.woff create mode 100644 web/static/fonts/Web437_Zenith_Z-100.woff create mode 100644 web/static/fonts/Web437_Zenith_Z-100_Alt.woff create mode 100644 web/static/fonts/WebPlus_AST_PremiumExec.woff create mode 100644 web/static/fonts/WebPlus_Amstrad_PC-2y.woff create mode 100644 web/static/fonts/WebPlus_Amstrad_PC.woff create mode 100644 web/static/fonts/WebPlus_Cordata_PPC-21.woff create mode 100644 web/static/fonts/WebPlus_Cordata_PPC-400.woff create mode 100644 web/static/fonts/WebPlus_HP_100LX_10x11.woff create mode 100644 web/static/fonts/WebPlus_HP_100LX_16x12.woff create mode 100644 web/static/fonts/WebPlus_HP_100LX_6x8-2x.woff create mode 100644 web/static/fonts/WebPlus_HP_100LX_6x8.woff create mode 100644 web/static/fonts/WebPlus_HP_100LX_8x8-2x.woff create mode 100644 web/static/fonts/WebPlus_HP_100LX_8x8.woff create mode 100644 web/static/fonts/WebPlus_HP_150_re.woff create mode 100644 web/static/fonts/WebPlus_IBM_BIOS-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_BIOS-2y.woff create mode 100644 web/static/fonts/WebPlus_IBM_BIOS.woff create mode 100644 web/static/fonts/WebPlus_IBM_CGA-2y.woff create mode 100644 web/static/fonts/WebPlus_IBM_CGA.woff create mode 100644 web/static/fonts/WebPlus_IBM_CGAthin-2y.woff create mode 100644 web/static/fonts/WebPlus_IBM_CGAthin.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_8x14-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_8x14.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_8x8-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_8x8.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_9x14-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_9x14.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_9x8-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_EGA_9x8.woff create mode 100644 web/static/fonts/WebPlus_IBM_MDA.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_8x14-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_8x14.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_8x16-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_8x16.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_9x14-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_9x14.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_9x16-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_9x16.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_9x8-2x.woff create mode 100644 web/static/fonts/WebPlus_IBM_VGA_9x8.woff create mode 100644 web/static/fonts/WebPlus_IBM_XGA-AI_12x20.woff create mode 100644 web/static/fonts/WebPlus_Rainbow100_re_132.woff create mode 100644 web/static/fonts/WebPlus_Rainbow100_re_40.woff create mode 100644 web/static/fonts/WebPlus_Rainbow100_re_66.woff create mode 100644 web/static/fonts/WebPlus_Rainbow100_re_80.woff create mode 100644 web/static/fonts/WebPlus_Tandy1K-II_200L-2x.woff create mode 100644 web/static/fonts/WebPlus_Tandy1K-II_200L-2y.woff create mode 100644 web/static/fonts/WebPlus_Tandy1K-II_200L.woff create mode 100644 web/static/fonts/WebPlus_Tandy1K-II_225L-2y.woff create mode 100644 web/static/fonts/WebPlus_Tandy1K-II_225L.woff create mode 100644 web/static/fonts/WebPlus_ToshibaSat_8x14.woff create mode 100644 web/static/fonts/WebPlus_ToshibaSat_8x16.woff create mode 100644 web/static/fonts/WebPlus_ToshibaSat_8x8.woff create mode 100644 web/static/fonts/WebPlus_ToshibaSat_9x14.woff create mode 100644 web/static/fonts/WebPlus_ToshibaSat_9x16.woff create mode 100644 web/static/fonts/WebPlus_ToshibaSat_9x8.woff create mode 100644 web/static/fonts/WebPlus_ToshibaTxL1_8x16.woff create mode 100644 web/static/fonts/WebPlus_ToshibaTxL2_8x16.woff create mode 100644 web/static/highlight.css create mode 100644 web/static/main.css create mode 100644 web/static/networkheaven.png create mode 100644 web/static/nh.ico create mode 100644 web/static/nh.jpg create mode 100644 web/static/nh.png create mode 100644 web/static/prompts.json delete mode 100644 web/static_elements/f.html delete mode 100644 web/static_elements/h.html delete mode 100644 web/static_elements/networkheaven.png delete mode 100644 web/static_elements/px437_12.ttf delete mode 100644 web/static_elements/px437_16.ttf delete mode 100644 web/style.css create mode 100644 web/tsconfig.json create mode 100644 web/types/custom.d.ts create mode 100644 web/webpack-dev.config.cjs create mode 100644 web/webpack-prod.config.cjs (limited to 'web') diff --git a/web/BlackWhiteResult.php b/web/BlackWhiteResult.php deleted file mode 100644 index f687ec6..0000000 --- a/web/BlackWhiteResult.php +++ /dev/null @@ -1,21 +0,0 @@ -symbols)-1)); - return $this->symbols[(int)min($level,strlen($this->symbols)-1)]; - } - public function transformValue($value) { - return $this->gray2ascii($value); - } -} diff --git a/web/ColorResult.php b/web/ColorResult.php deleted file mode 100644 index 549bda0..0000000 --- a/web/ColorResult.php +++ /dev/null @@ -1,20 +0,0 @@ -{$this->blockChar}"; - } -} diff --git a/web/Processor.php b/web/Processor.php deleted file mode 100644 index b1bf0bf..0000000 --- a/web/Processor.php +++ /dev/null @@ -1,103 +0,0 @@ -imgPath = $pathOrImgres; - $this->image = imagecreatefromstring(file_get_contents($pathOrImgres)); - } else { - $this->image = $pathOrImgres; - } - try { - $this->imageWidth = imagesx($this->image); - $this->imageHeight = imagesy($this->image); - } catch (\Exception $e) { - throw new \Exception("Image creation failed. Is the given resource a valid image?"); - } - } - - public function asciify($pixelWidth = 10) { - $charsX = floor($this->imageWidth / $pixelWidth); - return $this->asciifyToWidth($charsX); - } - - public function asciifyToWidth($charsX) { - $charsX = (int)$charsX; - if (!$charsX) $charsX = floor($this->imageWidth / 10); - $this->result = null; - - $blockWidth = $this->imageWidth / (float)$charsX; - $blockHeight = $blockWidth * 8.0/5.0; - $blockWidth = max(1,floor($blockWidth)); - $blockHeight = max(1,floor($blockHeight)); - - $ascii = array(); - - for ($y = 0; $y < $this->imageHeight; $y += $blockHeight) { - for ($x = 0; $x < $this->imageWidth; $x += $blockWidth) { - $value = [0,0,0]; - if ($x === 0) { - $ascii[$y / $blockHeight] = array(); - } - $counter = 0; - for ($innerY = $y; $innerY < $y + $blockHeight; $innerY++) { - if ($innerY > $this->imageHeight-1) break; - for ($innerX = $x; $innerX < $x + $blockWidth; $innerX++) { - if ($innerX > $this->imageWidth-1) break; - $counter++; - $rgb = imagecolorat($this->image,$innerX, $innerY); - $rgb = array($rgb >> 16, $rgb >> 8 & 255, $rgb & 255); - $value[0] += $rgb[0]; - $value[1] += $rgb[1]; - $value[2] += $rgb[2]; - } - } - $value[0] = $value[0] / $counter; - $value[1] = $value[1] / $counter; - $value[2] = $value[2] / $counter; - $ascii[$y / $blockHeight][$x / $blockWidth] = $value; - } - } - $this->result = $ascii; - return $this; - } - - protected function saturate($ascii) { - foreach($ascii as $y =>$line) { - foreach($line as $x => $value) { - $ascii[$y][$x] = $value[0]*1 + $value[1]*1 + $value[2]*1; - } - } - return $ascii; - } - - public function colorResult($blockChar = '#') { - $res = new ColorResult($this->result); - $res->blockChar = $blockChar; - return $res; - } - - public function result($symbols = "@%#*+=-:. ") { - $res = new BlackWhiteResult($this->saturate($this->result)); - $res->symbols = $symbols; - return $res; - } -} diff --git a/web/Result.php b/web/Result.php deleted file mode 100644 index 52e4c83..0000000 --- a/web/Result.php +++ /dev/null @@ -1,31 +0,0 @@ -ascii =& $ascii; - } - - public function writeFile($path, $lineEnding = "\n") { - $fh = fopen($path,'w'); - foreach($this->ascii as $line) { - foreach($line as $value) { - $value = $this->transformValue($value); - fputs($fh, $value); - } - fputs($fh,$lineEnding); - - } - fclose($fh); - return $this; - } -} diff --git a/web/icons/css.png b/web/icons/css.png deleted file mode 100644 index 90ccc4f..0000000 Binary files a/web/icons/css.png and /dev/null differ diff --git a/web/imgs/good1.jpg b/web/imgs/good1.jpg deleted file mode 100644 index 6a1e742..0000000 Binary files a/web/imgs/good1.jpg and /dev/null differ diff --git a/web/imgs/good2.jpg b/web/imgs/good2.jpg deleted file mode 100644 index 32347a4..0000000 Binary files a/web/imgs/good2.jpg and /dev/null differ diff --git a/web/imgs/good3.png b/web/imgs/good3.png deleted file mode 100644 index c6679a4..0000000 Binary files a/web/imgs/good3.png and /dev/null differ diff --git a/web/imgs/good4.jpg b/web/imgs/good4.jpg deleted file mode 100644 index c8b5fd9..0000000 Binary files a/web/imgs/good4.jpg and /dev/null differ diff --git a/web/imgs/good5.png b/web/imgs/good5.png deleted file mode 100644 index 2f9f7e8..0000000 Binary files a/web/imgs/good5.png and /dev/null differ diff --git a/web/imgs/good6.jpg b/web/imgs/good6.jpg deleted file mode 100644 index 68c6d45..0000000 Binary files a/web/imgs/good6.jpg and /dev/null differ diff --git a/web/imgs/good7.jpg b/web/imgs/good7.jpg deleted file mode 100644 index 01bcd28..0000000 Binary files a/web/imgs/good7.jpg and /dev/null differ diff --git a/web/imgs/good8.jpg b/web/imgs/good8.jpg deleted file mode 100644 index 5ae221c..0000000 Binary files a/web/imgs/good8.jpg and /dev/null differ diff --git a/web/index.php b/web/index.php deleted file mode 100644 index 5de9665..0000000 --- a/web/index.php +++ /dev/null @@ -1,180 +0,0 @@ - - 0){ - $server['players'] = ($server['players'] - $server['bots']); - } - - return $server; -} -function query_minecraft_server($ip = null, $port = null) { - $server['result_valid'] = false; - try { - $mq = new MinecraftQuery(); - $mq->Connect($ip, intval($port), 3, true); - $players = $mq->GetPlayers(); - if ($players == false) $server['players'] = 0; - else $server['players'] = count($players); - $info = $mq->GetInfo(); - if ($info == false) return $server; - $server['version'] = $info['Version']; - $server['software'] = $info['Software']; - $server['ip'] = "{$ip}"; - $server['port'] = "{$port}"; - $server['playersmax'] = $info['MaxPlayers']; - $server['result_valid'] = true; - } catch (MinecraftQueryException $e) { } - - - return $server; -} - -function generate_status_div($server = null, $demos = true) { - echo "
\n"; - echo "

" . $server['name'] . "

\n"; - echo "

" . $server['ip'] . ":" . $server['port'] . "

\n"; - echo $server['description'] . "\n\n"; - echo $server['map'] . "\n"; - echo "Players: " . $server['players'] . "/" . ($server['playersmax'] - 1) . "\n"; - echo "Bots: " . $server['bots'] . "\n\n"; - if( $demos == true ) - echo "CONNECT  DEMOS"; - else - echo "CONNECT"; - - echo "
"; - echo "
\n"; -} - -function generate_mc_status_div($server = null) { - - echo "
\n"; - echo "

~~~ networkheaven.net ~~~

\n"; - echo "

" . $server['ip'] . ":" . $server['port'] . "

\n"; - echo "minecraft\n\n"; - echo "Players: " . $server['players'] . "/" . ($server['playersmax']) . "\n"; - echo "Version: " . $server['version'] . "\n"; - echo "Software: " . $server['software'] . "\n\n"; - echo "
"; - echo "
\n"; -} - -function gen_ascii() { - $dirp = './imgs/'; - $imgs = scandir($dirp); - $imgn = count($imgs); - $path = $dirp . '' . $imgs[rand(2, $imgn - 1)]; - $processor = new Img2Ascii\Processor($path); - $res = $processor->asciifyToWidth(45)->result(" .:-=+*#%@"); - foreach($res->ascii as $line) { - foreach($line as $value) { - $value = $res->transformValue($value); - echo ($value); - } - - echo '
'; - } -} - -?> - - - -
-

- NETWORKHEAVEN.NET -

-
- -
- 0 ) - generate_status_div($serverdata); - $serverdata = query_source_server("107.192.200.138", "27015"); - if( $serverdata['playersmax'] > 0 ) - generate_status_div($serverdata, false); - $serverdata = query_source_server("107.192.200.138", "27016"); - if( $serverdata['playersmax'] > 0 ) - generate_status_div($serverdata, false); - $serverdata = query_minecraft_server("45.33.90.90", "25565"); - if( $serverdata['playersmax'] > 0 ) - generate_mc_status_div($serverdata); - ?> -
-
-

we want to provide an oldschool hassle-free gaming experience

-

our servers run minimal plugins developed by our own team, aiming only to smooth out vanilla gameplay

-
-		
-

we hope you enjoy your stay and have fun!


-

STEAM

-

-
- - - diff --git a/web/minecraft.php b/web/minecraft.php deleted file mode 100644 index 4f9dbc7..0000000 --- a/web/minecraft.php +++ /dev/null @@ -1,300 +0,0 @@ -ResolveSRV( $Ip, $Port ); - } - - $this->Socket = @\fsockopen( 'udp://' . $Ip, (int)$Port, $ErrNo, $ErrStr, (float)$Timeout ); - - if( $ErrNo || $this->Socket === false ) - { - throw new MinecraftQueryException( 'Could not create socket: ' . $ErrStr ); - } - - \stream_set_timeout( $this->Socket, $Timeout ); - \stream_set_blocking( $this->Socket, true ); - - try - { - $Challenge = $this->GetChallenge( ); - - $this->GetStatus( $Challenge ); - } - finally - { - \fclose( $this->Socket ); - } - } - - public function ConnectBedrock( $Ip, $Port = 19132, $Timeout = 3, $ResolveSRV = true ) - { - if( !is_int( $Timeout ) || $Timeout < 0 ) - { - throw new \InvalidArgumentException( 'Timeout must be an integer.' ); - } - - if( $ResolveSRV ) - { - $this->ResolveSRV( $Ip, $Port ); - } - - $this->Socket = @\fsockopen( 'udp://' . $Ip, (int)$Port, $ErrNo, $ErrStr, (float)$Timeout ); - - if( $ErrNo || $this->Socket === false ) - { - throw new MinecraftQueryException( 'Could not create socket: ' . $ErrStr ); - } - - \stream_set_timeout( $this->Socket, $Timeout ); - \stream_set_blocking( $this->Socket, true ); - - try - { - $this->GetBedrockStatus(); - } - finally - { - \fclose( $this->Socket ); - } - } - - public function GetInfo( ) - { - return isset( $this->Info ) ? $this->Info : false; - } - - public function GetPlayers( ) - { - return isset( $this->Players ) ? $this->Players : false; - } - - private function GetChallenge( ) - { - $Data = $this->WriteData( self :: HANDSHAKE ); - - if( $Data === false ) - { - throw new MinecraftQueryException( 'Failed to receive challenge.' ); - } - - return \pack( 'N', $Data ); - } - - private function GetStatus( $Challenge ) - { - $Data = $this->WriteData( self :: STATISTIC, $Challenge . \pack( 'c*', 0x00, 0x00, 0x00, 0x00 ) ); - - if( !$Data ) - { - throw new MinecraftQueryException( 'Failed to receive status.' ); - } - - $Last = ''; - $Info = Array( ); - - $Data = \substr( $Data, 11 ); // splitnum + 2 int - $Data = \explode( "\x00\x00\x01player_\x00\x00", $Data ); - - if( \count( $Data ) !== 2 ) - { - throw new MinecraftQueryException( 'Failed to parse server\'s response.' ); - } - - $Players = \substr( $Data[ 1 ], 0, -2 ); - $Data = \explode( "\x00", $Data[ 0 ] ); - - // Array with known keys in order to validate the result - // It can happen that server sends custom strings containing bad things (who can know!) - $Keys = Array( - 'hostname' => 'HostName', - 'gametype' => 'GameType', - 'version' => 'Version', - 'plugins' => 'Plugins', - 'map' => 'Map', - 'numplayers' => 'Players', - 'maxplayers' => 'MaxPlayers', - 'hostport' => 'HostPort', - 'hostip' => 'HostIp', - 'game_id' => 'GameName' - ); - - foreach( $Data as $Key => $Value ) - { - if( ~$Key & 1 ) - { - if( !isset( $Keys[ $Value ] ) ) - { - $Last = false; - continue; - } - - $Last = $Keys[ $Value ]; - $Info[ $Last ] = ''; - } - else if( $Last != false ) - { - $Info[ $Last ] = mb_convert_encoding( $Value, 'UTF-8' ); - } - } - - // Ints - $Info[ 'Players' ] = (int)$Info[ 'Players' ]; - $Info[ 'MaxPlayers' ] = (int)$Info[ 'MaxPlayers' ]; - $Info[ 'HostPort' ] = (int)$Info[ 'HostPort' ]; - - // Parse "plugins", if any - if( $Info[ 'Plugins' ] ) - { - $Data = \explode( ": ", $Info[ 'Plugins' ], 2 ); - - $Info[ 'RawPlugins' ] = $Info[ 'Plugins' ]; - $Info[ 'Software' ] = $Data[ 0 ]; - - if( \count( $Data ) == 2 ) - { - $Info[ 'Plugins' ] = \explode( "; ", $Data[ 1 ] ); - } - } - else - { - $Info[ 'Software' ] = 'Vanilla'; - } - - $this->Info = $Info; - - if( empty( $Players ) ) - { - $this->Players = null; - } - else - { - $this->Players = \explode( "\x00", $Players ); - } - } - - private function GetBedrockStatus( ) - { - // hardcoded magic https://github.com/facebookarchive/RakNet/blob/1a169895a900c9fc4841c556e16514182b75faf8/Source/RakPeer.cpp#L135 - $OFFLINE_MESSAGE_DATA_ID = \pack( 'c*', 0x00, 0xFF, 0xFF, 0x00, 0xFE, 0xFE, 0xFE, 0xFE, 0xFD, 0xFD, 0xFD, 0xFD, 0x12, 0x34, 0x56, 0x78 ); - - $Command = \pack( 'cQ', 0x01, time() ); // DefaultMessageIDTypes::ID_UNCONNECTED_PING + 64bit current time - $Command .= $OFFLINE_MESSAGE_DATA_ID; - $Command .= \pack( 'Q', 2 ); // 64bit guid - $Length = \strlen( $Command ); - - if( $Length !== \fwrite( $this->Socket, $Command, $Length ) ) - { - throw new MinecraftQueryException( "Failed to write on socket." ); - } - - $Data = \fread( $this->Socket, 4096 ); - - if( empty( $Data ) ) - { - throw new MinecraftQueryException( "Failed to read from socket." ); - } - - if( $Data[ 0 ] !== "\x1C" ) // DefaultMessageIDTypes::ID_UNCONNECTED_PONG - { - throw new MinecraftQueryException( "First byte is not ID_UNCONNECTED_PONG." ); - } - - if( \substr( $Data, 17, 16 ) !== $OFFLINE_MESSAGE_DATA_ID ) - { - throw new MinecraftQueryException( "Magic bytes do not match." ); - } - - // TODO: What are the 2 bytes after the magic? - $Data = \substr( $Data, 35 ); - - // TODO: If server-name contains a ';' it is not escaped, and will break this parsing - $Data = \explode( ';', $Data ); - - $this->Info = - [ - 'GameName' => $Data[ 0 ] ?? null, - 'HostName' => $Data[ 1 ] ?? null, - 'Protocol' => $Data[ 2 ] ?? null, - 'Version' => $Data[ 3 ] ?? null, - 'Players' => isset( $Data[ 4 ] ) ? (int)$Data[ 4 ] : 0, - 'MaxPlayers' => isset( $Data[ 5 ] ) ? (int)$Data[ 5 ] : 0, - 'ServerId' => $Data[ 6 ] ?? null, - 'Map' => $Data[ 7 ] ?? null, - 'GameMode' => $Data[ 8 ] ?? null, - 'NintendoLimited' => $Data[ 9 ] ?? null, - 'IPv4Port' => isset( $Data[ 10 ] ) ? (int)$Data[ 10 ] : 0, - 'IPv6Port' => isset( $Data[ 11 ] ) ? (int)$Data[ 11 ] : 0, - 'Extra' => $Data[ 12 ] ?? null, // What is this? - ]; - $this->Players = null; - } - - private function WriteData( $Command, $Append = "" ) - { - $Command = \pack( 'c*', 0xFE, 0xFD, $Command, 0x01, 0x02, 0x03, 0x04 ) . $Append; - $Length = \strlen( $Command ); - - if( $Length !== \fwrite( $this->Socket, $Command, $Length ) ) - { - throw new MinecraftQueryException( "Failed to write on socket." ); - } - - $Data = \fread( $this->Socket, 4096 ); - - if( $Data === false ) - { - throw new MinecraftQueryException( "Failed to read from socket." ); - } - - if( \strlen( $Data ) < 5 || $Data[ 0 ] != $Command[ 2 ] ) - { - return false; - } - - return \substr( $Data, 5 ); - } - - private function ResolveSRV( &$Address, &$Port ) - { - if( \ip2long( $Address ) !== false ) - { - return; - } - - $Record = @\dns_get_record( '_minecraft._tcp.' . $Address, DNS_SRV ); - - if( empty( $Record ) ) - { - return; - } - - if( isset( $Record[ 0 ][ 'target' ] ) ) - { - $Address = $Record[ 0 ][ 'target' ]; - } - } -} diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..4418f02 --- /dev/null +++ b/web/package.json @@ -0,0 +1,32 @@ +{ + "type": "module", + "name": "jqueryjsx", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "build": "webpack --config webpack-prod.config.cjs", + "start": "webpack serve --open --config webpack-dev.config.cjs" + }, + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "@types/jquery": "^3.5.32", + "@types/react": "^18.3.12", + "copy-webpack-plugin": "^12.0.2", + "css-loader": "^7.1.2", + "highlight.js": "^11.11.1", + "html-webpack-plugin": "^5.6.3", + "jquery": "^4.0.0-beta.2", + "jsx-runtime": "^1.2.0", + "nakedjsx": "^0.17.2", + "style-loader": "^4.0.0", + "typescript": "^5.6.3" + }, + "devDependencies": { + "ts-loader": "^9.5.1", + "webpack": "^5.95.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.1.0" + } +} diff --git a/web/src/api.tsx b/web/src/api.tsx new file mode 100644 index 0000000..7233d89 --- /dev/null +++ b/web/src/api.tsx @@ -0,0 +1,39 @@ +export const url = "https://networkheaven.net"; + +export interface ReqParams { + method: string, + body?: string, +} + +export async function post( endpoint: string, body: Object ) { + return await req( endpoint, { + method: "POST", + body: JSON.stringify( body ), + } ); +} + +export async function req( endpoint: string, params: ReqParams ) { + const res = await fetch( `${url}/${endpoint}`, { + method: params.method, + headers: { + "Content-Type": "application/json", + }, + body: params.body, + } ); + + if( !res.ok ) { + let json = null; + try { + json = await res.json(); + } catch( e: any ) { + throw new Error( "error contacting server" ); + } + + throw new Error( json.msg ); + } + + const json = await res.json(); + if( json.status != 'ok' ) + throw new Error( json.msg ); + return json; +} diff --git a/web/src/ascii-art.tsx b/web/src/ascii-art.tsx new file mode 100644 index 0000000..a6caefe --- /dev/null +++ b/web/src/ascii-art.tsx @@ -0,0 +1,148 @@ +import * as JSX from "./jsx"; +import $ from "jquery"; + +export function AsciiArt() { + const ret =
+ { asciiArtStr } +
; + + setTimeout( doAsciiArt ); + return ret; +} + +let startTime = 0.0; +let anim = 0.0; + +function animFunc( a: number ) { + let ringRadius = anim; + let radius = a; + + let dist = ringRadius - radius; + + dist = Math.abs( dist ); + + let ret = Math.pow( dist, 0.1 + 0.8 * Math.pow( (anim + 0.5) / 2, 1.6 ) ); + let remain = ret % 0.12; + return ret - remain; +} + +function hexToRgb( hex: string ) { + let r = parseInt( hex.slice( 1, 3 ), 16 ); + let g = parseInt( hex.slice( 3, 5 ), 16 ); + let b = parseInt( hex.slice( 5, 7 ), 16 ); + return [ r, g, b ]; +} + +function lerpColor( c1: number[], c2: number[], t: number ) { + let r1 = c1[0], g1 = c1[1], b1 = c1[2], a1 = c1[3]; + let r2 = c2[0], g2 = c2[1], b2 = c2[2], a2 = c2[3]; + let r = r1 + ( r2 - r1 ) * t; + let g = g1 + ( g2 - g1 ) * t; + let b = b1 + ( b2 - b1 ) * t; + let a = a1 + ( a2 - a1 ) * t; + return [ Math.round( r ), Math.round( g ), Math.round( b ), Math.round( a ) ]; +} + +function getDist( x: number, y: number ) { + const x1 = 0.75 - x / 71; + const y1 = 0.75 - y / 35; + return Math.sqrt( x1 * x1 + y1 * y1 ); +} + +let topY = 0; + +let isDoingAnim = false; +function doAsciiArt() { + let div = $( "#ascii-art" ); + if( !div.length ) { isDoingAnim = false; return; } + isDoingAnim = true; + + let deltaTime = ( Date.now() - startTime ) * 0.001; + startTime = Date.now(); + anim += .5 * deltaTime; + + if( anim > 2 ) + anim = -0.5; + + let rootColor = [ 255, 0, 255 ]; + let innerStr = ""; + for( let i = 0; i < asciiArtStr.length; ++i ) { + let x = i % 71; + let y = Math.floor( i / 71 ); + if( y > topY ) + topY = y; + + + if( asciiArtStr[i] == ',' || asciiArtStr[i] == '\t' ) { + innerStr += asciiArtStr[i]; + continue; + } + if( asciiArtStr[i] == ' ' ) { + innerStr += ' '; + continue; + } + + let dist = getDist( x, y ); + + let color = []; + if( asciiArtStr[i] == '#' ) { + let a = animFunc( dist * 2 ); + color = lerpColor( rootColor, [255, 255, 255, 1], a ); + color[3] = Math.max( Math.min( 1, Math.pow( dist, 2 ) + (1.0 - a) ), 0.8 ); + } + else { + const t = Math.max( 0.05, 1.0 - animFunc( (dist) * 0.75 ) ); + if( t < 0.25 ) { + color = lerpColor( [255, 255, 255, 255], [255, 189, 255, 255], (t - 0.5) * 2 ); + } + else if( t > 0.5 && t < 0.75 ) { + color = lerpColor( [255, 189, 255, 255], [0, 255, 255, 255], (t - 0.5) * 2 ); + } else { + color = lerpColor( [255, 255, 255, 255], [0, 255, 255, 255], (t - 0.5) * 2 ); + } + } + // appending string is faster than jsx + innerStr += `${asciiArtStr[i]}`; + } + + div.html( innerStr ); + setTimeout( doAsciiArt, 85 ); +} + +const asciiArtStr = ` +ā£æā£æā£æā£æā£æā£æā£æā£æā£¶ā£¤ā£„ā”€ā €ā¢æā”æā£ā €ā¢†ā”˜ā ¤ā”˜ā  ā¢°ā ƒā”„ā ‚ā „ā €ā €ā €ā €ā”€ā”†ā Œā¢„ā €ā €ā¢ ā”‡ā ‚ā”Œā „ā €ā €ā €ā €ā €ā €ā ”ā£–ā €ā¢ƒā øā €ā øā£Ÿā”„ā ˜ā”½ā”œā”„ā €ā €ā €ā ˆā ¦ā €ā €ā €ā ø +ā£æā£æā£æā£æā£æā£æā”æā ā ˆā¢»ā”ā£Ÿā£·ā”æā¢ā ¤ā¢€ā ¢ā¢Œā °ā”€ā ‚ā”Ÿā  ā”„ā ˆā €ā €ā£€ā ¤ā ā£°ā Œā”ˆā¢„ā ‚ā””ā£ŗā „ā”‡ā °ā ˆā”„ā¢ƒā °ā¢€ā °ā¢€ā ‚ā¢½ā ‚ā¢¼ā ā” ā „ā£æā”¼ā”€ā ±ā¢¹ā”°ā €ā €ā €ā €ā €ā£†ā €ā €ā € +ā£æā£æā£æā£æā£æā£æā ā¢„ā  ā¢€ā£¹ā£žā”æā¢ā¢Šā °ā¢€ā Žā”ā¢‚ā ā¢³ā ‹ā “ā ā €ā£ ā žā” ā¢ā£ŗā”‡ā ¤ā¢ā ¢ā ˜ā¢ ā”æā¢°ā”ā „ā¢ƒā”ā¢ˆā °ā¢ˆā °ā¢øā Œā£øā Œā¢ŗā”ā ¤ā¢ˆā£½ā£§ā¢©ā”„ā¢‰ā¢§ā ”ā ‰ā”ā ’ā ¤ā£øā”€ā €ā € +ā£æā£æā£æā£æā£æā£æā ©ā”ā Œā¢æā”Æā£æā ‡ā”Œā ¢ā¢”ā ˆā””ā ˆā ‚ā ƒā¢¾ā¢ˆā ’ā €ā”“ā¢ā”¾ā ‘ā£øā¢»ā¢€ā ’ā¢ ā ‚ā”‰ā¢¼ā”‡ā¢øā”‡ā Œā „ā”„ā¢ƒā °ā¢ˆā °ā øā”‚ā¢¼ā¢ˆā¢¹ā †ā °ā¢øā¢æā øā”†ā¢·ā¢ˆā øā£„ā ƒā ¤ā¢‰ā”ā Øā£§ā €ā”€ +ā£æā£æā£æā£æā£æā£æā”Ÿā£æā£»ā¢¾ā”·ā£æā ā”„ā¢ƒā †ā ˆā ā ā €ā €ā£¾ā øā €ā¢€ā”‡ā£¼ā ‡ā¢”ā”ā£‡ā ¢ā ˜ā”€ā †ā¢”ā”Žā”‡ā¢ŗā£‡ā ˜ā¢ ā ā Øā”ā¢‚ā ¢ā¢”ā”‡ā ¾ā¢ˆā¢øā”ƒā”˜ā¢¼ā¢øā €ā¢»ā ˆā£‡ā Œā£·ā¢ˆā”ā ‚ā ¤ā¢±ā¢æā €ā ” +ā£æā£æā£æā£æā£æā£æā£Æā”šā¢§ā”»ā£½ā”ā °ā”ˆā¢„ā ˆā €ā”€ā €ā €ā €ā£æā¢øā¢€ā¢‚ā¢øā”Ÿā”ˆā¢¼ā¢³ā ā¢‚ā”ā †ā”‘ā¢ŗā¢±ā”‡ā£¼ā¢æā ˆā „ā”ˆā ”ā¢ā  ā¢ā¢ŗā”„ā”Ÿā”€ā¢ŗā¢ā”“ā”æā¢øā¢„ā ˆā”‡ā¢ŗā”†ā¢øā”†ā ¤ā¢‰ā °ā¢ā£øā ˆā ” +ā£æā£æā£æā£æā£æā£æā£æā£·ā ā¢æā£¹ā”‡ā ”ā Œā €ā €ā €ā €ā €ā €ā¢€ā”æā£øā €ā¢‚ā£æā¢ƒā ā”žā”¼ā¢ˆā£„ā£ā£¤ā”“ā”Æā¢¼ā “ā”æā¢¼ā ¾ā ¶ā ¶ā ¶ā£¤ā ‚ā Œā£¹ā¢°ā”‡ā”ā”ā¢øā¢”ā”‡ā”½ā”€ā ‘ā¢³ā ā£·ā €ā¢æā”‡ā Œā”ā ‚ā”½ā¢ˆā” +ā£æā£æā£æā£æā£æā£æā£æā”ā  ā£„ā£æā „ā €ā €ā €ā €ā €ā”…ā €ā  ā¢ ā”Ÿā£§ā ˆā£°ā£æā €ā£¼ā “ā”—ā¢‰ā ‰ā”ā¢ ā¢·ā ƒā¢øā¢ ā ƒā¢øā£æā €ā¢€ā ‚ā¢øā €ā¢‚ā”ā£¼ā ā£øā ā”ā”œā”‡ā”§ā ¬ā£“ā£¼ā£€ā¢æā¢‡ā¢øā£¹ā €ā €ā”ā ‡ā”ƒā „ +ā£æā£æā£æā£æā£æā£æā£æā£‡ā”·ā Šā¢øā €ā €ā €ā¢ ā£¦ā£„ā ‡ā”ˆā¢ā †ā£æā£§ā ā£½ā”‡ā ā£¾ā¢°ā”‡ā¢‚ā ”ā¢ˆā”ā”žā €ā”¼ā£øā €ā €ā£æā €ā €ā ‚ā£ā ā¢øā¢”ā”Ÿā¢€ā”ā£¼ā¢±ā ā£§ā ā €ā €ā ˆā”Ÿā£»ā ŗā£¤ā£æā”†ā ā €ā”‡ā „ā”ˆ +ā£æā£æā£æā£æā£æā£æā£æā£æā£„ā ‚ā£æā €ā €ā¢ ā ƒā¢æā££ā ā  ā Œā  ā£æā£æā €ā¢æā ƒā¢Œā£æā øā”‡ā¢€ā¢‚ā”¼ā”¼ā €ā¢€ā¢§ā”Æā „ā”€ā£æā €ā Œā¢°ā”‡ā ˆā£¼ā”æā ā”žā£øā¢‡ā ‡ā¢°ā”Ÿā €ā €ā €ā ˆā”‡ā”ā €ā¢‡ā”Ÿā”§ā£„ā ‚ā”‡ā €ā¢° +ā£æā£æā£æā£æā£æā”æā¢­ā¢æā£æā£¶ā£»ā”†ā €ā”ā  ā øā”½ā£ā ā”ˆā”ā¢æā£»ā” ā£æā ˆā¢øā”ā£†ā£§ā£¾ā£¾ā£æā£æā£¶ā£¾ā£¾ā£†ā „ā €ā£æā”†ā €ā£øā ā£øā”æā¢ā”žā”•ā”¹ā”Œā €ā£¼ā¢ā ¤ā ¤ā¢€ā£€ā”‡ā”‡ā €ā øā£¼ā”‡ā €ā ‘ā£·ā ˆā£ø +ā£æā£æā£æā£æā£æā”¹ā¢Žā£—ā”»ā£æā£·ā£‡ā ˜ā£‡ā „ā”ā¢»ā£½ā”†ā ”ā  ā¢¹ā£æā”“ā£æā£“ā£æā£æā£æā£æā”æā£Ÿā£æā¢«ā£Ÿā£ā ‰ā ™ā ›ā ¶ā£æā¢æā €ā”žā¢€ā”Ÿā¢”ā£¾ā Šā£°ā Ÿā €ā£¼ā ƒā£ā£¤ā£“ā£¦ā£¤ā£§ā£‡ā£ ā €ā£æā”‡ā €ā”ā”ā €ā”æ +ā£æā£æā£æā”Ÿā£§ā£›ā”­ā¢¶ā”™ā£æā¢»ā£æā”„ā¢»ā””ā  ā”ˆā¢§ā¢æā”†ā¢”ā ˆā¢æā£‡ā£·ā£æā”æā ›ā£Æā¢½ā”³ā¢§ā”žā €ā €ā£½ā”€ā €ā €ā €ā ›ā ˜ā »ā¢£ā£žā£“ā Ÿā ā  ā ā €ā ā ā¢øā£æā¢æā£Ÿā æā£æā”æā£æā£·ā£¤ā£øā”‚ā €ā¢øā ƒā¢°ā ‡ +ā£æā£æā”æā£¹ā£§ā”“ā¢¾ā¢·ā”Ÿā¢øā£Æā¢¹ā£·ā”Œā¢»ā£„ā ±ā£Œā ³ā£æā£¦ā ²ā ¾ā£æā£æā£æā ā ˆā£Ÿā Šā¢æā”§ā¢æā ƒā”œā£øā”‡ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā£ā£Ÿā”‘ā¢€ā”»ā”“ā¢·ā ˆā »ā£æā£æā£Ÿā ‹ā”Ÿā¢€ā”Žā „ +ā£æā£æā ³ā£½ā ²ā£ā”æā¢øā”‡ā£øā ™ā£·ā¢ŗā£æā£§ā”»ā£·ā£Œā¢¢ā”™ā¢½ā£·ā£¤ā ˜ā¢§ā ™ā¢¦ā”€ā¢»ā”Œā €ā¢ ā¢ā ’ā¢Æā”€ā €ā €ā €ā €ā €ā”€ā €ā¢€ā €ā¢€ā €ā €ā €ā €ā €ā €ā €ā”ā£·ā£¹ā”ā µā”™ā£ŗā €ā €ā øā£æā£æā£¾ā¢ā”¾ā €ā£² +ā£æā¢«ā”ā£¾ā¢¹ā£¾ā¢ƒā¢¹ā”‡ā¢¼ā ‚ā£æā£¹ā ‹ā¢‰ā”æā£¾ā£æā£·ā£Œā ²ā£½ā¢æā£æā£®ā£·ā£€ā ˆā €ā ™ā —ā ’ā šā”‹ā ‰ā €ā €ā €ā €ā£ŗā ‚ā €ā €ā¢€ā €ā  ā ā£€ā”€ā ‚ā €ā €ā €ā¢·ā¢ˆā ©ā €ā””ā ²ā ā €ā €ā£øā¢Ÿā£½ā£«ā”Ÿā¢ā£“ā¢ +ā£ā¢·ā£™ā£®ā Ÿā”ā ¢ā¢¼ā”‡ā¢øā”æā¢§ā£Ÿā €ā”‡ā”„ā£¤ā¢©ā¢æā£›ā¢·ā£¤ā£­ā£›ā¢æā£®ā ‰ā ³ā ¦ā£¤ā ā ā””ā¢ˆā¢„ā ”ā …ā”†ā ‚ā €ā €ā”ˆā €ā¢ˆā” ā †ā Øā¢€ā €ā €ā €ā „ā ā ˆā ™ā”²ā¢·ā”¼ā”†ā €ā „ā”ā ā£æā£æā£‹ā£“ā£¾ā¢‹ā£¾ +ā£žā¢ŗā£¼ā ā”ā Œā”ā£æā”‡ā¢øā”‡ā ¼ā£æā €ā¢·ā €ā¢¹ā”†ā£æā”‰ā šā ¶ā£­ā£»ā£æā”Ÿā ¢ā¢„ā¢¤ā¢‡ā”€ā”…ā ¦ā  ā”“ā €ā €ā ā¢ā €ā †ā ƒā „ā –ā ‰ā ‚ā …ā Šā ā¢’ā „ā ā£€ā €ā ‚ā ‰ā£€ā ā”„ā ā ˆā ā¢øā£æā¢«ā£æā”³ā£µā”æā¢æ +ā£Žā”æā¢¼ā ‚ā”…ā¢Šā ”ā£æā£µā¢ŗā”ā „ā£æā£§ā”ˆā “ā¢Œā ·ā¢¾ā”‡ā¢ā ¢ā¢€ā¢¹ā ‘ā£·ā ˆā” ā ā ¤ā Øā£ā¢ƒā •ā ‹ā”«ā¢—ā ‰ā ˆā”‚ā ā €ā¢‚ā ā¢ā £ā €ā ā €ā ˜ā ’ā „ā “ā¢„ā¢€ā ā ā €ā ā €ā €ā ˆā”æā£¬ā”æā¢£ā”“ā£øā£‡ā¢» +ā£¾ā£ƒā”Æā¢¼ā£€ā £ā£ˆā£æā”½ā£ŗā ›ā¢ ā ¹ā”»ā£æā£¦ā”€ā ‘ā Ŗā£‡ā ‚ā ”ā”ˆā”¾ā Šā£æā Žā µā ƒā”“ā €ā”€ā ‰ā „ā †ā ā ‰ā €ā ˆā ”ā ‚ā €ā €ā”€ā¢ˆā£€ā Šā£”ā ‚ā €ā”ā ›ā Šā¢ā °ā –ā ƒā €ā ā¢€ā”€ā¢°ā Ÿā”žā ”ā¢ ā¢°ā£æā øā£ø +ā£æā£æā£³ā¢Æā£æā£æā£æā£·ā£½ā£¹ā”‡ā Œā£·ā¢³ā¢‹ā »ā¢æā£¦ā£€ā”Ÿā”€ā Šā¢°ā”‡ā ‚ā£æā”‡ā  ā ā €ā ā €ā”ā €ā €ā €ā €ā €ā €ā €ā €ā €ā” ā””ā ā €ā ‰ā ¢ā¢€ā €ā €ā €ā €ā ˆā ˆā ā¢€ā  ā Šā €ā ˆā¢ŗā”žā  ā¢ā¢‚ā£Æā”ā µā”˜ +ā£æā£æā”œā£æā£æā£æā£æā£æā¢¾ā£»ā£§ā”‚ā¢¹ā£ā£æā”„ā Œā¢»ā£æā£§ā €ā ”ā£øā  ā ā£¾ā”‡ā €ā €ā €ā €ā €ā ˆā €ā €ā €ā €ā €ā¢€ā” ā ā ā €ā €ā €ā €ā €ā €ā €ā ‰ā «ā£¦ā €ā €ā¢€ā ”ā ā €ā €ā €ā”€ā €ā ™ā¢¦ā¢ā”žā£¼ā”™ā¢¦ā ‘ +ā£æā£æā”½ā£¹ā£æā£æā£æā£æā”Æā£·ā£Æā¢æā£„ā »ā£œā£·ā”ˆā „ā¢»ā£·ā ˆā¢ ā”—ā  ā ā£æā¢øā£„ā €ā €ā €ā €ā €ā €ā¢€ā””ā Šā ‰ā €ā €ā €ā €ā €ā €ā”°ā ‚ā ¤ā£€ā €ā €ā¢€ā£ƒā €ā£°ā ā €ā €ā”“ā¢“ā£§ā €ā”€ā €ā €ā ™ā¢¦ā”ā”ā¢¢ā Œ +ā”æā£æā£æā£½ā£æā¢æā£æā£æā”·ā££ā¢æā£Æā£»ā¢·ā£½ā¢žā£æā”„ā ‚ā£æā €ā£øā ƒā  ā¢ā£·ā øā”‡ā ‘ā¢¤ā”€ā €ā£ ā žā ā €ā €ā €ā €ā €ā €ā£€ā ”ā €ā €ā €ā €ā ˆā¢§ā”€ā¢æā£æā£¾ā”æā ā” ā¢Šā£“ā£æā¢øā”·ā£„ā£ā €ā¢€ā „ā ™ā “ā §ā£Œ +ā£æā£·ā£æā£æā£æā£æā£æā£æā”æā£µā¢«ā£·ā£ā£Ÿā£¾ā£»ā£¾ā£æā£†ā¢æā €ā”æā €ā €ā ‚ā£¼ā ā£æā”€ā¢€ā”¼ā ‹ā €ā €ā €ā €ā €ā €ā €ā €ā €ā ˆā ’ā¢„ā”€ā €ā €ā €ā €ā ‘ā ®ā æā ›ā ’ā¢ˆā£“ā£æā£æā”ā”¾ā¢ā ˆā£æā –ā ā €ā €ā €ā €ā € +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£³ā£æā£æā£æā£Æā£Ÿā£·ā¢Æā£æā£æā£æā¢°ā ƒā €ā €ā ā¢øā €ā£»ā Ÿā ‹ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā ˆā ²ā „ā”€ā €ā €ā €ā¢€ā£ ā£¾ā£æā£æā£æā£æā£ƒā ‡ā¢‚ā¢”ā ā €ā €ā €ā €ā¢€ā €ā € +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£žā¢¾ā”»ā¢·ā£Æā£æā£¼ā €ā €ā €ā¢€ā”¼ā žā ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā ˆā ²ā£¤ā£€ā”€ā €ā €ā €ā €ā ˆā ¢ā£¤ā£¾ā£æā£æā£æā£æā£æā£æā£æā¢øā  ā”±ā ƒā €ā €ā €ā£ ā£¶ā ‹ā €ā € +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā”æā¢¾ā£½ā£Æā£žā£½ā”Ÿā €ā£ ā ”ā ‹ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā ˆā ™ā æā£·ā£¤ā”€ā €ā €ā €ā €ā ™ā¢æā£æā£æā£æā£æā£·ā£æā¢€ā”œā ā €ā €ā£ ā”žā”±ā ā €ā €ā € +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā¢Æā¢æā£æā£æā£æā£§ā žā ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā ā  ā¢€ā €ā €ā €ā €ā €ā €ā ™ā¢æā£·ā£„ā”€ā €ā €ā €ā ¹ā¢æā£æā£æā£æā£æā”¼ā €ā €ā¢€ā£¾ā£æā”Ÿā €ā €ā €ā €ā € +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā”»ā£žā¢¾ā”¹ā”æā €ā €ā €ā¢€ā”€ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā €ā ‰ā ‚ā¢„ā”€ā €ā €ā£ ā£æā£æā£æā£æā£¦ā£„ā €ā €ā €ā »ā£æā£æā”Ÿā¢€ā €ā£”ā ‚ā¢ŗā£æā”£ā¢€ā¢€ā „ā €ā € +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£Æā£ā£¾ā£æā£§ā¢¶ā”¶ā£æā¢æā£æā£¦ā£¤ā£€ā£€ā£€ā£¤ā£€ā£“ā£¶ā£¤ā£¤ā£„ā”€ā €ā €ā¢€ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£·ā£„ā €ā¢ ā£¾ā£æā£¾ā”·ā£°ā ‰ā”†ā£¹ā£æā£æā£¶ā£æā£†ā”€ā¢€ +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā”žā£Æā¢·ā£ā”æā£½ā£»ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£¶ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£·ā£¦ā£½ā£æā”æā •ā ‰ā¢†ā¢±ā¢øā£æā£æā£æā£æā£æā£æā£æ +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£Ÿā”½ā£¾ā£¹ā”žā£·ā”½ā£žā”½ā£Æā¢æā£¹ā¢Æā£æā£æā£æā£æā£Æā£æā”æā£æā£æā£æā£æā£æā£»ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā”€ā €ā €ā¢Ŗā¢æā£æā£æā£æā£æā£æā£æā£æ +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£Æā”½ā£¶ā¢Æā”½ā£žā£³ā¢Æā”½ā£žā£Æā£½ā¢«ā£æā”Ÿā£æā£»ā¢æā”½ā£æā£æā£æā£æā£»ā£½ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£·ā”ˆā €ā €ā ¹ā£æā£æā£æā£æā£æā£æā£æ +ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£Æā¢·ā£›ā”¾ā£½ā£¹ā”½ā¢¾ā£¹ā ·ā£žā£žā æā£¼ā£æā”˜ā£Æā£¾ā£æā¢æā£¹ā¢Æā£Ÿā”æā£æā¢æā£¾ā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£æā£„ā €ā €ā ˆā »ā£æā£æā£æā£æā£æ +`; diff --git a/web/src/blog.tsx b/web/src/blog.tsx new file mode 100644 index 0000000..9d86657 --- /dev/null +++ b/web/src/blog.tsx @@ -0,0 +1,10 @@ +import $ from "jquery"; +import * as JSX from "./jsx"; +import { Page } from "./components"; +import { AsciiArt } from "./ascii-art"; + +export default function Blog() { + return + work in progress (: + +} diff --git a/web/src/components.tsx b/web/src/components.tsx new file mode 100644 index 0000000..ccd8da8 --- /dev/null +++ b/web/src/components.tsx @@ -0,0 +1,259 @@ +import $ from "jquery"; +import * as JSX from "./jsx"; +import { Header } from "./header"; +import { Sidebar } from "./sidebar"; + +const popup_stack = []; +window.onclick = ( e: Event ) => { + if( !e.target ) return; + + if( popup_stack.length > 0 ) { + const last = popup_stack[popup_stack.length - 1]; + if( last.el[0] == e.target || last.el.find( e.target ).length != 0 ) return; + e.preventDefault(); + e.stopPropagation(); + if( last.fn ) + last.fn(); + + popup_stack.pop(); + last.el.remove(); + } +} + +/** + * appends an element to the DOM and saves it in the popup stack to be removed. +**/ +export function addPopup( element: JQuery ) { + document.body.appendChild( element[0] ); + setTimeout( () => popup_stack.push( { el: element, fn: null } ) ); +} + +/** + * closes the topmost popup +**/ +export function closePopup() { + if( popup_stack.length > 0 ) { + const last = popup_stack[popup_stack.length - 1]; + if( last.fn ) + last.fn(); + + popup_stack.pop(); + setTimeout( () => last.el.remove() ); + } +} + +/** + * sets a callback that will get executed once the current popup is closed + **/ +export function onPopupClosed( fn: Function ) { + setTimeout( () => { + if( popup_stack.length > 0 ) { + popup_stack[popup_stack.length - 1].fn = fn; + } + } ); +} + +/* + * accepts "folded" prop +**/ +export function RolldownListItem( props: any ) { + const ret =
+
+
>
+
{props.folded}
+
+
+
{props.children}
+
+
; + + ret.onclick = () => { + $( ret ).toggleClass( "active" ); + $( ret ).find( ".rolldown-expanded-container" ).toggleClass( 'active' ); + }; + + return ret; +} + +export function Spinner( props: any ) { + let spinner_steps = [ + '/', + '-', + '\\', + '|', + '/', + '-', + '\\', + '|' + ]; + + const id = props.id || ''; + + let el = $(
); + let i = 0; + let loop = () => { + el.text( spinner_steps[i++] ); + if( i > spinner_steps.length ) + i = 0; + + if( el[0].isConnected ) + setTimeout( loop, 100 ); + }; + + setTimeout( loop, 100 ); + return el[0]; +} + +/* + * accepts title prop +**/ +export function RolldownList( props: any ) { + return +
+ { props.children } +
+
+} + +/* + * accepts title prop and optional innerStyle +**/ +export function GroupBox( props: any ) { + return
+ + {props.title} + + + {props.children} + +
+} + +export function Page( props: any ) { + return <> +
+
+ +
+ {props.children} +
+
+ + + +} + +export function DropdownItem( props: any ) { + return +} + +/** + * supports innerStyle for styling the actual dropdown picker + **/ +export function Dropdown( props: any ) { + const children = props.children; + let title = props.title; + let inline = props.inline; + let onchange = props.onchange; + let classes = props.class || ''; + let style = props.style || ""; + let id = props.id || ''; + let innerStyle = props.innerStyle || ""; + + const showItems = ( e: Event ) => { + e.preventDefault(); + const target = $( e.target as HTMLElement ); + + const newDropdown = $( ); + target.parent().append( newDropdown[0] ); + setTimeout( () => popup_stack.push( { el: newDropdown, fn: null } ) ); + } + + if( inline ) { + return + } + else { + return <> + + + + } +} + +export function OkPopup( props: any ) { + const children = props.children; + const classes = props.class || ''; + const style = props.style || ''; + const id = props.id || ''; + + const onclick = ( e: Event ) => { + e.preventDefault(); + e.stopPropagation(); + if( props.onclick ) + props.onclick(); + + closePopup(); + } + + return
+ { children } +
+ +
+
+} + +export function OkCancelPopup( props: any ) { + const children = props.children; + const classes = props.class || ''; + const style = props.style || ''; + const id = props.id || ''; + + const onclick = ( e: Event ) => { + e.preventDefault(); + e.stopPropagation(); + if( props.onclick ) + props.onclick(); + + closePopup(); + } + + const oncancel = ( e: Event ) => { + e.preventDefault(); + e.stopPropagation(); + + closePopup(); + } + + return
+ { children } +
+ + +
+
+} + +export function BackgroundToggle() { + const toggleBackground = () => { + const main = $( "#page-main" ); + if( main.css( "display" ) == "none" ) { + main.css( "display", "" ); + } else { + main.css( "display", "none" ); + } + } + + return
+ show background +
+} diff --git a/web/src/header.tsx b/web/src/header.tsx new file mode 100644 index 0000000..94906c0 --- /dev/null +++ b/web/src/header.tsx @@ -0,0 +1,10 @@ +import $ from 'jquery'; +import * as JSX from './jsx'; + +export function Header( props: any ) { + return
+
+ networkheaven.net +
+
+} diff --git a/web/src/home.tsx b/web/src/home.tsx new file mode 100644 index 0000000..77404fd --- /dev/null +++ b/web/src/home.tsx @@ -0,0 +1,24 @@ +import $ from "jquery"; +import * as JSX from "./jsx"; +import { Page } from "./components"; +import { AsciiArt } from "./ascii-art"; + +export default function Home() { + return +
+

NETWORKHEAVEN

+
+
+
+
+

+ hi, im aura and this is my website. +
+ i will add more stuff when i have time +

+
+
+ +

STEAM

+
; +} diff --git a/web/src/index-page.tsx b/web/src/index-page.tsx new file mode 100644 index 0000000..4b7ce1c --- /dev/null +++ b/web/src/index-page.tsx @@ -0,0 +1,14 @@ +import * as JSX from "./jsx"; +import Home from "./home"; +import Blog from "./blog"; +import Pkgs from "./pkg"; + +JSX.addRoute( "/", () => ); +JSX.addRoute( "/blog", () => ); +JSX.addRoute( "/pkg", () => ); +JSX.addRoute( "/pkg/*", () => ); + +window.onpopstate = JSX.onPopState; + +const url = new URL( window.location.href ); +JSX.navigateParams( url.pathname, url.searchParams.entries() ); diff --git a/web/src/index.html b/web/src/index.html new file mode 100644 index 0000000..a5500e4 --- /dev/null +++ b/web/src/index.html @@ -0,0 +1,31 @@ + + + + + + + networkheaven.net + + + + + + + +
+
+ +
+
+ + + diff --git a/web/src/jsx.tsx b/web/src/jsx.tsx new file mode 100644 index 0000000..98ca440 --- /dev/null +++ b/web/src/jsx.tsx @@ -0,0 +1,267 @@ +import $ from 'jquery'; +const assetAttributeNames = new Set( ['data', 'srcset', 'src', 'href'] ); + +export interface Route { + path: string, + component: Function, + wildcard: boolean +}; + +const routes: Route[] = []; +let err404page = "/"; +let rootId = "moneyjsx-root"; +let onprenavigate: Function = () => {}; +let onpostnavigate: Function = () => {}; + +function routeForPath( route: string ) : Function | null { + if( !routes[route] ) { + for( let key of Object.keys( routes ) ) { + const r = routes[key]; + + if( r.wildcard ) { + if( route.slice( 0, r.path.length ) == r.path ) { + return r.component; + } + } + } + + return null; + } else return routes[route].component; +} + +/** + * sets the id of the element to be replaced by the navigator + **/ +export function setRootId( rootId: string ) { + rootId = rootId; +} + +/** + * adds a route component to the routes list + * the component function must return either a jquery or a DOM element + **/ +export function addRoute( name: string, component: Function ) { + let path = name; + let wildcard = false; + if( path[path.length - 1] === "*" ) { + console.log( "name" ); + path = path.substring( 0, path.length - 1 ); + wildcard = true; + } + + routes[path] = { path, component, wildcard }; +} + +/** + * sets the route for a 404 page + **/ +export function set404Route( name: string ) { + err404page = name; +} + +/** + * sets the callback that will get called when a route changes + **/ +export function onPreNavigate( callback: Function ) { + onprenavigate = callback; +} + +/** + * sets the callback that will get called when a route changes + **/ +export function onPostNavigate( callback: Function ) { + onpostnavigate = callback; +} + +/** + * replaces the root element with the route component + **/ +export function navigate( route: string ) { + console.log( route ); + let url = new URL( window.location.href ); + let cb = routeForPath( route ); + url.pathname = route; + if( !cb ) + return navigate( err404page ); + + window.history.pushState( {}, null, url.href ); + + onprenavigate(); + const el = $( cb() ); + + $( `#${rootId}` ).children().remove(); + $( `#${rootId}` ).append( el ); + onpostnavigate(); +} + +/** + * navigate with params. see: navigate + **/ +export function navigateParams( route: string, params: any ) { + let url = new URL( window.location.href ); + let uparams = new URLSearchParams( params ); + url.pathname = route; + url.search = uparams.toString(); + let cb = routeForPath( route ); + if( !cb ) + return navigate( err404page ); + + window.history.pushState( {}, null, url.href ); + + onprenavigate(); + const el = $( cb() ); + + $( `#${rootId}` ).children().remove(); + $( `#${rootId}` ).append( el ); + onpostnavigate(); +} + +/** + * wrapper for history.pushState + **/ +export function pushParams( params: any ) { + const url = new URL( window.location.href ); + url.search = new URLSearchParams( params ).toString(); + + window.history.pushState( {}, null, url.href ); +} + +/** + * navigates without adding a history entry + * useful for e.g. re-rendering a page after waiting for a data callback +**/ +export function navigateParamsSilent( route: string, params: any ) { + let url = new URL( window.location.href ); + let uparams = new URLSearchParams( params ); + url.pathname = route; + url.search = uparams.toString(); + let cb = routeForPath( route ); + if( !cb ) + return navigateSilent( err404page ); + + onprenavigate(); + const el = $( cb() ); + + $( `#${rootId}` ).children().remove(); + $( `#${rootId}` ).append( el ); + onpostnavigate(); +} + +/** + * see: navigateParamsSilent + **/ +export function navigateSilent( route: string ) { + let url = new URL( window.location.href ); + url.pathname = route; + let cb = routeForPath( route ); + if( !cb ) + return navigateSilent( err404page ); + + onprenavigate(); + const el = $( cb() ); + + $( `#${rootId}` ).children().remove(); + $( `#${rootId}` ).append( el ); + onpostnavigate(); +} + +/** + * action when the back button is pressed +**/ +export function onPopState() { + let url = new URL( window.location.href ); + let uparams = new URLSearchParams( url.searchParams ); + url.search = uparams.toString(); + let cb = routeForPath( url.pathname ); + if( !cb ) + return navigateSilent( err404page ); + + onprenavigate(); + const el = $( cb() ); + + $( `#${rootId}` ).children().remove(); + $( `#${rootId}` ).append( el ); + onpostnavigate(); +} + +export function getRoutes() : Route[] { + return routes; +} + + +// internal stuff below + +const originalAppendChild = Element.prototype.appendChild; +Element.prototype.appendChild = function( child: any ) { + if( Array.isArray( child ) ) { + for( const childArrayMember of child ) + this.appendChild( childArrayMember ); + + return child; + } + else if( typeof child === 'string' ) { + return originalAppendChild.call( this, document.createTextNode( child ) ); + } + else if( child ) { + return originalAppendChild.call( this, child ); + } +}; + +export function createElement( tag: any, props: any, ...children: any ) { + props = props || {}; + + if( typeof tag === "function" ) { + props.children = children; + return tag( props ); + } + + if( tag === 'raw-content' ) { + const dummy = document.createElement( 'div' ); + dummy.innerHTML = props.content; + return [...dummy.children]; + } + + const element = document.createElement( tag ); + + for( const [name, value] of Object.entries( props ) ) { + if( name.startsWith( 'on' ) ) { + const lowercaseName = name.toLowerCase(); + + if( lowercaseName in window ) { + element.addEventListener( lowercaseName.substring(2 ), value ); + continue; + } + } + + if( name == 'ref' ) { + ( value as any ).current = element; + continue; + } + + if( value === false ) + continue; + + if( value === true ) { + element.setAttribute( name, '' ); + continue; + } + + if( assetAttributeNames.has( name ) ) { + if( typeof value === 'string' ) { + element.setAttribute( name, value ); + } + continue; + } + + element.setAttribute( name, value ); + }; + + for( const child of children ) + element.appendChild( child ); + + return element; +} + +export function createFragment( props: any ) { + return props.children; +} diff --git a/web/src/pkg.tsx b/web/src/pkg.tsx new file mode 100644 index 0000000..70e75c6 --- /dev/null +++ b/web/src/pkg.tsx @@ -0,0 +1,164 @@ +import $ from "jquery"; +import * as JSX from "./jsx"; +import { Page, Spinner } from "./components"; +import { sizeHumanReadable } from "./util"; + +function downloadFile( file: string ) { + const a = document.createElement( "a" ); + a.href = "https://networkheaven.net/pkgs/"; + a.download = "string"; + a.click(); + a.remove(); +} + +function urlForHref( href: string, isdir: boolean ) { + const url = new URL( window.location.href ); + if( isdir ) { + const path = url.pathname; + if( path.endsWith( '/' ) ) { + return path + href; + } + return path + "/" + href; + } + + let searchParams = url.searchParams.toString(); + searchParams = searchParams.slice( searchParams.indexOf( '/' ) ); + searchParams = searchParams.slice( searchParams.indexOf( '/' ) ); + return "https://networkheaven.net/pkgs" + searchParams + "/" + href; +} + +interface PkgEntry { + name: string; + date: string; + time: string; + size: string; + isdir: boolean; +} + +function entryFromLine( line: string ): PkgEntry | null { + const isdir = line[line.length - 1] == '-'; + const name = line.slice( 0, line.indexOf( " " ) ); + if( name == ".." ) return null; + if( !name ) + return null; + let date = ''; + let time = ''; + let size = '' + + if( !isdir ) { + let end = line.lastIndexOf( " " ); + size = line.slice( end + 1 ); + date = line.slice( line.indexOf( " " ) + 1, end ); + end = date.indexOf( " " ); + const datetime = date.slice( date.search( /[0-9]/ ) ); + end = datetime.indexOf( ' ' ); + date = datetime.slice( 0, end ); + time = datetime.slice( end + 1 ); + time = time.slice( 0, time.indexOf( " " ) ); + } else { + let start = line.search( /[0-9]/ ) + date = line.slice( start ); + let end = date.indexOf( " " ); + date = date.slice( 0, end ); + time = line.slice( start + end + 1, line.length - 1 ); + time = time.slice( 0, time.indexOf( " " ) ); + } + + return { name, date, time, size, isdir }; +} + +async function getEntries(): Promise { + const url = new URL( window.location.href ); + const href = url.pathname.split( "/pkg" )[1]; + + const packages = await fetch( "https://networkheaven.net/pkgs/" + href ); + const text = await packages.text(); + + const pkgBody = $(
); + pkgBody.html( text ); + pkgBody.html( pkgBody.find( "body" ).html() ); + const pre = pkgBody.find( "pre" )[0].innerText; + + const ret = []; + console.log( url.pathname ); + if( !url.pathname.endsWith( "/pkg/" ) && !url.pathname.endsWith( "/pkg" ) ) { + ret.push({ + name: '../', + date: ' ', + time: ' ', + size: '', + isdir: true + } ); + } + + const lines = pre.split( "\n" ); + for( const line of lines ) { + if( !line.length ) + continue; + + const entry = entryFromLine( line ); + console.log( entry ); + if( entry ) + ret.push( entry ); + } + + return ret; +} + +function back() { + const url = new URL( window.location.href ); + if( url.pathname.endsWith( "/" ) ) + url.pathname = url.pathname.slice( 0, -1 ); + url.pathname = url.pathname.slice( 0, url.pathname.lastIndexOf( "/" ) ); + JSX.navigate( url.pathname ); +} + +function PackageEntry( props: any ) { + console.log( props ); + const entry = props.entry as PkgEntry; + console.log( urlForHref( entry.name, entry.isdir ) ); + return + + { entry.name == "../" && + back() } class="package-entry-link"> + ../yes + } + { entry.name != "../" && + JSX.navigate( urlForHref( entry.name, entry.isdir ) ) } class="package-entry-link"> + {entry.name} + } + + + {entry.time} + { !entry.isdir && { sizeHumanReadable( parseInt( entry.size ) ) } } + +} + +export default function Pkgs() { + setTimeout( async () => { + try { + const entries = await getEntries(); + const target = $( "#package-entries" ).find( "table" ); + $( "#package-entries" ).find( ".spinner" ).remove(); + for( const entry of entries ) { + target.append( ); + } + + } catch( e ) { + console.log( e ); + } + + } ); + + return +
+

PACKAGE REPOSITORY

+
+
+ +
+ + + + +} diff --git a/web/src/sidebar.tsx b/web/src/sidebar.tsx new file mode 100644 index 0000000..a1b3ad7 --- /dev/null +++ b/web/src/sidebar.tsx @@ -0,0 +1,126 @@ +import $ from 'jquery'; +import * as JSX from './jsx'; + +var interval = null; + +function cacheWeather( result: any ) { + const timestamp = new Date().getTime(); + + localStorage.setItem( "weather", JSON.stringify( result ) ); + localStorage.setItem( "weather_timestamp", timestamp.toString() ); +} + +function getWeatherCache() { + const timestamp = localStorage.getItem( "weather_timestamp" ); + if( !timestamp ) + return null; + + if( parseInt( timestamp ) + 60 * 60 * 1000 < new Date().getTime() ) { + localStorage.removeItem( "weather" ); + localStorage.removeItem( "weather_timestamp" ); + return null; + } + + try { + const res = JSON.parse( localStorage.getItem( "weather" ) ); + return res; + } catch( e ) { + console.log( e ); + return null; + } +} + +async function updateWeather() { + let weather = getWeatherCache(); + if( !weather ) { + weather = await fetch( + "https://api.open-meteo.com/v1/forecast?latitude=35.0647937&longitude=137.1784597¤t=temperature_2m,wind_speed_10m,relative_humidity_2m" + ) + + weather = await weather.json(); + cacheWeather( weather ); + } + + $( "#temp" ).text( weather.current.temperature_2m ); + $( "#wind" ).text( weather.current.wind_speed_10m ); + $( "#humi" ).text( weather.current.relative_humidity_2m ); + + setTimeout( updateWeather, 60 * 60 * 1000 ); +} + +function Weather() { + setTimeout( updateWeather ); + const weather = getWeatherCache(); + if( weather && weather.current ) { + const temp = weather.current.temperature_2m; + const wind = weather.current.wind_speed_10m; + const humi = weather.current.relative_humidity_2m; + return
+ + + + +
+ } + + return
+ + + + +
+} + +export function Sidebar() { + if( interval == null ) { + interval = setInterval( () => { + $( "#time" ).text( new Date().toLocaleTimeString() ); + $( "#date" ).text( new Date().toLocaleDateString() ); + }, 1000 ); + } + + return +} diff --git a/web/src/tsconfig.json b/web/src/tsconfig.json new file mode 100644 index 0000000..b964594 --- /dev/null +++ b/web/src/tsconfig.json @@ -0,0 +1,121 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + "moduleResolution": "node", + /* Language and Environment */ + "target": "es2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": [ + "ES2017", + "DOM", + "DOM.Iterable", + "ScriptHost" + ], + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "jsx": "react", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + "jsxFactory": "JSX.createElement", + "jsxFragmentFactory": "JSX.createFragment", + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "es2020", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + "baseUrl": ".", + "paths": { + "*": ["types/*"] + }, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + "typeRoots": [ + "./node_modules/@types", + "./types" + ], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + "strictNullChecks": false, /* When type checking, take into account 'null' and 'undefined'. */ + "strictFunctionTypes": false, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + "strictBindCallApply": false, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + "strictPropertyInitialization": false, /* Check for class properties that are declared but not set in the constructor. */ + "strictBuiltinIteratorReturn": false, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ + "noImplicitThis": false, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/web/src/user.tsx b/web/src/user.tsx new file mode 100644 index 0000000..d909d9e --- /dev/null +++ b/web/src/user.tsx @@ -0,0 +1,6 @@ +import $ from 'jquery'; + +import * as JSX from './jsx'; +import * as api from './api'; + + diff --git a/web/src/util.tsx b/web/src/util.tsx new file mode 100644 index 0000000..1b1ccc0 --- /dev/null +++ b/web/src/util.tsx @@ -0,0 +1,42 @@ +export function escapeHtml( html: string ) { + const entityMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/', + '`': '`', + '=': '=' + }; + + return String( html ).replace( /[&<>"'`=\/]/g, ( s ) => { + return entityMap[s]; + } ); +} + +export function parseJWT( token: string ) : any { + const parts = token.split( '.' ); + let encoded = parts[1]; + encoded = encoded.replace(/-/g, '+').replace(/_/g, '/'); + const pad = encoded.length % 4; + if( pad === 1 ) + throw new Error( 'what the fuck' ); + if( pad > 1 ) + encoded += new Array( 5 - pad ).join( '=' ); + + const payload = JSON.parse( atob( encoded ) ); + return payload; +} + +export function sizeHumanReadable( size: number ) { + if( size < 1024 ) + return size + ' B'; + else if( size < 1024 * 1024 ) + return ( size / 1024 ).toFixed( 2 ) + ' KB'; + else if( size < 1024 * 1024 * 1024 ) + return ( size / 1024 / 1024 ).toFixed( 2 ) + ' MB'; + else + return ( size / 1024 / 1024 / 1024 ).toFixed( 2 ) + ' GB'; +} + diff --git a/web/static/fonts/LICENSE.TXT b/web/static/fonts/LICENSE.TXT new file mode 100644 index 0000000..fd662a7 --- /dev/null +++ b/web/static/fonts/LICENSE.TXT @@ -0,0 +1,428 @@ +Attribution-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More_considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-ShareAlike 4.0 International Public +License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-ShareAlike 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + + including for purposes of Section 3(b); and + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the ā€œLicensor.ā€ The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. + diff --git a/web/static/fonts/README.NFO b/web/static/fonts/README.NFO new file mode 100644 index 0000000..f09ee43 --- /dev/null +++ b/web/static/fonts/README.NFO @@ -0,0 +1,45 @@ + + _ Ä --- Ä _ Ä --- Ä + .ł" ,Ā, ~=Ņ_ .ł. .ł" ~=Ņ_ + . . .OZZZOø ^g, . .žų~ųž. ^%· .s%ZOæ + ` Ą¦qZp¦' ųł `Z, ` _.,ś `gZæ ł:ZZ| + _Āg%%oc, ~ _., ` ŌZ; _.,Ā©y%Z=-:ś .s%Z%L, `OZZYi%gĀ_ + jOZZ˜˜ZZOLś jOZZ˜Ŗ, `Zb _.Ā©y%ZZZZZZZZ%=:ł jZZZZZZZb `ZZZZ˜ZZZb + łZZ?~ ~\ZZZ| |›ZZZZO\ ś?Z.ł%˜ZZZZZZ¦*Źü^ų"`' /ZZ¦"~"¦ZZ\ łT ~!ZZ“ + Z6f łZZZOłś|ZZZ^ZZi ]Z1ś:-":ZZZ' _. łOZ/ \ZZL : |6Z' + . `ZZŖ._ ~"^Z| łZZZ;\ZZ ĘZµ ś›ZZZś _Ā%ZZś l%! .oZo, ]ZZśł _ŅZZ' . + , ~^Ź*Ź^~.Z›śśZZZl ZZĀZZ1 ś łZZZZł ^¦!ZZł :=l dZZZb łZZ| ~^"~ + ł g%ZZZśśZZZZ `ZZZų : śZZZZ: łlZZ| ł;ł :ZZZF śZZ| .' + ~Ä_ śZZZZ| łZZZZ ĄZZ˜' ł ?ZZZ! :ZZ³ś śł "¦" dZgś _Ä~ + ~"^ :ZZZOłł|ZZZ! `^' ' `ZZZ ś¦ZZ: ś ./ZZf śÄ--`~ + OZZZł jZ¦Ź~ `. _ _. . ~^¦L, YZZZZOzzĀĀ śł:=CO/ + -V! j¦Ź^~ . ~-ŗł-~ . `^ʦZ˜ZF'śł:%CG' . O R G + ~Ä_ T _Ä~ ~' '^"~ + ~"Ķ=|=Ķ"~ + ł p r e s e n t s + ś + + + The Ultimate Oldschool PC Font Pack + + < http://int10h.org/oldschool-pc-fonts/ > + + v2.2 // 2020-11-21 + + ------------------------------------------------------------------------ + + For documentation see the 'docs' folder or these pages: + + Readme: < http://int10h.org/oldschool-pc-fonts/readme/ > + + Font list: < http://int10h.org/oldschool-pc-fonts/fontlist/ > + + ------------------------------------------------------------------------ + + The Ultimate Oldschool PC Font Pack is licensed under a Creative Commons + Attribution-ShareAlike 4.0 International License. + + You should have received a copy of the license along with this work. If + not, see < http://creativecommons.org/licenses/by-sa/4.0/ >. + + (c) 2016-2020 VileR diff --git a/web/static/fonts/README.TXT b/web/static/fonts/README.TXT new file mode 100644 index 0000000..02b06ef --- /dev/null +++ b/web/static/fonts/README.TXT @@ -0,0 +1,46 @@ + + _ ─ --- ─ _ ─ --- ─ + .āˆ™" ,┬, ~=ā•„_ .āˆ™. .āˆ™" ~=ā•„_ + . . .OZZZOā•• ^g, . .■°~°■. ^%ā•– .s%ZO┐ + ` └ªqZpĀŖ' Ā°āˆ™ `Z, ` _.,Ā· `gZ┐ āˆ™:ZZ| + _┬g%%oc, ~ _., ` ā•˜Z; _.,ā”¬āŒy%Z=-:Ā· .s%Z%L, `OZZYi%g┬_ + jOZZÿÿZZOLĀ· jOZZÿ¬, `Zb _.ā”¬āŒy%ZZZZZZZZ%=:āˆ™ jZZZZZZZb `ZZZZĆæZZZb + āˆ™ZZ?~ ~\ZZZ| |Ā¢ZZZZO\ Ā·?Z.āˆ™%ĆæZZZZZZĀŖ*╩ⁿ^°"`' /ZZĀŖ"~"ĀŖZZ\ āˆ™T ~!ZZ┤ + Z6f āˆ™ZZZOāˆ™Ā·|ZZZ^ZZi ]Z1Ā·:-":ZZZ' _. āˆ™OZ/ \ZZL : |6Z' + . `ZZ¬._ ~"^Z| āˆ™ZZZ;\ZZ ā•žZā•” Ā·Ā¢ZZZĀ· _┬%ZZĀ· l%! .oZo, ]ZZĀ·āˆ™ _ā•„ZZ' . + , ~^ā•©*ā•©^~.Z¢··ZZZl ZZ┬ZZ1 Ā· āˆ™ZZZZāˆ™ ^ĀŖ!ZZāˆ™ :=l dZZZb āˆ™ZZ| ~^"~ + āˆ™ g%ZZZĀ·Ā·ZZZZ `Ā„ZZZ° : Ā·ZZZZ: āˆ™lZZ| āˆ™;āˆ™ :ZZZF Ā·ZZ| .' + ~─_ Ā·ZZZZ| āˆ™ZZZZ ā””ZZĆæ' āˆ™ ?ZZZ! :ZZ│· Ā·āˆ™ "ĀŖ" dZgĀ· _─~ + ~"^ :ZZZOāˆ™āˆ™|ZZZ! `^' ' `Ā„ZZZ Ā·ĀŖZZ: Ā· ./ZZf ·─--`~ + OZZZāˆ™ jZĀŖā•©~ `. _ _. . ~^ĀŖL, YZZZZOzz┬┬ Ā·āˆ™:=CO/ + -V! jĀŖā•©^~ . ~-ā•‘āˆ™-~ . `^ā•©ĀŖZ„ÿZF'Ā·āˆ™:%CG' . O R G + ~─_ T _─~ ~' '^"~ + ~"═=|=═"~ + āˆ™ p r e s e n t s + Ā· + + + The Ultimate Oldschool PC Font Pack + + < http://int10h.org/oldschool-pc-fonts/ > + + v2.2 // 2020-11-21 + + ------------------------------------------------------------------------ + + For documentation see the 'docs' folder or these pages: + + Readme: < http://int10h.org/oldschool-pc-fonts/readme/ > + + Font list: < http://int10h.org/oldschool-pc-fonts/fontlist/ > + + ------------------------------------------------------------------------ + + The Ultimate Oldschool PC Font Pack is licensed under a Creative Commons + Attribution-ShareAlike 4.0 International License. + + You should have received a copy of the license along with this work. If + not, see < http://creativecommons.org/licenses/by-sa/4.0/ >. + + (c) 2016-2020 VileR + diff --git a/web/static/fonts/Web437_ACM_VGA_8x14.woff b/web/static/fonts/Web437_ACM_VGA_8x14.woff new file mode 100644 index 0000000..9f44664 Binary files /dev/null and b/web/static/fonts/Web437_ACM_VGA_8x14.woff differ diff --git a/web/static/fonts/Web437_ACM_VGA_8x16.woff b/web/static/fonts/Web437_ACM_VGA_8x16.woff new file mode 100644 index 0000000..b828c2b Binary files /dev/null and b/web/static/fonts/Web437_ACM_VGA_8x16.woff differ diff --git a/web/static/fonts/Web437_ACM_VGA_8x8.woff b/web/static/fonts/Web437_ACM_VGA_8x8.woff new file mode 100644 index 0000000..acfebfa Binary files /dev/null and b/web/static/fonts/Web437_ACM_VGA_8x8.woff differ diff --git a/web/static/fonts/Web437_ACM_VGA_9x14.woff b/web/static/fonts/Web437_ACM_VGA_9x14.woff new file mode 100644 index 0000000..c388f41 Binary files /dev/null and b/web/static/fonts/Web437_ACM_VGA_9x14.woff differ diff --git a/web/static/fonts/Web437_ACM_VGA_9x16.woff b/web/static/fonts/Web437_ACM_VGA_9x16.woff new file mode 100644 index 0000000..9f7f85f Binary files /dev/null and b/web/static/fonts/Web437_ACM_VGA_9x16.woff differ diff --git a/web/static/fonts/Web437_ACM_VGA_9x8.woff b/web/static/fonts/Web437_ACM_VGA_9x8.woff new file mode 100644 index 0000000..7b82f03 Binary files /dev/null and b/web/static/fonts/Web437_ACM_VGA_9x8.woff differ diff --git a/web/static/fonts/Web437_AMI_EGA_8x14.woff b/web/static/fonts/Web437_AMI_EGA_8x14.woff new file mode 100644 index 0000000..385f625 Binary files /dev/null and b/web/static/fonts/Web437_AMI_EGA_8x14.woff differ diff --git a/web/static/fonts/Web437_AMI_EGA_8x8-2y.woff b/web/static/fonts/Web437_AMI_EGA_8x8-2y.woff new file mode 100644 index 0000000..0073dbd Binary files /dev/null and b/web/static/fonts/Web437_AMI_EGA_8x8-2y.woff differ diff --git a/web/static/fonts/Web437_AMI_EGA_8x8.woff b/web/static/fonts/Web437_AMI_EGA_8x8.woff new file mode 100644 index 0000000..69e5483 Binary files /dev/null and b/web/static/fonts/Web437_AMI_EGA_8x8.woff differ diff --git a/web/static/fonts/Web437_AMI_EGA_9x14.woff b/web/static/fonts/Web437_AMI_EGA_9x14.woff new file mode 100644 index 0000000..37813dd Binary files /dev/null and b/web/static/fonts/Web437_AMI_EGA_9x14.woff differ diff --git a/web/static/fonts/Web437_AST_PremiumExec.woff b/web/static/fonts/Web437_AST_PremiumExec.woff new file mode 100644 index 0000000..9613ecf Binary files /dev/null and b/web/static/fonts/Web437_AST_PremiumExec.woff differ diff --git a/web/static/fonts/Web437_ATI_8x14.woff b/web/static/fonts/Web437_ATI_8x14.woff new file mode 100644 index 0000000..bc1a987 Binary files /dev/null and b/web/static/fonts/Web437_ATI_8x14.woff differ diff --git a/web/static/fonts/Web437_ATI_8x16.woff b/web/static/fonts/Web437_ATI_8x16.woff new file mode 100644 index 0000000..c782766 Binary files /dev/null and b/web/static/fonts/Web437_ATI_8x16.woff differ diff --git a/web/static/fonts/Web437_ATI_8x8-2y.woff b/web/static/fonts/Web437_ATI_8x8-2y.woff new file mode 100644 index 0000000..a2098f8 Binary files /dev/null and b/web/static/fonts/Web437_ATI_8x8-2y.woff differ diff --git a/web/static/fonts/Web437_ATI_8x8.woff b/web/static/fonts/Web437_ATI_8x8.woff new file mode 100644 index 0000000..7984412 Binary files /dev/null and b/web/static/fonts/Web437_ATI_8x8.woff differ diff --git a/web/static/fonts/Web437_ATI_9x14.woff b/web/static/fonts/Web437_ATI_9x14.woff new file mode 100644 index 0000000..a8f1153 Binary files /dev/null and b/web/static/fonts/Web437_ATI_9x14.woff differ diff --git a/web/static/fonts/Web437_ATI_9x16.woff b/web/static/fonts/Web437_ATI_9x16.woff new file mode 100644 index 0000000..1f017ab Binary files /dev/null and b/web/static/fonts/Web437_ATI_9x16.woff differ diff --git a/web/static/fonts/Web437_ATI_9x8.woff b/web/static/fonts/Web437_ATI_9x8.woff new file mode 100644 index 0000000..c53ff48 Binary files /dev/null and b/web/static/fonts/Web437_ATI_9x8.woff differ diff --git a/web/static/fonts/Web437_ATI_SmallW_6x8.woff b/web/static/fonts/Web437_ATI_SmallW_6x8.woff new file mode 100644 index 0000000..479d653 Binary files /dev/null and b/web/static/fonts/Web437_ATI_SmallW_6x8.woff differ diff --git a/web/static/fonts/Web437_ATT_PC6300-2x.woff b/web/static/fonts/Web437_ATT_PC6300-2x.woff new file mode 100644 index 0000000..9d633b5 Binary files /dev/null and b/web/static/fonts/Web437_ATT_PC6300-2x.woff differ diff --git a/web/static/fonts/Web437_ATT_PC6300.woff b/web/static/fonts/Web437_ATT_PC6300.woff new file mode 100644 index 0000000..c7cb2c4 Binary files /dev/null and b/web/static/fonts/Web437_ATT_PC6300.woff differ diff --git a/web/static/fonts/Web437_Acer710_CGA-2y.woff b/web/static/fonts/Web437_Acer710_CGA-2y.woff new file mode 100644 index 0000000..74d7126 Binary files /dev/null and b/web/static/fonts/Web437_Acer710_CGA-2y.woff differ diff --git a/web/static/fonts/Web437_Acer710_CGA.woff b/web/static/fonts/Web437_Acer710_CGA.woff new file mode 100644 index 0000000..07fddbc Binary files /dev/null and b/web/static/fonts/Web437_Acer710_CGA.woff differ diff --git a/web/static/fonts/Web437_Acer710_Mono.woff b/web/static/fonts/Web437_Acer710_Mono.woff new file mode 100644 index 0000000..c6cf32c Binary files /dev/null and b/web/static/fonts/Web437_Acer710_Mono.woff differ diff --git a/web/static/fonts/Web437_Acer_VGA_8x8-2y.woff b/web/static/fonts/Web437_Acer_VGA_8x8-2y.woff new file mode 100644 index 0000000..0422518 Binary files /dev/null and b/web/static/fonts/Web437_Acer_VGA_8x8-2y.woff differ diff --git a/web/static/fonts/Web437_Acer_VGA_8x8.woff b/web/static/fonts/Web437_Acer_VGA_8x8.woff new file mode 100644 index 0000000..d13fa7b Binary files /dev/null and b/web/static/fonts/Web437_Acer_VGA_8x8.woff differ diff --git a/web/static/fonts/Web437_Acer_VGA_9x8.woff b/web/static/fonts/Web437_Acer_VGA_9x8.woff new file mode 100644 index 0000000..36c1e47 Binary files /dev/null and b/web/static/fonts/Web437_Acer_VGA_9x8.woff differ diff --git a/web/static/fonts/Web437_Amstrad_PC-2y.woff b/web/static/fonts/Web437_Amstrad_PC-2y.woff new file mode 100644 index 0000000..2a8593f Binary files /dev/null and b/web/static/fonts/Web437_Amstrad_PC-2y.woff differ diff --git a/web/static/fonts/Web437_Amstrad_PC.woff b/web/static/fonts/Web437_Amstrad_PC.woff new file mode 100644 index 0000000..89f7b01 Binary files /dev/null and b/web/static/fonts/Web437_Amstrad_PC.woff differ diff --git a/web/static/fonts/Web437_ApricotPortable.woff b/web/static/fonts/Web437_ApricotPortable.woff new file mode 100644 index 0000000..3b562f5 Binary files /dev/null and b/web/static/fonts/Web437_ApricotPortable.woff differ diff --git a/web/static/fonts/Web437_ApricotXenC.woff b/web/static/fonts/Web437_ApricotXenC.woff new file mode 100644 index 0000000..a2cde2a Binary files /dev/null and b/web/static/fonts/Web437_ApricotXenC.woff differ diff --git a/web/static/fonts/Web437_Apricot_200L-2y.woff b/web/static/fonts/Web437_Apricot_200L-2y.woff new file mode 100644 index 0000000..e4bf1f3 Binary files /dev/null and b/web/static/fonts/Web437_Apricot_200L-2y.woff differ diff --git a/web/static/fonts/Web437_Apricot_200L.woff b/web/static/fonts/Web437_Apricot_200L.woff new file mode 100644 index 0000000..5329aee Binary files /dev/null and b/web/static/fonts/Web437_Apricot_200L.woff differ diff --git a/web/static/fonts/Web437_Apricot_256L-2y.woff b/web/static/fonts/Web437_Apricot_256L-2y.woff new file mode 100644 index 0000000..710985f Binary files /dev/null and b/web/static/fonts/Web437_Apricot_256L-2y.woff differ diff --git a/web/static/fonts/Web437_Apricot_256L.woff b/web/static/fonts/Web437_Apricot_256L.woff new file mode 100644 index 0000000..ef73b30 Binary files /dev/null and b/web/static/fonts/Web437_Apricot_256L.woff differ diff --git a/web/static/fonts/Web437_Apricot_Mono.woff b/web/static/fonts/Web437_Apricot_Mono.woff new file mode 100644 index 0000000..e1041a3 Binary files /dev/null and b/web/static/fonts/Web437_Apricot_Mono.woff differ diff --git a/web/static/fonts/Web437_CL_EagleIII_8x16.woff b/web/static/fonts/Web437_CL_EagleIII_8x16.woff new file mode 100644 index 0000000..f0e9430 Binary files /dev/null and b/web/static/fonts/Web437_CL_EagleIII_8x16.woff differ diff --git a/web/static/fonts/Web437_CL_EagleIII_9x16.woff b/web/static/fonts/Web437_CL_EagleIII_9x16.woff new file mode 100644 index 0000000..1866e81 Binary files /dev/null and b/web/static/fonts/Web437_CL_EagleIII_9x16.woff differ diff --git a/web/static/fonts/Web437_CL_EagleII_8x16.woff b/web/static/fonts/Web437_CL_EagleII_8x16.woff new file mode 100644 index 0000000..342cdc6 Binary files /dev/null and b/web/static/fonts/Web437_CL_EagleII_8x16.woff differ diff --git a/web/static/fonts/Web437_CL_EagleII_9x16.woff b/web/static/fonts/Web437_CL_EagleII_9x16.woff new file mode 100644 index 0000000..38e8b1d Binary files /dev/null and b/web/static/fonts/Web437_CL_EagleII_9x16.woff differ diff --git a/web/static/fonts/Web437_CL_Stingray_8x16.woff b/web/static/fonts/Web437_CL_Stingray_8x16.woff new file mode 100644 index 0000000..94dc555 Binary files /dev/null and b/web/static/fonts/Web437_CL_Stingray_8x16.woff differ diff --git a/web/static/fonts/Web437_CL_Stingray_8x16_bold.woff b/web/static/fonts/Web437_CL_Stingray_8x16_bold.woff new file mode 100644 index 0000000..78cb4fc Binary files /dev/null and b/web/static/fonts/Web437_CL_Stingray_8x16_bold.woff differ diff --git a/web/static/fonts/Web437_CL_Stingray_8x19.woff b/web/static/fonts/Web437_CL_Stingray_8x19.woff new file mode 100644 index 0000000..1781f2f Binary files /dev/null and b/web/static/fonts/Web437_CL_Stingray_8x19.woff differ diff --git a/web/static/fonts/Web437_CL_Stingray_8x19_bold.woff b/web/static/fonts/Web437_CL_Stingray_8x19_bold.woff new file mode 100644 index 0000000..da422df Binary files /dev/null and b/web/static/fonts/Web437_CL_Stingray_8x19_bold.woff differ diff --git a/web/static/fonts/Web437_CompaqThin_8x14.woff b/web/static/fonts/Web437_CompaqThin_8x14.woff new file mode 100644 index 0000000..c448c58 Binary files /dev/null and b/web/static/fonts/Web437_CompaqThin_8x14.woff differ diff --git a/web/static/fonts/Web437_CompaqThin_8x16.woff b/web/static/fonts/Web437_CompaqThin_8x16.woff new file mode 100644 index 0000000..7914e4c Binary files /dev/null and b/web/static/fonts/Web437_CompaqThin_8x16.woff differ diff --git a/web/static/fonts/Web437_CompaqThin_8x8.woff b/web/static/fonts/Web437_CompaqThin_8x8.woff new file mode 100644 index 0000000..62772df Binary files /dev/null and b/web/static/fonts/Web437_CompaqThin_8x8.woff differ diff --git a/web/static/fonts/Web437_Compaq_Port3-2x.woff b/web/static/fonts/Web437_Compaq_Port3-2x.woff new file mode 100644 index 0000000..a859b9f Binary files /dev/null and b/web/static/fonts/Web437_Compaq_Port3-2x.woff differ diff --git a/web/static/fonts/Web437_Compaq_Port3.woff b/web/static/fonts/Web437_Compaq_Port3.woff new file mode 100644 index 0000000..b96d4e5 Binary files /dev/null and b/web/static/fonts/Web437_Compaq_Port3.woff differ diff --git a/web/static/fonts/Web437_Compis.woff b/web/static/fonts/Web437_Compis.woff new file mode 100644 index 0000000..44721a2 Binary files /dev/null and b/web/static/fonts/Web437_Compis.woff differ diff --git a/web/static/fonts/Web437_Copam_BIOS-2y.woff b/web/static/fonts/Web437_Copam_BIOS-2y.woff new file mode 100644 index 0000000..1a301bf Binary files /dev/null and b/web/static/fonts/Web437_Copam_BIOS-2y.woff differ diff --git a/web/static/fonts/Web437_Copam_BIOS.woff b/web/static/fonts/Web437_Copam_BIOS.woff new file mode 100644 index 0000000..1c51092 Binary files /dev/null and b/web/static/fonts/Web437_Copam_BIOS.woff differ diff --git a/web/static/fonts/Web437_Cordata_PPC-21.woff b/web/static/fonts/Web437_Cordata_PPC-21.woff new file mode 100644 index 0000000..bab8c7b Binary files /dev/null and b/web/static/fonts/Web437_Cordata_PPC-21.woff differ diff --git a/web/static/fonts/Web437_Cordata_PPC-400.woff b/web/static/fonts/Web437_Cordata_PPC-400.woff new file mode 100644 index 0000000..5f95c1b Binary files /dev/null and b/web/static/fonts/Web437_Cordata_PPC-400.woff differ diff --git a/web/static/fonts/Web437_DG_One-2y.woff b/web/static/fonts/Web437_DG_One-2y.woff new file mode 100644 index 0000000..5ebc340 Binary files /dev/null and b/web/static/fonts/Web437_DG_One-2y.woff differ diff --git a/web/static/fonts/Web437_DG_One-2y_bold.woff b/web/static/fonts/Web437_DG_One-2y_bold.woff new file mode 100644 index 0000000..38a7339 Binary files /dev/null and b/web/static/fonts/Web437_DG_One-2y_bold.woff differ diff --git a/web/static/fonts/Web437_DG_One.woff b/web/static/fonts/Web437_DG_One.woff new file mode 100644 index 0000000..9bee64f Binary files /dev/null and b/web/static/fonts/Web437_DG_One.woff differ diff --git a/web/static/fonts/Web437_DG_One_bold.woff b/web/static/fonts/Web437_DG_One_bold.woff new file mode 100644 index 0000000..a887854 Binary files /dev/null and b/web/static/fonts/Web437_DG_One_bold.woff differ diff --git a/web/static/fonts/Web437_DOS-V_TWN16.woff b/web/static/fonts/Web437_DOS-V_TWN16.woff new file mode 100644 index 0000000..4a9692a Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_TWN16.woff differ diff --git a/web/static/fonts/Web437_DOS-V_TWN19.woff b/web/static/fonts/Web437_DOS-V_TWN19.woff new file mode 100644 index 0000000..3ebeeb5 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_TWN19.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_ANK16.woff b/web/static/fonts/Web437_DOS-V_re_ANK16.woff new file mode 100644 index 0000000..a61193e Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_ANK16.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_ANK19.woff b/web/static/fonts/Web437_DOS-V_re_ANK19.woff new file mode 100644 index 0000000..6842296 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_ANK19.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_ANK24.woff b/web/static/fonts/Web437_DOS-V_re_ANK24.woff new file mode 100644 index 0000000..a54c6ad Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_ANK24.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_ANK30.woff b/web/static/fonts/Web437_DOS-V_re_ANK30.woff new file mode 100644 index 0000000..623d973 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_ANK30.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_JPN12.woff b/web/static/fonts/Web437_DOS-V_re_JPN12.woff new file mode 100644 index 0000000..04ea332 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_JPN12.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_JPN16.woff b/web/static/fonts/Web437_DOS-V_re_JPN16.woff new file mode 100644 index 0000000..6c91b6e Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_JPN16.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_JPN19.woff b/web/static/fonts/Web437_DOS-V_re_JPN19.woff new file mode 100644 index 0000000..48f154d Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_JPN19.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_JPN24.woff b/web/static/fonts/Web437_DOS-V_re_JPN24.woff new file mode 100644 index 0000000..a77aca7 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_JPN24.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_JPN30.woff b/web/static/fonts/Web437_DOS-V_re_JPN30.woff new file mode 100644 index 0000000..3073f72 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_JPN30.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_PRC16.woff b/web/static/fonts/Web437_DOS-V_re_PRC16.woff new file mode 100644 index 0000000..4ddf047 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_PRC16.woff differ diff --git a/web/static/fonts/Web437_DOS-V_re_PRC19.woff b/web/static/fonts/Web437_DOS-V_re_PRC19.woff new file mode 100644 index 0000000..322c960 Binary files /dev/null and b/web/static/fonts/Web437_DOS-V_re_PRC19.woff differ diff --git a/web/static/fonts/Web437_DTK_BIOS-2y.woff b/web/static/fonts/Web437_DTK_BIOS-2y.woff new file mode 100644 index 0000000..14c9926 Binary files /dev/null and b/web/static/fonts/Web437_DTK_BIOS-2y.woff differ diff --git a/web/static/fonts/Web437_DTK_BIOS.woff b/web/static/fonts/Web437_DTK_BIOS.woff new file mode 100644 index 0000000..7a1cbaf Binary files /dev/null and b/web/static/fonts/Web437_DTK_BIOS.woff differ diff --git a/web/static/fonts/Web437_EagleSpCGA_Alt1-2y.woff b/web/static/fonts/Web437_EagleSpCGA_Alt1-2y.woff new file mode 100644 index 0000000..15a696b Binary files /dev/null and b/web/static/fonts/Web437_EagleSpCGA_Alt1-2y.woff differ diff --git a/web/static/fonts/Web437_EagleSpCGA_Alt1.woff b/web/static/fonts/Web437_EagleSpCGA_Alt1.woff new file mode 100644 index 0000000..a2af2d5 Binary files /dev/null and b/web/static/fonts/Web437_EagleSpCGA_Alt1.woff differ diff --git a/web/static/fonts/Web437_EagleSpCGA_Alt2-2y.woff b/web/static/fonts/Web437_EagleSpCGA_Alt2-2y.woff new file mode 100644 index 0000000..cfee97a Binary files /dev/null and b/web/static/fonts/Web437_EagleSpCGA_Alt2-2y.woff differ diff --git a/web/static/fonts/Web437_EagleSpCGA_Alt2.woff b/web/static/fonts/Web437_EagleSpCGA_Alt2.woff new file mode 100644 index 0000000..dbfdce7 Binary files /dev/null and b/web/static/fonts/Web437_EagleSpCGA_Alt2.woff differ diff --git a/web/static/fonts/Web437_EagleSpCGA_Alt3-2y.woff b/web/static/fonts/Web437_EagleSpCGA_Alt3-2y.woff new file mode 100644 index 0000000..c7562a7 Binary files /dev/null and b/web/static/fonts/Web437_EagleSpCGA_Alt3-2y.woff differ diff --git a/web/static/fonts/Web437_EagleSpCGA_Alt3.woff b/web/static/fonts/Web437_EagleSpCGA_Alt3.woff new file mode 100644 index 0000000..3ac1dfe Binary files /dev/null and b/web/static/fonts/Web437_EagleSpCGA_Alt3.woff differ diff --git a/web/static/fonts/Web437_EpsonMGA-2y.woff b/web/static/fonts/Web437_EpsonMGA-2y.woff new file mode 100644 index 0000000..31f04fb Binary files /dev/null and b/web/static/fonts/Web437_EpsonMGA-2y.woff differ diff --git a/web/static/fonts/Web437_EpsonMGA.woff b/web/static/fonts/Web437_EpsonMGA.woff new file mode 100644 index 0000000..3139daf Binary files /dev/null and b/web/static/fonts/Web437_EpsonMGA.woff differ diff --git a/web/static/fonts/Web437_EpsonMGA_Alt-2y.woff b/web/static/fonts/Web437_EpsonMGA_Alt-2y.woff new file mode 100644 index 0000000..4680e93 Binary files /dev/null and b/web/static/fonts/Web437_EpsonMGA_Alt-2y.woff differ diff --git a/web/static/fonts/Web437_EpsonMGA_Alt.woff b/web/static/fonts/Web437_EpsonMGA_Alt.woff new file mode 100644 index 0000000..0616ea7 Binary files /dev/null and b/web/static/fonts/Web437_EpsonMGA_Alt.woff differ diff --git a/web/static/fonts/Web437_EpsonMGA_Mono.woff b/web/static/fonts/Web437_EpsonMGA_Mono.woff new file mode 100644 index 0000000..4b132bf Binary files /dev/null and b/web/static/fonts/Web437_EpsonMGA_Mono.woff differ diff --git a/web/static/fonts/Web437_EuroPC_CGA-2y.woff b/web/static/fonts/Web437_EuroPC_CGA-2y.woff new file mode 100644 index 0000000..ef56d5d Binary files /dev/null and b/web/static/fonts/Web437_EuroPC_CGA-2y.woff differ diff --git a/web/static/fonts/Web437_EuroPC_CGA.woff b/web/static/fonts/Web437_EuroPC_CGA.woff new file mode 100644 index 0000000..89b84ac Binary files /dev/null and b/web/static/fonts/Web437_EuroPC_CGA.woff differ diff --git a/web/static/fonts/Web437_EuroPC_Mono.woff b/web/static/fonts/Web437_EuroPC_Mono.woff new file mode 100644 index 0000000..2692893 Binary files /dev/null and b/web/static/fonts/Web437_EuroPC_Mono.woff differ diff --git a/web/static/fonts/Web437_EverexME_5x8.woff b/web/static/fonts/Web437_EverexME_5x8.woff new file mode 100644 index 0000000..1a84a60 Binary files /dev/null and b/web/static/fonts/Web437_EverexME_5x8.woff differ diff --git a/web/static/fonts/Web437_EverexME_7x8.woff b/web/static/fonts/Web437_EverexME_7x8.woff new file mode 100644 index 0000000..5b4c9d4 Binary files /dev/null and b/web/static/fonts/Web437_EverexME_7x8.woff differ diff --git a/web/static/fonts/Web437_EverexME_8x16.woff b/web/static/fonts/Web437_EverexME_8x16.woff new file mode 100644 index 0000000..1a47ea4 Binary files /dev/null and b/web/static/fonts/Web437_EverexME_8x16.woff differ diff --git a/web/static/fonts/Web437_FMTowns_re_8x16-2x.woff b/web/static/fonts/Web437_FMTowns_re_8x16-2x.woff new file mode 100644 index 0000000..1424b2a Binary files /dev/null and b/web/static/fonts/Web437_FMTowns_re_8x16-2x.woff differ diff --git a/web/static/fonts/Web437_FMTowns_re_8x16.woff b/web/static/fonts/Web437_FMTowns_re_8x16.woff new file mode 100644 index 0000000..702078a Binary files /dev/null and b/web/static/fonts/Web437_FMTowns_re_8x16.woff differ diff --git a/web/static/fonts/Web437_FMTowns_re_8x8.woff b/web/static/fonts/Web437_FMTowns_re_8x8.woff new file mode 100644 index 0000000..526cb89 Binary files /dev/null and b/web/static/fonts/Web437_FMTowns_re_8x8.woff differ diff --git a/web/static/fonts/Web437_HP_100LX_10x11.woff b/web/static/fonts/Web437_HP_100LX_10x11.woff new file mode 100644 index 0000000..223e168 Binary files /dev/null and b/web/static/fonts/Web437_HP_100LX_10x11.woff differ diff --git a/web/static/fonts/Web437_HP_100LX_16x12.woff b/web/static/fonts/Web437_HP_100LX_16x12.woff new file mode 100644 index 0000000..2eaa62e Binary files /dev/null and b/web/static/fonts/Web437_HP_100LX_16x12.woff differ diff --git a/web/static/fonts/Web437_HP_100LX_6x8-2x.woff b/web/static/fonts/Web437_HP_100LX_6x8-2x.woff new file mode 100644 index 0000000..3c48c55 Binary files /dev/null and b/web/static/fonts/Web437_HP_100LX_6x8-2x.woff differ diff --git a/web/static/fonts/Web437_HP_100LX_6x8.woff b/web/static/fonts/Web437_HP_100LX_6x8.woff new file mode 100644 index 0000000..5d6069c Binary files /dev/null and b/web/static/fonts/Web437_HP_100LX_6x8.woff differ diff --git a/web/static/fonts/Web437_HP_100LX_8x8-2x.woff b/web/static/fonts/Web437_HP_100LX_8x8-2x.woff new file mode 100644 index 0000000..87304c6 Binary files /dev/null and b/web/static/fonts/Web437_HP_100LX_8x8-2x.woff differ diff --git a/web/static/fonts/Web437_HP_100LX_8x8.woff b/web/static/fonts/Web437_HP_100LX_8x8.woff new file mode 100644 index 0000000..f60db64 Binary files /dev/null and b/web/static/fonts/Web437_HP_100LX_8x8.woff differ diff --git a/web/static/fonts/Web437_HP_150_re.woff b/web/static/fonts/Web437_HP_150_re.woff new file mode 100644 index 0000000..3eaaf6d Binary files /dev/null and b/web/static/fonts/Web437_HP_150_re.woff differ diff --git a/web/static/fonts/Web437_IBM_3270pc.woff b/web/static/fonts/Web437_IBM_3270pc.woff new file mode 100644 index 0000000..fb9cd72 Binary files /dev/null and b/web/static/fonts/Web437_IBM_3270pc.woff differ diff --git a/web/static/fonts/Web437_IBM_BIOS-2x.woff b/web/static/fonts/Web437_IBM_BIOS-2x.woff new file mode 100644 index 0000000..c5fe090 Binary files /dev/null and b/web/static/fonts/Web437_IBM_BIOS-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_BIOS-2y.woff b/web/static/fonts/Web437_IBM_BIOS-2y.woff new file mode 100644 index 0000000..860baf5 Binary files /dev/null and b/web/static/fonts/Web437_IBM_BIOS-2y.woff differ diff --git a/web/static/fonts/Web437_IBM_BIOS.woff b/web/static/fonts/Web437_IBM_BIOS.woff new file mode 100644 index 0000000..9daecb3 Binary files /dev/null and b/web/static/fonts/Web437_IBM_BIOS.woff differ diff --git a/web/static/fonts/Web437_IBM_CGA-2y.woff b/web/static/fonts/Web437_IBM_CGA-2y.woff new file mode 100644 index 0000000..5967b6f Binary files /dev/null and b/web/static/fonts/Web437_IBM_CGA-2y.woff differ diff --git a/web/static/fonts/Web437_IBM_CGA.woff b/web/static/fonts/Web437_IBM_CGA.woff new file mode 100644 index 0000000..fe8f17a Binary files /dev/null and b/web/static/fonts/Web437_IBM_CGA.woff differ diff --git a/web/static/fonts/Web437_IBM_CGAthin-2y.woff b/web/static/fonts/Web437_IBM_CGAthin-2y.woff new file mode 100644 index 0000000..99bd14a Binary files /dev/null and b/web/static/fonts/Web437_IBM_CGAthin-2y.woff differ diff --git a/web/static/fonts/Web437_IBM_CGAthin.woff b/web/static/fonts/Web437_IBM_CGAthin.woff new file mode 100644 index 0000000..c7efcf1 Binary files /dev/null and b/web/static/fonts/Web437_IBM_CGAthin.woff differ diff --git a/web/static/fonts/Web437_IBM_Conv-2x.woff b/web/static/fonts/Web437_IBM_Conv-2x.woff new file mode 100644 index 0000000..6ffe99d Binary files /dev/null and b/web/static/fonts/Web437_IBM_Conv-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_Conv-2y.woff b/web/static/fonts/Web437_IBM_Conv-2y.woff new file mode 100644 index 0000000..9c07239 Binary files /dev/null and b/web/static/fonts/Web437_IBM_Conv-2y.woff differ diff --git a/web/static/fonts/Web437_IBM_Conv.woff b/web/static/fonts/Web437_IBM_Conv.woff new file mode 100644 index 0000000..656f15a Binary files /dev/null and b/web/static/fonts/Web437_IBM_Conv.woff differ diff --git a/web/static/fonts/Web437_IBM_DOS_ISO8-2x.woff b/web/static/fonts/Web437_IBM_DOS_ISO8-2x.woff new file mode 100644 index 0000000..f40721f Binary files /dev/null and b/web/static/fonts/Web437_IBM_DOS_ISO8-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_DOS_ISO8.woff b/web/static/fonts/Web437_IBM_DOS_ISO8.woff new file mode 100644 index 0000000..d5b9bac Binary files /dev/null and b/web/static/fonts/Web437_IBM_DOS_ISO8.woff differ diff --git a/web/static/fonts/Web437_IBM_DOS_ISO9-2x.woff b/web/static/fonts/Web437_IBM_DOS_ISO9-2x.woff new file mode 100644 index 0000000..e5f89ee Binary files /dev/null and b/web/static/fonts/Web437_IBM_DOS_ISO9-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_DOS_ISO9.woff b/web/static/fonts/Web437_IBM_DOS_ISO9.woff new file mode 100644 index 0000000..fe3eda9 Binary files /dev/null and b/web/static/fonts/Web437_IBM_DOS_ISO9.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_8x14-2x.woff b/web/static/fonts/Web437_IBM_EGA_8x14-2x.woff new file mode 100644 index 0000000..77b7fef Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_8x14-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_8x14.woff b/web/static/fonts/Web437_IBM_EGA_8x14.woff new file mode 100644 index 0000000..84efc99 Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_8x14.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_8x8-2x.woff b/web/static/fonts/Web437_IBM_EGA_8x8-2x.woff new file mode 100644 index 0000000..63de4fb Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_8x8-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_8x8.woff b/web/static/fonts/Web437_IBM_EGA_8x8.woff new file mode 100644 index 0000000..35506d2 Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_8x8.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_9x14-2x.woff b/web/static/fonts/Web437_IBM_EGA_9x14-2x.woff new file mode 100644 index 0000000..c301231 Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_9x14-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_9x14.woff b/web/static/fonts/Web437_IBM_EGA_9x14.woff new file mode 100644 index 0000000..e70ffa2 Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_9x14.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_9x8-2x.woff b/web/static/fonts/Web437_IBM_EGA_9x8-2x.woff new file mode 100644 index 0000000..05a30bd Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_9x8-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_EGA_9x8.woff b/web/static/fonts/Web437_IBM_EGA_9x8.woff new file mode 100644 index 0000000..1e77b7e Binary files /dev/null and b/web/static/fonts/Web437_IBM_EGA_9x8.woff differ diff --git a/web/static/fonts/Web437_IBM_MDA.woff b/web/static/fonts/Web437_IBM_MDA.woff new file mode 100644 index 0000000..677f562 Binary files /dev/null and b/web/static/fonts/Web437_IBM_MDA.woff differ diff --git a/web/static/fonts/Web437_IBM_Model30r0-2x.woff b/web/static/fonts/Web437_IBM_Model30r0-2x.woff new file mode 100644 index 0000000..1d5c9db Binary files /dev/null and b/web/static/fonts/Web437_IBM_Model30r0-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_Model30r0.woff b/web/static/fonts/Web437_IBM_Model30r0.woff new file mode 100644 index 0000000..0756047 Binary files /dev/null and b/web/static/fonts/Web437_IBM_Model30r0.woff differ diff --git a/web/static/fonts/Web437_IBM_Model3x_Alt1.woff b/web/static/fonts/Web437_IBM_Model3x_Alt1.woff new file mode 100644 index 0000000..de87cb1 Binary files /dev/null and b/web/static/fonts/Web437_IBM_Model3x_Alt1.woff differ diff --git a/web/static/fonts/Web437_IBM_Model3x_Alt2.woff b/web/static/fonts/Web437_IBM_Model3x_Alt2.woff new file mode 100644 index 0000000..b088d34 Binary files /dev/null and b/web/static/fonts/Web437_IBM_Model3x_Alt2.woff differ diff --git a/web/static/fonts/Web437_IBM_Model3x_Alt3.woff b/web/static/fonts/Web437_IBM_Model3x_Alt3.woff new file mode 100644 index 0000000..6f647d0 Binary files /dev/null and b/web/static/fonts/Web437_IBM_Model3x_Alt3.woff differ diff --git a/web/static/fonts/Web437_IBM_Model3x_Alt4.woff b/web/static/fonts/Web437_IBM_Model3x_Alt4.woff new file mode 100644 index 0000000..26b82bc Binary files /dev/null and b/web/static/fonts/Web437_IBM_Model3x_Alt4.woff differ diff --git a/web/static/fonts/Web437_IBM_PGC-2x.woff b/web/static/fonts/Web437_IBM_PGC-2x.woff new file mode 100644 index 0000000..e0b4aaa Binary files /dev/null and b/web/static/fonts/Web437_IBM_PGC-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_PGC.woff b/web/static/fonts/Web437_IBM_PGC.woff new file mode 100644 index 0000000..23a07a1 Binary files /dev/null and b/web/static/fonts/Web437_IBM_PGC.woff differ diff --git a/web/static/fonts/Web437_IBM_PS-55_re.woff b/web/static/fonts/Web437_IBM_PS-55_re.woff new file mode 100644 index 0000000..09cfd77 Binary files /dev/null and b/web/static/fonts/Web437_IBM_PS-55_re.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_8x14-2x.woff b/web/static/fonts/Web437_IBM_VGA_8x14-2x.woff new file mode 100644 index 0000000..60529c8 Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_8x14-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_8x14.woff b/web/static/fonts/Web437_IBM_VGA_8x14.woff new file mode 100644 index 0000000..79c2b66 Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_8x14.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_8x16-2x.woff b/web/static/fonts/Web437_IBM_VGA_8x16-2x.woff new file mode 100644 index 0000000..894dc88 Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_8x16-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_8x16.woff b/web/static/fonts/Web437_IBM_VGA_8x16.woff new file mode 100644 index 0000000..1f1508d Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_8x16.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_9x14-2x.woff b/web/static/fonts/Web437_IBM_VGA_9x14-2x.woff new file mode 100644 index 0000000..1b1184f Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_9x14-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_9x14.woff b/web/static/fonts/Web437_IBM_VGA_9x14.woff new file mode 100644 index 0000000..3cea8b2 Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_9x14.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_9x16-2x.woff b/web/static/fonts/Web437_IBM_VGA_9x16-2x.woff new file mode 100644 index 0000000..34cdcf8 Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_9x16-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_9x16.woff b/web/static/fonts/Web437_IBM_VGA_9x16.woff new file mode 100644 index 0000000..8ff3510 Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_9x16.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_9x8-2x.woff b/web/static/fonts/Web437_IBM_VGA_9x8-2x.woff new file mode 100644 index 0000000..0a5b0c2 Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_9x8-2x.woff differ diff --git a/web/static/fonts/Web437_IBM_VGA_9x8.woff b/web/static/fonts/Web437_IBM_VGA_9x8.woff new file mode 100644 index 0000000..a79352d Binary files /dev/null and b/web/static/fonts/Web437_IBM_VGA_9x8.woff differ diff --git a/web/static/fonts/Web437_IBM_XGA-AI_12x20.woff b/web/static/fonts/Web437_IBM_XGA-AI_12x20.woff new file mode 100644 index 0000000..dab7e96 Binary files /dev/null and b/web/static/fonts/Web437_IBM_XGA-AI_12x20.woff differ diff --git a/web/static/fonts/Web437_IBM_XGA-AI_12x23.woff b/web/static/fonts/Web437_IBM_XGA-AI_12x23.woff new file mode 100644 index 0000000..d9e764d Binary files /dev/null and b/web/static/fonts/Web437_IBM_XGA-AI_12x23.woff differ diff --git a/web/static/fonts/Web437_IBM_XGA-AI_7x15.woff b/web/static/fonts/Web437_IBM_XGA-AI_7x15.woff new file mode 100644 index 0000000..6faa01f Binary files /dev/null and b/web/static/fonts/Web437_IBM_XGA-AI_7x15.woff differ diff --git a/web/static/fonts/Web437_IGS_VGA_8x16.woff b/web/static/fonts/Web437_IGS_VGA_8x16.woff new file mode 100644 index 0000000..6e0104b Binary files /dev/null and b/web/static/fonts/Web437_IGS_VGA_8x16.woff differ diff --git a/web/static/fonts/Web437_IGS_VGA_9x16.woff b/web/static/fonts/Web437_IGS_VGA_9x16.woff new file mode 100644 index 0000000..8521543 Binary files /dev/null and b/web/static/fonts/Web437_IGS_VGA_9x16.woff differ diff --git a/web/static/fonts/Web437_ITT_Xtra-2y.woff b/web/static/fonts/Web437_ITT_Xtra-2y.woff new file mode 100644 index 0000000..af66678 Binary files /dev/null and b/web/static/fonts/Web437_ITT_Xtra-2y.woff differ diff --git a/web/static/fonts/Web437_ITT_Xtra.woff b/web/static/fonts/Web437_ITT_Xtra.woff new file mode 100644 index 0000000..37e10f6 Binary files /dev/null and b/web/static/fonts/Web437_ITT_Xtra.woff differ diff --git a/web/static/fonts/Web437_Kaypro2K_G-2y.woff b/web/static/fonts/Web437_Kaypro2K_G-2y.woff new file mode 100644 index 0000000..9e5b7aa Binary files /dev/null and b/web/static/fonts/Web437_Kaypro2K_G-2y.woff differ diff --git a/web/static/fonts/Web437_Kaypro2K_G.woff b/web/static/fonts/Web437_Kaypro2K_G.woff new file mode 100644 index 0000000..de7a0e9 Binary files /dev/null and b/web/static/fonts/Web437_Kaypro2K_G.woff differ diff --git a/web/static/fonts/Web437_LE_Model_D_CGA-2y.woff b/web/static/fonts/Web437_LE_Model_D_CGA-2y.woff new file mode 100644 index 0000000..a34026e Binary files /dev/null and b/web/static/fonts/Web437_LE_Model_D_CGA-2y.woff differ diff --git a/web/static/fonts/Web437_LE_Model_D_CGA.woff b/web/static/fonts/Web437_LE_Model_D_CGA.woff new file mode 100644 index 0000000..6d7e05a Binary files /dev/null and b/web/static/fonts/Web437_LE_Model_D_CGA.woff differ diff --git a/web/static/fonts/Web437_LE_Model_D_Mono.woff b/web/static/fonts/Web437_LE_Model_D_Mono.woff new file mode 100644 index 0000000..a464a1d Binary files /dev/null and b/web/static/fonts/Web437_LE_Model_D_Mono.woff differ diff --git a/web/static/fonts/Web437_MBytePC230_8x16.woff b/web/static/fonts/Web437_MBytePC230_8x16.woff new file mode 100644 index 0000000..14ed558 Binary files /dev/null and b/web/static/fonts/Web437_MBytePC230_8x16.woff differ diff --git a/web/static/fonts/Web437_MBytePC230_CGA-2y.woff b/web/static/fonts/Web437_MBytePC230_CGA-2y.woff new file mode 100644 index 0000000..ba95952 Binary files /dev/null and b/web/static/fonts/Web437_MBytePC230_CGA-2y.woff differ diff --git a/web/static/fonts/Web437_MBytePC230_CGA.woff b/web/static/fonts/Web437_MBytePC230_CGA.woff new file mode 100644 index 0000000..a5cc805 Binary files /dev/null and b/web/static/fonts/Web437_MBytePC230_CGA.woff differ diff --git a/web/static/fonts/Web437_MBytePC230_EGA.woff b/web/static/fonts/Web437_MBytePC230_EGA.woff new file mode 100644 index 0000000..c896ad5 Binary files /dev/null and b/web/static/fonts/Web437_MBytePC230_EGA.woff differ diff --git a/web/static/fonts/Web437_MBytePC230_Mono.woff b/web/static/fonts/Web437_MBytePC230_Mono.woff new file mode 100644 index 0000000..6d9ea1e Binary files /dev/null and b/web/static/fonts/Web437_MBytePC230_Mono.woff differ diff --git a/web/static/fonts/Web437_Master_512-2y.woff b/web/static/fonts/Web437_Master_512-2y.woff new file mode 100644 index 0000000..0622dde Binary files /dev/null and b/web/static/fonts/Web437_Master_512-2y.woff differ diff --git a/web/static/fonts/Web437_Master_512-2y_bold.woff b/web/static/fonts/Web437_Master_512-2y_bold.woff new file mode 100644 index 0000000..3c75008 Binary files /dev/null and b/web/static/fonts/Web437_Master_512-2y_bold.woff differ diff --git a/web/static/fonts/Web437_Master_512-M7.woff b/web/static/fonts/Web437_Master_512-M7.woff new file mode 100644 index 0000000..750bb88 Binary files /dev/null and b/web/static/fonts/Web437_Master_512-M7.woff differ diff --git a/web/static/fonts/Web437_Master_512-M7_bold.woff b/web/static/fonts/Web437_Master_512-M7_bold.woff new file mode 100644 index 0000000..74e54fe Binary files /dev/null and b/web/static/fonts/Web437_Master_512-M7_bold.woff differ diff --git a/web/static/fonts/Web437_Master_512.woff b/web/static/fonts/Web437_Master_512.woff new file mode 100644 index 0000000..e37dd6f Binary files /dev/null and b/web/static/fonts/Web437_Master_512.woff differ diff --git a/web/static/fonts/Web437_Master_512_bold.woff b/web/static/fonts/Web437_Master_512_bold.woff new file mode 100644 index 0000000..d3be3bc Binary files /dev/null and b/web/static/fonts/Web437_Master_512_bold.woff differ diff --git a/web/static/fonts/Web437_Mindset-2x.woff b/web/static/fonts/Web437_Mindset-2x.woff new file mode 100644 index 0000000..792b938 Binary files /dev/null and b/web/static/fonts/Web437_Mindset-2x.woff differ diff --git a/web/static/fonts/Web437_Mindset-2y.woff b/web/static/fonts/Web437_Mindset-2y.woff new file mode 100644 index 0000000..7536e50 Binary files /dev/null and b/web/static/fonts/Web437_Mindset-2y.woff differ diff --git a/web/static/fonts/Web437_Mindset.woff b/web/static/fonts/Web437_Mindset.woff new file mode 100644 index 0000000..8401df9 Binary files /dev/null and b/web/static/fonts/Web437_Mindset.woff differ diff --git a/web/static/fonts/Web437_NEC_APC3_8x16-2x.woff b/web/static/fonts/Web437_NEC_APC3_8x16-2x.woff new file mode 100644 index 0000000..a6977d8 Binary files /dev/null and b/web/static/fonts/Web437_NEC_APC3_8x16-2x.woff differ diff --git a/web/static/fonts/Web437_NEC_APC3_8x16.woff b/web/static/fonts/Web437_NEC_APC3_8x16.woff new file mode 100644 index 0000000..cb06dd7 Binary files /dev/null and b/web/static/fonts/Web437_NEC_APC3_8x16.woff differ diff --git a/web/static/fonts/Web437_NEC_APC3_8x8-2y.woff b/web/static/fonts/Web437_NEC_APC3_8x8-2y.woff new file mode 100644 index 0000000..8efe53a Binary files /dev/null and b/web/static/fonts/Web437_NEC_APC3_8x8-2y.woff differ diff --git a/web/static/fonts/Web437_NEC_APC3_8x8.woff b/web/static/fonts/Web437_NEC_APC3_8x8.woff new file mode 100644 index 0000000..06728ce Binary files /dev/null and b/web/static/fonts/Web437_NEC_APC3_8x8.woff differ diff --git a/web/static/fonts/Web437_NEC_MultiSpeed-2x.woff b/web/static/fonts/Web437_NEC_MultiSpeed-2x.woff new file mode 100644 index 0000000..69d4399 Binary files /dev/null and b/web/static/fonts/Web437_NEC_MultiSpeed-2x.woff differ diff --git a/web/static/fonts/Web437_NEC_MultiSpeed-2x_bold.woff b/web/static/fonts/Web437_NEC_MultiSpeed-2x_bold.woff new file mode 100644 index 0000000..16688dd Binary files /dev/null and b/web/static/fonts/Web437_NEC_MultiSpeed-2x_bold.woff differ diff --git a/web/static/fonts/Web437_NEC_MultiSpeed.woff b/web/static/fonts/Web437_NEC_MultiSpeed.woff new file mode 100644 index 0000000..8028efd Binary files /dev/null and b/web/static/fonts/Web437_NEC_MultiSpeed.woff differ diff --git a/web/static/fonts/Web437_NEC_MultiSpeed_bold.woff b/web/static/fonts/Web437_NEC_MultiSpeed_bold.woff new file mode 100644 index 0000000..38e0287 Binary files /dev/null and b/web/static/fonts/Web437_NEC_MultiSpeed_bold.woff differ diff --git a/web/static/fonts/Web437_Nix8810_M15.woff b/web/static/fonts/Web437_Nix8810_M15.woff new file mode 100644 index 0000000..b452fbf Binary files /dev/null and b/web/static/fonts/Web437_Nix8810_M15.woff differ diff --git a/web/static/fonts/Web437_Nix8810_M16.woff b/web/static/fonts/Web437_Nix8810_M16.woff new file mode 100644 index 0000000..45f2b56 Binary files /dev/null and b/web/static/fonts/Web437_Nix8810_M16.woff differ diff --git a/web/static/fonts/Web437_Nix8810_M35-2y.woff b/web/static/fonts/Web437_Nix8810_M35-2y.woff new file mode 100644 index 0000000..2c564f3 Binary files /dev/null and b/web/static/fonts/Web437_Nix8810_M35-2y.woff differ diff --git a/web/static/fonts/Web437_Nix8810_M35.woff b/web/static/fonts/Web437_Nix8810_M35.woff new file mode 100644 index 0000000..433bac3 Binary files /dev/null and b/web/static/fonts/Web437_Nix8810_M35.woff differ diff --git a/web/static/fonts/Web437_OlivettiThin_8x14.woff b/web/static/fonts/Web437_OlivettiThin_8x14.woff new file mode 100644 index 0000000..96a3803 Binary files /dev/null and b/web/static/fonts/Web437_OlivettiThin_8x14.woff differ diff --git a/web/static/fonts/Web437_OlivettiThin_8x16.woff b/web/static/fonts/Web437_OlivettiThin_8x16.woff new file mode 100644 index 0000000..9a6c9d7 Binary files /dev/null and b/web/static/fonts/Web437_OlivettiThin_8x16.woff differ diff --git a/web/static/fonts/Web437_OlivettiThin_9x14.woff b/web/static/fonts/Web437_OlivettiThin_9x14.woff new file mode 100644 index 0000000..b43b457 Binary files /dev/null and b/web/static/fonts/Web437_OlivettiThin_9x14.woff differ diff --git a/web/static/fonts/Web437_OlivettiThin_9x16.woff b/web/static/fonts/Web437_OlivettiThin_9x16.woff new file mode 100644 index 0000000..8686839 Binary files /dev/null and b/web/static/fonts/Web437_OlivettiThin_9x16.woff differ diff --git a/web/static/fonts/Web437_Olivetti_M15-2y.woff b/web/static/fonts/Web437_Olivetti_M15-2y.woff new file mode 100644 index 0000000..41b83b2 Binary files /dev/null and b/web/static/fonts/Web437_Olivetti_M15-2y.woff differ diff --git a/web/static/fonts/Web437_Olivetti_M15.woff b/web/static/fonts/Web437_Olivetti_M15.woff new file mode 100644 index 0000000..212a1a8 Binary files /dev/null and b/web/static/fonts/Web437_Olivetti_M15.woff differ diff --git a/web/static/fonts/Web437_Paradise132_7x16.woff b/web/static/fonts/Web437_Paradise132_7x16.woff new file mode 100644 index 0000000..2470eed Binary files /dev/null and b/web/static/fonts/Web437_Paradise132_7x16.woff differ diff --git a/web/static/fonts/Web437_Paradise132_7x9.woff b/web/static/fonts/Web437_Paradise132_7x9.woff new file mode 100644 index 0000000..3c6c103 Binary files /dev/null and b/web/static/fonts/Web437_Paradise132_7x9.woff differ diff --git a/web/static/fonts/Web437_Philips_YES_G-2x.woff b/web/static/fonts/Web437_Philips_YES_G-2x.woff new file mode 100644 index 0000000..ca1e9df Binary files /dev/null and b/web/static/fonts/Web437_Philips_YES_G-2x.woff differ diff --git a/web/static/fonts/Web437_Philips_YES_G-2y.woff b/web/static/fonts/Web437_Philips_YES_G-2y.woff new file mode 100644 index 0000000..d6c2808 Binary files /dev/null and b/web/static/fonts/Web437_Philips_YES_G-2y.woff differ diff --git a/web/static/fonts/Web437_Philips_YES_G.woff b/web/static/fonts/Web437_Philips_YES_G.woff new file mode 100644 index 0000000..09a7767 Binary files /dev/null and b/web/static/fonts/Web437_Philips_YES_G.woff differ diff --git a/web/static/fonts/Web437_Philips_YES_T-2y.woff b/web/static/fonts/Web437_Philips_YES_T-2y.woff new file mode 100644 index 0000000..ecba3fd Binary files /dev/null and b/web/static/fonts/Web437_Philips_YES_T-2y.woff differ diff --git a/web/static/fonts/Web437_Philips_YES_T.woff b/web/static/fonts/Web437_Philips_YES_T.woff new file mode 100644 index 0000000..fdc0c83 Binary files /dev/null and b/web/static/fonts/Web437_Philips_YES_T.woff differ diff --git a/web/static/fonts/Web437_PhoenixEGA_8x14.woff b/web/static/fonts/Web437_PhoenixEGA_8x14.woff new file mode 100644 index 0000000..56bf74c Binary files /dev/null and b/web/static/fonts/Web437_PhoenixEGA_8x14.woff differ diff --git a/web/static/fonts/Web437_PhoenixEGA_8x16.woff b/web/static/fonts/Web437_PhoenixEGA_8x16.woff new file mode 100644 index 0000000..6ff3f0c Binary files /dev/null and b/web/static/fonts/Web437_PhoenixEGA_8x16.woff differ diff --git a/web/static/fonts/Web437_PhoenixEGA_8x8-2y.woff b/web/static/fonts/Web437_PhoenixEGA_8x8-2y.woff new file mode 100644 index 0000000..8bb59df Binary files /dev/null and b/web/static/fonts/Web437_PhoenixEGA_8x8-2y.woff differ diff --git a/web/static/fonts/Web437_PhoenixEGA_8x8.woff b/web/static/fonts/Web437_PhoenixEGA_8x8.woff new file mode 100644 index 0000000..9609a47 Binary files /dev/null and b/web/static/fonts/Web437_PhoenixEGA_8x8.woff differ diff --git a/web/static/fonts/Web437_PhoenixEGA_9x14.woff b/web/static/fonts/Web437_PhoenixEGA_9x14.woff new file mode 100644 index 0000000..1222a9d Binary files /dev/null and b/web/static/fonts/Web437_PhoenixEGA_9x14.woff differ diff --git a/web/static/fonts/Web437_PhoenixVGA_8x14.woff b/web/static/fonts/Web437_PhoenixVGA_8x14.woff new file mode 100644 index 0000000..5ac2522 Binary files /dev/null and b/web/static/fonts/Web437_PhoenixVGA_8x14.woff differ diff --git a/web/static/fonts/Web437_PhoenixVGA_8x16.woff b/web/static/fonts/Web437_PhoenixVGA_8x16.woff new file mode 100644 index 0000000..9ac9959 Binary files /dev/null and b/web/static/fonts/Web437_PhoenixVGA_8x16.woff differ diff --git a/web/static/fonts/Web437_PhoenixVGA_8x8.woff b/web/static/fonts/Web437_PhoenixVGA_8x8.woff new file mode 100644 index 0000000..80bef7d Binary files /dev/null and b/web/static/fonts/Web437_PhoenixVGA_8x8.woff differ diff --git a/web/static/fonts/Web437_PhoenixVGA_9x14.woff b/web/static/fonts/Web437_PhoenixVGA_9x14.woff new file mode 100644 index 0000000..0aaf954 Binary files /dev/null and b/web/static/fonts/Web437_PhoenixVGA_9x14.woff differ diff --git a/web/static/fonts/Web437_PhoenixVGA_9x16.woff b/web/static/fonts/Web437_PhoenixVGA_9x16.woff new file mode 100644 index 0000000..644d6fb Binary files /dev/null and b/web/static/fonts/Web437_PhoenixVGA_9x16.woff differ diff --git a/web/static/fonts/Web437_PhoenixVGA_9x8.woff b/web/static/fonts/Web437_PhoenixVGA_9x8.woff new file mode 100644 index 0000000..0d85e6d Binary files /dev/null and b/web/static/fonts/Web437_PhoenixVGA_9x8.woff differ diff --git a/web/static/fonts/Web437_Phoenix_BIOS-2y.woff b/web/static/fonts/Web437_Phoenix_BIOS-2y.woff new file mode 100644 index 0000000..e849ae8 Binary files /dev/null and b/web/static/fonts/Web437_Phoenix_BIOS-2y.woff differ diff --git a/web/static/fonts/Web437_Phoenix_BIOS.woff b/web/static/fonts/Web437_Phoenix_BIOS.woff new file mode 100644 index 0000000..75a0b5e Binary files /dev/null and b/web/static/fonts/Web437_Phoenix_BIOS.woff differ diff --git a/web/static/fonts/Web437_Portfolio_6x8.woff b/web/static/fonts/Web437_Portfolio_6x8.woff new file mode 100644 index 0000000..6f39add Binary files /dev/null and b/web/static/fonts/Web437_Portfolio_6x8.woff differ diff --git a/web/static/fonts/Web437_RM_Nimbus-2y.woff b/web/static/fonts/Web437_RM_Nimbus-2y.woff new file mode 100644 index 0000000..e6f5173 Binary files /dev/null and b/web/static/fonts/Web437_RM_Nimbus-2y.woff differ diff --git a/web/static/fonts/Web437_RM_Nimbus.woff b/web/static/fonts/Web437_RM_Nimbus.woff new file mode 100644 index 0000000..12aac90 Binary files /dev/null and b/web/static/fonts/Web437_RM_Nimbus.woff differ diff --git a/web/static/fonts/Web437_Rainbow100_re_132.woff b/web/static/fonts/Web437_Rainbow100_re_132.woff new file mode 100644 index 0000000..43de2a2 Binary files /dev/null and b/web/static/fonts/Web437_Rainbow100_re_132.woff differ diff --git a/web/static/fonts/Web437_Rainbow100_re_40.woff b/web/static/fonts/Web437_Rainbow100_re_40.woff new file mode 100644 index 0000000..e7203cf Binary files /dev/null and b/web/static/fonts/Web437_Rainbow100_re_40.woff differ diff --git a/web/static/fonts/Web437_Rainbow100_re_66.woff b/web/static/fonts/Web437_Rainbow100_re_66.woff new file mode 100644 index 0000000..b1d0884 Binary files /dev/null and b/web/static/fonts/Web437_Rainbow100_re_66.woff differ diff --git a/web/static/fonts/Web437_Rainbow100_re_80.woff b/web/static/fonts/Web437_Rainbow100_re_80.woff new file mode 100644 index 0000000..19b6dbb Binary files /dev/null and b/web/static/fonts/Web437_Rainbow100_re_80.woff differ diff --git a/web/static/fonts/Web437_Robotron_A7100.woff b/web/static/fonts/Web437_Robotron_A7100.woff new file mode 100644 index 0000000..03e311d Binary files /dev/null and b/web/static/fonts/Web437_Robotron_A7100.woff differ diff --git a/web/static/fonts/Web437_STB_AutoEGA_8x14.woff b/web/static/fonts/Web437_STB_AutoEGA_8x14.woff new file mode 100644 index 0000000..7f88003 Binary files /dev/null and b/web/static/fonts/Web437_STB_AutoEGA_8x14.woff differ diff --git a/web/static/fonts/Web437_STB_AutoEGA_9x14.woff b/web/static/fonts/Web437_STB_AutoEGA_9x14.woff new file mode 100644 index 0000000..5b51b23 Binary files /dev/null and b/web/static/fonts/Web437_STB_AutoEGA_9x14.woff differ diff --git a/web/static/fonts/Web437_SanyoMBC16-2y.woff b/web/static/fonts/Web437_SanyoMBC16-2y.woff new file mode 100644 index 0000000..9da6d1e Binary files /dev/null and b/web/static/fonts/Web437_SanyoMBC16-2y.woff differ diff --git a/web/static/fonts/Web437_SanyoMBC16.woff b/web/static/fonts/Web437_SanyoMBC16.woff new file mode 100644 index 0000000..966c868 Binary files /dev/null and b/web/static/fonts/Web437_SanyoMBC16.woff differ diff --git a/web/static/fonts/Web437_SanyoMBC55x-2y.woff b/web/static/fonts/Web437_SanyoMBC55x-2y.woff new file mode 100644 index 0000000..a3fb0cb Binary files /dev/null and b/web/static/fonts/Web437_SanyoMBC55x-2y.woff differ diff --git a/web/static/fonts/Web437_SanyoMBC55x.woff b/web/static/fonts/Web437_SanyoMBC55x.woff new file mode 100644 index 0000000..38203b6 Binary files /dev/null and b/web/static/fonts/Web437_SanyoMBC55x.woff differ diff --git a/web/static/fonts/Web437_SanyoMBC775-2y.woff b/web/static/fonts/Web437_SanyoMBC775-2y.woff new file mode 100644 index 0000000..39ed8fa Binary files /dev/null and b/web/static/fonts/Web437_SanyoMBC775-2y.woff differ diff --git a/web/static/fonts/Web437_SanyoMBC775.woff b/web/static/fonts/Web437_SanyoMBC775.woff new file mode 100644 index 0000000..4daa0a8 Binary files /dev/null and b/web/static/fonts/Web437_SanyoMBC775.woff differ diff --git a/web/static/fonts/Web437_SeequaCm-2y.woff b/web/static/fonts/Web437_SeequaCm-2y.woff new file mode 100644 index 0000000..d099ecd Binary files /dev/null and b/web/static/fonts/Web437_SeequaCm-2y.woff differ diff --git a/web/static/fonts/Web437_SeequaCm.woff b/web/static/fonts/Web437_SeequaCm.woff new file mode 100644 index 0000000..e598bc3 Binary files /dev/null and b/web/static/fonts/Web437_SeequaCm.woff differ diff --git a/web/static/fonts/Web437_Sharp_PC3K-2x.woff b/web/static/fonts/Web437_Sharp_PC3K-2x.woff new file mode 100644 index 0000000..57e9047 Binary files /dev/null and b/web/static/fonts/Web437_Sharp_PC3K-2x.woff differ diff --git a/web/static/fonts/Web437_Sharp_PC3K.woff b/web/static/fonts/Web437_Sharp_PC3K.woff new file mode 100644 index 0000000..8ba5b50 Binary files /dev/null and b/web/static/fonts/Web437_Sharp_PC3K.woff differ diff --git a/web/static/fonts/Web437_Sharp_PC3K_Alt-2x.woff b/web/static/fonts/Web437_Sharp_PC3K_Alt-2x.woff new file mode 100644 index 0000000..932d65b Binary files /dev/null and b/web/static/fonts/Web437_Sharp_PC3K_Alt-2x.woff differ diff --git a/web/static/fonts/Web437_Sharp_PC3K_Alt.woff b/web/static/fonts/Web437_Sharp_PC3K_Alt.woff new file mode 100644 index 0000000..32759f1 Binary files /dev/null and b/web/static/fonts/Web437_Sharp_PC3K_Alt.woff differ diff --git a/web/static/fonts/Web437_Siemens_PC-D.woff b/web/static/fonts/Web437_Siemens_PC-D.woff new file mode 100644 index 0000000..8865075 Binary files /dev/null and b/web/static/fonts/Web437_Siemens_PC-D.woff differ diff --git a/web/static/fonts/Web437_Sigma_RM_8x14.woff b/web/static/fonts/Web437_Sigma_RM_8x14.woff new file mode 100644 index 0000000..626a260 Binary files /dev/null and b/web/static/fonts/Web437_Sigma_RM_8x14.woff differ diff --git a/web/static/fonts/Web437_Sigma_RM_8x16.woff b/web/static/fonts/Web437_Sigma_RM_8x16.woff new file mode 100644 index 0000000..de40fdf Binary files /dev/null and b/web/static/fonts/Web437_Sigma_RM_8x16.woff differ diff --git a/web/static/fonts/Web437_Sigma_RM_8x8.woff b/web/static/fonts/Web437_Sigma_RM_8x8.woff new file mode 100644 index 0000000..d87ce1a Binary files /dev/null and b/web/static/fonts/Web437_Sigma_RM_8x8.woff differ diff --git a/web/static/fonts/Web437_Sigma_RM_9x14.woff b/web/static/fonts/Web437_Sigma_RM_9x14.woff new file mode 100644 index 0000000..cf7e8c5 Binary files /dev/null and b/web/static/fonts/Web437_Sigma_RM_9x14.woff differ diff --git a/web/static/fonts/Web437_Sigma_RM_9x16.woff b/web/static/fonts/Web437_Sigma_RM_9x16.woff new file mode 100644 index 0000000..83b19c7 Binary files /dev/null and b/web/static/fonts/Web437_Sigma_RM_9x16.woff differ diff --git a/web/static/fonts/Web437_Sigma_RM_9x8.woff b/web/static/fonts/Web437_Sigma_RM_9x8.woff new file mode 100644 index 0000000..10f4346 Binary files /dev/null and b/web/static/fonts/Web437_Sigma_RM_9x8.woff differ diff --git a/web/static/fonts/Web437_SperryPC_8x16.woff b/web/static/fonts/Web437_SperryPC_8x16.woff new file mode 100644 index 0000000..4b92b23 Binary files /dev/null and b/web/static/fonts/Web437_SperryPC_8x16.woff differ diff --git a/web/static/fonts/Web437_SperryPC_CGA-2y.woff b/web/static/fonts/Web437_SperryPC_CGA-2y.woff new file mode 100644 index 0000000..22fd7fb Binary files /dev/null and b/web/static/fonts/Web437_SperryPC_CGA-2y.woff differ diff --git a/web/static/fonts/Web437_SperryPC_CGA.woff b/web/static/fonts/Web437_SperryPC_CGA.woff new file mode 100644 index 0000000..f3c629d Binary files /dev/null and b/web/static/fonts/Web437_SperryPC_CGA.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-II_200L-2x.woff b/web/static/fonts/Web437_Tandy1K-II_200L-2x.woff new file mode 100644 index 0000000..aa5daa6 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-II_200L-2x.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-II_200L-2y.woff b/web/static/fonts/Web437_Tandy1K-II_200L-2y.woff new file mode 100644 index 0000000..8b973f6 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-II_200L-2y.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-II_200L.woff b/web/static/fonts/Web437_Tandy1K-II_200L.woff new file mode 100644 index 0000000..2bc34fa Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-II_200L.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-II_225L-2y.woff b/web/static/fonts/Web437_Tandy1K-II_225L-2y.woff new file mode 100644 index 0000000..261d4de Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-II_225L-2y.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-II_225L.woff b/web/static/fonts/Web437_Tandy1K-II_225L.woff new file mode 100644 index 0000000..b7c45f8 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-II_225L.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-II_Mono.woff b/web/static/fonts/Web437_Tandy1K-II_Mono.woff new file mode 100644 index 0000000..4c11e44 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-II_Mono.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-I_200L-2x.woff b/web/static/fonts/Web437_Tandy1K-I_200L-2x.woff new file mode 100644 index 0000000..e52ddd0 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-I_200L-2x.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-I_200L-2y.woff b/web/static/fonts/Web437_Tandy1K-I_200L-2y.woff new file mode 100644 index 0000000..eec2274 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-I_200L-2y.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-I_200L.woff b/web/static/fonts/Web437_Tandy1K-I_200L.woff new file mode 100644 index 0000000..cdc9196 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-I_200L.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-I_225L-2y.woff b/web/static/fonts/Web437_Tandy1K-I_225L-2y.woff new file mode 100644 index 0000000..6c8e2c1 Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-I_225L-2y.woff differ diff --git a/web/static/fonts/Web437_Tandy1K-I_225L.woff b/web/static/fonts/Web437_Tandy1K-I_225L.woff new file mode 100644 index 0000000..c7d6dbb Binary files /dev/null and b/web/static/fonts/Web437_Tandy1K-I_225L.woff differ diff --git a/web/static/fonts/Web437_Tandy2K-2x.woff b/web/static/fonts/Web437_Tandy2K-2x.woff new file mode 100644 index 0000000..8b2f99c Binary files /dev/null and b/web/static/fonts/Web437_Tandy2K-2x.woff differ diff --git a/web/static/fonts/Web437_Tandy2K.woff b/web/static/fonts/Web437_Tandy2K.woff new file mode 100644 index 0000000..04634bf Binary files /dev/null and b/web/static/fonts/Web437_Tandy2K.woff differ diff --git a/web/static/fonts/Web437_Tandy2K_G-2x.woff b/web/static/fonts/Web437_Tandy2K_G-2x.woff new file mode 100644 index 0000000..bf62bb3 Binary files /dev/null and b/web/static/fonts/Web437_Tandy2K_G-2x.woff differ diff --git a/web/static/fonts/Web437_Tandy2K_G-TV.woff b/web/static/fonts/Web437_Tandy2K_G-TV.woff new file mode 100644 index 0000000..213bc99 Binary files /dev/null and b/web/static/fonts/Web437_Tandy2K_G-TV.woff differ diff --git a/web/static/fonts/Web437_Tandy2K_G.woff b/web/static/fonts/Web437_Tandy2K_G.woff new file mode 100644 index 0000000..ec4dd96 Binary files /dev/null and b/web/static/fonts/Web437_Tandy2K_G.woff differ diff --git a/web/static/fonts/Web437_TelePC-2y.woff b/web/static/fonts/Web437_TelePC-2y.woff new file mode 100644 index 0000000..3f1da5d Binary files /dev/null and b/web/static/fonts/Web437_TelePC-2y.woff differ diff --git a/web/static/fonts/Web437_TelePC.woff b/web/static/fonts/Web437_TelePC.woff new file mode 100644 index 0000000..bb25c9c Binary files /dev/null and b/web/static/fonts/Web437_TelePC.woff differ diff --git a/web/static/fonts/Web437_Ti_Pro.woff b/web/static/fonts/Web437_Ti_Pro.woff new file mode 100644 index 0000000..1d8fb0e Binary files /dev/null and b/web/static/fonts/Web437_Ti_Pro.woff differ diff --git a/web/static/fonts/Web437_ToshibaSat_8x14.woff b/web/static/fonts/Web437_ToshibaSat_8x14.woff new file mode 100644 index 0000000..2e05675 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaSat_8x14.woff differ diff --git a/web/static/fonts/Web437_ToshibaSat_8x16.woff b/web/static/fonts/Web437_ToshibaSat_8x16.woff new file mode 100644 index 0000000..99735df Binary files /dev/null and b/web/static/fonts/Web437_ToshibaSat_8x16.woff differ diff --git a/web/static/fonts/Web437_ToshibaSat_8x8.woff b/web/static/fonts/Web437_ToshibaSat_8x8.woff new file mode 100644 index 0000000..92e9dc2 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaSat_8x8.woff differ diff --git a/web/static/fonts/Web437_ToshibaSat_9x14.woff b/web/static/fonts/Web437_ToshibaSat_9x14.woff new file mode 100644 index 0000000..6c6dab6 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaSat_9x14.woff differ diff --git a/web/static/fonts/Web437_ToshibaSat_9x16.woff b/web/static/fonts/Web437_ToshibaSat_9x16.woff new file mode 100644 index 0000000..482da55 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaSat_9x16.woff differ diff --git a/web/static/fonts/Web437_ToshibaSat_9x8.woff b/web/static/fonts/Web437_ToshibaSat_9x8.woff new file mode 100644 index 0000000..1c19f2d Binary files /dev/null and b/web/static/fonts/Web437_ToshibaSat_9x8.woff differ diff --git a/web/static/fonts/Web437_ToshibaT300_8x16.woff b/web/static/fonts/Web437_ToshibaT300_8x16.woff new file mode 100644 index 0000000..2a93b1f Binary files /dev/null and b/web/static/fonts/Web437_ToshibaT300_8x16.woff differ diff --git a/web/static/fonts/Web437_ToshibaT300_8x8-2y.woff b/web/static/fonts/Web437_ToshibaT300_8x8-2y.woff new file mode 100644 index 0000000..c809330 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaT300_8x8-2y.woff differ diff --git a/web/static/fonts/Web437_ToshibaT300_8x8.woff b/web/static/fonts/Web437_ToshibaT300_8x8.woff new file mode 100644 index 0000000..3b8d7f1 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaT300_8x8.woff differ diff --git a/web/static/fonts/Web437_ToshibaTxL1_8x16.woff b/web/static/fonts/Web437_ToshibaTxL1_8x16.woff new file mode 100644 index 0000000..f900627 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaTxL1_8x16.woff differ diff --git a/web/static/fonts/Web437_ToshibaTxL1_8x8.woff b/web/static/fonts/Web437_ToshibaTxL1_8x8.woff new file mode 100644 index 0000000..cbd7cec Binary files /dev/null and b/web/static/fonts/Web437_ToshibaTxL1_8x8.woff differ diff --git a/web/static/fonts/Web437_ToshibaTxL2_8x16.woff b/web/static/fonts/Web437_ToshibaTxL2_8x16.woff new file mode 100644 index 0000000..f7e5c74 Binary files /dev/null and b/web/static/fonts/Web437_ToshibaTxL2_8x16.woff differ diff --git a/web/static/fonts/Web437_ToshibaTxL2_8x8.woff b/web/static/fonts/Web437_ToshibaTxL2_8x8.woff new file mode 100644 index 0000000..a472b0b Binary files /dev/null and b/web/static/fonts/Web437_ToshibaTxL2_8x8.woff differ diff --git a/web/static/fonts/Web437_TridentEarly_8x11.woff b/web/static/fonts/Web437_TridentEarly_8x11.woff new file mode 100644 index 0000000..5474176 Binary files /dev/null and b/web/static/fonts/Web437_TridentEarly_8x11.woff differ diff --git a/web/static/fonts/Web437_TridentEarly_8x14.woff b/web/static/fonts/Web437_TridentEarly_8x14.woff new file mode 100644 index 0000000..97daa2e Binary files /dev/null and b/web/static/fonts/Web437_TridentEarly_8x14.woff differ diff --git a/web/static/fonts/Web437_TridentEarly_8x16.woff b/web/static/fonts/Web437_TridentEarly_8x16.woff new file mode 100644 index 0000000..5e71f0e Binary files /dev/null and b/web/static/fonts/Web437_TridentEarly_8x16.woff differ diff --git a/web/static/fonts/Web437_TridentEarly_8x8.woff b/web/static/fonts/Web437_TridentEarly_8x8.woff new file mode 100644 index 0000000..e116dd3 Binary files /dev/null and b/web/static/fonts/Web437_TridentEarly_8x8.woff differ diff --git a/web/static/fonts/Web437_TridentEarly_9x14.woff b/web/static/fonts/Web437_TridentEarly_9x14.woff new file mode 100644 index 0000000..293de0a Binary files /dev/null and b/web/static/fonts/Web437_TridentEarly_9x14.woff differ diff --git a/web/static/fonts/Web437_TridentEarly_9x16.woff b/web/static/fonts/Web437_TridentEarly_9x16.woff new file mode 100644 index 0000000..37d82a0 Binary files /dev/null and b/web/static/fonts/Web437_TridentEarly_9x16.woff differ diff --git a/web/static/fonts/Web437_TridentEarly_9x8.woff b/web/static/fonts/Web437_TridentEarly_9x8.woff new file mode 100644 index 0000000..3ff88db Binary files /dev/null and b/web/static/fonts/Web437_TridentEarly_9x8.woff differ diff --git a/web/static/fonts/Web437_Trident_8x11.woff b/web/static/fonts/Web437_Trident_8x11.woff new file mode 100644 index 0000000..d5d52b1 Binary files /dev/null and b/web/static/fonts/Web437_Trident_8x11.woff differ diff --git a/web/static/fonts/Web437_Trident_8x14.woff b/web/static/fonts/Web437_Trident_8x14.woff new file mode 100644 index 0000000..98576fa Binary files /dev/null and b/web/static/fonts/Web437_Trident_8x14.woff differ diff --git a/web/static/fonts/Web437_Trident_8x16.woff b/web/static/fonts/Web437_Trident_8x16.woff new file mode 100644 index 0000000..708258c Binary files /dev/null and b/web/static/fonts/Web437_Trident_8x16.woff differ diff --git a/web/static/fonts/Web437_Trident_8x8.woff b/web/static/fonts/Web437_Trident_8x8.woff new file mode 100644 index 0000000..8a7a2bd Binary files /dev/null and b/web/static/fonts/Web437_Trident_8x8.woff differ diff --git a/web/static/fonts/Web437_Trident_9x14.woff b/web/static/fonts/Web437_Trident_9x14.woff new file mode 100644 index 0000000..3446e73 Binary files /dev/null and b/web/static/fonts/Web437_Trident_9x14.woff differ diff --git a/web/static/fonts/Web437_Trident_9x16.woff b/web/static/fonts/Web437_Trident_9x16.woff new file mode 100644 index 0000000..da3a894 Binary files /dev/null and b/web/static/fonts/Web437_Trident_9x16.woff differ diff --git a/web/static/fonts/Web437_Trident_9x8.woff b/web/static/fonts/Web437_Trident_9x8.woff new file mode 100644 index 0000000..adb4b74 Binary files /dev/null and b/web/static/fonts/Web437_Trident_9x8.woff differ diff --git a/web/static/fonts/Web437_TsengEVA_132_6x14.woff b/web/static/fonts/Web437_TsengEVA_132_6x14.woff new file mode 100644 index 0000000..c90423a Binary files /dev/null and b/web/static/fonts/Web437_TsengEVA_132_6x14.woff differ diff --git a/web/static/fonts/Web437_TsengEVA_132_6x8.woff b/web/static/fonts/Web437_TsengEVA_132_6x8.woff new file mode 100644 index 0000000..6042cf1 Binary files /dev/null and b/web/static/fonts/Web437_TsengEVA_132_6x8.woff differ diff --git a/web/static/fonts/Web437_VTech_BIOS-2y.woff b/web/static/fonts/Web437_VTech_BIOS-2y.woff new file mode 100644 index 0000000..3207a4d Binary files /dev/null and b/web/static/fonts/Web437_VTech_BIOS-2y.woff differ diff --git a/web/static/fonts/Web437_VTech_BIOS.woff b/web/static/fonts/Web437_VTech_BIOS.woff new file mode 100644 index 0000000..7585b4e Binary files /dev/null and b/web/static/fonts/Web437_VTech_BIOS.woff differ diff --git a/web/static/fonts/Web437_Verite_8x14.woff b/web/static/fonts/Web437_Verite_8x14.woff new file mode 100644 index 0000000..a02281a Binary files /dev/null and b/web/static/fonts/Web437_Verite_8x14.woff differ diff --git a/web/static/fonts/Web437_Verite_8x16.woff b/web/static/fonts/Web437_Verite_8x16.woff new file mode 100644 index 0000000..00424a9 Binary files /dev/null and b/web/static/fonts/Web437_Verite_8x16.woff differ diff --git a/web/static/fonts/Web437_Verite_8x8-2y.woff b/web/static/fonts/Web437_Verite_8x8-2y.woff new file mode 100644 index 0000000..316c481 Binary files /dev/null and b/web/static/fonts/Web437_Verite_8x8-2y.woff differ diff --git a/web/static/fonts/Web437_Verite_8x8.woff b/web/static/fonts/Web437_Verite_8x8.woff new file mode 100644 index 0000000..e6a3f67 Binary files /dev/null and b/web/static/fonts/Web437_Verite_8x8.woff differ diff --git a/web/static/fonts/Web437_Verite_9x14.woff b/web/static/fonts/Web437_Verite_9x14.woff new file mode 100644 index 0000000..3c4c0bb Binary files /dev/null and b/web/static/fonts/Web437_Verite_9x14.woff differ diff --git a/web/static/fonts/Web437_Verite_9x16.woff b/web/static/fonts/Web437_Verite_9x16.woff new file mode 100644 index 0000000..c9da6f7 Binary files /dev/null and b/web/static/fonts/Web437_Verite_9x16.woff differ diff --git a/web/static/fonts/Web437_Verite_9x8.woff b/web/static/fonts/Web437_Verite_9x8.woff new file mode 100644 index 0000000..ae2181c Binary files /dev/null and b/web/static/fonts/Web437_Verite_9x8.woff differ diff --git a/web/static/fonts/Web437_Wang_Pro_Color-2y.woff b/web/static/fonts/Web437_Wang_Pro_Color-2y.woff new file mode 100644 index 0000000..b3306bd Binary files /dev/null and b/web/static/fonts/Web437_Wang_Pro_Color-2y.woff differ diff --git a/web/static/fonts/Web437_Wang_Pro_Color.woff b/web/static/fonts/Web437_Wang_Pro_Color.woff new file mode 100644 index 0000000..500f461 Binary files /dev/null and b/web/static/fonts/Web437_Wang_Pro_Color.woff differ diff --git a/web/static/fonts/Web437_Wang_Pro_Mono.woff b/web/static/fonts/Web437_Wang_Pro_Mono.woff new file mode 100644 index 0000000..3e9162d Binary files /dev/null and b/web/static/fonts/Web437_Wang_Pro_Mono.woff differ diff --git a/web/static/fonts/Web437_Wyse700a-2y.woff b/web/static/fonts/Web437_Wyse700a-2y.woff new file mode 100644 index 0000000..8bf060d Binary files /dev/null and b/web/static/fonts/Web437_Wyse700a-2y.woff differ diff --git a/web/static/fonts/Web437_Wyse700a.woff b/web/static/fonts/Web437_Wyse700a.woff new file mode 100644 index 0000000..e1a8e6c Binary files /dev/null and b/web/static/fonts/Web437_Wyse700a.woff differ diff --git a/web/static/fonts/Web437_Wyse700b-2y.woff b/web/static/fonts/Web437_Wyse700b-2y.woff new file mode 100644 index 0000000..9003597 Binary files /dev/null and b/web/static/fonts/Web437_Wyse700b-2y.woff differ diff --git a/web/static/fonts/Web437_Wyse700b.woff b/web/static/fonts/Web437_Wyse700b.woff new file mode 100644 index 0000000..d3ae560 Binary files /dev/null and b/web/static/fonts/Web437_Wyse700b.woff differ diff --git a/web/static/fonts/Web437_Zenith_Z-100.woff b/web/static/fonts/Web437_Zenith_Z-100.woff new file mode 100644 index 0000000..4fd99a2 Binary files /dev/null and b/web/static/fonts/Web437_Zenith_Z-100.woff differ diff --git a/web/static/fonts/Web437_Zenith_Z-100_Alt.woff b/web/static/fonts/Web437_Zenith_Z-100_Alt.woff new file mode 100644 index 0000000..21f8c33 Binary files /dev/null and b/web/static/fonts/Web437_Zenith_Z-100_Alt.woff differ diff --git a/web/static/fonts/WebPlus_AST_PremiumExec.woff b/web/static/fonts/WebPlus_AST_PremiumExec.woff new file mode 100644 index 0000000..ea95d23 Binary files /dev/null and b/web/static/fonts/WebPlus_AST_PremiumExec.woff differ diff --git a/web/static/fonts/WebPlus_Amstrad_PC-2y.woff b/web/static/fonts/WebPlus_Amstrad_PC-2y.woff new file mode 100644 index 0000000..f0af92f Binary files /dev/null and b/web/static/fonts/WebPlus_Amstrad_PC-2y.woff differ diff --git a/web/static/fonts/WebPlus_Amstrad_PC.woff b/web/static/fonts/WebPlus_Amstrad_PC.woff new file mode 100644 index 0000000..a89bd9c Binary files /dev/null and b/web/static/fonts/WebPlus_Amstrad_PC.woff differ diff --git a/web/static/fonts/WebPlus_Cordata_PPC-21.woff b/web/static/fonts/WebPlus_Cordata_PPC-21.woff new file mode 100644 index 0000000..486cbb9 Binary files /dev/null and b/web/static/fonts/WebPlus_Cordata_PPC-21.woff differ diff --git a/web/static/fonts/WebPlus_Cordata_PPC-400.woff b/web/static/fonts/WebPlus_Cordata_PPC-400.woff new file mode 100644 index 0000000..b36d384 Binary files /dev/null and b/web/static/fonts/WebPlus_Cordata_PPC-400.woff differ diff --git a/web/static/fonts/WebPlus_HP_100LX_10x11.woff b/web/static/fonts/WebPlus_HP_100LX_10x11.woff new file mode 100644 index 0000000..be23ce0 Binary files /dev/null and b/web/static/fonts/WebPlus_HP_100LX_10x11.woff differ diff --git a/web/static/fonts/WebPlus_HP_100LX_16x12.woff b/web/static/fonts/WebPlus_HP_100LX_16x12.woff new file mode 100644 index 0000000..58c37c7 Binary files /dev/null and b/web/static/fonts/WebPlus_HP_100LX_16x12.woff differ diff --git a/web/static/fonts/WebPlus_HP_100LX_6x8-2x.woff b/web/static/fonts/WebPlus_HP_100LX_6x8-2x.woff new file mode 100644 index 0000000..0e12806 Binary files /dev/null and b/web/static/fonts/WebPlus_HP_100LX_6x8-2x.woff differ diff --git a/web/static/fonts/WebPlus_HP_100LX_6x8.woff b/web/static/fonts/WebPlus_HP_100LX_6x8.woff new file mode 100644 index 0000000..d259282 Binary files /dev/null and b/web/static/fonts/WebPlus_HP_100LX_6x8.woff differ diff --git a/web/static/fonts/WebPlus_HP_100LX_8x8-2x.woff b/web/static/fonts/WebPlus_HP_100LX_8x8-2x.woff new file mode 100644 index 0000000..8258270 Binary files /dev/null and b/web/static/fonts/WebPlus_HP_100LX_8x8-2x.woff differ diff --git a/web/static/fonts/WebPlus_HP_100LX_8x8.woff b/web/static/fonts/WebPlus_HP_100LX_8x8.woff new file mode 100644 index 0000000..f2dca01 Binary files /dev/null and b/web/static/fonts/WebPlus_HP_100LX_8x8.woff differ diff --git a/web/static/fonts/WebPlus_HP_150_re.woff b/web/static/fonts/WebPlus_HP_150_re.woff new file mode 100644 index 0000000..dc2ec33 Binary files /dev/null and b/web/static/fonts/WebPlus_HP_150_re.woff differ diff --git a/web/static/fonts/WebPlus_IBM_BIOS-2x.woff b/web/static/fonts/WebPlus_IBM_BIOS-2x.woff new file mode 100644 index 0000000..ffce1c5 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_BIOS-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_BIOS-2y.woff b/web/static/fonts/WebPlus_IBM_BIOS-2y.woff new file mode 100644 index 0000000..c46cbd1 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_BIOS-2y.woff differ diff --git a/web/static/fonts/WebPlus_IBM_BIOS.woff b/web/static/fonts/WebPlus_IBM_BIOS.woff new file mode 100644 index 0000000..a519221 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_BIOS.woff differ diff --git a/web/static/fonts/WebPlus_IBM_CGA-2y.woff b/web/static/fonts/WebPlus_IBM_CGA-2y.woff new file mode 100644 index 0000000..6998020 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_CGA-2y.woff differ diff --git a/web/static/fonts/WebPlus_IBM_CGA.woff b/web/static/fonts/WebPlus_IBM_CGA.woff new file mode 100644 index 0000000..a76d503 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_CGA.woff differ diff --git a/web/static/fonts/WebPlus_IBM_CGAthin-2y.woff b/web/static/fonts/WebPlus_IBM_CGAthin-2y.woff new file mode 100644 index 0000000..92df543 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_CGAthin-2y.woff differ diff --git a/web/static/fonts/WebPlus_IBM_CGAthin.woff b/web/static/fonts/WebPlus_IBM_CGAthin.woff new file mode 100644 index 0000000..cf5ebf6 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_CGAthin.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_8x14-2x.woff b/web/static/fonts/WebPlus_IBM_EGA_8x14-2x.woff new file mode 100644 index 0000000..b7808fd Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_8x14-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_8x14.woff b/web/static/fonts/WebPlus_IBM_EGA_8x14.woff new file mode 100644 index 0000000..9bc7e08 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_8x14.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_8x8-2x.woff b/web/static/fonts/WebPlus_IBM_EGA_8x8-2x.woff new file mode 100644 index 0000000..3013cec Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_8x8-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_8x8.woff b/web/static/fonts/WebPlus_IBM_EGA_8x8.woff new file mode 100644 index 0000000..bb39e9f Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_8x8.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_9x14-2x.woff b/web/static/fonts/WebPlus_IBM_EGA_9x14-2x.woff new file mode 100644 index 0000000..6e25b86 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_9x14-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_9x14.woff b/web/static/fonts/WebPlus_IBM_EGA_9x14.woff new file mode 100644 index 0000000..9d81c45 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_9x14.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_9x8-2x.woff b/web/static/fonts/WebPlus_IBM_EGA_9x8-2x.woff new file mode 100644 index 0000000..46885b2 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_9x8-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_EGA_9x8.woff b/web/static/fonts/WebPlus_IBM_EGA_9x8.woff new file mode 100644 index 0000000..0077442 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_EGA_9x8.woff differ diff --git a/web/static/fonts/WebPlus_IBM_MDA.woff b/web/static/fonts/WebPlus_IBM_MDA.woff new file mode 100644 index 0000000..45639b5 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_MDA.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_8x14-2x.woff b/web/static/fonts/WebPlus_IBM_VGA_8x14-2x.woff new file mode 100644 index 0000000..47cffd4 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_8x14-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_8x14.woff b/web/static/fonts/WebPlus_IBM_VGA_8x14.woff new file mode 100644 index 0000000..d1ee1c9 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_8x14.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_8x16-2x.woff b/web/static/fonts/WebPlus_IBM_VGA_8x16-2x.woff new file mode 100644 index 0000000..a589f63 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_8x16-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_8x16.woff b/web/static/fonts/WebPlus_IBM_VGA_8x16.woff new file mode 100644 index 0000000..466064d Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_8x16.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_9x14-2x.woff b/web/static/fonts/WebPlus_IBM_VGA_9x14-2x.woff new file mode 100644 index 0000000..8746fdc Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_9x14-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_9x14.woff b/web/static/fonts/WebPlus_IBM_VGA_9x14.woff new file mode 100644 index 0000000..44cce3e Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_9x14.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_9x16-2x.woff b/web/static/fonts/WebPlus_IBM_VGA_9x16-2x.woff new file mode 100644 index 0000000..f0ffd03 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_9x16-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_9x16.woff b/web/static/fonts/WebPlus_IBM_VGA_9x16.woff new file mode 100644 index 0000000..969fb65 Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_9x16.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_9x8-2x.woff b/web/static/fonts/WebPlus_IBM_VGA_9x8-2x.woff new file mode 100644 index 0000000..45326ef Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_9x8-2x.woff differ diff --git a/web/static/fonts/WebPlus_IBM_VGA_9x8.woff b/web/static/fonts/WebPlus_IBM_VGA_9x8.woff new file mode 100644 index 0000000..44cd4df Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_VGA_9x8.woff differ diff --git a/web/static/fonts/WebPlus_IBM_XGA-AI_12x20.woff b/web/static/fonts/WebPlus_IBM_XGA-AI_12x20.woff new file mode 100644 index 0000000..ff642ee Binary files /dev/null and b/web/static/fonts/WebPlus_IBM_XGA-AI_12x20.woff differ diff --git a/web/static/fonts/WebPlus_Rainbow100_re_132.woff b/web/static/fonts/WebPlus_Rainbow100_re_132.woff new file mode 100644 index 0000000..c553760 Binary files /dev/null and b/web/static/fonts/WebPlus_Rainbow100_re_132.woff differ diff --git a/web/static/fonts/WebPlus_Rainbow100_re_40.woff b/web/static/fonts/WebPlus_Rainbow100_re_40.woff new file mode 100644 index 0000000..c316398 Binary files /dev/null and b/web/static/fonts/WebPlus_Rainbow100_re_40.woff differ diff --git a/web/static/fonts/WebPlus_Rainbow100_re_66.woff b/web/static/fonts/WebPlus_Rainbow100_re_66.woff new file mode 100644 index 0000000..123af39 Binary files /dev/null and b/web/static/fonts/WebPlus_Rainbow100_re_66.woff differ diff --git a/web/static/fonts/WebPlus_Rainbow100_re_80.woff b/web/static/fonts/WebPlus_Rainbow100_re_80.woff new file mode 100644 index 0000000..4feb241 Binary files /dev/null and b/web/static/fonts/WebPlus_Rainbow100_re_80.woff differ diff --git a/web/static/fonts/WebPlus_Tandy1K-II_200L-2x.woff b/web/static/fonts/WebPlus_Tandy1K-II_200L-2x.woff new file mode 100644 index 0000000..b95844e Binary files /dev/null and b/web/static/fonts/WebPlus_Tandy1K-II_200L-2x.woff differ diff --git a/web/static/fonts/WebPlus_Tandy1K-II_200L-2y.woff b/web/static/fonts/WebPlus_Tandy1K-II_200L-2y.woff new file mode 100644 index 0000000..766fdf5 Binary files /dev/null and b/web/static/fonts/WebPlus_Tandy1K-II_200L-2y.woff differ diff --git a/web/static/fonts/WebPlus_Tandy1K-II_200L.woff b/web/static/fonts/WebPlus_Tandy1K-II_200L.woff new file mode 100644 index 0000000..a40ea22 Binary files /dev/null and b/web/static/fonts/WebPlus_Tandy1K-II_200L.woff differ diff --git a/web/static/fonts/WebPlus_Tandy1K-II_225L-2y.woff b/web/static/fonts/WebPlus_Tandy1K-II_225L-2y.woff new file mode 100644 index 0000000..2e376dc Binary files /dev/null and b/web/static/fonts/WebPlus_Tandy1K-II_225L-2y.woff differ diff --git a/web/static/fonts/WebPlus_Tandy1K-II_225L.woff b/web/static/fonts/WebPlus_Tandy1K-II_225L.woff new file mode 100644 index 0000000..226bfe4 Binary files /dev/null and b/web/static/fonts/WebPlus_Tandy1K-II_225L.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaSat_8x14.woff b/web/static/fonts/WebPlus_ToshibaSat_8x14.woff new file mode 100644 index 0000000..54c3b46 Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaSat_8x14.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaSat_8x16.woff b/web/static/fonts/WebPlus_ToshibaSat_8x16.woff new file mode 100644 index 0000000..1ac5866 Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaSat_8x16.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaSat_8x8.woff b/web/static/fonts/WebPlus_ToshibaSat_8x8.woff new file mode 100644 index 0000000..dc45c25 Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaSat_8x8.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaSat_9x14.woff b/web/static/fonts/WebPlus_ToshibaSat_9x14.woff new file mode 100644 index 0000000..3eac7ac Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaSat_9x14.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaSat_9x16.woff b/web/static/fonts/WebPlus_ToshibaSat_9x16.woff new file mode 100644 index 0000000..b324de1 Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaSat_9x16.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaSat_9x8.woff b/web/static/fonts/WebPlus_ToshibaSat_9x8.woff new file mode 100644 index 0000000..ac2722c Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaSat_9x8.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaTxL1_8x16.woff b/web/static/fonts/WebPlus_ToshibaTxL1_8x16.woff new file mode 100644 index 0000000..686cea5 Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaTxL1_8x16.woff differ diff --git a/web/static/fonts/WebPlus_ToshibaTxL2_8x16.woff b/web/static/fonts/WebPlus_ToshibaTxL2_8x16.woff new file mode 100644 index 0000000..0526002 Binary files /dev/null and b/web/static/fonts/WebPlus_ToshibaTxL2_8x16.woff differ diff --git a/web/static/highlight.css b/web/static/highlight.css new file mode 100644 index 0000000..faa5d4d --- /dev/null +++ b/web/static/highlight.css @@ -0,0 +1,7 @@ +/*! + Theme: Synth Midnight Terminal Dark + Author: MichaĆ«l Ball (http://github.com/michael-ball/) + License: ~ MIT (or more permissive) [via base16-schemes-source] + Maintainer: @highlightjs/core-team + Version: 2021.09.0 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#c1c3c4;background:#050608}.hljs ::selection,.hljs::selection{background-color:#28292a;color:#c1c3c4}.hljs-comment{color:#474849}.hljs-tag{color:#a3a5a6}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#c1c3c4}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#b53b50}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#ea770d}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#c9d364}.hljs-strong{font-weight:700;color:#c9d364}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#06ea61}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#42fff9}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#03aeff}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#ea5ce2}.hljs-emphasis{color:#ea5ce2;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#cd6320}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} \ No newline at end of file diff --git a/web/static/main.css b/web/static/main.css new file mode 100644 index 0000000..cf1821f --- /dev/null +++ b/web/static/main.css @@ -0,0 +1,607 @@ +:root { + --back: #888; + --front: #E76969; + --green: #69E769; + --site-font: JPN16; + --gradient: linear-gradient(90deg,rgba(255, 100, 255, 1) 0%, rgba(0, 255, 255, 1) 100%); +} + +@font-face { + font-family: Terminal; + src: url( /static/fonts/Web437_IBM_PGC.woff ) +} + +@font-face { + font-family: JPN12; + src: url( /static/fonts/Web437_DOS-V_re_JPN12.woff ) +} + +@font-face { + font-family: JPN16; + src: url( /static/fonts/Web437_DOS-V_re_JPN16.woff ) +} + + +@font-face { + font-family: JPN19; + src: url( /static/fonts/Web437_DOS-V_re_JPN19.woff ) +} + +@font-face { + font-family: JPN24; + src: url( /static/fonts/Web437_DOS-V_re_JPN24.woff ) +} + +@font-face { + font-family: JPN30; + src: url( /static/fonts/Web437_DOS-V_re_JPN30.woff ) +} + +#moneyjsx-root { + display: flex; + flex-direction: column; + padding: 0; + margin: 0; +} +input[type="radio"] { + appearance: none; + background-color: var( --back ); + margin: 0; + font: inherit; + color: #888; + width: 1em; + height: 1em; + border: 0.15em solid currentColor; + border-radius: 50%; + display: grid; + place-content: center; +} + +input[type="radio"]::before { + content: ""; + width: 0.75em; + height: 0.75em; + border-radius: 50%; + transform: scale(0); + transition: 120ms transform ease-in-out; + box-shadow: inset 1em 1em var(--front); +} + +input[type="radio"]:checked::before { + transform: scale(1); +} + +.border-wrapper { + justify-content: center; + flex-direction: row; + align-self: center; + position: relative; + display: flex; + width: 100%; + background: var(--gradient); + padding: 1px 1px 1px 1px; + margin: 0px; +} + +.header { + width: calc(100% - 2px); + background: var(--back); + font-family: JPN24; + font-size: 26px; + height: 38px; + display: flex; + flex-direction: row; +} + +code { + font-family: Code; + font-size: 12px; + white-space: pre-wrap; +} + +html, body { + height: 100%; + overflow: auto; +} + +input { + background-color: #222; + border: 1px solid var(--front); + color: #888; + font-family: Code; +} + +button { + cursor: pointer; + border: 1px solid var(--front); + background-color: #222; + color: #fff; + font-size: 16px; + font-family: var( --site-font ); +} + +textarea { + border: 1px solid var( --front ); + background-color: #222; + color: white; +} + +hr { + border-top: 1px solid #aaa; + background: #ccc; + height: 1px; + width: calc( 100% - 2px ); +} + +a { + text-decoration: none; + background: var( --gradient ); + background-clip: border-box; + text-decoration: underline; + -webkit-text-fill-color: transparent; + -webkit-background-clip: text; + color: #c6a6ff; +} + + +a:hover { + cursor: pointer; + color: #fff; + background: var( --gradient ); + background-clip: border-box; + text-decoration: underline; + -webkit-text-fill-color: transparent; + -webkit-background-clip: text; + text-decoration: underline; +} + +.gradient { + background: var( --gradient ); + background-clip: border-box; + -webkit-text-fill-color: transparent; + -webkit-background-clip: text; +} + +.nogradient { + -webkit-text-fill-color: white; + -webkit-background-clip: text; + background: none; +} + +a.nogradient { + margin-bottom: 0px; + text-decoration: none; +} + +a.nogradient:hover { + text-decoration: underline; +} + +a.nogradient::after { + content:'.'; + -webkit-text-fill-color: transparent; + color: transparent; + width:calc( 100% - 7px ); + display:inline-block; + z-index: 2; + height: 1px; + margin-top: -2px; + background: #30e8bf; + padding: 0; + background: var( --gradient ); +} + +a.nogradient:hover::after { + background: none; +} + + +body { + background-color: var( --back ); + background-image: url( "/static/networkheaven.png" ); + font-family: var( --site-font ); + font-smooth: never !important; + background-position: center; + background-size: cover; + flex-direction: column; + display: flex; + color: #fff; + margin: 0; +} + + +#page-main { + flex-direction: row; + justify-content: center; + align-items: initial; + text-align: center; + padding: 30px 0 0; + overflow-x: clip; + display: flex; + width: 100%; + z-index: 0; + margin: 0; + margin-bottom: 30px; +} + +#page-main-content { + width: 800px; + min-width: 600px; + background: var( --back ); + border-left: 1px solid #ccc; + border-top: 1px solid #fff; + border-right: 1px solid #888; + border-bottom: 1px solid #222; +} + + +.red { color: #e96969; } +.black { color: #212325; } +.green { color: #10bb10; } +.btn_close { background: #ccc; } + + + +#sidebar { + width: 230px; + height: 100%; + margin-right: 20px; + text-align: left; + background: var( --back ); + border-left: 1px solid #ccc; + border-top: 1px solid #fff; + border-right: 1px solid #888; + border-bottom: 1px solid #222; +} + +#sidebar h3 { + margin-top: 8px; + margin-bottom: 8px; + background: var( --gradient ); + background-clip: border-box; + text-decoration: none; + -webkit-text-fill-color: transparent; + -webkit-background-clip: text; + width: fit-content; + font-family: JPN24; + font-size: 24px; + margin-left: 4px; +} + +#sidebar h4 { + margin-top: 0px; + margin-bottom: 0px; + width: fit-content; + font-family: JPN16; + font-size: 17px; + margin-left: 4px; +} + + +.sidebar-row { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding-right: 4px; +} + +.page-title { + display: flex; + justify-content: center +} + +.page-title h3 { + margin-top: 15px; + margin-bottom: 6px; +} + +@media( max-width: 1100px ) { + #page-main-content { + width: calc( 100% - 20px ) !important; + min-width: unset !important; + margin-right: 20px !important; + margin-left: 0 !important; + }; + + #sidebar { + margin-left: 20px; + } + + .page-title h3 { + margin-top: 8px; + margin-bottom: 0px; + } + + .page-title { + height: 35px; + } + + #sidebar h3 { + margin-top: 8px; + margin-bottom: 8px; + background: var( --gradient ); + background-clip: border-box; + text-decoration: none; + -webkit-text-fill-color: transparent; + -webkit-background-clip: text; + width: fit-content; + font-family: JPN24; + font-size: 24px; + margin-left: 4px; + } + + #sidebar h4 { + font-family: JPN12 !important; + font-size: 13px !important; + } + + .sidebar-row { + margin-bottom: 6px; + } + + #ascii-art { + font-size: 7px !important; + } +} + +@media( max-width: 740px ) { + #sidebar { + width: 200px !important; + } + + #sidebar h4 { + font-size: 10px !important; + } + + #sidebar h3 { + font-size: 20px !important; + } + + .sidebar-row { + margin-bottom: 10px !important; + } + + #ascii-art { + font-size: 6px !important; + } +} + +#ascii-art { + white-space: pre-wrap; + font-family: Code; + font-size: 12px; + overflow:clip; + padding-top: 5px; +} + +#ascii-art span { + padding: 0; + margin: 0; +} + +.groupbox { + border: 1px solid var( --front ); + background-color: var( --back ); + justify-content: flex-start; + align-items: flex-start; + flex-direction: column; + height: fit-content; + min-height: 25px; + min-width: 333px; /* may need to change this for mobile */ + max-width: 600px; + display: flex; + margin: 5px; + z-index: 1; + flex: 1; +} +.groupbox > .grouptitle { + background-color: var( --back ); + font-family: inherit; + position: relative; + margin: 0 0 -15px; /* stupid hardcode, but its: ( title font height - 4 ) * -1 */ + padding: 0px 5px; + font-size: 18px; + z-index: 2; + top: -9px; + left: 5px; +} +.groupbody { + width: calc( 100% - 5px ); + height: calc( 100% - 5px ); + text-align: left; + margin: 5px; +} + +#popup-msgbox { + display: none; + justify-content: center; + align-items: center; + position: absolute; + left: 50%; + min-width: 250px; + border: 1px solid var( --front ); + background: var( --back ); + min-height: 120px; + top: 45vh; + transform: translate( -50%, -50% ); +} + + +.dropdown { + background-color: var( --back ); + border-color: var( --front ); + text-align: center; + color: #888; + height: 24px; + color: #fff; +} + +.dropdown-wrapper { + border: 2px inset var( --front ); + background-color: var( --back ); + justify-content: space-evenly; + flex-direction: column; + align-items: center; + position: absolute; + width: 256px; + z-index: 10; + margin-left: 10px; +} + +.dropdown-inner { + height: 30px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-evenly; + border-bottom: 1px solid #333; + cursor: pointer; +} + +.rolldownlist { + height: fit-content; + position: relative; + width: 100%; + padding: 0; + margin: 0; +} + +.rolldown { + transition: background-color 0.3s ease-in-out; + border-bottom: 1px solid #E76969; + justify-content: space-between; + flex-direction: column; + display: flex; + height: auto; + width: 100%; +} + +.rolldown:nth-of-type( 1 ) { margin-top: -5px; } +.rolldown:nth-last-of-type( 1 ) { border-bottom: none; } +.rolldown:hover { cursor: pointer; } + +.rolldown-collapsed-container { + overflow: hidden; + padding: 10px; + display: flex; + height: auto; + width: 100%; +} + +.rolldown-collapsed { + float: left; + padding: 0; +} + +.rolldown-expanded-container { + text-align: center; + overflow: hidden; + transition: max-height 0.3s linear; + max-height: 0px; + margin: 0; + padding: 0; +} + +.rolldown-expanded-container.active { + display: flex !important; + max-height: 200px; + height: auto; +} + +.rolldown-expanded { + margin: 20px; +} + +.rolldown-expanded a { color: white; } + +.rolldown-icon-container { + margin-right: 15px; + position: relative; + float: left; + height: fit-content; +} + +.rolldown.active .rolldown-icon-container { + transform: rotate( 90deg ); +} + +.popup { + border: 1px solid var( --front ); + background-color: var( --back ); + box-shadow: 1px 1px 2px black; + justify-content: center; + align-items: center; + align-self: center; + flex-direction: column; + position: absolute; + max-height: 888px; + max-width: 600px; + min-width: 300px; + display: flex; + padding: 20px; + z-index: 5; + width: 85%; + top: 50%; + left: 50%; + transform: translate( -50%, -50% ); +} + +.popup-msg { + border: 1px solid var( --front ); + background-color: var( --back ); + box-shadow: 1px 1px 2px black; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: 1000; + padding: 10px; + display: flex; + flex-direction: column; +} + +.column { + display: flex; + flex-direction: column; +} + +#background-toggle { + position: absolute; + + bottom: 0px; + right: 0px; + background: #888; + border-left: 1px solid #ccc; + border-top: 1px solid #fff; + border-right: 1px solid #888; + border-bottom: 1px solid #222; +} + +#package-entries { + display: flex; + flex-direction: column; + width: 100%; + justify-content: center; + align-items: center; +} + +#package-entries table { + text-align: right; +} + +#package-entries table tr td:first-child { + text-align: left !important; +} + +.package-entry { + display: flex; + width: 80%; + + justify-content: space-between; +} + +.package-entry-date, +.package-entry-time { + padding: 0 10px; +} diff --git a/web/static/networkheaven.png b/web/static/networkheaven.png new file mode 100644 index 0000000..97c2cf5 Binary files /dev/null and b/web/static/networkheaven.png differ diff --git a/web/static/nh.ico b/web/static/nh.ico new file mode 100644 index 0000000..dca5438 Binary files /dev/null and b/web/static/nh.ico differ diff --git a/web/static/nh.jpg b/web/static/nh.jpg new file mode 100644 index 0000000..f8d65bb Binary files /dev/null and b/web/static/nh.jpg differ diff --git a/web/static/nh.png b/web/static/nh.png new file mode 100644 index 0000000..fa8d531 Binary files /dev/null and b/web/static/nh.png differ diff --git a/web/static/prompts.json b/web/static/prompts.json new file mode 100644 index 0000000..b121306 --- /dev/null +++ b/web/static/prompts.json @@ -0,0 +1,104 @@ +{ + "prompts": [ + "how do i fix a slow pc?", + "explain quantum computing in simple terms.", + "what is the best pizza topping?", + "recommend me a sci-fi movie.", + "how do i make a website?", + "tell me a fun fact.", + "what is the meaning of life?", + "how can i learn programming fast?", + "suggest a book to read.", + "who is elon musk?", + "explain blockchain.", + "what is the capital of japan?", + "give me a random joke.", + "what is 42 in binary?", + "what is the best coding language to learn?", + "how do you make coffee?", + "explain the concept of ai.", + "what is the weather today?", + "who won the last world cup?", + "tell me about black holes.", + "how do i become a millionaire?", + "best way to learn guitar?", + "what is love?", + "tell me about spacex.", + "give me a motivational quote.", + "explain recursion.", + "who is the president of the usa?", + "define cryptocurrency.", + "how to start a startup?", + "tell me a cool fact about space.", + "what are the benefits of meditation?", + "explain 5g technology.", + "suggest a new hobby.", + "how do i improve my memory?", + "what is 2+2?", + "what is a deep learning model?", + "who is albert einstein?", + "how can i become more productive?", + "what is the best anime series?", + "explain the stock market.", + "who invented the internet?", + "what are some good productivity hacks?", + "tell me a mystery fact.", + "what is dark matter?", + "how do i invest in stocks?", + "what is a good workout routine?", + "explain how electricity works.", + "give me a funny meme idea.", + "what is the history of bitcoin?", + "how do i write a resume?", + "recommend a good tv series.", + "explain the theory of relativity.", + "how do i quit a bad habit?", + "tell me something weird.", + "how can i become rich?", + "explain how nuclear energy works.", + "what is the healthiest diet?", + "how to deal with stress?", + "tell me about mars.", + "what is machine learning?", + "give me a random trivia.", + "how does ai work?", + "what is the best way to relax?", + "tell me something inspirational.", + "who invented computers?", + "explain string theory.", + "what is the biggest animal in the ocean?", + "how do i make friends?", + "tell me a conspiracy theory.", + "what is the fastest car in the world?", + "explain schrodinger's cat.", + "what is the best way to sleep better?", + "who wrote the bible?", + "how do i code in python?", + "what is the longest river in the world?", + "how does the brain work?", + "tell me about the moon landing.", + "what is quantum physics?", + "how to create a business plan?", + "what is an nft?", + "explain evolution.", + "how do i save money?", + "who is stephen hawking?", + "what is the best smartphone?", + "what are black holes?", + "how does the universe end?", + "tell me about tesla.", + "how do vaccines work?", + "what is consciousness?", + "explain time travel theories.", + "what is the best way to learn math?", + "how does google work?", + "what is augmented reality?", + "how do i boost my immune system?", + "what is the best travel destination?", + "tell me about dinosaurs.", + "explain the big bang.", + "how do satellites stay in orbit?", + "what is the difference between ai and ml?", + "how do i write a novel?" + ] +} \ No newline at end of file diff --git a/web/static_elements/f.html b/web/static_elements/f.html deleted file mode 100644 index 308b1d0..0000000 --- a/web/static_elements/f.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/web/static_elements/h.html b/web/static_elements/h.html deleted file mode 100644 index 5ca6896..0000000 --- a/web/static_elements/h.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - -NETWORKHEAVEN - - - diff --git a/web/static_elements/networkheaven.png b/web/static_elements/networkheaven.png deleted file mode 100644 index 97c2cf5..0000000 Binary files a/web/static_elements/networkheaven.png and /dev/null differ diff --git a/web/static_elements/px437_12.ttf b/web/static_elements/px437_12.ttf deleted file mode 100644 index f5ef3a3..0000000 Binary files a/web/static_elements/px437_12.ttf and /dev/null differ diff --git a/web/static_elements/px437_16.ttf b/web/static_elements/px437_16.ttf deleted file mode 100644 index 84db77b..0000000 Binary files a/web/static_elements/px437_16.ttf and /dev/null differ diff --git a/web/style.css b/web/style.css deleted file mode 100644 index c235155..0000000 --- a/web/style.css +++ /dev/null @@ -1,73 +0,0 @@ -@font-face { - font-family: "Px437 DOS/V re. JPN12"; - src: url("static_elements/px437_12.ttf"); -} - -@font-face { - font-family: "Px437 DOS/V re. JPN16"; - src: url("static_elements/px437_16.ttf"); -} - -body { - background-image: url("static_elements/networkheaven.png"); - /*background-image: linear-gradient(to right, purple , #008F8F);*/ - background-repeat: no-repeat; - background-size: cover; - text-shadow: 0px 0px 1px rgba(255,0,0,0); - font-smooth: never; - -webkit-font-smoothing : none; -} - -h1 { - text-align: center; - font-family: "Px437 DOS/V re. JPN16", monospace; - color: white; - font-size: 32px; -} - -h3 { - text-align: center; - font-family: "Px437 DOS/V re. JPN16", monospace; - font-size: 16px; - color: white; - margin: 0%; -} - -h4 { - text-align: center; - font-family: "Px437 DOS/V re. JPN12", monospace; - font-size: 12px; - color: white; - margin: 0%; -} - -pre { - font-family: monospace; - font-size: 12px; - color: white; -} - -a { - background: linear-gradient(to right, #FF00FF, #00FFFF); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - text-decoration:none; - font-weight: bold; - font-size: 16px; - font-family: "Px437 DOS/V re. JPN16", monospace; -} - -hr { - color: rgb(128, 128, 128); -} - -.statusbox { - font-family: monospace; - font-size: 10px; - text-align: center; - color: white; - display: table; - margin-right: auto; - margin-left: auto; - white-space: pre-wrap; -} diff --git a/web/tsconfig.json b/web/tsconfig.json new file mode 100644 index 0000000..f2f29fc --- /dev/null +++ b/web/tsconfig.json @@ -0,0 +1,120 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + "moduleResolution": "bundler", + "target": "es2020", + "lib": [ + "ES2017", + "DOM", + "DOM.Iterable", + "ScriptHost" + ], + // "lib": [], + "jsx": "react", + // "experimentalDecorators": true, + // "emitDecoratorMetadata": true, + "jsxFactory": "JSX.createElement", + "jsxFragmentFactory": "JSX.createFragment", + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "es2020", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + "baseUrl": ".", + "paths": { + "*": ["types/*"] + }, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + "typeRoots": [ + "./node_modules/@types", + "./types" + ], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + //"checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + "strictNullChecks": false, /* When type checking, take into account 'null' and 'undefined'. */ + "strictFunctionTypes": false, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + "strictBindCallApply": false, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + "strictPropertyInitialization": false, /* Check for class properties that are declared but not set in the constructor. */ + "strictBuiltinIteratorReturn": false, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ + "noImplicitThis": false, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/web/types/custom.d.ts b/web/types/custom.d.ts new file mode 100644 index 0000000..b7f740e --- /dev/null +++ b/web/types/custom.d.ts @@ -0,0 +1,8 @@ +declare namespace JSX { + type Element = any; + type ElementClass = any; + interface IntrinsicElements { + [elemName: string]: any; + } +} + diff --git a/web/webpack-dev.config.cjs b/web/webpack-dev.config.cjs new file mode 100644 index 0000000..4fa4b07 --- /dev/null +++ b/web/webpack-dev.config.cjs @@ -0,0 +1,45 @@ +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); + +module.exports = { + mode: 'development', + entry: './src/index-page.tsx', + module: { + rules: [ + { + test: /\.tsx?$/, + use: { + loader: 'ts-loader', + options: { + compilerOptions: { + module: 'es2020' + } + } + }, + exclude: /node_modules/, + } + ], + }, + resolve: { + extensions: ['.tsx', '.jsx', ".js"], + }, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist') + }, + plugins: [ + new HtmlWebpackPlugin({ + template: './src/index.html', + }), + new CopyWebpackPlugin({ + patterns: [ + { from: './static/**' } + ] + }) + ], + devServer: { + historyApiFallback: true, + port: 9000, + }, +}; diff --git a/web/webpack-prod.config.cjs b/web/webpack-prod.config.cjs new file mode 100644 index 0000000..e850468 --- /dev/null +++ b/web/webpack-prod.config.cjs @@ -0,0 +1,48 @@ +const path = require('path'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const CopyWebpackPlugin = require('copy-webpack-plugin'); + +module.exports = { + mode: 'production', + entry: './src/index-page.tsx', + module: { + rules: [ + { + test: /\.tsx?$/, + use: { + loader: 'ts-loader', + options: { + compilerOptions: { + module: 'es2020' + } + } + }, + exclude: /node_modules/, + } + ], + }, + resolve: { + alias: { + jquery: "jquery/slim" + }, + extensions: ['.tsx', '.jsx', ".js"], + }, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new HtmlWebpackPlugin({ + template: './src/index.html', + }), + new CopyWebpackPlugin({ + patterns: [ + { from: './static/**' } + ] + }) + ], + devServer: { + historyApiFallback: true, + port: 9000, + }, +}; -- cgit v1.2.3