25 juin
2021
24 |├── .github └── FUNDING.yml ├── README.rst ├── book ├── book-classical.css ├── book-classical.pdf ├── book.css ├── book.html ├── book.pdf ├── fonts │ ├── OpenDyslexic-Bold.otf │ ├── OpenDyslexic-Regular.otf │ └── SourceSerifPro-Regular.ttf └── img │ ├── affiche.jpg │ ├── couv1.jpg │ ├── couv2.jpg │ ├── couv3.jpg │ ├── couv4.jpg │ ├── frihet.png │ ├── inter1.png │ ├── inter4.png │ ├── inter42.png │ ├── john.png │ ├── logo-intro.png │ ├── outro1.png │ ├── outro2.jpg │ ├── outro3.jpg │ ├── outro4.jpg │ ├── pheromones.png │ ├── poire.png │ ├── seance-de-chasse.jpg │ └── silhouettes_color.jpg ├── invoice ├── invoice.css ├── invoice.html ├── invoice.pdf ├── pacifico.ttf ├── sourcesanspro-bold.otf └── sourcesanspro-regular.otf ├── letter ├── fonts │ ├── ComingSoon-Regular.ttf │ └── Pacifico-Regular.ttf ├── img │ ├── image-couleurs.png │ └── logo-couleurs.png ├── letter.html ├── letter.pdf └── style.css ├── poster ├── archivoblack-regular.ttf ├── background.jpg ├── common.css ├── flyer.css ├── flyer.pdf ├── gaming-affiche-logo.png ├── logo-fiac.png ├── logo-fleurexpo.png ├── logo-mc.png ├── logo-rhino.png ├── logo-stella.png ├── poster.css ├── poster.html └── poster.pdf ├── printall.sh ├── report ├── firasans-bold.otf ├── firasans-italic.otf ├── firasans-light.otf ├── firasans-lightitalic.otf ├── firasans-regular.otf ├── heading.svg ├── internal-links.svg ├── multi-columns.svg ├── report-cover.jpg ├── report.css ├── report.html ├── report.pdf ├── style.svg ├── table-content.svg └── thumbnail.png └── ticket ├── barlowcondensed-bold.otf ├── barlowcondensed-light.otf ├── barlowcondensed-regular.otf ├── librebarcode128-regular.ttf ├── ticket.css ├── ticket.html └── ticket.pdf /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: courtbouillon 2 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | What’s in here? 2 | --------------- 3 | 4 | WeasyPrint (https://github.com/Kozea/WeasyPrint/) is a Python library which transforms HTML/CSS into PDF. 5 | 6 | In this repository, you’ll find samples of what is possible to do with WeasyPrint. 7 | 8 | The samples "book", "letter" and "poster" have been designed by Madcats (https://madcats.fr/). 9 | 10 | How to generate PDF from the samples? 11 | ------------------------------------- 12 | 13 | * Get the sources, by cloning for example 14 | 15 | git clone https://github.com/CourtBouillon/weasyprint-samples.git 16 | 17 | * Run WeasyPrint on the sample you want, for example on report 18 | 19 | weasyprint report/report.html document.pdf 20 | 21 | Professional Support 22 | -------------------- 23 | 24 | Professional support is provided by CourtBouillon (https://courtbouillon.org). 25 | 26 | * Bug fix 27 | * New feature 28 | * Templating 29 | * Workflow integration 30 | 31 | License 32 | ------- 33 | 34 | The fonts used have their own licence. 35 | 36 | The text of the "All Cats Are Beautiful" book is the full property of Madcats (https://madcats.fr/). 37 | 38 | Everything else from the samples is in the public domain. 39 | -------------------------------------------------------------------------------- /book/book-classical.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: SourceSerifPro; 3 | src: url("fonts/SourceSerifPro-Regular.ttf") format('truetype'); 4 | } 5 | @page { 6 | size: 110mm 170mm; 7 | } 8 | @page :left { 9 | margin: 20mm 10mm 12mm 15mm; 10 | @top-left { content: counter(page) } 11 | @top-right { content: string(heading); font-variant: small-caps } 12 | } 13 | @page :right { 14 | margin: 20mm 15mm 12mm 10mm; 15 | @top-left { content: string(heading); font-variant: small-caps } 16 | @top-right { content: counter(page) } 17 | } 18 | @page :blank { 19 | @top-right { content: none } 20 | @top-left { content: none } 21 | } 22 | @page clean { 23 | @top-right { content: none } 24 | @top-left { content: none } 25 | } 26 | 27 | img { 28 | display: none; 29 | } 30 | 31 | html { 32 | font-family: SourceSerifPro; 33 | font-size: 10pt; 34 | } 35 | body { 36 | margin: 0; 37 | } 38 | section { 39 | break-after: right; 40 | padding-top: 25mm; 41 | } 42 | aside { 43 | display: none; 44 | } 45 | 46 | h1 { 47 | break-after: right; 48 | font-size: 2.6em; 49 | font-weight: normal; 50 | margin: 3em 0; 51 | page: clean; 52 | } 53 | h2 { 54 | font-size: 1em; 55 | font-variant: small-caps; 56 | font-weight: normal; 57 | margin: 0 0 2em; 58 | page: clean; 59 | string-set: heading content(); 60 | text-align: center; 61 | } 62 | p { 63 | hyphens: auto; 64 | margin: 0; 65 | text-align: justify; 66 | text-indent: 1em; 67 | } 68 | dd { 69 | margin: 0 0 0 1em; 70 | } 71 | br::after { 72 | content: ''; 73 | display: inline-block; 74 | width: 0.78em; 75 | } 76 | 77 | #authors { 78 | page: clean; 79 | } 80 | #authors p { 81 | text-indent: 0; 82 | } 83 | 84 | #contents { 85 | page: clean; 86 | } 87 | #contents p { 88 | margin: 2em 0; 89 | text-indent: 0; 90 | } 91 | #contents ul { 92 | display: block; 93 | margin: 1em 0; 94 | padding: 0; 95 | } 96 | #contents li { 97 | display: block; 98 | } 99 | #contents a { 100 | color: inherit; 101 | text-decoration: none; 102 | } 103 | #contents a::before { 104 | content: target-text(attr(href)) ' ' leader('.') ' ' target-counter(attr(href), page); 105 | } 106 | 107 | .fullpage { 108 | display: none; 109 | } 110 | -------------------------------------------------------------------------------- /book/book-classical.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/book/book-classical.pdf -------------------------------------------------------------------------------- /book/book.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: OpenDyslexic; 3 | font-weight: bold; 4 | src: url(fonts/OpenDyslexic-Bold.otf); 5 | } 6 | @font-face { 7 | font-family: OpenDyslexic; 8 | font-weight: normal; 9 | src: url(fonts/OpenDyslexic-Regular.otf); 10 | } 11 | 12 | @page { 13 | margin: 2cm 2cm 3cm 2cm; 14 | size: 148mm 210mm; 15 | } 16 | 17 | @page :left { 18 | @bottom-left { 19 | content: counter(page); 20 | position: absolute; 21 | z-index: -1; 22 | } 23 | @bottom-right { 24 | content: string(heading); 25 | position: absolute; 26 | z-index: -1; 27 | } 28 | } 29 | 30 | @page :right { 31 | @bottom-left { 32 | content: string(heading); 33 | position: absolute; 34 | z-index: -1; 35 | } 36 | @bottom-right { 37 | content: counter(page); 38 | position: absolute; 39 | z-index: -1; 40 | } 41 | } 42 | 43 | @page full { 44 | @bottom-right { 45 | content: none; 46 | } 47 | 48 | @bottom-left { 49 | content: none; 50 | } 51 | 52 | background: black; 53 | margin: 0; 54 | } 55 | 56 | @page :blank { 57 | @bottom-right { 58 | content: none; 59 | } 60 | 61 | @bottom-left { 62 | content: none; 63 | } 64 | } 65 | 66 | @page clean { 67 | @bottom-right { 68 | content: none; 69 | } 70 | 71 | @bottom-left { 72 | content: none; 73 | } 74 | } 75 | 76 | html { 77 | counter-reset: h2-counter; 78 | font-family: OpenDyslexic; 79 | font-size: 10pt; 80 | } 81 | body { 82 | margin: 0; 83 | } 84 | 85 | p { 86 | line-height: 2; 87 | text-align: justify; 88 | } 89 | img { 90 | display: block; 91 | margin: 2em auto; 92 | max-width: 70%; 93 | } 94 | 95 | h1 { 96 | display: none; 97 | } 98 | h2 { 99 | color: white; 100 | counter-increment: h2-counter; 101 | display: flex; 102 | flex-direction: column; 103 | font-family: OpenDyslexic; 104 | font-size: 3em; 105 | height: 6cm; 106 | justify-content: flex-end; 107 | margin: 0; 108 | string-set: heading content(); 109 | text-align: center; 110 | } 111 | h2::before { 112 | content: "Chapitre " counter(h2-counter) " "; 113 | display: block; 114 | font-size: 1.2rem; 115 | font-weight: normal; 116 | line-height: 1; 117 | } 118 | 119 | section { 120 | break-after: right; 121 | } 122 | 123 | aside { 124 | display: flex; 125 | justify-content: center; 126 | } 127 | aside figure { 128 | flex: none; 129 | margin: 0; 130 | padding: 1em; 131 | text-align: center; 132 | } 133 | aside img { 134 | border: 0.4mm solid white; 135 | border-radius: 50%; 136 | margin: 0 auto; 137 | max-width: 14mm; 138 | } 139 | 140 | .character { 141 | break-after: avoid; 142 | margin: auto; 143 | max-width: 14mm; 144 | } 145 | 146 | #authors { 147 | padding-top: 10em; 148 | page: clean; 149 | text-align: center; 150 | } 151 | #authors img { 152 | display: block; 153 | margin: auto; 154 | width: 75%; 155 | } 156 | #authors p { 157 | font-size: 1.3em; 158 | margin: 5em 0 1em; 159 | text-align: center; 160 | } 161 | #authors dl { 162 | display: flex; 163 | flex-wrap: wrap; 164 | justify-content: center; 165 | } 166 | #authors dt { 167 | display: block; 168 | font-size: 0.8em; 169 | line-height: 2rem; 170 | width: 100%; 171 | } 172 | #authors dd { 173 | margin: 0 0.5em; 174 | padding: 0; 175 | } 176 | 177 | #contents { 178 | page: clean; 179 | } 180 | #contents p { 181 | font-size: 2em; 182 | } 183 | #contents ul { 184 | display: block; 185 | margin: 1em 0; 186 | padding: 0; 187 | } 188 | #contents li { 189 | display: block; 190 | } 191 | #contents a { 192 | color: inherit; 193 | text-decoration: none; 194 | } 195 | #contents a::before { 196 | content: target-counter(attr(href), h2-counter) '. ' target-text(attr(href)); 197 | } 198 | #contents a::after { 199 | content: target-counter(attr(href), page); 200 | float: right; 201 | } 202 | 203 | .chapitre::before { 204 | background: center / cover; 205 | border-radius: 0 0 50% 50% / 0 0 15mm 15mm; 206 | content: ""; 207 | display: block; 208 | height: 90mm; 209 | left: -30mm; 210 | position: absolute; 211 | top: -20mm; 212 | width: 168mm; 213 | z-index: -1; 214 | } 215 | #chapitre-1::before { 216 | background-image: url("img/couv1.jpg"); 217 | } 218 | #chapitre-2::before { 219 | background-image: url("img/couv2.jpg"); 220 | } 221 | #chapitre-3::before { 222 | background-image: url("img/couv3.jpg"); 223 | } 224 | #chapitre-4::before { 225 | background-image: url("img/couv4.jpg"); 226 | } 227 | 228 | .outro { 229 | border-radius: 50% 50% 0 0 / 15mm 15mm 0 0; 230 | display: block; 231 | height: 90mm; 232 | left: -30mm; 233 | max-width: none; 234 | object-fit: cover; 235 | position: absolute; 236 | top: 120mm; 237 | width: 168mm; 238 | z-index: -1; 239 | } 240 | 241 | .fullpage { 242 | page: full; 243 | } 244 | .fullpage img { 245 | bottom: 0; 246 | height: 210mm; 247 | left: 0; 248 | margin: 0; 249 | max-width: none; 250 | object-fit: cover; 251 | position: absolute; 252 | width: 148mm; 253 | z-index: 1; 254 | } 255 | .fullpage:last-child { 256 | break-before: left; 257 | } 258 | -------------------------------------------------------------------------------- /book/book.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
Table des matières
30 | 36 |48 | Et dire que je dois encore me lever, courir après mon repas, porter le 49 | coup fatal et déguster… Mais je déguste, là aussi. Le soleil est au 50 | zénith, une légère brise s'est installée, c’est le pied. 51 |
52 |53 | Il faut dire que les derniers jours, c'était pas ça. Un tout petit 54 | moineau à peine sorti du nid et quelques rats mal en point, ça ne rend 55 | pas un chat en forme. Courir, courir, toujours courir. Les proies ne 56 | peuvent-elles pas s’offrir à moi ? Non, la ville m'a bien appris qu'il 57 | fallait se battre pour ses besoins. Et plus que jamais, j'ai besoin de 58 | manger maintenant. 59 |
60 |61 | Il est temps, la faim est trop grande. Je fais glisser une dernière 62 | fois ma joue contre le béton chaud et descends de la cheminée. Mes 63 | frères et sœurs avaient toujours trouvé ça drôle, chasser. Pour eux, 64 | tuer était un jeu. Un jeu sans règles, ça ne m'a jamais amusé. 65 |
66 |67 | Tiens, cette gouttière n'en a plus pour longtemps, il va falloir que je 68 | trouve un nouveau spot pour me dorer la pilule, c’est le seul accès. 69 | Cette ville détruite est un ramassis de labyrinthes désorganisés où les 70 | cachettes sont infinies. Trouver un endroit où se cacher, c'est le nerf 71 | de la guerre. 72 |
73 |74 | Malgré les belles histoires que me racontait ma mère, la réalité 75 | reprend vite le dessus et je vis dans une guerre permanente. Chacun 76 | protège son territoire et ce serait une vraie boucherie s’il me venait 77 | l’idée de me balader trop loin. 78 |
79 |80 | Mon territoire ? Il a toujours été le même depuis ma naissance. À quoi 81 | bon chercher à s'étendre. J'ai même parfois laissé quelques uns prendre 82 | leurs aises, je ne suis pas du genre à pinailler pour un coin de 83 | litière. Les autres ont tendance à être le total opposé, accrochés 84 | farouchement à défendre un espace qui n'a aucun sens au final. 85 | Déterminés à honnir quiconque oserait fouler de la patte le mauvais 86 | trottoir. 87 |
88 |89 | Ca bouge ! 90 |
91 |92 | Mes sens sont en éveil, je suis surpris à chaque fois. D'où est-ce que 93 | ça peut venir ? Là aussi je laisse couler, temps que cela m'aide à 94 | courir le moins possible. Mon instinct se confirme, je m'élance sans 95 | hésitation. Un vieux rat visiblement. J’espère juste pas trop vieux, 96 | sinon ils ont un goût de poussière. Il renverse tout sur son passage 97 | pour entamer sa fuite perdue d'avance. Mes pattes sont rouillées et 98 | rongées par la flemme, mais je les rappelle à l'ordre. 99 |
100 |101 | Au bout de quelques mètres dans la ruelle, il tente une embardée pour 102 | accéder à un sous-sol. Sans succès, je gagne un peu de terrain. Il est 103 | vif, sûrement plein de bonnes vitamines. J'occupe l’espace sur sa 104 | droite pour le diriger un peu. Il ne se laisse pas impressionner, il 105 | bifurque quand même. Les rues défilent et je le tiens serré pour ne pas 106 | qu'il se faufile. Paniqué il en oublie les recoins. 107 |
108 |Bien.
109 | Il tente un tuyau qui traîne. Trop petit pour moi, je tourne en rond
110 | autour de lui et ronronne d’impatience. Quelques miaulements et
111 | griffures pour servir l'ambiance, en plein dans le mille. Il ne résiste
112 | pas à la pression et sort de sa cachette pour courir de plus belle.
113 | Mince ! Pensant avoir gagné, je ne l'ai pas joué stratège. Il se dirige vers l'arbre de non retour. Passé ce point, je ne suis plus chez moi. La perspective même de devoir recommencer ma chasse me ramollit. Tant pis, je suis si proche, personne ne me verra. Je dois juste faire vite. Très vite.
114 |
S'il tourne dans cette ruelle, il sera acculé. Le mur est haut et les 116 | sorties inexistantes.
117 |118 | Il tourne !
119 |120 | Plus qu'une foulée.
121 |
122 | Avec ma fierté féline qui crève le plafond, je plante enfin mes crocs
123 | dans le cou de la bestiole. J'ai bien fait, il a bon goût. Enfin.
124 | Allez, je dois filer maintenant. Bien que mon repas soit lourd, je devrais pouvoir rejoindre mon fief.
125 |
127 | “Le dîner est servi.”
128 |129 | Une voix rocailleuse s'élève derrière moi. En un instant, je me 130 | retrouve dans la peau du rat que je tiens dans la gueule. 131 |
132 |Le mur est haut et les sorties sont inexistantes…
133 | 134 |151 | D’habitude à cette heure, tout est très calme. Mais ce soir c’est 152 | différent, j’entends du bruit venant de la rue de derrière. Je vais aller 153 | voir, de toute manière j’ai pas grand chose de mieux à faire. 154 |
155 |156 | Je reconnais la voix de Gros Bouchon. Ce gros con de Gros Bouchon. J’ai 157 | jamais pu le sentir ce chat là… Il y a des nuits de cela, il a chassé 158 | ses propres frères et sœurs du territoire afin d’en avoir l’exclusivité. 159 | J’entends un deuxième chat. Je ne le reconnais pas… Ils ont plus l’air 160 | d’avoir envie d’en découdre que de trouver un terrain d’entente. Revoilà 161 | ce foutu oiseau. Les poubelles valsent, je ferais mieux d’aller voir ce 162 | qui se passe. Ce foutu piaf attendra. 163 |
164 |165 | C’est bien ce que je pensais… C’est la bagarre là-bas. Gros Bouchon n’a 166 | pas volé son nom. Qu’est ce qu’il est gros ! Ces deux-là ne jouent 167 | définitivement pas dans la même catégorie. De toute évidence, ce ne sera 168 | pas un beau combat. Je devrais peut-être empêcher Gros Bouchon de toucher 169 | ce pauvre petit gars. 170 |
171 |172 | Le p’tit a un regard qu’il ne m’avait jamais été donné de voir. Pas le 173 | regard de celui qui a peur, non ! Plutôt le regard de celui qui accepte 174 | la fatalité. Le regard de celui qui est tétanisé et qui ne laisse 175 | apercevoir aucune autre fin que LA fin. J’avais pas laissé un assommeur 176 | dans le coin ? Gros Bouchon n’a pas l’air d’en être bien loin. 177 |
178 |179 | Je devrais pas avoir trop de mal à viser Gros Bouchon : il est si 180 | massif… J’ai jamais trop compris pourquoi on trouvait des plantes dans 181 | des boites. Mais là, faute de compréhension, ça avait au moins le mérite 182 | de m’être utile. Je sais quel bruit fait le bois, mais j’ai aucune idée 183 | de quel bruit fait le bois sur un énorme chat. Allez, salut l’ami !
184 |J’arrive pas à savoir si p’tit père passe maintenant le plus beau jour 185 | de sa vie ou s’il espérait quand même pouvoir en placer une ou deux.
186 |Bon… je ferais bien de trouver un moyen de descendre d’ici moi… Je 187 | me demande si le piaf est encore dans le coin.
188 | 189 |Le silence. Après ce chaos incroyable, tant dans ma tête qu'autour de moi, plus un bruit. En un instant, le monstre est étalé sur le sol. La poussière remplit la rue, mon esprit, lui, se vide. Pétrifié d'abord par ce monstre puis par ma chance, le rat a pu s’enfuir. Peu importe ! Comme lui, je l'ai échappé belle. Dire que je me le disais pendant ma poursuite : “tu vas trop loin”. Je vais toujours trop loin de toute façon. Je m'en fous, il faut que je bouge.
192 |Le rat s’est déjà barré, et moi je peine à m’activer. Comme d’hab, dés 193 | que l’émotion me gagne je suis tétanisé. Cette fois-ci je ne raisonne pas 194 | mes pattes. Pas moyen, elles sont tétanisées. Il a du courage ce rat, lui 195 | au moins à défaut de courir, il essaye. Et moi ? Je reste bêtement là, 196 | comme si mon histoire s'était terminée quelques secondes plus tôt, face à 197 | la bête.
198 |J’entends bouger.
199 |Mes pattes me trahissent, mais pas mes sens. Toujours surpris. Le 200 | bruit a dû attirer du monde, je dois m’activer. Mon ouïe laisse place à 201 | ma vision, une silhouette descend du toit.
202 | 203 |206 | La nuit tombe, je me demande ce qui m’a pris le plus de temps 207 | finalement. Est-ce que c’est cette gouttière ou ce match perdu d’avance 208 | et gagné par surprise ? Bon, quoi qu’il en soit c’est l’heure où les 209 | petits poilus sortent. C’est un bon timing.
210 |P’tit père n’a pas l’air de s’être tiré. Qu’est-ce qu’il fait encore là lui ?
211 |— Allez ! Tire toi !
212 | — Je respire un peu et je m’en vais.
213 | — Qu’est-ce qui t’a pris de t’aventurer ici ?
214 | — La chasse, tout simplement. Je pensais faire vite et disparaître. Maintenant j’ai tout perdu, je ne sais pas ce que je vais manger.
Devant moi, je vois son vieux rat agonisant qui essaie de s’enfuir. Il devait vraiment avoir faim p’tit père…
216 |— C’est ça que tu cherches ? lui demandais-je en rattrapant son amuse-gueule
217 | — Merci.
Il ne peut s’empêcher de commencer à manger.
219 |— C’est toi qui as fait tomber ces caisses sur ce dingue ? C’était impressionnant, j’ai bien cru que j’allais y passer. Je n’en peux plus de ce danger permanent, mon enfance me manque.
220 |Je sais pas trop ce qu’il me raconte mais là, la nuit tombe, j’ai faim et… C’est quoi ce bruit ? Encore ce Piaf, un jour je t’aurai…
221 |— Est-ce que je peux rester ? il reprend.
222 |L’oiseau s’envole…
223 |— Sans toi, j’aurais servi de repas. Laisse moi te remercier, je t’aiderai pour ton territoire, pour la chasse. Tu mangeras toujours en premier.
224 |Impossible pour p’tit père de cacher son ronron à ce moment précis.
225 |— Et puis je suis loin de chez moi maintenant, la seule idée de rentrer seul à cette heure du jour après ce qui s’est passé me donne le tournis.
226 |L’idée même de me le coltiner me rebute, mais lui refiler les corvées me séduit assez.
227 |— Si tu veux rester avec moi, c’est seulement parce que TU le veux, souviens t’en !
228 | — Compris !
C’est de loin le chat le plus inoffensif que je rencontre. Il devrait pas prendre trop de place.
230 |— Reste mais fais-toi petit !
231 |Les ronrons de p’tit père me montent déjà à la tête.
232 | 233 |236 | Je ne sais même pas pourquoi je lui ai demandé ça. J'ai passé ma vie à 237 | éviter soigneusement les autres et à me faire discret. Et voilà qu'au 238 | premier Shérif venu, je lui offre mes services. Ce doit être la 239 | fatigue. La fatigue d'affronter chaque jour un monde qui n'accepte 240 | personne et qui rejette tout le monde. C’est sûrement ça. 241 |
242 | 243 |244 | Je suis encore plus abasourdi qu'il accepte. Je dois paraître bien 245 | faible à ses yeux. Pauvre chat incapable de se défendre tout seul. Ha ! 246 | Elle est loin la fierté de ma course poursuite effrénée ! 247 |
248 | 249 |250 | Mais un sentiment de soulagement m'envahit. Je ne suis plus seul 251 | maintenant. 252 |
253 | 254 |Ça fait des semaines que Poire et moi on traîne ensemble. Il apprend vite, mais qu’est ce qu’il parle… Je crois qu’il commence à assimiler la technique de l’assommoir par le toit.
257 |— Poire, tu peux venir ?
258 |Poire descend de la cheminée et se dirige vers moi.
259 |— Tu as vu ce panneau à l’angle du toit bleu et du toit jaune ?
260 | — Non.
261 | — C’est un grand rectangle. On y voit deux bipèdes et un chat vivre ensemble. Il a l’air tellement heureux.
262 | — Plus qu’avec la cataire ?
263 | — Oui.
264 | — Plus qu’avec le thym ?
265 | — Oui.
266 | — Plus qu’avec le carton ?
267 | — Ta gueule Poire…
268 | — Ma mère me racontait des histoires sur ces bipèdes. Mais je n’y crois plus vraiment.
269 | — J’suis sûr qu’ils sont encore parmi nous Poire…
Ça fait des jours que j’ai pas vu ce foutu oiseau. Cela fait même des semaines que les “récoltes” sont de plus en plus faiblardes. Est-ce inconscient de quitter le territoire ? J'en sais rien… Une chose est sûre, il reste à peine de quoi manger sur le territoire pour un chat seul… Alors deux chats… En fait, c’est soit je mange Poire, soit on se tire d’ici.
271 |— Poire ?
272 | — Oui ?
273 | — Demain matin, nous partons d’ici.
274 | — Pourquoi ?
275 | — Tu as mangé ce soir ?
276 | — Non.
277 | — Et hier ?
278 | — Non.
279 | — On commence à être à court, on doit trouver de la nourriture ailleurs Poire.
280 | — Mais tu veux aller où ?
281 | — Tu sais quand je te parlais des deux bipèdes et du chat à l’angle de la rue ? Je suis quasiment sûr d’avoir déjà vu l’endroit où ils sont.
282 | — Et tu penses que les choses seront meilleures qu’ici ?
Il commence à peine à prendre confiance en lui, je n’ai pas envie de le trahir.
284 |— Oui.
285 |Je n’en sais rien, je mens, et à Poire, et à moi-même.
286 | 287 |308 | Quatre jours sans se dorer les moustaches à l’aise au soleil ça peut 309 | paraître long. Mais ça fait aussi quatre jours que je m’affûte, que je 310 | comprends mieux mon instinct. Et puis… chasser à la volée sans avoir à 311 | se soucier des limites imposées par son territoire, c’est pas mal. John 312 | est impressionnant. Quelle que soit la situation, il a le bon réflexe, 313 | la bonne réaction. Toujours à l’affût, toujours prêt mais jamais drôle. 314 | J’ai pourtant essayé plusieurs fois de le dérouiller, mais rien n’y 315 | fait. Je l’aurai à l’usure. Il croit que je ne l’entends pas, mais il 316 | est en boucle sur un foutu oiseau. Je me dis qu’il a la mécanique qui 317 | se détraque. J’ai jamais vu d’oiseau ! Je me demande si la rouille 318 | n’est pas allée un peu trop loin. Mais c’était lui ou personne. Je me 319 | suis laissé porter et pour le moment, pas de regret. 320 |
321 | 322 |325 | Il me surprend le petit père. Il est doué, malin et rapide. Mais encore 326 | un peu lourdingue dans ses déplacements. C’était comme s’il s’était 327 | résigné à ce que les choses s’imposent sans avoir d’autre choix que de 328 | les accepter. Accepter… oui pourquoi pas, quand on est seul et qu’on ne 329 | dépend que de nous ! Le monde continue de tourner, tout le monde ici se 330 | bat pour survivre. Quand la recette ne fonctionne pas, on change les 331 | ingrédients. Il n’y avait plus rien à manger sur notre territoire. Tôt 332 | ou tard on se serait retrouvés à court, ou on aurait fini par se faire 333 | évincer. Ici, comme tout le monde est à croc, ça aurait mal fini. Mais 334 | c’était lui ou personne. Je me suis laissé porter et pour le moment 335 | aucun regret ! 336 |
337 |
338 | Tandis que nous avançons sur ce large parterre d’asphalte, les maisons
339 | ont cédé leurs places à un horizon incroyablement vide. Sur le chemin
340 | nous apercevons des rangées entières de colosses d’aciers, ces mêmes
341 | colosses qu’on trouvait de part et d’autres de la chaussée à la
342 | jonction des territoires. Je ne sais pas si je l’ai rêvé ou si c’est
343 | réellement arrivé, mais j’ai l’impression d’en avoir déjà vu bouger. Et
344 | avec quel vacarme ! Je ne sais pas de quoi ces bêtes se nourrissent
345 | mais ça doit être difficile de faire le plein quand on est aussi
346 | bruyant. Sorti de nulle part, l’oiseau est juste là, devant moi,
347 | trônant fièrement sur un géant d’acier bien plus imposant que les
348 | autres.
349 | — Ne bouge plus !
350 | — Alors tu disais vrai ! Il est magnifique ! me sort-il d’un air bipède.
351 | — J’irai pas jusque-là. Il a l’air appétissant mais j’en ai déjà vu des plus beaux.
352 | — Et pourquoi vouloir l’attraper ?
353 | — Ça fait au moins six ans que je suis dans le coin, six ans qu’il est là, toujours collé à mes basques. Six ans, que peu importe où je me rends, il est là, à me regarder et à me narguer. J’ai besoin de personne et certainement pas d’un oiseau à mes côtés. Je suis né seul, je me suis fait seul et je finirai seul.
354 | — T’as décidé de finir seul, mais en attendant je suis là !
355 | — Merci de me le rappeler…Et tu comptes m’aider à l’attraper pour autant ?
356 |
361 | Cinglant. Mais pas de place à la discute, John se lance. Il a attendu 362 | que le piaf tourne la tête, c’est pour ça qu’il ne me laisse pas le 363 | temps de répondre. Allez ! je le suis et cette fois je le tiens. John 364 | ondule avec ses sauts à travers les obstacles, c’est fluide. On sent 365 | qu’il gagne du terrain, la patte est sûre à mille pour cent. Et ça, 366 | sans lâcher l’oiseau du regard. Lui, il vole. Mais il fatigue. Pas un 367 | gros voyageur visiblement. Alors que John repasse au sol pour la jouer 368 | discrètement, l’oiseau se pose. C’est bien vu, le gros colosse lui 369 | cache la vue. John est devenu invisible. 370 |
371 | 372 |375 | Je bondis sur le museau du petit colosse afin de gagner de la hauteur 376 | et de pouvoir accéder au museau du plus gros, celui sur lequel l’oiseau 377 | trône. Alors que je prends l’ultime appui, je sors mes griffes et 378 | envisage déjà les endroits où celles-ci lui feront un beau collier. 379 | Cette fois-ci, c’est la bonne. Je suis en l’air, tout se passe comme 380 | prévu, mais j’entends un bruit parasite qui capte mon attention. Je 381 | tourne la tête pour regarder et je réalise immédiatement la connerie 382 | que je viens de faire. Je m’écrase contre la vitre du géant de métal 383 | dans un vacarme assourdissant. 384 |
385 | 386 |389 | Non ! Impossible de me retenir, je ris aux éclats. Je sais qu’il sera 390 | vexé, mais quelle action ! C’est rare. Rare qu’il se plante de la 391 | sorte. En même temps, il est pas net cet oiseau. Il a quelque chose. 392 | Dans son air, sa posture, je ne sais pas. On a l’impression qu’il 393 | savait que John glisserait. Sans rien dire, en boitillant à peine, John 394 | suit l’oiseau en direction de ce gros bâtiment bleu.Bleu. J’aime bien 395 | le bleu. 396 |
397 | 398 |401 | Tout est allé trop vite, je fatigue, j’ai chaud, mais j’ai encore une 402 | chance. Pas le temps d’attendre Poire ! Qu’il se bouge ! 403 |
404 | 405 |408 | Le paradis, miiiiiiahahahou, j’adore mon territoire. Il est vaste, 409 | complexe. Idéal pour la chasse. Seul un petit trou permet d’entrer ou 410 | de sortir vers le monde dangereux.C’est par ce trou que je suis entrée 411 | avec ma mère et que je l’ai vu partir pour la dernière fois. C’est 412 | aussi par ici que ma nourriture vient à moi. Malheureusement, c’est 413 | aussi par là qu’ils entrent : les autres… 414 |
415 |416 | Jusqu’à présent, je ne suis tombée que sur des chats amincis par la 417 | faim, des faibles du dehors, des ombres pathétiques. Les plus malins 418 | ont fui en sentant que le ter-ritoire était occupé. D’autre, j’imagine, 419 | regrettent le jour où se retrouvant face à mes yeux brillants et mes 420 | griffes affûtées, n’ont pu que prendre leurs pattes à leur cou tout en 421 | récoltant au passage de nouvelles cicatrices. Mais il arrive que, de 422 | temps en temps, certains mâles ridiculement fiers, malgré leur évidente 423 | infériorité, tentent de me prendre MON merveilleux territoire. J’ai dû 424 | tristement mettre un terme à leur misérable vie. J’ai eu de la chance 425 | jusqu’à présent, aucun ne s’est révélé être un véritable danger. Car si 426 | un jour il entre ici un monstre que je ne peux maîtriser, alors je 427 | devrai fuir et ressortir par le petit trou. 428 |
429 |430 | Je n’aime guère tuer mes congénères, mais j’adore chasser, ça oui. 431 | Miiihahahouu ! Je suis faite pour ça, j’ai les plus belles griffes du 432 | monde. Affûtées, brillantes et incroyablement efficaces pour tuer. 433 | C’est de l’entretien c’est sûr, des heures à détruire les nombreuses 434 | “boites moelleuses”, les beaux dessins de murs en papier. Mais rien ne 435 | me satisfait plus que de mettre en lambeaux les tissus suspendus ! 436 | Miiiihahahaou !! Je suis la Reine de ces lieux. Je connais les moindres 437 | recoins de ce labyrinthe insensé et si je le souhaite, je peux avancer 438 | ici sans jamais mettre une patte au sol. Seul un oiseau pourrait 439 | m’échapper. Et du perchoir le plus haut de mon temple, je vois tout. 440 | D’ailleurs, c’est parti. 441 |
442 |443 | Voilà maintenant quelques minutes que j’ai repéré l’intrus : une 444 | salamandre inconsciente venue se reposer à l’ombre de ma demeure. Elle 445 | ne sait pas encore qu’elle vient de devenir ma proie. Je me décide à 446 | l’approcher doucement, elle est au sol et je la domine de plusieurs 447 | étagères. J’avance à pattes de velours en évitant de faire tomber 448 | quelque chose susceptible de me faire repérer. 449 |
450 | 451 |454 | Aplatie au maximum, dans l’ombre d’une fausse plante, elle ne m’a pas 455 | vu la dépasser et me placer en embuscade. Désormais, la proie 456 | s’approche de moi, s’en est fini d’elle. Je bondis sur elle alors que 457 | dans un ultime mouve-ment de désespoir elle tente une embardée. Mais 458 | toutes griffes dehors, mon coup précis et puissant la ramène tout droit 459 | en direction du sol. Gagné ! Miiiiahahaou ! Me voici triomphante, 460 | dominant l’animal qui cesse petit à petit de s’agiter, son sang coulant 461 | le long de mes griffes. Je ne lui ai laissé aucune chance. Triste 462 | destin pour cette proie qui cherchait juste un endroit de repos. La 463 | voici sur le sol, se reposant pour l’éternité. 464 |
465 |466 | Je n’ai même pas très faim, les salamandres ont généralement un goût 467 | atroce. Je croque un morceau, après l’avoir fait passer de gauche à 468 | droite entre mes pattes, lui don-nant l’air d’un pantin désarticulé. 469 | Cette victoire a le goût de ce lézard, amère. J’entends les oiseaux 470 | dehors, au travers du petit trou. Je me souviens de moins en moins de 471 | l’extérieur, je suis arrivée ici je n’étais qu’un chaton. Mais très 472 | vite, j’ai adoré l’endroit. Ma mère m’a tout appris : la chasse, 473 | l’affûtage des griffes, le marquage de territoire, tout ! Et puis un 474 | jour elle est partie. Perché à l’entrée du Temple, un oiseau flamboyant 475 | l’attendait. Elle m’a dit de ne pas bouger, s’est avancée, il s’est 476 | envolé, elle l’a suivi. 477 |
478 | 479 |
482 | C’est sombre à l’intérieur. Un petit trou, unique moyen pour entrer
483 | dans le bâtiment bleu, laisse passer un trait de soleil à travers la
484 | façade. Mais après être rentré, ma vue s’adapte vite et je vois de
485 | l’espace, beaucoup d’espace. On est haut aussi, je distingue mal le
486 | sol. John est devant moi, on avance discrètement. Un enchaînement de
487 | métal plus tard, il se met en idée de traverser ce câble.
488 | — T’es sûr ? Je le sens pas.
489 | — Allez ma biche, n’ai pas peur. Il a le don pour me les froisser, je
490 | le sens pas j’ai dit ! Trop tard il est déjà de l’autre côté et continue d’avancer.
491 |
496 | Un bruit de glissement me fait dire que j’ai peut-être surestimé la 497 | courbe de progression de Poire. Je me retourne, je ne le vois plus 498 | derrière moi. À tout les coups ce nigot a loupé son saut ! Bon… je vais 499 | essayer de retourner sur mes pas, la grille est suffisemment haute pour 500 | qu’il lui soit arrivé quelque chose… 501 |
502 | 503 |506 | J’avais bien dit que je le sentais pas ! Je chute. Et maintenant le 507 | plus important : l’atterrissage. 508 |
509 |510 | Trois, deux un. 511 |
512 |513 | Du mou ! Je me suis étalé du ciel, sur du mou ! J’en avais croisé 514 | quelques-uns, mais jamais d’aussi agréables. Une texture épaisse, 515 | incroyable, je ronronne immédiatement. 516 |
517 | 518 |521 | Mais qu’est ce que j’ai mérité pour me traîner un boulet pareil. Règle 522 | n°1 : “fais toi discret !” Et voila que je l’entends ronronner ! La 523 | bonne nouvelle, c’est qu’il n’a rien. La mauvaise ? C’est que s’il y a 524 | qui que ce soit ici, il saura qu’on est là, bien avant même qu’on s’en 525 | apperçoive. 526 |
527 | 528 |531 | Évidemment que je l’ai vu descendre ce gros lourdingue, eh mais 532 | attend ? C’est sur ma sainte boîte qu’il se prélasse ? Mais pour qui il 533 | se prend ? Et il sort d’où cet abruti ? Cette boîte c’est la seule que 534 | je n’ai pas détruite, je la garde pour mes vieux jours, c’est la plus 535 | belle, la plus confortable et la seule sans odeur. Mmmh… ça explique 536 | pourquoi il ne m’a pas encore repérée, enfin, l’endroit entier doit 537 | empester ma présence. Peut-être que son odorat est défaillant, ou que 538 | l’intrus est trop occupé à détruire Ma propriété ! Il ne paie rien pour 539 | attendre, j’aimerais le réduire en bouillie, mais ce n’est pas ma 540 | méthode. Prudence, on observe et on avise. Il est volumineux et je ne 541 | voudrais pas me retrouver en difficulté. J’ai l’intuition que quelque 542 | chose m’échappe… Je reste à distance suffisante pour ne pas être prise 543 | de court mais visible. À sa réaction je saurais s’il est dangereux ou 544 | juste débile. Regarde-moi, allez… re-gar-de moi. 545 |
546 | 547 |550 | Je vois Poire… Il est là insouciant pour pas dire inconscient ! J’en 551 | viens à me demander s’il me dit qu’il comprend, juste pour que je lui 552 | fiche la paix. J’entends un bruit qui vient d’en face. Poire n’a même 553 | pas l’air d’avoir remarqué. Est-ce qu’il retiendra plus s’il se 554 | retrouve devant les problèmes qu’il a lui-même provoqué ? J’suis sûr 555 | que non. Je reste en position, voyons comment les choses se trament, je 556 | vais pas passer chacune de mes journées à lui sauver le popotin ! 557 |
558 | 559 |562 | Qu’est-ce que c’est bon ! Toute cette matière, tout ce mou ! Je suis 563 | sur un nuage, j’oublie presque que j’ai fais le grand saut. Où est John 564 | d’ailleurs ? Il faut absolument qu’il voit ça. Je miaule un coup pour 565 | l’appeler. Et j’entends immédiatement gronder derrière moi. “John ! Tu 566 | dois ab-solument te couché la dess…” 567 |
568 | 569 |572 | — Salut, je te dérange pas ? Cet idiot lève en fin la tête. Tu as deux 573 | minutes pour déguerpir. Affolé, le voilà qui cherche de l’aide du 574 | regard. 575 |
576 | 577 |
580 | Encore ! Décidément tout le monde m’en veut de ma présence.
581 | — Tu as gagné !
582 |
587 | — Hein ?
588 | Mais qu’est ce que c’est que ce chat ? Quelque chose ne va pas,
589 | j’ai les vibrisses qui s’agitent. D’habitude tout est clair, qui
590 | vient sur mon territoire, termine en charpie. Il est marrant celui-là,
591 | j’ai rien gagné du tout ! J’ai même pas eu à lui courir après. Je
592 | suis à deux griffes de m’en faire un tapis.
593 |
616 | — Je ne veux pas me battre.
617 | — Qu’est ce que tu fais là ?
618 | — Je suis tombé du plafond, je me suis retrouvé ici en un instant.
619 | Je ne peux pas tout lui dire, si elle apprend que John est ici elle pourrait
620 | m’achever avant qu’il arrive.
621 | — Quoi qu’il en soit, ce canapé est très mou. C’est sympa ici !
622 |
627 | — Partez de chez moi, toi et celui que je peux sentir d’ici.
628 | Comment peut-elle savoir ? Moi même je n’ai pas vu John depuis ma chute.
629 | — De qui parles-tu ? Je suis arrivé seul ici.
630 |
635 | Son stress est puant. On le ressent à 2 kilomètres. Il ne tient pas en place et
636 | regarde partout. ll n’est pas seul j’en suis sûre mais il ne sait pas
637 | où est son acolyte.
638 | — Montre toi, je sais que tu es là. Sinon je mange ton copain.
639 | Une ombre se profile derrière le paravent, j’avais correctement anticipé d’où il viendrait.
640 | J’aurais sûrement fait pareil.
641 | — Du calme, on ne te veut aucun mal.
642 | Un chat roux beaucoup plus assuré s’avance vers moi, ses nombreuses cicatrices me
643 | font douter de sa sympathie. Je me tourne vers l’autre, le fusille du regard,
644 | son ronronnement s’arrête instantanément.
645 | — J’avais trop peur, j’ai menti… On ne cherche qu’un peu à manger.
646 | — On a quitté notre territoire. Nous sommes des chats qui voyageons.
647 | On s’est arrêtés ici pensant qu’il n’y avait personne.
648 | — Eh bien il y’a quelqu’un et la nourriture ici lui appartient. Toi ! Descend de
649 | ma boite moelleuse ! Et toi reste où tu es !
650 | J’ai un vrai problème, je ne pourrai pas les faire sortir de force. À deux contre un
651 | et sans effet de surprise, c’est la défaite assurée. Il va falloir la jouer fine.
652 | — Recommençons, moi c’est Poire, je suis gros, vachement gentil. Et j’aime le mou !
653 | Et le bleu ! On traîne ensemble avec John depuis quelques temps,
654 | je sais qu’il peut faire peur mais il m’a sauvé plusieurs fois les moustaches !
655 | Il a la couleur de son tempérament, un vrai caramel. Dur d’abord puis mou dedans.
656 | Il va falloir que je garde l’œil ouvert. Au moindre faux pas, je descends
657 | le caramel en premier.
658 | — Tu n’es pas une adversaire, nous ne prendrions pas le temps de discuter…
659 | — Une nuit pas plus, et pas de chasse sans mon autorisation sur mon territoire.
660 | Je prendrai la plus grosse part, et vous dormirez là où je vous le dirai.
661 |
666 | Poire la suit sans hésiter, mais je préfère garder mes distances. Je 667 | vois bien qu’elle ne nous fait pas confiance. Est-ce-qu’elle prévoit de 668 | nous tuer dans notre sommeil ? Quoi qu’il en soit restons prudents. 669 |
670 | 671 |
674 | — Depuis quand es-tu ici ?
675 | — Depuis presque toujours.
676 | Poire multiplie les questions et j’en profite pour prendre un peu
677 | plus de distance pour repérer les lieux.Des meubles, des meubles partout…
678 | Ils sont comme dans les habitations, mais là, ils sont sans vie et
679 | s’étendent à perte de vue. Pourquoi en fabriquer autant ? Il n’y a
680 | pas assez de chats pour tous les griffer.Leur voix s’éloignent, je
681 | ne dois pas laisser Poire seul trop longtemps.
682 | — … et c’est comme ça que je me suis retrouvée seule ici.
683 | — Tu sais tu pourrais nous accompagner. D’après John, cet endroit est parfait pour les chats.
684 | — Je ne vous accompagnerai pas, je suis très bien ici. Cet endroit, dont tu m’as parlé,
685 | tu n’es pas le premier à l’évoquer. Ceux qui ont eu l’audace de passer par ici
686 | suivaient cette route. Ils appelaient ça « LEUZO ».
687 | — Et tu sais comment y aller ?
688 | — Non. Je ne m’aventure pas en dehors de mon Temple, c’est dangereux.
689 | Je n’en ai jamais vu revenir de la bas. Peut-être qu’ils y sont bien.
690 | — C’est sûrement pour ça !
691 |
696 | Il est si naïf… mais je l’aime bien. Il n’est clairement pas une 697 | menace, et a l’air d’avoir le cœur sur la patte. John, en revanche, il 698 | a pas l’air net, il est chez moi et il agit comme si il pouvait faire 699 | ce qu’il veut. D’ailleurs, où est-il ?Un bruit. ZBREYMPuis un autre. 700 | KRRRKRRKRKRKRUn fracas assourdissant s’élève du fond de mon royaume. Je 701 | vois au loin un panneau tomber, et un nuage de poussière se lever du 702 | sol. C’est John, en pleine frénésie, qui renverse tout sur son passage. 703 | Et plus haut, je n’en crois pas mes yeux… 704 |
705 | 706 |709 | Je savais qu’il était toujours à l’intérieur. Il n’a qu’une seule 710 | sortie. Cet oiseau est à moi. 711 |
712 | 713 |716 | Alors là, certainement pas ! Cet oiseau est sacré ! Je me lance à sa 717 | poursuite, espérant que l’agilité de l’oiseau me laisse un peu de temps 718 | pour rattraper John avant qu’il ne l’éventre. Je saute de boites en 719 | étagères, et reprends rapidement du terrain. 720 |
721 | 722 |725 | Ils jouent ? Finalement ils s’entendent bien. Je vais les suivre, il 726 | m’expliqueront les règles en route. Décidément les relations entre 727 | chats me dépassent. 728 |
729 | 730 |
733 | — Laisse cet oiseau tranquille !
734 | À peine je réalise que Frihet me poursuit, que ses griffes viennent
735 | se planter dans ma croupe. Nous roulons en ren-versant absolument
736 | tout sur notre passage. Je me débat pour qu’elle me lâche, mais son
737 | étreinte est beaucoup trop forte, elle me fait miauler de douleur.
738 | — Ça n’a rien à voir avec toi ! je lui dis en la repoussant de mes pattes arrières.
739 | — Bien sûr que si ! Tu es trop borné pour comprendre !
740 | Elle prend son élan et me percute la tête en avant. Je suis projeté
741 | en arrière sous la puissance du choc. Mon dos heurte la paroi et
742 | dans le même mouvement, avec une rage totale, Frihet me plaque contre le mur.
743 | — Cet oiseau est sacré pour ma mère, jamais je ne te laisserai lui faire du mal !
744 | — Je ne te laisserai pas te mettre sur mon chemin, même si tu penses devoir protéger cet oiseau.
745 | — Je vais te tuer !
746 | Sa rage vient heurter violemment mon museau.
747 |
752 | J’arrive à peine et j’entends Frihet hurler sur John complètement 753 | maîtrisé. Son rugissement semble sorti d’une autre espèce, plus 754 | puissante et plus grande que les chats. Sa colère est saisissante, mais 755 | plus impressionnant encore, le sol se met soudainement à trembler sous 756 | mes coussinets. D’abord légères, les secousses s’intensifient à chaque 757 | seconde. Mon instinct me somme de déguerpir, la pression est 758 | insupportable. Je dois absolument sauver John de cette furie. 759 |
760 | 761 |764 | Je n’ai jamais été aussi enragée, j’étais prête à le couper en deux. 765 | Mais sans savoir pourquoi, mon instinct remplace instantanément toute 766 | rage par de la peur. Le sol vibre sous mes pattes, les murs commencent 767 | à grincer. 768 |
769 | 770 |
773 | Frihet relâche doucement son emprise et détourne le regard vers le
774 | vide. C’est elle qui fait trembler le sol ? Je n’ai jamais vu un chat
775 | faire ça. Non, ce doit être autre chose. Je vois Poire redescendre à
776 | toute vitesse vers nous. Il fonce sur Frihet. Mais avant de
777 | l’atteindre, dans un bruit assourdissant, un immense morceau de métal
778 | s’effondre sur le sol. Manquant ainsi d’aplatir Poire. L’élan coupé, je
779 | le distingue au travers de la fumée, tétanisé.
780 | — Frihet ! L’endroit tombe en morceaux ! Lâche moi !
781 |
786 | — Mais que ce passe-t-il ?! C’est un morceaux du plafond ?
787 | Le sol n’en finit pas de trembler et ça monte en puissance. Une
788 | fois remis de mon absence, je contourne l’obstacle pour rejoindre John.
789 | — Qu’avez vous fait ? Hurle Frihet à John, effarée.
790 | Je me glisse entre les deux pour ramener Frihet à la raison.
791 | — Lâche-le Frihet ! Il faut partir !
792 |
797 | Mon monde s’effondre. Et je ne bouge pas. Ma maison tombe en ruine et 798 | je ne peux rien y faire. Je distingue le plafond se plier et je sens 799 | chaque mur se disloquer. Rien ne résiste à cette vibration venue du 800 | sol, mes muscles sont paralysés alors que tout est en mouvement. 801 |
802 | 803 |806 | Je la pousse avec ma tête pour qu’elle se mette en mouvement mais rien 807 | n’y fait, elle est clouée au sol. Alors que le mur au dessus de nous 808 | penche dangereusement. Elle bouge enfin. Je retrouve John du regard, il 809 | est déjà près de la sortie. 810 |
811 | 812 |815 | Tout est si flou. Je ne me souviens que de formes abstraites s’étalant 816 | le long de mon champ de vision. Mes muscles sont tendus, comme si je 817 | venais de faire un effort incroyable, mais aucun souvenir. Rien, juste 818 | un monde en deux couleurs, bleu et blanc, un ensemble brouillon de 819 | métal et la silhouette de deux chats se découpant dans l’horizon. 820 |
821 | 822 |825 | Il fallait que cette catastrophe arrive en pleine nuit. Nous voilà déjà 826 | dehors alors que le froid revient. Est ce que c’est ma faute si on en 827 | est là maintenant ? J’espère que non, ça aurait pu mal finir. Ce ne 828 | doit pas être simple pour Frihet. Se faire sortir de la boite, c’est 829 | jamais agréable. 830 |
831 | 832 |
835 | — Je vois que tu es réveillée.
836 | Je tournais autour d’elle depuis un petit moment et même si je ne tournais plus,
837 | je gardais un œil sur elle.
838 | — Nous nous en sommes sortis, c’était moins une. Je suis terriblement
839 | désolé pour ton Temple bleu.
840 | Je ne peux pas compter sur John pour ce genre d’attention, il est mal
841 | à l’aise. Alors comme c’est important, je m’en occupe. Et maintenant, Frihet
842 | elle fait partie de la bande,je crois.
843 | — C’est donc bien mon temple que je vois écroulé devant mes yeux.
844 | — Oui… Mais nous nous sommes rencontrés, tu n’as qu’à nous suivre !
845 | — Et bah voyons ! Vous avez fait tomber ma maison pour me forcer à
846 | vous accompagner !
847 | — Non Frihet, nous n’avons pas ce pouvoir…
848 | John sort d’un buisson proche et s’avance vers nous l’air concerné.
849 | — Nous devrions partir, le coin est en effervescence après les secousses. Frihet, tu es avec nous ?
850 |
855 | Quel choix ai-je ? Cette bande de chats fous m’ont eue.
856 | — Je n’ai pas d’autre choix. Sache que…
857 | Le sol tremble de nouveau. Cette fois c’est instantané, le choc est lourd.
858 | Poire vacille sur ses pattes et tombe maladroitement. Un son incroyable
859 | sors du sol et envahit l’espace.
860 | Comme étouffée, la voix de John ressort au loin :
861 | — Partons tout de suite !
862 | Poire m’incite à les suivre alors que John prend déjà un pas de course, au revoir chez moi.
863 |
868 | Quelle horreur ! Impossible de courir ! Mais petit à petit le bruit 869 | assourdissant s’estompe. Le sol ne tremble plus, mais un son persiste. 870 | J’entends comme des couinements, sortir de l’obscurité. L’ombre semble 871 | vivante. 872 |
873 | 874 |
877 | Dans un bruit de craquement, une vague noire surgit à la lumière de la
878 | lune. Le son de cisaille que je percevais légèrement tout à l’heure
879 | s’amplifie de plus en plus. Des rats. Cette mélasse, c’est des rats. Et
880 | nous sommes sur leur chemin.
881 | — Prenez de la hauteur ! Vite !
882 |
887 | Cette fois sans aucune hésitation je suis les ordres de John. Frihet, 888 | elle, avait déjà eu le réflexe, même peut-être avant John. Je déteste 889 | les rats. Depuis Gros Bouchon je ne peux plus les voir. 890 |
891 | 892 |
895 | — D’où viennent tous ces rats ?
896 | — Aucune idée, le tremblement les a peut-etre fait sortir de leur nid.
897 | Mais ils ont l’air de suivre une direction en particulier !
898 |
900 | — Et si nous les suivions par les hauteurs ? Il y aura peut-être à
901 | manger là où ils vont.
902 | — Bonne idée !
903 | Bonne idée, bonne idée, je suis pas vraiment d’accord. Il y en a
904 | beaucoup quand même. Mais ils partent déjà. Je vais devoir m’imposer
905 | si je ne veut pas me retrouver “suiveuse”. Enfin, l’idée de ne pas
906 | avancer seule dans ce monde inconnu me réconforte. J’ai tout perdu mais je les ai trouvés.
907 |
Description | 38 |Price | 39 |Quantity | 40 |Subtotal | 41 |
---|---|---|---|
Website design | 46 |€34.20 | 47 |100 | 48 |€3,420.00 | 49 |
Website development | 52 |€45.50 | 53 |100 | 54 |€4,550.00 | 55 |
Website integration | 58 |€25.75 | 59 |100 | 60 |€2,575.00 | 61 |
Cher Aurélien Leno,
19 |Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute 20 | irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
21 |Estelle Carotte
22 |En live dans 50 villes de France
13 | 14 |e-sport live
16 |Tournoi retro-gaming
17 |Participez à la première édition près de chez vous
20 | 21 |25 juin
2021
24 |La souris verte
Épinal
27 |La Souris Verte — 17 rue des États-Unis, 88000 Épinal — www.ticketrocknight.org
41 | 42 | 43 | -------------------------------------------------------------------------------- /poster/poster.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/poster/poster.pdf -------------------------------------------------------------------------------- /printall.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | # ticket 4 | weasyprint ticket/ticket.html ticket/ticket.pdf & 5 | 6 | # report 7 | weasyprint report/report.html report/report.pdf & 8 | 9 | # poster 10 | weasyprint -s poster/poster.css poster/poster.html poster/poster.pdf & 11 | weasyprint -s poster/flyer.css poster/poster.html poster/flyer.pdf & 12 | 13 | # letter 14 | weasyprint letter/letter.html letter/letter.pdf & 15 | 16 | # invoice 17 | weasyprint invoice/invoice.html invoice/invoice.pdf & 18 | 19 | # book 20 | weasyprint -s book/book-classical.css book/book.html book/book-classical.pdf & 21 | weasyprint -s book/book.css book/book.html book/book.pdf & -------------------------------------------------------------------------------- /report/firasans-bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/report/firasans-bold.otf -------------------------------------------------------------------------------- /report/firasans-italic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/report/firasans-italic.otf -------------------------------------------------------------------------------- /report/firasans-light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/report/firasans-light.otf -------------------------------------------------------------------------------- /report/firasans-lightitalic.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/report/firasans-lightitalic.otf -------------------------------------------------------------------------------- /report/firasans-regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/report/firasans-regular.otf -------------------------------------------------------------------------------- /report/heading.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 27 | -------------------------------------------------------------------------------- /report/internal-links.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 85 | -------------------------------------------------------------------------------- /report/multi-columns.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 35 | -------------------------------------------------------------------------------- /report/report-cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CourtBouillon/weasyprint-samples/5cb0f5b82bdc6327c07d15f3aec68447e0fc394e/report/report-cover.jpg -------------------------------------------------------------------------------- /report/report.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: Fira Sans; 3 | font-weight: 400; 4 | src: url(firasans-regular.otf); 5 | } 6 | @font-face { 7 | font-family: Fira Sans; 8 | font-style: italic; 9 | font-weight: 400; 10 | src: url(firasans-italic.otf); 11 | } 12 | @font-face { 13 | font-family: Fira Sans; 14 | font-weight: 300; 15 | src: url(firasans-light.otf); 16 | } 17 | @font-face { 18 | font-family: Fira Sans; 19 | font-style: italic; 20 | font-weight: 300; 21 | src: url(firasans-lightitalic.otf); 22 | } 23 | @font-face { 24 | font-family: Fira Sans; 25 | font-weight: 700; 26 | src: url(firasans-bold.otf); 27 | } 28 | 29 | @page { 30 | @top-left { 31 | background: #fbc847; 32 | content: counter(page); 33 | height: 1cm; 34 | text-align: center; 35 | width: 1cm; 36 | } 37 | @top-center { 38 | background: #fbc847; 39 | content: ''; 40 | display: block; 41 | height: .05cm; 42 | opacity: .5; 43 | width: 100%; 44 | } 45 | @top-right { 46 | content: string(heading); 47 | font-size: 9pt; 48 | height: 1cm; 49 | vertical-align: middle; 50 | width: 100%; 51 | } 52 | } 53 | @page :blank { 54 | @top-left { background: none; content: '' } 55 | @top-center { content: none } 56 | @top-right { content: none } 57 | } 58 | @page no-chapter { 59 | @top-left { background: none; content: none } 60 | @top-center { content: none } 61 | @top-right { content: none } 62 | } 63 | @page :first { 64 | background: url(report-cover.jpg) no-repeat center; 65 | background-size: cover; 66 | margin: 0; 67 | } 68 | @page chapter { 69 | background: #fbc847; 70 | margin: 0; 71 | @top-left { content: none } 72 | @top-center { content: none } 73 | @top-right { content: none } 74 | } 75 | 76 | html { 77 | color: #393939; 78 | font-family: Fira Sans; 79 | font-size: 11pt; 80 | font-weight: 300; 81 | line-height: 1.5; 82 | } 83 | body { 84 | margin: 0; 85 | } 86 | 87 | h1 { 88 | color: #fbc847; 89 | font-size: 38pt; 90 | margin: 5cm 2cm 0 2cm; 91 | page: no-chapter; 92 | width: 100%; 93 | } 94 | h2, h3, h4 { 95 | color: black; 96 | font-weight: 400; 97 | } 98 | h2 { 99 | break-before: always; 100 | font-size: 28pt; 101 | string-set: heading content(); 102 | } 103 | h3 { 104 | font-weight: 300; 105 | font-size: 15pt; 106 | } 107 | h4 { 108 | font-size: 13pt; 109 | } 110 | 111 | #cover { 112 | align-content: space-between; 113 | display: flex; 114 | flex-wrap: wrap; 115 | height: 297mm; 116 | } 117 | #cover address { 118 | background: #fbc847; 119 | flex: 1 50%; 120 | margin: 0 -2cm; 121 | padding: 1cm 0; 122 | white-space: pre-wrap; 123 | } 124 | #cover address:first-of-type { 125 | padding-left: 3cm; 126 | } 127 | #contents { 128 | break-before: right; 129 | break-after: left; 130 | page: no-chapter; 131 | } 132 | #contents h2 { 133 | font-size: 20pt; 134 | font-weight: 400; 135 | margin-bottom: 3cm; 136 | } 137 | #contents h3 { 138 | font-weight: 500; 139 | margin: 3em 0 1em; 140 | } 141 | #contents h3::before { 142 | background: #fbc847; 143 | content: ''; 144 | display: block; 145 | height: .08cm; 146 | margin-bottom: .25cm; 147 | width: 2cm; 148 | } 149 | #contents ul { 150 | list-style: none; 151 | padding-left: 0; 152 | } 153 | #contents ul li { 154 | border-top: .25pt solid #c1c1c1; 155 | margin: .25cm 0; 156 | padding-top: .25cm; 157 | } 158 | #contents ul li::before { 159 | color: #fbc847; 160 | content: '• '; 161 | font-size: 40pt; 162 | line-height: 16pt; 163 | vertical-align: bottom; 164 | } 165 | #contents ul li a { 166 | color: inherit; 167 | text-decoration-line: inherit; 168 | } 169 | #contents ul li a::before { 170 | content: target-text(attr(href)); 171 | } 172 | #contents ul li a::after { 173 | color: #fbc847; 174 | content: target-counter(attr(href), page); 175 | float: right; 176 | } 177 | 178 | #columns section { 179 | columns: 2; 180 | column-gap: 1cm; 181 | padding-top: 1cm; 182 | } 183 | #columns section p { 184 | text-align: justify; 185 | } 186 | #columns section p:first-of-type { 187 | font-weight: 700; 188 | } 189 | 190 | #skills h3 { 191 | background: #fbc847; 192 | margin: 0 -3cm 1cm; 193 | padding: 1cm 1cm 1cm 3cm; 194 | width: 21cm; 195 | } 196 | #skills section { 197 | padding: .5cm 0; 198 | } 199 | #skills section#table-content::before { 200 | background: url(table-content.svg) no-repeat center #fbc847; 201 | background-size: 50%; 202 | content: ''; 203 | display: inline-block; 204 | float: left; 205 | height: 2cm; 206 | margin-right: .5cm; 207 | vertical-align: middle; 208 | width: 2cm; 209 | } 210 | #skills section#heading::before { 211 | background: url(heading.svg) no-repeat center #fbc847; 212 | background-size: 50%; 213 | content: ''; 214 | display: inline-block; 215 | float: left; 216 | height: 2cm; 217 | margin-right: .5cm; 218 | vertical-align: middle; 219 | width: 2cm; 220 | } 221 | #skills section#multi-columns::before { 222 | background: url(multi-columns.svg) no-repeat center #fbc847; 223 | background-size: 50%; 224 | content: ''; 225 | display: inline-block; 226 | float: left; 227 | height: 2cm; 228 | margin-right: .5cm; 229 | vertical-align: middle; 230 | width: 2cm; 231 | } 232 | #skills section#internal-links::before { 233 | background: url(internal-links.svg) no-repeat center #fbc847; 234 | background-size: 50%; 235 | content: ''; 236 | display: inline-block; 237 | float: left; 238 | height: 2cm; 239 | margin-right: .5cm; 240 | vertical-align: middle; 241 | width: 2cm; 242 | } 243 | #skills section#style::before { 244 | background: url(style.svg) no-repeat center #fbc847; 245 | background-size: 50%; 246 | content: ''; 247 | display: inline-block; 248 | float: left; 249 | height: 2cm; 250 | margin-right: .5cm; 251 | vertical-align: middle; 252 | width: 2cm; 253 | } 254 | #skills section h4 { 255 | margin: 0; 256 | } 257 | #skills section p { 258 | margin-top: 0; 259 | } 260 | 261 | #offers { 262 | display: flex; 263 | flex-wrap: wrap; 264 | justify-content: space-between; 265 | } 266 | #offers h2, #offers h3 { 267 | width: 100%; 268 | } 269 | #offers section { 270 | width: 30%; 271 | } 272 | #offers section h4 { 273 | margin-bottom: 0; 274 | } 275 | #offers section ul { 276 | list-style: none; 277 | margin: 0; 278 | padding-left: 0; 279 | } 280 | #offers section ul li:not(:last-of-type) { 281 | margin: .5cm 0; 282 | } 283 | #offers section p { 284 | background: #fbc847; 285 | display: block; 286 | font-size: 15pt; 287 | font-weight: 700; 288 | margin-bottom: 0; 289 | padding: .25cm 0; 290 | text-align: center; 291 | } 292 | 293 | #chapter { 294 | align-items: center; 295 | display: flex; 296 | height: 297mm; 297 | justify-content: center; 298 | page: chapter; 299 | } 300 | 301 | #typography section { 302 | display: flex; 303 | flex-wrap: wrap; 304 | margin: 1cm 0; 305 | } 306 | #typography section h4 { 307 | border-top: 1pt solid; 308 | flex: 1 25%; 309 | margin: 0; 310 | } 311 | #typography section h4 + * { 312 | flex: 1 75%; 313 | margin: 0; 314 | padding-left: .5cm; 315 | } 316 | #typography section p { 317 | text-align: justify; 318 | } 319 | #typography section ul { 320 | line-height: 2; 321 | list-style: none; 322 | } 323 | #typography section#small-caps p { 324 | font-variant: small-caps; 325 | } 326 | #typography section#ligatures dl { 327 | display: flex; 328 | flex-wrap: wrap; 329 | } 330 | #typography section#ligatures dl dt { 331 | font-weight: 400; 332 | width: 30%; 333 | } 334 | #typography section#ligatures dl dd { 335 | flex: 1 70%; 336 | margin: 0; 337 | padding: 0; 338 | } 339 | #typography section#ligatures .none { 340 | font-variant-ligatures: none; 341 | } 342 | #typography section#ligatures .common { 343 | font-variant-ligatures: common-ligatures; 344 | } 345 | #typography section#ligatures .discretionary { 346 | font-variant-ligatures: discretionary-ligatures; 347 | } 348 | #typography section#ligatures .contextual { 349 | font-variant-ligatures: contextual; 350 | } 351 | #typography section#numbers dl { 352 | display: flex; 353 | flex-wrap: wrap; 354 | } 355 | #typography section#numbers dl dt { 356 | font-weight: 400; 357 | width: 30%; 358 | } 359 | #typography section#numbers dl dd { 360 | flex: 1 70%; 361 | margin: 0; 362 | padding: 0; 363 | } 364 | #typography section#numbers #fractions { 365 | font-variant-numeric: diagonal-fractions; 366 | } 367 | #typography section#numbers #ordinals { 368 | font-variant-numeric: ordinal; 369 | } 370 | #typography section#numbers #slashed { 371 | font-variant-numeric: slashed-zero; 372 | } 373 | #typography section#numbers #super { 374 | font-variant-position: super; 375 | } 376 | #typography section#numbers #sub { 377 | font-variant-position: sub; 378 | } 379 | #typography section#figures dl { 380 | columns: 4; 381 | } 382 | #typography section#figures dl dt { 383 | font-weight: 400; 384 | } 385 | #typography section#figures dl dd { 386 | display: flex; 387 | margin: 0; 388 | padding: 0; 389 | } 390 | #typography section#figures dl dd ul { 391 | padding: 0 1em 0 0; 392 | } 393 | #typography section#figures #oldstyle { 394 | font-variant-numeric: oldstyle-nums; 395 | } 396 | #typography section#figures #tabular { 397 | font-variant-numeric: tabular-nums; 398 | } 399 | #typography section#figures #old-tabular { 400 | font-variant-numeric: oldstyle-nums tabular-nums; 401 | } 402 | -------------------------------------------------------------------------------- /report/report.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |46 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam volutpat faucibus vestibulum. 47 | Mauris varius orci quam. Nam dui mauris, dictum at elementum at, mollis pulvinar est. 48 | Nunc lobortis pharetra erat, id rutrum lorem malesuada in. 49 |
50 |51 | Phasellus id nisl nec arcu tempor ultricies non id tortor. Mauris ex nibh, viverra vitae nisi eget, placerat pharetra est. 52 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed id maximus diam. Cras molestie nisl vitae iaculis convallis. 53 | Vivamus molestie vitae nisl sed interdum. Nunc aliquam massa rhoncus finibus convallis. 54 | Vivamus sed vulputate risus. Nunc dignissim magna velit, quis lobortis ex volutpat eget. 55 | Proin dictum mauris condimentum consequat faucibus. 56 |
57 |58 | Duis maximus mauris ac purus eleifend, sit amet blandit nulla lacinia. 59 | Maecenas massa dolor, suscipit at erat eget, maximus dignissim dolor. Praesent consectetur maximus libero, eu facilisis ligula finibus et. 60 | Cras rhoncus eros sit amet lorem auctor, a efficitur leo tincidunt. Sed viverra interdum odio, eget pulvinar tortor blandit lacinia. 61 | Praesent consequat congue commodo. Phasellus eu massa feugiat, imperdiet nisi a, sagittis ipsum. 62 |
63 |64 | Suspendisse et gravida nunc. Quisque at felis nisl. Nam eget efficitur nunc. 65 | Vivamus fermentum imperdiet massa, porttitor elementum mauris faucibus scelerisque. 66 | Pellentesque ut metus tortor. Fusce vulputate ex at turpis consectetur, in vestibulum odio placerat. 67 | Suspendisse tempor sapien rutrum, cursus sem a, tincidunt odio. Sed in consequat augue. 68 | Proin finibus felis neque, ac hendrerit lorem consequat nec. 69 |
70 |71 | Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce quam mi, dapibus et augue sit amet, porttitor volutpat orci. 72 | Vestibulum ac ligula at justo placerat pulvinar vel non velit. Duis vel iaculis nibh, non tristique lectus. 73 | Phasellus vel ex bibendum, accumsan tellus a, commodo nisi. 74 |
75 |76 | Mauris tincidunt dolor ligula, et egestas lectus rutrum consectetur. Donec ac ex mollis, vestibulum libero in, convallis risus. 77 |
78 |89 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mi ante, tincidunt quis vehicula 90 | sed, vehicula sed augue. Cras eget ante turpis. 91 |
92 |97 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mi ante, tincidunt quis vehicula 98 | sed, vehicula sed augue. Cras eget ante turpis. 99 |
100 |105 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mi ante, tincidunt quis vehicula 106 | sed, vehicula sed augue. Cras eget ante turpis. 107 |
108 |113 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mi ante, tincidunt quis vehicula 114 | sed, vehicula sed augue. Cras eget ante turpis. 115 |
116 |121 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi mi ante, tincidunt quis vehicula 122 | sed, vehicula sed augue. Cras eget ante turpis. 123 |
124 |€135
133 |€175
144 |€200
157 |181 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut 182 | pulvinar dolor ac orci finibus elementum. Praesent 183 | sit amet ligula turpis. 184 |
185 |190 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut pulvinar 191 | dolor ac orci finibus elementum. 192 |
193 |1257797706706
33 |