tty-typesetter
Version:
terminal typesetting with real world measurements of character advance widths
2 lines (1 loc) • 25.6 kB
JavaScript
const n=1114112,r=["20000100013000w1003j3004g200lc300og200w3300wa2013l3014u2014v3014w2014x3014z201503015220153301542016o3016u201743017f2017g3017h2018r3019c2019s3019t201cm301cu201cv301d1201d3301d5201d6301da201e7301e8201e9301ea201f4301fv201ie301ip201kb301kk201kt301ku201li301lm201ln301lw201lx301m0201m1301m6201nd301ng201qr301s3201tm301tn201to301tp201tt301u1201u5301u6201u9301ug201uq301us201vl301vm201x8301x9201xd301xh201xp301xq201ya301yc201z2301z3201z5301z72020s3020t2020x3020z2021330215202173021a2021d3021e202283022a2022d3022e2022p3022r2024c3024d2024h3024m2024n3024p2024t3024u2025e3025g2026230268202693026a2027w3027x2027z3028020281302852028d3028e2028m3028n2028y302902029u3029v202bk302bl202bx302by202dc302dd202dg302dh202f2302f5202fa302fd202fe302fi202fp302fr202g2302g4202gx302gy202ik302il202in302io202iu302iv202j0302j2202jm302jo202kg302ki202m3302m5202m9302md202ml302mm202n6302n8202q2302q3202qa302qd202qe302qf202sx302sy202t0302t7202tj302tr202wh302wi202wk302wt202x4302xa202zc302ze20305303062030730308203093030a2031t30327203283032d2032e3032g2032l3032w2032x3033x20346303472037130375203763037c2037d3037f2037h3037j203883038a2038e3038h2038x303912039e3039f2039h3039j2039p3039q203a5303a6403cw203fk303k0203tp303ts204k2304k5204ky304l1204lu304lw204mq304ms204ok304om204on304ou204p2304p3204p5304pg204pp304pq204qz304r3204ud304uf204vd304ve204yo304yr204yv304yx204z6304z7204zd304zg2055j3055l2055n3055o2057a3057b2057c3057j2057k3057l2057m3057n2057p3057x205833058d2058f3058g2059s305a7205c0305c4205dg305dh205di305dn205do305dp205du305dv205ez305f8205fk305fm205gi305gm205go305gq205gr305gu205ie305if205ig305ii205il305im205in305iq205kc305kk205km305ko205ow305oz205p0305pd205pe305pl205pp305pq205pw305px205q0305q2205vk305x6205x7305xc206bv306c0206cq306cv206e8306ed206ee306eo206hc306i9406xm306xo406y1306y34073d3073h4073k3073l4073n3073o407i5307i7407is307iu407k8307kk407lr307ls407mb307mc407mp307mq407my307n0407nh307nj407no307nq407ny307nz407o4307o5407oq307or407oy307p0407p1307p2407p6307p7407p9307pa407ph307pi407pm307po407qg307qh407rg307rh407ri307rj407rn307rq407rr307rs407th307tk407u8307u9407un307uo408ij308il408k0308k1408k5308k6208vj308vm208zj308zk20928309344096o3097e4097f3099w409a8309g6409gw309h8409hc209ii409im309j3409j5309lj209ll409ln309og409ol309ps409pt309sf409sg309tn409ts309us409v4309wf409wg309xk409xs30fcw40feo30wi540wi830wjr20wvj30wvn20wvo30wvy20wwu30www20wz430wz620x6q30x6r20x6u30x6v20x6z30x7020x7p30x7r20xc430xc620xcw30xde20xdr30xds20xeu30xf220xfr30xg240xgg30xh920xhc30xhf20xir30xis20xiu30xiy20xj030xj220xk530xk620xm130xm720xm930xmb20xmd30xmf20xmr30xms20xn030xn120xoc30xod20xps30xpt20xpu30xpx20xpz30xq120xq630xq820xq930xqa20xrg30xri20xrq30xrr20xyd30xye20xyg30xyh20xyl30xym40xz4316lg41d6o31dkw21dlq31dlr21e6841e6o31e6y21e7441e7k31e8j41e8k31e9341e9431e9821edb31edc41edd31eg141ejk31ejr21ek931ekc21eyl31eym21f4w31f4x21f9231f9721gjl31gjo21gjp31gjr21gjw31gk021gl431gl721glb31glc21gpx31gpz21h5w31h6021hl231hld21hq931hqa21hrs31hs721htr31htu21hv731hvb21hvd31hvf21hvh31hvi21hvx31hvy21hxc31hxf21hyf31hyk21hyl31hyt21i0j31i0k21i0w31i0y21i2e31i2n21i2x31i3121i5r31i5u21i5w31i5x21i5y31i6021i6631i6721ian31iao21iar31iaz21ibk31ibm21id731id921idc31idd21iee31iel21ieo31iet21ik831ikg21iki31ikl21ikm31ikn21ila31ilb21inn31int21inu31inv21inz31io121io231io421iuq31iuu21iv031iv221iv331iv521ivw31ivy21iyb31iyj21iyl31iym21iyn31iyp21j1n31j1o21j1p31j1q21j1s31j1y21j1z31j2021j4t31j4w21j4y31j5221j5331j5821jcf31jco21jcp31jcr21jo431jo821joa31joc21jog31joh21jpd31jpn21jqr31jqx21jqz31jr321jrb31jrc21jrl31jrr21jrt31jrw21jt631jtj21jtk31jtm21k4w31k5321k5431k5a21k5b31k5c21k7m31k8821k8a31k8h21k8i31k8k21k8l31k8n21kc131kc721kca31kcb21kcc31kce21kcf31kcm21kcn31kco21keo31keq21ket31keu21kev31kew21koj31kol21ovk31ovt21zow31zp121zqo31zqv220jz320k0220lr320lv420o0320o4420ow325fc425fk3260j42dc032djz42dlc32dlf42dlw32dm042dm832dx822ftp32ftr22fts32ftw22jxj32jxm22jxv32jyb22jyd32jyk22jze32jzi22k3m32k3p22lmo32lo722lob32lpp22lpx32lpy22lqc32lqd22lqz32lr422lr532lrk22mtc32mtj22mtk32mu122mu332mua22mub32mud22mue32muj22n1s32n1z22ne432ne822ok032ok722on832onf42pz832pz942q4v32q4w42qa632qa742qa932qaj42qdc32qdf42qds32qf042qf432qfd42qfk32qfm42qg032qg642qkg32qld42qlp32qly42qlz32qnx42qny32qok42qow32qq342qq732qqc42qqo32qr542qr832qr942qrc32qtb42qtc32qtd42qte32qyl42qyn32r0e42r0r32r0v42r0w32r1k42r2232r2342r2t32r2v42r3832r3942r5n32r8042r9c32rba42rbg32rbh42rbk32rbn42rbp32rbq42rcb32rcd42rck32rcr42rj432rjg42rrh32rua42rub32ruf42rui32rvn42rvp32rvv42rvy32rwr42rwt32ry842s1c32s1g42s1k32s1n42s1s32s1v42s2832s2e42t4w347pa447pc35m9q2jny93jnya2jnz43jo1s2jo5c3joc01nvnk4nvnm1nvnr4nvns1nvnt4nvnv1nvnx4nvny1nvnz4nvo01nvo54nvo61nvo84nvo91nvoc4nvod1nvok4nvol1nvop4nvoq1nvou4nvov1nvox4nvoy1nvp14nvp21nvp44nvp51nvp94nvpa1nvpg4nvph1nvpi4nvpk1nvpq4nvpu1nvpv4nvpw1nvpx4nvpz1nvq14nvq21nvq34nvq41nvq54nvqf1nvqh4nvqi1nvqj4nvqk1nvql4nvqm1nvqo4nvqx1nvr14nvre1nvrh4nvri1nvrj4nvrk1nvrl4nvrn1nvro4nvrw1nvry4nvrz1nvs54nvs71nvsa4nvsb1nvsh4nvsi1nvsj4nvsk1nvsl4nvsw1nvsx4nvsy1nvt04nvt31nvt44nvt51nvt74nvte1nvth4nvtn1nvtr4nvts1nvtw4nvu61nvu74nvue1nvuf4nvug1nvui4nvuw1nvux4nvuy1nvv14nvv41nvv64nvv71nvv84nvv91nvva4nvve1nvvf4nvvg1nvvl4nvvq1nvvr4nvvs1nvvt4nvvz1nvw44nvw61nvw74nvw81nvw94nvwa1nvwg4nvwi1nvwz4nvx01nvx14nvx21nvx54nvx61nvx74nvx91nvxa4nvxc1nvxe4nvxf1nvxg4nvxi1nvxj4nvxn1nvxo4nvy01nvy14nvye1nvyf4nvyi1nvym4nvyo1nvys4nvyv1nvyy4nvz01nvz14nvz21nvz34nvz41nvz54nvzy1nvzz4nw081nw094nw0c1nw0d4nw0e1nw0f4nw0g1nw0h4nw0k1nw0p4nw0q1nw0z4nw111nw144nw151nw164nw171nw1b4nw1c1nw1e4nw1f1nw1i4nw1j1nw1p4nw1r1nw1s4nw1t1nw1u4nw1v1nw1x4nw1z1nw214nw261nw274nw2c1nw2e4nw2i1nw2j4nw2o1nw2r4nw2s1nw2t4nw2u1nw2v4nw2w1nw2x4nw2y1nw2z4nw331nw344nw3a1nw3b4nw3l1nw3m4nw3y1nw3z4nw4g1nw4h4nw501nw514nw5f1nw5g4nw5m1nw5n4nw5y1nw5z4nw681nw694nw6c1nw6o4nwcj1nwcn4nwdc1nwdd4nwde1nwdh4nwe61nwe84nwe91nweb4nwf01nwf34nwf41nwf54nwfu1nwfy4nwgp1nwgt4nwgu1nwgy4nwhi1nwhj4nwhk1nwho4nwhp1nwhs4nwic1nwie4nwif1nwij4nwik1nwim4nwj61nwj94nwja1nwje4nwjf1nwjg4nwk01nwk44nwk51nwk94nwkk1nwlm4nwln1nwm74nwm81nwms4nwmt1nwnd4nwne1nwny4nwnz1nwoj4nwok1nwp44nwp51nwpp4nwpq1nwqa4nwqb1nwqv4nwqw1nwrg4nwrh1nws14nws21nwsk4nwtk1nwto4nwtq1nwtt4nwtu1nwtx4nwty1nwu04nwu41nwu54nwu61nwu94nwua1nwud4nwue1nwul4nwum1nwup4nwuq1nwwz4nwx01nx544nx591nx7h4nx7r1nxao4nxat1nxbn4nxbs1nxdl4nxdq1nxe04nxe51nxh24nxir1nxkp4nxl91nxqj4nxqt1nxrn4nxrx1nxtv4nxu51nxwl4nxwp1nxwz4nxx11nxy14nxy31nxyp4nxyr1nxzb4ny0u1ny0z4ny111ny124ny141ny154ny2o1ny2q4ny2s1ny3a4ny3b1ny3d4ny3f1ny3x4ny3y1ny404ny421ny4k4ny4l1ny4n4ny4p1ny574ny581ny5a4ny5c1ny5u4ny601ny654ny6f1ny6k4ny6u1ny6z4ny791ny7e4ny7o1ny7t4ny7y1ny8g4ny8y1ny904ny921ny9k4ny9m1ny9n4nyaf"],e=["000002028l0028n202o1002o2205a7005a9409tn009us20x7w00x7x21hgr01hgt21i3301i3421jjv31jjx21jjy31jjz21jk301jk4220o4320o5420og020oi4260j326dy426f4026fd42rbq02rbs42rcr02rct42rrg32rsr42rss32rt242rt302ruh42rvn02rws42s1g02s1h42s1v02s1z42s2e32s2x42s3432s3b42s3k32s3n42s4002s474nwlm0nwsk4nwwz0nx544nxao0nxbn4nxe00nxh24nxkz0nxrn4nxwz0nxyp4ny0t0ny104ny130ny154ny2q0ny3a4ny3d0ny3x4ny400ny4k4ny4n0ny574ny5a0ny5u4ny900ny9k",...r],w=["00000202xa002xb409h8009ii409v3009wf21hj101hj421i6901i6a21kow31koy21kqe31kqj21kqo31kqp21kqq01kqr21ovt31ow121ow701owm42dki02dkj42dlh02dli22mxb02mxc22nsc02nsg42rbw02rc042s1h02s1p42s1z02s2142s3132s3i42s3j32s3q42s3y02s4c42s4o02s4p42s5302s554nwsk0nwto4nxig0nxkp4nxwn0ny1a4ny8g0ny9l4ny9n0ny9q",...["00000201ow301oy201p4301pc201qi001s3202f0002f1304l0004lu204r3004r4205a9005an205x6005xc21hmq01hmu21htc31htd21htf01hth21hvm01hvn42dbk32dbo42dbp32dbw42dbx02dbz42djz02dk322jgg32jhq22jhs02jif22nce02ncf42rbx02rc042rjk02rjl42ruh02ry842s1n02s1p42s2x02s3142s3b02s3f42s3n02s3q42s4732s4a42s4g32s4o42s4w02s534nw6o1nw6t4nw6y1nw734nw781nw7d4nw7i1nw7n4nw7s1nw7x4nw821nw9l4nw9q1nw9v4nwa01nwa54nwaa1nwaf4nwak1nwap4nwau0nwc84nx7h0nxdl4nxh20nxig4nxtv0nxwn4nxyp0nxzb4ny151ny184ny1b1ny1g4ny1h1ny1m4ny1n1ny1s4ny1t1ny1y4ny201ny254ny261ny2b4ny2c1ny2h4ny2i0ny2n4ny9r1ny9w4ny9x1nya24nya31nya84nya90nyae",...e]],q=["00000201p3001pc407jk007js407m2007m8409us009uu40fcw00wi521h7t01h7y21hj001hj421igr31igx21iha31ihb21ihc31ihd21ihe31ihf21iht01ihv31j4u01j4v21kre01krf21xr231xre21xrh01xrk426f3026fd42k8w32kbb42kbk02kc722nzi02nzk42s2132s2242s2702s3r42s4c32s4d42s4f02s4q4nvpg0nvpi",...w],i=["00000300lc403cw303fk006bv306cq006y13073d4096o309j3409j430wk000xz431dlq01e6o31e7441e7k01e9c41edc01eg131ek902t4w3jny91nvnk",...r],t=["000001nvnm",...e],o=["000003016o00174301ct001cv301e7001e9301r6001r7409xk30vlp00vls216ls316mf216mj016nw31dgu41dgw31dju01dlq21ekf01ekg31hvh01hxc33q3i43q4g33tbp43tc033ti643ti833xya43xyo343q94464g346ji447pc34bij0jny9",...t],v=["00000306by006e831ekf01eyl",...o],x=["000002004t0004u1016o0016u101ct001cu101e7001e8101ow001oy101r6201r7001s4201tn301tp201tq001u8201vm001vo201xa301xh201xj301xl201xn301xq201xz001y0201z7001z82020u0020z2022r0022s2024e0024m2024p3024q2024r0024u2026a0026c2027y3028520287302892028b0028e2028n0028o202bi302bn202bq302bt202bu302by202c7002c8202dd002dh202f5002f9202gy002h0202im002it202iv302ix202iy302j2202j9002jb202k3002k4202ki002kk202m6302md202me302mh202mi302mn202mv002mw202o2002o4202q7002qd202qg302qo202r6002r8202sz002t7202wj002wt2030e0030g203270032d2036z3037j203860038a2038i3038l2038n0038u2039f3039q2039r3039s203a2003a6303fl003tp204k5004k6204l0004l1204om004pg204yr304z0204z4004zg2055l3055o205790057j2057l0058d205c4005c5205dh005dx205fm305fn205gh005gu205if305is205k4005ko205pd005pl205pz005q2206ed006eo407j1007j2407p5007p7407po007pq209im009io20x7n00x7s20xa830xaa20xbo00xc620xg200xg420xhf00xhg20xis00xj520xm700xmf20xn130xn220xob00xoe20xrf30xrk20xrp30xrr20xyb30xyj20xyk00xym21e4w01e5s21ehq01eht21ek031ekc21eke01ekg21hq801hqb21htu31htv21hv431hvf11hvh01hvi11hvx01hvy21hyk31hyt21hz901hzb21i0y31i0z21i2b31i2p21i2q01i2s21i3231i3421i5o01i6021iao01iaz21ibm01ibo21ida31idh21idj31idl21idn31idq21idz31ie021iea01iec21igo31igx21igy31igz21ih131ih221ih331ih721ih801ihf21ik501ikn21ink31io421iun31iuu21iuw01iv521iy801iyp21j1o01j2021j4u31j5821jcc31jcr21jjk31jjq21jjr01jjt21jjx31jk421jo101jo821joc31joh21jok01jol21jqx01jr321jrr31jrw21jt031jtm21k4v01k5321k5a01k5c21k8901k8n21kcm31kco21kei01ken21ker01kew21kol01kon21koy31kp021kqc31kqj21kqm01kqr21xre01xrk220k1020lk220og020oi22jxh32jxm22jxp02jyb42qcm02qdf42qq302qq522qrf02qrk42r1w02r1y42r2o02r2p22t4u42t4w247pa447pc25m9q35m9s270u6370u828fem38feo29tz239tz42b8ji3b8jk2cn3y3cn402e1oe3e1og2fg8u3fg8w2guta3gutc2i9dq3i9ds2jny63jr402l2im3l2io2mh323mh342nvni4nvnk1nw6e4nw6o1nww74nww81nwxc4nwxd1nwxg4nwxi1nwy04nwy41nwy84nwya1nwyt4nwyv1nwzk4nwzm1nwzv4nwzw1nx0t4nxiq1ny0t4ny0u1ny0w4ny0z1ny144ny151nyaf",...q],s=["000001nvnm",...r],u=["00000300w80013l3016o001743017g0018r301ct001cv301e7001e9301ow001p3301r6001r7304r2004r3305a6005a7306bv206ee306ei206hc306hp206ht306hu006hx30wvk00wvo21d2o41d3431d3621d3831d3u21d3z31d4041d4101d5j31edb01edd31ek901eyl31hvh01hvm31hvx01hxc31ovk01ow032fts02jgg32jxv02jy33jny90jo5c1nvnm",...q],c=["00000309h8009hc309v3009v4216ls016o01nvnm",...w],y=["000003016o00174301ct001cv301e7001e9301ow001p4301r6001r7201xa001xb201xz001y02027y002802028n0028o202bi002bj202c7002c8202io302ip202iq002ir202iv302ix202iy302j2202j9002jb202m6002m7202mv002mw202q7002q8202qn002qo205dh005dq205dv005dw206ed006eo209im009io209r8009r9216ls316mf216mj016nw21ehq01eht21ek031ek901eyl31hvh01hvm31hvx01hxc21ida01idb21idz01ie021ink01inl21inx01iny21iun01iuo21jjk01jjl31ovk01ow022jxh02jxi22jxq02jyb2jny80jr401nvnm",...w];function j(n){const r=[];if(n.length%5!=0)throw new Error("invalid data");let e=-1;for(const[,w,q]of n.matchAll(/(.)(.{4})/g)){const n=Number.parseInt(q,36),i=Number.parseInt(w,10)-2;if(!(n>e)||Number.isNaN(i))throw new Error("invalid data");r.push([n,i]),e=n}if(!r.length)throw new Error("no data found");return r}function l(n){const r=n.length;if(!r)return[[0,-2]];const e=n.map((()=>0)),w=[];let q;for(let i=0;Number.isFinite(i);){let t=Number.POSITIVE_INFINITY;for(let o=0;o<r;++o){const v=n[o];for(;e[o]<v.length-1&&i>=v[e[o]+1][0];)++e[o];const x=e[o];if(x<v.length-1&&v[x+1][0]<t&&(t=v[x+1][0]),-2!==v[x][1]||o===r-1){const n=v[x][1];n!==q&&(w.push([i,n]),q=n);break}}i=t}return w}const a=[{q:["00000200lc300lh200li300ln200lo300lp200lr300ls200lt300lu200mb300mc200md300me200mg300mh200n4300n6401ug301uo401y4301y6401y7301y84020j3020k4020m3020n4021l3021o4021q3021r4028s3028u4030j3030k4030t3030u4030y3030z403133031440318303194031l3031m4031v3031w4031x3031z4032030321403293032a4032r3032s403313033240336303374033b3033c4033g3033h4033t0033u306bv006y1408gs008gt309ii009io309ll009ln51dgs41dgt51djj41djm51djp01djs41dlp31dlq41dlr31dls41dm251dm441dm631dmf41dmg31dml41dmm31dmn41dmo31dmq41dmr31dmt41dmu01dn331edb01edc41ekg62jxa82jxc42jxh62jzv82jzx42k0152t4w42tq852ttc42u0z52u1342u1452u1642u8h52u9q42u9r52u9s42u9t52u9v42u9w52u9y42u9z52ua042ubk52ubo42uc052uc642udn52ue742ueo52uep42uhi52uhx42uhz52ui142ui252ui642uj352uj442uj552uj642uk052ukr42una52unl42up752upg42uwx52uwz42uyk52uyl42uyp52uyx42uz152uz242uz552uz942uzm52uzo42v0h52v0i42v2452v2542v2952v2d42v2l52v2m42v3652v3842v4152v4342v5o52v5p42v5t52v5v42v5z52v6142v6352v6642v7452v7642v7l52v7n42v9852v9942v9d52v9i42v9j52v9l42v9p52v9q42vaa52vac42vb552vb642vcs52vct42vcv52vcw42vcx52vd042vd952vda42vdi52vdj42veq52ver42vgg52vgh42vgt52vgu42vjy52vk142vk652vk942vka52vke42vkl52vkn42vng52vnh42vnj52vnk42vnq52vnr42vnw52vny42voi52vok42vr552vr842vrh52vri42vuy52vuz42vv652vv942vva52vvb42vxt52vxu42vxw52vy342vyf52vyn42w1d52w1e42w1g52w1m42w1n52w1p42w2052w2642w4852w4a42w5152w5242w5352w5442w5552w5642w6p52w7342w7452w7942w7a52w7c42w7k52w7s42w7t52w8t42w9252w9342wbx52wc142wc252wc342wc652wc842wc952wca42wd452wd642wkg52wow42wyn52wyo42xoy52xp142xpu52xpx42xqq52xqs42xrm52xro42xtg52xti42xtj52xtq42xty52xtz42xu152xuc42xul52xum42xvv52xvy42y0952y0a42y3k52y3n42y3r52y3t42y4252y4342y4952y4c42yaf52yah42ygw52yh042yic52yid42yie52yij42yik52yil42yiq52yir42yjv52yk442z0g52z0r42z2652z2842zgr52zgw42zhm52zhr42zj452zj842zje52zjk42zm852zn4432ne532nk432qh532qj43qbq53qbr43qbv53qbw43qcl53qcn4464g5464j4464k5464t4464u5464y4464z546524465354658446595465w4465x54660446615466x4466y54674446765467g4467h5467l4467m5467v4467w5467x4467y546894468a5468f4468g5468h4468j5468n4468p54690446915469k4469l5469q4469r546a2446a3546al446am546ar446as546b0446b1546b4446b5546bb446be546bf446bg546bq446br546bx446by546c0446c2546cb446cc546cd446ce546cf446cg546cj446ck546cm446co546d1446d2546d3446d4546d5446d6546d7446da546dd446dh546dp446dq546du446dv546dw446dy546e4446e7546e9446ea546ed446ee546ej446ek546eq446es546et446eu546ev446ew546ez446f1546f2446f3546f4446f5546fb446ff546fr446fs546g4446g7546gb446gc546gd446ge546gg446gi546h1446h2546h7446h9546hf446hg546hk446hm546hp446hq546hs446hu546hx446hy546i5446i6546i9446ia546ie446ig546ij446ik546il446im546ip446iq546ix446iy546j4446j5546j6446j9546jh446qm546qn447b4547bk447c0547c4447i7547i8447p5547p8447pa547pc448ao548ds448lf548lj448lk548lm448sx548u6448u7548u8448u9548ub448uc548ue448uf548ug448w0548w4448wg548wm448y3548yn448z4548z54491y5492d4492f5492h4492i5492m4493j5493k4493l5493m4494g549574497q549814499n5499w449hd549hf449j0549j1449j5549jd449jh549ji449jl549jp449k2549k4449kx549ky449mk549ml449mp549mt449n1549n2449nm549no449oh549oj449q4549q5449q9549qb449qf549qh449qj549qm449rk549rm449s1549s3449to549tp449tt549ty449tz549u1449u5549u6449uq549us449vl549vm449x8549x9449xb549xc449xd549xg449xp549xq449xy549xz449z6549z744a0w54a0x44a1954a1a44a4e54a4h44a4m54a4p44a4q54a4u44a5154a5344a7w54a7x44a7z54a8044a8654a8744a8c54a8e44a8y54a9044abl54abo44abx54aby44afe54aff44afm54afp44afq54afr44ai954aia44aic54aij44aiv54aj344alt54alu44alw54am244am354am544amg54amm44aoo54aoq44aph54api44apj54apk44apl54apm44ar554arj44ark54arp44arq54ars44as054as844as954at944ati54atj44awd54awh44awi54awj44awm54awo44awp54awq44axk54axm44b4w54b9c44bj354bj444c9e54c9h44caa54cad44cb654cb844cc254cc444cdw54cdy44cdz54ce644cee54cef44ceh54ces44cf154cf244cgb54cge44ckp54ckq44co054co344co754co944coi54coj44cop54cos44cuv54cux44d1c54d1g44d2s54d2t44d2u54d2z44d3054d3144d3654d3744d4b54d4k44dkw54dl744dmm54dmo44e1754e1c44e2254e2744e3k54e3o44e3u54e4044e6o54e7k44h7u54h8044hax54haz454w6554w7454wb554wc454x1554x345lb255lb345lvk55lw045lwg55lwk45m2n55m2o45m9l55m9o45m9q1nvnk",...i],i:!1,t:[["TERMINAL_EMULATOR","JetBrains-JediTerm"]]},{q:u,i:!0,t:[["TERM_PROGRAM","Apple_Terminal"]]},{q:s,i:!1,t:[["TERM_PROGRAM","vscode"]]},{q:y,i:!1,t:[["TERM_PROGRAM","WarpTerminal"]]},{q:x,i:!1,t:[["TERM","xterm-kitty"]]},{q:o,i:!1,t:[["TERM","rxvt-unicode"]]},{q:["000002017f0017h201cu001d1301kt201li001lw201m0001m6301ow001qs301z2001z52020z0021a2024m0024p30262002692028e0028n302dg002f2202fd002fr302in002j0302kg002kh302m3002m9202qd002qf302xa002zc2032w0033x204l0004l1304r3004ud305a9005c0206ed006eo409h8009j3409ll009og409sf309us409v3009xk20wvy00www30xdr00xeu20xhf00xis30xj100xk5316nw01d6o41e8j01e9821gjo01gk021gl701glc31h5w01hgr31hj101hq931htc01htr31hvm01hxc31i2x01i2y31i6901ian31id701id831ila01inn21inv01io131jcf01jjv31jo401k4w31k5b01k7m31kc101zow320jz020lr420o4020o532jgg02jxj32mxb02ok042qb102qb242ry832s0k42s0w02s1a32s1h02s1k42s5c02s9f447pa05m9s2jnya0joc0",...c],i:!1,t:[["TERM","eterm-color"]]},{q:c,i:!1,t:[["PTYXIS_VERSION",n=>Boolean(n)]]},{q:i,i:!1,t:[["TERM","linux"]]},{q:c,i:!1,t:[["TERM","xterm-256color"],["VTE_VERSION",n=>Boolean(n)&&Number(n)>=8e3]]},{q:c,i:!1,t:[["TERM","xterm-256color"],["VTE_VERSION",n=>Boolean(n)&&Number(n)>=7e3]]},{q:t,i:!1,t:[["TERM","xterm-256color"],["VTE_VERSION",n=>Boolean(n)]]},{q:v,i:!1,t:[["TERM","xterm-256color"]]},{q:v,i:!1,t:[["TERM","xterm"]]},{q:q,i:!1,t:[]}];function d(n){for(const r of a){let e=!0;for(const[w,q]of r.t){const r=n[w];if(!("function"==typeof q?q(r):r===q)){e=!1;break}}if(e)return r.o??=l(r.q.map(j)).map((([n,r])=>[n,-1===r?null:r])),r.v??=k(r.o),r}throw new Error("failed to load width table")}const k=n=>r=>{let e=0,w=n.length;for(;w>e+1;){const q=e+w>>1;r>=n[q][0]?e=q:w=q}return n[e][1]},m=new Map([["+",[8205]],["!",[65039]],["%",[9792,9794]],["~",[128102,128103]],["&",[128104,128105]],["*",h(127995,127999)],["$",h(127462,127487)]]),p=/([0-9a-zA-Z]{4}(?:\/[0-9a-zA-Z]{4})*|[^0-9a-zA-Z?])(\??)/g;function h(n,r){const e=[];for(let w=n;w<=r;++w)e.push(w);return e}class f{constructor(r=globalThis.process?.env??{}){const{o:e,v:w,i:q}=d(r);this.measureCodepoint=w;const i=e[e.length-1];this.u=i[0]>n||null!==i[1]?2:q?1:0}supportsGraphemeClusters(){return 2===this.u}measureCharacter(n){return this.measureCodepoint("number"==typeof n?n:n.codePointAt(0))}makeState({skipAnsi:n=!0}={}){return{j:n,l:0,k:!1,m:new Map,p:2===this.u,h:0,uncertainCodepoints:0}}_(n,r,e){if(!r.p)return null;const w=g.get(n)??b;for(const n of r.m.keys())w.has(n)||r.m.delete(n);let q=null,i=0;for(const t of w){const{S:w,T:o}=z[t];let v=r.m.get(t);v||(v=[],r.m.set(t,v));let x={M:0,R:0,N:0};for(let r=0;r<w.length;++r){const q=w[r],t=q.codepoints.length+(q.optional?1:0);let o=v[r];if(v[r]=null,x){const w=q.codepoints.indexOf(n);if(-1!==w){const n=x.N+1;v[r]={M:x.M*t+w+(q.optional?1:0),R:x.R+e,N:n},n>i&&(i=n)}q.optional&&!o&&(o={...x,M:x.M*t})}x=o}const s=v[v.length-1]??x;if(v[v.length-1]=null,s){const n=this.measureCodepoint(o+s.M);null!==n&&(!q||s.N>q.N)&&(q={C:n,A:n-s.R,N:s.N})}}if(!q)return r.uncertainCodepoints=i,null;i=0;for(const n of w){const e=r.m.get(n);if(e)for(let n=0;n<e.length;++n){const r=e[n];r&&r.N>=q.N?(r.R+=q.A,r.N>i&&(i=r.N)):e[n]=null}}return r.uncertainCodepoints=i,q}measureCodepointStateful(n,r){if(r.j&&function(n,r){if(27===n)return r.k=!0,!0;if(r.k&&(r.k=!1,n>=64&&n<=95)){const e=n+64;return r.l?156===e&&(r.l=0):156!==e&&(r.l=e),!0}switch(r.l){case 0:return!1;case 155:return n<32||n>126?(r.l=0,!1):(n>=64&&n<=126&&(r.l=0),!0);case 157:return 9===n&&(r.l=0),!0;default:return!0}}(n,r))return r.h=0,r.uncertainCodepoints=0,0;const e=this.measureCodepoint(n),w=this._(n,r,e);return w?(r.h=w.C,e+w.A):(r.h=e,e)}measureString(n,r){let e=0;const w=this.makeState(r);for(let r=0;r<n.length;++r){const q=n.codePointAt(r);q>=65536&&++r;const i=this.measureCodepointStateful(q,w);null!==i&&(e+=i)}return e}measureStringProgressive(n){let r=0;const e=this.makeState(n);return n=>{const w="number"==typeof n?n:n.codePointAt(0),q=this.measureCodepointStateful(w,e);return null!==q&&(r+=q),r}}typesetLine(n,r={}){const e=[...this.typeset(n.replaceAll(/[\r\n]+/g," "),{...r,columnLimit:Number.POSITIVE_INFINITY,niceWrap:!1,wrapColumn:0})];if(e.length>1)throw new Error("internal error: typesetLine generated multiple lines");return e[0]??""}*typeset(n,{columnLimit:r=globalThis.process?.stdout.columns??Number.POSITIVE_INFINITY,padUnsupportedCharacters:e=!0,splitUnsupportedGraphemeClusters:w=!0,softHyphens:q=!0,niceWrap:i=!0,atomicGraphemeClusters:t=!0,tabSize:o=8,beginColumn:v=0,wrapColumn:x=v,outputMetadata:s={},...u}={}){v>=r&&x>=r?(v=0,x=0,r=1):x>=r&&(x=r-1);const c=e?d({}).v:null,y=this.makeState(u);y.p||=!0===t;const j={I:2,B:[],O:0,G:-1,V:0},l=[];let a=!1,k=!1,m=v;function*p(n){s.column=m,l.length?1===l.length?yield l[0]+n:yield l.join("")+n:yield n,l.length=0,"\n"===n&&++s.linesAdvanced,m=x}function*h(n){m+j.O>r&&(2===j.I?a=!0:3===j.I&&l.push("-"),yield*p("\n")),j.B.length>0&&(l.push(1===j.B.length?j.B[0]:j.B.join("")),m+=j.O,j.B.length=0,j.O=0,j.G=-1),j.I=n}s.linesAdvanced=0;let f=!1;for(let v=0;v<n.length;++v){const s=n.codePointAt(v);s>=65536&&++v;const u=y.h;let d=String.fromCodePoint(s),g=this.measureCodepointStateful(s,y);if(e&&1===g&&2===c(s)&&(d+=" ",g+=this.measureCodepointStateful(32,y)),a){if(_(s))continue;a=!1}if(w&&1===this.u&&y.uncertainCodepoints>1){if(8205===s){f=!0;continue}f||(d="\u200c"+d,g+=this.measureCodepoint(8204))}if(f=!1,null===g)if(9===s&&o>0){yield*h(2);const n=(Math.floor(m/o)+1)*o;g=i?Math.min(n,r)-m:n>r?o:n-m,d=" ".repeat(g)}else{if(10===s){yield*h(0),yield*p("\n");continue}if(13===s){yield*h(0),yield*p("\r");continue}g=0}const b=y.l||y.k;if((y.uncertainCodepoints<=1||!t)&&!b)if(i){if(_(s)){k=!1,yield*h(2),m+g<=r?(j.B.push(d),j.O+=g,yield*h(2)):(yield*p("\n"),a=!0);continue}if(173===s&&q){k=!1,yield*h(3);continue}2===u&&(k=!1,yield*h(1))}else yield*h(1);k?(m+g>r&&(yield*p("\n")),l.push(d),m+=g):i&&(-1===j.G&&m+j.O+g>r&&(j.G=j.B.length,j.V=j.O),Math.min(m,x)+j.O+g>r)?(l.push(j.B.splice(0,j.G).join("")),yield*p("\n"),l.push(j.B.join("")),m+=j.O-j.V,m>=r&&(yield*p("\n")),l.push(d),m+=g,j.B.length=0,j.O=0,j.G=-1,k=!0):(j.B.push(d),j.O+=g)}yield*h(0),s.column=m,l.length>0&&(yield l.join(""))}}const g=new Map,b=new Set,z="$$ %! &* &*+07s4!+&* &*+07s4!+2qvf+&* &*+2qsw/2rrx/2s4v+&* &*?+07md/07me/07pk! &*?+2qm6/2qnn/2qnw/2qoj/2qp0/2qp4/2qqz/2qr1/2qwr/2qws/2qzr/2qzw/2r9c/2r9u/2rvz/2rw0/2rw1/2rw2/2rw3/2rwc/2rwd &*?+2rvz/2rwc/2rwd+07tt! &+&+~ &+&+~+~ &+07s4!+& &+07s4!+2qvf+& &+~ &+~+~ 000z/0016/001c/001d/001e/001f/001g/001h/001i/001j/001k/001l!06hv 004p/004u/06d8/06dl/06jm/06k9/06ms/06mt/06mu/06mv/06mw/06mx/06nd/06ne/06y0/072n/073h/073i/073j/073l/073m/073s/073t/073u/079e/07fu/07fv/07g6/07gg/07i3/07i4/07i8/07i9/07ia/07ib/07ic/07im/07ip/07iw/07j1/07j4/07j6/07j7/07ja/07je/07ji/07jj/07js/07jt/07ju/07kv/07kw/07kz/07l1/07l2/07l4/07ln/07lq/07ma/07mc/07md/07me/07mf/07mh/07mj/07mk/07mo/07mv/07n4/07n5/07ns/07nz/07o1/07o3/07op/07ow/07ox/07p0/07p3/07p4/07p5/07pe/07pk/07pl/07po/07pp/07pr/07pu/07pw/07py/07q5/07q9/07qr/07qs/07r8/07rb/07s3/07s4/07tt/0850/0851/08hx/08hy/08hz/09io/09j1/09zr/09zt/2q9c/2q9d/2q9q/2q9r/2qde/2qev/2qld/2qlg/2qlh/2qli/2qlj/2qlk/2qll/2qlm/2qln/2qlo/2qly/2qnx/2qom/2qon/2qop/2qoq/2qor/2qou/2qov/2qq3/2qq4/2qq5/2qq6/2qqc/2qqd/2qqe/2qqf/2qqg/2qqh/2qqi/2qqj/2qqk/2qql/2qqm/2qqn/2qr7/2qr9/2qrb/2qtb/2qtd/2qyl/2r0p/2r0q/2r1r/2r1s/2r1v/2r1w/2r1x/2r1y/2r1z/2r20/2r21/2r2f/2r2i/2r2j/2r2k/2r2l/2r2o/2r39/2r3c/2r3l/2r3m/2r3w/2r42/2r43/2r44/2r4h/2r4i/2r4j/2r4s/2r4t/2r4u/2r4x/2r4z/2r54/2r5b/2r5f/2r5m/2rbf/2rbh/2rbi/2rbj/2rc0/2rc1/2rc2/2rc3/2rc4/2rc5/2rc9/2rcg/2rcj! 07j1/07p5/07pm/07pn/07po/07pp/2qo5/2qpu/2qpv/2qpw/2qpz/2qq2/2qq3/2qq4/2qte/2qtf/2qti/2qtj/2qtk/2qtl/2qtm/2qtn/2qto/2qtp/2qtq/2qtr/2qts/2quj/2quk/2qul/2qum/2qun/2quo/2qup/2quq/2qur/2qus/2qut/2quu/2quv/2quw/2qv0/2qv5/2qv6/2qv7/2qv9/2qva/2qvb/2qvj/2qvl/2qwa/2r1w/2r1x/2r22/2r2o/2r2t/2r2u/2r7p/2r7q/2r7r/2r7v/2r7w/2r7x/2r7y/2r7z/2rab/2ras/2rat/2rau/2rb4/2rbg/2rrg/2rrj/2rrs/2rrt/2rru/2rrv/2rrw/2rrx/2rry/2rrz/2rs6/2rsg/2rsh/2rsi/2rsj/2rsk/2rsl/2rsm/2rsn/2rso/2rsp/2rss/2rst/2rsu/2ruf/2rw5/2rw6/2rw8/2rw9/2rwb/2rwt/2rwu/2rwv/2rwx/2rwy/2rwz/2rx0/2rx1/2rx2/2rx3/2rx4/2rx5/2rx6/2rx7/2rx8/2rx9/2s3n/2s3o/2s3p/2s4w/2s4x/2s4y/2s4z/2s50/2s51/2s52/2s53/2s54* 07o3!+2qw5 07p5/2qpv/2qpw/2qq2/2qq3/2qq4/2qum/2qun/2quo/2qup/2qur/2quv/2qv5/2qv6/2qva/2qvb/2r1x/2r7p/2r7q/2r7r/2r7v/2r7x/2r7y/2rab/2ras/2rat/2rau/2rs6/2rsl/2rsn/2rso/2rsp/2rss/2rst/2rsu/2rw8/2rw9/2rwt/2rwu/2rwv/2rx0/2rx2/2rx3/2rx4/2rx5/2rx6/2rx7/2rx8/2rx9*+%! 07p5/2qq3/2qq4/2r1x!+%! 07s4!+2qzp/2s1l 2qmc+2rjf 2qmj+2rjd 2qpv/2qpw/2qq2/2qum/2qun/2quo/2qup/2qur/2quv/2qv5/2qv6/2qva/2qvb/2r7p/2r7q/2r7r/2r7v/2r7x/2r7y/2rab/2ras/2rat/2rau/2rs6/2rsl/2rsn/2rso/2rsp/2rss/2rst/2rsu/2rw8/2rw9/2rwt/2rwu/2rwv/2rx0/2rx2/2rx3/2rx4/2rx5/2rx6/2rx7/2rx8/2rx9/2rxa/2rxb+%! 2qpv/2rau/2rwu*?+%!+07tt! 2qpv/2rau/2rwu*?+07tt! 2qr7!+07mv! 2qr7!+2qko 2qr8+07j4! 2qr8jo13jo0yjo11jo1ajo13jo1r 2qr8jo13jo0yjo1fjo0zjo1gjo1r 2qr8jo13jo0yjo1jjo18jo1fjo1r 2qrs/2qsm+08ij 2qs5+2rwa 2qsm+2qzp 2qt7+07r8! 2qtd!+2r54! 2r72+2qw8 2r79+2qwb 2r7a+2qln! 2r7m+06ms/06mt! 2rwx*+07s4!+2qvf+2rwx* 2rwx*+07s4!+2rwx* 2rwx*+2qm6/2qnn/2qnw/2qo4/2qoj/2qp0/2qp4/2qqz/2qr1/2qwr/2qws/2qzr/2qzw/2r9c/2r9u/2rvz/2rw0/2rw1/2rw2/2rw3/2rwc/2rwd/2s1c 2rwx*+2qsw/2rrx/2s4v+2rwx* 2rwx*?+07md/07me/07pk! 2rwx*?+2rvz/2rwc/2rwd+07tt! 2rwx+2qm6/2qnn/2qnw/2qo4/2qoj/2qp0/2qp4/2qqz/2qr1/2qwr/2qws/2qzr/2qzw/2r9c/2r9u/2rvz/2rw0/2rw1/2rw2/2rw3/2rwc/2rwd/2rwy/2s1c 2rwx+2rrx+2rwx 2rwx+2rwx+2rwy+2rwy 2rwx+2rwx/2rwy+2rwy 2s4x*+2s4y* ~*".split(" ").map((function(n){return[...n.matchAll(p)].map((([,n,r])=>({codepoints:m.get(n)??n.split("/").map((n=>Number.parseInt(n,36))),optional:Boolean(r)})))})).map((n=>({S:n,T:0})));for(let r=0,e=n;r<z.length;++r){z[r].T=e;let n=1;for(const e of z[r].S){for(const n of e.codepoints){const e=g.get(n)??new Set;e.add(r),g.set(n,e)}n*=e.codepoints.length+(e.optional?1:0)}e+=n}function _(n){return 9===n||32===n}export{f as Typesetter};