From 026674bc2c4eb5f53bcb38e7efce2fe2dfebe974 Mon Sep 17 00:00:00 2001 From: f0x52 Date: Mon, 13 Sep 2021 14:45:33 +0200 Subject: [PATCH] Thread views on the web (#207) * Webviews for status threads * fix up templates * add ForkAwesome and gotosocial-styling into repo * clean up gotosocial-styling, old styling * update CONTRIBUTING with new css building, and nodemon recommendation * update Dockerfile with new css bundling * those weren't supposed to make it in * upgrade gotosocial-styling deps * update authorize template with main wrapper * update css pipeline * abstract status from thread to avoid copy-pasting * basic CW implementation * fix PR review suggestions * fix no-image-desc icon alignment * remove template loading println * remove println * remove changes to testmodels * reset changes to testmodels --- CONTRIBUTING.md | 4 +- Dockerfile | 4 +- internal/router/template.go | 43 +- internal/web/base.go | 10 +- internal/web/thread.go | 83 +++ web/assets/Fork-Awesome | 1 + web/assets/{bundle.css => base.css} | 78 ++- web/assets/colors.css | 1 + web/assets/logo.png | Bin 0 -> 144838 bytes web/assets/status.css | 230 ++++++ web/gotosocial-styling/.eslintrc.js | 5 + web/gotosocial-styling/.gitignore | 3 + web/gotosocial-styling/LICENSE | 661 ++++++++++++++++++ web/gotosocial-styling/README.md | 18 + web/gotosocial-styling/colors.css | 9 + web/gotosocial-styling/index.js | 71 ++ web/gotosocial-styling/package.json | 20 + .../templates/base.css} | 76 +- web/gotosocial-styling/templates/status.css | 227 ++++++ web/{source => gotosocial-styling}/yarn.lock | 125 +++- web/source/build.js | 23 - web/source/package.json | 11 - web/template/404.tmpl | 14 +- web/template/authorize.tmpl | 28 +- web/template/header.tmpl | 23 +- web/template/index.tmpl | 70 +- web/template/sign-in.tmpl | 24 +- web/template/status.tmpl | 36 + web/template/thread.tmpl | 34 + 29 files changed, 1742 insertions(+), 190 deletions(-) create mode 100644 internal/web/thread.go create mode 160000 web/assets/Fork-Awesome rename web/assets/{bundle.css => base.css} (79%) create mode 100644 web/assets/colors.css create mode 100644 web/assets/logo.png create mode 100644 web/assets/status.css create mode 100644 web/gotosocial-styling/.eslintrc.js create mode 100644 web/gotosocial-styling/.gitignore create mode 100644 web/gotosocial-styling/LICENSE create mode 100644 web/gotosocial-styling/README.md create mode 100644 web/gotosocial-styling/colors.css create mode 100644 web/gotosocial-styling/index.js create mode 100644 web/gotosocial-styling/package.json rename web/{source/style.css => gotosocial-styling/templates/base.css} (80%) create mode 100644 web/gotosocial-styling/templates/status.css rename web/{source => gotosocial-styling}/yarn.lock (68%) delete mode 100644 web/source/build.js delete mode 100644 web/source/package.json create mode 100644 web/template/status.tmpl create mode 100644 web/template/thread.tmpl diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f6c2fcf4f..253a40310 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,11 +46,11 @@ To get started, you first need to have Go installed. GtS is currently using Go 1 Once you've got go installed, clone this repository into your Go path. Normally, this should be `~/go/src/github.com/superseriousbusiness/gotosocial`. -Once that's done, you can try building the project: `./scripts/build.sh`. This will build the `gotosocial` binary. +Once that's done, you can try building the project: `./scripts/build.sh`. This will build the `gotosocial` binary. For automatic re-compiling during development, you can use [nodemon](https://www.npmjs.com/package/nodemon): `nodemon -e go --signal SIGTERM --exec "go run ./cmd/gotosocial --host localhost testrig start || exit 1"` If there are no errors, great, you're good to go! -To work with the stylesheet for templates, you need [Node.js](https://nodejs.org/en/download/), then run `yarn install` in `web/source/`. Recompiling the bundle.css is `node build.js` but can be automated with [nodemon](https://www.npmjs.com/package/nodemon) on file change: `nodemon -w style.css build.js`. +To work with the stylesheet for templates, you need [Node.js](https://nodejs.org/en/download/), then run `yarn install` in `web/gotosocial-styling/`. Recompiling the bundles is done with `BUILD_DIR=../assets node index.js` but can be automatically live-reloaded with `BUILD_DIR=../assets NODE_ENV=development node index.js`. ### Golang forking quirks diff --git a/Dockerfile b/Dockerfile index c38f2a610..df2988368 100644 --- a/Dockerfile +++ b/Dockerfile @@ -33,10 +33,10 @@ FROM node:16.9.0-alpine3.14 AS web_builder RUN apk update && apk upgrade --no-cache COPY web /web -WORKDIR /web/source +WORKDIR /web/gotosocial-styling RUN yarn install -RUN node build.js +RUN BUILD_DIR=../assets node index.js # STEP THREE: bundle the admin webapp FROM node:16.9.0-alpine3.14 AS admin_builder diff --git a/internal/router/template.go b/internal/router/template.go index e7bdc3edf..2beee63c0 100644 --- a/internal/router/template.go +++ b/internal/router/template.go @@ -23,8 +23,10 @@ import ( "html/template" "os" "path/filepath" + "time" "github.com/gin-gonic/gin" + "github.com/superseriousbusiness/gotosocial/internal/api/model" "github.com/superseriousbusiness/gotosocial/internal/config" ) @@ -41,12 +43,51 @@ func loadTemplates(cfg *config.Config, engine *gin.Engine) error { return nil } +func oddOrEven(n int) string { + if n%2 == 0 { + return "even" + } else { + return "odd" + } +} + func noescape(str string) template.HTML { return template.HTML(str) } +func timestamp(stamp string) string { + t, _ := time.Parse(time.RFC3339, stamp) + return t.Format("January 2, 2006, 15:04:05") +} + +type IconWithLabel struct { + faIcon string + label string +} + +func visibilityIcon(visibility model.Visibility) template.HTML { + var icon IconWithLabel + + if visibility == model.VisibilityPublic { + icon = IconWithLabel{"globe", "public"} + } else if visibility == model.VisibilityUnlisted { + icon = IconWithLabel{"unlock", "unlisted"} + } else if visibility == model.VisibilityPrivate { + icon = IconWithLabel{"lock", "private"} + } else if visibility == model.VisibilityMutualsOnly { + icon = IconWithLabel{"handshake-o", "mutuals only"} + } else if visibility == model.VisibilityDirect { + icon = IconWithLabel{"envelope", "direct"} + } + + return template.HTML(fmt.Sprintf(``, icon.label, icon.faIcon)) +} + func loadTemplateFunctions(engine *gin.Engine) { engine.SetFuncMap(template.FuncMap{ - "noescape": noescape, + "noescape": noescape, + "oddOrEven": oddOrEven, + "visibilityIcon": visibilityIcon, + "timestamp": timestamp, }) } diff --git a/internal/web/base.go b/internal/web/base.go index eabde676c..2759c3f9e 100644 --- a/internal/web/base.go +++ b/internal/web/base.go @@ -57,13 +57,8 @@ func (m *Module) baseHandler(c *gin.Context) { return } - // FIXME: fill in more variables? c.HTML(http.StatusOK, "index.tmpl", gin.H{ - "instance": instance, - "countUsers": 3, - "countStatuses": 42069, - "version": "1.0.0", - "adminUsername": "@admin", + "instance": instance, }) } @@ -101,6 +96,9 @@ func (m *Module) Route(s router.Router) error { // serve front-page s.AttachHandler(http.MethodGet, "/", m.baseHandler) + // serve statuses + s.AttachHandler(http.MethodGet, "/:user/statuses/:id", m.threadTemplateHandler) + // 404 handler s.AttachNoRouteHandler(m.NotFoundHandler) diff --git a/internal/web/thread.go b/internal/web/thread.go new file mode 100644 index 000000000..69c9674ff --- /dev/null +++ b/internal/web/thread.go @@ -0,0 +1,83 @@ +/* + GoToSocial + Copyright (C) 2021 GoToSocial Authors admin@gotosocial.org + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package web + +import ( + "net/http" + + "github.com/gin-gonic/gin" + "github.com/superseriousbusiness/gotosocial/internal/oauth" +) + +type statusLink struct { + User string `uri:"user" binding:"required"` + ID string `uri:"id" binding:"required"` +} + +func (m *Module) threadTemplateHandler(c *gin.Context) { + l := m.log.WithField("func", "threadTemplateGET") + l.Trace("rendering thread template") + + ctx := c.Request.Context() + + var uriParts statusLink + + if err := c.ShouldBindUri(&uriParts); err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "status not found"}) + return + } + + authed, err := oauth.Authed(c, false, false, false, false) + if err != nil { + l.Errorf("error authing status GET request: %s", err) + c.JSON(http.StatusBadRequest, gin.H{"error": "status not found"}) + return + } + + instance, err := m.processor.InstanceGet(ctx, m.config.Host) + if err != nil { + l.Debugf("error getting instance from processor: %s", err) + c.JSON(http.StatusInternalServerError, gin.H{"error": "internal server error"}) + return + } + + status, err := m.processor.StatusGet(ctx, authed, uriParts.ID) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "status not found"}) + return + } + + if uriParts.User[:1] != "@" || uriParts.User[1:] != status.Account.Username { + c.JSON(http.StatusBadRequest, gin.H{"error": "status not found"}) + return + } + + context, err := m.processor.StatusGetContext(ctx, authed, uriParts.ID) + if err != nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "status not found"}) + return + } + + c.HTML(http.StatusOK, "thread.tmpl", gin.H{ + "instance": instance, + "status": status, + "context": context, + "stylesheets": []string{"/assets/Fork-Awesome/css/fork-awesome.min.css", "/assets/status.css"}, + }) +} diff --git a/web/assets/Fork-Awesome b/web/assets/Fork-Awesome new file mode 160000 index 000000000..5c126c4fb --- /dev/null +++ b/web/assets/Fork-Awesome @@ -0,0 +1 @@ +Subproject commit 5c126c4fb5ce9c78d24148afc514f9c4ccbe4051 diff --git a/web/assets/bundle.css b/web/assets/base.css similarity index 79% rename from web/assets/bundle.css rename to web/assets/base.css index 7d4eae172..b28cf2533 100644 --- a/web/assets/bundle.css +++ b/web/assets/base.css @@ -1,46 +1,71 @@ html, body { padding: 0; margin: 0; - background: #525c66; + background: rgb(70, 79, 88); color: #fafaff; font-family: sans-serif; } body { display: grid; - grid-template-columns: 1fr 50% 1fr; - grid-template-columns: 1fr 90ch 1fr; - line-height: 1.5em; + grid-template-rows: auto 1fr auto; min-height: 100vh; - grid-auto-rows: auto; - grid-auto-flow: dense; + line-height: 1.5em; } -body > * { +main { + background: #525c66; + display: grid; + padding-top: 2rem; + grid-template-columns: 1fr 50% 1fr; + grid-template-columns: auto min(92%, 90ch) auto; +} + +main .left { + grid-column: 1; + } + +main .right { + grid-column: 3; + } + +main.lightgray { + background: #525c66; + } + +main > * { align-self: start; grid-column: 2; } -body header, body footer, body .fullWidth { - grid-column: 1/4; - grid-column: 1/-1; - } - -body .left { - grid-column: 1; - } - -body .right { - grid-column: 3; - } - header { background: rgb(70, 79, 88); - padding: 2rem; - margin-bottom: 4rem; + padding: 2rem 0; + padding-bottom: 0; + display: flex; + flex-wrap: wrap; } +header img { + height: 4rem; + padding-left: 2rem; + padding-bottom: 2rem; + } + +header div { + height: 100%; + margin: 0 2rem; + margin-top: -2rem; + flex-grow: 1; + align-self: center; + display: flex; + } + +header div h1 { + align-self: center; + } + h1 { /* color: $acc1; */ margin: 0; @@ -160,26 +185,21 @@ footer a { } @media screen and (orientation: portrait) { - body { + main { grid-template-columns: 1fr 92% 1fr; } - body footer, body .left, body .right { - grid-column: 2; - } - header { text-align: center; } footer { - padding: 0; margin-top: 2rem; grid-template-columns: 1fr; } footer div { - margin: 1rem 0; + margin: 0.3rem 0; } section.apps .applist { diff --git a/web/assets/colors.css b/web/assets/colors.css new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/web/assets/colors.css @@ -0,0 +1 @@ + diff --git a/web/assets/logo.png b/web/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d485df190a11dc977a12fa663a42c7cde9e54d GIT binary patch literal 144838 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

vPCt&3c{jFQ z6CFt;t*L&4?+)ud8zP|Rq9GFpFMjL2VPZey>YB|sHsYnJpo$Q~ZO!gmef1y@xO+_f z_ssXR(@4Sn{p?q-l!h{O8b#w`AxPeI_)4eAJ`vQBmhe+;#bVD_AV92z)VtCf0m<;e zLPr@9+e(};sb|PB@y-8<%{^hG^>gH|n0-tCOzQgHMlKId*Ers`_%&b- zTe8a0zQo7Ri4)YI<3_7mE>Q*_LsW7PZ?)LKARB+|=eeh!lb4=OxUA9N>VAj;G`Nzy)H_=DI za84RMUU{ZBgBnfOhwKlB0{kH{!gqGsbu%hf;u1k=d5O9+{GCJuoC`wEp{R_)!P7dx zyif68l;3!m=F!9Q{VhC%$7D|0@o}+MFr!f!V{i!x&=nu)}mxx=a z=6Ij*!Nk)#KobnL);--T!^@o&{hTeOw~kmG)PIg}D(JW*y2^c%uw+*=-J53wSKUf= z@q;wlSUw8NG>lVmYqVnsA2oL7b+P(ADs*l0G5)KS8oN5uv*_i=tIji?S|l`TSjgwW zm(yo7iuUKtHC>kX6VuaX&2erLU%zp~r8D4>*`(!k*|u0qylu*U?gvH$O@FBBKErr5 zm^Fa_)2mxaTMh|U0v_pLnQ3Rhh<=hNJ`0TlO(&dZ!+UweLN!s&wB_1tHc+oFW%lyy z5{w~qMQbIZldwZ|_6r1PA8F&|}GQz4ea;5!46YBfBi@J{qgdfLMsV8u1yOt~yI!gurI$p?eD9FvhKc#&5jd^d6QOplNcHLtuhNtHA4xDFx7*e?okKH?OLtT zMdk=G+~mQYQ~&f^ziWw!*tl+mY|=xLCXea${Dq;@liM-;DEgZ#suUKvK`_w7t%#z@ z6qPHAupOA+bv9Tl5-o-s;%eb8+Kb$IEvF#r~H zoKF{W)@FXTg<)qMD=HEoP^|^)UVedpq`u3eUAvYN)O*l9rb4;uom`!!-jDiF<;UdB z`b?Y_DVd966WRaev9o5k?zF??pd}|vP*%5gL8UNo0t?sJVk`QC`a@XWm=GQ}v?cl} ztK#*^Ua_7D)SK2V*VYGU(~!q;E>2=g-fE0ED$7}`Hx4B?<@1N0@aL%jEo<-k2qJXAgot~8L z|CMVXl+soBM#u_a1+T(BX9sEY0R7^GKEY_sWSS^OV(kCXvwVP8v_i;!9`o_sSXr9g zS~n;R02MlSt=@k~NuvbWz%NyeS5O=kDmdrQ)ajT#@cv|P#m{7;`AjTkVT>@AohLei zY5!DRp9A7v$GiL;zB=I|NCBD~)u*BU@V_~gnS|@)I}->BGePs}70S;1%tFNQwQB-C z*wsc0s}SH~%tdbmG{0mYc^DnGpIkLzXyqdLs-)eba$-L9mFH&OAFie@gjIq z*MJN}rKif0ffnp=j9Rs?7CYY=ZYa5`;n=y1`vP_LAdLZdJ21_X%ySj@y>g~4)+jMO zm;Z6O<5$uP4!ut@J|y2vTd@3|X{L#R5HOX@D7ITf1!1L8RT$LScTw|tu~y0~jF+lu zUw>;Z2d&PM=>B@Q+&YFDz9QP|1&v~jMzj?l6=;gN6y3_sPFWND4wdF`64PuynMM%; zo?SDgSV}FP4DHz+_$NMH!$i%V`sWAsg`7;K+!n8`jQ?mqefBH$mh`0I=X5EcZpy`$ z%**%UoMypwwtv3$gs=8V*$_PM@XQgwzn5o32>86Az2$sMNv)TELHu+S@cBZhOboV` zoU0@J>G&8;hTqw!Ol^jw74Aw1^4^V9a*Pp@>g40`#RTprEI$YH9k^8ARQ zzbHXam;n%hSYFUDtTUyvlnLi(|F=r}Ck07Ag6Y9aAW2Z&6x-xE@o z3#*?|zjfXlkd?Ve=DN`<2OJp)-S3eFnKlckmY5iJDjcQR*5f`KM63B(J~ zc%!?7x2vr*C2l?t*#H+s0G+akcX(5VV}BYp|MX0EIunw;nZlNf`CWL{bUz{l-0H-o z6u%vVliW5?g(~`MvfHwOVu58~crK;@rpR8mU zf1E0Sfe=~gFHbjdrvAInWK`3VxefgPt$^HLc>z|F8S=4wGdea9Y$zqDSN?rm?>w() z*ud|+rU)@yCH+jl3xl^^5f!foVhv8@+l3`q3C|#7@Qy5}Qwo^wC@vH*YIL!sd< zhF1gwA$)RAt$%J_qua;_j`~(@4iP1Qy6-NIx}MoYoOgENyK{juwkLBxMjOCn1)WZ=TYg8LAIn}o+29RdbYK@Lh_tpbm~$;h1k_7ZOmWf^Tf z8$BblC51(k{$-({hR4op<)e$C0zoPH3aZLtXna(K+sjy3sHkC!f%&(q13nJVXkct^ zywpTceL`+cGi3}V2ufN1UF1ce?e0l=>4q_sYv}3{>oPlI6#)~(5sYBDHRe3l0-s8J z?Tz2?(9Ru334(s7^r*j8##LE*tp{;ajrI0e-rom2uEIc%=~6U2{ZWn11eV2x*l*X< ziAjHx#iD}x^V=kIQQ+V>-1k_N1D>)BsFXT;L~}1{I180@utNiO_Gi~7!@3iy!84f=$v(E9NKfU^^r|viWouUC-G+kMAn@JOOFc6}>`R-Bo5iu!J zOi)qib-@E6R+Lx@)w^yv>@S6FPyGi?gc)2J36ww{IQefWP)d+^#t4-vQgINS$dh2Z zr(=^P!xw6zpiLf}yy{=`gK1l6Jenn}6Q(r+hi+cjmQYF%RCa)8EPFB_(9&JREIPD1 zE&T)LK{1#NY-7LiE;Ows--??6;iq?`xTiL|sdj!N|z3ypNMpC45D-dt|?t>?}cMG&V9!t58BP-J)zm#a~=4K5k z-JWk_+Csptp>Sk{ITmk-rSWm zkIY@C)!M{+gI-o|nh#0|B9pJpsg6y&yWCdl(COQ6F6$UpKRt3-Sj}e5sZM*Iy!q)X%TV=`{T*QXX<{c ze0y3EyPU{nY?a%}7hQTTk;>Of5zTcYKsF{dB1zPGWw~fyLlD%6dertz<9ju@8n{zL zHzcmKt7cPotfQaVyY>70H(Baii$l4yVbN1$9#h=di{ItoaR>elz5mnFQTtrm`1Fw) zrt~AS_+$rR^$8dO2VEx%=co(d9+)1p!(#fgW693%^rtPL$3Xi4QxTZ?Mza~6Jsl08Yv68+ zI9TQ`ihyykZ|o}N?`2De(}K=F;{x;iRQYDikAL#h>S6mDPPdbcYoLHh#-*4iCi4Y& zF-*}EXI0F^gCR#+Cr+!Aj^s1w-%U)PnO3Eby>~-!w_23DG6=DRv3~To2)f&wVQm~N z*KZ~ybN5&cC((k$ky*9{G)NmBQN+p)%jU{b)5!bIY1%m4twaedX!9Dv`nR$yu=`v% zE_SS^VF2dc3K^sGdC3euPA~Wgya9sOq#WdI;>>aG9yc^(J5ml4_$j(gFrci z9t3qP3i)1RO4Yd7%d$`JQaWke*ge8pN~n~Qr&`ALQ?)ElRqyx41~ndE!^WpW?~Je% z+?ceyEN<=4JjFe~o==Ojz0~l>zUX~;mG`w2}PgY_X(qY z+_kyoC^KW-+_miJ2=WWzme#Yy2~?iTB@JQbI#wSEOmq~vD+JOT7)fG~a`_W^)osWg zp3N#t{~rEh6xCb3L)H#>cBpSa`av^+U;SzmK+%{K$!Fux(eRrx?w+MO3d<}+>fIr2 zQ5*%NqCKMXB|c=5oBDb+a}YtJ2%2N_Snt$(sjFvh*M&jT@LO)$2d$Sg`5`x^=P*HK z)QJ69g!F38bydsjS%8mx*@?srtSlY05T&CVK{S?l5MAGXdqN6btuw63Z{-U<=p}Wn z!}eC{XpImc2)aMB8Mhtq?=b1*u2mW7TrIMOuRhH%A?ggI@q{12|IC_fKIx&E4_A>z z@9|HvZXx7v3Ec{At%L4?zHcp*++1i#1xgJL^Yo-_9j|Mkuz4c(}!)gNq@%zVtd9)K^3qc}&LMnO%->2Y z(X8%Huim_UA@>ukw0?{x(5OK#@(>;o6ulSi=mD!e0KfBn^B8d@SWIyAG{ThThWjb% zN2lbKUc<*5ZP9_rm4d*q-OhTAzXC78Q5I-8_1;o6#eDEXrn^b12DYm_xz%2{Zhp^j*Nxa`o%kS51KRB+kg#O-*ckC@p+E%TM(> zl!^>7T7-N~^g3xW^V^9?hPJVy~W;!816W zE8$NmmyF=y@?E{9yGh$h=EzBm{%ff#WqGQ$2%{9`v0nPo>cZm!jO8QE2rwQ#A~*Bg z+8RR*phr@kfugzUsKnOw`YTX_%2Rz&fWqWcP61{OfQ9FjSQ^PMID zA?@>Le&q7^Vr$=Q#}^u8v1eb891!lpW1E|(VaeUXi{GXXJQesPg4x}EXk^Es=Jwqx zVGprG7!k}aa(%H%gn*2RdFX6z#T-4y9 zM5gMmJlvMC;yf9Y5>yE+a4pO#S>f3tnA`+pXz+pk#M(15J$0Kmsu;w%i$b0^e7P)E z#TJ>Uq!39$R7x%zpL~2q81WLJd=1z=}*$mhxKdX zr%q0s0b#=F(yYAI0zv1=a-cM>IsC-JzirhvmY6Lkjfs*jRuP2`oa@uhJNmvdEb~@CzYB6$>l`Puf_b+g!0um zm}LO9BX+aoR(we@$k&ME)HoDWC{G?LPF0(KMflEx10}kl&?CXVAn`Tuc<5`}KD(?Q z?DDe}s{+It(?2jLN_Lcy6$hlGG zjNY!}@T zx{$`eJf=`Fe0}iK<5`f=vO^50+w^}gOG3DRm!_*gOXYCJPAi^Rgr@RA>U%+qSiujo z!4Dt%_TC{f(x@aszQ?;57659+lw!t17RLQCeFM;DxZ@|yzq9Qa6G@9n?uST?)cmZe ztzs~5I@uN3l*FDBs0iOSlIUJsGsM*)SuP3Uk2?;KztKKfw@{+(pdl8XJhs0cHV&(HWNC9(C z4>>;op~OL0J&!PRIIz}Br4#Fy3X=JSdnMD}caU?HB12NUHRxKdcO-7UPbPb;@ss%3 zt>z}ek$n;UOS6Sl8QdSjo(3;RKe*JaK=P%{W-JA0`ZfO5_F34nOR(dUa02hq@us^< z+2j`|cap!M_gnl8Hb-GE2J;t19>$w)4u`T8H1I4zZ|heP=UtZCv+|2Tl#vW$?u{S! z15mR|m3{~j!aE4fE)?lw&)z=}%_wvw1+h%ZODFKe&@?WRtdZHy(w=3RqU zLmhbWT03R)bDa=mr&G%@?=xU7^H%F+N_C^43gKr$cZ@)@A!1FKVP=>}JDQLmu=OLd z0!6rCYBeDTD)PI#Rkmiza6*#d7Iz$6hZ1F^MW4dqB!p8-23+Y%D>OD5G)4?D4Er#W zMby8ds2`6~+09cMC$&|;{5)vFUAlvz2(Ub0VdUHpfib-(WT7@B^|H=HplYTul%@I{ zq`Q`EvrSE1Z67um&TE+2#hVUm@G^En)pUd7b^?t@cC6I|ul396edDD5iDtOtL)&zE z2t#k04(YUX&R5CE>3O>1E0@MlkUngwMS!kNPt-^oy+qHuZ|1m{PhbZTm|R5q-0jCb zLGE_yptSr0`dQ>n(4I)PZchb!SQF&B5*byPavPbd&VCUsiYv%_7Fm*$ zg#+3B;p4qHL5n_Si#~1rWuu=Bm{2MTU>7R6pl0&K!UD*XdjDNFkehy9GyU@q=K)0O zgvJ@l@9Qb5L5+mJz42#{_^j-ayiG{Q`vmjigls5KoDd2a+*B1BazS(__pa0m8tJ>L9~)?3A|(P zibG&;q4#mYt8iJw#&mnoVoIb8;mgd~V1k99MhI8xae`dqUels@#`oY%8ta03tH0rXhu*+HF+wdA?ln->V)BW++;yw{$#GDuRGCPOS;ML z)sFO)D&x{D;bha6p@TXr96#(Ab9P_GpO4<37e8?$M;yDyz)W|ew3TzEe0{X%j&G{i z0)zOLl!E9q>9^o>4`b`H5yx<1E_I;#^kO3)ZH&tP`?jVb%zYN5=z^VJBM&a=C z$2&49%F&hIR*qH)$;%U+VjAgr_(A2gJsvB zl$fx6j(7TaFKT%=GmSb+H?Lzr^#GaER}#^H%hyAeN~CBZy>T+VX-fB{Gz{E7TqSUaB+wfz=uco3`caXhd3D}@JWRldS{HyBg zJ8Ww@LE2uwZUW47?nE8Hg}Dl?rQUE@lURk|yFYE@1(_s~X|`+rjCYYyEPCa8@5^k} z>zUbx7+8!$BYF%4#_^)nHsXD?Q~SUE4SP6Hld~eWC+EJc(>{dJ(s^Rw@r_tcM`~JH zA-Vn&LCqpVRwkEr@ul#*0AC$BspL1>9;W34*F5j6p1ClOO)7pdu}5vSZs-7gTH?br zbVHc%Tk>fWUy2ZO@c?fkuiWmvdTc8GDd|0cmSi`cdWNAe-oSU{vxiNFa(J`;>9(LW zI*(%&He$Y&68JkM>IUyb0O{jaWhDGQY54`$e@~WMBXd7cmRpk>j;(3JfLki)*5}iq zI6G7wx!nFp`{TFnhO$JP>MjaFIs1R1N^A-UmoqTj$EoE@_N(89Ruv}NM>4Yv#B@vz zKdjX_R)rM-=FuvC`6?YWVouA5C8!S~Gz`BCIIL>5Q2Vj)cYPtCC32Absge74sU)#` z(MvWq(Q}4zxgheNE@Jf)wyNo22-0P%b!trBziX30iZxPnRI|}oV*l$M{}qDv@=v=_8~q*+ zk!~sQgLqAty}AjRFH($OoS0$^M2jxaTlilqHS=U`9*Db{c;T82@Gyr^Xs9v?R&OLC z{A24CcOUNgb-0uCsH#zUPK|(j@JDgqPi78T%G5*VHLPUjk?9BXClaV;y_NK1{dg?J zQEmsPx|}%6UE0{MEiL!l);;zxYMv~K43OKl0meVz#blx%h-0WoP?S| zX8+R>9!bMT(UlJ|>t(AU$6Xhe20XaK^{B=>`#ER0uV-zgyoMuu72+~X*S-24B7cg| zg4U1OeLlh$3E%%HGzmIJnZdT6T1;5+bL1_89O_=3Z0P_Y*+LWaab^v{=zj8 z6z!tz=wjAyds;KC{@V79ZPKO%CE^#Of-1;>+KQqVW9NRK416UZXsYKs52)r@q4YWh z_oevoGDRrS(Hc3(u_sWGR%BmW-t^DNVhsIhq0Qi_0th35xtW-y0qSM>sPPqgpv#96 z+Z7MbIPDK0l5#Spcpv4g&b=F~LYC@0oXo9w#_vxwo_(hjL5lHo(|BI0-%bv>`OfB1 znWYWy94Lof=q+{i>kF?JTvdtgvo&W>9#9(D9ydwHe}9aMwYwEaRIAqRt0u8hB8Q_` z!Z;kNgK^1pqs`=TOtBKs1_;riZD?M8ZcvqSvqx&UC$>7C!?aI1b)RKxM|fxW+*moo zMGXT8U7mYf{H7889ws}liiph1QLKg|G3EbGT4KUYHL8vGVk-d~@vgCIi|TtkEkTh9Cr;meDr76qs|+EJ0PcpG_Vom~*a z`?1W)NL|xeo~_MK38C|^(SvFxT3D?mcu{%oom`f_EdX}lbXQ_r-9_x z6Yu?$X&Y0+i(@gi(NZsqdh_nq9~kn(2Yqkn78+(ziph<%`Q` zX|SB6YcY;ipMUEcn)7;;6HSeV*^7%_VFCYb1Mp{vpPknT=}TYenwrDf9_Q8sMYc>9 z%{cx9!HxVdYM2~7A==RHWi}f@-S!6!jA)usT>HobhaqTTvR{a$sIpH3|1n}>u1Sz5 zN=<5OHf_PIwnc7Wo8uCc13`S|<}XCZ+Wu$=cU0$$2UZ{F<7tmN8zeL3dmwu346*e> zOJHI?iZF;pRH_eu9l2l;oATAFctB=?9uUJ_R|GFMBkUBR1?oGLD`+p865*bI`VeBk zD3kq|ZBLTcy~|{3RTLqWbREx>?V7HE+G%>ucGh^02|kpH@XjuS+>p z%~_Bntc*X9-m8@oezjuaq}fF{oCwz;1`sj^W(=<~@ZenFUxrY^mG|`kk>*r~k=Dzs|bC#*MHt=Rh$~c7?kbT@N7;kc|4&woj1x zyLA*h?R=Ln8Ru3z!{+T5jj82ZV7d=QShfgKZ91$$N3c3jAis-kuGZG_ zu<7!>^eOf`9ir!V#<8}@(v3Yt|4>J6L$c14|9DK|i%j|Bw2FSx8DG9NRq3nEFOi6! zYTcePsYex8kVL|rqun`;E^c-VHsC(mtt-qM!lI8LE2~93ZlEJTt38MoPjh!$bhU%<@9>1L38EVHcq95xe-ozV3ozrIIg9#byX zROMGSYTue;Ox;E`ym}Fo%ynZz?s{er@mvyJh+P4T)@_CId)@!khf^nq$H+E+OvbQ7 zWRy^8ac<=ae5X<_{*#)%SC*j)$>Jw_^phbYp$el#78<8g?qyr-?2S|Kbn=(}&nzJs zn0zk@DRzDzl7Kk<^FQM4oWi%8lYaJ_9z@J?8zor9sER@p0d{=++x3<@E~8Q(nmQUs z4;9G6L>iZr7C1!V#$qM3EHe|y_K7$0aWD2uw858Nw)aA4BltK|5o_Pzc4RgVfI*QDq1hPa~&wWq*J!^xDD?g_q+KKGF`)oz-OZv<3vV7#1 z)MCO!Dei%hN5jYP#SQB8zy0P?L9});x+tw{s~`WJtybTMHF;FT>de3&_js&!Uzhgb z0IL<4;E8GZv_e#ggGl%Z2OiLjE0-`QZto^lW2mS$s*mNX zGYnMdu|y})@K8^XgT}?=gUpq-g7T;5x0DpC&FSD3GmO(%*h{;e6r&M&d6-(;z-C8e zUQt+yT|@6`+)WyD6LUtRj6JB#wfYmZpYLwi zkjA0C8Qwh;ZmeNxd=`0>JxRKPt&PWpz~lSzn@eQ~$)f3Fx;Yw^=-^pzRmWqxMd{ZL zcD9*aO9r^rjnnnUIVvWs8pLSQygl+Z=~3YtTw`1Tc#WGc0w-Drtsu`|p)5X61zX0K zvBqu)y2Sp|Uq8`B_iJM;aWid>EH2?XP*F5py)0+)fu5g&t&aQw?d*0bNz_n8rR9kF z;171CPO17k^7$(zKMgDL46|hHoJ`EkpVg}RL3g`wgwN-6D*U_7=a55M_keweyCJe1 zd_{uv_ZaU5%5Va0u?Noh*&FpS7hM^~vP}XGP)SuO@qUfx#af{8UIb&&ROx-y${5{N zVYDzwXH>6a8_o%#>D2tBTfN*rowjwHX?0%y!i3!{iO$V3NnKq&%*G+kh2vF-q7sy^ zP*ock&puViCPZ~8%Wfd9w!XjTVH@xJ$Ib9I8`(TSL{F>&Rag`*JExk(W-td)nG{;7 zsoYU_&d4l32Gl%i7QsnO3np2H-)v9mB@)JB$2e_)(X+^a_L;giA{P38`KTb<4HHDzRn-%eGQen$nFxjr-SH#S=Z&9s^W_=DcKLvek z51I#`f*#)wr5kA1_uK=G001BWNkl+lG z3(|rE*r@~SCKFE1YZhF|*a>zqR(u2>^{EQ>)6{egNynYq4dh80AKKoe5mGl06p8}X z-uSZ@YCD)EIRaKk`ewTDavyiC_XKzWEw)<#c^3Ah+=UDULpLIuO_jRQ^ea3#^WWSA z8vCAr_1wMSsiPr_<>@%yU;T|fE!oeB2#rP!%|^`@Y_$c{oxF;z)}yolw(Y<1J`7*^ zT1m6f4ea{Nd->SCUu~=1dRq*xK<8JLL1Ztu4s`y@pz?iQ8U#Oat344pv0hFjlL6M2 zEzSsWF%}tY!N|?fz;+h}B9zJnr!145^wofU9e#c^qs64Yl;G0w9Ak-#XtIO6TYTD! z+6-m>SB^m8P(sm`K0U!5cf=wR&EvFEtH8?I#s4{YY_ZhNIhZI^F_z3vWw)OK>pEaH zLAn7wHwEj^Q?T|t3_W$&^GiDQ*ctv^T?5$V$5gHal`BDK^MIKJDHEz^1m@-)pux?6 zne)<*Xy^MZ&%(MgzeNp(Vhwk2`Bu(^)GP_sG%srNgoUr&pAFXj#!Jx>-!~wBENvGi zPq9{ot?5SWyM+8JxR%H5vXGtuE3ErcB2um(J>UfCfCQ+ zjVyQH->!eDf!PUI`yWGd*8|Wq$Gm>nt|IMZ{NtjL+-|!!8VxiXH8iSKSi0dIiz>iA zQcr1z^41G+@jE{)0ho3OKyO1-pin}J<$;v2t%h> zN8-?=<%H8Kax4n*!PRPq<<`q|3!eM0VZS)Dn`T4Pl2)te#2R%9U!I?bjwOH%*WF}0 z$f1R0&r3NG6?JT-)((t`ILC)au?p|nQy2VjL~d%{GqzfngW`tgQ{?%ic|jG;6&1Zs z^M|vY#VsgSu%?cJ4?KqY?uUTIDS!zK4Yrzr=aLf@*W#{`hM|?S&{J$vrj&xt7C@x| zpxg&4_QJ@PfP4w8GEn&{ZNH6U}lh-;==Q}a@t%`z*ld1VtS>ETzW$d@pg@(@wVbFD@_=*QfjTyY&Kyvt7tUpV5@;fqXw(d zgk@P!N_qJ?yD?y3%?Y%p{^|F5>dAZ8yoJpD-C%nG11n_Cz6zPk-U#$>2$fxO2aWA> z67eaCTFKH!UBHlLhxNy*1OUinGANd^PNLahPj&MpWtO!AXV03US2Tg0*kqR=+(Hw5 z^5>*l(pIqO`M;+uxH12{$aMsd=0XBZ#}<&-g6H1*s4txN-NVkHuOj9qfd@gG#Iq1m!8mz!W_81Rqeny`?`mcRoWp!zq!=otc+ z2kb~om9@)}WwJoF0F}+PE~gZ{2cbwqy&}=PDt#j{pahX4Hys#@&i#xfYIU#9mOjC> zEv^q;n(%Th(kl~+5wYcc*7BliLwzHJV`7*#3@xeMNq7{hcDv zI*{>4f5baK_CKU&M=ACochPI1&UqJuy+LEP}Vw1crOp>BVlO4@ZOq{W9dWk_>E?j}2 zft4)qA?sPvA|E_fiuu|^(mF&f5$=0CxvQebLa7$JB`P;~?KwXUZqz}|1v_zWqiTz{ zrtMJArCzAwAgI_2RpkP=*OsM#M+YKgzZpqycaPtPBvV*0nIxa&fu-SShb- z)i;Cr$r7zYUWaSp@E-hojQ#R83`gOT0|Ui3tH5dbA|2G zQUJQw8cm!VyN=dvmU_e)95c(PoDe>GrIgPkaJ>e7d>@+6-3{x&)1YSEKfy>VU)RN? z&80yf-pb`ai=o&2X4f=|xt4Uu(YtPSO*r--(%dn{Y)=)ce?2lUd=u2hi=nb5XQxMT z2}LpG;fRJn&K`I2N;wALV88%;$KhNqhhiyd#Yhy(#`FMz?e38w&Ytys!EYHVpC2?$KK z?8Lmzm}U5a#BLJ{DEEMzwo@anBX+pLf(3#C+sC3#RGM4QGM?*7JHp5*`{P6)dNnGY zAOPEP%V7aR!F!WrIZL*l1&_N!_rSR~N?Wim(nT5RP#;aQ>V^6)82}7Fkil_Va5sEmA60;igfu2@YC2eenS-%mJ5-^9 zM!o`T&qGkP1z1FYL9tS4U3>Dw>Fad(o-pPg`7Y|?2mdfTxbeecLF*t|`JSC%vm~H$6=OB7&{C zRO?Avd+KFbMC|_JzejL^vxQH%ESH;B6-yF%NnnFH-Zw|_kG%esCBYo&9$7#nvWchy^9dg2Ur z$)(`L4(GTpw2=E2G%pyy+x>F%0|PtKzUWV}oK+RB=^^jvf2L(xB zakH9W?feVe&v0-7B?^O>Aave`RKSV(6yfh*(hF z#VnSET{(4A0}k6k0Zj;ePxh}f6m6T}qiEM}bncU91@rGyuuYU>6>=XlSlgD)rRE6l zyXt^7B$`)HrTe2L1-S%%*IEbCngj({BYBYzT7t9{?;na<&JXdwS%Lgy;r5Rn=|%g4 zcVz5XK*NHyk!m%!SlbrUsO6dcBSm(iEE7~*o)<8mNPT@fR;c_3$^RIz<@pVA|da&}N*)^>Van^GF3iRKF zXCJ`A?nk;}RbLYVZR(l(dHk_EV|$FXc7_iC$mU_3_cEAQ{36u43!pLuf3XaTm{7Zf z7kH%ueiFgwCmn-Qpqz{&*oyfA`ucicnvoNB%Gmx@P@#$64Oj?I{3?)G)wI(e7Ek;8J{YiTbg4$0**S5n1ra zu&oaW9+$X_jS4$GheQ{kbu;Xzlq6u>c2I^duApHVhQDAiB`z%fLhJmlowjfUQFwwi zQlnhmnxUjjPo#Nb*A>fT1ir5dw|(F{2CFl;QM&d~XGHwF$G>ip;z+-+NO^6_UOOf% zh~9Tqp|)>5#j05Qc!G>6wlFEBz{>EQ&4X4U=J0iKT1t&1p%m{6iGGu8g)+E@MWHW- z>?F^Pcs~ifHsY2LDR<>e&t-#8^R(HPhk`xzvVVrXna+kgqYIvJ11htcXMF>sJ z(+_;3E56H`5NJp5{$lc2TCyN+mys{Qyx>*HUj7DThPDA_#@~UqFyjO4TgiZUIQi11 zJ1AB#OcVWsJt$Z53D%Fuv4gwYb^NH@Nh=iH7qn8iQGBoyd0M0bR+!d448a9mk&_}p zJN|N!!qVQZ+G+xp;VhU|K)jftMJH-ai%#(F;v4c$VKZTvCRuS5bU@@XA#7!Gu0uK2 zIB()-_Nj15f%`XRb|MG;Xf~wfZezF0C{d~apO9l%4DGlVt|WCbi;)Jza4R!a+3 z$m-%=E5j43#0eHT_gcIXT$a-(GfORN{um>Ql^^qbOQF4Bg3x9ua%@MM1EQS+;u>** ztD==hv?nrKi6M7vX?E^k@EA9;Nl6oi-uHIeOKHooqPl*#@uN|SR7=r1xKWAr1#S0J z_d5nREuLl3^}W?FEKaO#>&a@e6y` z-`Tk%&+)`V-(S*n+C6q)9sb{)$nqta7rYX=9oNGwkH!j?hyAZOd1oCu!tkFPJK~J~ z3?N_1V`!)X(=`360@Ms04cNuEwKG3CyV=MtoyieyoNS5k7iQn;5zK_1o*>qFfA|X= zkr5C!+Mi6xF6RS9k>d{y)^&Sfc8)B9R+=O~u$F-fZpj+YH%$8xa?a18V_c4U5NhuT zFKD$QBHQBVw1@YPeXFGxDa#gAv*|1}2wO5ev7-F)I-bCe+#i)}JtQJ864%Q|=S2XU zcEn_$j|9t1k>-fdS20oO*92{ZLOkU$bixu5U7F0-W}JWDi;kb*GI|gmx;-n4d*Cc#h({F<}@5p z7)|rxTGE5ps#AO;DHuc(51vs@Mt<*FR6@kByMYV(=!K4+RbYIQ=kpcnSDI6WqHEbq zvh3RZCZ5{J-*mWhaMRmFXq8D6@V2$kEj?$#7(EB(Wj_bC{(SFy>n=YGTB#vr@;`4C z3tGE#`1VhQ{hzuWR#1TBIO^Qwavw4mz8bj;t^+E=UiSWwAPYq!wf0X5i6hVQL$S0Q z&dh>JZyDvD5;Xe@U(8ZOhI5n|tpn-$4rM~S-=&huMw3pqtc8hy5DY~xCQQ1Hj}hyp zeRQY^po}LFNSU@(E8gYmo29medBJMJHm# zu&W3-`KVHptOl+#^uAWYBIEc_1&=P>zc>~Mt!?2GbPQ*LC)|@4L582+!%Ez&1Q&Tu zu&O8+z9^zd%}KYvMUUNszImQcQ&hAXk25?edZ zxwi^ch4+I1Ns!>X`RaE|tyW8|Rx3hQjAk73v>jpp0e^S+7kEB7!au+fV#vAM&+#W}b5|)FZPB#El?i$`S7qIZ$Yq$L@W4iaJ@whO zQaMku&0x~DhWRCa7LCyCe-!Q4{t4QLo(BLlm1WM-=dt|h&UteFBv#+~$(Cl(?rDIw z`q8`m=`X%N7|420Vl--8IsjQxpw$%HNwa-UzIY1Vod4`7A(W^G-D0S0J~r#5HqplWx<#v){N0x5~&?a zaSg&k5j1DaPUu||oLdo^PHFeeovnUu|D0Cwc&=ugG}fIBcQfZ-2t3OTB(g-UjDb)^KJ#3m2E;YFqUVP zRySRSDxPSja^1xyRQ|jKutBZ>3784Zu0v?Q_K#s6{|Y)&&Y^}sUvY*}OG|FdUVrTe z_ZhU!`ugN&|Ne8=1mNtYyq09!UW}jpJ&d3E9bjco4}D}ngIOx|1z!1|6&;C$@xlW3 z?A_tL&2;EC%N=fbO*6fh+TjO=Xi`%D9yC$t2FnD&k#)!bNEFT+j*DINmEykZ>K7|J z%|ND&dLUKK=-FXcnY5a@rR93pU4{7|(}{+K6inVXi4`Jn|LctvovfnqA?nbKNullP zy+-(iW#zu$Ayxw+H6|mLjm6?B8KEkmx8=egHfA;}_jw?lcT46w@Pg6w%^D^)L6ANt zrTY@4-vX2vmDCYDvkFk(q*Mo2dLxnZD#nv(H6V*6O*0oblKMCzf^A#hHJXiCjC^po zEq%|zb<4``8W0&#auonbY@+1n1qLm$nw7{hP=gkt^sRz`Q4!-y{j4_6WmN(Nl4dcJ z0*GffHgEK8ApRcgPh8-SlV4>$;dF+&XYljI_uHH zz%4B=x*Sb0`MJg3l?x2F&U6#b&Vp$KYAcRMVj(fjD3#909kUS;K4D|&j;pEeX0=sU zBf>*{*mc;Y`wvOxoWZ=;#;#GY_5gE>eU|qZoy%=pRQp=>qt{t3xNgNFs5%)%xr7>! zZIecfXIm-c;m?5`>L@HmUcVK@$xQ?H*OjyMhR`9&!Hz=e8wadKhP}>2lZB~t)cSGI z53Y<4r4GO#_=5>+5cVK09~+{JurNZk>^oiMG5gem#)$P7xhMZBXy09amt2DDE9^3*HjF{WlNz1Z{BENr@ywU2^-v|$GjNJR%Iw#;$ z8DL0EKDD^C);B}wXFFVnaBS&*O#J-}lSEJaReY9oG#imE-2Ew!$wGg&Z=X4_9>;#; z6-vF~GbJc&!n~Sa7gRP?7S;l0yom8P{%c@i8TRIId z+-J}>+w1h7{ck+IeM|48@9_aif#F&4;OxoY0xj?9*FAAlg00~XQ7oBc(Zav2Y+u64 z%98JHnhNoMI7Y8GGUUC+7=&pRB!&sd*ba^dut1<2NR~di^&1*tRbwe*UMVqw!TT-FOQK<;X|eLne~RYC-vh>r_&jxY5^Lr= zYCIXZ^Wib9p8Um@gr)Z^gZ9af|DUw)`5Z84ZUG=*+b)cr{Vqn&d?&+-7vxe}8gG{A zqnkQ{?}z}gi+749sJ^s0D{$EndscL*HoBCM`5pWzc7VqRp)?8?8-a%R`>^PdseAZa)n%U*~J zJCUh?d}q&MV|Hs|Kh-fYqE!cx@#9q9m&V5@`31BSr9R14s>rMKSum7!n@$r0nzKYR zHXM!ttbjAw@ujh5o^KdhNi4&G~MZ(P`SY{Dd3!KXbA8cCVwmp>eu3m&tg#uRnHZ*6}>64 zGI3ye!|h{n&kPtTslZ)7qsBn^?2U~LjKBE%02_2~|7UcQJKiVl9$)_q#Wh}LIfqKX z%{Tt@eFkl_ye|CkkGPv`#4zN~P15GJT^N1gw_RD&gR|)LFHK`($-_;YrY{`5^7lAt zXN&Nzoy!=vqf%&%(!`asaOc#$$t6=@Br9QK4r3}Aw9&#K=t0s>T$k6ZNE=A!5*Oa4&@4)jkOz~??8n+TB-rQ&m@~nVW$LnPmyc~}NnyCx$XNQ+Y0cya zMcJ7~4&(@vV%bch?MKA35m-*{&~y`hM>Ef{$gII)B7MY)Zr)1QZ(;vpMHXliHGhHW zlneckA6wrhqxXHesd3RzBCm_yjJVC(IC|9?Ba#YY>Vm=e`QJtJ+;`E8mYmr#a8Iv; zTv?+e8@u-Y>-PcLW_ewC^M{(czbDu;9i2kifHaHCXrK8_jGp}-Xn9ZUdSk(qQI`xL zXZG&CAS1?)_gN(?fQxj{_fyA!0Y++Uc+q)9mTCq6i53I>R zQ{&5*@-zKnZ=2rV?f%^s4}Y=P(KMEGlX+zthqeC#Xv@n`vK*$m2h~C>O*ZSGs0x58 zWh)2bN4f(uXHmqzg)t??`^NO;V|I!a3)iM7C90rpqdOHVY)#23)$}^GlB0>brCLKs z0*Ml|TYZeO)LSWAY7hjS*BHxL9$Z+iMvxVYdvK|*+@CxGDt4C2>(%$CttUGSMw9i# zJmq?~@;FS7NvzNNG@}$Wo_VdwOj3r4&oN;HfW#w4n|-2EwrP>m{MXGg>8=g zob=IM`oX{1av1fV187&?`Z3=)`C1iCZ|#@WyE(}|EG(ma@;9;g?C&{n7U*;70Y=m# z?ygVB)ai+Zo7RbfgO&+^X&UU_wSv)Tq>NC*LM?w^=gS&yhic0mW}zMFkEyBcWNV?y zav}??NN}syZs-HCIAOw6$JArYDtwRfIHPLmLtFzXjCcAqTLo(xp!CG{7|&{PJNTIE z#fJ2vEx@v7vhu|lQ9Bd-nfi2cvC~sH_t#8MgLW@or#ydBUJH{%=9Gtk&l7@OVUDCJ zbGlb~;B|JdbMTn`>AGTNN!Fy!-~lTbHBNeMV2txU;38?n^*(U6+gWKj0L93(u|Ftd!E_UHH0C5w3-i_cXO)xzIzs^*0ml= zt=+UT=hUyC<#K}+wX;azHL{TlOK6_`4n|-24(xbA{2t$2;jJjl=cL4R^OsxCa^s!@ zXdh?p!Ommo-td8uVd3#LUPSxYH_$%+`{0#*(Zydc8a!hMSDBbAd3CWA=ezoL?^#CE zG;smS%bSuxYsi&SNOV=jxE*Edka?O_Ce`|m)W+WiKz?0c^6e zkS%xlD*mO1wNhUjDvl#Erq*ilcj1gatvjv@f2-PODxfM^5pf*RLL+2ZhKLt%PK zWu28;2}@6)s9cmKvnV$Kk>M1ga(78+cH@t@H%gyrxhRzfraK37)@si#_<-@$AkgSi zu`i7)BWdaf&@3BJ@|1^s6KBh`1E+a#v{Y86V|*5or!Sh33US0Bt{*l^__wRGPC^b*g}_*rAkbh(hT8KL|xUiXf`(; z7Rdn!jHGm&Fg4&w$su3pha#X3or0poseQggmubw=fnsLuLj(Ox+NK@1Q4g|>{E z2rl~=q{Pzb1s_eTJpl8#C)-sFl|4ul?)Z{v&COx!1E$g(VT{-?m`uxuvWX#H&(bDE zF@)LXqqh^9NSr_7hAD2a0`sTFY6VCY%{LNHrFqOy1{7tkr5Yc(Ca`1u_|p)!razZ%`iG<%UatD3}a>}W%2-j9HW(eSa|+>;Db+sn{hFv zeI8zh4JMb);r6>*$8zJI0%+%c^hcHQ(>=nPWud`l-w}+y^3Txhe|aGn+%Vw((9 zm9~sgxVKjp#u^(@XUuxWPR;HTNgb4d!D>f-JlN79Ug*_~O?i=NaS|PrJpf2D-O}1bHjXHh&)PyJnHjav z3osPC*`kh-ddo!N>p{Szx)U+rQ71c6b@{#;Vn39ZnmF-{8AP(o2!H3EXfSmRTP2du z-y@lsSuCSsh17FooV`Ug+NkjjNE=z6tBvQ_u`O6m%bAvwI|as~XB{V#==d{v)RSbM zC0i@Hl51tn>J(u&oCSuo=*h=L0E%HOT25WG8K_TR8+G4R#1w3G>=e;u({-5bd$I8R z_t5Nrw3;~Zd3oLV<@fJ1X#an|F8uJ1*shkwwD(GrKw3zrpdAM=`r;p=dGPt<$CP!e zGE8K@NU&tJvSt2#Hcm@HZKLuPckbFIm^1B$o+gWsQ<;UE*t?#YSiMbRDJ{7@4GePVN$0 zCbKy+_9@&42|Tp!$+cRrwcbBSHgII%j3{Y#n0;_H)yp<{DTyf>frjI9EMiv*(8+3s z(XwW1gr!32zRMU`s^=>b$+U>v_JcExlj#@3t0o3h8B?t{I4&1i1u=U7VNHM4JDumu zYF`t8&nZ=nsx+lk3#sidijGrk~N@7nJ#qol9ujHcn#3>V-QnM%A20)`8Q7S6J{% zs&t(x&?y*_;0L5M8kqK$NK~7=o$6Ngxn5bxGJqpPJ&%-y?IsEM3|JN@AQ_HJ=7`oF zTN(-HdYNxn5gzvfK~%B@8z1u{T=-)@#WHR_$i1oqk&QE?KQ4P$v-!B}{Fp2dL&d zU*BC8Cs{)U`w%C4)7DLCrNu;Vi72;sKy~tEmR+RIBg`11TIE^fb1D$PoH|-r#=>OX zaM57YWEws6GFWkUU9onkUTc=Dq$xmAv?r)8vYrLB42!PNLIq)ZG>heIQATEM63Rgl zxS7&&M4h+QBK4p6$}DK--nQwUNFSYi8tx~XXaf)C zvQAN`Ju|GpqXx$XGjFHWlm+UhsaZhYpW=A>G=imGG51fb+Vy1RX36TYonkuOK>N&Z zqIvq)eA7U=X}Fsxt1VZFY7Ev+y|rc5|1JNz_>+J4)q7&_P<^jQM4+a{=#j5r^wocw zCM?sYco4ySxrvn2W;tieYD|tRStQWL%vfF;V_|G63kC)kp1yO75l-an#DPP6)P7K-23eeWQoz z$;B$V>WptWvqF=WoA#=)EwV}@lbLk`%dFKP^!8dk#h|HD;HbDJiCwgssjDU{l*tns znA&OoWLzc1e@q4&^ z>a|UOX7>g_``Mq~GlQr1Mjd<_<8S^CsHs4dzN`{$MIx$&`X-qO8q%`8ys{0;+gCss zsZOEV&Rg!@s*d?Ku{4Y>GDLZK#^!+23z_>oii*iNlqCFaG1r0>i(<4Fm=qJATco=b z!<1`BeCaBISCgzEYNeUJqqY{@*_gMPSj37ZE(b_?@OEGqg$Ozjr_v)X2e?FCWdW;9 z71A~$F8=JxqQaOMoJ@_g@)MJ(#!A%~*Xm-Pg`C&4R(Tg`m3fuMxj9G@|M9G_cBMz- zw0U9yI&9Yqu;hKo?HVK~p>FEG_5hbdCN7m@C5YR7DV)t5=Cl>&t}HLw1pIuUI(V#^ zuWq2^Sm>;Bu~%rv!r57hVzY&aS9ZvB^zRl9Zc zr}r7Oe{gX2@_%4^=gvJbe0p!jwk3?d{7-;w+kKvMSweI=po$eiC_#B+LhdoKjU@xm zJdGC`tgI|X>xR%lNv3~MwZbSiOrm`(R+YUYWU*Yvi|%dan}uqwUh;7>s#IgG1$B9e zz^3rwJPS0GxQ0q6u{>f1Sw%wDG*Hp#8DqqxoG+5L9}Ebf=9ozXV_Q+46AN+FmSx?F zk>#U)=B#K^$c`l}UTouaaW*LR1)7LcwyN-}3wk$Z(j~OoHLh(GOnvh(i}B6v3y8=u zowe>p8Sxa#Mp9?y!7(#CqQaM;YmxwMZj1tmBu3ePbkoM{#ju$20E6Pj=hQvFZ0kaO zVJb@lu|&FIq)jHh!34HQv!KekisvRu5t_1WDvqt%{VR@}?#4t(CJW>dUTR$Qrz`Yz z*{TMQqUkB*quTmrLp9>~u64=q3Hd^)8BN{&RqG(}{4||UC=uY1#tT^Z)_;Tcq36Md z&_sO5rKWQ$lOIH4^Y6~*_KBD81GInW*VUtcdyk-d1BwZGXD(Y4GTDi0CO>KQ) zD?6UyoI}Z8ab~j-G%PZ+kkz@Ee!U{)6RH8ou^}WZ0{UKE*A*JGTBcuQPx5OkJN~L! zrRf^G9Lh;7iFDJA>dsrSc3DSUxhhYb!7t@t&DL2|N=%l!mKDp7Ah@>LeuI1{JY~LZ z@xIKH&uUp*3!WKaqyTdEJ)AOM2lZ~Y-H^zj)X=qNcT=&=t$1L@Lb}F=0 zww~`OUFc>XY2k0B!x+ z#T{2)`|Eq86*cSBAq$uWPRuQc9=zKyMEBw3xxiT-K>{c{Xv1G|u8vzz#Y!GI5bN3|)C{PVsXAtGj z%gLWe`_c*92YGDn3T2*sLbFtDREXfmnkyOGo+;n4Xsa$cS>4 z-xa%SmEvhsz%@+^gH0Jf)fdZBTj+YVYT3@ZU@o%7j}&_)>`G*(pg6|#{Z8whSe;e8 zcGOM1#R#01N0vA-%F454%#}2*HAo$`lIb)cB{bK*XqA{J5B3Y)*&IS30%w~@Zz#;!{zZ>24PxmaQt|6y4IX|E}1HH8@dE8QZ`g6(E~--qa%FAMATI68MU=F zD9j}gOr_EbHyWt=?<-4^y9G*lQ%KhMq&F2w=W3b;wD&N^U;eK^dk(_zy_GOvGPwo$ z>%4mG$M*r+Kh*2eYd@%$rnWNDhkMv**CC8v`~zTd#eo7ljXN%53^)dh>sE1VG>aAo zrkEJWRQl$av2AGqOG}H{KpuH!X1?9AGGwhV3~IM&YEJtmb3*r~sTlSZq)N+t>b^@l zqu!mU+*QU7xMcR5>=Z;J0JqUJH?RWANx#y;r&z@d6jj+n*)lKVcLH-rQ!Nax*kwqj zDr)nD-&lxYQX0XmBuw4ZWl_rRNlRHNrN$0w5jcChkN}cpcV)~F1cPjs3}R;@1ji!j zYiVMXQw=b%D*tvWN+)!37JAKs;Ych`Ea}ZG#d=0lbWzUb+30-&17PGl)3K7_>Yj_n znOh4}R;f_kSHXTq=C0P2DM4V<_A_)Wo*7^63&4}em73)<9a1hr7BJaa*W7Oe z?NC>^fwbVzxu>W~0i-U^HA@7$ld1A%QvgyhSX|YxngrG|rmwIIssyK(+A~{hD2M@L zUBw_+e>hv97C3MO&GWwtY~OoNb#Rv6lfJ4j1#TYw@uoe?Eep_Ye|)N2JO9DJ4sMfO z=$V1-DGZuMix|J~`!Kr?`gZAHsX;KoO`GBLL1FL4b={e?&4Bb=$_A|&wb;IWIlG=( z*EGyVmtd&thb+k~|`^NuhZK6Kz$)ed!;W zbqf)Q+pMc{I>4e@&6MT$hEp6@u7j)P9m}~yZP+9*LK2zXkKqi>|a8DSa8dix`0u zh2Bzw#=6XzCM7w^=!bgejwKaKB#)V-wL&i|Feyq#YO$gIA=fksj3oCBQtz`=E31SO zqXD5Q^jpCd-xL-dLT6@&^g20vmW+1UZp0n8q1JWj6-KFbc4QtOBMp=*A@)rffm8TR zA(hPM2?Vc!Gk0Hl@4l^uB8*#q9MnxqX3byku$jn#yy~=-+EVV>;KbngiN42++c0|c zYcP*}4Q4d1Fj2Pm+1Zk0&*{x;TDxTd+NUr5+5F{!P4Ke4i?H_iY7RVw(X+n`vvMFk zWMQHXlXhU*eAi^JZe$PuB%rpkeF>u$q7~n&o%ejqi&2w>wYAJaEy@q9hqVcy%F>#S zVWBEz9m*W#I7nShB>+jl%YlVV-^2wVr4SHQTg-rii!4D8&E=8Gq8L!!nb&oRr`wAl9o zD3h6`+E@naWh8x>z5cuo&3L-Rn36K|W`oerdRKLvMaSw0N_!PInPbI%ry*RJl{Nyjyc6RmzX>|@ zOdMxcq&ipvnl0$QQ3I>pt;@J|;%A$(%(*22+LgC{%o{f@_g?VL{F1v~1867n<((Km z@h#AfeGWhoxugK1xLdJc#iDWW9+M@`yrZ*d)n{KG1;*o%*PV%pj5*VF%H_nK>q-@R7lsdK;f~VvzY00M8n|1{A)VG0$UVvFx5#iaLig9sbR1a$G zKxSZ8hC=u(|K0!^mRAERG_XNDjn^xI72Csrpg4xufeZ9H#B*Q#mnhv3g@v;$kED)3F7#KS zxkPs0n#L$Mc$X~U-2DP0P~4*!{w&6#41~^2Q04bTxlfmZOFNGtlhzWTisQ1B;Zp|K z0~NNa^i5%0biOMX#+7TSsgBo@_cq#{R+ZHjpmbpYc)?_maMu5rNppkCl=D^$9bgHa zV6m+AzHA|so80z@LCLSJ@q#6lBw$f=R7zkFz1$$iErBqtKFeyu=Ff|b0lHAWwE)Kc zXS!_sm|kFH(16Kn0!8yuZH!dA(z$cbrqFyApBprtT^KJ}={Syq@XSx61qb_HB+c0S z=O|oJYtfKN)*gmk6(kjGG_Nel=JwjyUrO?ezu zMlN`-$@`)@7=u}A6Irxa)-$>+B(I$ulS9Uw(I}Xv)u8l3(w1IHOUBdqY*_~`^KqMR2E$m3=M%bmi&Co2l}ybNBgFE!I{yS%^9;_s z3t2PWBk!_0Nyi~Ubnp3#%}n%2Oce{sIxFTGLf<9JlVO~N(xI}vXjR#=ZX|3I102eo zY^oM8xwj#s6FRiE!XBpM(Bn)us)R-i(=4Dp{31q2zLK<~S;L#zawJKk5^IPEcJ&4( zSI+;d`vC1%d|iF-mwfx&N!`VRt%uO$g{PH07(MpuF#C?A2hX&6V2E{o1Y zMg3c6(c;0CJ8tI*)q!ohlcF(xi)Xn)tCmgG^B;sR%&Y=U%pF>5Gd7P()8_cK?#S-b9jb;U(^Mo0AzH2UOOvL`5KK|;*rAc{ZWbVk zrKwlnJYizEy?iEv)FWu(l(j{!@eE@?vWEqGXEUHWaJ}-}SffEzo;1NT(lhdyxESx} zb*4#rL&?0`TJXXWnnzzmd*E@u>D;Q(Pid}T(sLj&aO>nR{_p!G&R>;1^WJBAC&^pP zs@A}YuFdA~7eNP}juUk#_YpOYvS)49s?N3Z18&slR`#sS$%X)%e$VpqwgkXr*HbYm zm~yeHOe$<$`C~}fo0z%0G$&ZKFquh;p6cbMFi9F=w(5>CXR$1dX%cg0J6LL9$biwL z@*VeFzgXJn#5J%PTao~60HY0C@0g!Tc=9wiZt7l zuBl@iWO;G8L7>8{2B2zO`JMro&Vm~h3+f2gB>zGuC}#kTVx3)Mle{M3S~SD=LY=RePpq4Rqz_unnk8-U!g#KX zk66-f1{Y`;2D*tFkH+e_E=CI?15_+?2Iv`Q4Mgd_ac6;0nUG+O#I>^$K$@%+tfRrA zsdKD*icJOw!)=c1NKxLc$pa`oryK?|H85eW+x;;3>2JZVT?b#gD5MB(?jgJRS72h> z8~n}$te<@4eu?u}eO-CyrP`ijOT45pXJj>YKZ4Pt-+LZaEbEdsbnKcG+-8Xm z@;IV)XW*F1@(_wl)Rap(a(;26QBQfVmP?BIb6q_aQ!rU!p;qz%%hilbsz#)Vami(= z)|we()-y)Nc0OCxmO!j0yOojry^>C@OukTKl2QXfVw3VN%~aAZJ3M{&u$_7jM$K9! zn<4V|v$VOX>CaNK2*Fs^-J3QTJO?0DF}&?;_Pp8N=SIo`Q1eA2y-BQg?&j$NhBdIw z^jeGwxM@L$oDnROTL1tc z07*naRM{;{uWEN{M;)8PFMu9+BJIA!q7)WtDfX6TvlwU&$h)G#^WU~DR(32SSZTyo z{YaQ^Sn!hoT`$COa<*J&0qqpjZA5Ta^JXjE(v8=xg~Oq$->pdAdwmvwr-&|q)m!t;sn|PaHR5ex+cL_tbPwFI;k3%QO|Q%*#tGBQqkyftJre= zj3yl>icJnhrJ8Zqfla}^QfL<8S8GAyK#g$`962astvPdU(c~T)PTf60jLp{V5|@@2Q!EifXwIwx9f=7jjXuqE znsh}bH5j-_wy82OA(Xee5EM*>*T5kO!QHWXZ4{iYE19F#OJmVJ%y8+@P8F6cHcHg9 z1(O?D**>rJT^bzZ=DUSH&$K|hkhC~PhaHz?3SkdWjf)Y$Knl@kSWC$3A4**cEY|$c zGUhLpVNBuCr##>?J&n?j<$!=}b$sZ?1jdlPhc0!9`%y^|C^lB|p2#jjDaJPX912?t zBHx4|7GXoxjY<&R%VdRc|FmnpT=4B|=F)OBc#h2jAxg;q7cFt*F&R=Os1i_EGs>ci zhFJK#%xO{%CpC_(>83i!d>~?}%)iw7A_^NPLdo!na%bIumK6w6M${fG$@@hJO(({) z$Tm9obI{gOVuhW*rHyP}(slL&wb(%`?nBP%6;+CWrNecNpm&9rt)0kkV`{8fDDhE= z^SgJ7HXH zKyF*G4>cB{#@3bwzFC<@{W-gII4I5@Dv#t@hbYZ;$*DgZ9aT+=)6Z!SNyEz=~hcK!o?{a^n}zi2T!+2Y*m8ortMGm|DV)1W!<6xzdI1WfA% znN(P5q+NP_QDbZM&jK(_qoSc~v>0%W0o+*_!ys_XwF{!sq$@&YqW1u#ZF?8BC|nhS ze-@Kv@KJ&x7%xg^DdJXaO9$zLcIVDIHYO9WX)u{guzKq@)+bX;r&CZf!osM*+WG|R zlMPsFVL(_~9Ajy50UOf}#uzjNEG;fz`}SpQTO9kzN&rF#k-aaiv7G`9va*G9-M40x z7h?Rb*k&cgaPReEW2j9)J6K_W)#XntjqtQWuo(>OVyZps zku`Ft1)l0Gr7B4l&x>G0vhtDZ#O*RoCl{gM>CdL>S=WyyJs6&_^ZAm#fwob)!PI4% z{w~YP!A0NqLBwa;`K6g`^W~YR!1yvFdXeSgc*PpEUKsB~-F?Tj%{rBX_gDB_$~JcH zU(++Pwzh`rt9Ni`-OUpKFlr1|*QdC%v5t-{3>qwqT5MYwVcpvVHN;q49An4Q63oaw zmm@=1+O|;Du%;_T{-7%B5l>>SttC#WEi|fl@)_40W(m?cngi&oY)Y9-^lOB*qEV+} zPcw^3$U(gKUv!ca1GD1*+5?YcX6D2G-ZtVPSCT+6~-VT~9l>{CWh?S1DVlxF9mo;(*y=X=xcmgvHSa+ZJ2w+OdMY zdv;>~&h6MXZm_(vf^Caq-?5gAciDF=TB8>ROV+JL!goxT)I#@AjHqfx!{xVvf9)Lb zGwFNooU9)!60liqdP$gF+Vmx5H|9+L!Y_emT+}Vt1AWLY$p&##V%T?yR>o@KSC@A_ zTCcNeOiy^GFtWA5#ojYDg6Sx8Vf}H2%|LGsCRN6o7KiI{kzm_mS({_0Gm$AejT`QO z4Dd^aGj>Od&(r$6(tMeX$d)7mqw^aJQoxKlcF$vP$7>Fz8$E9Ykja3Jx-b9x)O;f5 zFk?J(Hu3i~0J91JhMPa+)@6Ntg6pfdvA!|ECs(fH%GDdVc54l5x7TrJ!!@hiURzh= zN!~yCck6n&VX0))9COLAzRb6MWeNLt?*tKJVbox0+ah*uU%|dz+p%Zwc5EAsk>nmu z`x|@>V`ERg5vD1)(2yFSX_RN5A)osTt{1|B52FcY#`TO-vL3kiMUgSPs*aWHT?-D+ z@_3AH_aT_&J?O4qEIgXGB1n_Ryz$BVe*@OtK$`IzFNxy16Vf<6kue}6yspFsqv%o$%%ucEKIH=N zZt*n+O^MS1m<}}QTz4ylGAviE8`NhrP`8SZY^HUa8iEhF7AYIDt2%W$_V!AqgM7z;=p`(Pj*@>mgw0L6~b73xKoLb!gL1&)qL^-Zemby|BA^ru(w+4Q&YZu5Gv_a*vp2v4`*!2-!F@RL z-~l{zaBp_&Sb3!>V@GNtsFr%Sjyr%U^?wMB6Qgl!e*A<^lv$mw$&dlp@*%}>7-M>w zD+PiXB`YKx*@?#PmUq*X9~ec;4tO;kJ0M_E7cFHBV(D?!Y3&tQfZ4F<+616f%n}vb zVQ!3Ae0;Q1etmp*S|}q9?ynf&05D?-&wHsE06faHMDmeo&{=;@=!&vy`23*;C>y=8 zoV3H(iQ5-(Q!s1A*K!fIT|q8uy=z|=&KLCwxLFwpE_(byro8Jo5;K9QN{!hGPl9?8lez@uyeZI7jjpb09u#%p{m{W7(+ZNUju;b(EU{LMxgmP;GJw*CjMa zxp~UvBs)Os#>359cW`6%HajvbrtA zFI>XMpIpXdGO0|E1E(c+!Xf0mQ^z1zHAu$^T=Bc$Y-P%uwsB|>|-ua zv2P&ZdFO33+~23(B$bpoZ0_mjfDnVYy^H%po&j&~a_SMACWZ&5CLUYJ&x|EK*5_x4 zMRSDCZasDGGCut1JkDLZj>}hWp|jci5zB=YmJt?)8Jz^Yl?`BRo{>Lq(ZXO_4P(#e zo}7gXY}(yjPJi?eek7oaa_hwb$|b*B4I1!b%tl_vH$u1x?kd)_qBTJ zO>C9dkinEja_(qGg-42bK&g z1_zx=+I58m!dk-nAAXF}=Pu&x#Vfda?Pf(pZN%h>ME~c2D3%YV>g#+WmG5c1?^44Z zIw}|Od;$*d?I^szgAF0o(as|+Jo%(7L0XF1NqVD>fs2=~;^WKL@%ph-SQxkX!s8F) znIjM3!3XyEGD}mA5yM`~+w^afcoKCbDw-rZ_uHQCQJWZ4sSP8?QtIxviD&7kF3^`i zl36paQv1~tR9|Ia^M#J{%vA3rkDTer*ca=6z9GQ2&J!#!dkPFpqVcH11x7Gg#%VA) z=(Iv(i%p*|?;mT?I}v%Oc;VSsuvBS*Q_UGHH(RnPV3bOv(Uf-`;8t6gW!bN~rjU1Z zCaZ+VeBSls7JT0T!q|^R3)rdGE;jnSY$upt8BpKi{3n-i{M1J{{=rAs*x1OPb5kw# z_HC{#+2XmCz|GASO|fySJ>xY{SNoa?Fl=4P67~751_UGH2iLSSnOdCr=pxR1bP>QY z0KlFdD|qO@ZX7v$5RW~4ztiMvZGQAl8W$@jf&O zFg7D}J0FDEaR~O)bB-P6^xLI3+E!V&If7k_+wZ-`OHY2~GY4r~0-#+#`RbOXPQ!$3 zOpE5xuY>kK5*IZ?tt(ZMi&$am2YKvE05&d?sjDi^!9F)J{QjnCu(G^O345cvx^dZp zBy%?@D?Jdfv9W_R1*F`P3 z9h^w3z?p0WXE`98n+k^%D`&rl8S5KUym9Oh?p_5o!y3}>-G)g2?89+8nOJtT7!K^ZkEQYdd0fG%^_ zOP5A4G1F?6XkvFocVqZD!|oLG$R~s{jkkJfvKXCM!mEEqh{mzj`m*XkaiK>m>8@GD zq_t<4u7H$?H_DHbsCA2m^|3>yQr<7vy`HfwtyhS|7@_3PmD#Z5etr7otW_x78o8mX z#>N3BPoKw$)93NQ*$e187C^^1O%;_D2v_c==o{8IXVjkOG*?g+l>O=px-PHwv2&5( zW1;CH(yXmGuPZlh;qvvHc=P0kfFbPNwF3|C+lfaG?Z;z>4`I}5AI73-AkPdo48q7q zIHgT@C_}T?9MfbfbelaaTht~J%(fMny@%1AKL%P`EwqE`otwOIAg#R?FogBXn?r}T z=>gj6h4=XA|MD-f1yiZ??r+Cln8Po?jFx*Du_5*?cITj26VpRrDDL{18H?M-<>Z=` z0@7j|CU=AL7cb%5r&samrK>o8=6vP2v>wJiv`F2AJ>bhQ$H{W2gwQv6_OWWUpDB)m z%-myW=y+Tyr+$pN7u0k*#mUp>aq`qz>|9yFi_biYFFbY#D=RC-qL{8#0uYXUBf&^E zQ3M^Mio{|cnKhDtTQAClATqa+ouRCwRNil6jPuH~oOyvs-JrJ?G08O5cAYnWZF(3U zRKv*wD2oj(-NXSzTQ2%R7nc9tK4|UA`lYWFDw@XV_ZHGDWLK;JpAg!pUiPZ51j`(+ zE%lZap_t9w62(QLO+B_VGp|9BQA)wI+GjAT4NbZ)u?Z%hA1!PosXtzu(Y%&ekKGE z`?60o({yF23m;#?+aG*{lV>hq?aoG=l!G;eb`r?!h)kWpDX{4z&wfXbGO`&2cNfyLJL-3*vbVyfveD+r^dR>Xr;YNNt`>V0&x5a zUauO6=ANO=SVTSC$d>bZ_PcTxlX`5FPIx8~0Jd*i zz+;ab#B)y^!Jz{?{qJhr{i!kCm9lkV*Alzbr(U=#OZLJ+p&0?Y4}x|afW7o#aemRb z))2ZaQSO|^^IJRf&V7J37eL!&(F=Ev$t`GQKg{7Tg2pZbGums&owO)jDk}vf=FF9$ zOld)3$Z3t@gl(|AvQ3zZnpENp50^1`|HF^*!PyHqbKw$h-n=P{T1!DZQRyv4)UyK( z)&>-Yn5~vP^GUEa84i^(($CZ2q$)ozutyxTQEjjGMSU-u{4K1Sh0ML+47|t7G0IzoR`Dq zz<(xZ(B1ct7RCX)_WWL%nP`4YecN70uDsRGbImV3GBDG3d; zS*iQ50|m z@8kB`Br=iY>A3hjdk`KQ2iU0RFb6J%`}M0s3|L>2QQ!CV-IeuTXYl5UGuW|x35OrthbJFCgvSp*Al8!Mjf_4I zVSF9Z4E$X0n#j6DEȌ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≺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 x3c1ts@q;U|U9%kytI#4 + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/web/gotosocial-styling/README.md b/web/gotosocial-styling/README.md new file mode 100644 index 000000000..71314e838 --- /dev/null +++ b/web/gotosocial-styling/README.md @@ -0,0 +1,18 @@ +# GoToSocial Styling + +Common package for the PostCSS styling of GoToSocial (related) pages. + +## Bundle +Source in `src/style.css` is bundled by running `node index.js`. Output appears in `build/bundle.css`, and can be required from other packages with `require("gotosocial-styling/build/bundle.css")`. + +## Development +You can run `NODE_ENV=development node index.js` to start a livereloading setup that automatically re-bundles on file changes in `src/`. + +## License, donations +[AGPL-3.0](https://www.gnu.org/licenses/agpl-3.0.html). If you want to support my work, you can: +Donate using Liberapay + + +## Changelog +### v0.0.1 (August 29th, 2021) +initial release diff --git a/web/gotosocial-styling/colors.css b/web/gotosocial-styling/colors.css new file mode 100644 index 000000000..8dfcd4a09 --- /dev/null +++ b/web/gotosocial-styling/colors.css @@ -0,0 +1,9 @@ +$bg: #525c66; +$fg: #fafaff; +$fg_dark: #b0b0b5; + +$bg_accent: color($bg lightness(-5%)); + +$acc1: #de8957; // sloth light orange +$acc2: #c76d33; // sloth dark orange +$blue: #5897df; diff --git a/web/gotosocial-styling/index.js b/web/gotosocial-styling/index.js new file mode 100644 index 000000000..88d9398b2 --- /dev/null +++ b/web/gotosocial-styling/index.js @@ -0,0 +1,71 @@ +"use strict"; + +const Promise = require("bluebird"); +const fs = require("fs").promises; +const postcss = require('postcss'); +const {parse} = require("postcss-scss"); + +/* + Bundle all postCSS files under the `templates/` directory separately, each prepended with the (variable) contents of ./colors.css + Outputs in plain CSS are in `build/`, split by template +*/ + +const postcssPlugins = ["postcss-strip-inline-comments", "postcss-nested", "postcss-simple-vars", "postcss-color-function"].map((plugin) => require(plugin)()); + +function getTemplates() { + return fs.readdir(`${__dirname}/templates`).then((templates) => { + return templates.map((a) => { + return [a, `${__dirname}/templates/${a}`]; + }); + }); +} + +getTemplates(); + +function bundle([template, path]) { + return Promise.try(() => { + return Promise.all([ + fs.readFile(`${__dirname}/colors.css`, "utf-8"), + fs.readFile(path, "utf-8") + ]); + }).then(([colors, style]) => { + return parse(colors + "\n" + style); + }).then((ast) => { + return postcss(postcssPlugins).process(ast, { + from: template, + to: template + }); + }).then((bundle) => { + return fs.writeFile(`${buildDir}/${template}`, bundle.css); + }).then(() => { + console.log(`Finished writing CSS to ${buildDir}/${template}`); + }); +} + +let buildDir = process.env.BUILD_DIR; +if (buildDir == undefined) { + buildDir = `${__dirname}/build`; +} +console.log("bundling to", buildDir); + +function bundleAll() { + return getTemplates().then((templates) => { + return Promise.map(templates, bundle); + }); +} + +if (process.env.NODE_ENV != "development") { + bundleAll(); +} else { + const chokidar = require("chokidar"); + console.log("Watching for changes"); + chokidar.watch(`${__dirname}/templates`).on("all", (_, path) => { + if (path.endsWith(".css")) { + bundle([path.split("/").slice(-1)[0], path]); + } + }); + chokidar.watch(`${__dirname}/colors.css`).on("all", () => { + console.log("colors.css updated, rebuilding all templates"); + bundleAll(); + }); +} \ No newline at end of file diff --git a/web/gotosocial-styling/package.json b/web/gotosocial-styling/package.json new file mode 100644 index 000000000..ae3d73e93 --- /dev/null +++ b/web/gotosocial-styling/package.json @@ -0,0 +1,20 @@ +{ + "name": "gotosocial-styling", + "version": "0.0.1", + "description": "PostCSS source for the https://github.com/superseriousbusiness/gotosocial common styling", + "repository": "https://github.com/superseriousbusiness/gotosocial-styling", + "author": "f0x", + "license": "AGPL-3.0", + "dependencies": { + "bluebird": "^3.7.2", + "postcss": "^8.3.5", + "postcss-color-function": "^4.1.0", + "postcss-nested": "^4.2.1", + "postcss-scss": "^4.0.0", + "postcss-simple-vars": "^5.0.2", + "postcss-strip-inline-comments": "^0.1.5" + }, + "devDependencies": { + "chokidar": "^3.5.2" + } +} diff --git a/web/source/style.css b/web/gotosocial-styling/templates/base.css similarity index 80% rename from web/source/style.css rename to web/gotosocial-styling/templates/base.css index 992e538b0..8b2f14fbe 100644 --- a/web/source/style.css +++ b/web/gotosocial-styling/templates/base.css @@ -1,38 +1,25 @@ -$bg: #525c66; -$fg: #fafaff; - -$bg_accent: color($bg lightness(-5%)); - -$acc1: #de8957; // sloth light orange -$acc2: #c76d33; // sloth dark orange - html, body { padding: 0; margin: 0; - background: $bg; + background: $bg_accent; color: $fg; font-family: sans-serif; } body { display: grid; - grid-template-columns: 1fr 50% 1fr; - grid-template-columns: 1fr 90ch 1fr; - line-height: 1.5em; + grid-template-rows: auto 1fr auto; min-height: 100vh; - grid-auto-rows: auto; - grid-auto-flow: dense; + line-height: 1.5em; +} - & > * { - align-self: start; - grid-column: 2; - } - - header, footer, .fullWidth { - grid-column: 1/4; - grid-column: 1/-1; - } +main { + background: $bg; + display: grid; + padding-top: 2rem; + grid-template-columns: 1fr 50% 1fr; + grid-template-columns: auto min(92%, 90ch) auto; .left { grid-column: 1; @@ -41,12 +28,42 @@ body { .right { grid-column: 3; } + + &.lightgray { + background: $bg; + } + + & > * { + align-self: start; + grid-column: 2; + } } header { background: $bg_accent; - padding: 2rem; - margin-bottom: 4rem; + padding: 2rem 0; + padding-bottom: 0; + display: flex; + flex-wrap: wrap; + + img { + height: 4rem; + padding-left: 2rem; + padding-bottom: 2rem; + } + + div { + height: 100%; + margin: 0 2rem; + margin-top: -2rem; + flex-grow: 1; + align-self: center; + display: flex; + + h1 { + align-self: center; + } + } } h1 { @@ -168,12 +185,8 @@ footer { } @media screen and (orientation: portrait) { - body { + main { grid-template-columns: 1fr 92% 1fr; - - footer, .left, .right { - grid-column: 2; - } } header { @@ -181,12 +194,11 @@ footer { } footer { - padding: 0; margin-top: 2rem; grid-template-columns: 1fr; div { - margin: 1rem 0; + margin: 0.3rem 0; } } diff --git a/web/gotosocial-styling/templates/status.css b/web/gotosocial-styling/templates/status.css new file mode 100644 index 000000000..b71a7c9f7 --- /dev/null +++ b/web/gotosocial-styling/templates/status.css @@ -0,0 +1,227 @@ +main { + background: transparent; + grid-auto-rows: auto; +} + +.thread { + display: flex; + flex-direction: column; +} + +.toot { + position: relative; + background: color($bg lightness(-3%)); + padding: 2rem; + /* padding-bottom: 0; */ + display: grid; + grid-template-columns: 3.2rem auto 1fr; + column-gap: 0.5rem; + margin-bottom: 0.2rem; + + a { + position: relative; + z-index: 1; + color: inherit; + text-decoration: none; + } + + .avatar { + grid-row: span 2; + + img { + height: 3.2rem; + width: 3.2rem; + object-fit: cover; + } + } + + .displayname { + font-weight: bold; + font-size: 1.2rem; + align-self: start; + } + + .username { + color: $fg_dark; + justify-self: start; + } + + input.spoiler:checked ~ .content { + display: none; + } + + .spoiler { + label { + background: $acc1; + border-radius: 0.3rem; + padding: 0.3rem; + margin-left: 0.4rem; + position: relative; + z-index: 2; + cursor: pointer; + } + } + + .text { + margin: 0; + grid-column: span 2; + + a { + color: $acc1; + text-decoration: underline; + } + } + + .media { + margin-top: 0.6rem; + border-radius: 0.2rem; + grid-column: span 3; + display: grid; + grid-template-columns: 50% 50%; + grid-auto-rows: 10rem; + overflow: hidden; + gap: 0.3rem; + + a { + position: relative; + } + + .no-image-desc { + display: flex; + position: absolute; + bottom: 0.1rem; + right: 0.4rem; + color: white; + background: $blue; + padding: 0.2rem 0.4rem; + border-radius: 100%; + z-index: 3; + + i.fa { + display: block; + line-height: 1.3rem; + } + + span { + margin-left: 0.3rem; + display: none; + } + + &:hover { + span { + display: block; + } + border-radius: 0.2rem; + } + } + + img { + width: 100%; + height: 100%; + object-fit: cover; + } + + &.single a { + grid-column: span 2; + } + + &.odd a:first-child, &.double a { + grid-row: span 2; + } + } + + .info { + display: none; + + div { + position: relative; + padding-right: 1.3rem; + } + + .stats { + display: flex; + } + + color: #b0b0b5; + grid-column: span 3; + margin-top: 0.5rem; + flex-wrap: wrap; + + div.stats::after { + display: none; + } + + div::after { + $size: 0.25rem; + display: block; + background: $fg_dark; + height: $size; + width: $size; + content: ""; + position: absolute; + top: calc((1.5rem - $size) / 2); + right: 0.55rem; + border-radius: 1rem; + } + + div:last-child { + &::after { + display: none; + } + margin-right: 0; + } + } + + .toot-link { + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; + text-indent: 100%; + white-space: nowrap; + + position: absolute; + z-index: 0; + } + + $border-radius: 0.3rem; + &:first-child { + /* top left, top right */ + border-radius: $border-radius $border-radius 0 0; + } + + &:last-child { + /* bottom left, bottom right */ + border-radius: 0 0 $border-radius $border-radius; + padding-bottom: 1.5rem; + } + + &.expanded { + background: $bg; + padding-bottom: 1.5rem; + + .displayname { + grid-column: span 2; + } + + .text { + grid-column: span 3; + grid-row: span 1; + margin-top: 0.3rem; + } + + .info { + display: flex; + } + + .media { + grid-auto-rows: 1fr; + max-height: 120rem; + } + } +} + +footer + div { /* something weird from the devstack.. */ + display: none; +} \ No newline at end of file diff --git a/web/source/yarn.lock b/web/gotosocial-styling/yarn.lock similarity index 68% rename from web/source/yarn.lock rename to web/gotosocial-styling/yarn.lock index 0ae871aa9..f61a02a53 100644 --- a/web/source/yarn.lock +++ b/web/gotosocial-styling/yarn.lock @@ -19,11 +19,36 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + balanced-match@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a" integrity sha1-tQS9BYabOSWd0MXvw12EMXbczEo= +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -44,6 +69,21 @@ chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" @@ -83,9 +123,9 @@ color@^0.11.0: color-string "^0.3.0" colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + version "1.4.0" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== css-color-function@~1.3.3: version "1.3.3" @@ -114,6 +154,25 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -131,6 +190,30 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + js-base64@^2.1.9: version "2.6.4" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" @@ -142,9 +225,19 @@ ms@^2.1.1: integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@^3.1.23: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + version "3.1.25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== postcss-color-function@^4.1.0: version "4.1.0" @@ -230,14 +323,21 @@ postcss@^7.0.14, postcss@^7.0.32: supports-color "^6.1.0" postcss@^8.3.5: - version "8.3.5" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.5.tgz#982216b113412bc20a86289e91eb994952a5b709" - integrity sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA== + version "8.3.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea" + integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A== dependencies: colorette "^1.2.2" nanoid "^3.1.23" source-map-js "^0.6.2" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + rgb@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/rgb/-/rgb-0.1.0.tgz#be27b291e8feffeac1bd99729721bfa40fc037b5" @@ -291,6 +391,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" diff --git a/web/source/build.js b/web/source/build.js deleted file mode 100644 index e32fa6da5..000000000 --- a/web/source/build.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; - -const fs = require("fs").promises; -const postcss = require('postcss'); -const {parse} = require("postcss-scss"); - -const postcssPlugins = ["postcss-strip-inline-comments", "postcss-nested", "postcss-simple-vars", "postcss-color-function"].map((plugin) => require(plugin)()); - -let inputFile = `${__dirname}/style.css`; -let outputFile = `${__dirname}/../assets/bundle.css`; - -fs.readFile(inputFile, "utf-8").then((input) => { - return parse(input); -}).then((ast) => { - return postcss(postcssPlugins).process(ast, { - from: "style.css", - to: "bundle.css" - }); -}).then((bundle) => { - return fs.writeFile(outputFile, bundle.css); -}).then(() => { - console.log("Finished writing CSS bundle"); -}); diff --git a/web/source/package.json b/web/source/package.json deleted file mode 100644 index d58091118..000000000 --- a/web/source/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "license": "AGPL-3.0", - "dependencies": { - "postcss": "^8.3.5", - "postcss-color-function": "^4.1.0", - "postcss-scss": "^4.0.0", - "postcss-nested": "^4.2.1", - "postcss-simple-vars": "^5.0.2", - "postcss-strip-inline-comments": "^0.1.5" - } -} diff --git a/web/template/404.tmpl b/web/template/404.tmpl index 633ed65cf..096f7f364 100644 --- a/web/template/404.tmpl +++ b/web/template/404.tmpl @@ -1,11 +1,9 @@ {{ template "header.tmpl" .}} - -

-
-

404: Page Not Found

- If you believe this was an error, you can contact an admin -
+
+
+

404: Page Not Found

+ If you believe this was an error, you can contact an admin +
+
{{ template "footer.tmpl" .}} \ No newline at end of file diff --git a/web/template/authorize.tmpl b/web/template/authorize.tmpl index bc609ed66..b6eef9561 100644 --- a/web/template/authorize.tmpl +++ b/web/template/authorize.tmpl @@ -1,15 +1,17 @@ {{ template "header.tmpl" .}} -
-

Hi {{.user}}!

-

Application {{.appname}} {{if len .appwebsite | eq 0 | not}}({{.appwebsite}}) {{end}}would like to perform actions on your behalf, with scope {{.scope}}.

-

The application will redirect to {{.redirect}} to continue.

-

- -

-
+
+
+

Hi {{.user}}!

+

Application {{.appname}} {{if len .appwebsite | eq 0 | not}}({{.appwebsite}}) {{end}}would like to perform actions on your behalf, with scope {{.scope}}.

+

The application will redirect to {{.redirect}} to continue.

+

+ +

+
+
{{ template "footer.tmpl" .}} \ No newline at end of file diff --git a/web/template/header.tmpl b/web/template/header.tmpl index 45d375ab8..0f224cf95 100644 --- a/web/template/header.tmpl +++ b/web/template/header.tmpl @@ -1,19 +1,26 @@ - + + - - - - + + + + {{range .stylesheets}} + {{end}} + {{.instance.Title}} - GoToSocial
-

- {{.instance.Title}} -

+ Instance Logo +
+

+ {{.instance.Title}} +

+
+
\ No newline at end of file diff --git a/web/template/index.tmpl b/web/template/index.tmpl index 6751c9bd2..52581d3aa 100644 --- a/web/template/index.tmpl +++ b/web/template/index.tmpl @@ -1,40 +1,40 @@ {{ template "header.tmpl" .}} - -
-

Home to {{.instance.Stats.user_count}} users - who posted {{.instance.Stats.status_count}} statuses, - federating with {{.instance.Stats.domain_count}} other instances.

-
- {{.instance.ShortDescription |noescape}} -
-
+
-
-

- GoToSocial does not provide its own frontend, but implements the Mastodon client API. - You can use this server through a variety of clients: -

-
-
- -
-

Pinafore

-

Pinafore is a web client designed for speed and simplicity.

- Use Pinafore +
+

Home to {{.instance.Stats.user_count}} users + who posted {{.instance.Stats.status_count}} statuses, + federating with {{.instance.Stats.domain_count}} other instances.

+
+ {{.instance.ShortDescription |noescape}} +
+
+ +
+

+ GoToSocial does not provide its own frontend, but implements the Mastodon client API. + You can use this server through a variety of clients: +

+
+
+ +
+

Pinafore

+

Pinafore is a web client designed for speed and simplicity.

+ Use Pinafore +
+
+
+ +
+

Tusky

+

Tusky is a lightweight mobile client for Android

+ Get Tusky +
-
- -
-

Tusky

-

Tusky is a lightweight mobile client for Android

- Get Tusky -
-
-
-
+ +
{{ template "footer.tmpl" .}} \ No newline at end of file diff --git a/web/template/sign-in.tmpl b/web/template/sign-in.tmpl index cfe932b3a..48a833cee 100644 --- a/web/template/sign-in.tmpl +++ b/web/template/sign-in.tmpl @@ -1,13 +1,15 @@ {{ template "header.tmpl" .}} - +
+ +
{{ template "footer.tmpl" .}} diff --git a/web/template/status.tmpl b/web/template/status.tmpl new file mode 100644 index 000000000..343eb2d0a --- /dev/null +++ b/web/template/status.tmpl @@ -0,0 +1,36 @@ + +{{if .Account.DisplayName}}{{.Account.DisplayName}}{{else}}{{.Account.Username}}{{end}} +@{{.Account.Username}} +
+ {{if .SpoilerText}} + +
+ {{.SpoilerText}} +
+ {{end}} +
+ {{.Content |noescape}} +
+
+{{with .MediaAttachments}} + +{{end}} +
+
{{.CreatedAt | timestamp}}
+
+
{{.Visibility | visibilityIcon}}
+
{{.RepliesCount}}
+
{{.ReblogsCount}}
+
{{.FavouritesCount}}
+
+
+View toot \ No newline at end of file diff --git a/web/template/thread.tmpl b/web/template/thread.tmpl new file mode 100644 index 000000000..b6b91fd31 --- /dev/null +++ b/web/template/thread.tmpl @@ -0,0 +1,34 @@ +{{ template "header.tmpl" .}} +
+
+ {{range .context.Ancestors}} +
+ {{ template "status.tmpl" .}} +
+ {{end}} +
+ {{ template "status.tmpl" .status}} +
+ {{range .context.Descendants}} +
+ {{ template "status.tmpl" .}} +
+ {{end}} +
+
+ +{{ template "footer.tmpl" .}} \ No newline at end of file