 |
 |
|
 |
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
For those who are interested in using 3D-text:
I've made a simple, rude tool that creates soft text-objects. You type in some
text, press the button and out comes an include-file with the code. It takes a
while to parse, but perhaps you can use it as a starting-point.
It's Windows95/98 only, sorry for the other OSsies.
You can download it at http://www.xs4all.nl/~remcodek/zip/softtext.zip
If you have any comments please let me know. Perhaps I'll even change it around
a bit (initially I wrote the thing for my own use).
Regards,
Remco
(I'll post an example in the binaries-group)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Nieminen Mika wrote:
>
> Remco de Korte <rem### [at] xs4all nl> wrote:
> : You type in some
> : text, press the button and out comes an include-file with the code.
>
> : It's Windows95/98 only
>
> I don't want to be rude, but I just can't understand why.
> Why is it so difficult to make the same thing with ANSI C or C++, compilable
> in any system? It just reads text and outputs text to a file. It needs
> no system dependant features. It's extremely simple to make this kind of
> program with ANSI C (I bet it's a lot simpler than making a windows program).
> So why it has to be win95 only? Why it has to include system-dependant
> code which does nothing? Why?
> Just wondering.
>
Because I'm just a simple soul who never got round to leraning how to use C, no
matter what version.
Besides, when considering whether I should make a DOS-version I realized I'd
have to wade through a whole bunch of docs to find out how to use
TrueType-fonts.
It was just an afternoon-project which I needed for some simple thing and which
turned out to work better then I had hoped for. I thought perhaps someone else
could do something nice with it, so I put it online. Sorry I excluded the
non-Windows users or, for that matter, the people who don't have computer at
all.
But you're free to port it to whatever platform you like. You probably won't
even need my source-code because it's ridiculously simple. Be my guest.
Meanwhile, next time I'll take your remarks into consideration.
Regards,
Remco
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Nieminen Mika wrote:
>
> Remco de Korte <rem### [at] xs4all nl> wrote:
> : You type in some
> : text, press the button and out comes an include-file with the code.
>
> : It's Windows95/98 only
>
> I don't want to be rude, but I just can't understand why.
> Why is it so difficult to make the same thing with ANSI C or C++, compilable
> in any system? It just reads text and outputs text to a file. It needs
> no system dependant features. It's extremely simple to make this kind of
> program with ANSI C (I bet it's a lot simpler than making a windows program).
> So why it has to be win95 only? Why it has to include system-dependant
> code which does nothing? Why?
> Just wondering.
As for my point,(wintrees) I use a windows executeable since I find it
far easier to create a working GUI for my programs in delphi, the code
si DOS compatible, but it was hard to understand the program. I know,
java, fuck that(excuse my language) it doesn't work good enough for me.
it messes up too much, and even the examples have bugs in it preventing
me from using any GUI made in JAVA2 and run "as is".
Oh, as for C code, I don't have enough HDD for a c compiler. Good enough
reason? (I _do_ know ansi C, but since I don't use it for regular
development of programs, I don't have it on my HDD.) And I'd be back in
the same place as in DOS pascal, the gui prob. And , no, don't tell me
to "crap the gui" use a command line argument. I had it, and threw it
away, too many numbers ot remember without the virtual consoles of
linux. sowwy there.
You can get a pascal version of my prog. and then compile it yourself in
Linux, I think there is a pascal compiler that can take standard pascal.
Well, my arguments against using ansi C.
//Spider
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Remco,
Thanks. I like it just as it is ...
Jim
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Nieminen Mika wrote:
>
> Spider <spi### [at] bahnhof se> wrote:
> :> Remco de Korte <rem### [at] xs4all nl> wrote:
> :> : You type in some
> :> : text, press the button and out comes an include-file with the code.
>
> : As for my point,(wintrees) I use a windows executeable since I find it
> : far easier to create a working GUI for my programs
>
> Please read more carefully what I say.
> I wasn't saying "make ALL programs in ANSI C, no matter if they need a
> GUI or not". No. What I said was "why THIS program in particular had to be
> done with non-portable code when it doesn't need any GUI?".
>
> But I received a very convincing answer: Reading true-type fonts is a lot
> easier. That's a good point.
>
> --
> main(i){char*_="BdsyFBThhHFBThhHFRz]NFTITQF|DJIFHQhhF";while(i=
> *_++)for(;i>1;printf("%s",i-70?i&1?"[]":" ":(i=0,"\n")),i/=2);} /*- Warp. -*/
Hey man, you made your point. I've taken the thing offline so everone who is
still interested can mail me and I'll explain the way it works so you can write
your own version on whatever platform you like.
Remco
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Nieminen Mika wrote:
>
> Remco de Korte <rem### [at] xs4all nl> wrote:
> : Nieminen Mika wrote:
> :> But I received a very convincing answer: Reading true-type fonts is a lot
> :> easier. That's a good point.
>
> : Hey man, you made your point. I've taken the thing offline so everone who is
> : still interested can mail me and I'll explain the way it works so you can write
> : your own version on whatever platform you like.
>
> It seems to be a very common problem. I mean people not reading what one
> says.
It's hard to read what one says.
Besides the question was no problem, the way it was put was. Repeatingly asking
WHY seems like there's something very seriously going wrong, while I was just
trying to contribute. What you could have offered as a critique was that there
was a small bug in the program and that it could use some extra functionality.
So, you play with your thing and I'll play with mine and as far as I'm concerned
that's the end of it. I could do without your way of making remarks.
> I repeat: Your answer was very convincing and now I know why is it so much
> easier to make it a win95 program.
> I didn't think
oh, well, never mind...
Remco
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Remco de Korte <rem### [at] xs4all nl> wrote:
: Besides the question was no problem, the way it was put was. Repeatingly asking
: WHY seems like there's something very seriously going wrong, while I was just
: trying to contribute. What you could have offered as a critique was that there
: was a small bug in the program and that it could use some extra functionality.
: So, you play with your thing and I'll play with mine and as far as I'm concerned
: that's the end of it. I could do without your way of making remarks.
I apologized. I'm sorry, seriously. Sometimes I'm very impulsive and don't
stop to think if this will offend someone. Of course I could have asked the
same question more politely. My intention was not to attack you personally.
I just wondered (in a very unpolite manner, I know) and I got a very good
answer.
Please forgive my stupidity everyone reading this. I just wasted lots of
resources writing useless articles.
--
main(i){char*_="BdsyFBThhHFBThhHFRz]NFTITQF|DJIFHQhhF";while(i=
*_++)for(;i>1;printf("%s",i-70?i&1?"[]":" ":(i=0,"\n")),i/=2);} /*- Warp. -*/
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Despite the current misunderstandings and the hurt feelings I think I
have something that is maybe of interest!
Have a look at
http://www.freetype.org/freetype.htm
They have a library in ANSI C for True Type Fonts.
Marc
--
Marc Schimmler
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Marc Schimmler schrieb in Nachricht
<36BAB25D.676AF250@ica.uni-stuttgart.de>...
>Despite the current misunderstandings and the hurt feelings I think I
>have something that is maybe of interest!
>
>Have a look at
>
>http://www.freetype.org/freetype.htm
>
>They have a library in ANSI C for True Type Fonts.
Thanks for the tip! I'll have a look at it. I could try to make an ANSI-C
command line utility for this, using the Freetype libs. I normally convert
from C to Object Pascal, but it would be an interesting project to try the
opposite. I know, they also have Pascal libs, but I'm afraid (Object) Pascal
is not as very wide spread as ANSI-C is <g>.
To Nieminen: the tool just plots the string you enter onto a bitmap, than
uses the pixels of this bitmap to produce a huge blob: a sphere for every
pixel, the size depending on the distance from the edges (I'm not telling
secrets here, anyone can guess this from looking into the test.inc file,
generated by Remco's program).
The idea is really brillant. BTW I'm amazed by the parsing speed. I had a
test.inc of more than 4000 spheres in 1 blob and it parsed in 4 seconds (on
my old P90 48MB).
Remco's program needs Windows to plot the given string onto the bitmap.
Perhaps the freetype lib could do the same.
Of course, I'll have to ask Remco if I can use his idea. Herewith I do this
now.
Remco. Please answer this.
--
Rudy Velthuis
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
>Remco's program needs Windows to plot the given string onto the bitmap.
>Perhaps the freetype lib could do the same.
Time to write a macro to do it with the superpatch and no external
code. Parse time would probably suffer, though... :)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ron Parker schrieb in Nachricht <36bb606c.0@news.povray.org>...
>>Remco's program needs Windows to plot the given string onto the bitmap.
>>Perhaps the freetype lib could do the same.
>
>Time to write a macro to do it with the superpatch and no external
>code. Parse time would probably suffer, though... :)
If you can write a #macro to write a ttf to a bitmap and then read the
individual pixels, be my guest. Of course you could make an orthographic
picture of a ttf text, save it as .tga and then use this to read the pixels,
but you'd really have to wait a bit for a result.
Better use some ANSI-C thingy: simple enough, if you can use the Freetype
lib, I think.
I'll give it a try. I downloaded DJGPP for DOS and will install it and try
the Freetype libs. Keeps me off the street (like a friend's mother always
used to say, when we were still younger).
--
Rudy Velthuis
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Sat, 6 Feb 1999 13:34:43 +0100, "Rudy Velthuis" <rve### [at] gmx net>
wrote:
>
>Ron Parker schrieb in Nachricht <36bb606c.0@news.povray.org>...
>>>Remco's program needs Windows to plot the given string onto the bitmap.
>>>Perhaps the freetype lib could do the same.
>>
>>Time to write a macro to do it with the superpatch and no external
^^^^^^^^^^^^^^^^^^^
>>code. Parse time would probably suffer, though... :)
>
>
>If you can write a #macro to write a ttf to a bitmap and then read the
>individual pixels, be my guest.
No need for a bitmap. The superpatch has the trace( ) function and
the min_extent() and max_extent() functions. You just loop over x and
y within the bounds of the text and every time you hit the text you
make a blob component. piece o' cake.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Wed, 03 Feb 1999 03:57:59 +0100, Remco de Korte
<rem### [at] xs4all nl> wrote:
>For those who are interested in using 3D-text:
>I've made a simple, rude tool that creates soft text-objects. You type in some
>text, press the button and out comes an include-file with the code. It takes a
>while to parse, but perhaps you can use it as a starting-point.
>It's Windows95/98 only, sorry for the other OSsies.
>You can download it at http://www.xs4all.nl/~remcodek/zip/softtext.zip
>If you have any comments please let me know. Perhaps I'll even change it around
>a bit (initially I wrote the thing for my own use).
>
>Regards,
>
>Remco
>
>(I'll post an example in the binaries-group)
>
My download manager says there's no such URL. My browser, too. What
happened?
Peter
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ronald L. Parker schrieb in Nachricht <36bdd3b7.396621@news.povray.org>...
>On Sat, 6 Feb 1999 13:34:43 +0100, "Rudy Velthuis" <rve### [at] gmx net>
>wrote:
>
>>
>>Ron Parker schrieb in Nachricht <36bb606c.0@news.povray.org>...
>>>>Remco's program needs Windows to plot the given string onto the bitmap.
>>>>Perhaps the freetype lib could do the same.
>>>
>>>Time to write a macro to do it with the superpatch and no external
> ^^^^^^^^^^^^^^^^^^^
>>>code. Parse time would probably suffer, though... :)
>>
>>
>>If you can write a #macro to write a ttf to a bitmap and then read the
>>individual pixels, be my guest.
>
>No need for a bitmap. The superpatch has the trace( ) function and
>the min_extent() and max_extent() functions. You just loop over x and
>y within the bounds of the text and every time you hit the text you
>make a blob component. piece o' cake.
No, not really. Remco's program uses different strengths for the edges,
depending on the gray (or in fact, only the red component) values created by
antialiasing as Windows does when plotting text (most users will have this
by now, although it is not a standard setup of Windows). So a lighter value
will result in a less strong blob component. That's how he creates very soft
text.
I'm currently working on a simple ANSI-C program (using DJGPP and the
FreeType 1.2 lib) which will do something similar. As soon as I've got a
working version I'll post it in the appropriate binaries newsgroup
(binaries.utilities), source included. I'm thinking of enhancing it a bit
(transformations, different types of components, etc.). As long as I have a
pixel map of the text, it's very simple to do something interesting with it.
Suggestions are welcome.
I use ANSI-C because I want the program to be as platform independent as
possible. The freetype lib and the gnu compiler are available for many
platforms. I would normally use (Windows only) Delphi, like Remco did.
--
Rudy Velthuis
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Fri, 12 Feb 1999 05:16:25 GMT, pet### [at] usa net (Peter Popov)
wrote:
[snip]
>My download manager says there's no such URL. My browser, too. What
>happened?
>
It got pulled because the poster got jumped on for producing a
non-portable utility. Oh well - try e-mailing him (I have) - maybe
he'll give us copies?
Cheers,
Cliff Bowman
Why not pay my 3D Dr Who site a visit at
http://www.geocities.com/Area51/Dimension/7855/
PS change ".duffnet" to ".net" if replying via e-mail
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Cliff Bowman schrieb in Nachricht <36c5c82b.60144781@news.povray.org>...
>On Fri, 12 Feb 1999 05:16:25 GMT, pet### [at] usa net (Peter Popov)
>wrote:
>[snip]
>>My download manager says there's no such URL. My browser, too. What
>>happened?
>>
>It got pulled because the poster got jumped on for producing a
>non-portable utility. Oh well - try e-mailing him (I have) - maybe
>he'll give us copies?
He propably will, if there aren't too many requests.
And I think it was rather unfair, that he got jumped on. He made a quick
hack for himself, thought it might be useful and decided to share it. People
didn't like the interface and didn't like the language (Delphi).
BTW, It propably also got pulled because I offered to do a port of the main
program to ANSI-C, to which he agreed. Please be patient for a few days
more, until I get to grips with the FreeType library.
It will be command-line, but the output will be very similar (differences
depend on the differences in Truetype plotting between FreeType and
Windows). Remco (the original poster) also had some ideas for enhancements,
which I will try to introduce a little later on.
--
Rudy Velthuis
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Sat, 13 Feb 1999 20:52:58 +0100, "Rudy Velthuis"
<rve### [at] gmx net> wrote:
>
>Cliff Bowman schrieb in Nachricht <36c5c82b.60144781@news.povray.org>...
[snip]
>>It got pulled because the poster got jumped on for producing a
>>non-portable utility. Oh well - try e-mailing him (I have) - maybe
>>he'll give us copies?
>
>He propably will, if there aren't too many requests.
>
>And I think it was rather unfair, that he got jumped on. He made a quick
>hack for himself, thought it might be useful and decided to share it. People
>didn't like the interface and didn't like the language (Delphi).
Yeah - I NEARLY extended my explanation along those lines except... I
*think* the jumper and jumpee have settled their differences and
understand each other better. I'm all for doing quick lash-ups to
overcome a problem - I've been known to do it myself more frequently
than not. From my POV anyone who makes a lash-up available for free is
doing a good thing. those who use a different platform to the author
may disagree - but if the idea is popular enough there's always the
possibility (as with this case) that someone with more
"cross-platform" abilities will do a conversion.
>BTW, It propably also got pulled because I offered to do a port of the main
>program to ANSI-C, to which he agreed. Please be patient for a few days
>more, until I get to grips with the FreeType library.
Aha! So you're to blame! Die die - oh hang on, wrong group. Ahem. If
you can, please make a DOS/Windoze binary available (Windoze being
what I run) as we don't all have compilers to hand :)
>It will be command-line, but the output will be very similar (differences
>depend on the differences in Truetype plotting between FreeType and
>Windows). Remco (the original poster) also had some ideas for enhancements,
>which I will try to introduce a little later on.
Sounds good. Especially enhancements (I always like enhancements) As
for command-line - well, most of us have been there already and should
be able to cope.
Cheers,
Cliff Bowman
Why not pay my 3D Dr Who site a visit at
http://www.geocities.com/Area51/Dimension/7855/
PS change ".duffnet" to ".net" if replying via e-mail
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Cliff Bowman schrieb in Nachricht <36c71552.77149607@news.povray.org>...
>On Sat, 13 Feb 1999 20:52:58 +0100, "Rudy Velthuis"
><rve### [at] gmx net> wrote:
>
>>
>>Cliff Bowman schrieb in Nachricht <36c5c82b.60144781@news.povray.org>...
>[snip]
>>>It got pulled because the poster got jumped on for producing a
>>>non-portable utility. Oh well - try e-mailing him (I have) - maybe
>>>he'll give us copies?
>>
>>He propably will, if there aren't too many requests.
>>
>>And I think it was rather unfair, that he got jumped on. He made a quick
>>hack for himself, thought it might be useful and decided to share it.
People
>>didn't like the interface and didn't like the language (Delphi).
>
>Yeah - I NEARLY extended my explanation along those lines except... I
>*think* the jumper and jumpee have settled their differences and
>understand each other better. I'm all for doing quick lash-ups to
>overcome a problem - I've been known to do it myself more frequently
>than not. From my POV anyone who makes a lash-up available for free is
>doing a good thing. those who use a different platform to the author
>may disagree - but if the idea is popular enough there's always the
>possibility (as with this case) that someone with more
>"cross-platform" abilities will do a conversion.
>
>>BTW, It propably also got pulled because I offered to do a port of the
main
>>program to ANSI-C, to which he agreed. Please be patient for a few days
>>more, until I get to grips with the FreeType library.
>
>Aha! So you're to blame! Die die - oh hang on, wrong group. Ahem. If
>you can, please make a DOS/Windoze binary available (Windoze being
>what I run) as we don't all have compilers to hand :)
See the end of this reply.
BTW the compiler I'm using is DJGPP, which is freeware, and falls under the
GNU Copyleft (or whatever they call it). I used GNU C because this is
freeware and widely available. I could have used GNU Pascal (Pascal is my
favorite language), but I'm afraid not many people would be able to use it.
>>It will be command-line, but the output will be very similar (differences
>>depend on the differences in Truetype plotting between FreeType and
>>Windows). Remco (the original poster) also had some ideas for
enhancements,
>>which I will try to introduce a little later on.
>
>
>Sounds good. Especially enhancements (I always like enhancements) As
>for command-line - well, most of us have been there already and should
>be able to cope.
I could easily make a Windows version with all the bells and whistles you
could ever imagine (brag, boast, <g>). In fact the original is a Windows
version in my favorite language (Delphi), so I'd just have to tidy up the
code and the user interface a little, add a few enhancements and bingo.
The meaning of my excercise was, to create a mostly OS-independent version
of his tool (and to get used to using C and command line again), as this
was, what was asked for. I chose GNU (DJGPP is a GNU port for DOS) and the
FreeType lib, which are both available for many platforms. For DJGPP there
is also a nice IDE, called RHIDE, very similar to Turbo C 3.1.
If wanted (and allowed by Remco) I can also make a Windows(32) version,
using Delphi, later on.
So what I will distribute in a few days (yes!), is a DOS standalone (using
the go32 DPMI server) and the complete sources, so people on other platforms
can build their own versions, if they want to.
The enhancements will come by and by (I hope). I just need some ideas!! One
thing would be to make the blob elements irregular in size, producing a kind
of warty or bubbly effect; another thing would be to use any kind of shape
for the elements (with or without a blob as a parent), e.g. to produce a
text made of bubbles, nails, etc.
What I really need are good suggestions!
--
Rudy Velthuis
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Tue, 16 Feb 1999 13:58:41 +0100, "Rudy Velthuis"
<rve### [at] gmx net> wrote:
>
>Cliff Bowman schrieb in Nachricht <36c71552.77149607@news.povray.org>...
[snip]
>>
>>Sounds good. Especially enhancements (I always like enhancements) As
>>for command-line - well, most of us have been there already and should
>>be able to cope.
>
>I could easily make a Windows version with all the bells and whistles you
>could ever imagine (brag, boast, <g>). In fact the original is a Windows
>version in my favorite language (Delphi), so I'd just have to tidy up the
>code and the user interface a little, add a few enhancements and bingo.
>
>The meaning of my excercise was, to create a mostly OS-independent version
>of his tool (and to get used to using C and command line again), as this
>was, what was asked for. I chose GNU (DJGPP is a GNU port for DOS) and the
>FreeType lib, which are both available for many platforms. For DJGPP there
>is also a nice IDE, called RHIDE, very similar to Turbo C 3.1.
>
>If wanted (and allowed by Remco) I can also make a Windows(32) version,
>using Delphi, later on.
Better, I'd have thought, to go with the standard "C" code (all
Windoze users can manage the odd DOS app can't they?). Failing that a
Windoze-only "front end" as a seperate utility which calls the DOS
version? Better for keeping enhancements in line between different
OS's.
>So what I will distribute in a few days (yes!), is a DOS standalone (using
>the go32 DPMI server) and the complete sources, so people on other platforms
>can build their own versions, if they want to.
>
>The enhancements will come by and by (I hope). I just need some ideas!! One
>thing would be to make the blob elements irregular in size, producing a kind
>of warty or bubbly effect; another thing would be to use any kind of shape
>for the elements (with or without a blob as a parent), e.g. to produce a
>text made of bubbles, nails, etc.
>
>What I really need are good suggestions!
>
Well I dunno about "good suggestions" but... How about instead of a
single spherical blob the option for each pixel to be represented by a
collection of blob spheres. Random sizes and positions from a central
point, with random scaling to each sphere. The final result ought to
look something like text made from rice crispies.
Using vertical/horizontal cylinders instead of spheres might (with a
bit of work) give a rippling effect reminiscent of text xut out of
corrugated cardboard.
Ahhh... if you can find the edges of the text (bearing in mind the
original used a bitmap rather than the font outlines per se - so the
outline would need "re-creating" or used directly without making a
bitmap) you could do an open framework - rather like scaffolding with
the 3D text being "empty" and, perhaps, joints wherever there are
corners (rather than bends).
Following on from the above you could change the joints to lights so
that, if stuck in a fox and with media attenuation on (hey I don't
actually KNOW POv I just try and hack scenes out) the text would be
visible as beams of light. Curves "S" etc. would be a bit tricky
though...
If you get around the curve problem (break it up into lots of small
straight lines? I dunno) you could add an animation feature using,
say, a variable called "softextclock" which illuminates just a
specific line starting at top left front (say) of each leter and
moving in an orderly manner through the remaining segments. Ought to
look... interesting... (or crap).
Likewise the earlier "rice crispies" idea could be animated with
either shifting or scaling of the spheres. Could look odd - especially
if you find a way to make a sphere "pop" interestingly (so it could
look a bit like buubles emanating from within and popping when they
hit the surface).
That's about it for now. Should be about six months work of naff ideas
there, somewhere.
Cheers,
Cliff Bowman
Why not pay my 3D Dr Who site a visit at
http://www.geocities.com/Area51/Dimension/7855/
PS change ".duffnet" to ".net" if replying via e-mail
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|
 |