+++ /dev/null
-diff -r SDL_perl/Build.PL sdlperl/Build.PL
-1c1
-< #! perl -w
----
-> #!/usr/bin/env perl
-3,5c3,30
-< # Copyright (C) 2003 chromatic
-< # Copyright (C) 2004 David J. Goehrig
-< # Copyright (C) 2009 Kartik Thakore
----
-> # Build.PL
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-13d37
-< use YAML::Node;
-39c63
-< to => './SDL_perl.xs',
----
-> to => 'src/SDL_perl.xs',
-41,42c65,66
-< libraries => [qw( SDL SDL_image SDL_mixer SDL_net SDL_ttf SDL_gfx
-< png jpeg smpeg )],
----
-> libraries => [qw( SDL SDL_image SDL_mixer SDL_sound SDL_net SDL_ttf
-> SDL_gfx SDL_svg png jpeg smpeg )],
-47c71
-< to => 'SDL/OpenGL.xs',
----
-> to => 'src/SDL/OpenGL.xs',
-54c78
-< to => 'SDL/SFont.xs',
----
-> to => 'src/SDL/SFont.xs',
-72a97,100
-> SDL_sound => {
-> define => 'HAVE_SDL_SOUND',
-> header => 'SDL_sound.h'
-> },
-84a113,116
-> SDL_svg => {
-> define => 'HAVE_SDL_SVG',
-> header => 'SDL_svg.h'
-> },
-110a143,144
-> print "[Build.PL] arch $arch\n";
->
-118,120c152,157
-< my $defines = $arch->build_defines( \%libraries, $build_systems );
-< my $includes = $arch->build_includes( \%libraries, $build_systems );
-< my $links = $arch->build_links( \%libraries, $build_systems );
----
-> my $defines = $arch->build_defines( \%libraries, $build_systems );
-> my $includes = $arch->build_includes( \%libraries, $build_systems );
-> my $links = $arch->build_links( \%libraries, $build_systems );
-> my $c_sources = $arch->build_c_sources( \%libraries, $build_systems );
-> my $c_source = $arch->build_c_source( \%libraries, $build_systems );
-> my $install_base = $arch->build_install_base( \%libraries, $build_systems );
-124a162
->
-126d163
-< module_name => 'SDL',
-139c176,177
-< c_source => 'src',
----
-> c_source => $c_source,
-> c_sources => $c_sources,
-141a180
-> install_base => $install_base
-diff -r SDL_perl/CHANGELOG sdlperl/CHANGELOG
-2,9d1
-< * Aug 2 2009 Kartik Thakore
-< - Added patches
-< - Verified and Tested patches
-< - Clean bugs
-<
-< * Mar 3 2006 Tels 77 Tests
-< - Color.pm: add rgb(), and make new($r,$g,$b) work for speed
-< - add ColorRGB() to src/SDL.xs
-11c3,24
-< * Oct 4 2004 David J. Goehrig <dgoehrig@cpan.org>
----
-> * Jul 8 2006 David J. Goehrig <dgoehrig@cpan.org>
-> - finished embedding data in example scripts
-> - fixed Mac OS X file associations
->
-> * Mar 15 2006 David J. Goehrig <dgoehrig@cpan.org>
-> - fixed OpenGL examples to work under MacOS X using the SDL Perl.app bundle
->
-> * Oct 12 2005 David J. Goehrig <dgoehrig@cpan.org>
-> - Fixed bug where SDL::App frees underlying Surface via DESTROY
-> - Added SDL_svg support
-> - cleaned up SDL_gfx support in SDL.xs
-> - cleaned up smpeg support in SDL.xs
-> - Added more SDL_sound support
-> - Added basic SDL_RWops support (TODO - perl callback for user defined)
->
-> * Oct 6 2005 David J. Goehrig <dgoehrig@cpan.org>
-> - Changed constructors to die upon invalid initialization
->
-> * Oct 5 2005 David J. Goehrig <dgoehrig@cpan.org>
-> - Updated the copyright notices as per the LGPL guidelines
->
-> * Oct 4 2005 David J. Goehrig <dgoehrig@cpan.org>
-diff -r SDL_perl/META.yml sdlperl/META.yml
-3c3
-< version: 2.1.3
----
-> version: 2.2.0
-14c14
-< version: 2.1.3
----
-> version: 2.2.0
-49,50d48
-< SDL::TTFont:
-< file: lib/SDL/TTFont.pm
-61,62d58
-< SDL::Tutorial::Drawing:
-< file: lib/SDL/Tutorial/Drawing.pm
-64a61,62
-> SDL::Tutorial:Drawing:
-> file: lib/SDL/Tutorial/Drawing.pm
-66a65,66
-> SDL:TTFont:
-> file: lib/SDL/TTFont.pm
-Only in sdlperl/: MacOSX
-diff -r SDL_perl/README sdlperl/README
-1c1
-< README for SDL_Perl-2.2
----
-> README for SDL_Perl-2.2.0
-3,4c3
-< First step is to make SDL perl pass all tests in
-< t/.
----
-> What's New in 2.2.0:
-6c5,9
-< I will add these as a issue.
----
-> SDL_Perl-2.2.0 adds support for a few new modules, fixes a few more
-> bugs, and improves the error handling of the object layer. Additional
-> support for SDL_sound, SDL_svg, and SDL_vnc has been added. In the
-> OO layer, all constructors now die when they fail to construct an object
-> with a valid underlying datastructure pointer.
-8,12c11
-< Simple Run:
-< perl Build.PL
-< perl Build
-< perl Build test
-< perl Build install
----
-> Prerequisites:
-14c13,14
-< There are more test scripts in test/
----
-> SDL Perl recommends installing the following libraries available
-> from http://www.libsdl.org/ prior to installing:
-16c16,71
-< Disclaimer: This might be moved to CPAN when I get access
----
-> SDL-1.2.8
-> smpeg-0.4.5
-> SDL_image-1.2.4
-> SDL_mixer-1.2.6
-> SDL_sound-1.0.1
-> SDL_net-1.2.5
-> SDL_gfx-2.0.13
-> SDL_ttf-2.0.7
-> SDL_svg-1.1.9
-> SDL_vnc-1.0.0
->
-> Additionally the following Perl modules should be installed:
->
-> Module-Build-0.22
-> Test-Simple-0.62
->
-> Installation:
->
-> perl Build.PL
-> ./Build
-> ./Build test
-> ./Build install
->
-> The build process will use the new Module::Build facility
-> to autodetect and build SDL Perl for your platform. If
-> the build fails please forward bugs to sdl-devel@perl.org.
->
-> Documentation:
->
-> Each module now includes its own documentation, and
-> is accessible through perldoc. Additional tutorials,
-> code, and tips can be found at the website:
->
-> http://sdl.perl.org
->
-> Online documentation and tutorials are available through
-> perldoc module.
->
-> Contributing:
->
-> Anyone wishing to contribute modules, sprite engines, documentation,
-> and anything else that others might find useful, please join
-> the mailing list:
->
-> sdl-devel@perl.org
->
-> This is a mailing list for those interested in SDLperl development,
-> both as an applications developer, and as a core contributor.
->
-> I am always more than happy to take patches, bug reports, and
-> helpful suggestions. It is feedback, both good and poor, that
-> keeps projects like this going.
->
-> Enjoy,
->
-> David J. Goehrig <dgoehrig@cpan.org>
-18,19d72
-< kthakore <thakore.kartik@gmail.com>
-< 1 August 2009
-diff -r SDL_perl/TODO sdlperl/TODO
-3a4,8
-> o fix OpenGL build without glu.h
-> o fix openFile: support on Mac (SDL patch)
-> o add Windows application bundle support
-> o add Linux application bundle support
-> o add embedded media module
-Only in sdlperl/: _build
-Only in sdlperl/: blib
-diff -r SDL_perl/lib/SDL/App.pm sdlperl/lib/SDL/App.pm
-1c1
-< # App.pm
----
-> #!/usr/bin/env perl
-3c3
-< # The application object, sort of like a surface
----
-> # App.pm
-5,6c5
-< # Copyright (C) 2000,2002,2003,2004 David J. Goehrig
-< # Copyright (C) 2009 Kartik Thakore
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-7a7,30
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-17a41,44
-> sub DESTROY {
->
-> }
->
-30c57
-< -asyncblit -init
----
-> -asyncblit
-33,36c60
-< # SDL_INIT_VIDEO() is 0, so check defined instead of truth.
-< my $init = defined $options{-init} ? $options{-init} : SDL_INIT_EVERYTHING();
-<
-< SDL::Init($init);
----
-> SDL::Init(SDL::SDL_INIT_EVERYTHING());
-65c89
-< if ($f & SDL_OPENGL()) {
----
-> if ($f & SDL::SDL_OPENGL()) {
-67,75c91,99
-< SDL::GLSetAttribute(SDL_GL_RED_SIZE(),$r) if ($r);
-< SDL::GLSetAttribute(SDL_GL_GREEN_SIZE(),$g) if ($g);
-< SDL::GLSetAttribute(SDL_GL_BLUE_SIZE(),$b) if ($b);
-< SDL::GLSetAttribute(SDL_GL_ALPHA_SIZE(),$a) if ($a);
-<
-< SDL::GLSetAttribute(SDL_GL_RED_ACCUM_SIZE(),$ras) if ($ras);
-< SDL::GLSetAttribute(SDL_GL_GREEN_ACCUM_SIZE(),$gas) if ($gas);
-< SDL::GLSetAttribute(SDL_GL_BLUE_ACCUM_SIZE(),$bas) if ($bas);
-< SDL::GLSetAttribute(SDL_GL_ALPHA_ACCUM_SIZE(),$aas) if ($aas);
----
-> SDL::GLSetAttribute(SDL::SDL_GL_RED_SIZE(),$r) if ($r);
-> SDL::GLSetAttribute(SDL::SDL_GL_GREEN_SIZE(),$g) if ($g);
-> SDL::GLSetAttribute(SDL::SDL_GL_BLUE_SIZE(),$b) if ($b);
-> SDL::GLSetAttribute(SDL::SDL_GL_ALPHA_SIZE(),$a) if ($a);
->
-> SDL::GLSetAttribute(SDL::SDL_GL_RED_ACCUM_SIZE(),$ras) if ($ras);
-> SDL::GLSetAttribute(SDL::SDL_GL_GREEN_ACCUM_SIZE(),$gas) if ($gas);
-> SDL::GLSetAttribute(SDL::SDL_GL_BLUE_ACCUM_SIZE(),$bas) if ($bas);
-> SDL::GLSetAttribute(SDL::SDL_GL_ALPHA_ACCUM_SIZE(),$aas) if ($aas);
-77,79c101,103
-< SDL::GLSetAttribute(SDL_GL_DOUBLEBUFFER(),$db) if ($db);
-< SDL::GLSetAttribute(SDL_GL_BUFFER_SIZE(),$bs) if ($bs);
-< SDL::GLSetAttribute(SDL_GL_DEPTH_SIZE(),$d);
----
-> SDL::GLSetAttribute(SDL::SDL_GL_DOUBLEBUFFER(),$db) if ($db);
-> SDL::GLSetAttribute(SDL::SDL_GL_BUFFER_SIZE(),$bs) if ($bs);
-> SDL::GLSetAttribute(SDL::SDL_GL_DEPTH_SIZE(),$d);
-83,84c107,108
-< my $self = \SDL::SetVideoMode($w,$h,$d,$f);
-< $$self
----
->
-> my $self = \SDL::SetVideoMode($w,$h,$d,$f)
-103c127
-< $$self = SDL::SetVideoMode($w,$h,$bpp,$flags);
----
-> $self = \SDL::SetVideoMode($w,$h,$bpp,$flags);
-diff -r SDL_perl/lib/SDL/Cdrom.pm sdlperl/lib/SDL/Cdrom.pm
-1c1
-< # Cdrom.pm
----
-> #!/usr/bin/env perl
-3c3
-< # a SDL cdrom manipluation module
----
-> # Cdrom.pm
-5c5,28
-< # Copyright (C) 2000,2002 David J. Goehrig
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-diff -r SDL_perl/lib/SDL/Color.pm sdlperl/lib/SDL/Color.pm
-1c1
-< # Color.pm
----
-> #!/usr/bin/env perl
-3c3,28
-< # A package for manipulating SDL_Color *
----
-> # Color.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-5d29
-< # Copyright (C) 2002,2003,2004 David J. Goehrig
-15,18d38
-<
-< # called like SDL::Color->new($red,$green,$blue);
-< return bless \SDL::NewColor(@_), $class if (@_ == 3);
-<
-19a40
->
-39c60,61
-< bless $self, $class;
----
-> bless $self,$class;
-> return $self;
-61,65d82
-< sub rgb {
-< my $self = shift;
-< SDL::ColorRGB($$self,@_);
-< }
-<
-72,78c89,95
-< $SDL::Color::black = SDL::Color->new(0,0,0);
-< $SDL::Color::white = SDL::Color->new(255,255,255);
-< $SDL::Color::red = SDL::Color->new(255,0,0);
-< $SDL::Color::blue = SDL::Color->new(0,0,255);
-< $SDL::Color::green = SDL::Color->new(0,255,0);
-< $SDL::Color::purple = SDL::Color->new(255,0,255);
-< $SDL::Color::yellow = SDL::Color->new(255,255,0);
----
-> $SDL::Color::black = new SDL::Color -r => 0, -g => 0, -b => 0;
-> $SDL::Color::white = new SDL::Color -r => 255, -g => 255, -b => 255;
-> $SDL::Color::red = new SDL::Color -r => 255, -g => 0, -b => 0;
-> $SDL::Color::blue = new SDL::Color -r => 0, -g => 0, -b => 255;
-> $SDL::Color::green = new SDL::Color -r => 0, -g => 255, -b => 0;
-> $SDL::Color::purple = new SDL::Color -r => 255, -g => 0, -b => 255;
-> $SDL::Color::yellow = new SDL::Color -r => 255, -g => 255, -b => 0;
-92,93d108
-< $color = SDL::Color->new($red,$green,$blue); # fastest
-<
-101c116
-< representations.
----
-> representations, with the same interface as L<SDL::Color>.
-108,112d122
-< =head2 new ($r, $g, $b)
-<
-< C<SDL::Color::new> with three color values will construct both a SDL_Color
-< structure, and the associated object with the specified values.
-<
-130,136d139
-< =head2 rgb ( $red, $green, $blue )
-<
-< C<SDL::Color::rgb> is an accessor method for the red, green, and blue components
-< in one go. It will return a list of three values.
-<
-< The color value can be set by passing a byte value (0-255) for each color component.
-<
-146,147d148
-< Additions by Tels 2006.
-<
-150c151
-< L<perl> and L<SDL::Surface>.
----
-> L<perl> L<SDL::Surface>
-Only in sdlperl/lib/SDL: Config.pm
-diff -r SDL_perl/lib/SDL/Constants.pm sdlperl/lib/SDL/Constants.pm
-1c1
-< # SDL::Constants
----
-> #!/usr/bin/env perl
-3c3
-< # This is an automatically generated file, don't bother editing
----
-> # Constants.pm
-5c5,28
-< # Copyright (C) 2003,2004 David J. Goehrig <dgoehrig@cpan.org>
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-10,29d32
-< require Exporter;
-<
-< BEGIN {
-< #supposedly this crap isn't thread safe
-< #SelfLoader screws up and we can't be certain to read all DATA
-< #if this isn't loaded prior to creating new threads.
-<
-< if (! $threads::threads) {
-<
-< use SelfLoader;
-< #$SelfLoader::DEBUG=1;
-< }
-< };
-<
-< use vars qw(
-< @EXPORT
-< @ISA
-< );
-<
-< @ISA=qw(Exporter);
-63d65
-< MIX_CHANNEL_POST
-296a299,305
-> SDL_SVG_FLAG_DIRECT
-> SDL_SVG_FLAG_COMPOSITE
-> SDL_SAMPLEFLAG_NONE
-> SDL_SAMPLEFLAG_CANSEEK
-> SDL_SAMPLEFLAG_EOF
-> SDL_SAMPLEFLAG_ERROR
-> SDL_SAMPLEFLAG_EAGAIN
-298a308,311
-> for (@EXPORT) {
-> *{"SDL::" . $_} = *{$_};
-> *{"main::" . $_} = *{$_};
-> }
-300d312
-< __DATA__
-333d344
-< sub MIX_CHANNEL_POST {2}
-566a578,584
-> sub SDL_SVG_FLAG_DIRECT {0}
-> sub SDL_SVG_FLAG_COMPOSITE {1}
-> sub SDL_SAMPLEFLAG_NONE {0}
-> sub SDL_SAMPLEFLAG_CANSEEK {1}
-> sub SDL_SAMPLEFLAG_EOF {1<<29}
-> sub SDL_SAMPLEFLAG_ERROR {1<<30}
-> sub SDL_SAMPLEFLAG_EAGAIN {1<<31}
-567a586
-> 1;
-diff -r SDL_perl/lib/SDL/Cursor.pm sdlperl/lib/SDL/Cursor.pm
-0a1,2
-> #!/usr/bin/env perl
-> #
-3c5,28
-< # Copyright (C) 2000,2002 David J. Goehrig
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-17a43
-> die SDL::GetError() unless $$self;
-diff -r SDL_perl/lib/SDL/Event.pm sdlperl/lib/SDL/Event.pm
-1c1
-< # Event.pm
----
-> #!/usr/bin/env perl
-3c3
-< # A package for handling SDL_Event *
----
-> # Event.pm
-5,7c5,28
-< # Copyright (C) 2000,2001,2002 David J. Goehrig
-< # Copyright (C) 2009 Kartik Thakore
-< # see the file COPYING for terms of use
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-10a32
->
-45,50d66
-< sub peep($$$$)
-< {
-< my ($event, $numEvents, $action, $mask) = @_;
-< return SDL::PeepEvents($$event, $numEvents, $action, $mask);
-< }
-<
-231,232d246
-< Pumps the event loop, gathering events from the input devices.
-<
-235,249d248
-< Polls for currently pending events
-<
-< =head2 peep()
-<
-< Checks the event queue for messages and optionally returns them.
-<
-< If action is SDL_ADDEVENT, up to numevents events will be added to the back of the event queue.
-<
-< If action is SDL_PEEKEVENT, up to numevents events at the front of the event queue, matching mask, will be returned and will not be removed from the queue.
-<
-< If action is SDL_GETEVENT, up to numevents events at the front of the event queue, matching mask, will be returned and will be removed from the queue.
-<
-< The mask parameter is a bitwise OR of SDL_EVENTMASK(event_type), for all event types you are interested in
-<
-<
-diff -r SDL_perl/lib/SDL/Font.pm sdlperl/lib/SDL/Font.pm
-1c1
-< # Font.pm
----
-> #!/usr/bin/env perl
-3c3
-< # a SDL perl extension for SFont support
----
-> # Font.pm
-5c5,28
-< # Copyright (C) David J. Goehrig 2000,2002
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-8a32
->
-diff -r SDL_perl/lib/SDL/MPEG.pm sdlperl/lib/SDL/MPEG.pm
-0a1
-> #!/usr/bin/env perl
-2c3
-< # MPEG.pm
----
-> # MPEG.pm
-4c5,28
-< # A package for manipulating MPEG video
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-6d29
-< # Copyright (C) 2004 David J. Goehrig
-diff -r SDL_perl/lib/SDL/Mixer.pm sdlperl/lib/SDL/Mixer.pm
-1c1,28
-< # Mixer.pm
----
-> #!/usr/bin/env perl
-> #
-> # Mixer.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-3,6d29
-< # a SDL module for manipulating the SDL_mixer lib.
-< #
-< # Copyright (C) 2000,2002 David J. Goehrig
-< # Copyright (C) 2009 Kartik Thakore
-8a32
->
-127,132d150
-< sub mix_set_panning($$$$) {
-< my ($self,$channel,$left,$right) = @_;
-< return SDL::MixSetPanning($channel,$left,$right);
-< }
-<
-<
-212,216d229
-< sub mix_volume_chunk($$$) {
-< my ($self, $chunk, $volume) = @_;
-< return SDL::MixVolumeChunk($chunk, $volume);
-< }
-<
-396,403d408
-< =head2 sub mix_set_panning(channel,left,right)
-<
-< Set panning for mixer, Use MIX_CHANNEL_POST to process the postmix stream
-<
-< Volume for the left channel, range is 0(silence) to 255(loud)
-<
-< Volume for the right channel, range is 0(silence) to 255(loud)
-<
-406d410
-< Kartik Thakore
-diff -r SDL_perl/lib/SDL/Music.pm sdlperl/lib/SDL/Music.pm
-1c1
-< # Music.pm
----
-> #!/usr/bin/env perl
-3c3,28
-< # a SDL_mixer data module
----
-> # Music.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-5d29
-< # Copyright (C) 2000,2002 David J. Goehrig
-7a32
->
-15a41
-> die SDL::GetError() unless $$self;
-diff -r SDL_perl/lib/SDL/OpenGL/Constants.pm sdlperl/lib/SDL/OpenGL/Constants.pm
-1c1
-< # SDL::OpenGL::Constants
----
-> #!/usr/bin/env perl
-3c3,28
-< # This is an autogenerate file, don't bother editing
----
-> # Constants.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-5d29
-< # Copyright (C) 2003 David J. Goehrig <dave@sdlperl.org>
-9,19d32
-< require Exporter;
-<
-< use SelfLoader;
-< #$SelfLoader::DEBUG=1;
-<
-< use vars qw(
-< @EXPORT
-< @ISA
-< );
-<
-< @ISA=qw(Exporter);
-1588c1601,1605
-< __DATA__
----
-> for (@EXPORT) {
-> *{"SDL::" . $_} = *{$_};
-> *{"main::" . $_} = *{$_};
-> }
->
-3153a3171,3172
->
-> 1;
-diff -r SDL_perl/lib/SDL/OpenGL.pm sdlperl/lib/SDL/OpenGL.pm
-1c1
-< # SDL::OpenGL.pm
----
-> #!/usr/bin/env perl
-3c3
-< # A simplified OpenGL wrapper
----
-> # OpenGL.pm
-5c5,28
-< # Copyright (C) 2002, 2003, 2004 David J. Goehrig
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-19d41
-< use SDL::OpenGL::Constants;
-28,32c50
-< # export all GL constants
-< for (@SDL::OpenGL::Constants::EXPORT) {
-< push @EXPORT, $_;
-< }
-<
----
-> use SDL::OpenGL::Constants;
-diff -r SDL_perl/lib/SDL/Palette.pm sdlperl/lib/SDL/Palette.pm
-0a1
-> #!/usr/bin/env perl
-2c3
-< # Palette.pm
----
-> # Palette.pm
-4c5
-< # a module for manipulating SDL_Palette *
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-6c7,33
-< # Copyright (C) 2000,2002 David J. Goehrig
----
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-> # NB: there is no palette destructor because most of the time the
-> # palette will be owned by a surface, so any palettes you create
-> # with new, won't be destroyed until the program ends!
-25a53
-> die SDL::GetError() unless $$self;
-diff -r SDL_perl/lib/SDL/Rect.pm sdlperl/lib/SDL/Rect.pm
-0a1
-> #!/usr/bin/env perl
-2c3
-< # Rect.pm
----
-> # Rect.pm
-4c5,28
-< # A package for manipulating SDL_Rect *
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-6d29
-< # Copyright (C) 2003 David J. Goehrig
-8a32
->
-24a49
-> die SDL::GetError() unless $$self;
-diff -r SDL_perl/lib/SDL/SFont.pm sdlperl/lib/SDL/SFont.pm
-1c1
-< # SDL::OpenGL.pm
----
-> #!/usr/bin/env perl
-3c3,28
-< # SFont bitmat font support
----
-> # SFont.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-5d29
-< # Copyright (C) 2004 David J. Goehrig
-diff -r SDL_perl/lib/SDL/Sound.pm sdlperl/lib/SDL/Sound.pm
-0a1
-> #!/usr/bin/env perl
-2c3
-< # Sound.pm
----
-> # Sound.pm
-4c5,28
-< # a SDL_mixer data module
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-6d29
-< # Copyright (C) 2000,2002 David J. Goehrig
-15a39
-> die SDL::GetError() unless $$self;
-diff -r SDL_perl/lib/SDL/Surface.pm sdlperl/lib/SDL/Surface.pm
-0a1,12
-> #!/usr/bin/env perl
-> #
-> # Surface.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-2c14,25
-< # Surface.pm
----
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-4c27,28
-< # A package for manipulating SDL_Surface *
----
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-6d29
-< # Copyright (C) 2003 David J. Goehrig
-50,51c73
-< die "SDL::Surface::new failed. ", SDL::GetError()
-< unless ( $$self);
----
-> die SDL::GetError() unless $$self;
-diff -r SDL_perl/lib/SDL/TTFont.pm sdlperl/lib/SDL/TTFont.pm
-1c1
-< # TTFont.pm
----
-> #!/usr/bin/env perl
-3c3
-< # a SDL perl extension for SDL_ttf support
----
-> # TTFont.pm
-5c5,28
-< # Copyright (C) David J. Goehrig 2002
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-24c47
-< $self->{-mode} = $options{-mode} || $options{-m} || TEXT_SHADED();
----
-> $self->{-mode} = $options{-mode} || $options{-m} || SDL::TEXT_SHADED();
-89c112
-< SDL::TTFSetFontStyle($$self{-font},TTF_STYLE_NORMAL());
----
-> SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_NORMAL());
-94c117
-< SDL::TTFSetFontStyle($$self{-font},TTF_STYLE_BOLD());
----
-> SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_BOLD());
-99c122
-< SDL::TTFSetFontStyle($$self{-font},TTF_STYLE_ITALIC());
----
-> SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_ITALIC());
-105c128
-< SDL::TTFSetFontStyle($$self{-font},TTF_STYLE_UNDERLINE());
----
-> SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_UNDERLINE());
-110c133
-< $$self{-mode} = TEXT_SHADED();
----
-> $$self{-mode} = SDL::TEXT_SHADED();
-115c138
-< $$self{-mode} = TEXT_SOLID();
----
-> $$self{-mode} = SDL::TEXT_SOLID();
-120c143
-< $$self{-mode} = TEXT_BLENDED();
----
-> $$self{-mode} = SDL::TEXT_BLENDED();
-125c148
-< $$self{-mode} = UTF8_SHADED();
----
-> $$self{-mode} = SDL::UTF8_SHADED();
-130c153
-< $$self{-mode} = UTF8_SOLID();
----
-> $$self{-mode} = SDL::UTF8_SOLID();
-135c158
-< $$self{-mode} = UTF8_BLENDED();
----
-> $$self{-mode} = SDL::UTF8_BLENDED();
-140c163
-< $$self{-mode} = UNICODE_SHADED();
----
-> $$self{-mode} = SDL::UNICODE_SHADED();
-145c168
-< $$self{-mode} = UNICODE_SOLID();
----
-> $$self{-mode} = SDL::UNICODE_SOLID();
-150c173
-< $$self{-mode} = UNICODE_BLENDED();
----
-> $$self{-mode} = SDL::UNICODE_BLENDED();
-diff -r SDL_perl/lib/SDL/Timer.pm sdlperl/lib/SDL/Timer.pm
-1c1
-< # Timer.pm
----
-> #!/usr/bin/env perl
-3c3,28
-< # A package for manipulating SDL_Timer *
----
-> # Timer.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-5d29
-< # Copyright (C) 2002 David J. Goehrig
-7a32
->
-diff -r SDL_perl/lib/SDL/Tool/Font.pm sdlperl/lib/SDL/Tool/Font.pm
-0a1
-> #!/usr/bin/env perl
-2c3,28
-< # SDL::Tool::Font - format agnostic font tool
----
-> # Font.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-4d29
-< # Copyright (C) 2002 David J. Goehrig
-49c74
-< unless ($surface->isa('SDL::Surface'));
----
-> unless ($SDL::DEBUG && $surface->isa('SDL::Surface'));
-diff -r SDL_perl/lib/SDL/Tool/Graphic.pm sdlperl/lib/SDL/Tool/Graphic.pm
-0a1
-> #!/usr/bin/env perl
-2c3,28
-< # SDL::GraphicTool - zooming and rotating graphic tool
----
-> # Graphic.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-4,5d29
-< # Copyright (C) 2002 Russell E. Valentine
-< # Copyright (C) 2002 David J. Goehrig
-Only in sdlperl/lib/SDL/Tutorial: .svn
-diff -r SDL_perl/lib/SDL/Tutorial/Animation.pm sdlperl/lib/SDL/Tutorial/Animation.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Animation.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-3c33,34
-< use Pod::ToDemo <<'END_HERE';
----
-> use strict;
-> use SDL;
-diff -r SDL_perl/lib/SDL/Tutorial/Drawing.pm sdlperl/lib/SDL/Tutorial/Drawing.pm
-1c1,29
-< package SDL::Tutorial::Drawing;
----
-> #!/usr/bin/env perl
-> #
-> # Drawing.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
-3c31,34
-< use Pod::ToDemo <<'END_HERE';
----
-> package SDL::Tutorial:Drawing;
->
-> use strict;
-> use SDL;
-diff -r SDL_perl/lib/SDL/Tutorial/Images.pm sdlperl/lib/SDL/Tutorial/Images.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Images.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-3a34
-> use SDL;
-diff -r SDL_perl/lib/SDL/Tutorial.pm sdlperl/lib/SDL/Tutorial.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Tutorial.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-3c33,34
-< use Pod::ToDemo <<'END_HERE';
----
-> use strict;
-> use SDL;
-diff -r SDL_perl/lib/SDL/Video.pm sdlperl/lib/SDL/Video.pm
-0a1
-> #!/usr/bin/env perl
-2c3
-< # Video.pm
----
-> # Video.pm
-4c5,28
-< # A package for manipulating MPEG video
----
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-6d29
-< # Copyright (C) 2004 David J. Goehrig
-26a50
-> die SDL::GetError() unless $$self;
-diff -r SDL_perl/lib/SDL.pm sdlperl/lib/SDL.pm
-0a1
-> #!/usr/bin/env perl
-2c3,28
-< # Copyright (C) 2004 David J. Goehrig
----
-> # SDL.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-19,22d44
-< # reexport all SDL constants
-< for (@SDL::Constants::EXPORT) {
-< push @EXPORT,$_;
-< }
-26c48
-< $VERSION = '2.1.3';
----
-> $VERSION = '2.2.1';
-76d97
-<
-diff -r SDL_perl/lib/SDL_perl.pm sdlperl/lib/SDL_perl.pm
-0a1,12
-> #!/usr/bin/env perl
-> #
-> # SDL_perl.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-2c14,28
-< # Copyright (C) 2004 David J. Goehrig
----
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-diff -r SDL_perl/make/lib/SDL/Build/Cygwin.pm sdlperl/make/lib/SDL/Build/Cygwin.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Cygwin.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-diff -r SDL_perl/make/lib/SDL/Build/Darwin.pm sdlperl/make/lib/SDL/Build/Darwin.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Darwin.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-18,31c48,58
-<
-< '/Library/Frameworks/SDL.framework/Headers' => '../../lib',
-< '/Library/Frameworks/SDL_mixer.framework/Headers' => '../../lib',
-< '/Library/Frameworks/SDL_image.framework/Headers' => '../../lib',
-< '/Library/Frameworks/SDL_net.framework/Headers' => '../../lib',
-< '/Library/Frameworks/SDL_ttf.framework/Headers' => '../../lib',
-< '/Library/Frameworks/SDL_gfx.framework/Headers' => '../../lib',
-< '/Library/Frameworks/libogg.framework/Headers' => '../../lib',
-< '/Library/Frameworks/libvorbis.framework/Headers' => '../../lib',
-< '/Frameworks/libvorbisfile.framework/Headers' => '../../lib',
-< '/Library/Frameworks/libvorbisenc.framework/Headers' => '../../lib',
-< '../../include' => '../../lib',
-< '/System/Library/Frameworks/OpenGL.framework/Headers' =>
-< '/System/Library/Frameworks/OpenGL.framework/Libraries',
----
->
-> '/System/Library/Frameworks/SDL_mixer.framework/Headers' => '../../lib',
-> '/System/Library/Frameworks/SDL_image.framework/Headers' => '../../lib',
-> '/System/Library/Frameworks/SDL_ttf.framework/Headers' => '../../lib',
-> '/System/Library/Frameworks/libogg.framework/Headers' => '../../lib',
-> '/System/Library/Frameworks/libvorbis.framework/Headers' => '../../lib',
-> '/System/Library/Frameworks/libvorbisfile.framework/Headers' => '../../lib',
-> '/System/Library/Frameworks/libvorbisenc.framework/Headers' => '../../lib',
-> '../../include' => '../../lib',
-> '/System/Library/Frameworks/OpenGL.framework/Headers' =>
-> '/System/Library/Frameworks/OpenGL.framework/Libraries',
-35c62
-< sub build_defines
----
-> sub build_c_sources
-37,38c64,67
-< my $self = shift;
-< my $defines = $self->SUPER::build_defines(@_);
----
-> return [qw/
-> launcher.m
-> /];
-> }
-40c69,72
-< push @{$defines->{SDL}}, "-Ddarwin", "-DMACOSX";
----
-> sub build_c_source
-> {
-> return 'MacOSX';
-> }
-42c74,76
-< return $defines;
----
-> sub build_install_base
-> {
-> return "SDL Perl.app/Contents/Resources";
-43a78,94
->
-> sub build_bundle
-> {
-> $bundle_contents="SDL Perl.app/Contents";
-> system "mkdir -p \"$bundle_contents\"";
-> mkdir "$bundle_contents/MacOS",0755;
-> $libs = `sdl-config --libs`;
-> chomp($libs);
-> $libs =~ s/-lSDLmain//g;
-> system "gcc $libs -framework Cocoa `perl -MExtUtils::Embed -e ldopts` MacOSX/launcher.o -o \"$bundle_contents/MacOS/SDL Perl\"";
->
-> mkdir "$bundle_contents/Resources",0755;
-> system "echo \"APPL????\" > \"$bundle_contents/PkgInfo\"";
-> system "cp MacOSX/Info.plist \"$bundle_contents/\"";
-> system "cp \"MacOSX/SDL Perl.icns\" \"$bundle_contents/Resources\"";
-> }
->
-diff -r SDL_perl/make/lib/SDL/Build/Freebsd.pm sdlperl/make/lib/SDL/Build/Freebsd.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Freebsd.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-diff -r SDL_perl/make/lib/SDL/Build/Linux.pm sdlperl/make/lib/SDL/Build/Linux.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Linux.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-diff -r SDL_perl/make/lib/SDL/Build/MSWin32.pm sdlperl/make/lib/SDL/Build/MSWin32.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # MSWin32.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-diff -r SDL_perl/make/lib/SDL/Build/Netbsd.pm sdlperl/make/lib/SDL/Build/Netbsd.pm
-0a1,30
-> #!/usr/bin/env perl
-> #
-> # Netbsd.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-> #
->
-3c33
-< use base 'SDL::Build';
----
-> use strict;
-diff -r SDL_perl/make/lib/SDL/Build.pm sdlperl/make/lib/SDL/Build.pm
-0a1
-> #!/usr/bin/env perl
-2,3c3,28
-< # Copyright (C) 2004 chromatic
-< # Copyright (C) 2004 David J. Goehrig
----
-> # Build.pm
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig@cpan.org
-22d46
-<
-25a50
->
-29a55
->
-148c174
-< ( defined $Config{usethreads} ? ('-DUSE_THREADS', '-fPIC') : '-fPIC' ),
----
-> ( defined $Config{usethreads} ? ('-DUSE_THREADS', '-fPIC') : ('-fPIC' )),
-200a227,266
-> # Subclass Darwin to build Objective-C addons
->
-> sub filter_support {
-> my $self = shift;
-> print STDERR "[SDL::Build] generic filter\n";
-> return ();
-> }
->
-> sub process_support_files {
-> my $self = shift;
-> my $p = $self->{properties};
-> return unless $p->{c_source};
-> return unless $p->{c_sources};
->
-> push @{$p->{include_dirs}}, $p->{c_source};
-> unless ( $p->{extra_compiler_flags} && $p->{extra_compiler_flags} =~ /DARCHNAME/) {
-> $p->{extra_compiler_flags} .= " -DARCHNAME=" . $self->{config}{archname};
-> }
-> print STDERR "[SDL::Build] extra compiler flags" . $p->{extra_compiler_flags} . "\n";
->
-> foreach my $file (map($p->{c_source} . "/$_", @{$p->{c_sources}})) {
-> push @{$p->{objects}}, $self->compile_c($file);
-> }
-> }
->
-> # Override to create a MacOS Bundle
-> sub build_bundle
-> {
-> return;
-> }
->
-> # Override Install method for darwin
-> sub ACTION_install {
-> my ($self) = @_;
-> require ExtUtils::Install;
-> $self->depends_on('build');
-> $self->get_arch($^O)->build_bundle();
-> ExtUtils::Install::install($self->install_map, 1, 0, $self->{args}{uninst}||0);
-> }
->
-Only in sdlperl/: pod2htmd.tmp
-Only in sdlperl/: pod2htmi.tmp
-diff -r SDL_perl/src/OpenGL.xs sdlperl/src/OpenGL.xs
-1d0
-< // SDL::OpenGL
-3c2,28
-< // Copyright (C) 2002,2003,2004 David J. Goehrig
----
-> // OpenGL.xs
-> //
-> // Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // This library is free software; you can redistribute it and/or
-> // modify it under the terms of the GNU Lesser General Public
-> // License as published by the Free Software Foundation; either
-> // version 2.1 of the License, or (at your option) any later version.
-> //
-> // This library is distributed in the hope that it will be useful,
-> // but WITHOUT ANY WARRANTY; without even the implied warranty of
-> // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> // Lesser General Public License for more details.
-> //
-> // You should have received a copy of the GNU Lesser General Public
-> // License along with this library; if not, write to the Free Software
-> // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // Please feel free to send questions, suggestions or improvements to:
-> //
-> // David J. Goehrig
-> // dgoehrig@cpan.org
-> //
-17d41
-< #include <GL/glx.h>
-27c51
-< #include "defines.h"
----
-> #include "../defines.h"
-673d696
-< case GL_MAX_TEXTURE_UNITS_ARB:
-713,718d735
-< const char * glGetString ( name )
-< GLenum name
-< CODE:
-< RETVAL = (const char *)glGetString (name);
-< OUTPUT:
-< RETVAL
-1236c1253
-< glRasterPos ( x, y, ... )
----
-> glRasterPos ( x, y, z, ... )
-1238a1256
-> double z
-1240,1253c1258,1262
-< if (items == 2)
-< {
-< glRasterPos2d (x,y);
-< }
-< else if (items == 3)
-< {
-< double z = SvNV (ST(2));
-< glRasterPos3d (x,y,z);
-< }
-< else if (items == 4)
-< {
-< double z = SvNV (ST(2));
-< double w = SvNV (ST(3));
-< glRasterPos4d (x,y,z,w);
----
-> if ( items == 4 ) {
-> double w = SvNV(ST(3));
-> glRasterPos4d(x,y,z,w);
-> } else {
-> glRasterPos3d(x,y,z);
-1737,1739c1746,1748
-< Uint32 i;
-< Uint32 *names;
-< names = (Uint32*)safemalloc(sizeof(Uint32)*n);
----
-> GLsizei i;
-> GLuint* names;
-> names = (GLuint*)safemalloc(sizeof(GLuint)*n);
-1767c1776
-< Uint32 *textures;
----
-> GLuint* textures;
-1769c1778
-< textures = (Uint32*)safemalloc(sizeof(Uint32) * items);
----
-> textures = (GLuint*)safemalloc(sizeof(GLuint) * items);
-1781c1790
-< Uint32 *textures;
----
-> GLuint* textures;
-1785c1794
-< textures = (Uint32*)safemalloc(sizeof(Uint32) * items);
----
-> textures = (GLuint*)safemalloc(sizeof(GLuint) * items);
-2722,2803d2730
-< GLUquadric *
-< gluNewQuadric ()
-< CODE:
-< RETVAL = gluNewQuadric ();
-< OUTPUT:
-< RETVAL
-<
-< void
-< gluDeleteQuadric (quad)
-< GLUquadric *quad
-< CODE:
-< gluDeleteQuadric(quad);
-<
-< void
-< gluQuadricNormals ( quad, normal )
-< GLUquadric *quad
-< GLenum normal
-< CODE:
-< gluQuadricNormals(quad, normal);
-<
-<
-< void
-< gluQuadricTexture ( quad, texture )
-< GLUquadric *quad
-< GLboolean texture
-< CODE:
-< gluQuadricTexture ( quad, texture );
-<
-< void
-< gluCylinder ( quad, base, top, height, slices, stacks )
-< GLUquadric *quad
-< GLdouble base
-< GLdouble top
-< GLdouble height
-< GLint slices
-< GLint stacks
-< CODE:
-< gluCylinder ( quad, base, top, height, slices, stacks );
-<
-< void
-< gluDisk ( quad, inner, outer, slices, loops )
-< GLUquadric *quad
-< GLdouble inner
-< GLdouble outer
-< GLint slices
-< GLint loops
-< CODE:
-< gluDisk ( quad, inner, outer, slices, loops );
-<
-< void
-< gluPartialDisk ( quad, inner, outer, slices, loops, start, sweep )
-< GLUquadric *quad
-< GLdouble inner
-< GLdouble outer
-< GLint slices
-< GLint loops
-< GLdouble start
-< GLdouble sweep
-<
-< CODE:
-< gluPartialDisk ( quad, inner, outer, slices, loops, start, sweep );
-<
-< void
-< gluSphere ( quad, radius, slices, stacks )
-< GLUquadric *quad
-< GLdouble radius
-< GLint slices
-< GLint stacks
-< CODE:
-< gluSphere ( quad, radius, slices, stacks );
-<
-<
-<
-< void
-< glXUseXFont ( font, first, count, list_base )
-< Font font
-< int first
-< int count
-< int list_base
-< CODE:
-< glXUseXFont ( font, first, count, list_base );
-<
-Only in sdlperl/src: SDL
-diff -r SDL_perl/src/SDL.xs sdlperl/src/SDL.xs
-0a1
-> //
-3c4,27
-< // SDL Perl by David J. Goehrig <dgoehrig@cpan.org>
----
-> // Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // This library is free software; you can redistribute it and/or
-> // modify it under the terms of the GNU Lesser General Public
-> // License as published by the Free Software Foundation; either
-> // version 2.1 of the License, or (at your option) any later version.
-> //
-> // This library is distributed in the hope that it will be useful,
-> // but WITHOUT ANY WARRANTY; without even the implied warranty of
-> // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> // Lesser General Public License for more details.
-> //
-> // You should have received a copy of the GNU Lesser General Public
-> // License along with this library; if not, write to the Free Software
-> // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // Please feel free to send questions, suggestions or improvements to:
-> //
-> // David J. Goehrig
-> // dgoehrig@cpan.org
-5,8d28
-< // Copyright (C) 2000,2001,2002,2003,2004 David J. Goehrig
-< // Copyright (C) 2009 Kartik Thakore
-< // This software is under the GNU Library General Public License (LGPL)
-< // see the file COPYING for terms of use
-19a40,47
-> #ifdef HAVE_GL
-> #include <gl.h>
-> #endif
->
-> #ifdef HAVE_GLU
-> #include <glu.h>
-> #endif
->
-29,34c57,58
-< #ifdef HAVE_GL
-< #include <gl.h>
-< #endif
-<
-< #ifdef HAVE_GLU
-< #include <glu.h>
----
-> #ifdef HAVE_SDL_SOUND
-> #include <SDL_sound.h>
-67a92,95
-> #ifdef HAVE_SDL_SVG
-> #include <SDL_svg.h>
-> #endif
->
-74,99d101
-< #ifdef MACOSX
-< #include <CoreServices/CoreServices.h>
-< void CPSEnableForegroundOperation(ProcessSerialNumber* psn);
-< void NSApplicationLoad();
-< void SDL_macosx_init(void) {
-< Boolean sameProc;
-< ProcessSerialNumber myProc, frProc;
-< if (GetFrontProcess(&frProc) == noErr)
-< if (GetCurrentProcess(&myProc) == noErr)
-< if (SameProcess(&frProc, &myProc, &sameProc) == noErr && sameProc == 0) {
-< /*
-< NSLog(@"creating bad autorelease pool");
-< [[NSAutoreleasePool alloc] init];
-< */
-< NSApplicationLoad();
-< CPSEnableForegroundOperation(&myProc);
-< }
-< }
-< void SDL_macosx_quit(void) {
-< }
-< #endif // MACOSX
-<
-<
-<
-<
-<
-208a211,214
-> #define INIT_NS_APPLICATION
-> #define QUIT_NS_APPLICATION
->
->
-211a218
-> QUIT_NS_APPLICATION
-213,215d219
-< #ifdef MACOSX
-< SDL_macosx_quit();
-< #endif
-241,243c245
-< #ifdef MACOSX
-< SDL_macosx_init();
-< #endif
----
-> INIT_NS_APPLICATION
-269a272
-> QUIT_NS_APPLICATION
-271,274d273
-< #ifdef MACOSX
-< SDL_macosx_quit();
-< #endif
-<
-339a339,435
-> SDL_RWops*
-> RWFromFile ( file, mode )
-> char* file
-> char * mode
-> CODE:
-> RETVAL = SDL_RWFromFile(file,mode);
-> OUTPUT:
-> RETVAL
->
-> SDL_RWops*
-> RWFromFP ( fp, autoclose )
-> FILE* fp
-> int autoclose
-> CODE:
-> RETVAL = SDL_RWFromFP(fp,autoclose);
-> OUTPUT:
-> RETVAL
->
-> SDL_RWops*
-> RWFromMem ( mem, size )
-> char* mem
-> int size
-> CODE:
-> RETVAL = SDL_RWFromMem((void*)mem,size);
-> OUTPUT:
-> RETVAL
->
-> SDL_RWops*
-> RWFromConstMem ( mem, size )
-> const char* mem
-> int size
-> CODE:
-> RETVAL = SDL_RWFromConstMem((const void*)mem,size);
-> OUTPUT:
-> RETVAL
->
-> SDL_RWops*
-> AllocRW ()
-> CODE:
-> RETVAL = SDL_AllocRW();
-> OUTPUT:
-> RETVAL
->
-> void
-> FreeRW ( rw )
-> SDL_RWops* rw
-> CODE:
-> SDL_FreeRW(rw);
->
-> int
-> RWseek ( rw, off, whence )
-> SDL_RWops* rw
-> int off
-> int whence
-> CODE:
-> RETVAL = SDL_RWseek(rw,off,whence);
-> OUTPUT:
-> RETVAL
->
-> int
-> RWtell ( rw )
-> SDL_RWops* rw
-> CODE:
-> RETVAL = SDL_RWtell(rw);
-> OUTPUT:
-> RETVAL
->
-> int
-> RWread ( rw, mem, size, n )
-> SDL_RWops* rw
-> char* mem
-> int size
-> int n
-> CODE:
-> RETVAL = SDL_RWread(rw,mem,size,n);
-> OUTPUT:
-> RETVAL
->
-> int
-> RWwrite ( rw, mem, size, n )
-> SDL_RWops* rw
-> char* mem
-> int size
-> int n
-> CODE:
-> RETVAL = SDL_RWwrite(rw,mem,size,n);
-> OUTPUT:
-> RETVAL
->
-> int
-> RWclose ( rw )
-> SDL_RWops* rw
-> CODE:
-> RETVAL = SDL_RWclose(rw);
-> OUTPUT:
-> RETVAL
->
-530,542d625
-<
-< int
-< PeepEvents( e, numevents, action, mask)
-< SDL_Event *e
-< int numevents
-< SDL_eventaction action
-< Uint32 mask
-< CODE:
-< RETVAL = (int)SDL_PeepEvents( e, numevents, action, mask);
-< OUTPUT:
-< RETVAL
-<
-<
-1224,1237d1306
-< ColorRGB ( color, ... )
-< SDL_Color *color
-< PPCODE:
-< if (items > 1 ) {
-< color->r = SvIV(ST(1));
-< color->g = SvIV(ST(2));
-< color->b = SvIV(ST(3));
-< }
-< mXPUSHi( color->r );
-< mXPUSHi( color->g );
-< mXPUSHi( color->b );
-< XSRETURN(3);
-<
-< void
-1941,1951d2009
-< MixSetPanning ( channel, left, right )
-< int channel
-< Uint8 left
-< Uint8 right
-< CODE:
-< RETVAL = Mix_SetPanning(channel,left, right);
-< OUTPUT:
-< RETVAL
-<
-<
-< int
-2364c2422
-< Sint16
----
-> Uint8
-2519c2577
-< char *host
----
-> const char *host
-3316c3374
-< SMPEG_Info *info;
----
-> SMPEG_Info *info
-3322c3380
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3330c3388
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3338c3396
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3346c3404
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3354c3412
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3362c3420
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3370c3428
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3378c3436
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3386c3444
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3394c3452
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3402c3460
-< SMPEG_Info* info;
----
-> SMPEG_Info* info
-3410c3468
-< SMPEG* mpeg ;
----
-> SMPEG* mpeg
-3418,3419c3476,3477
-< char* filename;
-< SMPEG_Info* info;
----
-> char* filename
-> SMPEG_Info* info
-3432c3490
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3438,3439c3496,3497
-< SMPEG* mpeg ;
-< int flag;
----
-> SMPEG* mpeg
-> int flag
-3448,3449c3506,3507
-< SMPEG* mpeg ;
-< int flag;
----
-> SMPEG* mpeg
-> int flag
-3455,3456c3513,3514
-< SMPEG* mpeg ;
-< int volume;
----
-> SMPEG* mpeg
-> int volume
-3462,3464c3520,3522
-< SMPEG* mpeg;
-< SDL_Surface* dest;
-< SDL_mutex* surfLock;
----
-> SMPEG* mpeg
-> SDL_Surface* dest
-> SDL_mutex* surfLock
-3470,3472c3528,3530
-< SMPEG* mpeg;
-< int w;
-< int h;
----
-> SMPEG* mpeg
-> int w
-> int h
-3478c3536
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3485c3543
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3506c3564
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3514c3572
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3520c3578
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3527c3585
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3536c3594
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3542,3543c3600,3601
-< SMPEG* mpeg;
-< int bytes;
----
-> SMPEG* mpeg
-> int bytes
-3549,3550c3607,3608
-< SMPEG* mpeg;
-< float seconds;
----
-> SMPEG* mpeg
-> float seconds
-3556,3557c3614,3615
-< SMPEG* mpeg;
-< SDL_Rect* rect;
----
-> SMPEG* mpeg
-> SDL_Rect* rect
-3563,3564c3621,3622
-< SMPEG* mpeg;
-< int frame;
----
-> SMPEG* mpeg
-> int frame
-3570c3628
-< SMPEG* mpeg;
----
-> SMPEG* mpeg
-3584,3591c3642,3649
-< SDL_Surface * src;
-< double angle;
-< double zoom;
-< int smooth;
-< CODE:
-< RETVAL = rotozoomSurface( src, angle, zoom, smooth);
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface * src
-> double angle
-> double zoom
-> int smooth
-> CODE:
-> RETVAL = rotozoomSurface( src, angle, zoom, smooth);
-> OUTPUT:
-> RETVAL
-3595,3603c3653,3660
-< SDL_Surface *src;
-< double zoomx;
-< double zoomy;
-< int smooth;
-< CODE:
-< RETVAL = zoomSurface( src, zoomx, zoomy, smooth);
-< OUTPUT:
-< RETVAL
-<
----
-> SDL_Surface *src
-> double zoomx
-> double zoomy
-> int smooth
-> CODE:
-> RETVAL = zoomSurface( src, zoomx, zoomy, smooth);
-> OUTPUT:
-> RETVAL
-3607,3614c3664,3671
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Uint32 color;
-< CODE:
-< RETVAL = pixelColor( dst, x, y, color);
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Uint32 color
-> CODE:
-> RETVAL = pixelColor( dst, x, y, color);
-> OUTPUT:
-> RETVAL
-3618,3628c3675,3685
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = pixelRGBA( dst, x, y, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = pixelRGBA( dst, x, y, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3632,3640c3689,3697
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 x2;
-< Sint16 y;
-< Uint32 color;
-< CODE:
-< RETVAL = hlineColor( dst, x1, x2, y, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 x2
-> Sint16 y
-> Uint32 color
-> CODE:
-> RETVAL = hlineColor( dst, x1, x2, y, color );
-> OUTPUT:
-> RETVAL
-3644,3655c3701,3712
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 x2;
-< Sint16 y;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = hlineRGBA( dst, x1, x2, y, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 x2
-> Sint16 y
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = hlineRGBA( dst, x1, x2, y, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3659,3667c3716,3724
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y1;
-< Sint16 y2;
-< Uint32 color;
-< CODE:
-< RETVAL = vlineColor( dst, x, y1, y2, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y1
-> Sint16 y2
-> Uint32 color
-> CODE:
-> RETVAL = vlineColor( dst, x, y1, y2, color );
-> OUTPUT:
-> RETVAL
-3671,3682c3728,3739
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y1;
-< Sint16 y2;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = vlineRGBA( dst, x, y1, y2, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y1
-> Sint16 y2
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = vlineRGBA( dst, x, y1, y2, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3686,3695c3743,3752
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint32 color;
-< CODE:
-< RETVAL = rectangleColor( dst, x1, y1, x2, y2, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint32 color
-> CODE:
-> RETVAL = rectangleColor( dst, x1, y1, x2, y2, color );
-> OUTPUT:
-> RETVAL
-3699,3711c3756,3768
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = rectangleRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = rectangleRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3715,3724c3772,3781
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint32 color;
-< CODE:
-< RETVAL = boxColor( dst, x1, y1, x2, y2, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint32 color
-> CODE:
-> RETVAL = boxColor( dst, x1, y1, x2, y2, color );
-> OUTPUT:
-> RETVAL
-3728,3740c3785,3797
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = boxRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst;
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = boxRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3744,3753c3801,3810
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint32 color;
-< CODE:
-< RETVAL = lineColor( dst, x1, y1, x2, y2, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint32 color
-> CODE:
-> RETVAL = lineColor( dst, x1, y1, x2, y2, color );
-> OUTPUT:
-> RETVAL
-3757,3769c3814,3826
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = lineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = lineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3773,3782c3830,3839
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint32 color;
-< CODE:
-< RETVAL = aalineColor( dst, x1, y1, x2, y2, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint32 color
-> CODE:
-> RETVAL = aalineColor( dst, x1, y1, x2, y2, color );
-> OUTPUT:
-> RETVAL
-3786,3798c3843,3855
-< SDL_Surface* dst;
-< Sint16 x1;
-< Sint16 y1;
-< Sint16 x2;
-< Sint16 y2;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = aalineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x1
-> Sint16 y1
-> Sint16 x2
-> Sint16 y2
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = aalineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3802,3810c3859,3867
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 r;
-< Uint32 color;
-< CODE:
-< RETVAL = circleColor( dst, x, y, r, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 r
-> Uint32 color
-> CODE:
-> RETVAL = circleColor( dst, x, y, r, color );
-> OUTPUT:
-> RETVAL
-3814,3825c3871,3882
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rad;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = circleRGBA( dst, x, y, rad, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rad
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = circleRGBA( dst, x, y, rad, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3829,3837c3886,3894
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 r;
-< Uint32 color;
-< CODE:
-< RETVAL = aacircleColor( dst, x, y, r, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 r
-> Uint32 color
-> CODE:
-> RETVAL = aacircleColor( dst, x, y, r, color );
-> OUTPUT:
-> RETVAL
-3841,3852c3898,3909
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rad;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = aacircleRGBA( dst, x, y, rad, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rad
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = aacircleRGBA( dst, x, y, rad, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3856,3864c3913,3921
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 r;
-< Uint32 color;
-< CODE:
-< RETVAL = filledCircleColor( dst, x, y, r, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 r
-> Uint32 color
-> CODE:
-> RETVAL = filledCircleColor( dst, x, y, r, color );
-> OUTPUT:
-> RETVAL
-3868,3879c3925,3936
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rad;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = filledCircleRGBA( dst, x, y, rad, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rad
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = filledCircleRGBA( dst, x, y, rad, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3883,3892c3940,3949
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rx;
-< Sint16 ry;
-< Uint32 color;
-< CODE:
-< RETVAL = ellipseColor( dst, x, y, rx, ry, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rx
-> Sint16 ry
-> Uint32 color
-> CODE:
-> RETVAL = ellipseColor( dst, x, y, rx, ry, color );
-> OUTPUT:
-> RETVAL
-3896,3908c3953,3965
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rx;
-< Sint16 ry;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = ellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rx
-> Sint16 ry
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = ellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3912,3921c3969,3978
-< SDL_Surface* dst;
-< Sint16 xc;
-< Sint16 yc;
-< Sint16 rx;
-< Sint16 ry;
-< Uint32 color;
-< CODE:
-< RETVAL = aaellipseColor( dst, xc, yc, rx, ry, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 xc
-> Sint16 yc
-> Sint16 rx
-> Sint16 ry
-> Uint32 color
-> CODE:
-> RETVAL = aaellipseColor( dst, xc, yc, rx, ry, color );
-> OUTPUT:
-> RETVAL
-3925,3937c3982,3994
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rx;
-< Sint16 ry;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = aaellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rx
-> Sint16 ry
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = aaellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3941,3950c3998,4007
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rx;
-< Sint16 ry;
-< Uint32 color;
-< CODE:
-< RETVAL = filledEllipseColor( dst, x, y, rx, ry, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rx
-> Sint16 ry
-> Uint32 color
-> CODE:
-> RETVAL = filledEllipseColor( dst, x, y, rx, ry, color );
-> OUTPUT:
-> RETVAL
-3954,3966c4011,4023
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rx;
-< Sint16 ry;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = filledEllipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rx
-> Sint16 ry
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = filledEllipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-> OUTPUT:
-> RETVAL
-3970,3980c4027,4037
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rad;
-< Sint16 start;
-< Sint16 end;
-< Uint32 color;
-< CODE:
-< RETVAL = filledPieColor( dst, x, y, rad, start, end, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rad
-> Sint16 start
-> Sint16 end
-> Uint32 color
-> CODE:
-> RETVAL = filledPieColor( dst, x, y, rad, start, end, color );
-> OUTPUT:
-> RETVAL
-3984,3997c4041,4054
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< Sint16 rad;
-< Sint16 start;
-< Sint16 end;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = filledPieRGBA( dst, x, y, rad, start, end, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> Sint16 rad
-> Sint16 start
-> Sint16 end
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = filledPieRGBA( dst, x, y, rad, start, end, r, g, b, a );
-> OUTPUT:
-> RETVAL
-4001,4009c4058,4066
-< SDL_Surface* dst;
-< Sint16* vx;
-< Sint16* vy;
-< int n;
-< Uint32 color;
-< CODE:
-< RETVAL = polygonColor( dst, vx, vy, n, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16* vx
-> Sint16* vy
-> int n
-> Uint32 color;
-> CODE:
-> RETVAL = polygonColor( dst, vx, vy, n, color );
-> OUTPUT:
-> RETVAL
-4013,4024c4070,4081
-< SDL_Surface* dst;
-< Sint16* vx;
-< Sint16* vy;
-< int n;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = polygonRGBA( dst, vx, vy, n, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16* vx
-> Sint16* vy
-> int n
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = polygonRGBA( dst, vx, vy, n, r, g, b, a );
-> OUTPUT:
-> RETVAL
-4028,4036c4085,4093
-< SDL_Surface* dst;
-< Sint16* vx;
-< Sint16* vy;
-< int n;
-< Uint32 color;
-< CODE:
-< RETVAL = aapolygonColor( dst, vx, vy, n, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16* vx
-> Sint16* vy
-> int n
-> Uint32 color
-> CODE:
-> RETVAL = aapolygonColor( dst, vx, vy, n, color );
-> OUTPUT:
-> RETVAL
-4040,4051c4097,4108
-< SDL_Surface* dst;
-< Sint16* vx;
-< Sint16* vy;
-< int n;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = aapolygonRGBA( dst, vx, vy, n, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16* vx
-> Sint16* vy
-> int n
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = aapolygonRGBA( dst, vx, vy, n, r, g, b, a );
-> OUTPUT:
-> RETVAL
-4055,4063c4112,4120
-< SDL_Surface* dst;
-< Sint16* vx;
-< Sint16* vy;
-< int n;
-< int color;
-< CODE:
-< RETVAL = filledPolygonColor( dst, vx, vy, n, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16* vx
-> Sint16* vy
-> int n
-> int color
-> CODE:
-> RETVAL = filledPolygonColor( dst, vx, vy, n, color );
-> OUTPUT:
-> RETVAL
-4067,4078c4124,4135
-< SDL_Surface* dst;
-< Sint16* vx;
-< Sint16* vy;
-< int n;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = filledPolygonRGBA( dst, vx, vy, n, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16* vx
-> Sint16* vy
-> int n
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = filledPolygonRGBA( dst, vx, vy, n, r, g, b, a );
-> OUTPUT:
-> RETVAL
-4082,4090c4139,4147
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< char c;
-< Uint32 color;
-< CODE:
-< RETVAL = characterColor( dst, x, y, c, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> char c
-> Uint32 color
-> CODE:
-> RETVAL = characterColor( dst, x, y, c, color );
-> OUTPUT:
-> RETVAL
-4094,4105c4151,4162
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< char c;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = characterRGBA( dst, x, y, c, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> char c
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = characterRGBA( dst, x, y, c, r, g, b, a );
-> OUTPUT:
-> RETVAL
-4109,4117c4166,4174
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< char* c;
-< Uint32 color;
-< CODE:
-< RETVAL = stringColor( dst, x, y, c, color );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> char* c
-> Uint32 color
-> CODE:
-> RETVAL = stringColor( dst, x, y, c, color );
-> OUTPUT:
-> RETVAL
-4121,4132c4178,4289
-< SDL_Surface* dst;
-< Sint16 x;
-< Sint16 y;
-< char* c;
-< Uint8 r;
-< Uint8 g;
-< Uint8 b;
-< Uint8 a;
-< CODE:
-< RETVAL = stringRGBA( dst, x, y, c, r, g, b, a );
-< OUTPUT:
-< RETVAL
----
-> SDL_Surface* dst
-> Sint16 x
-> Sint16 y
-> char* c
-> Uint8 r
-> Uint8 g
-> Uint8 b
-> Uint8 a
-> CODE:
-> RETVAL = stringRGBA( dst, x, y, c, r, g, b, a );
-> OUTPUT:
-> RETVAL
->
-> #endif
->
->
-> #ifdef HAVE_SDL_SVG
->
-> SDL_svg_context *
-> SVG_Load ( filename )
-> char* filename
-> CODE:
-> RETVAL = SVG_Load(filename);
-> OUTPUT:
-> RETVAL
->
-> SDL_svg_context *
-> SVG_LoadBuffer ( data, len )
-> char* data
-> int len
-> CODE:
-> RETVAL = SVG_LoadBuffer(data,len);
-> OUTPUT:
-> RETVAL
->
-> int
-> SVG_SetOffset ( source, xoff, yoff )
-> SDL_svg_context* source
-> double xoff
-> double yoff
-> CODE:
-> RETVAL = SVG_SetOffset(source,xoff,yoff);
-> OUTPUT:
-> RETVAL
->
-> int
-> SVG_SetScale ( source, xscale, yscale )
-> SDL_svg_context* source
-> double xscale
-> double yscale
-> CODE:
-> RETVAL = SVG_SetScale(source,xscale,yscale);
-> OUTPUT:
-> RETVAL
->
-> int
-> SVG_RenderToSurface ( source, x, y, dest )
-> SDL_svg_context* source
-> int x
-> int y
-> SDL_Surface* dest;
-> CODE:
-> RETVAL = SVG_RenderToSurface(source,x,y,dest);
-> OUTPUT:
-> RETVAL
->
-> void
-> SVG_Free ( source )
-> SDL_svg_context* source
-> CODE:
-> SVG_Free(source);
->
-> void
-> SVG_Set_Flags ( source, flags )
-> SDL_svg_context* source
-> Uint32 flags
-> CODE:
-> SVG_Set_Flags(source,flags);
->
-> float
-> SVG_Width ( source )
-> SDL_svg_context* source
-> CODE:
-> RETVAL = SVG_Width(source);
-> OUTPUT:
-> RETVAL
->
-> float
-> SVG_HEIGHT ( source )
-> SDL_svg_context* source
-> CODE:
-> RETVAL = SVG_Height(source);
-> OUTPUT:
-> RETVAL
->
-> void
-> SVG_SetClipping ( source, minx, miny, maxx, maxy )
-> SDL_svg_context* source
-> int minx
-> int miny
-> int maxx
-> int maxy
-> CODE:
-> SVG_SetClipping(source,minx,miny,maxx,maxy);
->
-> int
-> SVG_Version ( )
-> CODE:
-> RETVAL = SVG_Version();
-> OUTPUT:
-> RETVAL
->
-4166c4323
-< char **ext;
----
-> const char **ext;
-4168c4325
-< av_push(RETVAL,sv_2mortal(newSVpv(*ext,0)));
----
-> av_push(RETVAL,newSVpv(*ext,0));
-4173c4330
-< char*
----
-> const char*
-4181c4338
-< char*
----
-> const char*
-4189c4346
-< char*
----
-> const char*
-4233c4390
-< RETVAL = sample->buffer;
----
-> RETVAL = sample->buffer_size;
-4244a4402,4451
-> int
-> Sound_Init ( )
-> CODE:
-> RETVAL = Sound_Init();
-> OUTPUT:
-> RETVAL
->
-> int
-> Sound_Quit ( )
-> CODE:
-> RETVAL = Sound_Quit();
-> OUTPUT:
-> RETVAL
->
-> AV*
-> Sound_AvailableDecoders ( )
-> CODE:
-> RETVAL = newAV();
-> const Sound_DecoderInfo** sdi;
-> sdi = Sound_AvailableDecoders();
-> if (sdi != NULL) {
-> for (;*sdi != NULL; ++sdi) {
-> av_push(RETVAL,sv_2mortal(newSViv(PTR2IV(*sdi))));
-> }
-> }
-> OUTPUT:
-> RETVAL
->
-> const char*
-> Sound_GetError ( )
-> CODE:
-> RETVAL = Sound_GetError();
-> OUTPUT:
-> RETVAL
->
-> void
-> Sound_ClearError ( )
-> CODE:
-> Sound_ClearError();
->
-> Sound_Sample*
-> Sound_NewSample ( rw, ext, desired, buffsize )
-> SDL_RWops* rw
-> const char* ext
-> Sound_AudioInfo* desired
-> Uint32 buffsize
-> CODE:
-> RETVAL = Sound_NewSample(rw,ext,desired,buffsize);
-> OUTPUT:
-> RETVAL
-4245a4453,4529
-> Sound_Sample*
-> Sound_NewSampleFromMem ( data, size, ext, desired, buffsize )
-> const Uint8 *data
-> Uint32 size
-> const char* ext
-> Sound_AudioInfo* desired
-> Uint32 buffsize
-> CODE:
-> RETVAL = Sound_NewSampleFromMem(data,size,ext,desired,buffsize);
-> OUTPUT:
-> RETVAL
->
-> Sound_Sample*
-> Sound_NewSampleFromFile ( fname, desired, buffsize )
-> const char* fname
-> Sound_AudioInfo* desired
-> Uint32 buffsize
-> CODE:
-> RETVAL = Sound_NewSampleFromFile(fname,desired,buffsize);
-> OUTPUT:
-> RETVAL
->
-> void
-> Sound_FreeSample ( sample )
-> Sound_Sample* sample
-> CODE:
-> Sound_FreeSample(sample);
->
-> Sint32
-> Sound_GetDuration ( sample )
-> Sound_Sample* sample
-> CODE:
-> RETVAL = Sound_GetDuration(sample);
-> OUTPUT:
-> RETVAL
->
-> int
-> Sound_SetBufferSize ( sample, size )
-> Sound_Sample* sample
-> Uint32 size
-> CODE:
-> RETVAL = Sound_SetBufferSize(sample,size);
-> OUTPUT:
-> RETVAL
->
-> Uint32
-> Sound_Decode ( sample )
-> Sound_Sample* sample
-> CODE:
-> RETVAL = Sound_Decode(sample);
-> OUTPUT:
-> RETVAL
->
-> Uint32
-> Sound_DecodeAll ( sample )
-> Sound_Sample* sample
-> CODE:
-> RETVAL = Sound_DecodeAll(sample);
-> OUTPUT:
-> RETVAL
->
-> int
-> Sound_Rewind ( sample )
-> Sound_Sample* sample
-> CODE:
-> RETVAL = Sound_Rewind(sample);
-> OUTPUT:
-> RETVAL
->
-> int
-> Sound_Seek ( sample, ms )
-> Sound_Sample* sample
-> Uint32 ms
-> CODE:
-> RETVAL = Sound_Seek(sample,ms);
-> OUTPUT:
-> RETVAL
-Only in sdlperl/src: SDL_perl.bs
-Only in sdlperl/src: SDL_perl.c
-Only in sdlperl/src: SDL_perl.o
-Only in sdlperl/src: SDL_perl.xs
-diff -r SDL_perl/src/SFont.h sdlperl/src/SFont.h
-1,9c1,29
-< /************************************************************************
-< * SFONT - SDL Font Library by Karl Bartel <karlb@gmx.net> *
-< * *
-< * All functions are explained below. There are two versions of each *
-< * funtction. The first is the normal one, the function with the *
-< * 2 at the end can be used when you want to handle more than one font *
-< * in your program. *
-< * *
-< ************************************************************************/
----
-> //
-> // SFont.h
-> //
-> // Original SFont code Copyright (C) Karl Bartel
-> // Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // This library is free software; you can redistribute it and/or
-> // modify it under the terms of the GNU Lesser General Public
-> // License as published by the Free Software Foundation; either
-> // version 2.1 of the License, or (at your option) any later version.
-> //
-> // This library is distributed in the hope that it will be useful,
-> // but WITHOUT ANY WARRANTY; without even the implied warranty of
-> // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> // Lesser General Public License for more details.
-> //
-> // You should have received a copy of the GNU Lesser General Public
-> // License along with this library; if not, write to the Free Software
-> // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // Please feel free to send questions, suggestions or improvements to:
-> //
-> // David J. Goehrig
-> // dgoehrig@cpan.org
-> //
-diff -r SDL_perl/src/SFont.xs sdlperl/src/SFont.xs
-1d0
-< // SDL::SFont
-3c2
-< // SFont bitmap font support
----
-> // SFont.xs
-5c4,5
-< // SFont library code by Karl Bartel <karlb@gmx.net>
----
-> // Original SFont code Copyright (C) Karl Bartel
-> // Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-7c7,28
-< // SFont.xs Copyright (C) 2004 David J. Goehrig
----
-> // ------------------------------------------------------------------------------
-> //
-> // This library is free software; you can redistribute it and/or
-> // modify it under the terms of the GNU Lesser General Public
-> // License as published by the Free Software Foundation; either
-> // version 2.1 of the License, or (at your option) any later version.
-> //
-> // This library is distributed in the hope that it will be useful,
-> // but WITHOUT ANY WARRANTY; without even the implied warranty of
-> // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> // Lesser General Public License for more details.
-> //
-> // You should have received a copy of the GNU Lesser General Public
-> // License along with this library; if not, write to the Free Software
-> // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // Please feel free to send questions, suggestions or improvements to:
-> //
-> // David J. Goehrig
-> // dgoehrig@cpan.org
-26,27c47,48
-< #include "defines.h"
-< #include "SFont.h"
----
-> #include "../defines.h"
-> #include "../SFont.h"
-diff -r SDL_perl/src/defines.h sdlperl/src/defines.h
-2c2
-< // Copyright (C) 2004 David J. Goehrig
----
-> // defines.h
-3a4,27
-> // Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // This library is free software; you can redistribute it and/or
-> // modify it under the terms of the GNU Lesser General Public
-> // License as published by the Free Software Foundation; either
-> // version 2.1 of the License, or (at your option) any later version.
-> //
-> // This library is distributed in the hope that it will be useful,
-> // but WITHOUT ANY WARRANTY; without even the implied warranty of
-> // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> // Lesser General Public License for more details.
-> //
-> // You should have received a copy of the GNU Lesser General Public
-> // License along with this library; if not, write to the Free Software
-> // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> //
-> // ------------------------------------------------------------------------------
-> //
-> // Please feel free to send questions, suggestions or improvements to:
-> //
-> // David J. Goehrig
-> // dgoehrig@cpan.org
-Only in sdlperl/src: support
-diff -r SDL_perl/t/apppm.t sdlperl/t/apppm.t
-5c5,29
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c33
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/', 'blib/arch/auto/SDL/SFont';
----
-> unshift @INC, 'blib/lib','blib/arch';
-diff -r SDL_perl/t/cdrompm.t sdlperl/t/cdrompm.t
-5a6,29
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/colorpm.t sdlperl/t/colorpm.t
-3c3
-< # Copyright (C) 2003,2006 Tels
----
-> # Copyright (C) 2003 Tels
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-16c42
-< plan ( tests => 15 );
----
-> plan ( tests => 10 );
-25d50
-< rgb
-36,37d60
-< is (join(":", $color->rgb()), '0:0:0', 'r, g and b are 0');
-<
-44,51d66
-< is (join(":", $color->rgb()), '255:255:255', 'r, g and b are 255');
-< is (join(":", $color->rgb(128,0,80)), '128:0:80', 'r, g and b are set');
-< is (join(":", $color->rgb()), '128:0:80', 'r, g and b still set');
-<
-< # test the new new($r,$g,$b) calling style
-< $color = SDL::Color->new( 255,70,128);
-< is (join(":", $color->rgb()), '255:70:128', 'r, g and b are set via new($r,$g,$b)');
-<
-diff -r SDL_perl/t/cursorpm.t sdlperl/t/cursorpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/eventpm.t sdlperl/t/eventpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-25d50
-< peep
-46,47c71
-< button_y
-< /);
----
-> button_y /);
-diff -r SDL_perl/t/fontpm.t sdlperl/t/fontpm.t
-5c5,31
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c35
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/src/SDL/SFont';
----
-> unshift @INC, 'blib/lib','blib/arch';
-diff -r SDL_perl/t/mixerpm.t sdlperl/t/mixerpm.t
-5c5,31
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-61,62d86
-< mix_volume_chunk
-< mix_set_panning
-diff -r SDL_perl/t/mpegpm.t sdlperl/t/mpegpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/musicpm.t sdlperl/t/musicpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/opengl.t sdlperl/t/opengl.t
-5c5,31
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c35
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/src/SDL/OpenGL';
----
-> unshift @INC, 'blib/lib','blib/arch';
-18c44
-< plan ( tests => 4 );
----
-> plan ( tests => 3 );
-39d64
-< glGetString
-68,78c93
-< gluPwlCurve
-< gluNewQuadric
-< gluDeleteQuadric
-< gluQuadricNormals
-< gluQuadricTexture
-< gluCylinder
-< gluDisk
-< gluPartialDisk
-< gluSphere /);
-<
-< can_ok('main',qw/glXUseXFont/);
----
-> gluPwlCurve /);
-diff -r SDL_perl/t/palettepm.t sdlperl/t/palettepm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/rectpm.t sdlperl/t/rectpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/sdlpm.t sdlperl/t/sdlpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/soundpm.t sdlperl/t/soundpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/surfacepm.t sdlperl/t/surfacepm.t
-5c5,31
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c35
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/src/SDL/SFont',;
----
-> unshift @INC, 'blib/lib','blib/arch';
-61a88,113
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-diff -r SDL_perl/t/timerpm.t sdlperl/t/timerpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-diff -r SDL_perl/t/toolfontpm.t sdlperl/t/toolfontpm.t
-5a6,31
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c35
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/src/SDL/SFont/';
----
-> unshift @INC, 'blib/lib','blib/arch';
-diff -r SDL_perl/t/toolgraphicpm.t sdlperl/t/toolgraphicpm.t
-5c5,31
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c35
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/src/SDL/SFont/';
----
-> unshift @INC, 'blib/lib','blib/arch';
-diff -r SDL_perl/t/ttfontpm.t sdlperl/t/ttfontpm.t
-5c5,31
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c35
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/src/SDL/SFont';
----
-> unshift @INC, 'blib/lib','blib/arch';
-diff -r SDL_perl/t/videopm.t sdlperl/t/videopm.t
-5c5,31
-< # Copyright (C) 2009 Kartik Thakore
----
-> #
-> # Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # This library is free software; you can redistribute it and/or
-> # modify it under the terms of the GNU Lesser General Public
-> # License as published by the Free Software Foundation; either
-> # version 2.1 of the License, or (at your option) any later version.
-> #
-> # This library is distributed in the hope that it will be useful,
-> # but WITHOUT ANY WARRANTY; without even the implied warranty of
-> # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-> # Lesser General Public License for more details.
-> #
-> # You should have received a copy of the GNU Lesser General Public
-> # License along with this library; if not, write to the Free Software
-> # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-> #
-> # ------------------------------------------------------------------------------
-> #
-> # Please feel free to send questions, suggestions or improvements to:
-> #
-> # David J. Goehrig
-> # dgoehrig\@cpan.org
-> #
-> #
-9c35
-< unshift @INC, 'blib/lib','blib/arch', 'blib/arch/auto/src/SDL/SFont';
----
-> unshift @INC, 'blib/lib','blib/arch';
-diff -r SDL_perl/typemap sdlperl/typemap
-4a5
-> const Uint8* T_PTR
-16d16
-< SDL_eventaction T_PTR
-57a58
-> GLuint* T_PTR
-63,64d63
-< GLUquadric * T_PTR
-< GLdouble T_NV
-69c68,69
-< Font T_IV
----
-> SDL_RWops* T_PTR
-> SDL_svg_context* T_PTR
+++ /dev/null
-#! /usr/env/bin perl
-
-use strict;
-use Cwd;
-use File::Spec;
-
-BEGIN {
- $^W = 1; # Use warnings
- my $curdir = File::Spec->canonpath( Cwd::cwd() );
- my $is_same_dir = $^O eq 'MSWin32' ? (Win32::GetShortPathName($curdir) eq '/Users/dave/sdlperl')
- : ($curdir eq '/Users/dave/sdlperl');
- unless ($is_same_dir) {
- die ('This script must be run from /Users/dave/sdlperl, not '.$curdir."\n".
- "Please re-run the Build.PL script here.\n");
- }
- unshift @INC,
- (
- '/Users/dave/sdlperl/make/lib'
- );
-}
-
-use SDL::Build;
-
-# Some platforms have problems setting $^X in shebang contexts, fix it up here
-$^X = Module::Build->find_perl_interpreter
- unless File::Spec->file_name_is_absolute($^X);
-
-if (-e 'Build.PL' and not SDL::Build->up_to_date("Build.PL", $0)) {
- warn "Warning: Build.PL has been altered. You may need to run 'perl Build.PL' again.\n";
-}
-
-# This should have just enough arguments to be able to bootstrap the rest.
-my $build = SDL::Build->resume (
- properties => {
- config_dir => '/Users/dave/sdlperl/_build',
- },
-);
-
-$build->dispatch;
+++ /dev/null
-/*
- * This file was generated automatically by xsubpp version 1.9508 from the
- * contents of SDL_perl.xs. Do not edit this file, edit SDL_perl.xs instead.
- *
- * ANY CHANGES MADE HERE WILL BE LOST!
- *
- */
-
-#line 1 "SDL_perl.xs"
-//
-// SDL.xs
-//
-// Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-//
-// ------------------------------------------------------------------------------
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-// ------------------------------------------------------------------------------
-//
-// Please feel free to send questions, suggestions or improvements to:
-//
-// David J. Goehrig
-// dgoehrig@cpan.org
-//
-
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#ifndef aTHX_
-#define aTHX_
-#endif
-
-#include <SDL.h>
-
-#ifdef HAVE_GL
-#include <gl.h>
-#endif
-
-#ifdef HAVE_GLU
-#include <glu.h>
-#endif
-
-#ifdef HAVE_SDL_IMAGE
-#include <SDL_image.h>
-#endif
-
-#ifdef HAVE_SDL_MIXER
-#include <SDL_mixer.h>
-void (*mix_music_finished_cv)();
-#endif
-
-#ifdef HAVE_SDL_SOUND
-#include <SDL_sound.h>
-#endif
-
-#ifdef HAVE_SDL_NET
-#include <SDL_net.h>
-#endif
-
-#ifdef HAVE_SDL_TTF
-#include <SDL_ttf.h>
-#define TEXT_SOLID 1
-#define TEXT_SHADED 2
-#define TEXT_BLENDED 4
-#define UTF8_SOLID 8
-#define UTF8_SHADED 16
-#define UTF8_BLENDED 32
-#define UNICODE_SOLID 64
-#define UNICODE_SHADED 128
-#define UNICODE_BLENDED 256
-#endif
-
-#ifdef HAVE_SMPEG
-#include <smpeg/smpeg.h>
-#ifdef HAVE_SDL_MIXER
-static int sdl_perl_use_smpeg_audio = 0;
-#endif
-#endif
-
-#ifdef HAVE_SDL_GFX
-#include <SDL_rotozoom.h>
-#include <SDL_gfxPrimitives.h>
-#include <SDL_framerate.h>
-#include <SDL_imageFilter.h>
-#endif
-
-#ifdef HAVE_SDL_SVG
-#include <SDL_svg.h>
-#endif
-
-#ifdef USE_THREADS
-#define HAVE_TLS_CONTEXT
-#endif
-
-#include "defines.h"
-
-Uint32
-sdl_perl_timer_callback ( Uint32 interval, void* param )
-{
- Uint32 retval;
- int back;
- SV* cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)param;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(interval)));
- PUTBACK;
-
- if (0 != (back = call_sv(cmd,G_SCALAR))) {
- SPAGAIN;
- if (back != 1 ) Perl_croak (aTHX_ "Timer Callback failed!");
- retval = POPi;
- } else {
- Perl_croak(aTHX_ "Timer Callback failed!");
- }
-
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-
- return retval;
-}
-
-void
-sdl_perl_audio_callback ( void* data, Uint8 *stream, int len )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)data;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- XPUSHs(sv_2mortal(newSViv(PTR2IV(stream))));
- XPUSHs(sv_2mortal(newSViv(len)));
- PUTBACK;
-
- call_sv(cmd,G_VOID|G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-}
-
-#ifdef HAVE_SDL_MIXER
-
-void
-sdl_perl_music_callback ( void )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)Mix_GetMusicHookData();
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- PUTBACK;
-
- call_sv(cmd,G_VOID|G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-}
-
-void
-sdl_perl_music_finished_callback ( void )
-{
- SV *cmd;
- ENTER_TLS_CONTEXT
- dSP;
-
- cmd = (SV*)mix_music_finished_cv;
- if ( cmd == NULL ) return;
-
- ENTER;
- SAVETMPS;
- PUSHMARK(SP);
- PUTBACK;
-
- call_sv(cmd,G_VOID|G_DISCARD);
-
- PUTBACK;
- FREETMPS;
- LEAVE;
-
- LEAVE_TLS_CONTEXT
-}
-
-#endif
-
-#define INIT_NS_APPLICATION
-#define QUIT_NS_APPLICATION
-
-
-void
-sdl_perl_atexit (void)
-{
- QUIT_NS_APPLICATION
- SDL_Quit();
-}
-
-void boot_SDL();
-void boot_SDL__OpenGL();
-
-XS(boot_SDL_perl)
-{
- GET_TLS_CONTEXT
- boot_SDL();
-}
-
-#line 241 "SDL_perl.c"
-XS(XS_SDL_GetError); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetError)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetError()");
- {
- char * RETVAL;
- dXSTARG;
-#line 237 "SDL_perl.xs"
- RETVAL = SDL_GetError();
-#line 253 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Init); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Init)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Init(flags)");
- {
- Uint32 flags = (Uint32)SvUV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 245 "SDL_perl.xs"
- INIT_NS_APPLICATION
- RETVAL = SDL_Init(flags);
-#ifdef HAVE_TLS_CONTEXT
- Perl_call_atexit(PERL_GET_CONTEXT, (void*)sdl_perl_atexit,0);
-#else
- atexit(sdl_perl_atexit);
-#endif
-#line 277 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_InitSubSystem); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_InitSubSystem)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::InitSubSystem(flags)");
- {
- Uint32 flags = (Uint32)SvUV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 259 "SDL_perl.xs"
- RETVAL = SDL_InitSubSystem(flags);
-#line 295 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_QuitSubSystem); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_QuitSubSystem)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::QuitSubSystem(flags)");
- {
- Uint32 flags = (Uint32)SvUV(ST(0));
-#line 267 "SDL_perl.xs"
- SDL_QuitSubSystem(flags);
-#line 311 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_Quit); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Quit)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::Quit()");
- {
-#line 272 "SDL_perl.xs"
- QUIT_NS_APPLICATION
- SDL_Quit();
-#line 326 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_WasInit); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WasInit)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::WasInit(flags)");
- {
- Uint32 flags = (Uint32)SvUV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 279 "SDL_perl.xs"
- RETVAL = SDL_WasInit(flags);
-#line 343 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Delay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Delay)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Delay(ms)");
- {
- int ms = (int)SvIV(ST(0));
-#line 287 "SDL_perl.xs"
- SDL_Delay(ms);
-#line 359 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_GetTicks); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetTicks)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetTicks()");
- {
- Uint32 RETVAL;
- dXSTARG;
-#line 292 "SDL_perl.xs"
- RETVAL = SDL_GetTicks();
-#line 375 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetTimer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetTimer)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SetTimer(interval, callback)");
- {
- Uint32 interval = (Uint32)SvUV(ST(0));
- SDL_TimerCallback callback = INT2PTR(SDL_TimerCallback,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 301 "SDL_perl.xs"
- RETVAL = SDL_SetTimer(interval,callback);
-#line 394 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_AddTimer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_AddTimer)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::AddTimer(interval, callback, param)");
- {
- Uint32 interval = (Uint32)SvUV(ST(0));
- SDL_NewTimerCallback callback = INT2PTR(SDL_NewTimerCallback,SvIV(ST(1)));
- void * param = INT2PTR(void *,SvIV(ST(2)));
- SDL_TimerID RETVAL;
- dXSTARG;
-#line 311 "SDL_perl.xs"
- RETVAL = SDL_AddTimer(interval,callback,param);
-#line 414 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_PerlTimerCallback); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PerlTimerCallback)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::PerlTimerCallback()");
- {
- SDL_NewTimerCallback RETVAL;
- dXSTARG;
-#line 318 "SDL_perl.xs"
- RETVAL = sdl_perl_timer_callback;
-#line 431 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NewTimer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewTimer)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NewTimer(interval, cmd)");
- {
- Uint32 interval = (Uint32)SvUV(ST(0));
- void * cmd = INT2PTR(void *,SvIV(ST(1)));
- SDL_TimerID RETVAL;
- dXSTARG;
-#line 327 "SDL_perl.xs"
- RETVAL = SDL_AddTimer(interval,sdl_perl_timer_callback,cmd);
-#line 450 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RemoveTimer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RemoveTimer)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::RemoveTimer(id)");
- {
- SDL_TimerID id = INT2PTR(SDL_TimerID,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 335 "SDL_perl.xs"
- RETVAL = SDL_RemoveTimer(id);
-#line 468 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWFromFile); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWFromFile)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::RWFromFile(file, mode)");
- {
- char* file = (char *)SvPV_nolen(ST(0));
- char * mode = (char *)SvPV_nolen(ST(1));
- SDL_RWops * RETVAL;
- dXSTARG;
-#line 344 "SDL_perl.xs"
- RETVAL = SDL_RWFromFile(file,mode);
-#line 487 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWFromFP); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWFromFP)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::RWFromFP(fp, autoclose)");
- {
- FILE* fp = PerlIO_findFILE(IoIFP(sv_2io(ST(0))));
- int autoclose = (int)SvIV(ST(1));
- SDL_RWops * RETVAL;
- dXSTARG;
-#line 353 "SDL_perl.xs"
- RETVAL = SDL_RWFromFP(fp,autoclose);
-#line 506 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWFromMem); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWFromMem)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::RWFromMem(mem, size)");
- {
- char* mem = (char *)SvPV_nolen(ST(0));
- int size = (int)SvIV(ST(1));
- SDL_RWops * RETVAL;
- dXSTARG;
-#line 362 "SDL_perl.xs"
- RETVAL = SDL_RWFromMem((void*)mem,size);
-#line 525 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWFromConstMem); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWFromConstMem)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::RWFromConstMem(mem, size)");
- {
- const char* mem = (const char *)SvPV_nolen(ST(0));
- int size = (int)SvIV(ST(1));
- SDL_RWops * RETVAL;
- dXSTARG;
-#line 371 "SDL_perl.xs"
- RETVAL = SDL_RWFromConstMem((const void*)mem,size);
-#line 544 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_AllocRW); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_AllocRW)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::AllocRW()");
- {
- SDL_RWops * RETVAL;
- dXSTARG;
-#line 378 "SDL_perl.xs"
- RETVAL = SDL_AllocRW();
-#line 561 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeRW); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeRW)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeRW(rw)");
- {
- SDL_RWops* rw = INT2PTR(SDL_RWops *,SvIV(ST(0)));
-#line 386 "SDL_perl.xs"
- SDL_FreeRW(rw);
-#line 577 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_RWseek); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWseek)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::RWseek(rw, off, whence)");
- {
- SDL_RWops* rw = INT2PTR(SDL_RWops *,SvIV(ST(0)));
- int off = (int)SvIV(ST(1));
- int whence = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 394 "SDL_perl.xs"
- RETVAL = SDL_RWseek(rw,off,whence);
-#line 596 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWtell); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWtell)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::RWtell(rw)");
- {
- SDL_RWops* rw = INT2PTR(SDL_RWops *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 402 "SDL_perl.xs"
- RETVAL = SDL_RWtell(rw);
-#line 614 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWread); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWread)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::RWread(rw, mem, size, n)");
- {
- SDL_RWops* rw = INT2PTR(SDL_RWops *,SvIV(ST(0)));
- char* mem = (char *)SvPV_nolen(ST(1));
- int size = (int)SvIV(ST(2));
- int n = (int)SvIV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 413 "SDL_perl.xs"
- RETVAL = SDL_RWread(rw,mem,size,n);
-#line 635 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWwrite); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWwrite)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::RWwrite(rw, mem, size, n)");
- {
- SDL_RWops* rw = INT2PTR(SDL_RWops *,SvIV(ST(0)));
- char* mem = (char *)SvPV_nolen(ST(1));
- int size = (int)SvIV(ST(2));
- int n = (int)SvIV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 424 "SDL_perl.xs"
- RETVAL = SDL_RWwrite(rw,mem,size,n);
-#line 656 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RWclose); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RWclose)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::RWclose(rw)");
- {
- SDL_RWops* rw = INT2PTR(SDL_RWops *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 432 "SDL_perl.xs"
- RETVAL = SDL_RWclose(rw);
-#line 674 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDNumDrives); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDNumDrives)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::CDNumDrives()");
- {
- int RETVAL;
- dXSTARG;
-#line 439 "SDL_perl.xs"
- RETVAL = SDL_CDNumDrives();
-#line 691 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDName); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDName)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDName(drive)");
- {
- int drive = (int)SvIV(ST(0));
- char * RETVAL;
- dXSTARG;
-#line 447 "SDL_perl.xs"
- RETVAL = strdup(SDL_CDName(drive));
-#line 709 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDOpen); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDOpen)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDOpen(drive)");
- {
- int drive = (int)SvIV(ST(0));
- SDL_CD * RETVAL;
- dXSTARG;
-#line 455 "SDL_perl.xs"
- RETVAL = SDL_CDOpen(drive);
-#line 727 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDTrackId); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDTrackId)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDTrackId(track)");
- {
- SDL_CDtrack * track = INT2PTR(SDL_CDtrack *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 463 "SDL_perl.xs"
- RETVAL = track->id;
-#line 745 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDTrackType); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDTrackType)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDTrackType(track)");
- {
- SDL_CDtrack * track = INT2PTR(SDL_CDtrack *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 471 "SDL_perl.xs"
- RETVAL = track->type;
-#line 763 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDTrackLength); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDTrackLength)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDTrackLength(track)");
- {
- SDL_CDtrack * track = INT2PTR(SDL_CDtrack *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 479 "SDL_perl.xs"
- RETVAL = track->length;
-#line 781 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDTrackOffset); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDTrackOffset)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDTrackOffset(track)");
- {
- SDL_CDtrack * track = INT2PTR(SDL_CDtrack *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 487 "SDL_perl.xs"
- RETVAL = track->offset;
-#line 799 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDStatus); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDStatus)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDStatus(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 495 "SDL_perl.xs"
- RETVAL = SDL_CDStatus(cd);
-#line 817 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDPlayTracks); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDPlayTracks)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::CDPlayTracks(cd, start_track, ntracks, start_frame, nframes)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int start_track = (int)SvIV(ST(1));
- int ntracks = (int)SvIV(ST(2));
- int start_frame = (int)SvIV(ST(3));
- int nframes = (int)SvIV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 507 "SDL_perl.xs"
- RETVAL = SDL_CDPlayTracks(cd,start_track,start_frame,ntracks,nframes);
-#line 839 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDPlay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDPlay)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::CDPlay(cd, start, length)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int start = (int)SvIV(ST(1));
- int length = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 517 "SDL_perl.xs"
- RETVAL = SDL_CDPlay(cd,start,length);
-#line 859 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDPause); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDPause)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDPause(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 525 "SDL_perl.xs"
- RETVAL = SDL_CDPause(cd);
-#line 877 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDResume); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDResume)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDResume(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 533 "SDL_perl.xs"
- RETVAL = SDL_CDResume(cd);
-#line 895 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDStop); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDStop)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDStop(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 541 "SDL_perl.xs"
- RETVAL = SDL_CDStop(cd);
-#line 913 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDEject); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDEject)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDEject(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 549 "SDL_perl.xs"
- RETVAL = SDL_CDEject(cd);
-#line 931 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDClose); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDClose)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDClose(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
-#line 557 "SDL_perl.xs"
- SDL_CDClose(cd);
-#line 947 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_CDId); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDId)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDId(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 563 "SDL_perl.xs"
- RETVAL = cd->id;
-#line 964 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDNumTracks); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDNumTracks)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDNumTracks(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 571 "SDL_perl.xs"
- RETVAL = cd->numtracks;
-#line 982 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDCurTrack); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDCurTrack)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDCurTrack(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 579 "SDL_perl.xs"
- RETVAL = cd->cur_track;
-#line 1000 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDCurFrame); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDCurFrame)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::CDCurFrame(cd)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 587 "SDL_perl.xs"
- RETVAL = cd->cur_frame;
-#line 1018 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CDTrack); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CDTrack)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::CDTrack(cd, number)");
- {
- SDL_CD * cd = INT2PTR(SDL_CD *,SvIV(ST(0)));
- int number = (int)SvIV(ST(1));
- SDL_CDtrack * RETVAL;
- dXSTARG;
-#line 596 "SDL_perl.xs"
- RETVAL = (SDL_CDtrack *)(cd->track + number);
-#line 1037 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_PumpEvents); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PumpEvents)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::PumpEvents()");
- {
-#line 603 "SDL_perl.xs"
- SDL_PumpEvents();
-#line 1052 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_PushEvent); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PushEvent)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::PushEvent(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 609 "SDL_perl.xs"
- RETVAL = SDL_PushEvent( e );
-#line 1069 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NewEvent); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewEvent)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::NewEvent()");
- {
- SDL_Event * RETVAL;
- dXSTARG;
-#line 616 "SDL_perl.xs"
- RETVAL = (SDL_Event *) safemalloc (sizeof(SDL_Event));
-#line 1086 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeEvent); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeEvent)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeEvent(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
-#line 624 "SDL_perl.xs"
- safefree(e);
-#line 1102 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_PollEvent); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PollEvent)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::PollEvent(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 630 "SDL_perl.xs"
- RETVAL = SDL_PollEvent(e);
-#line 1119 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_WaitEvent); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WaitEvent)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::WaitEvent(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 638 "SDL_perl.xs"
- RETVAL = SDL_WaitEvent(e);
-#line 1137 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_EventState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_EventState)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::EventState(type, state)");
- {
- Uint8 type = (unsigned char)SvUV(ST(0));
- int state = (int)SvIV(ST(1));
- Uint8 RETVAL;
- dXSTARG;
-#line 647 "SDL_perl.xs"
- RETVAL = SDL_EventState(type,state);
-#line 1156 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_EventType); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_EventType)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::EventType(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 655 "SDL_perl.xs"
- RETVAL = e->type;
-#line 1174 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetEventType); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetEventType)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SetEventType(e, type)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 type = (unsigned char)SvUV(ST(1));
- Uint8 RETVAL;
- dXSTARG;
-#line 664 "SDL_perl.xs"
- RETVAL = e->type;
- e->type = type;
-#line 1194 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ActiveEventGain); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ActiveEventGain)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::ActiveEventGain(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 673 "SDL_perl.xs"
- RETVAL = e->active.gain;
-#line 1212 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ActiveEventState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ActiveEventState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::ActiveEventState(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 681 "SDL_perl.xs"
- RETVAL = e->active.state;
-#line 1230 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_KeyEventState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_KeyEventState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::KeyEventState(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 689 "SDL_perl.xs"
- RETVAL = e->key.state;
-#line 1248 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_KeyEventSym); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_KeyEventSym)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::KeyEventSym(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 697 "SDL_perl.xs"
- RETVAL = e->key.keysym.sym;
-#line 1266 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_KeyEventMod); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_KeyEventMod)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::KeyEventMod(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 705 "SDL_perl.xs"
- RETVAL = e->key.keysym.mod;
-#line 1284 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_KeyEventUnicode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_KeyEventUnicode)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::KeyEventUnicode(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 713 "SDL_perl.xs"
- RETVAL = e->key.keysym.unicode;
-#line 1302 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_KeyEventScanCode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_KeyEventScanCode)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::KeyEventScanCode(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 721 "SDL_perl.xs"
- RETVAL = e->key.keysym.scancode;
-#line 1320 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseMotionState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseMotionState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseMotionState(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 729 "SDL_perl.xs"
- RETVAL = e->motion.state;
-#line 1338 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseMotionX); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseMotionX)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseMotionX(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 737 "SDL_perl.xs"
- RETVAL = e->motion.x;
-#line 1356 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseMotionY); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseMotionY)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseMotionY(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 745 "SDL_perl.xs"
- RETVAL = e->motion.y;
-#line 1374 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseMotionXrel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseMotionXrel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseMotionXrel(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Sint16 RETVAL;
- dXSTARG;
-#line 753 "SDL_perl.xs"
- RETVAL = e->motion.xrel;
-#line 1392 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseMotionYrel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseMotionYrel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseMotionYrel(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Sint16 RETVAL;
- dXSTARG;
-#line 761 "SDL_perl.xs"
- RETVAL = e->motion.yrel;
-#line 1410 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseButtonState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseButtonState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseButtonState(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 769 "SDL_perl.xs"
- RETVAL = e->button.state;
-#line 1428 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseButton); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseButton)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseButton(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 777 "SDL_perl.xs"
- RETVAL = e->button.button;
-#line 1446 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseButtonX); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseButtonX)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseButtonX(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 785 "SDL_perl.xs"
- RETVAL = e->button.x;
-#line 1464 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MouseButtonY); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MouseButtonY)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MouseButtonY(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 793 "SDL_perl.xs"
- RETVAL = e->button.y;
-#line 1482 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SysWMEventMsg); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SysWMEventMsg)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SysWMEventMsg(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- SDL_SysWMmsg * RETVAL;
- dXSTARG;
-#line 801 "SDL_perl.xs"
- RETVAL = e->syswm.msg;
-#line 1500 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_EnableUnicode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_EnableUnicode)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::EnableUnicode(enable)");
- {
- int enable = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 809 "SDL_perl.xs"
- RETVAL = SDL_EnableUNICODE(enable);
-#line 1518 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_EnableKeyRepeat); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_EnableKeyRepeat)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::EnableKeyRepeat(delay, interval)");
- {
- int delay = (int)SvIV(ST(0));
- int interval = (int)SvIV(ST(1));
-#line 818 "SDL_perl.xs"
- SDL_EnableKeyRepeat(delay,interval);
-#line 1535 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_GetModState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetModState)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetModState()");
- {
- Uint32 RETVAL;
- dXSTARG;
-#line 823 "SDL_perl.xs"
- RETVAL = SDL_GetModState();
-#line 1551 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetModState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetModState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SetModState(state)");
- {
- Uint32 state = (Uint32)SvUV(ST(0));
-#line 831 "SDL_perl.xs"
- SDL_SetModState(state);
-#line 1567 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_GetKeyName); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetKeyName)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::GetKeyName(sym)");
- {
- int sym = (int)SvIV(ST(0));
- char * RETVAL;
- dXSTARG;
-#line 837 "SDL_perl.xs"
- RETVAL = SDL_GetKeyName(sym);
-#line 1584 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CreateRGBSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CreateRGBSurface)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::CreateRGBSurface(flags, width, height, depth, Rmask, Gmask, Bmask, Amask)");
- {
- Uint32 flags = (Uint32)SvUV(ST(0));
- int width = (int)SvIV(ST(1));
- int height = (int)SvIV(ST(2));
- int depth = (int)SvIV(ST(3));
- Uint32 Rmask = (Uint32)SvUV(ST(4));
- Uint32 Gmask = (Uint32)SvUV(ST(5));
- Uint32 Bmask = (Uint32)SvUV(ST(6));
- Uint32 Amask = (Uint32)SvUV(ST(7));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 852 "SDL_perl.xs"
- RETVAL = SDL_CreateRGBSurface ( flags, width, height,
- depth, Rmask, Gmask, Bmask, Amask );
-#line 1610 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_CreateRGBSurfaceFrom); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CreateRGBSurfaceFrom)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::CreateRGBSurfaceFrom(pixels, width, height, depth, pitch, Rmask, Gmask, Bmask, Amask)");
- {
- char * pixels = (char *)SvPV_nolen(ST(0));
- int width = (int)SvIV(ST(1));
- int height = (int)SvIV(ST(2));
- int depth = (int)SvIV(ST(3));
- int pitch = (int)SvIV(ST(4));
- Uint32 Rmask = (Uint32)SvUV(ST(5));
- Uint32 Gmask = (Uint32)SvUV(ST(6));
- Uint32 Bmask = (Uint32)SvUV(ST(7));
- Uint32 Amask = (Uint32)SvUV(ST(8));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 870 "SDL_perl.xs"
- Uint8* pixeldata;
- Uint32 len = pitch * height;
- New(0,pixeldata,len,Uint8);
- Copy(pixels,pixeldata,len,Uint8);
- RETVAL = SDL_CreateRGBSurfaceFrom ( pixeldata, width, height,
- depth, pitch, Rmask, Gmask, Bmask, Amask );
-#line 1641 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-#ifdef HAVE_SDL_IMAGE
-#define XSubPPtmpAAAA 1
-
-XS(XS_SDL_IMGLoad); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_IMGLoad)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::IMGLoad(fname)");
- {
- char * fname = (char *)SvPV_nolen(ST(0));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 885 "SDL_perl.xs"
- RETVAL = IMG_Load(fname);
-#line 1662 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-#endif
-XS(XS_SDL_SurfaceCopy); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceCopy)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceCopy(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 895 "SDL_perl.xs"
- Uint8* pixels;
- Uint32 size = surface->pitch * surface->h;
- New(0,pixels,size,Uint8);
- Copy(surface->pixels,pixels,size,Uint8);
- RETVAL = SDL_CreateRGBSurfaceFrom(pixels,surface->w,surface->h,
- surface->format->BitsPerPixel, surface->pitch,
- surface->format->Rmask, surface->format->Gmask,
- surface->format->Bmask, surface->format->Amask);
-#line 1688 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeSurface)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeSurface(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
-#line 910 "SDL_perl.xs"
- if (surface) {
- Uint8* pixels = surface->pixels;
- Uint32 flags = surface->flags;
- SDL_FreeSurface(surface);
- if (flags & SDL_PREALLOC)
- Safefree(pixels);
- }
-#line 1710 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SurfaceFlags); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceFlags)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceFlags(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 922 "SDL_perl.xs"
- RETVAL = surface->flags;
-#line 1727 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfacePalette); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfacePalette)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfacePalette(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Palette * RETVAL;
- dXSTARG;
-#line 930 "SDL_perl.xs"
- RETVAL = surface->format->palette;
-#line 1745 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceBitsPerPixel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceBitsPerPixel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceBitsPerPixel(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 938 "SDL_perl.xs"
- RETVAL = surface->format->BitsPerPixel;
-#line 1763 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceBytesPerPixel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceBytesPerPixel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceBytesPerPixel(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 946 "SDL_perl.xs"
- RETVAL = surface->format->BytesPerPixel;
-#line 1781 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceRshift); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceRshift)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceRshift(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 954 "SDL_perl.xs"
- RETVAL = surface->format->Rshift;
-#line 1799 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceGshift); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceGshift)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceGshift(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 962 "SDL_perl.xs"
- RETVAL = surface->format->Gshift;
-#line 1817 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceBshift); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceBshift)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceBshift(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 970 "SDL_perl.xs"
- RETVAL = surface->format->Bshift;
-#line 1835 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceAshift); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceAshift)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceAshift(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 978 "SDL_perl.xs"
- RETVAL = surface->format->Ashift;
-#line 1853 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceRmask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceRmask)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceRmask(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 986 "SDL_perl.xs"
- RETVAL = surface->format->Rmask;
-#line 1871 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceGmask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceGmask)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceGmask(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 994 "SDL_perl.xs"
- RETVAL = surface->format->Gmask;
-#line 1889 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceBmask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceBmask)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceBmask(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 1002 "SDL_perl.xs"
- RETVAL = surface->format->Bmask;
-#line 1907 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceAmask); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceAmask)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceAmask(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 1010 "SDL_perl.xs"
- RETVAL = surface->format->Amask;
-#line 1925 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceColorKey); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceColorKey)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceColorKey(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 1018 "SDL_perl.xs"
- RETVAL = surface->format->colorkey;
-#line 1943 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceAlpha); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceAlpha)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceAlpha(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 1026 "SDL_perl.xs"
- RETVAL = surface->format->alpha;
-#line 1961 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceW); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceW)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceW(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 1034 "SDL_perl.xs"
- RETVAL = surface->w;
-#line 1979 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceH); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceH)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceH(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 1042 "SDL_perl.xs"
- RETVAL = surface->h;
-#line 1997 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfacePitch); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfacePitch)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfacePitch(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 1050 "SDL_perl.xs"
- RETVAL = surface->pitch;
-#line 2015 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfacePixels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfacePixels)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfacePixels(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SV * RETVAL;
-#line 1058 "SDL_perl.xs"
- RETVAL = newSVpvn(surface->pixels,surface->pitch*surface->h);
-#line 2032 "SDL_perl.c"
- ST(0) = RETVAL;
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfacePixel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfacePixel)
-{
- dXSARGS;
- if (items < 3)
- Perl_croak(aTHX_ "Usage: SDL::SurfacePixel(surface, x, y, ...)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint32 x = (Sint32)SvIV(ST(1));
- Sint32 y = (Sint32)SvIV(ST(2));
- SDL_Color * RETVAL;
- dXSTARG;
-#line 1068 "SDL_perl.xs"
- SDL_Color* color;
- int pix,index;
- Uint8 r,g,b,a;
- int bpp = surface->format->BytesPerPixel;
- Uint8* p = (Uint8*)surface->pixels + bpp*x + surface->pitch*y;
- if ( items < 3 || items > 4 )
- Perl_croak(aTHX_ "usage: SDL::SurfacePixel(surface,x,y,[color])");
- if ( items == 4) {
- color = (SDL_Color*)SvIV(ST(3));
- pix = SDL_MapRGB(surface->format,color->r,color->g,color->b);
- switch(bpp) {
- case 1:
- *(Uint8*)p = pix;
- break;
- case 2:
- *(Uint16*)p = pix;
- break;
- case 3:
- if (SDL_BYTEORDER == SDL_BIG_ENDIAN) {
- p[0] = (pix >> 16) & 0xff;
- p[1] = (pix >> 8) & 0xff;
- p[2] = pix & 0xff;
- } else {
- p[0] = pix & 0xff;
- p[1] = (pix >> 8) & 0xff;
- p[2] = (pix >> 16) & 0xff;
- }
- break;
- case 4:
- *(Uint32*)p = pix;
- break;
- }
- }
- RETVAL = (SDL_Color *) safemalloc(sizeof(SDL_Color));
- switch(bpp) {
- case 1:
- index = *(Uint8*)p;
- memcpy(RETVAL,&surface->format->palette[index],sizeof(SDL_Color));
- break;
- case 2:
- pix = *(Uint16*)p;
- SDL_GetRGB(pix,surface->format,&r,&g,&b);
- RETVAL->r = r;
- RETVAL->g = g;
- RETVAL->b = b;
- break;
- case 3:
- case 4:
- pix = *(Uint32*)p;
- SDL_GetRGB(pix,surface->format,&r,&g,&b);
- RETVAL->r = r;
- RETVAL->g = g;
- RETVAL->b = b;
- break;
- }
-#line 2107 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MUSTLOCK); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MUSTLOCK)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MUSTLOCK(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 1130 "SDL_perl.xs"
- RETVAL = SDL_MUSTLOCK(surface);
-#line 2125 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceLock); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceLock)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceLock(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 1138 "SDL_perl.xs"
- RETVAL = SDL_LockSurface(surface);
-#line 2143 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SurfaceUnlock); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SurfaceUnlock)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SurfaceUnlock(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
-#line 1146 "SDL_perl.xs"
- SDL_UnlockSurface(surface);
-#line 2159 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_GetVideoSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetVideoSurface)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetVideoSurface()");
- {
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 1151 "SDL_perl.xs"
- RETVAL = SDL_GetVideoSurface();
-#line 2175 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_VideoInfo); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_VideoInfo)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::VideoInfo()");
- {
- HV * RETVAL;
-#line 1159 "SDL_perl.xs"
- HV *hv;
- SDL_VideoInfo *info;
- info = (SDL_VideoInfo *) safemalloc ( sizeof(SDL_VideoInfo));
- memcpy(info,SDL_GetVideoInfo(),sizeof(SDL_VideoInfo));
- hv = newHV();
- hv_store(hv,"hw_available",strlen("hw_available"),
- newSViv(info->hw_available),0);
- hv_store(hv,"wm_available",strlen("wm_available"),
- newSViv(info->wm_available),0);
- hv_store(hv,"blit_hw",strlen("blit_hw"),
- newSViv(info->blit_hw),0);
- hv_store(hv,"blit_hw_CC",strlen("blit_hw_CC"),
- newSViv(info->blit_hw_CC),0);
- hv_store(hv,"blit_hw_A",strlen("blit_hw_A"),
- newSViv(info->blit_hw_A),0);
- hv_store(hv,"blit_sw",strlen("blit_sw"),
- newSViv(info->blit_sw),0);
- hv_store(hv,"blit_sw_CC",strlen("blit_sw_CC"),
- newSViv(info->blit_sw_CC),0);
- hv_store(hv,"blit_sw_A",strlen("blit_sw_A"),
- newSViv(info->blit_sw_A),0);
- hv_store(hv,"blit_fill",strlen("blit_fill"),
- newSViv(info->blit_fill),0);
- hv_store(hv,"video_mem",strlen("video_mem"),
- newSViv(info->video_mem),0);
- RETVAL = hv;
-#line 2216 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NewRect); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewRect)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::NewRect(x, y, w, h)");
- {
- Sint16 x = (Sint16)SvIV(ST(0));
- Sint16 y = (Sint16)SvIV(ST(1));
- Uint16 w = (Uint16)SvUV(ST(2));
- Uint16 h = (Uint16)SvUV(ST(3));
- SDL_Rect * RETVAL;
- dXSTARG;
-#line 1195 "SDL_perl.xs"
- RETVAL = (SDL_Rect *) safemalloc (sizeof(SDL_Rect));
- RETVAL->x = x;
- RETVAL->y = y;
- RETVAL->w = w;
- RETVAL->h = h;
-#line 2242 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeRect); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeRect)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeRect(rect)");
- {
- SDL_Rect * rect = INT2PTR(SDL_Rect *,SvIV(ST(0)));
-#line 1207 "SDL_perl.xs"
- safefree(rect);
-#line 2258 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_RectX); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RectX)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::RectX(rect, ...)");
- {
- SDL_Rect * rect = INT2PTR(SDL_Rect *,SvIV(ST(0)));
- Sint16 RETVAL;
- dXSTARG;
-#line 1213 "SDL_perl.xs"
- if (items > 1 ) rect->x = SvIV(ST(1));
- RETVAL = rect->x;
-#line 2276 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RectY); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RectY)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::RectY(rect, ...)");
- {
- SDL_Rect * rect = INT2PTR(SDL_Rect *,SvIV(ST(0)));
- Sint16 RETVAL;
- dXSTARG;
-#line 1222 "SDL_perl.xs"
- if (items > 1 ) rect->y = SvIV(ST(1));
- RETVAL = rect->y;
-#line 2295 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RectW); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RectW)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::RectW(rect, ...)");
- {
- SDL_Rect * rect = INT2PTR(SDL_Rect *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 1231 "SDL_perl.xs"
- if (items > 1 ) rect->w = SvIV(ST(1));
- RETVAL = rect->w;
-#line 2314 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_RectH); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_RectH)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::RectH(rect, ...)");
- {
- SDL_Rect * rect = INT2PTR(SDL_Rect *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 1240 "SDL_perl.xs"
- if (items > 1 ) rect->h = SvIV(ST(1));
- RETVAL = rect->h;
-#line 2333 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ListModes); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ListModes)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::ListModes(format, flags)");
- {
- Uint32 flags = (Uint32)SvUV(ST(1));
- SDL_PixelFormat * format = INT2PTR(SDL_PixelFormat *,SvIV(ST(0)));
- AV * RETVAL;
-#line 1250 "SDL_perl.xs"
- SDL_Rect **mode;
- RETVAL = newAV();
- mode = SDL_ListModes(format,flags);
- if (mode == (SDL_Rect**)-1 ) {
- av_push(RETVAL,newSVpv("all",0));
- } else if (! mode ) {
- av_push(RETVAL,newSVpv("none",0));
- } else {
- for (;*mode;mode++) {
- av_push(RETVAL,newSViv(PTR2IV(*mode)));
- }
- }
-#line 2362 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NewColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewColor)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::NewColor(r, g, b)");
- {
- Uint8 r = (unsigned char)SvUV(ST(0));
- Uint8 g = (unsigned char)SvUV(ST(1));
- Uint8 b = (unsigned char)SvUV(ST(2));
- SDL_Color * RETVAL;
- dXSTARG;
-#line 1272 "SDL_perl.xs"
- RETVAL = (SDL_Color *) safemalloc(sizeof(SDL_Color));
- RETVAL->r = r;
- RETVAL->g = g;
- RETVAL->b = b;
-#line 2386 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ColorR); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ColorR)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::ColorR(color, ...)");
- {
- SDL_Color * color = INT2PTR(SDL_Color *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 1283 "SDL_perl.xs"
- if (items > 1 ) color->r = SvIV(ST(1));
- RETVAL = color->r;
-#line 2405 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ColorG); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ColorG)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::ColorG(color, ...)");
- {
- SDL_Color * color = INT2PTR(SDL_Color *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 1292 "SDL_perl.xs"
- if (items > 1 ) color->g = SvIV(ST(1));
- RETVAL = color->g;
-#line 2424 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ColorB); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ColorB)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::ColorB(color, ...)");
- {
- SDL_Color * color = INT2PTR(SDL_Color *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 1301 "SDL_perl.xs"
- if (items > 1 ) color->b = SvIV(ST(1));
- RETVAL = color->b;
-#line 2443 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeColor)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeColor(color)");
- {
- SDL_Color * color = INT2PTR(SDL_Color *,SvIV(ST(0)));
-#line 1310 "SDL_perl.xs"
- return; safefree(color);
-#line 2459 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NewPalette); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewPalette)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NewPalette(number)");
- {
- int number = (int)SvIV(ST(0));
- SDL_Palette * RETVAL;
- dXSTARG;
-#line 1316 "SDL_perl.xs"
- RETVAL = (SDL_Palette *)safemalloc(sizeof(SDL_Palette));
- RETVAL->colors = (SDL_Color *)safemalloc(number *
- sizeof(SDL_Color));
- RETVAL->ncolors = number;
-#line 2479 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_PaletteNColors); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PaletteNColors)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::PaletteNColors(palette, ...)");
- {
- SDL_Palette * palette = INT2PTR(SDL_Palette *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 1327 "SDL_perl.xs"
- if ( items > 1 ) palette->ncolors = SvIV(ST(1));
- RETVAL = palette->ncolors;
-#line 2498 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_PaletteColors); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PaletteColors)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::PaletteColors(palette, index, ...)");
- {
- SDL_Palette * palette = INT2PTR(SDL_Palette *,SvIV(ST(0)));
- int index = (int)SvIV(ST(1));
- SDL_Color * RETVAL;
- dXSTARG;
-#line 1337 "SDL_perl.xs"
- if ( items > 2 ) {
- palette->colors[index].r = SvUV(ST(2));
- palette->colors[index].g = SvUV(ST(3));
- palette->colors[index].b = SvUV(ST(4));
- }
- RETVAL = (SDL_Color *)(palette->colors + index);
-#line 2522 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_VideoModeOK); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_VideoModeOK)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::VideoModeOK(width, height, bpp, flags)");
- {
- int width = (int)SvIV(ST(0));
- int height = (int)SvIV(ST(1));
- int bpp = (int)SvIV(ST(2));
- Uint32 flags = (Uint32)SvUV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 1353 "SDL_perl.xs"
- RETVAL = SDL_VideoModeOK(width,height,bpp,flags);
-#line 2543 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetVideoMode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetVideoMode)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::SetVideoMode(width, height, bpp, flags)");
- {
- int width = (int)SvIV(ST(0));
- int height = (int)SvIV(ST(1));
- int bpp = (int)SvIV(ST(2));
- Uint32 flags = (Uint32)SvUV(ST(3));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 1364 "SDL_perl.xs"
- RETVAL = SDL_SetVideoMode(width,height,bpp,flags);
-#line 2564 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_UpdateRect); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_UpdateRect)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::UpdateRect(surface, x, y, w, h)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int x = (int)SvIV(ST(1));
- int y = (int)SvIV(ST(2));
- int w = (int)SvIV(ST(3));
- int h = (int)SvIV(ST(4));
-#line 1376 "SDL_perl.xs"
- SDL_UpdateRect(surface,x,y,w,h);
-#line 2584 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_UpdateRects); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_UpdateRects)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::UpdateRects(surface, ...)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
-#line 1382 "SDL_perl.xs"
- SDL_Rect *rects, *temp;
- int num_rects,i;
- if ( items < 2 ) return;
- num_rects = items - 1;
- rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
- for(i=0;i<num_rects;i++) {
- temp = (SDL_Rect *)SvIV(ST(i+1));
- rects[i].x = temp->x;
- rects[i].y = temp->y;
- rects[i].w = temp->w;
- rects[i].h = temp->h;
- }
- SDL_UpdateRects(surface,num_rects,rects);
- safefree(rects);
-#line 2612 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_Flip); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Flip)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Flip(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 1401 "SDL_perl.xs"
- RETVAL = SDL_Flip(surface);
-#line 2629 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetColors); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetColors)
-{
- dXSARGS;
- if (items < 2)
- Perl_croak(aTHX_ "Usage: SDL::SetColors(surface, start, ...)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int start = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 1410 "SDL_perl.xs"
- SDL_Color *colors,*temp;
- int i, length;
- if ( items < 3 ) { RETVAL = 0; goto all_done; }
- length = items - 2;
- colors = (SDL_Color *)safemalloc(sizeof(SDL_Color)*(length+1));
- for ( i = 0; i < length ; i++ ) {
- temp = (SDL_Color *)SvIV(ST(i+2));
- colors[i].r = temp->r;
- colors[i].g = temp->g;
- colors[i].b = temp->b;
- }
- RETVAL = SDL_SetColors(surface, colors, start, length );
- safefree(colors);
-all_done:
-#line 2661 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MapRGB); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MapRGB)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::MapRGB(surface, r, g, b)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 r = (unsigned char)SvUV(ST(1));
- Uint8 g = (unsigned char)SvUV(ST(2));
- Uint8 b = (unsigned char)SvUV(ST(3));
- Uint32 RETVAL;
- dXSTARG;
-#line 1434 "SDL_perl.xs"
- RETVAL = SDL_MapRGB(surface->format,r,g,b);
-#line 2682 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MapRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MapRGBA)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::MapRGBA(surface, r, g, b, a)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint8 r = (unsigned char)SvUV(ST(1));
- Uint8 g = (unsigned char)SvUV(ST(2));
- Uint8 b = (unsigned char)SvUV(ST(3));
- Uint8 a = (unsigned char)SvUV(ST(4));
- Uint32 RETVAL;
- dXSTARG;
-#line 1446 "SDL_perl.xs"
- RETVAL = SDL_MapRGBA(surface->format,r,g,b,a);
-#line 2704 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GetRGB); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetRGB)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::GetRGB(surface, pixel)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 pixel = (Uint32)SvUV(ST(1));
- AV * RETVAL;
-#line 1455 "SDL_perl.xs"
- Uint8 r,g,b;
- SDL_GetRGB(pixel,surface->format,&r,&g,&b);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(r));
- av_push(RETVAL,newSViv(g));
- av_push(RETVAL,newSViv(b));
-#line 2727 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GetRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetRGBA)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::GetRGBA(surface, pixel)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 pixel = (Uint32)SvUV(ST(1));
- AV * RETVAL;
-#line 1469 "SDL_perl.xs"
- Uint8 r,g,b,a;
- SDL_GetRGBA(pixel,surface->format,&r,&g,&b,&a);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(r));
- av_push(RETVAL,newSViv(g));
- av_push(RETVAL,newSViv(b));
- av_push(RETVAL,newSViv(a));
-#line 2752 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SaveBMP); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SaveBMP)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SaveBMP(surface, filename)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- char * filename = (char *)SvPV_nolen(ST(1));
- int RETVAL;
- dXSTARG;
-#line 1484 "SDL_perl.xs"
- RETVAL = SDL_SaveBMP(surface,filename);
-#line 2772 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetColorKey); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetColorKey)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::SetColorKey(surface, flag, key)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 flag = (Uint32)SvUV(ST(1));
- SDL_Color * key = INT2PTR(SDL_Color *,SvIV(ST(2)));
- int RETVAL;
- dXSTARG;
-#line 1494 "SDL_perl.xs"
- Uint32 pixel = SDL_MapRGB(surface->format,key->r,key->g,key->b);
- RETVAL = SDL_SetColorKey(surface,flag,pixel);
-#line 2793 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetAlpha); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetAlpha)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::SetAlpha(surface, flag, alpha)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Uint32 flag = (Uint32)SvUV(ST(1));
- Uint8 alpha = (unsigned char)SvUV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 1505 "SDL_perl.xs"
- RETVAL = SDL_SetAlpha(surface,flag,alpha);
-#line 2813 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_DisplayFormat); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_DisplayFormat)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::DisplayFormat(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 1513 "SDL_perl.xs"
- RETVAL = SDL_DisplayFormat(surface);
-#line 2831 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_DisplayFormatAlpha); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_DisplayFormatAlpha)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::DisplayFormatAlpha(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 1521 "SDL_perl.xs"
- RETVAL = SDL_DisplayFormatAlpha(surface);
-#line 2849 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ConvertRGB); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ConvertRGB)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::ConvertRGB(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 1529 "SDL_perl.xs"
- SDL_PixelFormat fmt;
- fmt.palette = NULL;
- fmt.BitsPerPixel = 24;
- fmt.BytesPerPixel = 3;
- fmt.Rmask = 0x000000ff;
- fmt.Gmask = 0x0000ff00;
- fmt.Bmask = 0x00ff0000;
- fmt.Amask = 0x00000000;
- fmt.Rloss = 0;
- fmt.Gloss = 0;
- fmt.Bloss = 0;
- fmt.Aloss = 0;
- fmt.Rshift = 0;
- fmt.Gshift = 8;
- fmt.Bshift = 16;
- fmt.Ashift = 24;
- fmt.colorkey = 0;
- fmt.alpha = 0;
- RETVAL = SDL_ConvertSurface(surface,&fmt,surface->flags);
-#line 2885 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ConvertRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ConvertRGBA)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::ConvertRGBA(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 1555 "SDL_perl.xs"
- SDL_PixelFormat fmt;
- fmt.palette = NULL;
- fmt.BitsPerPixel = 32;
- fmt.BytesPerPixel = 4;
- fmt.Rmask = 0x000000ff;
- fmt.Gmask = 0x0000ff00;
- fmt.Bmask = 0x00ff0000;
- fmt.Amask = 0xff000000;
- fmt.Rloss = 0;
- fmt.Gloss = 0;
- fmt.Bloss = 0;
- fmt.Aloss = 0;
- fmt.Rshift = 0;
- fmt.Gshift = 8;
- fmt.Bshift = 16;
- fmt.Ashift = 24;
- fmt.colorkey = 0;
- fmt.alpha = 0;
- RETVAL = SDL_ConvertSurface(surface,&fmt,surface->flags);
-#line 2921 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_BlitSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_BlitSurface)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::BlitSurface(src, src_rect, dest, dest_rect)");
- {
- SDL_Surface * src = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Rect * src_rect = INT2PTR(SDL_Rect *,SvIV(ST(1)));
- SDL_Surface * dest = INT2PTR(SDL_Surface *,SvIV(ST(2)));
- SDL_Rect * dest_rect = INT2PTR(SDL_Rect *,SvIV(ST(3)));
- int RETVAL;
- dXSTARG;
-#line 1584 "SDL_perl.xs"
- RETVAL = SDL_BlitSurface(src,src_rect,dest,dest_rect);
-#line 2942 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FillRect); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FillRect)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::FillRect(dest, dest_rect, color)");
- {
- SDL_Surface * dest = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Rect * dest_rect = INT2PTR(SDL_Rect *,SvIV(ST(1)));
- SDL_Color * color = INT2PTR(SDL_Color *,SvIV(ST(2)));
- int RETVAL;
- dXSTARG;
-#line 1594 "SDL_perl.xs"
- Uint32 pixel = SDL_MapRGB(dest->format,color->r,color->g,color->b);
- RETVAL = SDL_FillRect(dest,dest_rect,pixel);
-#line 2963 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GetAppState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetAppState)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetAppState()");
- {
- Uint8 RETVAL;
- dXSTARG;
-#line 1602 "SDL_perl.xs"
- RETVAL = SDL_GetAppState();
-#line 2980 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_WMSetCaption); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WMSetCaption)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::WMSetCaption(title, icon)");
- {
- char * title = (char *)SvPV_nolen(ST(0));
- char * icon = (char *)SvPV_nolen(ST(1));
-#line 1612 "SDL_perl.xs"
- SDL_WM_SetCaption(title,icon);
-#line 2997 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_WMGetCaption); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WMGetCaption)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::WMGetCaption()");
- {
- AV * RETVAL;
-#line 1617 "SDL_perl.xs"
- char *title,*icon;
- SDL_WM_GetCaption(&title,&icon);
- RETVAL = newAV();
- av_push(RETVAL,newSVpv(title,0));
- av_push(RETVAL,newSVpv(icon,0));
-#line 3016 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_WMSetIcon); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WMSetIcon)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::WMSetIcon(icon)");
- {
- SDL_Surface * icon = INT2PTR(SDL_Surface *,SvIV(ST(0)));
-#line 1629 "SDL_perl.xs"
- SDL_WM_SetIcon(icon,NULL);
-#line 3033 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_WarpMouse); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WarpMouse)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::WarpMouse(x, y)");
- {
- Uint16 x = (Uint16)SvUV(ST(0));
- Uint16 y = (Uint16)SvUV(ST(1));
-#line 1636 "SDL_perl.xs"
- SDL_WarpMouse(x,y);
-#line 3049 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_GetMouseState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetMouseState)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetMouseState()");
- {
- AV * RETVAL;
-#line 1641 "SDL_perl.xs"
- Uint8 mask;
- int x;
- int y;
- mask = SDL_GetMouseState(&x,&y);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(mask));
- av_push(RETVAL,newSViv(x));
- av_push(RETVAL,newSViv(y));
-#line 3071 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GetRelativeMouseState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetRelativeMouseState)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetRelativeMouseState()");
- {
- AV * RETVAL;
-#line 1655 "SDL_perl.xs"
- Uint8 mask;
- int x;
- int y;
- mask = SDL_GetRelativeMouseState(&x,&y);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(mask));
- av_push(RETVAL,newSViv(x));
- av_push(RETVAL,newSViv(y));
-#line 3095 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NewCursor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewCursor)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::NewCursor(data, mask, x, y)");
- {
- SDL_Surface * data = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Surface * mask = INT2PTR(SDL_Surface *,SvIV(ST(1)));
- int x = (int)SvIV(ST(2));
- int y = (int)SvIV(ST(3));
- SDL_Cursor * RETVAL;
- dXSTARG;
-#line 1673 "SDL_perl.xs"
- RETVAL = SDL_CreateCursor((Uint8*)data->pixels,
- (Uint8*)mask->pixels,data->w,data->h,x,y);
-#line 3118 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeCursor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeCursor)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeCursor(cursor)");
- {
- SDL_Cursor * cursor = INT2PTR(SDL_Cursor *,SvIV(ST(0)));
-#line 1682 "SDL_perl.xs"
- SDL_FreeCursor(cursor);
-#line 3134 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SetCursor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetCursor)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SetCursor(cursor)");
- {
- SDL_Cursor * cursor = INT2PTR(SDL_Cursor *,SvIV(ST(0)));
-#line 1688 "SDL_perl.xs"
- SDL_SetCursor(cursor);
-#line 3149 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_GetCursor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetCursor)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetCursor()");
- {
- SDL_Cursor * RETVAL;
- dXSTARG;
-#line 1693 "SDL_perl.xs"
- RETVAL = SDL_GetCursor();
-#line 3165 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ShowCursor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ShowCursor)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::ShowCursor(toggle)");
- {
- int toggle = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 1701 "SDL_perl.xs"
- RETVAL = SDL_ShowCursor(toggle);
-#line 3183 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NewAudioSpec); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewAudioSpec)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::NewAudioSpec(freq, format, channels, samples)");
- {
- int freq = (int)SvIV(ST(0));
- Uint16 format = (Uint16)SvUV(ST(1));
- Uint8 channels = (unsigned char)SvUV(ST(2));
- Uint16 samples = (Uint16)SvUV(ST(3));
- SDL_AudioSpec * RETVAL;
- dXSTARG;
-#line 1712 "SDL_perl.xs"
- RETVAL = (SDL_AudioSpec *)safemalloc(sizeof(SDL_AudioSpec));
- RETVAL->freq = freq;
- RETVAL->format = format;
- RETVAL->channels = channels;
- RETVAL->samples = samples;
-#line 3208 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeAudioSpec); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeAudioSpec)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeAudioSpec(spec)");
- {
- SDL_AudioSpec * spec = INT2PTR(SDL_AudioSpec *,SvIV(ST(0)));
-#line 1724 "SDL_perl.xs"
- safefree(spec);
-#line 3224 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NewAudioCVT); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewAudioCVT)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::NewAudioCVT(src_format, src_channels, src_rate, dst_format, dst_channels, dst_rate)");
- {
- Uint16 src_format = (Uint16)SvUV(ST(0));
- Uint8 src_channels = (unsigned char)SvUV(ST(1));
- int src_rate = (int)SvIV(ST(2));
- Uint16 dst_format = (Uint16)SvUV(ST(3));
- Uint8 dst_channels = (unsigned char)SvUV(ST(4));
- int dst_rate = (int)SvIV(ST(5));
- SDL_AudioCVT * RETVAL;
- dXSTARG;
-#line 1735 "SDL_perl.xs"
- RETVAL = (SDL_AudioCVT *)safemalloc(sizeof(SDL_AudioCVT));
- if (SDL_BuildAudioCVT(RETVAL,src_format, src_channels, src_rate,
- dst_format, dst_channels, dst_rate)) {
- safefree(RETVAL); RETVAL = NULL; }
-#line 3249 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeAudioCVT); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeAudioCVT)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeAudioCVT(cvt)");
- {
- SDL_AudioCVT * cvt = INT2PTR(SDL_AudioCVT *,SvIV(ST(0)));
-#line 1746 "SDL_perl.xs"
- safefree(cvt);
-#line 3265 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_ConvertAudioData); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ConvertAudioData)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::ConvertAudioData(cvt, data, len)");
- {
- SDL_AudioCVT * cvt = INT2PTR(SDL_AudioCVT *,SvIV(ST(0)));
- Uint8 * data = INT2PTR(Uint8 *,SvIV(ST(1)));
- int len = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 1754 "SDL_perl.xs"
- cvt->len = len;
- cvt->buf = (Uint8*) safemalloc(cvt->len*cvt->len_mult);
- memcpy(cvt->buf,data,cvt->len);
- RETVAL = SDL_ConvertAudio(cvt);
-#line 3287 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_OpenAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OpenAudio)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::OpenAudio(spec, callback)");
- {
- SDL_AudioSpec * spec = INT2PTR(SDL_AudioSpec *,SvIV(ST(0)));
- SV* callback = ST(1);
- int RETVAL;
- dXSTARG;
-#line 1766 "SDL_perl.xs"
- spec->userdata = (void*)callback;
- spec->callback = sdl_perl_audio_callback;
- RETVAL = SDL_OpenAudio(spec,NULL);
-#line 3308 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GetAudioStatus); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetAudioStatus)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GetAudioStatus()");
- {
- Uint32 RETVAL;
- dXSTARG;
-#line 1775 "SDL_perl.xs"
- RETVAL = SDL_GetAudioStatus ();
-#line 3325 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_PauseAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PauseAudio)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::PauseAudio(p_on)");
- {
- int p_on = (int)SvIV(ST(0));
-#line 1783 "SDL_perl.xs"
- SDL_PauseAudio(p_on);
-#line 3341 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_LockAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_LockAudio)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::LockAudio()");
- {
-#line 1788 "SDL_perl.xs"
- SDL_LockAudio();
-#line 3355 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_UnlockAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_UnlockAudio)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::UnlockAudio()");
- {
-#line 1793 "SDL_perl.xs"
- SDL_UnlockAudio();
-#line 3369 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_CloseAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CloseAudio)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::CloseAudio()");
- {
-#line 1798 "SDL_perl.xs"
- SDL_CloseAudio();
-#line 3383 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_FreeWAV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeWAV)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeWAV(buf)");
- {
- Uint8 * buf = INT2PTR(Uint8 *,SvIV(ST(0)));
-#line 1804 "SDL_perl.xs"
- SDL_FreeWAV(buf);
-#line 3398 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_LoadWAV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_LoadWAV)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::LoadWAV(filename, spec)");
- {
- char * filename = (char *)SvPV_nolen(ST(0));
- SDL_AudioSpec * spec = INT2PTR(SDL_AudioSpec *,SvIV(ST(1)));
- AV * RETVAL;
-#line 1811 "SDL_perl.xs"
- SDL_AudioSpec *temp;
- Uint8 *buf;
- Uint32 len;
-
- RETVAL = newAV();
- temp = SDL_LoadWAV(filename,spec,&buf,&len);
- if ( ! temp ) goto error;
- av_push(RETVAL,newSViv(PTR2IV(temp)));
- av_push(RETVAL,newSViv(PTR2IV(buf)));
- av_push(RETVAL,newSViv(len));
-error:
-#line 3425 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-#ifdef HAVE_SDL_MIXER
-#define XSubPPtmpAAAB 1
-
-XS(XS_SDL_MixAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixAudio)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::MixAudio(dst, src, len, volume)");
- {
- Uint8 * dst = INT2PTR(Uint8 *,SvIV(ST(0)));
- Uint8 * src = INT2PTR(Uint8 *,SvIV(ST(1)));
- Uint32 len = (Uint32)SvUV(ST(2));
- int volume = (int)SvIV(ST(3));
-#line 1834 "SDL_perl.xs"
- SDL_MixAudio(dst,src,len,volume);
-#line 3448 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixOpenAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixOpenAudio)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::MixOpenAudio(frequency, format, channels, chunksize)");
- {
- int frequency = (int)SvIV(ST(0));
- Uint16 format = (Uint16)SvUV(ST(1));
- int channels = (int)SvIV(ST(2));
- int chunksize = (int)SvIV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 1843 "SDL_perl.xs"
- RETVAL = Mix_OpenAudio(frequency, format, channels, chunksize);
-#line 3468 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixAllocateChannels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixAllocateChannels)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixAllocateChannels(number)");
- {
- int number = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 1851 "SDL_perl.xs"
- RETVAL = Mix_AllocateChannels(number);
-#line 3486 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixQuerySpec); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixQuerySpec)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixQuerySpec()");
- {
- AV * RETVAL;
-#line 1858 "SDL_perl.xs"
- int freq, channels, status;
- Uint16 format;
- status = Mix_QuerySpec(&freq,&format,&channels);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(status));
- av_push(RETVAL,newSViv(freq));
- av_push(RETVAL,newSViv(format));
- av_push(RETVAL,newSViv(channels));
-#line 3509 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixLoadWAV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixLoadWAV)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixLoadWAV(filename)");
- {
- char * filename = (char *)SvPV_nolen(ST(0));
- Mix_Chunk * RETVAL;
- dXSTARG;
-#line 1873 "SDL_perl.xs"
- RETVAL = Mix_LoadWAV(filename);
-#line 3528 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixLoadMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixLoadMusic)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixLoadMusic(filename)");
- {
- char * filename = (char *)SvPV_nolen(ST(0));
- Mix_Music * RETVAL;
- dXSTARG;
-#line 1881 "SDL_perl.xs"
- RETVAL = Mix_LoadMUS(filename);
-#line 3546 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixQuickLoadWAV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixQuickLoadWAV)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixQuickLoadWAV(buf)");
- {
- Uint8 * buf = INT2PTR(Uint8 *,SvIV(ST(0)));
- Mix_Chunk * RETVAL;
- dXSTARG;
-#line 1889 "SDL_perl.xs"
- RETVAL = Mix_QuickLoad_WAV(buf);
-#line 3564 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFreeChunk); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFreeChunk)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixFreeChunk(chunk)");
- {
- Mix_Chunk * chunk = INT2PTR(Mix_Chunk *,SvIV(ST(0)));
-#line 1897 "SDL_perl.xs"
- Mix_FreeChunk(chunk);
-#line 3580 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixFreeMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFreeMusic)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixFreeMusic(music)");
- {
- Mix_Music * music = INT2PTR(Mix_Music *,SvIV(ST(0)));
-#line 1903 "SDL_perl.xs"
- Mix_FreeMusic(music);
-#line 3595 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixSetPostMixCallback); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixSetPostMixCallback)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixSetPostMixCallback(func, arg)");
- {
- void * func = INT2PTR(void *,SvIV(ST(0)));
- void * arg = INT2PTR(void *,SvIV(ST(1)));
-#line 1910 "SDL_perl.xs"
- Mix_SetPostMix(func,arg);
-#line 3611 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_PerlMixMusicHook); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_PerlMixMusicHook)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::PerlMixMusicHook()");
- {
- void * RETVAL;
- dXSTARG;
-#line 1915 "SDL_perl.xs"
- RETVAL = sdl_perl_music_callback;
-#line 3627 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixSetMusicHook); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixSetMusicHook)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixSetMusicHook(func, arg)");
- {
- void * func = INT2PTR(void *,SvIV(ST(0)));
- void * arg = INT2PTR(void *,SvIV(ST(1)));
-#line 1924 "SDL_perl.xs"
- Mix_HookMusic(func,arg);
-#line 3644 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixSetMusicFinishedHook); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixSetMusicFinishedHook)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixSetMusicFinishedHook(func)");
- {
- void * func = INT2PTR(void *,SvIV(ST(0)));
-#line 1930 "SDL_perl.xs"
- mix_music_finished_cv = func;
- Mix_HookMusicFinished(sdl_perl_music_finished_callback);
-#line 3660 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixGetMusicHookData); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixGetMusicHookData)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixGetMusicHookData()");
- {
- void * RETVAL;
- dXSTARG;
-#line 1936 "SDL_perl.xs"
- RETVAL = Mix_GetMusicHookData();
-#line 3676 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixReverseChannels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixReverseChannels)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixReverseChannels(number)");
- {
- int number = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 1944 "SDL_perl.xs"
- RETVAL = Mix_ReserveChannels ( number );
-#line 3694 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixGroupChannel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixGroupChannel)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixGroupChannel(which, tag)");
- {
- int which = (int)SvIV(ST(0));
- int tag = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 1953 "SDL_perl.xs"
- RETVAL = Mix_GroupChannel(which,tag);
-#line 3713 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixGroupChannels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixGroupChannels)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::MixGroupChannels(from, to, tag)");
- {
- int from = (int)SvIV(ST(0));
- int to = (int)SvIV(ST(1));
- int tag = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 1963 "SDL_perl.xs"
- RETVAL = Mix_GroupChannels(from,to,tag);
-#line 3733 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixGroupAvailable); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixGroupAvailable)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixGroupAvailable(tag)");
- {
- int tag = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 1971 "SDL_perl.xs"
- RETVAL = Mix_GroupAvailable(tag);
-#line 3751 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixGroupCount); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixGroupCount)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixGroupCount(tag)");
- {
- int tag = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 1979 "SDL_perl.xs"
- RETVAL = Mix_GroupCount(tag);
-#line 3769 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixGroupOldest); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixGroupOldest)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixGroupOldest(tag)");
- {
- int tag = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 1987 "SDL_perl.xs"
- RETVAL = Mix_GroupOldest(tag);
-#line 3787 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixGroupNewer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixGroupNewer)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixGroupNewer(tag)");
- {
- int tag = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 1995 "SDL_perl.xs"
- RETVAL = Mix_GroupNewer(tag);
-#line 3805 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixPlayChannel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPlayChannel)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::MixPlayChannel(channel, chunk, loops)");
- {
- int channel = (int)SvIV(ST(0));
- Mix_Chunk * chunk = INT2PTR(Mix_Chunk *,SvIV(ST(1)));
- int loops = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 2005 "SDL_perl.xs"
- RETVAL = Mix_PlayChannel(channel,chunk,loops);
-#line 3825 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixPlayChannelTimed); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPlayChannelTimed)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::MixPlayChannelTimed(channel, chunk, loops, ticks)");
- {
- int channel = (int)SvIV(ST(0));
- Mix_Chunk * chunk = INT2PTR(Mix_Chunk *,SvIV(ST(1)));
- int loops = (int)SvIV(ST(2));
- int ticks = (int)SvIV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 2016 "SDL_perl.xs"
- RETVAL = Mix_PlayChannelTimed(channel,chunk,loops,ticks);
-#line 3846 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixPlayMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPlayMusic)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixPlayMusic(music, loops)");
- {
- Mix_Music * music = INT2PTR(Mix_Music *,SvIV(ST(0)));
- int loops = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2025 "SDL_perl.xs"
- RETVAL = Mix_PlayMusic(music,loops);
-#line 3865 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadeInChannel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadeInChannel)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::MixFadeInChannel(channel, chunk, loops, ms)");
- {
- int channel = (int)SvIV(ST(0));
- Mix_Chunk * chunk = INT2PTR(Mix_Chunk *,SvIV(ST(1)));
- int loops = (int)SvIV(ST(2));
- int ms = (int)SvIV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 2036 "SDL_perl.xs"
- RETVAL = Mix_FadeInChannel(channel,chunk,loops,ms);
-#line 3886 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadeInChannelTimed); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadeInChannelTimed)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::MixFadeInChannelTimed(channel, chunk, loops, ms, ticks)");
- {
- int channel = (int)SvIV(ST(0));
- Mix_Chunk * chunk = INT2PTR(Mix_Chunk *,SvIV(ST(1)));
- int loops = (int)SvIV(ST(2));
- int ticks = (int)SvIV(ST(4));
- int ms = (int)SvIV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 2048 "SDL_perl.xs"
- RETVAL = Mix_FadeInChannelTimed(channel,chunk,loops,ms,ticks);
-#line 3908 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadeInMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadeInMusic)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::MixFadeInMusic(music, loops, ms)");
- {
- Mix_Music * music = INT2PTR(Mix_Music *,SvIV(ST(0)));
- int loops = (int)SvIV(ST(1));
- int ms = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 2058 "SDL_perl.xs"
- RETVAL = Mix_FadeInMusic(music,loops,ms);
-#line 3928 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixVolume); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixVolume)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixVolume(channel, volume)");
- {
- int channel = (int)SvIV(ST(0));
- int volume = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2067 "SDL_perl.xs"
- RETVAL = Mix_Volume(channel,volume);
-#line 3947 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixVolumeChunk); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixVolumeChunk)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixVolumeChunk(chunk, volume)");
- {
- Mix_Chunk * chunk = INT2PTR(Mix_Chunk *,SvIV(ST(0)));
- int volume = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2076 "SDL_perl.xs"
- RETVAL = Mix_VolumeChunk(chunk,volume);
-#line 3966 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixVolumeMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixVolumeMusic)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixVolumeMusic(volume)");
- {
- int volume = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2084 "SDL_perl.xs"
- RETVAL = Mix_VolumeMusic(volume);
-#line 3984 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixHaltChannel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixHaltChannel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixHaltChannel(channel)");
- {
- int channel = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2092 "SDL_perl.xs"
- RETVAL = Mix_HaltChannel(channel);
-#line 4002 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixHaltGroup); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixHaltGroup)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixHaltGroup(tag)");
- {
- int tag = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2100 "SDL_perl.xs"
- RETVAL = Mix_HaltGroup(tag);
-#line 4020 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixHaltMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixHaltMusic)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixHaltMusic()");
- {
- int RETVAL;
- dXSTARG;
-#line 2107 "SDL_perl.xs"
- RETVAL = Mix_HaltMusic();
-#line 4037 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixExpireChannel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixExpireChannel)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixExpireChannel(channel, ticks)");
- {
- int channel = (int)SvIV(ST(0));
- int ticks = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2116 "SDL_perl.xs"
- RETVAL = Mix_ExpireChannel ( channel,ticks);
-#line 4056 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadeOutChannel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadeOutChannel)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixFadeOutChannel(which, ms)");
- {
- int which = (int)SvIV(ST(0));
- int ms = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2125 "SDL_perl.xs"
- RETVAL = Mix_FadeOutChannel(which,ms);
-#line 4075 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadeOutGroup); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadeOutGroup)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::MixFadeOutGroup(which, ms)");
- {
- int which = (int)SvIV(ST(0));
- int ms = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2134 "SDL_perl.xs"
- RETVAL = Mix_FadeOutGroup(which,ms);
-#line 4094 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadeOutMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadeOutMusic)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixFadeOutMusic(ms)");
- {
- int ms = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2142 "SDL_perl.xs"
- RETVAL = Mix_FadeOutMusic(ms);
-#line 4112 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadingMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadingMusic)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixFadingMusic()");
- {
- Mix_Fading RETVAL;
- dXSTARG;
-#line 2149 "SDL_perl.xs"
- RETVAL = Mix_FadingMusic();
-#line 4129 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixFadingChannel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixFadingChannel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixFadingChannel(which)");
- {
- int which = (int)SvIV(ST(0));
- Mix_Fading RETVAL;
- dXSTARG;
-#line 2157 "SDL_perl.xs"
- RETVAL = Mix_FadingChannel(which);
-#line 4147 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixPause); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPause)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixPause(channel)");
- {
- int channel = (int)SvIV(ST(0));
-#line 2165 "SDL_perl.xs"
- Mix_Pause(channel);
-#line 4163 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixResume); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixResume)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixResume(channel)");
- {
- int channel = (int)SvIV(ST(0));
-#line 2171 "SDL_perl.xs"
- Mix_Resume(channel);
-#line 4178 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixPaused); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPaused)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixPaused(channel)");
- {
- int channel = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2177 "SDL_perl.xs"
- RETVAL = Mix_Paused(channel);
-#line 4195 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixPauseMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPauseMusic)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixPauseMusic()");
- {
-#line 2184 "SDL_perl.xs"
- Mix_PauseMusic();
-#line 4210 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixResumeMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixResumeMusic)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixResumeMusic()");
- {
-#line 2189 "SDL_perl.xs"
- Mix_ResumeMusic();
-#line 4224 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixRewindMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixRewindMusic)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixRewindMusic()");
- {
-#line 2194 "SDL_perl.xs"
- Mix_RewindMusic();
-#line 4238 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_MixPausedMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPausedMusic)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixPausedMusic()");
- {
- int RETVAL;
- dXSTARG;
-#line 2199 "SDL_perl.xs"
- RETVAL = Mix_PausedMusic();
-#line 4254 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixPlaying); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPlaying)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::MixPlaying(channel)");
- {
- int channel = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2207 "SDL_perl.xs"
- RETVAL = Mix_Playing(channel);
-#line 4272 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixPlayingMusic); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixPlayingMusic)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixPlayingMusic()");
- {
- int RETVAL;
- dXSTARG;
-#line 2214 "SDL_perl.xs"
- RETVAL = Mix_PlayingMusic();
-#line 4289 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_MixCloseAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_MixCloseAudio)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::MixCloseAudio()");
- {
-#line 2222 "SDL_perl.xs"
- Mix_CloseAudio();
-#line 4304 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-#endif
-XS(XS_SDL_GLLoadLibrary); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GLLoadLibrary)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::GLLoadLibrary(path)");
- {
- char * path = (char *)SvPV_nolen(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2230 "SDL_perl.xs"
- RETVAL = SDL_GL_LoadLibrary(path);
-#line 4322 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GLGetProcAddress); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GLGetProcAddress)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::GLGetProcAddress(proc)");
- {
- char * proc = (char *)SvPV_nolen(ST(0));
- void * RETVAL;
- dXSTARG;
-#line 2238 "SDL_perl.xs"
- RETVAL = SDL_GL_GetProcAddress(proc);
-#line 4340 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GLSetAttribute); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GLSetAttribute)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::GLSetAttribute(attr, value)");
- {
- int attr = (int)SvIV(ST(0));
- int value = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2247 "SDL_perl.xs"
- RETVAL = SDL_GL_SetAttribute(attr, value);
-#line 4359 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GLGetAttribute); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GLGetAttribute)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::GLGetAttribute(attr)");
- {
- int attr = (int)SvIV(ST(0));
- AV * RETVAL;
-#line 2255 "SDL_perl.xs"
- int value;
- RETVAL = newAV();
- av_push(RETVAL,newSViv(SDL_GL_GetAttribute(attr, &value)));
- av_push(RETVAL,newSViv(value));
-#line 4379 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GLSwapBuffers); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GLSwapBuffers)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::GLSwapBuffers()");
- {
-#line 2265 "SDL_perl.xs"
- SDL_GL_SwapBuffers ();
-#line 4395 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_BigEndian); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_BigEndian)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::BigEndian()");
- {
- int RETVAL;
- dXSTARG;
-#line 2271 "SDL_perl.xs"
- RETVAL = (SDL_BYTEORDER == SDL_BIG_ENDIAN);
-#line 4411 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NumJoysticks); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NumJoysticks)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::NumJoysticks()");
- {
- int RETVAL;
- dXSTARG;
-#line 2278 "SDL_perl.xs"
- RETVAL = SDL_NumJoysticks();
-#line 4428 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickName); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickName)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickName(index)");
- {
- int index = (int)SvIV(ST(0));
- char * RETVAL;
- dXSTARG;
-#line 2286 "SDL_perl.xs"
- RETVAL = (char*)SDL_JoystickName(index);
-#line 4446 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickOpen); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickOpen)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickOpen(index)");
- {
- int index = (int)SvIV(ST(0));
- SDL_Joystick * RETVAL;
- dXSTARG;
-#line 2294 "SDL_perl.xs"
- RETVAL = SDL_JoystickOpen(index);
-#line 4464 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickOpened); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickOpened)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickOpened(index)");
- {
- int index = (int)SvIV(ST(0));
- int RETVAL;
- dXSTARG;
-#line 2302 "SDL_perl.xs"
- RETVAL = SDL_JoystickOpened(index);
-#line 4482 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickIndex); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickIndex)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickIndex(joystick)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2310 "SDL_perl.xs"
- RETVAL = SDL_JoystickIndex(joystick);
-#line 4500 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickNumAxes); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickNumAxes)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickNumAxes(joystick)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2318 "SDL_perl.xs"
- RETVAL = SDL_JoystickNumAxes(joystick);
-#line 4518 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickNumBalls); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickNumBalls)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickNumBalls(joystick)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2326 "SDL_perl.xs"
- RETVAL = SDL_JoystickNumBalls(joystick);
-#line 4536 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickNumHats); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickNumHats)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickNumHats(joystick)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2334 "SDL_perl.xs"
- RETVAL = SDL_JoystickNumHats(joystick);
-#line 4554 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickNumButtons); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickNumButtons)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickNumButtons(joystick)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2342 "SDL_perl.xs"
- RETVAL = SDL_JoystickNumButtons(joystick);
-#line 4572 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickUpdate); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickUpdate)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::JoystickUpdate()");
- {
-#line 2349 "SDL_perl.xs"
- SDL_JoystickUpdate();
-#line 4587 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_JoystickGetAxis); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickGetAxis)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::JoystickGetAxis(joystick, axis)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int axis = (int)SvIV(ST(1));
- Sint16 RETVAL;
- dXSTARG;
-#line 2356 "SDL_perl.xs"
- RETVAL = SDL_JoystickGetAxis(joystick,axis);
-#line 4605 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickGetHat); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickGetHat)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::JoystickGetHat(joystick, hat)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int hat = (int)SvIV(ST(1));
- Uint8 RETVAL;
- dXSTARG;
-#line 2365 "SDL_perl.xs"
- RETVAL = SDL_JoystickGetHat(joystick,hat);
-#line 4624 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickGetButton); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickGetButton)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::JoystickGetButton(joystick, button)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int button = (int)SvIV(ST(1));
- Uint8 RETVAL;
- dXSTARG;
-#line 2374 "SDL_perl.xs"
- RETVAL = SDL_JoystickGetButton(joystick,button);
-#line 4643 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickGetBall); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickGetBall)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::JoystickGetBall(joystick, ball)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
- int ball = (int)SvIV(ST(1));
- AV * RETVAL;
-#line 2383 "SDL_perl.xs"
- int success,dx,dy;
- success = SDL_JoystickGetBall(joystick,ball,&dx,&dy);
- RETVAL = newAV();
- av_push(RETVAL,newSViv(success));
- av_push(RETVAL,newSViv(dx));
- av_push(RETVAL,newSViv(dy));
-#line 4666 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoystickClose); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoystickClose)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoystickClose(joystick)");
- {
- SDL_Joystick * joystick = INT2PTR(SDL_Joystick *,SvIV(ST(0)));
-#line 2396 "SDL_perl.xs"
- SDL_JoystickClose(joystick);
-#line 4683 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_JoyAxisEventWhich); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyAxisEventWhich)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyAxisEventWhich(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Sint16 RETVAL;
- dXSTARG;
-#line 2402 "SDL_perl.xs"
- RETVAL = e->jaxis.which;
-#line 4700 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyAxisEventAxis); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyAxisEventAxis)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyAxisEventAxis(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2410 "SDL_perl.xs"
- RETVAL = e->jaxis.axis;
-#line 4718 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyAxisEventValue); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyAxisEventValue)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyAxisEventValue(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2418 "SDL_perl.xs"
- RETVAL = e->jaxis.value;
-#line 4736 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyButtonEventWhich); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyButtonEventWhich)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyButtonEventWhich(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2426 "SDL_perl.xs"
- RETVAL = e->jbutton.which;
-#line 4754 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyButtonEventButton); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyButtonEventButton)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyButtonEventButton(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2434 "SDL_perl.xs"
- RETVAL = e->jbutton.button;
-#line 4772 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyButtonEventState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyButtonEventState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyButtonEventState(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2442 "SDL_perl.xs"
- RETVAL = e->jbutton.state;
-#line 4790 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyHatEventWhich); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyHatEventWhich)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyHatEventWhich(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2450 "SDL_perl.xs"
- RETVAL = e->jhat.which;
-#line 4808 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyHatEventHat); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyHatEventHat)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyHatEventHat(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2458 "SDL_perl.xs"
- RETVAL = e->jhat.hat;
-#line 4826 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyHatEventValue); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyHatEventValue)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyHatEventValue(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2466 "SDL_perl.xs"
- RETVAL = e->jhat.value;
-#line 4844 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyBallEventWhich); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyBallEventWhich)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyBallEventWhich(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2474 "SDL_perl.xs"
- RETVAL = e->jball.which;
-#line 4862 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyBallEventBall); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyBallEventBall)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyBallEventBall(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 2482 "SDL_perl.xs"
- RETVAL = e->jball.ball;
-#line 4880 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyBallEventXrel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyBallEventXrel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyBallEventXrel(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Sint16 RETVAL;
- dXSTARG;
-#line 2490 "SDL_perl.xs"
- RETVAL = e->jball.xrel;
-#line 4898 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_JoyBallEventYrel); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_JoyBallEventYrel)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::JoyBallEventYrel(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- Sint16 RETVAL;
- dXSTARG;
-#line 2498 "SDL_perl.xs"
- RETVAL = e->jball.yrel;
-#line 4916 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SetClipRect); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SetClipRect)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SetClipRect(surface, rect)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Rect * rect = INT2PTR(SDL_Rect *,SvIV(ST(1)));
-#line 2507 "SDL_perl.xs"
- SDL_SetClipRect(surface,rect);
-#line 4933 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_GetClipRect); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetClipRect)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::GetClipRect(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- SDL_Rect * RETVAL;
- dXSTARG;
-#line 2513 "SDL_perl.xs"
- RETVAL = (SDL_Rect*) safemalloc(sizeof(SDL_Rect));
- SDL_GetClipRect(surface,RETVAL);
-#line 4951 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-#ifdef HAVE_SDL_NET
-#define XSubPPtmpAAAC 1
-
-XS(XS_SDL_NetInit); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetInit)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::NetInit()");
- {
- int RETVAL;
- dXSTARG;
-#line 2524 "SDL_perl.xs"
- RETVAL = SDLNet_Init();
-#line 4971 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetQuit); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetQuit)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::NetQuit()");
- {
-#line 2531 "SDL_perl.xs"
- SDLNet_Quit();
-#line 4986 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetNewIPaddress); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetNewIPaddress)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetNewIPaddress(host, port)");
- {
- Uint32 host = (Uint32)SvUV(ST(0));
- Uint16 port = (Uint16)SvUV(ST(1));
- IPaddress * RETVAL;
- dXSTARG;
-#line 2538 "SDL_perl.xs"
- RETVAL = (IPaddress*) safemalloc(sizeof(IPaddress));
- RETVAL->host = host;
- RETVAL->port = port;
-#line 5006 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetIPaddressHost); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetIPaddressHost)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetIPaddressHost(ip)");
- {
- IPaddress * ip = INT2PTR(IPaddress *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 2548 "SDL_perl.xs"
- RETVAL = ip->host;
-#line 5024 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetIPaddressPort); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetIPaddressPort)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetIPaddressPort(ip)");
- {
- IPaddress * ip = INT2PTR(IPaddress *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 2556 "SDL_perl.xs"
- RETVAL = ip->port;
-#line 5042 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetFreeIPaddress); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetFreeIPaddress)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetFreeIPaddress(ip)");
- {
- IPaddress * ip = INT2PTR(IPaddress *,SvIV(ST(0)));
-#line 2564 "SDL_perl.xs"
- safefree(ip);
-#line 5058 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetResolveIP); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetResolveIP)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetResolveIP(address)");
- {
- IPaddress * address = INT2PTR(IPaddress *,SvIV(ST(0)));
- const char * RETVAL;
- dXSTARG;
-#line 2570 "SDL_perl.xs"
- RETVAL = SDLNet_ResolveIP(address);
-#line 5075 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetResolveHost); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetResolveHost)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::NetResolveHost(address, host, port)");
- {
- IPaddress * address = INT2PTR(IPaddress *,SvIV(ST(0)));
- const char * host = (const char *)SvPV_nolen(ST(1));
- Uint16 port = (Uint16)SvUV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 2580 "SDL_perl.xs"
- RETVAL = SDLNet_ResolveHost(address,host,port);
-#line 5095 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCPOpen); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCPOpen)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetTCPOpen(ip)");
- {
- IPaddress * ip = INT2PTR(IPaddress *,SvIV(ST(0)));
- TCPsocket RETVAL;
- dXSTARG;
-#line 2588 "SDL_perl.xs"
- RETVAL = SDLNet_TCP_Open(ip);
-#line 5113 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCPAccept); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCPAccept)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetTCPAccept(server)");
- {
- TCPsocket server = INT2PTR(TCPsocket,SvIV(ST(0)));
- TCPsocket RETVAL;
- dXSTARG;
-#line 2596 "SDL_perl.xs"
- RETVAL = SDLNet_TCP_Accept(server);
-#line 5131 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCPGetPeerAddress); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCPGetPeerAddress)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetTCPGetPeerAddress(sock)");
- {
- TCPsocket sock = INT2PTR(TCPsocket,SvIV(ST(0)));
- IPaddress * RETVAL;
- dXSTARG;
-#line 2604 "SDL_perl.xs"
- RETVAL = SDLNet_TCP_GetPeerAddress(sock);
-#line 5149 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCPSend); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCPSend)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::NetTCPSend(sock, data, len)");
- {
- TCPsocket sock = INT2PTR(TCPsocket,SvIV(ST(0)));
- void * data = INT2PTR(void *,SvIV(ST(1)));
- int len = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 2614 "SDL_perl.xs"
- RETVAL = SDLNet_TCP_Send(sock,data,len);
-#line 5169 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCPRecv); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCPRecv)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetTCPRecv(sock, maxlen)");
- {
- TCPsocket sock = INT2PTR(TCPsocket,SvIV(ST(0)));
- int maxlen = (int)SvIV(ST(1));
- AV * RETVAL;
-#line 2623 "SDL_perl.xs"
- int status;
- void *buffer;
- buffer = safemalloc(maxlen);
- RETVAL = newAV();
- status = SDLNet_TCP_Recv(sock,buffer,maxlen);
- av_push(RETVAL,newSViv(status));
- av_push(RETVAL,newSVpvn((char*)buffer,maxlen));
-#line 5193 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCPClose); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCPClose)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetTCPClose(sock)");
- {
- TCPsocket sock = INT2PTR(TCPsocket,SvIV(ST(0)));
-#line 2637 "SDL_perl.xs"
- SDLNet_TCP_Close(sock);
-#line 5210 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetAllocPacket); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetAllocPacket)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetAllocPacket(size)");
- {
- int size = (int)SvIV(ST(0));
- UDPpacket * RETVAL;
- dXSTARG;
-#line 2643 "SDL_perl.xs"
- RETVAL = SDLNet_AllocPacket(size);
-#line 5227 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetAllocPacketV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetAllocPacketV)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetAllocPacketV(howmany, size)");
- {
- int howmany = (int)SvIV(ST(0));
- int size = (int)SvIV(ST(1));
- UDPpacket ** RETVAL;
- dXSTARG;
-#line 2652 "SDL_perl.xs"
- RETVAL = SDLNet_AllocPacketV(howmany,size);
-#line 5246 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetResizePacket); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetResizePacket)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetResizePacket(packet, newsize)");
- {
- UDPpacket * packet = INT2PTR(UDPpacket *,SvIV(ST(0)));
- int newsize = (int)SvIV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2661 "SDL_perl.xs"
- RETVAL = SDLNet_ResizePacket(packet,newsize);
-#line 5265 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetFreePacket); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetFreePacket)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetFreePacket(packet)");
- {
- UDPpacket * packet = INT2PTR(UDPpacket *,SvIV(ST(0)));
-#line 2669 "SDL_perl.xs"
- SDLNet_FreePacket(packet);
-#line 5281 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetFreePacketV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetFreePacketV)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetFreePacketV(packet)");
- {
- UDPpacket ** packet = INT2PTR(UDPpacket **,SvIV(ST(0)));
-#line 2675 "SDL_perl.xs"
- SDLNet_FreePacketV(packet);
-#line 5296 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetUDPOpen); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPOpen)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPOpen(port)");
- {
- Uint16 port = (Uint16)SvUV(ST(0));
- UDPsocket RETVAL;
- dXSTARG;
-#line 2681 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_Open(port);
-#line 5313 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDPBind); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPBind)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPBind(sock, channel, address)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
- int channel = (int)SvIV(ST(1));
- IPaddress * address = INT2PTR(IPaddress *,SvIV(ST(2)));
- int RETVAL;
- dXSTARG;
-#line 2691 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_Bind(sock,channel,address);
-#line 5333 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDPUnbind); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPUnbind)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPUnbind(sock, channel)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
- int channel = (int)SvIV(ST(1));
-#line 2700 "SDL_perl.xs"
- SDLNet_UDP_Unbind(sock,channel);
-#line 5350 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetUDPGetPeerAddress); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPGetPeerAddress)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPGetPeerAddress(sock, channel)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
- int channel = (int)SvIV(ST(1));
- IPaddress * RETVAL;
- dXSTARG;
-#line 2707 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_GetPeerAddress(sock,channel);
-#line 5368 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDPSendV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPSendV)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPSendV(sock, packets, npackets)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
- UDPpacket ** packets = INT2PTR(UDPpacket **,SvIV(ST(1)));
- int npackets = (int)SvIV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 2717 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_SendV(sock,packets,npackets);
-#line 5388 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDPSend); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPSend)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPSend(sock, channel, packet)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
- int channel = (int)SvIV(ST(1));
- UDPpacket * packet = INT2PTR(UDPpacket *,SvIV(ST(2)));
- int RETVAL;
- dXSTARG;
-#line 2727 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_Send(sock,channel,packet);
-#line 5408 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDPRecvV); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPRecvV)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPRecvV(sock, packets)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
- UDPpacket ** packets = INT2PTR(UDPpacket **,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 2736 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_RecvV(sock,packets);
-#line 5427 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDPRecv); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPRecv)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPRecv(sock, packet)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
- UDPpacket * packet = INT2PTR(UDPpacket *,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 2745 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_Recv(sock,packet);
-#line 5446 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDPClose); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDPClose)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetUDPClose(sock)");
- {
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(0)));
-#line 2753 "SDL_perl.xs"
- SDLNet_UDP_Close(sock);
-#line 5462 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetAllocSocketSet); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetAllocSocketSet)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetAllocSocketSet(maxsockets)");
- {
- int maxsockets = (int)SvIV(ST(0));
- SDLNet_SocketSet RETVAL;
- dXSTARG;
-#line 2759 "SDL_perl.xs"
- RETVAL = SDLNet_AllocSocketSet(maxsockets);
-#line 5479 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCP_AddSocket); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCP_AddSocket)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetTCP_AddSocket(set, sock)");
- {
- SDLNet_SocketSet set = INT2PTR(SDLNet_SocketSet,SvIV(ST(0)));
- TCPsocket sock = INT2PTR(TCPsocket,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 2768 "SDL_perl.xs"
- RETVAL = SDLNet_TCP_AddSocket(set,sock);
-#line 5498 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDP_AddSocket); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDP_AddSocket)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetUDP_AddSocket(set, sock)");
- {
- SDLNet_SocketSet set = INT2PTR(SDLNet_SocketSet,SvIV(ST(0)));
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 2777 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_AddSocket(set,sock);
-#line 5517 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetTCP_DelSocket); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetTCP_DelSocket)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetTCP_DelSocket(set, sock)");
- {
- SDLNet_SocketSet set = INT2PTR(SDLNet_SocketSet,SvIV(ST(0)));
- TCPsocket sock = INT2PTR(TCPsocket,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 2786 "SDL_perl.xs"
- RETVAL = SDLNet_TCP_DelSocket(set,sock);
-#line 5536 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetUDP_DelSocket); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetUDP_DelSocket)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetUDP_DelSocket(set, sock)");
- {
- SDLNet_SocketSet set = INT2PTR(SDLNet_SocketSet,SvIV(ST(0)));
- UDPsocket sock = INT2PTR(UDPsocket,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 2795 "SDL_perl.xs"
- RETVAL = SDLNet_UDP_DelSocket(set,sock);
-#line 5555 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetCheckSockets); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetCheckSockets)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetCheckSockets(set, timeout)");
- {
- SDLNet_SocketSet set = INT2PTR(SDLNet_SocketSet,SvIV(ST(0)));
- Uint32 timeout = (Uint32)SvUV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 2804 "SDL_perl.xs"
- RETVAL = SDLNet_CheckSockets(set,timeout);
-#line 5574 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetSocketReady); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetSocketReady)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetSocketReady(sock)");
- {
- SDLNet_GenericSocket sock = INT2PTR(SDLNet_GenericSocket,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2812 "SDL_perl.xs"
- RETVAL = SDLNet_SocketReady(sock);
-#line 5592 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetFreeSocketSet); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetFreeSocketSet)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetFreeSocketSet(set)");
- {
- SDLNet_SocketSet set = INT2PTR(SDLNet_SocketSet,SvIV(ST(0)));
-#line 2820 "SDL_perl.xs"
- SDLNet_FreeSocketSet(set);
-#line 5608 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetWrite16); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetWrite16)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetWrite16(value, area)");
- {
- Uint16 value = (Uint16)SvUV(ST(0));
- void * area = INT2PTR(void *,SvIV(ST(1)));
-#line 2827 "SDL_perl.xs"
- SDLNet_Write16(value,area);
-#line 5624 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetWrite32); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetWrite32)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::NetWrite32(value, area)");
- {
- Uint32 value = (Uint32)SvUV(ST(0));
- void * area = INT2PTR(void *,SvIV(ST(1)));
-#line 2834 "SDL_perl.xs"
- SDLNet_Write32(value,area);
-#line 5640 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_NetRead16); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetRead16)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetRead16(area)");
- {
- void * area = INT2PTR(void *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 2840 "SDL_perl.xs"
- RETVAL = SDLNet_Read16(area);
-#line 5657 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NetRead32); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NetRead32)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::NetRead32(area)");
- {
- void * area = INT2PTR(void *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 2848 "SDL_perl.xs"
- RETVAL = SDLNet_Read32(area);
-#line 5675 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#endif
-#ifdef HAVE_SDL_TTF
-#define XSubPPtmpAAAD 1
-
-XS(XS_SDL_TTFInit); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFInit)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::TTFInit()");
- {
- int RETVAL;
- dXSTARG;
-#line 2859 "SDL_perl.xs"
- RETVAL = TTF_Init();
-#line 5696 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFQuit); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFQuit)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::TTFQuit()");
- {
-#line 2866 "SDL_perl.xs"
- TTF_Quit();
-#line 5711 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_TTFOpenFont); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFOpenFont)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::TTFOpenFont(file, ptsize)");
- {
- char * file = (char *)SvPV_nolen(ST(0));
- int ptsize = (int)SvIV(ST(1));
- TTF_Font * RETVAL;
- dXSTARG;
-#line 2873 "SDL_perl.xs"
- RETVAL = TTF_OpenFont(file,ptsize);
-#line 5729 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFGetFontStyle); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFGetFontStyle)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::TTFGetFontStyle(font)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2881 "SDL_perl.xs"
- RETVAL = TTF_GetFontStyle(font);
-#line 5747 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFSetFontStyle); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFSetFontStyle)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::TTFSetFontStyle(font, style)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- int style = (int)SvIV(ST(1));
-#line 2890 "SDL_perl.xs"
- TTF_SetFontStyle(font,style);
-#line 5764 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_TTFFontHeight); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFFontHeight)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::TTFFontHeight(font)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2896 "SDL_perl.xs"
- RETVAL = TTF_FontHeight(font);
-#line 5781 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFFontAscent); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFFontAscent)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::TTFFontAscent(font)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2904 "SDL_perl.xs"
- RETVAL = TTF_FontAscent(font);
-#line 5799 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFFontDescent); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFFontDescent)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::TTFFontDescent(font)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2912 "SDL_perl.xs"
- RETVAL = TTF_FontDescent(font);
-#line 5817 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFFontLineSkip); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFFontLineSkip)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::TTFFontLineSkip(font)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 2920 "SDL_perl.xs"
- RETVAL = TTF_FontLineSkip(font);
-#line 5835 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFGlyphMetrics); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFGlyphMetrics)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::TTFGlyphMetrics(font, ch)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- Uint16 ch = (Uint16)SvUV(ST(1));
- AV * RETVAL;
-#line 2929 "SDL_perl.xs"
- int minx, miny, maxx, maxy, advance;
- RETVAL = newAV();
- TTF_GlyphMetrics(font, ch, &minx, &miny, &maxx, &maxy, &advance);
- av_push(RETVAL,newSViv(minx));
- av_push(RETVAL,newSViv(miny));
- av_push(RETVAL,newSViv(maxx));
- av_push(RETVAL,newSViv(maxy));
- av_push(RETVAL,newSViv(advance));
-#line 5860 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFSizeText); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFSizeText)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::TTFSizeText(font, text)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- AV * RETVAL;
-#line 2945 "SDL_perl.xs"
- int w,h;
- RETVAL = newAV();
- TTF_SizeText(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
-#line 5883 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFSizeUTF8); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFSizeUTF8)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::TTFSizeUTF8(font, text)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- AV * RETVAL;
-#line 2958 "SDL_perl.xs"
- int w,h;
- RETVAL = newAV();
- TTF_SizeUTF8(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
-#line 5906 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFSizeUNICODE); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFSizeUNICODE)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::TTFSizeUNICODE(font, text)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- const Uint16 * text = INT2PTR(const Uint16 *,SvIV(ST(1)));
- AV * RETVAL;
-#line 2971 "SDL_perl.xs"
- int w,h;
- RETVAL = newAV();
- TTF_SizeUNICODE(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
-#line 5929 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderTextSolid); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderTextSolid)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderTextSolid(font, text, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 2985 "SDL_perl.xs"
- RETVAL = TTF_RenderText_Solid(font,text,*fg);
-#line 5950 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderUTF8Solid); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderUTF8Solid)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderUTF8Solid(font, text, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 2995 "SDL_perl.xs"
- RETVAL = TTF_RenderUTF8_Solid(font,text,*fg);
-#line 5970 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderUNICODESolid); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderUNICODESolid)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderUNICODESolid(font, text, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- const Uint16 * text = INT2PTR(const Uint16 *,SvIV(ST(1)));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3005 "SDL_perl.xs"
- RETVAL = TTF_RenderUNICODE_Solid(font,text,*fg);
-#line 5990 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderGlyphSolid); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderGlyphSolid)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderGlyphSolid(font, ch, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- Uint16 ch = (Uint16)SvUV(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3015 "SDL_perl.xs"
- RETVAL = TTF_RenderGlyph_Solid(font,ch,*fg);
-#line 6010 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderTextShaded); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderTextShaded)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderTextShaded(font, text, fg, bg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Color * bg = INT2PTR(SDL_Color *,SvIV(ST(3)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3026 "SDL_perl.xs"
- RETVAL = TTF_RenderText_Shaded(font,text,*fg,*bg);
-#line 6031 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderUTF8Shaded); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderUTF8Shaded)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderUTF8Shaded(font, text, fg, bg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Color * bg = INT2PTR(SDL_Color *,SvIV(ST(3)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3037 "SDL_perl.xs"
- RETVAL = TTF_RenderUTF8_Shaded(font,text,*fg,*bg);
-#line 6052 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderUNICODEShaded); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderUNICODEShaded)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderUNICODEShaded(font, text, fg, bg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- const Uint16 * text = INT2PTR(const Uint16 *,SvIV(ST(1)));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Color * bg = INT2PTR(SDL_Color *,SvIV(ST(3)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3048 "SDL_perl.xs"
- RETVAL = TTF_RenderUNICODE_Shaded(font,text,*fg,*bg);
-#line 6073 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderGlyphShaded); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderGlyphShaded)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderGlyphShaded(font, ch, fg, bg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- Uint16 ch = (Uint16)SvUV(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Color * bg = INT2PTR(SDL_Color *,SvIV(ST(3)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3059 "SDL_perl.xs"
- RETVAL = TTF_RenderGlyph_Shaded(font,ch,*fg,*bg);
-#line 6094 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderTextBlended); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderTextBlended)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderTextBlended(font, text, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3069 "SDL_perl.xs"
- RETVAL = TTF_RenderText_Blended(font,text,*fg);
-#line 6114 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderUTF8Blended); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderUTF8Blended)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderUTF8Blended(font, text, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- char * text = (char *)SvPV_nolen(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3079 "SDL_perl.xs"
- RETVAL = TTF_RenderUTF8_Blended(font,text,*fg);
-#line 6134 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderUNICODEBlended); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderUNICODEBlended)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderUNICODEBlended(font, text, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- const Uint16 * text = INT2PTR(const Uint16 *,SvIV(ST(1)));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3089 "SDL_perl.xs"
- RETVAL = TTF_RenderUNICODE_Blended(font,text,*fg);
-#line 6154 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFRenderGlyphBlended); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFRenderGlyphBlended)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::TTFRenderGlyphBlended(font, ch, fg)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- Uint16 ch = (Uint16)SvUV(ST(1));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(2)));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3099 "SDL_perl.xs"
- RETVAL = TTF_RenderGlyph_Blended(font,ch,*fg);
-#line 6174 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_TTFCloseFont); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFCloseFont)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::TTFCloseFont(font)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
-#line 3107 "SDL_perl.xs"
- TTF_CloseFont(font);
-#line 6190 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_TTFPutString); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_TTFPutString)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::TTFPutString(font, mode, surface, x, y, fg, bg, text)");
- {
- TTF_Font * font = INT2PTR(TTF_Font *,SvIV(ST(0)));
- int mode = (int)SvIV(ST(1));
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(2)));
- int x = (int)SvIV(ST(3));
- int y = (int)SvIV(ST(4));
- SDL_Color * fg = INT2PTR(SDL_Color *,SvIV(ST(5)));
- SDL_Color * bg = INT2PTR(SDL_Color *,SvIV(ST(6)));
- char * text = (char *)SvPV_nolen(ST(7));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3120 "SDL_perl.xs"
- SDL_Surface *img;
- SDL_Rect dest;
- int w,h;
- dest.x = x;
- dest.y = y;
- RETVAL = NULL;
- switch (mode) {
- case TEXT_SOLID:
- img = TTF_RenderText_Solid(font,text,*fg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case TEXT_SHADED:
- img = TTF_RenderText_Shaded(font,text,*fg,*bg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case TEXT_BLENDED:
- img = TTF_RenderText_Blended(font,text,*fg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_SOLID:
- img = TTF_RenderUTF8_Solid(font,text,*fg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_SHADED:
- img = TTF_RenderUTF8_Shaded(font,text,*fg,*bg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_BLENDED:
- img = TTF_RenderUTF8_Blended(font,text,*fg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_SOLID:
- img = TTF_RenderUNICODE_Solid(font,(Uint16*)text,*fg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_SHADED:
- img = TTF_RenderUNICODE_Shaded(font,(Uint16*)text,*fg,*bg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_BLENDED:
- img = TTF_RenderUNICODE_Blended(font,(Uint16*)text,*fg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- default:
- img = TTF_RenderText_Shaded(font,text,*fg,*bg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- }
- if ( img && img->format && img->format->palette ) {
- SDL_Color *c = &img->format->palette->colors[0];
- Uint32 key = SDL_MapRGB( img->format, c->r, c->g, c->b );
- SDL_SetColorKey(img,SDL_SRCCOLORKEY,key );
- if (0 > SDL_BlitSurface(img,NULL,surface,&dest)) {
- SDL_FreeSurface(img);
- RETVAL = NULL;
- } else {
- RETVAL = img;
- }
- }
-#line 6291 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-#endif
-XS(XS_SDL_CreateYUVOverlay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_CreateYUVOverlay)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::CreateYUVOverlay(width, height, format, display)");
- {
- int width = (int)SvIV(ST(0));
- int height = (int)SvIV(ST(1));
- Uint32 format = (Uint32)SvUV(ST(2));
- SDL_Surface * display = INT2PTR(SDL_Surface *,SvIV(ST(3)));
- SDL_Overlay * RETVAL;
- dXSTARG;
-#line 3210 "SDL_perl.xs"
- RETVAL = SDL_CreateYUVOverlay ( width, height, format, display );
-#line 6313 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_LockYUVOverlay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_LockYUVOverlay)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::LockYUVOverlay(overlay)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3218 "SDL_perl.xs"
- RETVAL = SDL_LockYUVOverlay(overlay);
-#line 6331 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_UnlockYUVOverlay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_UnlockYUVOverlay)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::UnlockYUVOverlay(overlay)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
-#line 3226 "SDL_perl.xs"
- SDL_UnlockYUVOverlay(overlay);
-#line 6347 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_DisplayYUVOverlay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_DisplayYUVOverlay)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::DisplayYUVOverlay(overlay, dstrect)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- SDL_Rect * dstrect = INT2PTR(SDL_Rect *,SvIV(ST(1)));
- int RETVAL;
- dXSTARG;
-#line 3233 "SDL_perl.xs"
- RETVAL = SDL_DisplayYUVOverlay ( overlay, dstrect );
-#line 6365 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeYUVOverlay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeYUVOverlay)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeYUVOverlay(overlay)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
-#line 3241 "SDL_perl.xs"
- SDL_FreeYUVOverlay ( overlay );
-#line 6381 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_OverlayFormat); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OverlayFormat)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OverlayFormat(overlay, ...)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 3247 "SDL_perl.xs"
- if ( items > 1 )
- overlay->format = SvIV(ST(1));
- RETVAL = overlay->format;
-#line 6400 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_OverlayW); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OverlayW)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OverlayW(overlay, ...)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3257 "SDL_perl.xs"
- if ( items > 1 )
- overlay->w = SvIV(ST(1));
- RETVAL = overlay->w;
-#line 6420 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_OverlayH); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OverlayH)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OverlayH(overlay, ...)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3267 "SDL_perl.xs"
- if ( items > 1 )
- overlay->h = SvIV(ST(1));
- RETVAL = overlay->h;
-#line 6440 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_OverlayPlanes); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OverlayPlanes)
-{
- dXSARGS;
- if (items < 1)
- Perl_croak(aTHX_ "Usage: SDL::OverlayPlanes(overlay, ...)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3277 "SDL_perl.xs"
- if ( items > 1 )
- overlay->planes = SvIV(ST(1));
- RETVAL = overlay->planes;
-#line 6460 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_OverlayHW); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OverlayHW)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OverlayHW(overlay)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 3287 "SDL_perl.xs"
- RETVAL = overlay->hw_overlay;
-#line 6478 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_OverlayPitches); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OverlayPitches)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OverlayPitches(overlay)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- Uint16 * RETVAL;
- dXSTARG;
-#line 3295 "SDL_perl.xs"
- RETVAL = overlay->pitches;
-#line 6496 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_OverlayPixels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_OverlayPixels)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::OverlayPixels(overlay)");
- {
- SDL_Overlay * overlay = INT2PTR(SDL_Overlay *,SvIV(ST(0)));
- Uint8 ** RETVAL;
- dXSTARG;
-#line 3303 "SDL_perl.xs"
- RETVAL = overlay->pixels;
-#line 6514 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_WMToggleFullScreen); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WMToggleFullScreen)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::WMToggleFullScreen(surface)");
- {
- SDL_Surface * surface = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3311 "SDL_perl.xs"
- RETVAL = SDL_WM_ToggleFullScreen(surface);
-#line 6532 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_WMGrabInput); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WMGrabInput)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::WMGrabInput(mode)");
- {
- Uint32 mode = (Uint32)SvUV(ST(0));
- Uint32 RETVAL;
- dXSTARG;
-#line 3319 "SDL_perl.xs"
- RETVAL = SDL_WM_GrabInput(mode);
-#line 6550 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_WMIconifyWindow); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_WMIconifyWindow)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::WMIconifyWindow()");
- {
- int RETVAL;
- dXSTARG;
-#line 3326 "SDL_perl.xs"
- RETVAL = SDL_WM_IconifyWindow();
-#line 6567 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ResizeEventW); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ResizeEventW)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::ResizeEventW(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3334 "SDL_perl.xs"
- RETVAL = e->resize.w;
-#line 6585 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_ResizeEventH); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_ResizeEventH)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::ResizeEventH(e)");
- {
- SDL_Event * e = INT2PTR(SDL_Event *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3342 "SDL_perl.xs"
- RETVAL = e->resize.h;
-#line 6603 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_AudioDriverName); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_AudioDriverName)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::AudioDriverName()");
- {
- char * RETVAL;
- dXSTARG;
-#line 3349 "SDL_perl.xs"
- char name[32];
- RETVAL = SDL_AudioDriverName(name,32);
-#line 6621 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GetKeyState); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GetKeyState)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::GetKeyState(k)");
- {
- SDLKey k = (SDLKey)SvUV(ST(0));
- Uint32 RETVAL;
- dXSTARG;
-#line 3358 "SDL_perl.xs"
- if (k >= SDLK_LAST) Perl_croak (aTHX_ "Key out of range");
- RETVAL = SDL_GetKeyState(NULL)[k];
-#line 6640 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#ifdef HAVE_SMPEG
-#define XSubPPtmpAAAE 1
-
-XS(XS_SDL_NewSMPEGInfo); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewSMPEGInfo)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::NewSMPEGInfo()");
- {
- SMPEG_Info * RETVAL;
- dXSTARG;
-#line 3368 "SDL_perl.xs"
- RETVAL = (SMPEG_Info *) safemalloc (sizeof(SMPEG_Info));
-#line 6660 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeSMPEGInfo); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeSMPEGInfo)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeSMPEGInfo(info)");
- {
- SMPEG_Info * info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
-#line 3376 "SDL_perl.xs"
- safefree(info);
-#line 6676 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGInfoHasAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoHasAudio)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoHasAudio(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3382 "SDL_perl.xs"
- RETVAL = info->has_audio;
-#line 6693 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoHasVideo); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoHasVideo)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoHasVideo(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3390 "SDL_perl.xs"
- RETVAL = info->has_video;
-#line 6711 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoWidth); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoWidth)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoWidth(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3398 "SDL_perl.xs"
- RETVAL = info->width;
-#line 6729 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoHeight); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoHeight)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoHeight(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3406 "SDL_perl.xs"
- RETVAL = info->height;
-#line 6747 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoCurrentFrame); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoCurrentFrame)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoCurrentFrame(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3414 "SDL_perl.xs"
- RETVAL = info->current_frame;
-#line 6765 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoCurrentFPS); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoCurrentFPS)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoCurrentFPS(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- double RETVAL;
- dXSTARG;
-#line 3422 "SDL_perl.xs"
- RETVAL = info->current_fps;
-#line 6783 "SDL_perl.c"
- XSprePUSH; PUSHn((double)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoCurrentAudioFrame); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoCurrentAudioFrame)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoCurrentAudioFrame(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3430 "SDL_perl.xs"
- RETVAL = info->audio_current_frame;
-#line 6801 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoCurrentOffset); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoCurrentOffset)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoCurrentOffset(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3438 "SDL_perl.xs"
- RETVAL = info->current_offset;
-#line 6819 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoTotalSize); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoTotalSize)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoTotalSize(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 3446 "SDL_perl.xs"
- RETVAL = info->total_size;
-#line 6837 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoCurrentTime); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoCurrentTime)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoCurrentTime(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- double RETVAL;
- dXSTARG;
-#line 3454 "SDL_perl.xs"
- RETVAL = info->current_time;
-#line 6855 "SDL_perl.c"
- XSprePUSH; PUSHn((double)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGInfoTotalTime); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGInfoTotalTime)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGInfoTotalTime(info)");
- {
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(0)));
- double RETVAL;
- dXSTARG;
-#line 3462 "SDL_perl.xs"
- RETVAL = info->total_time;
-#line 6873 "SDL_perl.c"
- XSprePUSH; PUSHn((double)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGError); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGError)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGError(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- char * RETVAL;
- dXSTARG;
-#line 3470 "SDL_perl.xs"
- RETVAL = SMPEG_error(mpeg);
-#line 6891 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_NewSMPEG); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_NewSMPEG)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::NewSMPEG(filename, info, use_audio)");
- {
- char* filename = (char *)SvPV_nolen(ST(0));
- SMPEG_Info* info = INT2PTR(SMPEG_Info *,SvIV(ST(1)));
- int use_audio = (int)SvIV(ST(2));
- SMPEG * RETVAL;
- dXSTARG;
-#line 3480 "SDL_perl.xs"
-#ifdef HAVE_SDL_MIXER
- RETVAL = SMPEG_new(filename,info,0);
-#else
- RETVAL = SMPEG_new(filename,info,use_audio);
-#endif
-#line 6915 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_FreeSMPEG); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_FreeSMPEG)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::FreeSMPEG(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
-#line 3492 "SDL_perl.xs"
- SMPEG_delete(mpeg);
-#line 6931 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGEnableAudio); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGEnableAudio)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGEnableAudio(mpeg, flag)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int flag = (int)SvIV(ST(1));
-#line 3499 "SDL_perl.xs"
- SMPEG_enableaudio(mpeg,flag);
-#ifdef HAVE_SDL_MIXER
- sdl_perl_use_smpeg_audio = flag;
-#endif
-#line 6950 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGEnableVideo); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGEnableVideo)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGEnableVideo(mpeg, flag)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int flag = (int)SvIV(ST(1));
-#line 3509 "SDL_perl.xs"
- SMPEG_enablevideo(mpeg,flag);
-#line 6966 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGSetVolume); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGSetVolume)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGSetVolume(mpeg, volume)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int volume = (int)SvIV(ST(1));
-#line 3516 "SDL_perl.xs"
- SMPEG_setvolume(mpeg,volume);
-#line 6982 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGSetDisplay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGSetDisplay)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGSetDisplay(mpeg, dest, surfLock)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- SDL_Surface* dest = INT2PTR(SDL_Surface *,SvIV(ST(1)));
- SDL_mutex* surfLock = INT2PTR(SDL_mutex *,SvIV(ST(2)));
-#line 3524 "SDL_perl.xs"
- SMPEG_setdisplay(mpeg,dest,surfLock,NULL);
-#line 6999 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGScaleXY); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGScaleXY)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGScaleXY(mpeg, w, h)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int w = (int)SvIV(ST(1));
- int h = (int)SvIV(ST(2));
-#line 3532 "SDL_perl.xs"
- SMPEG_scaleXY(mpeg,w,h);
-#line 7016 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGScale); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGScale)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGScale(mpeg, scale)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int scale = (int)SvIV(ST(1));
-#line 3539 "SDL_perl.xs"
- SMPEG_scale(mpeg,scale);
-#line 7032 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGPlay); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGPlay)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGPlay(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
-#line 3545 "SDL_perl.xs"
- SDL_AudioSpec audiofmt;
- Uint16 format;
- int freq, channels;
-#ifdef HAVE_SDL_MIXER
- if (sdl_perl_use_smpeg_audio ) {
- SMPEG_enableaudio(mpeg, 0);
- Mix_QuerySpec(&freq, &format, &channels);
- audiofmt.format = format;
- audiofmt.freq = freq;
- audiofmt.channels = channels;
- SMPEG_actualSpec(mpeg, &audiofmt);
- Mix_HookMusic(SMPEG_playAudioSDL, mpeg);
- SMPEG_enableaudio(mpeg, 1);
- }
-#endif
- SMPEG_play(mpeg);
-#line 7062 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGStatus); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGStatus)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGStatus(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- SMPEGstatus RETVAL;
- dXSTARG;
-#line 3566 "SDL_perl.xs"
- RETVAL = SMPEG_status(mpeg);
-#line 7079 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SMPEGPause); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGPause)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGPause(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
-#line 3574 "SDL_perl.xs"
- SMPEG_pause(mpeg);
-#line 7095 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGLoop); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGLoop)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGLoop(mpeg, repeat)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int repeat = (int)SvIV(ST(1));
-#line 3581 "SDL_perl.xs"
- SMPEG_loop(mpeg,repeat);
-#line 7111 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGStop); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGStop)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGStop(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
-#line 3587 "SDL_perl.xs"
- SMPEG_stop(mpeg);
-#ifdef HAVE_SDL_MIXER
- Mix_HookMusic(NULL, NULL);
-#endif
-#line 7129 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGRewind); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGRewind)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGRewind(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
-#line 3596 "SDL_perl.xs"
- SMPEG_rewind(mpeg);
-#line 7144 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGSeek); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGSeek)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGSeek(mpeg, bytes)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int bytes = (int)SvIV(ST(1));
-#line 3603 "SDL_perl.xs"
- SMPEG_seek(mpeg,bytes);
-#line 7160 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGSkip); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGSkip)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGSkip(mpeg, seconds)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- float seconds = (float)SvNV(ST(1));
-#line 3610 "SDL_perl.xs"
- SMPEG_skip(mpeg,seconds);
-#line 7176 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGSetDisplayRegion); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGSetDisplayRegion)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGSetDisplayRegion(mpeg, rect)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- SDL_Rect* rect = INT2PTR(SDL_Rect *,SvIV(ST(1)));
-#line 3617 "SDL_perl.xs"
- SMPEG_setdisplayregion(mpeg,rect->x,rect->y,rect->w,rect->h);
-#line 7192 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGRenderFrame); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGRenderFrame)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGRenderFrame(mpeg, frame)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- int frame = (int)SvIV(ST(1));
-#line 3624 "SDL_perl.xs"
- SMPEG_renderFrame(mpeg,frame);
-#line 7208 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SMPEGGetInfo); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SMPEGGetInfo)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SMPEGGetInfo(mpeg)");
- {
- SMPEG* mpeg = INT2PTR(SMPEG *,SvIV(ST(0)));
- SMPEG_Info * RETVAL;
- dXSTARG;
-#line 3630 "SDL_perl.xs"
- RETVAL = (SMPEG_Info *) safemalloc (sizeof(SMPEG_Info));
- SMPEG_getinfo(mpeg,RETVAL);
-#line 7226 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-#endif
-#ifdef HAVE_SDL_GFX
-#define XSubPPtmpAAAF 1
-
-XS(XS_SDL_GFXRotoZoom); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXRotoZoom)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::GFXRotoZoom(src, angle, zoom, smooth)");
- {
- SDL_Surface * src = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- double angle = (double)SvNV(ST(1));
- double zoom = (double)SvNV(ST(2));
- int smooth = (int)SvIV(ST(3));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3647 "SDL_perl.xs"
- RETVAL = rotozoomSurface( src, angle, zoom, smooth);
-#line 7251 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXZoom); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXZoom)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::GFXZoom(src, zoomx, zoomy, smooth)");
- {
- SDL_Surface * src = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- double zoomx = (double)SvNV(ST(1));
- double zoomy = (double)SvNV(ST(2));
- int smooth = (int)SvIV(ST(3));
- SDL_Surface * RETVAL;
- dXSTARG;
-#line 3658 "SDL_perl.xs"
- RETVAL = zoomSurface( src, zoomx, zoomy, smooth);
-#line 7272 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXPixelColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXPixelColor)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::GFXPixelColor(dst, x, y, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Uint32 color = (Uint32)SvUV(ST(3));
- int RETVAL;
- dXSTARG;
-#line 3669 "SDL_perl.xs"
- RETVAL = pixelColor( dst, x, y, color);
-#line 7293 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXPixelRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXPixelRGBA)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::GFXPixelRGBA(dst, x, y, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Uint8 r = (unsigned char)SvUV(ST(3));
- Uint8 g = (unsigned char)SvUV(ST(4));
- Uint8 b = (unsigned char)SvUV(ST(5));
- Uint8 a = (unsigned char)SvUV(ST(6));
- int RETVAL;
- dXSTARG;
-#line 3683 "SDL_perl.xs"
- RETVAL = pixelRGBA( dst, x, y, r, g, b, a );
-#line 7317 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXHlineColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXHlineColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXHlineColor(dst, x1, x2, y, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 x2 = (Sint16)SvIV(ST(2));
- Sint16 y = (Sint16)SvIV(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 3695 "SDL_perl.xs"
- RETVAL = hlineColor( dst, x1, x2, y, color );
-#line 7339 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXHlineRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXHlineRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXHlineRGBA(dst, x1, x2, y, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 x2 = (Sint16)SvIV(ST(2));
- Sint16 y = (Sint16)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 3710 "SDL_perl.xs"
- RETVAL = hlineRGBA( dst, x1, x2, y, r, g, b, a );
-#line 7364 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXVlineColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXVlineColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXVlineColor(dst, x, y1, y2, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 y2 = (Sint16)SvIV(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 3722 "SDL_perl.xs"
- RETVAL = vlineColor( dst, x, y1, y2, color );
-#line 7386 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXVlineRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXVlineRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXVlineRGBA(dst, x, y1, y2, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 y2 = (Sint16)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 3737 "SDL_perl.xs"
- RETVAL = vlineRGBA( dst, x, y1, y2, r, g, b, a );
-#line 7411 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXRectangleColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXRectangleColor)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::GFXRectangleColor(dst, x1, y1, x2, y2, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint32 color = (Uint32)SvUV(ST(5));
- int RETVAL;
- dXSTARG;
-#line 3750 "SDL_perl.xs"
- RETVAL = rectangleColor( dst, x1, y1, x2, y2, color );
-#line 7434 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXRectangleRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXRectangleRGBA)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::GFXRectangleRGBA(dst, x1, y1, x2, y2, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint8 r = (unsigned char)SvUV(ST(5));
- Uint8 g = (unsigned char)SvUV(ST(6));
- Uint8 b = (unsigned char)SvUV(ST(7));
- Uint8 a = (unsigned char)SvUV(ST(8));
- int RETVAL;
- dXSTARG;
-#line 3766 "SDL_perl.xs"
- RETVAL = rectangleRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-#line 7460 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXBoxColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXBoxColor)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::GFXBoxColor(dst, x1, y1, x2, y2, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint32 color = (Uint32)SvUV(ST(5));
- int RETVAL;
- dXSTARG;
-#line 3779 "SDL_perl.xs"
- RETVAL = boxColor( dst, x1, y1, x2, y2, color );
-#line 7483 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXBoxRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXBoxRGBA)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::GFXBoxRGBA(dst, x1, y1, x2, y2, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint8 r = (unsigned char)SvUV(ST(5));
- Uint8 g = (unsigned char)SvUV(ST(6));
- Uint8 b = (unsigned char)SvUV(ST(7));
- Uint8 a = (unsigned char)SvUV(ST(8));
- int RETVAL;
- dXSTARG;
-#line 3795 "SDL_perl.xs"
- RETVAL = boxRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-#line 7509 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXLineColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXLineColor)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::GFXLineColor(dst, x1, y1, x2, y2, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint32 color = (Uint32)SvUV(ST(5));
- int RETVAL;
- dXSTARG;
-#line 3808 "SDL_perl.xs"
- RETVAL = lineColor( dst, x1, y1, x2, y2, color );
-#line 7532 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXLineRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXLineRGBA)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::GFXLineRGBA(dst, x1, y1, x2, y2, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint8 r = (unsigned char)SvUV(ST(5));
- Uint8 g = (unsigned char)SvUV(ST(6));
- Uint8 b = (unsigned char)SvUV(ST(7));
- Uint8 a = (unsigned char)SvUV(ST(8));
- int RETVAL;
- dXSTARG;
-#line 3824 "SDL_perl.xs"
- RETVAL = lineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-#line 7558 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAalineColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAalineColor)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::GFXAalineColor(dst, x1, y1, x2, y2, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint32 color = (Uint32)SvUV(ST(5));
- int RETVAL;
- dXSTARG;
-#line 3837 "SDL_perl.xs"
- RETVAL = aalineColor( dst, x1, y1, x2, y2, color );
-#line 7581 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAalineRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAalineRGBA)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::GFXAalineRGBA(dst, x1, y1, x2, y2, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x1 = (Sint16)SvIV(ST(1));
- Sint16 y1 = (Sint16)SvIV(ST(2));
- Sint16 x2 = (Sint16)SvIV(ST(3));
- Sint16 y2 = (Sint16)SvIV(ST(4));
- Uint8 r = (unsigned char)SvUV(ST(5));
- Uint8 g = (unsigned char)SvUV(ST(6));
- Uint8 b = (unsigned char)SvUV(ST(7));
- Uint8 a = (unsigned char)SvUV(ST(8));
- int RETVAL;
- dXSTARG;
-#line 3853 "SDL_perl.xs"
- RETVAL = aalineRGBA( dst, x1, y1, x2, y2, r, g, b, a );
-#line 7607 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXCircleColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXCircleColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXCircleColor(dst, x, y, r, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 r = (Sint16)SvIV(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 3865 "SDL_perl.xs"
- RETVAL = circleColor( dst, x, y, r, color );
-#line 7629 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXCircleRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXCircleRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXCircleRGBA(dst, x, y, rad, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rad = (Sint16)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 3880 "SDL_perl.xs"
- RETVAL = circleRGBA( dst, x, y, rad, r, g, b, a );
-#line 7654 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAacircleColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAacircleColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXAacircleColor(dst, x, y, r, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 r = (Sint16)SvIV(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 3892 "SDL_perl.xs"
- RETVAL = aacircleColor( dst, x, y, r, color );
-#line 7676 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAacircleRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAacircleRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXAacircleRGBA(dst, x, y, rad, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rad = (Sint16)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 3907 "SDL_perl.xs"
- RETVAL = aacircleRGBA( dst, x, y, rad, r, g, b, a );
-#line 7701 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledCircleColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledCircleColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledCircleColor(dst, x, y, r, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 r = (Sint16)SvIV(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 3919 "SDL_perl.xs"
- RETVAL = filledCircleColor( dst, x, y, r, color );
-#line 7723 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledCircleRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledCircleRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledCircleRGBA(dst, x, y, rad, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rad = (Sint16)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 3934 "SDL_perl.xs"
- RETVAL = filledCircleRGBA( dst, x, y, rad, r, g, b, a );
-#line 7748 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXEllipseColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXEllipseColor)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::GFXEllipseColor(dst, x, y, rx, ry, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rx = (Sint16)SvIV(ST(3));
- Sint16 ry = (Sint16)SvIV(ST(4));
- Uint32 color = (Uint32)SvUV(ST(5));
- int RETVAL;
- dXSTARG;
-#line 3947 "SDL_perl.xs"
- RETVAL = ellipseColor( dst, x, y, rx, ry, color );
-#line 7771 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXEllipseRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXEllipseRGBA)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::GFXEllipseRGBA(dst, x, y, rx, ry, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rx = (Sint16)SvIV(ST(3));
- Sint16 ry = (Sint16)SvIV(ST(4));
- Uint8 r = (unsigned char)SvUV(ST(5));
- Uint8 g = (unsigned char)SvUV(ST(6));
- Uint8 b = (unsigned char)SvUV(ST(7));
- Uint8 a = (unsigned char)SvUV(ST(8));
- int RETVAL;
- dXSTARG;
-#line 3963 "SDL_perl.xs"
- RETVAL = ellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-#line 7797 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAaellipseColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAaellipseColor)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::GFXAaellipseColor(dst, xc, yc, rx, ry, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 xc = (Sint16)SvIV(ST(1));
- Sint16 yc = (Sint16)SvIV(ST(2));
- Sint16 rx = (Sint16)SvIV(ST(3));
- Sint16 ry = (Sint16)SvIV(ST(4));
- Uint32 color = (Uint32)SvUV(ST(5));
- int RETVAL;
- dXSTARG;
-#line 3976 "SDL_perl.xs"
- RETVAL = aaellipseColor( dst, xc, yc, rx, ry, color );
-#line 7820 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAaellipseRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAaellipseRGBA)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::GFXAaellipseRGBA(dst, x, y, rx, ry, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rx = (Sint16)SvIV(ST(3));
- Sint16 ry = (Sint16)SvIV(ST(4));
- Uint8 r = (unsigned char)SvUV(ST(5));
- Uint8 g = (unsigned char)SvUV(ST(6));
- Uint8 b = (unsigned char)SvUV(ST(7));
- Uint8 a = (unsigned char)SvUV(ST(8));
- int RETVAL;
- dXSTARG;
-#line 3992 "SDL_perl.xs"
- RETVAL = aaellipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-#line 7846 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledEllipseColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledEllipseColor)
-{
- dXSARGS;
- if (items != 6)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledEllipseColor(dst, x, y, rx, ry, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rx = (Sint16)SvIV(ST(3));
- Sint16 ry = (Sint16)SvIV(ST(4));
- Uint32 color = (Uint32)SvUV(ST(5));
- int RETVAL;
- dXSTARG;
-#line 4005 "SDL_perl.xs"
- RETVAL = filledEllipseColor( dst, x, y, rx, ry, color );
-#line 7869 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledEllipseRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledEllipseRGBA)
-{
- dXSARGS;
- if (items != 9)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledEllipseRGBA(dst, x, y, rx, ry, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rx = (Sint16)SvIV(ST(3));
- Sint16 ry = (Sint16)SvIV(ST(4));
- Uint8 r = (unsigned char)SvUV(ST(5));
- Uint8 g = (unsigned char)SvUV(ST(6));
- Uint8 b = (unsigned char)SvUV(ST(7));
- Uint8 a = (unsigned char)SvUV(ST(8));
- int RETVAL;
- dXSTARG;
-#line 4021 "SDL_perl.xs"
- RETVAL = filledEllipseRGBA( dst, x, y, rx, ry, r, g, b, a );
-#line 7895 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledPieColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledPieColor)
-{
- dXSARGS;
- if (items != 7)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledPieColor(dst, x, y, rad, start, end, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rad = (Sint16)SvIV(ST(3));
- Sint16 start = (Sint16)SvIV(ST(4));
- Sint16 end = (Sint16)SvIV(ST(5));
- Uint32 color = (Uint32)SvUV(ST(6));
- int RETVAL;
- dXSTARG;
-#line 4035 "SDL_perl.xs"
- RETVAL = filledPieColor( dst, x, y, rad, start, end, color );
-#line 7919 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledPieRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledPieRGBA)
-{
- dXSARGS;
- if (items != 10)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledPieRGBA(dst, x, y, rad, start, end, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- Sint16 rad = (Sint16)SvIV(ST(3));
- Sint16 start = (Sint16)SvIV(ST(4));
- Sint16 end = (Sint16)SvIV(ST(5));
- Uint8 r = (unsigned char)SvUV(ST(6));
- Uint8 g = (unsigned char)SvUV(ST(7));
- Uint8 b = (unsigned char)SvUV(ST(8));
- Uint8 a = (unsigned char)SvUV(ST(9));
- int RETVAL;
- dXSTARG;
-#line 4052 "SDL_perl.xs"
- RETVAL = filledPieRGBA( dst, x, y, rad, start, end, r, g, b, a );
-#line 7946 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXPolygonColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXPolygonColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXPolygonColor(dst, vx, vy, n, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16* vx = INT2PTR(Sint16 *,SvIV(ST(1)));
- Sint16* vy = INT2PTR(Sint16 *,SvIV(ST(2)));
- int n = (int)SvIV(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 4064 "SDL_perl.xs"
- RETVAL = polygonColor( dst, vx, vy, n, color );
-#line 7968 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXPolygonRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXPolygonRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXPolygonRGBA(dst, vx, vy, n, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16* vx = INT2PTR(Sint16 *,SvIV(ST(1)));
- Sint16* vy = INT2PTR(Sint16 *,SvIV(ST(2)));
- int n = (int)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 4079 "SDL_perl.xs"
- RETVAL = polygonRGBA( dst, vx, vy, n, r, g, b, a );
-#line 7993 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAapolygonColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAapolygonColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXAapolygonColor(dst, vx, vy, n, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16* vx = INT2PTR(Sint16 *,SvIV(ST(1)));
- Sint16* vy = INT2PTR(Sint16 *,SvIV(ST(2)));
- int n = (int)SvIV(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 4091 "SDL_perl.xs"
- RETVAL = aapolygonColor( dst, vx, vy, n, color );
-#line 8015 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXAapolygonRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXAapolygonRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXAapolygonRGBA(dst, vx, vy, n, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16* vx = INT2PTR(Sint16 *,SvIV(ST(1)));
- Sint16* vy = INT2PTR(Sint16 *,SvIV(ST(2)));
- int n = (int)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 4106 "SDL_perl.xs"
- RETVAL = aapolygonRGBA( dst, vx, vy, n, r, g, b, a );
-#line 8040 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledPolygonColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledPolygonColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledPolygonColor(dst, vx, vy, n, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16* vx = INT2PTR(Sint16 *,SvIV(ST(1)));
- Sint16* vy = INT2PTR(Sint16 *,SvIV(ST(2)));
- int n = (int)SvIV(ST(3));
- int color = (int)SvIV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 4118 "SDL_perl.xs"
- RETVAL = filledPolygonColor( dst, vx, vy, n, color );
-#line 8062 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXFilledPolygonRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXFilledPolygonRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXFilledPolygonRGBA(dst, vx, vy, n, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16* vx = INT2PTR(Sint16 *,SvIV(ST(1)));
- Sint16* vy = INT2PTR(Sint16 *,SvIV(ST(2)));
- int n = (int)SvIV(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 4133 "SDL_perl.xs"
- RETVAL = filledPolygonRGBA( dst, vx, vy, n, r, g, b, a );
-#line 8087 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXCharacterColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXCharacterColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXCharacterColor(dst, x, y, c, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- char c = (char)*SvPV_nolen(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 4145 "SDL_perl.xs"
- RETVAL = characterColor( dst, x, y, c, color );
-#line 8109 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXCharacterRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXCharacterRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXCharacterRGBA(dst, x, y, c, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- char c = (char)*SvPV_nolen(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 4160 "SDL_perl.xs"
- RETVAL = characterRGBA( dst, x, y, c, r, g, b, a );
-#line 8134 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXStringColor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXStringColor)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::GFXStringColor(dst, x, y, c, color)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- char* c = (char *)SvPV_nolen(ST(3));
- Uint32 color = (Uint32)SvUV(ST(4));
- int RETVAL;
- dXSTARG;
-#line 4172 "SDL_perl.xs"
- RETVAL = stringColor( dst, x, y, c, color );
-#line 8156 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_GFXStringRGBA); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_GFXStringRGBA)
-{
- dXSARGS;
- if (items != 8)
- Perl_croak(aTHX_ "Usage: SDL::GFXStringRGBA(dst, x, y, c, r, g, b, a)");
- {
- SDL_Surface* dst = INT2PTR(SDL_Surface *,SvIV(ST(0)));
- Sint16 x = (Sint16)SvIV(ST(1));
- Sint16 y = (Sint16)SvIV(ST(2));
- char* c = (char *)SvPV_nolen(ST(3));
- Uint8 r = (unsigned char)SvUV(ST(4));
- Uint8 g = (unsigned char)SvUV(ST(5));
- Uint8 b = (unsigned char)SvUV(ST(6));
- Uint8 a = (unsigned char)SvUV(ST(7));
- int RETVAL;
- dXSTARG;
-#line 4187 "SDL_perl.xs"
- RETVAL = stringRGBA( dst, x, y, c, r, g, b, a );
-#line 8181 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#endif
-#ifdef HAVE_SDL_SVG
-#define XSubPPtmpAAAG 1
-
-XS(XS_SDL_SVG_Load); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_Load)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SVG_Load(filename)");
- {
- char* filename = (char *)SvPV_nolen(ST(0));
- SDL_svg_context * RETVAL;
- dXSTARG;
-#line 4200 "SDL_perl.xs"
- RETVAL = SVG_Load(filename);
-#line 8203 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SVG_LoadBuffer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_LoadBuffer)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SVG_LoadBuffer(data, len)");
- {
- char* data = (char *)SvPV_nolen(ST(0));
- int len = (int)SvIV(ST(1));
- SDL_svg_context * RETVAL;
- dXSTARG;
-#line 4209 "SDL_perl.xs"
- RETVAL = SVG_LoadBuffer(data,len);
-#line 8222 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SVG_SetOffset); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_SetOffset)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::SVG_SetOffset(source, xoff, yoff)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
- double xoff = (double)SvNV(ST(1));
- double yoff = (double)SvNV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 4219 "SDL_perl.xs"
- RETVAL = SVG_SetOffset(source,xoff,yoff);
-#line 8242 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SVG_SetScale); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_SetScale)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::SVG_SetScale(source, xscale, yscale)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
- double xscale = (double)SvNV(ST(1));
- double yscale = (double)SvNV(ST(2));
- int RETVAL;
- dXSTARG;
-#line 4229 "SDL_perl.xs"
- RETVAL = SVG_SetScale(source,xscale,yscale);
-#line 8262 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SVG_RenderToSurface); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_RenderToSurface)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::SVG_RenderToSurface(source, x, y, dest)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
- int x = (int)SvIV(ST(1));
- int y = (int)SvIV(ST(2));
- SDL_Surface* dest = INT2PTR(SDL_Surface *,SvIV(ST(3)));
- int RETVAL;
- dXSTARG;
-#line 4240 "SDL_perl.xs"
- RETVAL = SVG_RenderToSurface(source,x,y,dest);
-#line 8283 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SVG_Free); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_Free)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SVG_Free(source)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
-#line 4248 "SDL_perl.xs"
- SVG_Free(source);
-#line 8299 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SVG_Set_Flags); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_Set_Flags)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::SVG_Set_Flags(source, flags)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
- Uint32 flags = (Uint32)SvUV(ST(1));
-#line 4255 "SDL_perl.xs"
- SVG_Set_Flags(source,flags);
-#line 8315 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SVG_Width); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_Width)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SVG_Width(source)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
- float RETVAL;
- dXSTARG;
-#line 4261 "SDL_perl.xs"
- RETVAL = SVG_Width(source);
-#line 8332 "SDL_perl.c"
- XSprePUSH; PUSHn((double)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SVG_HEIGHT); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_HEIGHT)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SVG_HEIGHT(source)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
- float RETVAL;
- dXSTARG;
-#line 4269 "SDL_perl.xs"
- RETVAL = SVG_Height(source);
-#line 8350 "SDL_perl.c"
- XSprePUSH; PUSHn((double)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SVG_SetClipping); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_SetClipping)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::SVG_SetClipping(source, minx, miny, maxx, maxy)");
- {
- SDL_svg_context* source = INT2PTR(SDL_svg_context *,SvIV(ST(0)));
- int minx = (int)SvIV(ST(1));
- int miny = (int)SvIV(ST(2));
- int maxx = (int)SvIV(ST(3));
- int maxy = (int)SvIV(ST(4));
-#line 4281 "SDL_perl.xs"
- SVG_SetClipping(source,minx,miny,maxx,maxy);
-#line 8370 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_SVG_Version); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SVG_Version)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::SVG_Version()");
- {
- int RETVAL;
- dXSTARG;
-#line 4286 "SDL_perl.xs"
- RETVAL = SVG_Version();
-#line 8386 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#endif
-#ifdef HAVE_SDL_SOUND
-#define XSubPPtmpAAAH 1
-
-XS(XS_SDL_SoundAudioInfoFormat); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundAudioInfoFormat)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundAudioInfoFormat(audioinfo)");
- {
- Sound_AudioInfo* audioinfo = INT2PTR(Sound_AudioInfo *,SvIV(ST(0)));
- Uint16 RETVAL;
- dXSTARG;
-#line 4299 "SDL_perl.xs"
- RETVAL = audioinfo->format;
-#line 8408 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundAudioInfoChannels); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundAudioInfoChannels)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundAudioInfoChannels(audioinfo)");
- {
- Sound_AudioInfo* audioinfo = INT2PTR(Sound_AudioInfo *,SvIV(ST(0)));
- Uint8 RETVAL;
- dXSTARG;
-#line 4307 "SDL_perl.xs"
- RETVAL = audioinfo->channels;
-#line 8426 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundAudioInforate); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundAudioInforate)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundAudioInforate(audioinfo)");
- {
- Sound_AudioInfo* audioinfo = INT2PTR(Sound_AudioInfo *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 4315 "SDL_perl.xs"
- RETVAL = audioinfo->rate;
-#line 8444 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundDecoderInfoExtensions); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundDecoderInfoExtensions)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundDecoderInfoExtensions(decoderinfo)");
- {
- Sound_DecoderInfo* decoderinfo = INT2PTR(Sound_DecoderInfo *,SvIV(ST(0)));
- AV * RETVAL;
-#line 4323 "SDL_perl.xs"
- const char **ext;
- for ( ext = decoderinfo->extensions; *ext != NULL; ext++ ){
- av_push(RETVAL,newSVpv(*ext,0));
- }
-#line 8464 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundDecoderInfoDescription); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundDecoderInfoDescription)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundDecoderInfoDescription(decoderinfo)");
- {
- Sound_DecoderInfo* decoderinfo = INT2PTR(Sound_DecoderInfo *,SvIV(ST(0)));
- const char * RETVAL;
- dXSTARG;
-#line 4334 "SDL_perl.xs"
- RETVAL = decoderinfo->description;
-#line 8483 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundDecoderInfoAuthor); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundDecoderInfoAuthor)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundDecoderInfoAuthor(decoderinfo)");
- {
- Sound_DecoderInfo* decoderinfo = INT2PTR(Sound_DecoderInfo *,SvIV(ST(0)));
- const char * RETVAL;
- dXSTARG;
-#line 4342 "SDL_perl.xs"
- RETVAL = decoderinfo->author;
-#line 8501 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundDecoderInfoUrl); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundDecoderInfoUrl)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundDecoderInfoUrl(decoderinfo)");
- {
- Sound_DecoderInfo* decoderinfo = INT2PTR(Sound_DecoderInfo *,SvIV(ST(0)));
- const char * RETVAL;
- dXSTARG;
-#line 4350 "SDL_perl.xs"
- RETVAL = decoderinfo->url;
-#line 8519 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundSampleDecoder); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundSampleDecoder)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundSampleDecoder(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- const Sound_DecoderInfo * RETVAL;
- dXSTARG;
-#line 4358 "SDL_perl.xs"
- RETVAL = sample->decoder;
-#line 8537 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundSampleDesired); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundSampleDesired)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundSampleDesired(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Sound_AudioInfo * RETVAL;
- dXSTARG;
-#line 4366 "SDL_perl.xs"
- RETVAL = &sample->desired;
-#line 8555 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundSampleAcutal); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundSampleAcutal)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundSampleAcutal(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Sound_AudioInfo * RETVAL;
- dXSTARG;
-#line 4374 "SDL_perl.xs"
- RETVAL = &sample->actual;
-#line 8573 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundSampleBuffer); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundSampleBuffer)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundSampleBuffer(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- char * RETVAL;
- dXSTARG;
-#line 4382 "SDL_perl.xs"
- RETVAL = sample->buffer;
-#line 8591 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundSampleBufferSize); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundSampleBufferSize)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundSampleBufferSize(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 4390 "SDL_perl.xs"
- RETVAL = sample->buffer_size;
-#line 8609 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_SoundSampleFlags); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_SoundSampleFlags)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::SoundSampleFlags(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 4398 "SDL_perl.xs"
- RETVAL = (Uint32)sample->flags;
-#line 8627 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_Init); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_Init)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::Sound_Init()");
- {
- int RETVAL;
- dXSTARG;
-#line 4405 "SDL_perl.xs"
- RETVAL = Sound_Init();
-#line 8644 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_Quit); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_Quit)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::Sound_Quit()");
- {
- int RETVAL;
- dXSTARG;
-#line 4412 "SDL_perl.xs"
- RETVAL = Sound_Quit();
-#line 8661 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_AvailableDecoders); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_AvailableDecoders)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::Sound_AvailableDecoders()");
- {
- AV * RETVAL;
-#line 4419 "SDL_perl.xs"
- RETVAL = newAV();
- const Sound_DecoderInfo** sdi;
- sdi = Sound_AvailableDecoders();
- if (sdi != NULL) {
- for (;*sdi != NULL; ++sdi) {
- av_push(RETVAL,sv_2mortal(newSViv(PTR2IV(*sdi))));
- }
- }
-#line 8684 "SDL_perl.c"
- ST(0) = newRV((SV*)RETVAL);
- sv_2mortal(ST(0));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_GetError); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_GetError)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::Sound_GetError()");
- {
- const char * RETVAL;
- dXSTARG;
-#line 4433 "SDL_perl.xs"
- RETVAL = Sound_GetError();
-#line 8702 "SDL_perl.c"
- sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_ClearError); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_ClearError)
-{
- dXSARGS;
- if (items != 0)
- Perl_croak(aTHX_ "Usage: SDL::Sound_ClearError()");
- {
-#line 4440 "SDL_perl.xs"
- Sound_ClearError();
-#line 8717 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_Sound_NewSample); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_NewSample)
-{
- dXSARGS;
- if (items != 4)
- Perl_croak(aTHX_ "Usage: SDL::Sound_NewSample(rw, ext, desired, buffsize)");
- {
- SDL_RWops* rw = INT2PTR(SDL_RWops *,SvIV(ST(0)));
- const char* ext = (const char *)SvPV_nolen(ST(1));
- Sound_AudioInfo* desired = INT2PTR(Sound_AudioInfo *,SvIV(ST(2)));
- Uint32 buffsize = (Uint32)SvUV(ST(3));
- Sound_Sample * RETVAL;
- dXSTARG;
-#line 4449 "SDL_perl.xs"
- RETVAL = Sound_NewSample(rw,ext,desired,buffsize);
-#line 8737 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_NewSampleFromMem); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_NewSampleFromMem)
-{
- dXSARGS;
- if (items != 5)
- Perl_croak(aTHX_ "Usage: SDL::Sound_NewSampleFromMem(data, size, ext, desired, buffsize)");
- {
- const Uint8 * data = INT2PTR(const Uint8 *,SvIV(ST(0)));
- Uint32 size = (Uint32)SvUV(ST(1));
- const char* ext = (const char *)SvPV_nolen(ST(2));
- Sound_AudioInfo* desired = INT2PTR(Sound_AudioInfo *,SvIV(ST(3)));
- Uint32 buffsize = (Uint32)SvUV(ST(4));
- Sound_Sample * RETVAL;
- dXSTARG;
-#line 4461 "SDL_perl.xs"
- RETVAL = Sound_NewSampleFromMem(data,size,ext,desired,buffsize);
-#line 8759 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_NewSampleFromFile); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_NewSampleFromFile)
-{
- dXSARGS;
- if (items != 3)
- Perl_croak(aTHX_ "Usage: SDL::Sound_NewSampleFromFile(fname, desired, buffsize)");
- {
- const char* fname = (const char *)SvPV_nolen(ST(0));
- Sound_AudioInfo* desired = INT2PTR(Sound_AudioInfo *,SvIV(ST(1)));
- Uint32 buffsize = (Uint32)SvUV(ST(2));
- Sound_Sample * RETVAL;
- dXSTARG;
-#line 4471 "SDL_perl.xs"
- RETVAL = Sound_NewSampleFromFile(fname,desired,buffsize);
-#line 8779 "SDL_perl.c"
- XSprePUSH; PUSHi(PTR2IV(RETVAL));
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_FreeSample); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_FreeSample)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Sound_FreeSample(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
-#line 4479 "SDL_perl.xs"
- Sound_FreeSample(sample);
-#line 8795 "SDL_perl.c"
- }
- XSRETURN_EMPTY;
-}
-
-XS(XS_SDL_Sound_GetDuration); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_GetDuration)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Sound_GetDuration(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Sint32 RETVAL;
- dXSTARG;
-#line 4485 "SDL_perl.xs"
- RETVAL = Sound_GetDuration(sample);
-#line 8812 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_SetBufferSize); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_SetBufferSize)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::Sound_SetBufferSize(sample, size)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Uint32 size = (Uint32)SvUV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 4494 "SDL_perl.xs"
- RETVAL = Sound_SetBufferSize(sample,size);
-#line 8831 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_Decode); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_Decode)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Sound_Decode(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 4502 "SDL_perl.xs"
- RETVAL = Sound_Decode(sample);
-#line 8849 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_DecodeAll); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_DecodeAll)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Sound_DecodeAll(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Uint32 RETVAL;
- dXSTARG;
-#line 4510 "SDL_perl.xs"
- RETVAL = Sound_DecodeAll(sample);
-#line 8867 "SDL_perl.c"
- XSprePUSH; PUSHu((UV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_Rewind); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_Rewind)
-{
- dXSARGS;
- if (items != 1)
- Perl_croak(aTHX_ "Usage: SDL::Sound_Rewind(sample)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- int RETVAL;
- dXSTARG;
-#line 4518 "SDL_perl.xs"
- RETVAL = Sound_Rewind(sample);
-#line 8885 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-XS(XS_SDL_Sound_Seek); /* prototype to pass -Wmissing-prototypes */
-XS(XS_SDL_Sound_Seek)
-{
- dXSARGS;
- if (items != 2)
- Perl_croak(aTHX_ "Usage: SDL::Sound_Seek(sample, ms)");
- {
- Sound_Sample* sample = INT2PTR(Sound_Sample *,SvIV(ST(0)));
- Uint32 ms = (Uint32)SvUV(ST(1));
- int RETVAL;
- dXSTARG;
-#line 4527 "SDL_perl.xs"
- RETVAL = Sound_Seek(sample,ms);
-#line 8904 "SDL_perl.c"
- XSprePUSH; PUSHi((IV)RETVAL);
- }
- XSRETURN(1);
-}
-
-#endif
-#ifdef __cplusplus
-extern "C"
-#endif
-XS(boot_SDL); /* prototype to pass -Wmissing-prototypes */
-XS(boot_SDL)
-{
- dXSARGS;
- char* file = __FILE__;
-
- XS_VERSION_BOOTCHECK ;
-
- newXS("SDL::GetError", XS_SDL_GetError, file);
- newXS("SDL::Init", XS_SDL_Init, file);
- newXS("SDL::InitSubSystem", XS_SDL_InitSubSystem, file);
- newXS("SDL::QuitSubSystem", XS_SDL_QuitSubSystem, file);
- newXS("SDL::Quit", XS_SDL_Quit, file);
- newXS("SDL::WasInit", XS_SDL_WasInit, file);
- newXS("SDL::Delay", XS_SDL_Delay, file);
- newXS("SDL::GetTicks", XS_SDL_GetTicks, file);
- newXS("SDL::SetTimer", XS_SDL_SetTimer, file);
- newXS("SDL::AddTimer", XS_SDL_AddTimer, file);
- newXS("SDL::PerlTimerCallback", XS_SDL_PerlTimerCallback, file);
- newXS("SDL::NewTimer", XS_SDL_NewTimer, file);
- newXS("SDL::RemoveTimer", XS_SDL_RemoveTimer, file);
- newXS("SDL::RWFromFile", XS_SDL_RWFromFile, file);
- newXS("SDL::RWFromFP", XS_SDL_RWFromFP, file);
- newXS("SDL::RWFromMem", XS_SDL_RWFromMem, file);
- newXS("SDL::RWFromConstMem", XS_SDL_RWFromConstMem, file);
- newXS("SDL::AllocRW", XS_SDL_AllocRW, file);
- newXS("SDL::FreeRW", XS_SDL_FreeRW, file);
- newXS("SDL::RWseek", XS_SDL_RWseek, file);
- newXS("SDL::RWtell", XS_SDL_RWtell, file);
- newXS("SDL::RWread", XS_SDL_RWread, file);
- newXS("SDL::RWwrite", XS_SDL_RWwrite, file);
- newXS("SDL::RWclose", XS_SDL_RWclose, file);
- newXS("SDL::CDNumDrives", XS_SDL_CDNumDrives, file);
- newXS("SDL::CDName", XS_SDL_CDName, file);
- newXS("SDL::CDOpen", XS_SDL_CDOpen, file);
- newXS("SDL::CDTrackId", XS_SDL_CDTrackId, file);
- newXS("SDL::CDTrackType", XS_SDL_CDTrackType, file);
- newXS("SDL::CDTrackLength", XS_SDL_CDTrackLength, file);
- newXS("SDL::CDTrackOffset", XS_SDL_CDTrackOffset, file);
- newXS("SDL::CDStatus", XS_SDL_CDStatus, file);
- newXS("SDL::CDPlayTracks", XS_SDL_CDPlayTracks, file);
- newXS("SDL::CDPlay", XS_SDL_CDPlay, file);
- newXS("SDL::CDPause", XS_SDL_CDPause, file);
- newXS("SDL::CDResume", XS_SDL_CDResume, file);
- newXS("SDL::CDStop", XS_SDL_CDStop, file);
- newXS("SDL::CDEject", XS_SDL_CDEject, file);
- newXS("SDL::CDClose", XS_SDL_CDClose, file);
- newXS("SDL::CDId", XS_SDL_CDId, file);
- newXS("SDL::CDNumTracks", XS_SDL_CDNumTracks, file);
- newXS("SDL::CDCurTrack", XS_SDL_CDCurTrack, file);
- newXS("SDL::CDCurFrame", XS_SDL_CDCurFrame, file);
- newXS("SDL::CDTrack", XS_SDL_CDTrack, file);
- newXS("SDL::PumpEvents", XS_SDL_PumpEvents, file);
- newXS("SDL::PushEvent", XS_SDL_PushEvent, file);
- newXS("SDL::NewEvent", XS_SDL_NewEvent, file);
- newXS("SDL::FreeEvent", XS_SDL_FreeEvent, file);
- newXS("SDL::PollEvent", XS_SDL_PollEvent, file);
- newXS("SDL::WaitEvent", XS_SDL_WaitEvent, file);
- newXS("SDL::EventState", XS_SDL_EventState, file);
- newXS("SDL::EventType", XS_SDL_EventType, file);
- newXS("SDL::SetEventType", XS_SDL_SetEventType, file);
- newXS("SDL::ActiveEventGain", XS_SDL_ActiveEventGain, file);
- newXS("SDL::ActiveEventState", XS_SDL_ActiveEventState, file);
- newXS("SDL::KeyEventState", XS_SDL_KeyEventState, file);
- newXS("SDL::KeyEventSym", XS_SDL_KeyEventSym, file);
- newXS("SDL::KeyEventMod", XS_SDL_KeyEventMod, file);
- newXS("SDL::KeyEventUnicode", XS_SDL_KeyEventUnicode, file);
- newXS("SDL::KeyEventScanCode", XS_SDL_KeyEventScanCode, file);
- newXS("SDL::MouseMotionState", XS_SDL_MouseMotionState, file);
- newXS("SDL::MouseMotionX", XS_SDL_MouseMotionX, file);
- newXS("SDL::MouseMotionY", XS_SDL_MouseMotionY, file);
- newXS("SDL::MouseMotionXrel", XS_SDL_MouseMotionXrel, file);
- newXS("SDL::MouseMotionYrel", XS_SDL_MouseMotionYrel, file);
- newXS("SDL::MouseButtonState", XS_SDL_MouseButtonState, file);
- newXS("SDL::MouseButton", XS_SDL_MouseButton, file);
- newXS("SDL::MouseButtonX", XS_SDL_MouseButtonX, file);
- newXS("SDL::MouseButtonY", XS_SDL_MouseButtonY, file);
- newXS("SDL::SysWMEventMsg", XS_SDL_SysWMEventMsg, file);
- newXS("SDL::EnableUnicode", XS_SDL_EnableUnicode, file);
- newXS("SDL::EnableKeyRepeat", XS_SDL_EnableKeyRepeat, file);
- newXS("SDL::GetModState", XS_SDL_GetModState, file);
- newXS("SDL::SetModState", XS_SDL_SetModState, file);
- newXS("SDL::GetKeyName", XS_SDL_GetKeyName, file);
- newXS("SDL::CreateRGBSurface", XS_SDL_CreateRGBSurface, file);
- newXS("SDL::CreateRGBSurfaceFrom", XS_SDL_CreateRGBSurfaceFrom, file);
-#if XSubPPtmpAAAA
- newXS("SDL::IMGLoad", XS_SDL_IMGLoad, file);
-#endif
- newXS("SDL::SurfaceCopy", XS_SDL_SurfaceCopy, file);
- newXS("SDL::FreeSurface", XS_SDL_FreeSurface, file);
- newXS("SDL::SurfaceFlags", XS_SDL_SurfaceFlags, file);
- newXS("SDL::SurfacePalette", XS_SDL_SurfacePalette, file);
- newXS("SDL::SurfaceBitsPerPixel", XS_SDL_SurfaceBitsPerPixel, file);
- newXS("SDL::SurfaceBytesPerPixel", XS_SDL_SurfaceBytesPerPixel, file);
- newXS("SDL::SurfaceRshift", XS_SDL_SurfaceRshift, file);
- newXS("SDL::SurfaceGshift", XS_SDL_SurfaceGshift, file);
- newXS("SDL::SurfaceBshift", XS_SDL_SurfaceBshift, file);
- newXS("SDL::SurfaceAshift", XS_SDL_SurfaceAshift, file);
- newXS("SDL::SurfaceRmask", XS_SDL_SurfaceRmask, file);
- newXS("SDL::SurfaceGmask", XS_SDL_SurfaceGmask, file);
- newXS("SDL::SurfaceBmask", XS_SDL_SurfaceBmask, file);
- newXS("SDL::SurfaceAmask", XS_SDL_SurfaceAmask, file);
- newXS("SDL::SurfaceColorKey", XS_SDL_SurfaceColorKey, file);
- newXS("SDL::SurfaceAlpha", XS_SDL_SurfaceAlpha, file);
- newXS("SDL::SurfaceW", XS_SDL_SurfaceW, file);
- newXS("SDL::SurfaceH", XS_SDL_SurfaceH, file);
- newXS("SDL::SurfacePitch", XS_SDL_SurfacePitch, file);
- newXS("SDL::SurfacePixels", XS_SDL_SurfacePixels, file);
- newXS("SDL::SurfacePixel", XS_SDL_SurfacePixel, file);
- newXS("SDL::MUSTLOCK", XS_SDL_MUSTLOCK, file);
- newXS("SDL::SurfaceLock", XS_SDL_SurfaceLock, file);
- newXS("SDL::SurfaceUnlock", XS_SDL_SurfaceUnlock, file);
- newXS("SDL::GetVideoSurface", XS_SDL_GetVideoSurface, file);
- newXS("SDL::VideoInfo", XS_SDL_VideoInfo, file);
- newXS("SDL::NewRect", XS_SDL_NewRect, file);
- newXS("SDL::FreeRect", XS_SDL_FreeRect, file);
- newXS("SDL::RectX", XS_SDL_RectX, file);
- newXS("SDL::RectY", XS_SDL_RectY, file);
- newXS("SDL::RectW", XS_SDL_RectW, file);
- newXS("SDL::RectH", XS_SDL_RectH, file);
- newXS("SDL::ListModes", XS_SDL_ListModes, file);
- newXS("SDL::NewColor", XS_SDL_NewColor, file);
- newXS("SDL::ColorR", XS_SDL_ColorR, file);
- newXS("SDL::ColorG", XS_SDL_ColorG, file);
- newXS("SDL::ColorB", XS_SDL_ColorB, file);
- newXS("SDL::FreeColor", XS_SDL_FreeColor, file);
- newXS("SDL::NewPalette", XS_SDL_NewPalette, file);
- newXS("SDL::PaletteNColors", XS_SDL_PaletteNColors, file);
- newXS("SDL::PaletteColors", XS_SDL_PaletteColors, file);
- newXS("SDL::VideoModeOK", XS_SDL_VideoModeOK, file);
- newXS("SDL::SetVideoMode", XS_SDL_SetVideoMode, file);
- newXS("SDL::UpdateRect", XS_SDL_UpdateRect, file);
- newXS("SDL::UpdateRects", XS_SDL_UpdateRects, file);
- newXS("SDL::Flip", XS_SDL_Flip, file);
- newXS("SDL::SetColors", XS_SDL_SetColors, file);
- newXS("SDL::MapRGB", XS_SDL_MapRGB, file);
- newXS("SDL::MapRGBA", XS_SDL_MapRGBA, file);
- newXS("SDL::GetRGB", XS_SDL_GetRGB, file);
- newXS("SDL::GetRGBA", XS_SDL_GetRGBA, file);
- newXS("SDL::SaveBMP", XS_SDL_SaveBMP, file);
- newXS("SDL::SetColorKey", XS_SDL_SetColorKey, file);
- newXS("SDL::SetAlpha", XS_SDL_SetAlpha, file);
- newXS("SDL::DisplayFormat", XS_SDL_DisplayFormat, file);
- newXS("SDL::DisplayFormatAlpha", XS_SDL_DisplayFormatAlpha, file);
- newXS("SDL::ConvertRGB", XS_SDL_ConvertRGB, file);
- newXS("SDL::ConvertRGBA", XS_SDL_ConvertRGBA, file);
- newXS("SDL::BlitSurface", XS_SDL_BlitSurface, file);
- newXS("SDL::FillRect", XS_SDL_FillRect, file);
- newXS("SDL::GetAppState", XS_SDL_GetAppState, file);
- newXS("SDL::WMSetCaption", XS_SDL_WMSetCaption, file);
- newXS("SDL::WMGetCaption", XS_SDL_WMGetCaption, file);
- newXS("SDL::WMSetIcon", XS_SDL_WMSetIcon, file);
- newXS("SDL::WarpMouse", XS_SDL_WarpMouse, file);
- newXS("SDL::GetMouseState", XS_SDL_GetMouseState, file);
- newXS("SDL::GetRelativeMouseState", XS_SDL_GetRelativeMouseState, file);
- newXS("SDL::NewCursor", XS_SDL_NewCursor, file);
- newXS("SDL::FreeCursor", XS_SDL_FreeCursor, file);
- newXS("SDL::SetCursor", XS_SDL_SetCursor, file);
- newXS("SDL::GetCursor", XS_SDL_GetCursor, file);
- newXS("SDL::ShowCursor", XS_SDL_ShowCursor, file);
- newXS("SDL::NewAudioSpec", XS_SDL_NewAudioSpec, file);
- newXS("SDL::FreeAudioSpec", XS_SDL_FreeAudioSpec, file);
- newXS("SDL::NewAudioCVT", XS_SDL_NewAudioCVT, file);
- newXS("SDL::FreeAudioCVT", XS_SDL_FreeAudioCVT, file);
- newXS("SDL::ConvertAudioData", XS_SDL_ConvertAudioData, file);
- newXS("SDL::OpenAudio", XS_SDL_OpenAudio, file);
- newXS("SDL::GetAudioStatus", XS_SDL_GetAudioStatus, file);
- newXS("SDL::PauseAudio", XS_SDL_PauseAudio, file);
- newXS("SDL::LockAudio", XS_SDL_LockAudio, file);
- newXS("SDL::UnlockAudio", XS_SDL_UnlockAudio, file);
- newXS("SDL::CloseAudio", XS_SDL_CloseAudio, file);
- newXS("SDL::FreeWAV", XS_SDL_FreeWAV, file);
- newXS("SDL::LoadWAV", XS_SDL_LoadWAV, file);
-#if XSubPPtmpAAAB
- newXS("SDL::MixAudio", XS_SDL_MixAudio, file);
- newXS("SDL::MixOpenAudio", XS_SDL_MixOpenAudio, file);
- newXS("SDL::MixAllocateChannels", XS_SDL_MixAllocateChannels, file);
- newXS("SDL::MixQuerySpec", XS_SDL_MixQuerySpec, file);
- newXS("SDL::MixLoadWAV", XS_SDL_MixLoadWAV, file);
- newXS("SDL::MixLoadMusic", XS_SDL_MixLoadMusic, file);
- newXS("SDL::MixQuickLoadWAV", XS_SDL_MixQuickLoadWAV, file);
- newXS("SDL::MixFreeChunk", XS_SDL_MixFreeChunk, file);
- newXS("SDL::MixFreeMusic", XS_SDL_MixFreeMusic, file);
- newXS("SDL::MixSetPostMixCallback", XS_SDL_MixSetPostMixCallback, file);
- newXS("SDL::PerlMixMusicHook", XS_SDL_PerlMixMusicHook, file);
- newXS("SDL::MixSetMusicHook", XS_SDL_MixSetMusicHook, file);
- newXS("SDL::MixSetMusicFinishedHook", XS_SDL_MixSetMusicFinishedHook, file);
- newXS("SDL::MixGetMusicHookData", XS_SDL_MixGetMusicHookData, file);
- newXS("SDL::MixReverseChannels", XS_SDL_MixReverseChannels, file);
- newXS("SDL::MixGroupChannel", XS_SDL_MixGroupChannel, file);
- newXS("SDL::MixGroupChannels", XS_SDL_MixGroupChannels, file);
- newXS("SDL::MixGroupAvailable", XS_SDL_MixGroupAvailable, file);
- newXS("SDL::MixGroupCount", XS_SDL_MixGroupCount, file);
- newXS("SDL::MixGroupOldest", XS_SDL_MixGroupOldest, file);
- newXS("SDL::MixGroupNewer", XS_SDL_MixGroupNewer, file);
- newXS("SDL::MixPlayChannel", XS_SDL_MixPlayChannel, file);
- newXS("SDL::MixPlayChannelTimed", XS_SDL_MixPlayChannelTimed, file);
- newXS("SDL::MixPlayMusic", XS_SDL_MixPlayMusic, file);
- newXS("SDL::MixFadeInChannel", XS_SDL_MixFadeInChannel, file);
- newXS("SDL::MixFadeInChannelTimed", XS_SDL_MixFadeInChannelTimed, file);
- newXS("SDL::MixFadeInMusic", XS_SDL_MixFadeInMusic, file);
- newXS("SDL::MixVolume", XS_SDL_MixVolume, file);
- newXS("SDL::MixVolumeChunk", XS_SDL_MixVolumeChunk, file);
- newXS("SDL::MixVolumeMusic", XS_SDL_MixVolumeMusic, file);
- newXS("SDL::MixHaltChannel", XS_SDL_MixHaltChannel, file);
- newXS("SDL::MixHaltGroup", XS_SDL_MixHaltGroup, file);
- newXS("SDL::MixHaltMusic", XS_SDL_MixHaltMusic, file);
- newXS("SDL::MixExpireChannel", XS_SDL_MixExpireChannel, file);
- newXS("SDL::MixFadeOutChannel", XS_SDL_MixFadeOutChannel, file);
- newXS("SDL::MixFadeOutGroup", XS_SDL_MixFadeOutGroup, file);
- newXS("SDL::MixFadeOutMusic", XS_SDL_MixFadeOutMusic, file);
- newXS("SDL::MixFadingMusic", XS_SDL_MixFadingMusic, file);
- newXS("SDL::MixFadingChannel", XS_SDL_MixFadingChannel, file);
- newXS("SDL::MixPause", XS_SDL_MixPause, file);
- newXS("SDL::MixResume", XS_SDL_MixResume, file);
- newXS("SDL::MixPaused", XS_SDL_MixPaused, file);
- newXS("SDL::MixPauseMusic", XS_SDL_MixPauseMusic, file);
- newXS("SDL::MixResumeMusic", XS_SDL_MixResumeMusic, file);
- newXS("SDL::MixRewindMusic", XS_SDL_MixRewindMusic, file);
- newXS("SDL::MixPausedMusic", XS_SDL_MixPausedMusic, file);
- newXS("SDL::MixPlaying", XS_SDL_MixPlaying, file);
- newXS("SDL::MixPlayingMusic", XS_SDL_MixPlayingMusic, file);
- newXS("SDL::MixCloseAudio", XS_SDL_MixCloseAudio, file);
-#endif
- newXS("SDL::GLLoadLibrary", XS_SDL_GLLoadLibrary, file);
- newXS("SDL::GLGetProcAddress", XS_SDL_GLGetProcAddress, file);
- newXS("SDL::GLSetAttribute", XS_SDL_GLSetAttribute, file);
- newXS("SDL::GLGetAttribute", XS_SDL_GLGetAttribute, file);
- newXS("SDL::GLSwapBuffers", XS_SDL_GLSwapBuffers, file);
- newXS("SDL::BigEndian", XS_SDL_BigEndian, file);
- newXS("SDL::NumJoysticks", XS_SDL_NumJoysticks, file);
- newXS("SDL::JoystickName", XS_SDL_JoystickName, file);
- newXS("SDL::JoystickOpen", XS_SDL_JoystickOpen, file);
- newXS("SDL::JoystickOpened", XS_SDL_JoystickOpened, file);
- newXS("SDL::JoystickIndex", XS_SDL_JoystickIndex, file);
- newXS("SDL::JoystickNumAxes", XS_SDL_JoystickNumAxes, file);
- newXS("SDL::JoystickNumBalls", XS_SDL_JoystickNumBalls, file);
- newXS("SDL::JoystickNumHats", XS_SDL_JoystickNumHats, file);
- newXS("SDL::JoystickNumButtons", XS_SDL_JoystickNumButtons, file);
- newXS("SDL::JoystickUpdate", XS_SDL_JoystickUpdate, file);
- newXS("SDL::JoystickGetAxis", XS_SDL_JoystickGetAxis, file);
- newXS("SDL::JoystickGetHat", XS_SDL_JoystickGetHat, file);
- newXS("SDL::JoystickGetButton", XS_SDL_JoystickGetButton, file);
- newXS("SDL::JoystickGetBall", XS_SDL_JoystickGetBall, file);
- newXS("SDL::JoystickClose", XS_SDL_JoystickClose, file);
- newXS("SDL::JoyAxisEventWhich", XS_SDL_JoyAxisEventWhich, file);
- newXS("SDL::JoyAxisEventAxis", XS_SDL_JoyAxisEventAxis, file);
- newXS("SDL::JoyAxisEventValue", XS_SDL_JoyAxisEventValue, file);
- newXS("SDL::JoyButtonEventWhich", XS_SDL_JoyButtonEventWhich, file);
- newXS("SDL::JoyButtonEventButton", XS_SDL_JoyButtonEventButton, file);
- newXS("SDL::JoyButtonEventState", XS_SDL_JoyButtonEventState, file);
- newXS("SDL::JoyHatEventWhich", XS_SDL_JoyHatEventWhich, file);
- newXS("SDL::JoyHatEventHat", XS_SDL_JoyHatEventHat, file);
- newXS("SDL::JoyHatEventValue", XS_SDL_JoyHatEventValue, file);
- newXS("SDL::JoyBallEventWhich", XS_SDL_JoyBallEventWhich, file);
- newXS("SDL::JoyBallEventBall", XS_SDL_JoyBallEventBall, file);
- newXS("SDL::JoyBallEventXrel", XS_SDL_JoyBallEventXrel, file);
- newXS("SDL::JoyBallEventYrel", XS_SDL_JoyBallEventYrel, file);
- newXS("SDL::SetClipRect", XS_SDL_SetClipRect, file);
- newXS("SDL::GetClipRect", XS_SDL_GetClipRect, file);
-#if XSubPPtmpAAAC
- newXS("SDL::NetInit", XS_SDL_NetInit, file);
- newXS("SDL::NetQuit", XS_SDL_NetQuit, file);
- newXS("SDL::NetNewIPaddress", XS_SDL_NetNewIPaddress, file);
- newXS("SDL::NetIPaddressHost", XS_SDL_NetIPaddressHost, file);
- newXS("SDL::NetIPaddressPort", XS_SDL_NetIPaddressPort, file);
- newXS("SDL::NetFreeIPaddress", XS_SDL_NetFreeIPaddress, file);
- newXS("SDL::NetResolveIP", XS_SDL_NetResolveIP, file);
- newXS("SDL::NetResolveHost", XS_SDL_NetResolveHost, file);
- newXS("SDL::NetTCPOpen", XS_SDL_NetTCPOpen, file);
- newXS("SDL::NetTCPAccept", XS_SDL_NetTCPAccept, file);
- newXS("SDL::NetTCPGetPeerAddress", XS_SDL_NetTCPGetPeerAddress, file);
- newXS("SDL::NetTCPSend", XS_SDL_NetTCPSend, file);
- newXS("SDL::NetTCPRecv", XS_SDL_NetTCPRecv, file);
- newXS("SDL::NetTCPClose", XS_SDL_NetTCPClose, file);
- newXS("SDL::NetAllocPacket", XS_SDL_NetAllocPacket, file);
- newXS("SDL::NetAllocPacketV", XS_SDL_NetAllocPacketV, file);
- newXS("SDL::NetResizePacket", XS_SDL_NetResizePacket, file);
- newXS("SDL::NetFreePacket", XS_SDL_NetFreePacket, file);
- newXS("SDL::NetFreePacketV", XS_SDL_NetFreePacketV, file);
- newXS("SDL::NetUDPOpen", XS_SDL_NetUDPOpen, file);
- newXS("SDL::NetUDPBind", XS_SDL_NetUDPBind, file);
- newXS("SDL::NetUDPUnbind", XS_SDL_NetUDPUnbind, file);
- newXS("SDL::NetUDPGetPeerAddress", XS_SDL_NetUDPGetPeerAddress, file);
- newXS("SDL::NetUDPSendV", XS_SDL_NetUDPSendV, file);
- newXS("SDL::NetUDPSend", XS_SDL_NetUDPSend, file);
- newXS("SDL::NetUDPRecvV", XS_SDL_NetUDPRecvV, file);
- newXS("SDL::NetUDPRecv", XS_SDL_NetUDPRecv, file);
- newXS("SDL::NetUDPClose", XS_SDL_NetUDPClose, file);
- newXS("SDL::NetAllocSocketSet", XS_SDL_NetAllocSocketSet, file);
- newXS("SDL::NetTCP_AddSocket", XS_SDL_NetTCP_AddSocket, file);
- newXS("SDL::NetUDP_AddSocket", XS_SDL_NetUDP_AddSocket, file);
- newXS("SDL::NetTCP_DelSocket", XS_SDL_NetTCP_DelSocket, file);
- newXS("SDL::NetUDP_DelSocket", XS_SDL_NetUDP_DelSocket, file);
- newXS("SDL::NetCheckSockets", XS_SDL_NetCheckSockets, file);
- newXS("SDL::NetSocketReady", XS_SDL_NetSocketReady, file);
- newXS("SDL::NetFreeSocketSet", XS_SDL_NetFreeSocketSet, file);
- newXS("SDL::NetWrite16", XS_SDL_NetWrite16, file);
- newXS("SDL::NetWrite32", XS_SDL_NetWrite32, file);
- newXS("SDL::NetRead16", XS_SDL_NetRead16, file);
- newXS("SDL::NetRead32", XS_SDL_NetRead32, file);
-#endif
-#if XSubPPtmpAAAD
- newXS("SDL::TTFInit", XS_SDL_TTFInit, file);
- newXS("SDL::TTFQuit", XS_SDL_TTFQuit, file);
- newXS("SDL::TTFOpenFont", XS_SDL_TTFOpenFont, file);
- newXS("SDL::TTFGetFontStyle", XS_SDL_TTFGetFontStyle, file);
- newXS("SDL::TTFSetFontStyle", XS_SDL_TTFSetFontStyle, file);
- newXS("SDL::TTFFontHeight", XS_SDL_TTFFontHeight, file);
- newXS("SDL::TTFFontAscent", XS_SDL_TTFFontAscent, file);
- newXS("SDL::TTFFontDescent", XS_SDL_TTFFontDescent, file);
- newXS("SDL::TTFFontLineSkip", XS_SDL_TTFFontLineSkip, file);
- newXS("SDL::TTFGlyphMetrics", XS_SDL_TTFGlyphMetrics, file);
- newXS("SDL::TTFSizeText", XS_SDL_TTFSizeText, file);
- newXS("SDL::TTFSizeUTF8", XS_SDL_TTFSizeUTF8, file);
- newXS("SDL::TTFSizeUNICODE", XS_SDL_TTFSizeUNICODE, file);
- newXS("SDL::TTFRenderTextSolid", XS_SDL_TTFRenderTextSolid, file);
- newXS("SDL::TTFRenderUTF8Solid", XS_SDL_TTFRenderUTF8Solid, file);
- newXS("SDL::TTFRenderUNICODESolid", XS_SDL_TTFRenderUNICODESolid, file);
- newXS("SDL::TTFRenderGlyphSolid", XS_SDL_TTFRenderGlyphSolid, file);
- newXS("SDL::TTFRenderTextShaded", XS_SDL_TTFRenderTextShaded, file);
- newXS("SDL::TTFRenderUTF8Shaded", XS_SDL_TTFRenderUTF8Shaded, file);
- newXS("SDL::TTFRenderUNICODEShaded", XS_SDL_TTFRenderUNICODEShaded, file);
- newXS("SDL::TTFRenderGlyphShaded", XS_SDL_TTFRenderGlyphShaded, file);
- newXS("SDL::TTFRenderTextBlended", XS_SDL_TTFRenderTextBlended, file);
- newXS("SDL::TTFRenderUTF8Blended", XS_SDL_TTFRenderUTF8Blended, file);
- newXS("SDL::TTFRenderUNICODEBlended", XS_SDL_TTFRenderUNICODEBlended, file);
- newXS("SDL::TTFRenderGlyphBlended", XS_SDL_TTFRenderGlyphBlended, file);
- newXS("SDL::TTFCloseFont", XS_SDL_TTFCloseFont, file);
- newXS("SDL::TTFPutString", XS_SDL_TTFPutString, file);
-#endif
- newXS("SDL::CreateYUVOverlay", XS_SDL_CreateYUVOverlay, file);
- newXS("SDL::LockYUVOverlay", XS_SDL_LockYUVOverlay, file);
- newXS("SDL::UnlockYUVOverlay", XS_SDL_UnlockYUVOverlay, file);
- newXS("SDL::DisplayYUVOverlay", XS_SDL_DisplayYUVOverlay, file);
- newXS("SDL::FreeYUVOverlay", XS_SDL_FreeYUVOverlay, file);
- newXS("SDL::OverlayFormat", XS_SDL_OverlayFormat, file);
- newXS("SDL::OverlayW", XS_SDL_OverlayW, file);
- newXS("SDL::OverlayH", XS_SDL_OverlayH, file);
- newXS("SDL::OverlayPlanes", XS_SDL_OverlayPlanes, file);
- newXS("SDL::OverlayHW", XS_SDL_OverlayHW, file);
- newXS("SDL::OverlayPitches", XS_SDL_OverlayPitches, file);
- newXS("SDL::OverlayPixels", XS_SDL_OverlayPixels, file);
- newXS("SDL::WMToggleFullScreen", XS_SDL_WMToggleFullScreen, file);
- newXS("SDL::WMGrabInput", XS_SDL_WMGrabInput, file);
- newXS("SDL::WMIconifyWindow", XS_SDL_WMIconifyWindow, file);
- newXS("SDL::ResizeEventW", XS_SDL_ResizeEventW, file);
- newXS("SDL::ResizeEventH", XS_SDL_ResizeEventH, file);
- newXS("SDL::AudioDriverName", XS_SDL_AudioDriverName, file);
- newXS("SDL::GetKeyState", XS_SDL_GetKeyState, file);
-#if XSubPPtmpAAAE
- newXS("SDL::NewSMPEGInfo", XS_SDL_NewSMPEGInfo, file);
- newXS("SDL::FreeSMPEGInfo", XS_SDL_FreeSMPEGInfo, file);
- newXS("SDL::SMPEGInfoHasAudio", XS_SDL_SMPEGInfoHasAudio, file);
- newXS("SDL::SMPEGInfoHasVideo", XS_SDL_SMPEGInfoHasVideo, file);
- newXS("SDL::SMPEGInfoWidth", XS_SDL_SMPEGInfoWidth, file);
- newXS("SDL::SMPEGInfoHeight", XS_SDL_SMPEGInfoHeight, file);
- newXS("SDL::SMPEGInfoCurrentFrame", XS_SDL_SMPEGInfoCurrentFrame, file);
- newXS("SDL::SMPEGInfoCurrentFPS", XS_SDL_SMPEGInfoCurrentFPS, file);
- newXS("SDL::SMPEGInfoCurrentAudioFrame", XS_SDL_SMPEGInfoCurrentAudioFrame, file);
- newXS("SDL::SMPEGInfoCurrentOffset", XS_SDL_SMPEGInfoCurrentOffset, file);
- newXS("SDL::SMPEGInfoTotalSize", XS_SDL_SMPEGInfoTotalSize, file);
- newXS("SDL::SMPEGInfoCurrentTime", XS_SDL_SMPEGInfoCurrentTime, file);
- newXS("SDL::SMPEGInfoTotalTime", XS_SDL_SMPEGInfoTotalTime, file);
- newXS("SDL::SMPEGError", XS_SDL_SMPEGError, file);
- newXS("SDL::NewSMPEG", XS_SDL_NewSMPEG, file);
- newXS("SDL::FreeSMPEG", XS_SDL_FreeSMPEG, file);
- newXS("SDL::SMPEGEnableAudio", XS_SDL_SMPEGEnableAudio, file);
- newXS("SDL::SMPEGEnableVideo", XS_SDL_SMPEGEnableVideo, file);
- newXS("SDL::SMPEGSetVolume", XS_SDL_SMPEGSetVolume, file);
- newXS("SDL::SMPEGSetDisplay", XS_SDL_SMPEGSetDisplay, file);
- newXS("SDL::SMPEGScaleXY", XS_SDL_SMPEGScaleXY, file);
- newXS("SDL::SMPEGScale", XS_SDL_SMPEGScale, file);
- newXS("SDL::SMPEGPlay", XS_SDL_SMPEGPlay, file);
- newXS("SDL::SMPEGStatus", XS_SDL_SMPEGStatus, file);
- newXS("SDL::SMPEGPause", XS_SDL_SMPEGPause, file);
- newXS("SDL::SMPEGLoop", XS_SDL_SMPEGLoop, file);
- newXS("SDL::SMPEGStop", XS_SDL_SMPEGStop, file);
- newXS("SDL::SMPEGRewind", XS_SDL_SMPEGRewind, file);
- newXS("SDL::SMPEGSeek", XS_SDL_SMPEGSeek, file);
- newXS("SDL::SMPEGSkip", XS_SDL_SMPEGSkip, file);
- newXS("SDL::SMPEGSetDisplayRegion", XS_SDL_SMPEGSetDisplayRegion, file);
- newXS("SDL::SMPEGRenderFrame", XS_SDL_SMPEGRenderFrame, file);
- newXS("SDL::SMPEGGetInfo", XS_SDL_SMPEGGetInfo, file);
-#endif
-#if XSubPPtmpAAAF
- newXS("SDL::GFXRotoZoom", XS_SDL_GFXRotoZoom, file);
- newXS("SDL::GFXZoom", XS_SDL_GFXZoom, file);
- newXS("SDL::GFXPixelColor", XS_SDL_GFXPixelColor, file);
- newXS("SDL::GFXPixelRGBA", XS_SDL_GFXPixelRGBA, file);
- newXS("SDL::GFXHlineColor", XS_SDL_GFXHlineColor, file);
- newXS("SDL::GFXHlineRGBA", XS_SDL_GFXHlineRGBA, file);
- newXS("SDL::GFXVlineColor", XS_SDL_GFXVlineColor, file);
- newXS("SDL::GFXVlineRGBA", XS_SDL_GFXVlineRGBA, file);
- newXS("SDL::GFXRectangleColor", XS_SDL_GFXRectangleColor, file);
- newXS("SDL::GFXRectangleRGBA", XS_SDL_GFXRectangleRGBA, file);
- newXS("SDL::GFXBoxColor", XS_SDL_GFXBoxColor, file);
- newXS("SDL::GFXBoxRGBA", XS_SDL_GFXBoxRGBA, file);
- newXS("SDL::GFXLineColor", XS_SDL_GFXLineColor, file);
- newXS("SDL::GFXLineRGBA", XS_SDL_GFXLineRGBA, file);
- newXS("SDL::GFXAalineColor", XS_SDL_GFXAalineColor, file);
- newXS("SDL::GFXAalineRGBA", XS_SDL_GFXAalineRGBA, file);
- newXS("SDL::GFXCircleColor", XS_SDL_GFXCircleColor, file);
- newXS("SDL::GFXCircleRGBA", XS_SDL_GFXCircleRGBA, file);
- newXS("SDL::GFXAacircleColor", XS_SDL_GFXAacircleColor, file);
- newXS("SDL::GFXAacircleRGBA", XS_SDL_GFXAacircleRGBA, file);
- newXS("SDL::GFXFilledCircleColor", XS_SDL_GFXFilledCircleColor, file);
- newXS("SDL::GFXFilledCircleRGBA", XS_SDL_GFXFilledCircleRGBA, file);
- newXS("SDL::GFXEllipseColor", XS_SDL_GFXEllipseColor, file);
- newXS("SDL::GFXEllipseRGBA", XS_SDL_GFXEllipseRGBA, file);
- newXS("SDL::GFXAaellipseColor", XS_SDL_GFXAaellipseColor, file);
- newXS("SDL::GFXAaellipseRGBA", XS_SDL_GFXAaellipseRGBA, file);
- newXS("SDL::GFXFilledEllipseColor", XS_SDL_GFXFilledEllipseColor, file);
- newXS("SDL::GFXFilledEllipseRGBA", XS_SDL_GFXFilledEllipseRGBA, file);
- newXS("SDL::GFXFilledPieColor", XS_SDL_GFXFilledPieColor, file);
- newXS("SDL::GFXFilledPieRGBA", XS_SDL_GFXFilledPieRGBA, file);
- newXS("SDL::GFXPolygonColor", XS_SDL_GFXPolygonColor, file);
- newXS("SDL::GFXPolygonRGBA", XS_SDL_GFXPolygonRGBA, file);
- newXS("SDL::GFXAapolygonColor", XS_SDL_GFXAapolygonColor, file);
- newXS("SDL::GFXAapolygonRGBA", XS_SDL_GFXAapolygonRGBA, file);
- newXS("SDL::GFXFilledPolygonColor", XS_SDL_GFXFilledPolygonColor, file);
- newXS("SDL::GFXFilledPolygonRGBA", XS_SDL_GFXFilledPolygonRGBA, file);
- newXS("SDL::GFXCharacterColor", XS_SDL_GFXCharacterColor, file);
- newXS("SDL::GFXCharacterRGBA", XS_SDL_GFXCharacterRGBA, file);
- newXS("SDL::GFXStringColor", XS_SDL_GFXStringColor, file);
- newXS("SDL::GFXStringRGBA", XS_SDL_GFXStringRGBA, file);
-#endif
-#if XSubPPtmpAAAG
- newXS("SDL::SVG_Load", XS_SDL_SVG_Load, file);
- newXS("SDL::SVG_LoadBuffer", XS_SDL_SVG_LoadBuffer, file);
- newXS("SDL::SVG_SetOffset", XS_SDL_SVG_SetOffset, file);
- newXS("SDL::SVG_SetScale", XS_SDL_SVG_SetScale, file);
- newXS("SDL::SVG_RenderToSurface", XS_SDL_SVG_RenderToSurface, file);
- newXS("SDL::SVG_Free", XS_SDL_SVG_Free, file);
- newXS("SDL::SVG_Set_Flags", XS_SDL_SVG_Set_Flags, file);
- newXS("SDL::SVG_Width", XS_SDL_SVG_Width, file);
- newXS("SDL::SVG_HEIGHT", XS_SDL_SVG_HEIGHT, file);
- newXS("SDL::SVG_SetClipping", XS_SDL_SVG_SetClipping, file);
- newXS("SDL::SVG_Version", XS_SDL_SVG_Version, file);
-#endif
-#if XSubPPtmpAAAH
- newXS("SDL::SoundAudioInfoFormat", XS_SDL_SoundAudioInfoFormat, file);
- newXS("SDL::SoundAudioInfoChannels", XS_SDL_SoundAudioInfoChannels, file);
- newXS("SDL::SoundAudioInforate", XS_SDL_SoundAudioInforate, file);
- newXS("SDL::SoundDecoderInfoExtensions", XS_SDL_SoundDecoderInfoExtensions, file);
- newXS("SDL::SoundDecoderInfoDescription", XS_SDL_SoundDecoderInfoDescription, file);
- newXS("SDL::SoundDecoderInfoAuthor", XS_SDL_SoundDecoderInfoAuthor, file);
- newXS("SDL::SoundDecoderInfoUrl", XS_SDL_SoundDecoderInfoUrl, file);
- newXS("SDL::SoundSampleDecoder", XS_SDL_SoundSampleDecoder, file);
- newXS("SDL::SoundSampleDesired", XS_SDL_SoundSampleDesired, file);
- newXS("SDL::SoundSampleAcutal", XS_SDL_SoundSampleAcutal, file);
- newXS("SDL::SoundSampleBuffer", XS_SDL_SoundSampleBuffer, file);
- newXS("SDL::SoundSampleBufferSize", XS_SDL_SoundSampleBufferSize, file);
- newXS("SDL::SoundSampleFlags", XS_SDL_SoundSampleFlags, file);
- newXS("SDL::Sound_Init", XS_SDL_Sound_Init, file);
- newXS("SDL::Sound_Quit", XS_SDL_Sound_Quit, file);
- newXS("SDL::Sound_AvailableDecoders", XS_SDL_Sound_AvailableDecoders, file);
- newXS("SDL::Sound_GetError", XS_SDL_Sound_GetError, file);
- newXS("SDL::Sound_ClearError", XS_SDL_Sound_ClearError, file);
- newXS("SDL::Sound_NewSample", XS_SDL_Sound_NewSample, file);
- newXS("SDL::Sound_NewSampleFromMem", XS_SDL_Sound_NewSampleFromMem, file);
- newXS("SDL::Sound_NewSampleFromFile", XS_SDL_Sound_NewSampleFromFile, file);
- newXS("SDL::Sound_FreeSample", XS_SDL_Sound_FreeSample, file);
- newXS("SDL::Sound_GetDuration", XS_SDL_Sound_GetDuration, file);
- newXS("SDL::Sound_SetBufferSize", XS_SDL_Sound_SetBufferSize, file);
- newXS("SDL::Sound_Decode", XS_SDL_Sound_Decode, file);
- newXS("SDL::Sound_DecodeAll", XS_SDL_Sound_DecodeAll, file);
- newXS("SDL::Sound_Rewind", XS_SDL_Sound_Rewind, file);
- newXS("SDL::Sound_Seek", XS_SDL_Sound_Seek, file);
-#endif
-
- /* Initialisation Section */
-
-#if XSubPPtmpAAAA
-#endif
-#if XSubPPtmpAAAB
-#endif
-#if XSubPPtmpAAAC
-#endif
-#if XSubPPtmpAAAD
-#endif
-#if XSubPPtmpAAAE
-#endif
-#if XSubPPtmpAAAF
-#endif
-#if XSubPPtmpAAAG
-#endif
-#if XSubPPtmpAAAH
-#endif
-#line 9403 "SDL_perl.c"
-
- /* End of Initialisation Section */
-
- XSRETURN_YES;
-}
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::App
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-plan ( tests => 2 );
-
-use_ok( 'SDL::App' );
-
-can_ok ('SDL::App', qw/
- new
- resize
- title
- delay
- ticks
- error
- warp
- fullscreen
- iconify
- grab_input
- loop
- sync
- attribute /);
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Cdrom
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-
-use Test::More;
-
-plan ( tests => 3 );
-
-use_ok( 'SDL::Cdrom' );
-
-can_ok ('main', qw/ CD_NUM_DRIVES /);
-
-can_ok ('SDL::Cdrom', qw/
- new
- name
- status
- play
- pause
- resume
- stop
- eject
- id
- num_tracks
- track
- current
- current_frame /);
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Color
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-
-use Test::More;
-
-plan ( tests => 10 );
-
-use_ok( 'SDL::Color' );
-
-can_ok ('SDL::Color', qw/
- new
- r
- g
- b
- pixel /);
-
-# some basic tests:
-
-my $color = SDL::Color->new();
-is (ref($color), 'SDL::Color', 'new was ok');
-is ($color->r(),0, 'r is 0');
-is ($color->g(),0, 'g is 0');
-is ($color->b(),0, 'b is 0');
-
-$color = SDL::Color->new( -r => 0xff, -g => 0xff, -b => 0xff);
-is (ref($color), 'SDL::Color', 'new was ok');
-is ($color->r(),255, 'r is 255');
-is ($color->g(),255, 'g is 255');
-is ($color->b(),255, 'b is 255');
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Cursor
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-
-use Test::More;
-
-plan ( tests => 2 );
-
-use_ok( 'SDL::Cursor' );
-
-can_ok ('SDL::Cursor', qw/
- new
- warp
- use
- get
- show /);
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Event
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-
-use Test::More;
-
-plan ( tests => 2 );
-
-use_ok( 'SDL::Event' );
-
-can_ok ('SDL::Event', qw/
- new
- type
- pump
- poll
- wait
- set
- set_unicode
- set_key_repeat
- active_gain
- active_state
- key_state
- key_sym
- key_name
- key_mod
- key_unicode
- key_scancode
- motion_state
- motion_x
- motion_y
- motion_xrel
- motion_yrel
- button
- button_state
- button_x
- button_y /);
-
-
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Font
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('SDL_image') ) {
- plan ( tests => 2 );
-} else {
- plan ( skip_all => 'SDL_image support not compiled' );
-}
-
-use_ok( 'SDL::Font' );
-
-can_ok ('SDL::Font', qw/ new use /);
-
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Mixer
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('SDL_mixer') ) {
- plan ( tests => 3 );
-} else {
- plan ( skip_all => 'SDL_mixer support not compiled' );
-}
-
-use_ok( 'SDL::Mixer' );
-
-can_ok ('SDL::Mixer', qw/
- new
- query_spec
- reserve_channels
- allocate_channels
- group_channel
- group_channels
- group_available
- group_count
- group_oldest
- group_newer
- play_channel
- play_music
- fade_in_channel
- fade_in_music
- channel_volume
- music_volume
- halt_channel
- halt_group
- halt_music
- channel_expire
- fade_out_channel
- fade_out_group
- fade_out_music
- fading_music
- fading_channel
- pause
- resume
- paused
- pause_music
- resume_music
- rewind_music
- music_paused
- playing
- playing_music
- /);
-
-# these are exported by default, so main:: should know them:
-SDL::Init(SDL_INIT_AUDIO);
-my $mixer = SDL::Mixer->new();
-isa_ok($mixer, 'SDL::Mixer');
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::MPEG
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('smpeg') && SDL::Config->has('SDL_mixer') ) {
- plan ( tests => 2 );
-} else {
- plan ( skip_all =>
- ( SDL::Config->has('smpeg') ? '' : ' smpeg support not compiled') .
- ( SDL::Config->has('SDL_mixer') ? '' : ' SDL_mixer support not compiled') );
-}
-
-use_ok( 'SDL::MPEG' );
-
-can_ok ('SDL::MPEG', qw/
- new
- has_audio
- has_video
- width
- height
- size
- offset
- frame
- fps
- time
- length /);
-
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Music
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-plan ( tests => 2 );
-
-use_ok( 'SDL::Music' );
-
-can_ok ('SDL::Music', qw/
- new
- /);
-
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::OpenGL
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('GL') && SDL::Config->has('GLU') ) {
- plan ( tests => 3 );
-} else {
- plan ( skip_all => 'OpenGL support not compiled' );
-}
-
-use_ok('SDL::OpenGL');
-
-can_ok('main', qw/
- glBegin
- glClear
- glClearColor
- glColor
- glCullFace
- glEnable
- glEnd
- glEvalCoord1
- glEvalCoord2
- glEvalMesh2
- glFrontFace
- glFrustum
- glGet
- glLight
- glLoadIdentity
- glMap1
- glMap2
- glMapGrid2
- glMaterial
- glMatrixMode
- glPointSize
- glPopMatrix
- glPushMatrix
- glRotate
- glScale
- glShadeModel
- glTranslate
- glVertex
- glVertex
- glViewport /);
-
-can_ok('main',qw/
- gluPerspective
- gluBeginSurface
- gluBeginTrim
- gluEndSurface
- gluEndTrim
- gluNewNurbsRenderer
- gluNurbsCurve
- gluNurbsProperty
- gluNurbsSurface
- gluPwlCurve /);
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Palette
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-
-use Test::More;
-
-plan ( tests => 2 );
-
-use_ok( 'SDL::Palette' );
-
-can_ok ('SDL::Palette', qw/
- new
- size
- red
- green
- blue
- color /);
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Rect
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-
-use Test::More;
-
-plan ( tests => 15 );
-
-use_ok( 'SDL::Rect' );
-
-can_ok ('SDL::Rect', qw/
- new
- x
- y
- width
- height /);
-
-my $rect = SDL::Rect->new();
-
-# creating with defaults
-is (ref($rect),'SDL::Rect','new went ok');
-is ($rect->x(), 0, 'x is 0');
-is ($rect->y(), 0, 'y is 0');
-is ($rect->width(), 0, 'w is 0');
-is ($rect->height(), 0, 'h is 0');
-
-# set and get at the same time
-is ($rect->x(12), 12, 'x is now 12');
-is ($rect->y(123), 123, 'y is now 12');
-is ($rect->width(45), 45, 'w is now 45');
-is ($rect->height(67), 67, 'h is now 67');
-
-# get alone
-is ($rect->x(), 12, 'x is 12');
-is ($rect->y(), 123, 'y is 12');
-is ($rect->width(), 45, 'w is 45');
-is ($rect->height(), 67, 'h is 67');
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-plan ( tests => 9 );
-
-use_ok( 'SDL' );
-
-can_ok ('SDL', qw/in verify/);
-
-is (SDL::in('foo','bar'), 0, "foo isn't in ('bar')");
-is (SDL::in('foo','foo'), 1, "foo is in ('foo')");
-is (SDL::in('foo','foo','bar'), 1, "foo is in ('foo','bar')");
-is (SDL::in('foo','foo','bar','foo'), 1, "foo is once in ('foo','bar','foo')");
-is (SDL::in('foo','fab','bar'), 0, "foo isn't in ('fab','bar')");
-is (SDL::in('foo','fab',undef,'bar'), 0, "foo isn't in ('fab',undef,'bar')");
-is (SDL::in('foo','fab',undef,'foo'), 1, "foo is in ('fab',undef,'foo')");
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Sound
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-plan ( tests => 2 );
-
-use_ok( 'SDL::Sound' );
-
-can_ok ('SDL::Sound', qw/
- new
- volume
- /);
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Surface
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-
-use Test::More;
-
-plan ( tests => 3 );
-
-use_ok( 'SDL::Surface' );
-
-can_ok ('SDL::Surface', qw/
- new
- flags
- palette
- bpp
- bytes_per_pixel
- Rshift
- Gshift
- Bshift
- Ashift
- Rmask
- Bmask
- Gmask
- Amask
- color_key
- alpha
- width
- height
- pitch
- pixels
- pixel
- fill
- lockp
- lock
- unlock
- update
- flip
- blit
- set_colors
- set_color_key
- set_alpha
- display_format
- rgb
- rgba
- print
- save_bmp
- video_info /);
-
-my $surface = SDL::Surface->new();
-
-isa_ok($surface,'SDL::Surface');
-
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Timer
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL;
-use SDL::Config;
-
-use Test::More;
-
-plan ( tests => 4 );
-
-use_ok( 'SDL::Timer' );
-
-can_ok ('SDL::Timer', qw/
- new run stop
- /);
-
-my $fired = 0;
-
-SDL::Init(SDL_INIT_TIMER);
-
-my $timer = new SDL::Timer
- sub { $fired++ }, -delay => 30, -times => 1;
-
-isa_ok($timer, 'SDL::Timer');
-
-SDL::Delay(100);
-is ($fired, 1,'timer fired once');
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Tool::Font
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('SDL_image')
- && SDL::Config->has('SDL_ttf') ) {
- plan ( tests => 2 );
-} else {
- plan ( skip_all =>
- ( SDL::Config->has('SDL_image')
- ? ''
- : ' SDL_image support not compiled')
- . ( SDL::Config->has('SDL_ttf')
- ? ''
- : ' SDL_ttf support not compiled'));
-}
-
-use_ok( 'SDL::Tool::Font' );
-
-can_ok ('SDL::Tool::Font', qw/
- new
- print
- /);
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::Tool::Graphic
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('SDL_gfx') ) {
- plan ( tests => 3 );
-} else {
- plan ( skip_all => 'SDL_gfx support not compiled' );
-}
-
-use_ok( 'SDL::Tool::Graphic' );
-
-can_ok ('SDL::Tool::Graphic', qw/
- new zoom rotoZoom
- /);
-
-my $gtool = SDL::Tool::Graphic->new();
-isa_ok ($gtool, 'SDL::Tool::Graphic');
-
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::TTFont
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('SDL_ttf') ) {
- plan ( tests => 2 );
-} else {
- plan ( skip_all => 'SDL_ttf support not compiled' );
-}
-
-use_ok( 'SDL::TTFont' );
-
-can_ok ('SDL::TTFont', qw/
- new
- print
- width
- height
- ascent
- descent
- normal
- bold
- italic
- underline
- text_shaded
- text_solid
- text_blended
- utf8_shaded
- utf8_solid
- utf8_blended
- unicode_shaded
- unicode_solid
- unicode_blended /);
+++ /dev/null
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2003 Tels
-# Copyright (C) 2004 David J. Goehrig
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig\@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig\@cpan.org
-#
-#
-# basic testing of SDL::VIDEO
-
-BEGIN {
- unshift @INC, 'blib/lib','blib/arch';
-}
-
-use strict;
-use SDL::Config;
-
-use Test::More;
-
-if ( SDL::Config->has('smpeg') && SDL::Config->has('SDL_mixer') ) {
- plan ( tests => 2 );
-} else {
- plan ( skip_all =>
- ( SDL::Config->has('smpeg') ? '' : ' smpeg support not compiled') .
- ( SDL::Config->has('SDL_mixer') ? '' : ' SDL_mixer support not compiled') );
-}
-
-use_ok( 'SDL::Video' );
-
-can_ok ('SDL::Video', qw/
- new
- error
- audio
- video
- volume
- display
- scale
- play
- pause
- stop
- rewind
- seek
- skip
- loop
- region
- frame
- info
- status /);
-
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson02.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Getopt::Long;
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
-
- ) or die $!;
-
-main();
-exit;
-
-
-sub main
- {
- my $done=0;
-
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "icon.png",
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -d => 16,
- -gl => 1,
-
- );
- $app->fullscreen() if ($arg_fullscreen);
-
- SDL::ShowCursor (0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT,SDL_IGNORE);#
-
- InitGL($arg_screen_width, $arg_screen_height);
-
- while ( ! $done ) {
-
- DrawGLScene();
-
- $app->sync();
-
- $event->pump;
- $event->poll;
-
-
- if ( $event->type == SDL_QUIT ) {
- $done = 1;
- }
-
- if ( $event->type == SDL_KEYDOWN ) {
- if ( $event->key_sym == SDLK_ESCAPE ) {
- $done = 1;
- }
- }
- }
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-sub InitGL
- {
- my ($Width, $Height)=@_;
-
- glViewport(0, 0, $Width, $Height);
- glClearColor(0.0, 0.0, 0.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS()); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST()); # Enables Depth Testing
- glShadeModel(GL_SMOOTH()); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION());
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW());
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
- glTranslate(-1.5,0.0,-6.0); # Move Left 1.5 Units And Into The Screen 6.0
-
- # draw a triangle
- glBegin(GL_POLYGON); # start drawing a polygon
- glVertex( 0.0, 1.0, 0.0); # Top
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # we're done with the polygon
-
- glTranslate(3.0,0.0,0.0); # Move Right 3 Units
-
- # draw a square (quadrilateral)
- glBegin(GL_QUADS); # start drawing a polygon (4 sided)
- glVertex(-1.0, 1.0, 0.0); # Top Left
- glVertex( 1.0, 1.0, 0.0); # Top Right
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # done with the polygon
-
-
- }
-
-
-
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson03.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-
-use strict;
-use Getopt::Long;
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
- ) or die $!;
-
-main();
-exit;
-
-
-sub main
- {
- my $done=0;
-
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "icon.png",
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -d => 16,
- -opengl => 1,
- );
- $app->fullscreen() if $arg_fullscreen;
-
- SDL::ShowCursor(0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT,SDL_IGNORE);#
-
-
-
- InitGL($arg_screen_width, $arg_screen_height);
-
- while ( ! $done ) {
-
- DrawGLScene();
-
- $app->sync();
-
- $event->pump;
- $event->poll;
-
-
- if ( $event->type == SDL_QUIT ) {
- $done = 1;
- }
-
- if ( $event->type == SDL_KEYDOWN ) {
- if ( $event->key_sym == SDLK_ESCAPE ) {
- $done = 1;
- }
- }
- }
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-sub InitGL
- {
- my ($Width, $Height)=@_;
-
- glViewport(0, 0, $Width, $Height);
- glClearColor(0.0, 0.0, 0.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST); # Enables Depth Testing
- glShadeModel(GL_SMOOTH); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW);
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
- glTranslate(-1.5,0.0,-6.0); # Move Left 1.5 Units And Into The Screen 6.0
-
- # draw a triangle (in smooth coloring mode)
- glBegin(GL_POLYGON); # start drawing a polygon
- glColor(1.0,0.0,0.0); # Set The Color To Red
- glVertex( 0.0, 1.0, 0.0); # Top
- glColor(0.0,1.0,0.0); # Set The Color To Green
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glColor(0.0,0.0,1.0); # Set The Color To Blue
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # we're done with the polygon (smooth color interpolation)
-
- glTranslate(3.0,0.0,0.0); # Move Right 3 Units
-
- # draw a square (quadrilateral)
- glColor(0.5,0.5,1.0); # set color to a blue shade.
- glBegin(GL_QUADS); # start drawing a polygon (4 sided)
- glVertex(-1.0, 1.0, 0.0); # Top Left
- glVertex( 1.0, 1.0, 0.0); # Top Right
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # done with the polygon
-
-
-
-
- }
-
-
-
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson04.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Getopt::Long;
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-my $delay=30;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
- "delay:i" => \$delay,
- ) or die <<USAGE;
-Usage $0 -w 800 -h 600 -d 10 --fullscreen
-USAGE
-
-#/* rotation angle for the triangle. */
-my $rtri = 0.0;
-
-#/* rotation angle for the quadrilateral. */
-my $rquad = 0.0;
-
-
-main();
-exit;
-
-
-sub main
- {
- my $done=0;
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "icon.png",
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -gl => 1,
- );
- $app->fullscreen() if $arg_fullscreen;
-
- SDL::ShowCursor(0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT,SDL_IGNORE);#
-
-
-
- InitGL($arg_screen_width, $arg_screen_height);
-
- while ( ! $done ) {
-
- DrawGLScene();
-
- $app->sync();
- $app->delay($delay);
-
- $event->pump;
- $event->poll;
-
-
- if ( $event->type == SDL_QUIT ) {
- $done = 1;
- }
-
- if ( $event->type == SDL_KEYDOWN ) {
- if ( $event->key_sym == SDLK_ESCAPE ) {
- $done = 1;
- }
- }
- }
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-
-
-
-sub InitGL
- {
- my ($Width, $Height)=@_;
-
- glViewport(0, 0, $Width, $Height);
- glClearColor(0.0, 0.0, 0.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST); # Enables Depth Testing
- glShadeModel(GL_SMOOTH); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW);
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
- glTranslate(-1.5,0.0,-6.0); # Move Left 1.5 Units And Into The Screen 6.0
-
- glRotate($rtri,0.0,1.0,0.0); # Rotate The Triangle On The Y axis
- # draw a triangle (in smooth coloring mode)
- glBegin(GL_POLYGON); # start drawing a polygon
- glColor(1.0,0.0,0.0); # Set The Color To Red
- glVertex( 0.0, 1.0, 0.0); # Top
- glColor(0.0,1.0,0.0); # Set The Color To Green
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glColor(0.0,0.0,1.0); # Set The Color To Blue
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # we're done with the polygon (smooth color interpolation)
-
- glLoadIdentity(); # make sure we're no longer rotated.
- glTranslate(1.5,0.0,-6.0); # Move Right 3 Units, and back into the screen 6.0
-
- glRotate($rquad,1.0,0.0,0.0); # Rotate The Quad On The X axis
- # draw a square (quadrilateral)
- glColor(0.5,0.5,1.0); # set color to a blue shade.
- glBegin(GL_QUADS); # start drawing a polygon (4 sided)
- glVertex(-1.0, 1.0, 0.0); # Top Left
- glVertex( 1.0, 1.0, 0.0); # Top Right
- glVertex( 1.0,-1.0, 0.0); # Bottom Right
- glVertex(-1.0,-1.0, 0.0); # Bottom Left
- glEnd(); # done with the polygon
-
- $rtri+=15.0; # Increase The Rotation Variable For The Triangle
- $rquad-=15.0; # Decrease The Rotation Variable For The Quad
-
-
- }
-
-
-
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson05.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Getopt::Long;
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-use SDL::Cursor;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-my $delay = 30;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
- "delay:i" => \$delay,
- ) or die $!;
-
-main();
-exit;
-
-
-sub main
- {
- my $done=0;
-
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "icon.png",
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -opengl => 1,
- );
-
- $app->fullscreen if ($arg_fullscreen);
-
- SDL::ShowCursor(0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT(),SDL_IGNORE());#
-
- InitGL($arg_screen_width, $arg_screen_height);
-
- while ( ! $done ) {
-
- DrawGLScene();
-
- $app->sync();
- $app->delay($delay);
-
- $event->pump;
- $event->poll;
-
-
- if ( $event->type == SDL_QUIT() ) {
- $done = 1;
- }
-
- if ( $event->type == SDL_KEYDOWN() ) {
- if ( $event->key_sym == SDLK_ESCAPE() ) {
- $done = 1;
- }
- }
- }
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-
-#/* rotation angle for the triangle. */
-my $rtri = 0.0;
-
-#/* rotation angle for the quadrilateral. */
-my $rquad = 0.0;
-
-
-sub InitGL
- {
- my ($Width, $Height)=@_;
-
- glViewport(0, 0, $Width, $Height);
- glClearColor(0.0, 0.0, 0.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST); # Enables Depth Testing
- glShadeModel(GL_SMOOTH); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW);
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
- glTranslate(-1.5,0.0,-6.0); # Move Left 1.5 Units And Into The Screen 6.0
-
- glRotate($rtri,0.0,1.0,0.0); # Rotate The Pyramid On The Y axis
-
- # draw a pyramid (in smooth coloring mode)
- glBegin(GL_POLYGON); # start drawing a pyramid
-
- # front face of pyramid
- glColor(1.0,0.0,0.0); # Set The Color To Red
- glVertex(0.0, 1.0, 0.0); # Top of triangle (front)
- glColor(0.0,1.0,0.0); # Set The Color To Green
- glVertex(-1.0,-1.0, 1.0); # left of triangle (front)
- glColor(0.0,0.0,1.0); # Set The Color To Blue
- glVertex(1.0,-1.0, 1.0); # right of traingle (front)
-
- # right face of pyramid
- glColor(1.0,0.0,0.0); # Red
- glVertex( 0.0, 1.0, 0.0); # Top Of Triangle (Right)
- glColor(0.0,0.0,1.0); # Blue
- glVertex( 1.0,-1.0, 1.0); # Left Of Triangle (Right)
- glColor(0.0,1.0,0.0); # Green
- glVertex( 1.0,-1.0, -1.0); # Right Of Triangle (Right)
-
- # back face of pyramid
- glColor(1.0,0.0,0.0); # Red
- glVertex( 0.0, 1.0, 0.0); # Top Of Triangle (Back)
- glColor(0.0,1.0,0.0); # Green
- glVertex( 1.0,-1.0, -1.0); # Left Of Triangle (Back)
- glColor(0.0,0.0,1.0); # Blue
- glVertex(-1.0,-1.0, -1.0); # Right Of Triangle (Back)
-
- # left face of pyramid.
- glColor(1.0,0.0,0.0); # Red
- glVertex( 0.0, 1.0, 0.0); # Top Of Triangle (Left)
- glColor(0.0,0.0,1.0); # Blue
- glVertex(-1.0,-1.0,-1.0); # Left Of Triangle (Left)
- glColor(0.0,1.0,0.0); # Green
- glVertex(-1.0,-1.0, 1.0); # Right Of Triangle (Left)
-
- glEnd(); # Done Drawing The Pyramid
-
- glLoadIdentity(); # make sure we're no longer rotated.
- glTranslate(1.5,0.0,-7.0); # Move Right 3 Units, and back into the screen 7
-
- glRotate($rquad,1.0,1.0,1.0); # Rotate The Cube On X, Y, and Z
-
- # draw a cube (6 quadrilaterals)
- glBegin(GL_QUADS); # start drawing the cube.
-
- # top of cube
- glColor(0.0,1.0,0.0); # Set The Color To Blue
- glVertex( 1.0, 1.0,-1.0); # Top Right Of The Quad (Top)
- glVertex(-1.0, 1.0,-1.0); # Top Left Of The Quad (Top)
- glVertex(-1.0, 1.0, 1.0); # Bottom Left Of The Quad (Top)
- glVertex( 1.0, 1.0, 1.0); # Bottom Right Of The Quad (Top)
-
- # bottom of cube
- glColor(1.0,0.5,0.0); # Set The Color To Orange
- glVertex( 1.0,-1.0, 1.0); # Top Right Of The Quad (Bottom)
- glVertex(-1.0,-1.0, 1.0); # Top Left Of The Quad (Bottom)
- glVertex(-1.0,-1.0,-1.0); # Bottom Left Of The Quad (Bottom)
- glVertex( 1.0,-1.0,-1.0); # Bottom Right Of The Quad (Bottom)
-
- # front of cube
- glColor(1.0,0.0,0.0); # Set The Color To Red
- glVertex( 1.0, 1.0, 1.0); # Top Right Of The Quad (Front)
- glVertex(-1.0, 1.0, 1.0); # Top Left Of The Quad (Front)
- glVertex(-1.0,-1.0, 1.0); # Bottom Left Of The Quad (Front)
- glVertex( 1.0,-1.0, 1.0); # Bottom Right Of The Quad (Front)
-
- # back of cube.
- glColor(1.0,1.0,0.0); # Set The Color To Yellow
- glVertex( 1.0,-1.0,-1.0); # Top Right Of The Quad (Back)
- glVertex(-1.0,-1.0,-1.0); # Top Left Of The Quad (Back)
- glVertex(-1.0, 1.0,-1.0); # Bottom Left Of The Quad (Back)
- glVertex( 1.0, 1.0,-1.0); # Bottom Right Of The Quad (Back)
-
- # left of cube
- glColor(0.0,0.0,1.0); # Blue
- glVertex(-1.0, 1.0, 1.0); # Top Right Of The Quad (Left)
- glVertex(-1.0, 1.0,-1.0); # Top Left Of The Quad (Left)
- glVertex(-1.0,-1.0,-1.0); # Bottom Left Of The Quad (Left)
- glVertex(-1.0,-1.0, 1.0); # Bottom Right Of The Quad (Left)
-
- # Right of cube
- glColor(1.0,0.0,1.0); # Set The Color To Violet
- glVertex( 1.0, 1.0,-1.0); # Top Right Of The Quad (Right)
- glVertex( 1.0, 1.0, 1.0); # Top Left Of The Quad (Right)
- glVertex( 1.0,-1.0, 1.0); # Bottom Left Of The Quad (Right)
- glVertex( 1.0,-1.0,-1.0); # Bottom Right Of The Quad (Right)
- glEnd(); # Done Drawing The Cube
-
- $rtri+=15.0; # Increase The Rotation Variable For The Triangle
- $rquad-=15.0; # Decrease The Rotation Variable For The Quad
-
-
- }
-
-
-
-
+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson06.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-
-use strict;
-use Data::Dumper;
-use Benchmark;
-use Getopt::Long;
-use MIME::Base64 qw(decode_base64);
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-my $delay = 3;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
- "delay:i" => \$delay,
-
- ) or die $!;
-
-############################################################
-
-my ($xrot, $yrot, $zrot) = (0,0,0);
-
-write_crate();
-main();
-exit;
-
-
-sub main
- {
- my $done=0;
- my $pth = $0;
- $pth =~ s/\w+\.\w+$//;
-
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "$pth/Data/perl.png",
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -opengl => 1,
- );
- $app->fullscreen() if $arg_fullscreen;
-
- SDL::ShowCursor(0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT,SDL_IGNORE);
-
- InitGL($arg_screen_width, $arg_screen_height);
-
-
- while ( not $done ) {
-
- DrawGLScene();
-
- $app->sync();
-
- for (1 .. 10) {
- $event->pump;
- $event->poll;
- $app->delay($delay);
- }
-
-
- if ( $event->type == SDL_QUIT ) {
- $done = 1;
- }
-
- if ( $event->type == SDL_KEYDOWN ) {
- if ( $event->key_sym == SDLK_ESCAPE ) {
- $done = 1;
- }
- }
- }
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-
-
-sub InitGL
- {
- my ($Width, $Height) = @_;
-
- glViewport(0, 0, $Width, $Height);
-
- LoadGLTextures(); # Load The Texture(s)
-
- glEnable(GL_TEXTURE_2D()); # Enable Texture Mapping
-
- glClearColor(0.0, 0.0, 1.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST); # Enables Depth Testing
- glShadeModel(GL_SMOOTH); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW);
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
-
- glTranslate(0.0,0.0,-5.0); # move 5 units into the screen.
-
- glRotate($xrot,1.0,0.0,0.0); # Rotate On The X Axis
- glRotate($yrot,0.0,1.0,0.0); # Rotate On The Y Axis
- glRotate($zrot,0.0,0.0,1.0); # Rotate On The Z Axis
-
- glBindTexture(GL_TEXTURE_2D, 1); # choose the texture to use.
-
- glBegin(GL_QUADS); # begin drawing a cube
-
- # Front Face (note that the texture's corners have to match the quad's corners)
- glTexCoord(0.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, 1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, 1.0); # Top Left Of The Texture and Quad
-
- # Back Face
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, -1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, -1.0); # Bottom Left Of The Texture and Quad
-
- # Top Face
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex(-1.0, 1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex( 1.0, 1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
-
- # Bottom Face
- glTexCoord(1.0, 1.0); glVertex(-1.0, -1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, -1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
-
- # Right face
- glTexCoord(1.0, 0.0); glVertex( 1.0, -1.0, -1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, 1.0, 1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
-
- # Left Face
- glTexCoord(0.0, 0.0); glVertex(-1.0, -1.0, -1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex(-1.0, 1.0, 1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
-
- glEnd(); # done with the polygon.
-
- $xrot+=15.0; # X Axis Rotation
- $yrot+=15.0; # Y Axis Rotation
- $zrot+=15.0; # Z Axis Rotation
-
-
- }
-
-#my $image1,$a; #this can cause a segfault in LoadGLTextures/glTexImage2D !!!
-
-
-sub LoadGLTextures
- {
- # Load Texture
-
- #uncomment this for a different method of loading:
- #my $img_data = read_gfx_file(FILENAME=>"../../ScrollerDemos/backdrop2.h");
- #my $pixel_ptr = $img_data->{PIXEL_PTR};
- #my $pic_info = $img_data->{INFO};
- #my $width = $pic_info->{WIDTH};
- #my $height = $pic_info->{HEIGHT};
-
-
- #if you uncomment the bit above, comment this out:
- #-snip-
- my $pth = $0;
- $pth =~ s/\w+\.\w+$//;
- my $surface=create_SDL_surface_from_file("/tmp/crate.png");
- my $width=$surface->width();
- my $height=$surface->height();
- my $pitch = $surface->pitch();
- my $bytespp= $surface->bytes_per_pixel();
- my $size=$pitch*$height;
- my $pixels = $surface->pixels();
-
- # Create Texture
- my $textures = glGenTextures(1); #name texture
- die "Could not genereate textures" unless $$textures[0];
-
- glBindTexture(GL_TEXTURE_2D, $$textures[0]); # 2d texture
-
-
- glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); # scale linearly when image bigger than texture
- glTexParameter(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); # scale linearly when image smalled than texture
-
- glTexImage2D(GL_TEXTURE_2D(),
- 0, #level (0 normal, heighr is form mip-mapping)
- GL_RGB(), #internal format (3=GL_RGB)
- $width,$height,
- 0, # border
- GL_RGB(), #format RGB color data
- GL_UNSIGNED_BYTE(), #unsigned bye data
- $pixels); #ptr to texture data
-
- die "Problem setting up 2d Texture (dimensions not a power of 2?)):".glErrorString(glGetError())."\n" if glGetError();
-
- }
-
-sub create_SDL_surface_from_file
- {
- my $filename=shift;
-
- my $surface = new SDL::Surface( -name => $filename);
-
- return $surface;
-
- }
-
-
-
-
-
-###################
-#alternat loading support:
-
-#keep ref counts up:
-my @sprite_c_heap =();
-my @sprite_area =();
-
-sub read_gfx_file
- {
- my %args=(
- TYPE => "GIMP_HEADER",
- FILENAME => undef,
- @_,
- );
-
- my $struct = read_gimp_header_image($args{FILENAME});
- my $size = length $struct->{DATA};
- my $c_array = new OpenGL::Array $size , GL_UNSIGNED_BYTE;
-
- # c_array is the main reason to do the following ref count trickster:
- # (otherwise the OpenGL:Array goes out of scope and the memory (image) is ZEROed out (and invalidated) by the DESTROY method
- push @sprite_c_heap, $c_array;
- push @sprite_area, $struct;
-
- $c_array->assign_data(0, $struct->{DATA} ); #take a copy of the data
-
- return {
- PIXEL_PTR => $c_array->ptr(), #could return $c_array instead to kepe ref count alive
- INFO => $struct,
- };
-
- #that all needs modularising.....
-
- }
-
-
-#nasty fixed to 3 byte RGB
-sub read_gimp_header_image
- {
- my $file=shift;
- my $cached_file="$file.cached-bin";
-
- my ($width, $height,$pixel_format, $data)=(0,0,"RGB","");
-
- #due to that fact that this aint the fastest code ever, we keep a cache.
- if (-e $cached_file and (-C $file >= -C $cached_file))
- {
-
- print "Reading cached binary bitmap data : $cached_file\n";
- open (FH, "<$file.cached-bin") or die "Open: $!";
- my $line="";
- $width=<FH>;
- $height=<FH>;
- $pixel_format=<FH>;
- chomp $width;
- chomp $height;
- chomp $pixel_format; #but who cares? not here anyway!!!
-
- #slurp in the rest of the file (its pixel data)
- {
- local $/;
- undef $/;
-
- my @lines= <FH>;
- $data=join '', @lines;
- }
-
- close (FH);
- }
- else # there is no cached file, or the cached file is out of date.
- {
-
- open (FH, "<$file") or die "Open: $!";
-
- my @data=();
- my @pixel=();
- while (defined (my $line=<FH>))
- {
- $width =$1 if ($line =~ /width\s*=\s*(\d+)/);
- $height=$1 if ($line =~ /height\s*=\s*(\d+)/);
- if ($line =~ /^\s+\"(.+)\"$/g)
- {
- my $c=$1;
- $c =~ s/\\(.)/$1/g; #remove meta guard
- $c =~
- s/
- \G
- (.)(.)(.)(.)
- /
- @data=(ord($1),ord($2),ord($3),ord($4));
-
- chr ( ( ( ( $data[0] - 33) << 2) | ( ($data[1] - 33) >> 4) ) ).
- chr ( ( ( ( ( $data[1] - 33) & 0xF) << 4) | ( ($data[2] - 33) >> 2) ) ).
- chr ( ( ( ( ( $data[2] - 33) & 0x3) << 6) | ( ($data[3] - 33) ) ) );
- /gex;
-
- $data.=$c ;
- }
- }
-
-
- close(FH);
-
- print "Writing cached binary bitmap data for: $file as $cached_file\n";
-
- #create a binary cached copy
- open (FH, ">$cached_file") or die "Open: $!";
- binmode FH; #we might have to put up with weak OSes.
- print FH "$width\n$height\n$pixel_format\n$data";
-
- close(FH);
- }
-
-
-
-
- return {
- WIDTH => $width,
- HEIGHT => $height,
- FORMAT => $pixel_format,
- DATA => $data
- };
- }
-
-
-
-sub write_crate {
- my $crate = decode_base64 <<EOF;
-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
-SUVORK5CYII=
-EOF
-
- open FP, "> /tmp/crate.png";
- print FP $crate;
- close FP;
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson07.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-use Data::Dumper;
-use Benchmark;
-use Getopt::Long;
-use MIME::Base64 qw(decode_base64);
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-use SDL::Surface;
-use SDL::OpenGL;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
- ) or die $!;
-
-############################################################
-
-my $light = 0;
-
-my $xrot=0; # x rotation
-my $yrot=0; # y rotation
-my $xspeed=0; # x rotation speed
-my $yspeed=0; # y rotation speed
-
-my $z=-5.0; # depth into the screen.
-
-my $filter = 1; # Which Filter To Use (nearest/linear/mipmapped) */
-
-write_crate();
-main();
-exit;
-
-sub main
- {
- my $done=0;
- my $vidmode_flags= SDL_OPENGL;
-
- $vidmode_flags|= SDL_FULLSCREEN if $arg_fullscreen;
-
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "icon.png",
- -flags => $vidmode_flags,
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -opengl => 1,
- );
-
- SDL::ShowCursor(0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT,SDL_IGNORE);
-
- InitGL($arg_screen_width, $arg_screen_height);
-
- while ( not $done )
- {
-
- DrawGLScene();
-
- $app->sync();
-
- $event->pump;
- $event->poll;
-
- $done = 1 if ( $event->type == SDL_QUIT ) ;
-
-
- if ( $event->type == SDL_KEYDOWN )
- {
- my $key= $event->key_sym;
-
- $done = 1 if ( $key == SDLK_ESCAPE ) ;
-
-
- if ($key==SDLK_l)
- {
- printf("Light was: %d\n", $light);
- $light = $light ? 0 : 1; # switch the current value of light, between 0 and 1.
- printf("Light is now: %d\n", $light);
- if (!$light)
- {
- glDisable(GL_LIGHTING);
- }
- else
- {
- glEnable(GL_LIGHTING);
- }
-
- }
- if ($key==SDLK_f)
- {
- printf("Filter was: %d\n", $filter);
- $filter = 1+(($filter) % 3) ;
- printf("Filter is now: %d\n", $filter);
- }
-
- #bit lax:
- $z-=0.02 if ( $key == SDLK_PAGEUP );
- $z+=0.02 if ( $key == SDLK_PAGEDOWN );
- $xspeed+=0.02 if ( $key == SDLK_UP );
- $xspeed-=0.02 if ( $key == SDLK_DOWN );
- $yspeed-=0.01 if ( $key == SDLK_LEFT );
- $yspeed+=0.01 if ( $key == SDLK_RIGHT );
-
- }
- }
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-
-
-sub InitGL
- {
- my ($Width, $Height) = @_;
-
- glViewport(0, 0, $Width, $Height);
-
- LoadGLTextures(); # Load The Texture(s)
-
- glEnable(GL_TEXTURE_2D); # Enable Texture Mapping
-
-
- glClearColor(0.0, 0.0, 0.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST); # Enables Depth Testing
- glShadeModel(GL_SMOOTH); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW);
-
-
- my $LightAmbient = [ 0.5, 0.5, 0.5, 1.0 ]; # white ambient light at half intensity (rgba) */
-
- my $LightDiffuse = [ 1.0, 1.0, 1.0, 1.0 ]; # super bright, full intensity diffuse light. */
-
- my $LightPosition = [ 0.0 , 0.0, 2.0, 1.0 ]; # position of light (x, y, z, (position of light)) */
-
-
-
- #hmm, undefine:
- glLight(GL_LIGHT1, GL_AMBIENT, @$LightAmbient); # add lighting. (ambient)
- glLight(GL_LIGHT1, GL_DIFFUSE, @$LightDiffuse); # add lighting. (diffuse).
- glLight(GL_LIGHT1, GL_POSITION,@$LightPosition); # set light position.
- glEnable(GL_LIGHT1); # turn light 1 on.
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
- glTranslate(0.0,0.0,$z); # move z units out from the screen.
-
- glRotate($xrot,1.0,0.0,0.0); # Rotate On The X Axis
- glRotate($yrot,0.0,1.0,0.0); # Rotate On The Y Axis
-
- glBindTexture(GL_TEXTURE_2D, $filter); # choose the texture to use.
-
- glBegin(GL_QUADS); # begin drawing a cube
-
- # Front Face (note that the texture's corners have to match the quad's corners)
- glNormal( 0.0, 0.0, 1.0); # front face points out of the screen on z.
- glTexCoord(0.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, 1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, 1.0); # Top Left Of The Texture and Quad
-
- # Back Face
- glNormal( 0.0, 0.0,-1.0); # back face points into the screen on z.
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, -1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, -1.0); # Bottom Left Of The Texture and Quad
-
- # Top Face
- glNormal( 0.0, 1.0, 0.0); # top face points up on y.
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex(-1.0, 1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex( 1.0, 1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
-
- # Bottom Face
- glNormal( 0.0, -1.0, 0.0); # bottom face points down on y.
- glTexCoord(1.0, 1.0); glVertex(-1.0, -1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, -1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
-
- # Right face
- glNormal( 1.0, 0.0, 0.0); # right face points right on x.
- glTexCoord(1.0, 0.0); glVertex( 1.0, -1.0, -1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, 1.0, 1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
-
- # Left Face
- glNormal(-1.0, 0.0, 0.0); # left face points left on x.
- glTexCoord(0.0, 0.0); glVertex(-1.0, -1.0, -1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex(-1.0, 1.0, 1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
-
- glEnd(); # done with the polygon.
-
- $xrot+=$xspeed; # X Axis Rotation
- $yrot+=$yspeed; # Y Axis Rotation
-
-
-
- }
-
-
-
-
-sub LoadGLTextures
- {
- # Load Texture
-
-
- my $pth = $0;
- $pth =~ s/\w+\.\w+$//;
- my ($pixels, $width, $height, $size)=ImageLoad("/tmp/crate.png");
-
- # Create Texture
-
- glGenTextures(3);
-
- # texture 1 (poor quality scaling)
- glBindTexture(GL_TEXTURE_2D, 1); # 2d texture (x and y size)
-
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); # cheap scaling when image bigger than texture
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); # cheap scaling when image smalled than texture
-
- # 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image,
- # border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.
- #glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0, #level (0 normal, heighr is form mip-mapping)
- 3, #internal format (3=GL_RGB)
- $width,$height,
- 0, # border
- GL_RGB, #format RGB color data
- GL_UNSIGNED_BYTE, #unsigned bye data
- $pixels); #ptr to texture data
-
-
-
- # texture 2 (linear scaling)
- glBindTexture(GL_TEXTURE_2D, 2); # 2d texture (x and y size)
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); # scale linearly when image bigger than texture
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); # scale linearly when image smalled than texture
- #glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0, #level (0 normal, heighr is form mip-mapping)
- 3, #internal format (3=GL_RGB)
- $width,$height,
- 0, # border
- GL_RGB, #format RGB color data
- GL_UNSIGNED_BYTE, #unsigned bye data
- $pixels); #ptr to texture data
-
-
-
-
- # texture 3 (mipmapped scaling)
- glBindTexture(GL_TEXTURE_2D, 3); # 2d texture (x and y size)
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); # scale linearly when image bigger than texture
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); # scale linearly + mipmap when image smalled than texture
- #glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0, #level (0 normal, heighr is form mip-mapping)
- 3, #internal format (3=GL_RGB)
- $width,$height,
- 0, # border
- GL_RGB, #format RGB color data
- GL_UNSIGNED_BYTE, #unsigned bye data
- $pixels); #ptr to texture data
-
- # 2d texture, 3 colors, width, height, RGB in that order, byte data, and the data.
- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, $width, $height, GL_RGB, GL_UNSIGNED_BYTE, $pixels);
-
- my $glerr=glGetError();
- die "Problem setting up 2d Texture (dimensions not a power of 2?)):".gluErrorString($glerr)."\n" if $glerr;
-
- }
-
-
-
-
-
-
-
-
-
-
-
-#somthing needs to keep the ref count alive for objects which represents data in C space (they have no ref count):
-my @ref=();
-
-sub ImageLoad
- {
- my $filename=shift;
-
- my $surface = new SDL::Surface( -name => $filename); #makes use of SDL: BMP loader.
-
-
- my $width=$surface->width();
- my $height=$surface->height();
- my $bytespp= $surface->bytes_per_pixel();
- my $size= $width*$height*$bytespp;
-
- my $surface_pixels=$surface->pixels();
- my $surface_size=$width*$height*$surface->bytes_per_pixel();
- my $raw_pixels = $surface_pixels;
-
-
-
- #do a conversion (the pixel data is accessable as a simple string)
-
- my $pixels=$raw_pixels;
- my $pre_conv= $pixels; #rotate image 180 degrees!
- my $new_pixels="";
- for (my $y=0; $y< $height; $y++)
- {
- my $y_pos=$y*$width*$bytespp; #calculate offset into the image (a string)
- my $row=substr ($pre_conv, $y_pos, $width*$bytespp); #extract 1 pixel row
- $row =~ s/\G(.)(.)(.)/$3$2$1/gms; #turn the BMP BGR order into OpenGL RGB order;
- $new_pixels.= reverse $row;
- }
-
- $raw_pixels = $new_pixels; #put transformed data into C array.
- push @ref, $raw_pixels, $surface;
-
- #we could have created another SDL surface frm the '$raw_pixel's... oh well.
- return ($raw_pixels, $width, $height, $size);
- }
-
-sub write_crate {
- my $crate = decode_base64 <<EOF;
-iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAIAAADTED8xAAAABGdBTUEAALGPC/xhBQAAAAZiS0dE
-AP8A/wD/oL2nkwAAAAlwSFlzAAAOzQAADsMB/WXJFAAAAAd0SU1FB9IFBAstDPFp9oYAACAASURB
-VHicdLtZlyQ5diZ2ATMAF7YB5rG4R2RWLlXV3dXdbFIkRyOJ1BzNzJEe9KJz9Pf0I/Sid0lndMQR
-H0SySXZ1N7uqco+M1d3MbcFiZoAeLDJZs8geIs3dYdeA727fvUCS/+EXu18f0k0pv94WPwwpufvh
-mNY5I8MUf3bKvr22F+gvdue3Nj22TaX0w/WHMyVP6+r+cEw5ve/hrum/ev6Umn3jqebh/cG+2GaK
-Rhvhr3/38emTyxflWNFl5KeNcT7RV1dXH+8OP3nxZH9s/mSTdDQHgFwQF8n1zeHrnWgcppzG4+Gu
-t1882X2ZtK+uunR78qtc/Mbiv0Tzwfav+2Q/Jf+23jdQ/MNYTc4eWvMvnvO3Jk+iqzdn94fj/aHd
-bevLpBti8f2RnBYgbfeiWI7lrm32APCXm/bffSiePzl98+H+/7leqiT86TfPfvfDu59daBvhOLYv
-iyTwurfH3rifFySq7etmeX11pxC+2qTfN8mGLQdgr2/Gf/slewgFNf2LYnm3cAD4VbJ/E9WHw4yZ
-sou7JO5vD/H5iWqbRnCS8fQk7x6GUtX1P97N7z9cPX1y+f7D1R+93KmnX7fvv/vw0P7yUrxrQr55
-uuxfkSnWBRtn+vsHpzIhSAxY/LHqAq8B4HrsNvX5r8R7APg/33KVV/vRlWEIsqCmD7I4oT2pzr7/
-2Hy8G3/1DDtLaiXvj6Hx9F/p5nWiEfGHt/dy8nXBrhwBgJeXOwz2n4b0X5bTy3L5v27GxSzjTG0k
-t7OM3vxcLW3+BQAAwNXVVaC8kmmy9EtS9MOoMFyeF3/7T3vJiT12f/7N6bcP1Lr4L78+e3V1fTcm
-wRuViW+2GQDckfrYNi/KcQLZ0fr7N+/PdHE088/Pkw8duX/YHzrzX/70ovH0j87St75Qw7sXxVJT
-eF1+/fdv7tcvj20DAC/KsXHYmfHl5e7X77uflvHPs+OrHpqQ/M4UPztlf/fDLSL+7ASvh9F0LpFV
-6aPojo0NSfT2zcPYHA4nunp3dS3SSJbFed/45P76ap7tcX9I0zS4wVpX8fS+GyLlOfLU7rvAAQCT
-+ES4d4e5n3xvp9ujf3bChsF+NMk/ffchYUl/eFjCUmbsy/MyLH5/7F1a3d0fehc/3Pckq53z//h2
-j7I82hDmONJMBWutp3H69n6+74ZvxzjRwlhTcXLtkbjhfTdfsGGM6e2QZmSGEKnrrhqjk/ihtXQJ
-NMyK+t98f1NlbCfHGwMVXe6b6a+PZzRl3757OEzpRtB2Se7v9wUDR2kzuGRZjs04Oi8wPQnh22P8
-3Y233qZpYobx+uivB4gs7U282Igf9mAnn7C0Czl4F+d4N87fNWTgm+CaOPSJyt/fD2W6pAm5RLIH
-HkdHc/n9VXvszTdPShPYs9P8bRv8/Qcaxj9cj3ahuhCdmSsa2lRddcvt3YPgfKHsdpx+WU0/9GSY
-5t++awDooe3/4e0wePH23vZ28nZoEj2aoTNTP9i7Ptx2bja29TDaZQbSDP52P2y4/WhAzvM8jA2U
-exe/uznKlC5zeHfTpvN43N9fufhdH8aZHFzc8Phz1twuyclyRMGnZUmnphmXY9d9fULpMj0YYhei
-yYCM/e59JzmR0X5zoeIcafDNMNmQLP1DJDAvUFYqI1Glw+t3V89yoIx2Ln1109i+PXadlulNN/tp
-CpSRhHb3dyFhH0aqiHk1ig8PzYcl/6vfX5ehDZO/a8d+9P3QbwUZrBFuTIM3RATX/N0eYsITnk1j
-8ywxV73dFaQZ7GTHtrfJsPDzuhiNGY0JMdYiAM9y5KeCkAT2d3vPVZE6Ldn7+17xJI3jScYezHI7
-OCXYYZzc0C1hKRMbnPEx7I/96UYfx3mYaCExTyLD4t39sK34f/c19LOIhBxsUpfpV7l7WEQWh2cV
-E2Qi+UbC0Bx9mqYlMc9KimlMnPm7fTS8JJNL1OkpX+6HmXjbU74/9vsZI6GHMQZRdMMUSOyXpEj8
-H/ZLysRfqO5MLFUyY5LaSCVd9nYOSfnh4PshpJnM5v442HEhmFcbuVwdp20WJQEBs/VLyrDOGEvo
-l9haOx/H5X+8HIcgpphcD5DX54szSBYVxxeS7D0li0eacPBX3dT58IdjOi/wL5RLo5UM7hwywTeC
-JqJ0yzyDH9OTu31/nIngIiVgxn5vgcTlyyoUML44Ld8dl22Z0mVqSQ4A50VylrNSlUc7wzK1Uzyt
-SgZzO6Vf5gF43k9JnxQ8WsnDhw5GY0IILxV7dwx2BhfZzaE/LVikvEimjBgp88YlkNAkzNMSMhJg
-cVqmLzP3J+fMCuUXiIwvSeFDmqU0S8Pk/R8GBkly2/thoQsEO8fOzF+dsodJ7pidCFzvBwJkhqSs
-1HkpzpH8+zfdPubXD91X50UILuHCLuzFWTH54f3D8H7kzjvj/aFz/ZQguBOd7QraTqnCgGlMF58y
-QWE6mPiicF3MJAz7OTuYoJQSWfn+6i7IOo0mF+Lj0T+rGAoOAPf7/lnmYJ5LyUiYEhTdRIng98fl
-beMaB0hC8uc/uTwtWIGMiqx38/uPN8+e7CYzXO2PbiaC81+dkAbKwziNU/yTHdeST0uYU3ZalV3g
-7ejqWrFkKZA3LkkTmAPdWxiMm+f5pKBzjCaKUiywLDeDuB8i4YVYhsmY98eYpslggyHJ31+NJacf
-7o51znYn2TSRisNVOwbMCkym0WXJksLSm+WiYpInq76tdZLCqx44DWZyc0hEHBORE1md5KmA2ADu
-p2Ti6mDMy5Lldf4c5wpM65bORxJg5vxlQYdpGmL+y2pKEtaT5M9O4kLSyyrulraJ+P2Q/a7HP6pp
-m8ofejI71wcel1nnVIZFl9JG2keCjD2M3pDETaF3UG82lzK86+ebIQmigOAGG67a8b4bzgs+zamf
-F7bMv6qp5GRv4FlF7x0FgFwmHxr7El1grC6S4OMfPtwfu47CkrI0LDPh2ZmMIKrJD0PMz4vk4TgO
-fQuEUC7vb++amW81T6Y5ULLdsKNL5nnROf3LZ3xc2BfsaHwSluTGpyz6flyAADC8t7CEUEhExk54
-/+4YkCZIiV98PwySuH4mSIJNeMbnbpiflqmF5G5MurZB5LdHHxMCADMRSZgHv5RiEYzdTugCOVU5
-TRLCsywOvU9llt/dH1im7gcHy1SfnF91S+uoWeJJyW4a7wAR3MfWNkebZ3lKICRYi/CLkrx/GM6U
-OE7MOCto9NNEYbprR4ZF9BYA+GJ+dz0UWQiQ0oQladoF9vv3ez+Rq2F5mqfAE5ZvZOjDHBJkSVyW
-DwOls6mSwDmfQkwJ1JuTUizJPI5UvLntgCZlEnIWb01y6xmm0USRLD2LU9816eJvjzarNpMZIuUy
-y0OMaZpiGp2d2GImO05J3nois3zoDie5uDsOc0hYpobBnOkykPRCS55Xm0IsfvowxJmXaUpKmd31
-y9dPqtu2/2k+jYTlZdWZ+bafGxcZZxNJNrUap2gjT2Hpl5TEZRgMXSzjaXvspyS96Vy+2ETld40z
-VB3ccj+lp0juZ1EkU4TUOt/5mCS0YiEJ809z4lL67jCIsvw4MTsaFPRupneGXIr47hi+VgFSuiTF
-Q2emNM3LorfTT3F6dYwsU8sS0jT9eHt/kvpxXrRIIU1tpGlYUlhOKowhlGQYAZElCyGjn3lellLY
-2f/pU/Wba5dQgiitXR6G2dLERvGkEqcYFj9/dUp6u2B0CSP7zsl08eMQCaeJSEXSmfnFxabvW56f
-mAWeboq73h9ckoQ5mcdbOHHd/fPzYqSi4uQM476f/6ttwnh623ZKEghxpnRa5v/348JQntEuTVmZ
-wmBGwVMpy5jipuCXYp4inalwNJ8CIXHZmzgMQ8HoHFIAeHlZzc4uc/BJ9vs/fJcIpDEoDBr2A8g0
-ARq9i2wi6VcnwnjXe2BpWmAq4uSXMC9AefZwaEsOWSaHpiEs3cpFxngA8UyOt0Oc0owAJATMFEqJ
-gkIS5heKlFrPJFVl9nEAhSQ6+/d7aoGfnJ6+KJaPNi3YNPvFUfmXqnvdhiSr6vsxlOnSjq5gC2b8
-5r6dqViGB56fEFFGyidnpWA6p0yWNIyjX2JMh+NDjdQGfvA0TVM/mKxS4xQnIgSjt3d3pycbGj0R
-KjKZpmQkeYH8/mGv9WYibF7mQm36YXx5We0Nub27m3hp+qH3yzI5SoIM5u1NQwn8RJGPwzQH+k3m
-3y3lx/uHhGOZy8NxKNKlNXNJzO0YOGNJmJ/WCAlFkXzBx/1IRkjPM7bv56eXxWKWg1l6a5PZBZpc
-D5CzZEmSj4fuXbucSnLTzYrHJrIbM6rFvdThu0OSLvObDu66mSbce38qqY/pTb+QGM5ygIQuSTGa
-IXfdVZRahHOFQ+Ccel2IKRV/vOOvjlGG+UO3/HTDxpmcZ2xawoduVpw4N//uEB4sbEp8d9eWcTm4
-JU3CMocaaYT4pgOZKzP0RZ68aRbNIVmMcfDu6AoGL87Eu4ZYN39V03eHXlKCgr67HxZIB7+whFQy
-veuXJZIkzLvzU7uQgidXLUgKjEYAaKcYCUxLmGKSMpzn+dCNh8acnupSZoyQ0c/TEj48mK9VvDoM
-g1uGKH+4H09KfHfXbnV+d2glJ4KLQuKuLoIbznTx5upwWqKblmUJWVEpQQsRm6P3MV3mMIf0NJ1u
-+vmJdDpZPE0Q84syIeBbs5wIKHJOJ9PbuS7kSS4gSbCojbFR8IJCmjKQlTOmNf5Ulzny1i5JmGNw
-BKWfpwJ8Kph1M4TYkfysSuaFuKF7oOoEp4KEfzpSBEsT9tD75PJiZ4aeJCxQdt/0uhAQyBKWlKY3
-H6/msQ8JezgOhUTNyX6Y2iltbRidESlPBSe8iNMsk0C4cKNx07xMLi62SpOPDw1yTBifzFAkU+/i
-5PonCoPtKF0UC6/3ji+9nWiYpyR6LQkSsM7djREp3DoKDJMYpxBuuuWL0r+fZGKHJRHzPHfGCS5I
-XDAlKQHF4+RnjZDSZbCh60dE8v44d519cMtC0s4sjQup4JgEwVK7wJc1uzv6ioYlYdtapmH56Ya9
-G9N08W+7hITltwfCctYtrMAkIdG6+V+d02kav7sZnhWxkumbPkncsev7rhm+OkkO9OT13t23JsSY
-uOMw03EYJyInOwSannH4/cfjLKreTcMM45xMs3PLIjgLs1vcEGnaLmTwSzMsTW8rOs0hsQm6oeOM
-uKRKJrtQMizJ3ehkVkFC/+F1KyhohHsbC560Acns7QwAkDCeJXHfDorTFPwwwRLicHw4y4QjsOFx
-JGk3EVhmTEnj4s0IP8mGN8flj0+gLHKg7GHfddacFdibhaaR5TiYuU5mY/qMJTbSdPH33ZzTmHKR
-02jMMePpuSQfjsvkx+cVO03HhyFO03jOYV6WuESSEEHjOIfI2AIsTSkJw9GSZQnGjHNIKQk6AWPH
-+4HsiqBY0pmhhaII3eTjQth97/o5LhDSxZvIHpouIdC1jcyLCwEfHf8GjynDyXvj7EzY7Riatj89
-2QwzLPP8kyJ0czjJRZLSj80Y5kBOT07GKRZ5tizLi3Iaklrz8Ne/+SHPsuCMWeJ6kwt2P/o8ywBg
-GEcAOM342gKzIfZ2Wj/aEJGSwU25YOtfGyIAICUMGQBMdgIAAykJEwBY4LMdLjb5+n3EwloLABLm
-VThDtv70WSYA5IKtQv6jYevb12lEyj7/+uPLhlhmfJX5ecI/lk+FHMYxz7L1cQOpC0TQCAArDp8f
-+SzhQvFDNzFkTTvmgq03VEgSpv9o4fejP834j+eJlHz+aCD98dr//67PkK4IrHpZb1a9fJ7zKqou
-WT9BN/pVTQbSVYOrNiskk53W5X/G4fOcfwzyfzoBhuzjfviM1frTMs2rqP/sI/+psv6zq17f+1mP
-q43JhKyolhn/5bYY/fxA65NwuHZcc/+xsRca//7K/uuXRR2772fdju6lSr+9m16cyzdN/IvL5X//
-YeLgjjbutBTIbq/3hBBS1KdK8iLP7h/2KhPI4+/etduSJhzX2choAaCfoNblNHQhQZWJj/u2zsRh
-dABQZ+J23ytdtk3HkGWIgsZpcn+4GQDgYpNfbJQN4dB0l9v66uaACaeMhilQRgFgtLbW5e31niG7
-3NZv3tye7zaHpgOADHGdaF0ylpfOTgKZs1PbdOe7ze31fnCTVtkqdh3s7KSVNG4+NF2dCRcejVUg
-A4DjOAkKbdMpXQLAKsfZabR2slNdso+t324qABA03u771WRXG6p1uY5cl3wY3frIoZvqkgFASFDQ
-6AIRyA5Nd7FRH/dthjhaWzA4dNNniAoG/QSTnVb5AKB0uc7h89oBoGnHy+3mZn/cbqrR2lVUhrjO
-nCHTeZkV6dXNYRWYIX5e2jrmfvS/eLqZJleW6rqxMbgfY7LCMg0dY8IFsi5tFbWqbAUcvP+8KADA
-hEtBAGDF52KT15/eeGi6zypbgf2s3xW6WpfrmPXV6wCVCWvtYXSfn/3sgfejL5BF+uhRJEyRsgoJ
-AFBUwbarsQFAY+EvtvQqiizOAPDrQ/qT3ALA7w/xT7fsqpsuS3bVTceZPDlRbz/eYMK7YUjzLEN3
-LE6fdYc9ACCP4H1dSgBXMuaXSSBDKmwINcBO59feA2cX57W1FhEvy6xpDXIAgN22potlTNSnaPqI
-nBToezvVmWACSfCgS0TMEE9r1ZkREABAilQg+/mLy2noWF7qvDCb8eXuZAX9tFaF5IemY3lZq2KW
-IeV0lkHQeLmtD02XA2SIu1oZNwPAOqasBNrJ2Wl3rq+boZQZAMzBp5QDjLUqVjS1ki5AKTOAEQBG
-gLMT3U+NQFar4tD26zCGjOVlDYCUYiYeg0IpEbHrWpaX58y7QFQmAMCGIAA0JhMDJjBDp5UUyJDS
-kDit5Pp4mQno2h4YjH4NGY8/IZYy+2wW69+2IQJZmILKhMoEYTROAQAUgta5iyRDLDNRMZpS7gKc
-1goAOjOe5dn96EulJ2drXRkX/EJKpUqAyVnCaEo5AEyUEkZLyjvDAAAprRjVedEbj9QiJ6jrFUZn
-J7rYspQ2hFJmh9HB6HVevtydXB9anRfOTioTTKDT08vdyavrh1oVr97tL7d1d3SdYSv4pcw6M5Yy
-k8KnlBeSHxq4LLOU8jl4nhW64oemY8hg9J+tHwCWaf43/8WzBxvLMGjq//1BCQxI6XVjXyhClvFt
-Ey8SS/X2V5fk+taUSj/f2L1zksBIUuDkicqS6C5zQYPrBkgrJEebJkuvK/7m+hgnfgwIYAkVUlAS
-WCmzXBBr7UJEjcxWkgiZI9GV1BIfbBQ4X+xOrI+YpGWOQIXO9DwZLeDtNekBEHGTCR95Sv2TGg8t
-A4CdzpujQU4WwjVGAChzlFUCALqSta4OTbMQUUi+OyteX2Eps11RHoZjrsp90yHiVuffUvGyhkGw
-i4uz+9aknG50aaytc6WkP7R9rVVrXC7I4GKtS2MnGdJdXb16t//mWW2t3dbyVMlckN++vgYALbHW
-pcZk9qGUmdPT/fhQZ6KU2Rz8TiMQYd9+RMRdrT7eHs6qChgFlC6SlPJcEAAglIk43SR4quTkrJJC
-pbwxViu5/eQ/iIichMYCDKv1nxdlnAJhNBekQ6YxIRyyEbe16roWKUUlZZkJEqngwXnCKCKKhNWl
-nH1YXy0ROzOu97nIG5jgDnJBHM+2OrPLbK19ulGH4UhkFcMEADIrm94JKqjgc/CIKEgEAF1lF+f1
-H97cSMlPqhSmSAsxOWFtrHUVw0QoK9gawqiL4cXFOQA8D3pw8elWL8sRUdSqmH2QnDzfba5JMweP
-SVqrQiI7VdL6haQ0zunmNDdj5yJMzsoyk9ysyX/8xIdXRmQg/dMvd1Kw73/7w1cvn0IYthk0liwy
-+2KLrz7eXGfKHh/Kr55eD2NiJ+Sk8fSuDT85V6UY3jw0P3m6u26NruDuwX1ZQTMz+sttsRKD1lIA
-aI231lprJSeyzNbYWSNDxFwQVAURcldXKeUqr6Rgj1gjkQS0lJhw5CRHsslEgRVDJhMCABdnua6y
-XJACcafzp1u9GrrMylWCVvJMC+sIYaTWGgBqrQvJdZUhCoFskwl9moqEn+usVritldZSkPiiXLUl
-T5Xc1VWFiZLyXMm6rqRId7WqdXmq5amSEKddXdW61Ep+sdUA8HRXI+J2o0TCLzYqQ9S1QphqJQvJ
-5+DX3Aqc54IIElVeqUyUStsQnu9qLdEuvlZSSxQknla0zqsaWW98oaRW0lh7cV7XyGT5OEbXKqVc
-SaGlIEKu8gUyQWKt5MV5nVK+2yiNCSLqTAsaayXLHG0IWqIU4CJRUkpEJYVG2GgFALkgLy63ElEr
-qTHZbZREpIJvRLqqbyfTWilMUkRUStZaaQ4SUSLqMhUUa2QbmQgSd3UlBZGIEoUQNOV0qzMAqM/0
-RibbWu3Oa07Ily+/QJ6UOQLAy/Pq5z97opU8zSsAeKo4AGw3WwB4cXq6flQSd1sdp/DiixMthbGT
-yoSuMpVVz3ebSuLFbgsAP3/5LDojkJUy+0z2Pl/Pd9Vf7PAf72ahT+9ao+lyMwKT+QkMk2knO93s
-22eXp7/+0BzH6eDZ9TFqHvw8/+Or66tu0ilct+afHvzdEUKC74zoJ6C/uemzqg5zLPJsu1E0Jacn
-G5XhypgLyXNBRJZdbOt1GVqKlQDQdEow3W3UmtSU1vo0y9JwoUsAyFhMMM0QzRIJo0QIlWGNLFMV
-AKCgVPAaWQyTREREJbHAalcrJaXKhBBUK6mrDAXVeVnKrFZSEEEZlSiUxKyUWpZrCQEAu/NzF8PF
-VmeqrOtKKymAKCmEoILQlPLdVm9rDQC1ygDg6VZLRCYQk7Q+y7JSAsA254RRIiSSdHdWiHlBxDVf
-n2qJiLrKkNNckF2eyQSQE52rXKIUbCEil6jKROniBMmp1ttMIIHtRgFAdLY+W30+e7pRq8NLAav8
-F3Vufdyd141xKaf1WY6IUpAcCXKy1RoRa1XIgm4yrFKmlURYdhuVS6wEvdjqGpmupMqEkkiEFETU
-uhKE8qwAgARTkWVCUOSJIFEKgYKKLNPq8RHKidpsFuCICHbUWqtMcEp2tapShogFokJaIGalFAm/
-OMt5nHdbvYJfZdnhdvAxFAol4vlmI1HkSHa1itHTTJ/WatXaxXmtJALArq4QUWXogpdC7GoFALUu
-Y/QLEUhp1zaf64q1Sv6TX3x5sdH/6ytLbY/gvixDExJFbWH3EPz1MSpdPt/gdWP/dMu+qVPJJkTR
-tQ0A1JXUlWSITOBWPgYdFwihglYnF5xGmhIAYDI3PubL4ep+/zhLnqwGKghcbGudlTmS57u6SkT0
-sUAEgFphgViXHAB4ViSYrvM+kY9eJEhUEmWZAGYRJpHwydlaZUoXEjFHIhFbc1yfcsE/325qXYmE
-AwAh7DNv1gofdUyYoKB0ESnfd4sUaZgMikRJXCsTnVX1iQKA6ONuqykXjwrY6kriz14+sdat/iyL
-VGclCqol2kgEAUGi0sXkrNIaOQGAydmU8pfPN4gCKF8jOudYKLkOqLIsF4QJRMS26WVW3TdNoWR9
-Xnc2iCzTtRIUtEQAAEYkonXhvKjWdV23RldSKylIfLHT0UWJ6ICtTCmrVpuOQMRgY1ZKJREwW+0S
-ETkhIsuURORUUK6lcNFxSnIkcm3s2EgYlSjCFGqtKkwQxapVWUqZgKBCIUoUSEBk2bZWbhwvzrWL
-sVaylnS31a0N21qjoBmLAGB92NXKAgOAl2fy+a4+r/NKJFpJRDw0x1MllUTCKGdzLggRVKIgnGRK
-Pt/VEkVWYjvan73cGeesDwAgCHUBOjMygcC5s5PxcYXov3leckJ++/oWAAIWxsdxpgAQCX/z0Gc8
-JRxVJiyIF4okc7+fEp0rjeSY1lsZ/+sT8iQcAOALOH6d2+vGrmL92NPusBc0Gh+TpU+WHhGHpD7N
-+FqHWb8gCgh+5Wc2+MFGHyMKSjhBRDeOGQUUBAAEIVKwIqtWx8gyBO8BwEXioo8uAsC5FBmLi51L
-SjwwhAUAEBZro84SALDW3hyaChMAEBQ4JUIwAHix27reIqIQNHinqwwAND52MyqZC8pJyrXOK0KE
-oHZytVaEEyUxeHeWSRdj0xqJwrlpDcy1rgTlQjCdlcAIckIEWYiIPpRKTf1+FU4YRU671mglo7WA
-WZgCClgryNNP/qkkIgqlCyFIgbjYOU6hAK8Q5+B1lUnBdlt9aNpaVyioC4CcrBTxVEuUWWuc1nJb
-KwBoDnelUoh4nueCRJmVORLExxICpoicEiEIJ0QQwqhU+U1jtJI5EgDQlTzJHh0sOksIC85niAl4
-AJAokNMqEYIQLKs17ghBda0Ioz5GpYvGdCWliBgiFwRgirLCNZ8A5bqSr9/tL0UEgHYmRFACrNYq
-TgEFVZlobRSCrphIREGZ0sX4MH6x062x2406NMfnu/ox6i1+DXMShRRpZ0b40fXNCb6by3/3mzcA
-kEzHk3D4xRn7qz98fNXOzdB99fLpb256QaMN4csyPGFmSYu/+e7q1x8aJPFJHlUm/uom/NVRv24j
-AFRJfKHIpYhrj4HG4PzsVSamoWuO/rkmvnkwkApka5h0wffWCgKLnQHAWMsJub7Z5xIBQGRZgei6
-ERIpE7CQtPu9VBISCQDT5D7pIFprKwo3jTVuspBIJTklAFB84nnNuCAsggAiOhceVx/8+q8QdHUP
-lBlyKrNCIrMhADwaYl1XcfZjawgnHIW1LgHvXLDWuQBS5YhUK6kkapVB8FpJ68OK++yjFAQTEV0s
-w0A4jVMMaf5ZB2uIci4QREGBMkrEJ3pKBAA85qvJ9dYCwPoXOT0GIJymlLfGHuyUfip4RMIlCusj
-ADCBi52RpKcyWBtWI64yZa0TCW/GUSI2Q18gJuCrRLTGCkG0Qmtd9NHZEKcgka0aHWxcAXTBW0g+
-oydlIQQZbJSy4IQAwMQAADghORIlURCyor66mbVBqhwAKPFEoFJSELD97MR7rAAAIABJREFUwgRK
-IVaZI0kBII4TAFjrrLW1UtaFlTJIlVtrBSGmM1plbdOfnmXexW2trHHrW5BwhagkOhcIJyUlSn5y
-coAY3H//8+3//Eeb7rD/5gQvJJQ5Ni6GNP+zL09eqrTW5fuDzRAFiaZz+yn5P97Or9r5J9t8q7mN
-JPFmwxZd8X1nfnHGmpB8mORkbR272jzUJaPVycWTE8VkzvISABq7yPJzp0KsgW3VqIXEWocEVsdY
-7GytbQ4tEYQLCYsJkUdnE0yttZUgAMCYAIC1Z4eIQ/AygULJFV/CPnXos+z+5qrKMuOmXKI5jqut
-r/ow7ZBEBwDqVDsXrRmlLA/N0dgJKT1+tJ/AmgAAKQeAoxkE0gW4VpIQJlG0TS8I54S8uT407QiU
-Wxe25xUA1LpkBTV9WPmMwVJQDsHXJbc+rhF6ddRnzzcCwAVAFNu8moOXgskEji6WZbI6yWJnXWWL
-nXWWaK0AgBAmALSW1tqcCgAQSAkjnBIkMRdsrbKIICnWgpA7YxfgK/6fQ6OWQmVVgejiY0xp7eON
-WW+iJ4yCm7SSa9RY0zIA2AiCPN6rTMT4uAnICUEU/xxrAFSGAMBhAoA4RQAgjHCO0VkAkLLCIhEJ
-X/0nurjWe6pW0YXo4zqTF882AqC3VklufWiOY11yY6c1VNVF7lywwdt+kShs9D7G1lhOiaD8drQu
-krX1Imj8b78sXiTu16+uplQevftyyzDhlyWj83DowpUjcvLRWwvCWkcZfbO3P31yQhc7B246Z0OA
-4DVdWktrQd7NJQBI2z/X8m+O8hXZHLqJDlP87mOz78zdmOiKt5ZKkVafqAVhZDXfRyittRF+fEnB
-rI3eGQBwwRdKLnZe2Q78KANAfPQZszx+0bXtymUBwI2j0psheAAosopwaqxz4wh2lLKUKneRQHTO
-hYRN0UfCia4kADCBr1CknHrrqODGOsJJ05ptVjgbXPDB+TV1CEFbYyWKCpMYJuQUBXVualoDANFH
-YAQAiCBrE9BFGCdirV03NQUAEeTtm31r7WolrbGnWhs3AQAsJqW8HS0AQCKttUoXzbisZhfj5ABW
-TNZ97qYxghAfIgBsjB9cBIDwyaC3tdrVqjkaQUiN7M31AQCMtYSTm0NDuWhag4gKRdMaFBQA2tHV
-Zf3d2z0IFqewEsXoo+kMAMC0vvrR1Ftjd7sTQtjqJDfDcfU36wNyOjlrXRQEZJl8fHsvUSChiOhD
-jNGLhCOn8B9eSqW7XX13uGuNjXFqj3NrLRPoY0REF0BkmXNTjJ5yoXUV46S1jNGvXoRSRB/XrKIy
-lMjm4AFACxLN8noRHxb1kzIAwIf28dW/bRMXCcL0eoDjQq21FxWNlCPi2ykzBLk+OT+vj+OU8bQJ
-yS6xvzhj83A49NMR0ivPFALyCAD04WF/erI5NA2n8abxN/v29c3oQayIBOdXw2WfMv6qEsLpo+4B
-JmebcamyzFq72Pm8LlYCwPk/97Csi+Y4GjdBdA/HOTpbKmWtsz4gIqpifctatLVNv6vVmr4JJ+Bm
-42brQAjKkqI1lhPSNO0qeXCTRHZzaILzPkaBlHBiYow+CsqbdgSAQ3N0LiDlh+boYvRLaq1tWhPD
-tMZXGzyhzEbgPkpBHAAieaH1Kt+4ebfdCCKEoG4c29FuddaMR2ttoaSZHQDMwQsKZgEzHi925721
-Ns67TX1o2jUzAAAiWhelIGsK1Uoiyr3k6Y9MysV4OLQxTofWIIqDnZTExrgaWXM0uUQlcaV2rXVa
-SRejIARhOfTD2VkGbiKMCsqjj56LdvYA0BgLAIhCUCCMIuXX1w+Pr5tSRCooNE2zxpTFzoIQF4EA
-I5xwQmwMLkLwjhDetua+aTSmN4f2c4Z5+/rh9R/eLMB1VgKAVlk7usnZ1eerRKzNrqa15zprmqOL
-USGu3kgFPzTH+jy/PrSUE2ttcN64WWNysT37tg0AAMFnaQCAVw/HEo6Hfvq5WiQnTKpxis/qlNj+
-gdYAUORZzsi4MAB4f7Df1Ok40ytHBCfv5tIFiIz0tLwZ/FliNZkAgG5Kue/M2elZkWeyqn96WX6z
-JdZaZ6cf+/rNoUFYBOXGTWvl6sceAFY30FlyHEcAULp4MLZU8jiO4P85dQgChNPG2G2tOCFSsDhF
-RAFhkglMzg7GrtLc8kj6jbUWEiUREZujX6XZoZEofIxAuUSWRPdFiHGK0UdBiPUBCR87S5zTStpP
-MbXWVWO64BwAROeqgn+8G3Ika4VwaLqjsZqDSDjhxLiInFobQRAA+CJEAPDeAoBzocoya11cl0Y5
-AGit2sOhQCSMygQAYI0asxtdWABAVxI5bY6fCjsidFa6GKOPdnEvrZt9QE4pCkSxJg1BuSwFEQSm
-6GOcfWgjgeDHT4jaoVEoPt4cVoJqIeE+ZhSObgSAdjweF8e9W7P3hi1S4ZorBAHCifxUTFvj+MRc
-AO9M9DH6ILLsaD+laQAfI+HApyhLCQAJmwCgsbOSKOM/D9PnZ1pJrTLrg0CqlTzVj01SjgKCF4JR
-wZ0LwzTuanW0i8pQUH5elwBwfdsDQPDRBXCR/HIT/7J0v71ujItv9j0AjH4uS/WXFxIAIiOjnwEg
-iS5j5BdyfrYrNQ874fPlAABk8QDwuIcTvE7IZO1JODzLobUw++5MuiUtnjADABTWPHhzc/+wf//6
-e02m6/bxZNKhaVvjXID2cBAEDnZ6GI9SsI9NZ33gWdFbu5ZxzbjAp8pvpUAJph58P31CiPC26S90
-+WiTiUROVwM1C6wlIKxsNXk8YycRAUBJJIJIToBT54LIMpLyklJYA6p/5KlCUCq4NQ6lmNJo3WSs
-a4yrz7LW2OBddNEFb611EX7/6kOtJABwQqwLSvLxaAGzqd8DESth+BTd4B0lUqSiQHMc16yNKFpr
-EdFaywS63or6tLd2cvYw2EJJwqGkMRWZktga1xyNoHwOXiJCdDmSlYwZ52qtX6HIBWltMHa63t8A
-AKGstRYATGvrknNCTpUUhArKMwrGOQDAXLveumAFARcjALTGMoGc48ebw2PtIXBlXKquD3cjiHTV
-EUqxkvXooxB07ekFEISTVTkxTttat8as3iWocBGicwAwGLvYGQU1x9GQ5DMLsMYBgLV25YEi4dba
-1hpdyZSTNVIY65qxy1l2fWhX1RNB2qaXQsQwjZ3xMY6duUy6P6vj/92Jt4eZ6xOWl42LjksA+Nak
-JZeJs87HlyrN4vxvLugPjgMVjaevDjZxNln6n52IyQzJdNy7uXHx2gAAPND67QCCRp3C0fFxpgdS
-PjpAxvFf/+pyq/kvvty9HcD4eD/6tYWvpLDWqboGgPX803ldZHF247ja+grKikLXLSv0n3/6fGWS
-JpgaN2mFlFGlJPlsYqtHfNo9QE5FlhnrIDpE8eb6YOzUNl3TjkrioTVsmajg1trFhZWYreWasY5T
-0owdALiwEMqsta63a3NjNQUixOTsqtcxwM2hRUF9jCoTY2d4VkB0dnEygbZ5PAiUC2bcHD3IKose
-CKcJeMKotVYQsS4CYTnVmgkUBHLKrYuiqmc3tsaiiArxdr9PKb9vzbGzq4Wtc/h4e9gYv86tbfrd
-ZtsaKwSD4Hc6d9G9b71E4WIw1maS3jdmJSqrAVlHWuPWcG6sUxJdjGvgWHsyK/fQNK7JnBBeZNXH
-j3fr21trP6cCwikACABdZet8zrKsNRYoR0GsdVqrm0OD8rG1KqvscVsDQNXKRl/rqjVWK+lssNYS
-IQQ8qlgK0TY9IlUS+2HSWh6a48pCrQ/GuaY1zjpjrVt8hfp/e500dtEiah5KmSEnYl6Is7s8+9ak
-qipEKV+181U3fdsGjA6Cm8zwVMIgSuuJXXw7upBga+GyZD85Jz8YcQLDeSEuS8YQkZObwbfH3oZI
-AeC0gHcfrteePQC4AHn2eB7Lxcc1rGXtYmeUlfi0RadpBIDZjQBg41wraY7ms003h8NjeLCPHkIE
-3t41iEIKEV0k5HEfQGTZYufVBwhh1/tWqtxFsNZta+XcdL7buOCvD21WytZYF6Mg4miGlFNFIgBI
-lZvO+BB1Vo5HZ6xzi1dScI4uRq0kEYIIEad43xhrnRvHQ2vFGpla41xcN5UdQK31YbCoikxSAFgP
-YK8NKSq49cHEx7NZx+FxgQc7WWsFASLwOI5KokxgAhl8rFjVWqs2GwA4VfJMKQCw/eJidIvXldxL
-jogJ+LWGAYDr6wcXH5HPBTHmKAiViONopSDN0RRZZRd/GKySAgk19jGrAIBp27WqEQknQjzW3GEl
-h6m1jjBS68rHGOOEnLoYD20rCPTWRh8Jp62xiGhdqOuqrqtonXXx8/6DQmrjjAKsDx4eDea66e1x
-AT4DQHM/SiURMU5xzTkAoJW8vxtrrd5cHy505mzQWdna0AydWzwj/NC07ewT1/5PT+e/vbp/krS/
-5MenuUtsW4bh7XXnrBMo6Dwcx+lVO7+6boyPv1AUAN4OcH2MZ0oOolySwgXSWthqflqrrcY3+/5d
-EzSSVw/HDXvkbJjwDbGqKqqipFt0v3uz7yeQBC5FPC/E6ckGEQWNLhJBollb2ojmR30MpYvGWKW0
-tY8Wv6319x8bLdG4qbc2wZQLuR6CR04iE4udVSa2X1xa65qjAQAhqIVEZkU7HNVms9h5t1GHtn1x
-uW2bXlABAC54hfLQdCvtxoQridY6Ikgl89kHnQBhpG16ygWnJNjPJYRzkbTGCkLiFNeYh5zKT5kH
-k7T91Gq1i0dYpGCrnlcu9/EwIidmiUhpfZa56A7NUQDwGSZnm9aKLENEs0CNbH3KWrtu55nlMWG6
-xcsygeDn4FUmHuZjSvl13wlCbL+0xq2H+PvWAMAK9SPxINHaKBGPnXUxAGUuwqqCWj4yQMoJCAYA
-BaIgxMWYZWjbfn2vkv/BQRoAkCU+9oUAEIW11hytrjKg/JHYdMv6fVbh4XAUQISgtVbgJmsdJ8RF
-UHnV2oicClGudeBOF9eHFqlAKVSZBOestWvOQcrX/Za8TJpmNNYSQQ7NUQi6Djg0x/vhSChDxKeb
-+n/5m84Ce92R3/RY8NxGGEn604tSaZ2l4YeOAsDzE1Uw+FXtfjBRS3FeCF3xHx5cKbP7h72gMc3r
-5uj//u3h99dmWIT15BhQZtWVI1eONJE1xjUzXHWTH3t6O8LzDf5yW1wN7s2+J852h70bO+A8OvM5
-A0RnYYrGTYi4hnwtsXW9jUTpTXs49NaeIGmMJZyUNAKAd2Y91Q1UCEJsnBHRNHugTFdSKry+PVi/
-8DgDEf14BIB2dLrK2tYoXbjgVjturelGv9ZwdmjWMGmtJXyanH3+U7n2mFde24XwKe04TFJEYX2Y
-0oiCCEKo4Pkns2iGHoKXKA7NEShTujh03rporF335j7XGADgXBAAiGJTZ3bxa9/QBWiOY3RWZFnb
-9Kdat00fuXQu3DfNttYueBfJ2gw5yap2dKeZmoPXUhBBgf0zCbQRvLfd0SGKm0M7OQsATWuis1Wl
-UCTI6SMrC35tr903zSbDlQu1Te9iVBI5R5FlPsY4BSKI/tGmEgCUn/4fT2ustQ4RbfDrpofShYsR
-BWlaQ4SIPpLJSSUJZTF6EEwmsGpkDp5MTkl0rlvPGsFnSmac9QE4kE9ntIx1xro1O629gWPv/z+q
-3ubJkRzLE3uA04EHJ93hzowIMrKq8qN7prqnez521kzSQaaVjXTUH6Y/RUed9qCLZLZakw4zmm31
-TE9X93R3flRVBhkZQXe4k44HOB3YAxhRNXFKC4uMIJ3Aw3u/L3TGcimIXLd/9DF2/Yj5+eX26ref
-ulLX/TjNEr+6wfY4EeTkYxfz3Wn8pj0DQLWINJrjBA8k7ZSnlWCI52f77b7bFHBb+jdwVyM0kr2u
-GQD86bu7z7vv7x8eyDMAmLPVyzLn1e2s1jnmnPoBBctU9nZbl6XezVg/FY60+k8uZrg4uzGpfTjz
-GVPNEudou3FOXbhumqOxTDAV57t9CwAznYfAno1XAKCXlZt9P9CNUt042M4UuqoFuBjDv6UaIGfO
-Tfmc3p7TqMpCkAtEDjKlFUYfEdEYf3vT/Kd/IQBAJVFyH6KAiXzwMTKWH61PtTC4iTHBpZCZSBNL
-hosFF0ciKTljeVpeTSmYt8a6dEgcxz5RYyhY2/XkIptciMLFIDkAgOSwvWken0YgYynDBSJ241Bq
-BVx0xjYaEaWHnJdZmAK5uOACUUqeE11QGsZzAKAFe2gNIt80+kRRSWaJmMT7boyOUPKqKBrMj0RN
-XVmin95uHzqrlYxT1Ot1YoX74M7BRx9RcGSCIgOAusjSbOoAWM7TtJDav82ycsEjYvSByDkA+YT8
-Jcam7XqYmEJpZ9AKfbwIwNLk/UwKpVZWMIaI3sW6KImoUhcqXQIjckqjQjw8Hplgh8/GErU0kQvv
-P3123fD//dOHjubBjpKDIfj1e7OoakfTrz60+86/lPFVKRBcqeuXyF4u5Z0FP08fBz+r9WGwTKAL
-4AKLHv5wQgD4alP/vmVJ1aYyJosy7dLjaQSAbD5m9jCMnlfrF0yq0vlf37kTKzQnRETOlFzEKURn
-02qeQBFkc7SVLJTMacEmUDfNqgwnADBtq2SOqvrQGkQcAstwkc6BtIBQwjl4mYnu7DxEOs6pJBBk
-trfPos7EOKbPgIWkI4qG7MtN4wBUBpAzB9E6B8HzXAFAmgGQSXKhwsz0c10uUrFZSoZcyEwwlqOS
-AMByhqp6nr9ziZKxWiuFkuK5HXwUqoHJOzs5Wv1bLS5ehktCmSUMABH3rZnpfNsUBJlksOBCZSC5
-GIx1s1coCw5db7VeRBfLMgM3nYMncvJHpsEYJiKyxm5qlEx8Hq0dbJJakJ+1QiYxToEJDlgMw9yN
-vULsuu6qVsa6Z+AYnsj79Np2rUkbGOgMABTPELxkl/2WMDEmGAA0dXUKPv1flnPJmNIYfUgCFhdm
-yTMi6ilUCs0ww1PJz8ECALnL/OZcgOAtTa0xZpin6GutnAsOIgA4CgBgyALA/mAYz7veHrrh0xC+
-ac8/KUNSFulCugAvN825797qxZtN/XqNvzVZsQgvy3xy1IXsJ0vaVuytXqQF/devGiJ6vca3etG5
-uFg2BHKw47F9SER+li9e1+yNZjVmf6Hngzs7mghk5DlnwUsWW3X1s1UAAMWAiCjEJLBJ6uUMFznY
-JbKFLDo6A4BGiQy8s6JYzXS+4LLgASAZ0i4rDH/4mEutzUjRRSm5KpFcpKfpItUPAGCCkQ9uHO04
-pOqSHnRnrASwM3T92LY9AJAPXf+4qVV1i0S0P5n0QVLw5AJjefBOIXbjQERaoTUUnL9pygy8mPJc
-4lKyyRGT7MOurbWKPqJgR6JMZVGo9PaBJ0IwRh8Sxo+IY291vWKSSQDJoC6yu3ZcImOSaUQ7AxGV
-Wk+OYpyu6lojSiYA4MN+zK/kiSKilBDSdkqfkF5WiMikQskiTKpU0p9TTe3GgbFclUpyQXRZ7rvW
-1HUNT9N5EpUwwdp9t0KUkrsY4xQxkwAAuAAAa07ABXAxdj0qGX1olmjJqQzarn/+mBjLmWTWkM8Z
-EbGcx+i7cdxu6lRWksjl9bYGgBVWAODGUy5xNBYAgAuthCqV1goRE9Fue6o1dsa6GMi66COivDt0
-t9ub1hzr3L9aoyhWnxwrVZGkmh/baHMRFksU8f7ouq77zf744XBEwd5w088sc9Qep583iy8b/K6l
-N0voKP5mfzQBs/noz/5f/rQDADtfxCzDiZiApAnFTPzZkhrmKmScQJ5c7Pb3R1xn87FZ5b/c5uWT
-4T04n0W35GIgdqJoE5oez5LLNAApmVM8F2JRFcWCC/OE/PwYBsVMMolhsLVWzFszku3aI1Gj9dNP
-FABg3ZSGPMgUYwIZWKK6KAP5Wqt+HJlkMk5dZ1BwCVCpYt+f+zuy7mx7AgBjKRGlqZKlLQEAXW/f
-fv1y340AcBgvZQ+myyavMLvbd6snUecE6kh0Dh64gOAAAAUrFN8d6fkdkQ+pXu47OwR22xQPnR2M
-dU/SvW7/mOYEYykRT8bSl1osuNKFJHIOeJiCKgs7R4XIcx59kCwOEaKLD8YSZOqHM4c7F4hIF9JF
-Fj1oJd1TNyIzIRlz0e1bs93UxyfNQ12pxAEHkOmZEJGbfTrKHACWlXMh5hJRniwROQj+3d3nm6Ki
-pzdSZYKI6qLoDKkKkYsEmHaGAKClH9QACQONRMtlkUZtrZGIpOT92UUPAGBpurvvOusAoFTFH/YX
-rNkN9iU3yHnnedmsrY+x/9yPl1/+agl/c6tua5zzqojn90H/4YSzxGaV/9ZkD635skGbCxRRFdVL
-Zrref7d7XD0VXzvHyPOQYevyfmafHNuf/J96OFCcaOIaw2DHZpVfLW2pCgvn/skLSyFwwQCgH8cS
-Y3Sk8MKtQHRhsUytTuKwTsGbU58Yg7SIfzwDmIeOCU7kbja3AECQlVrdj3aJzAUPNALAHG1CD7J8
-itGnHsA6x1F82rdVUUgmKAJw0dTVzlgAQMbgdgUA9ROxBQBjgEqhVuhioHjRAiQaGNkCEdM+cQt+
-Dj66SC7cbuqHz2MSYhDRqqhOFIkonQAzkzGX+KSPUogoeHRRVWqJbIWYMJ9cIvmgFQLRk44DZCYY
-z3et2TT6fXskOyIiEyzSmIT1kMAfnte6cJF9tV67GNeFTIgQzzlwMfZUYcYER8GJSFW4604aWRqL
-U/nf1PoZ9tEK7WCf1SIAcKIIAIg4Ofp46FIDZslJyZumInLIFozlLkKt5L41TVPFKXZjzwQHJiGP
-AGB7SkI6OwOiTLO4ylg7TKXWCuWuNaoqAGDfjXWl2s70T0o7JgAAJItmJCIi2/9V0a8WZIgXiJ9O
-7h9bsevofGonewKAm/Xq582CyE6nAQC+yO2fr2029TWfAUAjZI7emTMRSR6XkhnihniulicmU99/
-pCm9vHQCdBTbbvh2Lit2TLLZm5smx5wDwFfZkKms7efBjq3L//TDeQjBR72sZFEMxFZaWSImpXWx
-H6gpRSrzqf+b6bxU2A5eFKuSR5p96S9ZCU0pXnzRpKf/x7ud5GCJBmMFnGc6Rx8uWiA7dzQj4sPn
-kTERHTW1JqK27W/XundRI+t6exx7Xa+2Wjk30ezh7ghP0CGR41LURensiUmWn6Fi4AIsxdnHCDQa
-spIL5MJYkiwuuGCSMcGC85d2OS0gxAv4+/TN3X1bL2SaCxFm8gElY5P7viXJIGlvJkduHBElAdRa
-ZeBhys1IMUxaoUIZp5C03FohwyIN4leFMNYlSH7bVB/u7rTCw+gStBqmkODC6AP5AFwsuEjHHTBJ
-kKXDwVjqDDGWRw+5xG4cENHDpQQ2Mnfx0nEtuUjkV3SxSCBPmJKNgYLXCi1RU1djN2x0IbkkHyS7
-HK1JD2K6Yzr9vKerWn0V4s5aRG7JJRbInudaqfRX6kp1vRWMmX5OmFjbGb7cPvThf/9jkOd5m9FG
-wSqHdT5vaySQKKLkUEs2+vOvv33Ic0kRvufNv3b1dVV9RwQAP1HsTRk3KsGGquu61zX7ssEvx2/f
-3bWp9j8vfQBQcH6zhF9uVl/V3EdJIRwnODzsJ5p41/vjAo/WvZTxf3hh4gQ3a3wyOy9cZD5GN45M
-wIlig3lnbEK4Ew3+QuFhvPQGCy74+TRHG4WyRPXtdTtcToCzi9GHVVFd1fXuYG43jekOMhMtTbUu
-AKDUGgC29fKh6yTKtuuVzI21ZnSbWlEIlWT7jrZaLbhwbkrSUYTZRNbo1a/f3RE5RFlhZskpvapV
-yReToZiBn0HkTKSqnJqBtGHOwVdcpv4knVqpTBIRlwKe5pkkxk5lDwCSGyt6EAK3TfVoyQWfXCx6
-vXbBOQDJ4ERRSi45KJRMsnQ6SQguRkTZ2/FEMZlpFlxk4JELfIJgzsETZEtkbvYqg846Jvg5+Ebx
-ydFlWhXMEmklg3ev1nWtkYJ3CQBluQ9RSm5GBwCsyCFOAOAC7IxNeEBR4Wism32aiY9EdrD7bryq
-1dgTohxC6INL4pHoaG9GKcv0WCRjqY186KxmkQVPFLRCVSljSWukGGP0ZOjso5LSWEvBjz1FZ5e6
-+voaPt7t17krof90ch9PcJwg9t0wmOip6/0vrvO9hb2FV1flyzL/qbAdzWZ0SRJX87ku4FctC+C2
-NXY0f9wNRTzXfv//txEA5umsMpZkvFm+sHMEgE8n9/2RDcYlZJhxmXQ6vEZ49znO3r1Zzf/3o2Y5
-HI75aZYJit42VV0Vul6teGy7rqXJGoNs0Z5IyfymWd23R8kgU5muV5AskUwdiWQmxpHSCdAOnogc
-gDkcAODkYpyCrtdEdFUrY4nMEcCLYpXajwQKWTdZmhDmzpCjiSEmPAQAyLrr5jqd41+9lK05Jn+q
-VujnBQB0xm63za6jbaNnOnPBGEzPuzQ1uEqyBRf3ow3OI0ry0Y59qRUySDrq1thnnPsZTr8/9TcF
-msMBUXZm3B32K0QiYoKXWh3HXk5cS+4ihCmgvFhMootE7lm4kUbDzVo/GAspv6S5xjKLU+g6S+S0
-kpZoDNDUurXh+ZXbGZLMuFRFZywXbAhxWrCeZsYuFCEiWjsIzoicyC6HACIylmfgC8Rgj85N3Tgw
-yYLzyUexQkTBX2+bkyVDxDFx5LS9adLvNIcDE0wiBwAmIPr4rPZVMk9TR/QxTsGfJggTY8IBP56P
-rTFD75wLqfUPNHzzfsdR58tyXqxeLqX18e22buoyZPhK+6829TtzTmZIFCz2XctK8J7PlLCWP9n4
-L4dYlvo4w6s1Krn4d68b0x//05/GlOpV6yLLFznmS5kjZ1eFyDGvXtz6eaIIOwOOJiVY9eL2YfTc
-BbbMXO/E/3mXk2eNnF5dcz8ek9mKyEkOKNkxMES8qlXkgp5wHnrq8FZYHYnM6ChC6qTd7N9s6rTJ
-mlIkx+r29hZRTtasr+t0FDx0FgBQr24KTREarVDw6KipK4qQNisw2vSdAAAgAElEQVSiHIlkkmRG
-58ZR16vWmM/jsaXp209OyYXtiUvxYd9WK9H1oyW3bw0ApNJ+eDgZ6+1gpcz7c7KJUXJyPStGIWdK
-5pLJNGYoyRqtEhLlImMiiX+YVugAAAuF0gX/+mqTyidwEV1ccgEivL8/bbd1kceeApGz5IhcU1eD
-HWut0lAreZ7wnL+dnKOJgncusJwjyoTQA0DBQSM3h0OtLpklCX3XCgc7omTBR8GY5MLaIX3/kqun
-yrt9iyiV5AAgQEQfY5xyiVIyeHKBIhPG0kX7+fRHW2Nvb+q27YPzSb/Z1FVnaLO9ij5GF6uikFym
-Dkchwu3qO+MrzIicC/7HnrI0olxcTeTOPvyXb8dvPrR2GDfout4DgCzV6zUW8dyF7O++YN+d5ENr
-JI9ls5Y87km+j6vfmmxW6+MEnYsfjdj1sXPxw4GqvHx/b/et/dWH9p93o51jrYsUsoScrZ4AyEvG
-lj1JHnd9dAFcgI7iaWivCsEl5tdVhYi318umzAjUr98bCwtHU/LquwB2mGuliOjh88gXkz2Gy/gl
-+LOIbcGFLiS3R+umK624PRabJg3B48RcBPKhG4ft9gVBHpwnop+/ub3dNF0/SgZ9cGnIRJSPFNPD
-HXt71w1NrVc5MMHtDMgWm+3Vx7uHRuuEUmsWF1xst3WMFyn129fbN7cvBMCCixj9Znt1tP7lVQ0A
-9+1QcJCSb5raEqHgiRJIJRkyVWsEgI0uOmsBLhqHBBYdiYylfTdqRKDRQZRcmNEh4qqoIHhEvD/1
-wGSRx92uq4rCkmu7Li16Cl7JRU+U4CmyTis8B9/N4ALQcbbkyIXO2Ck7nlw01pVaAYCuV+92j4Kx
-GcQP6gbvASBBFFJyF+GmLj6PdtPU0yJaOzRa2cGm/UARUseSeDczEtnx7GPb9dsXV5KxpOwnH5wL
-TCpLTqFkLM8nSD7gWuND18HFw4BMsBj9dt101sHdcckvvJjkAmicJ2usNZYSukrkJkff7bvBjnx2
-kkdVFsjgC+kAYN/RMPwwrLe97Sj2Z/bVYkDBitlcNVpzyuyhenHbn1liaWe1To5HvmDhHB9Gb+d4
-u14CQFOXupA55nkumzJP+yG9DOtijReW6fUa097ghjhFRiFY077fj9adX1QMACTm5GcXQ9NUKHlS
-EKgVT3g5/NvZ17rpHLwbR1mX6QQIaiUgJiVZkcem0an/seY0nQZE2Szxm/d3ZI6IeCSSTKy0Sn8l
-iw6VtEQusqauiagdJkSpFY4TQ5RVJqXkXW9v6/LvA1spYUaSXDCW93Zs2/7+dHIuvEDWGSIfrrR6
-vGtVqZL6PMlm0hNnUjJx8UzZsXdJZMHyWikUPMF8WXSSi6u6ZizXBX7ct7IocucTCgQA5nCIPiBK
-ZAtwkywKycABbBvd1PV9N9a1lgw6YwWXaRWmviv9W3LQ5QIlq7W63dSRyyy66CwkwUWEbb1UKFFy
-IrcuZOKVoofgY1PrwRhyIbVA+7bTSgEXjIn+fEE8AaBaJI8lspxvG+1cWJYZl8KORwBgTDSKp8Cf
-LxokclJywRgv+eGzkTwDgBkElhkRmSSbY8LaUbJoIkPB0uHjgs9w8WHXblZ6HKjrx57mB2Pf3lRX
-TaUm/ze3ikCOx3MhFidZ/mngb/XieoXNEj4N0xDHn23V6zX+vFkc3HnXx3xZTta82TSqLJZzqyLt
-R/jFdQ4A5NmuI+qHhPncrperHFY5gL/gGUk2u8ovkZh+PPYzAyG2mwYA9iNIDqscOILjCw8APxX2
-9RpfyvhFnni7qRYgGQ/OF8VFGxN9jFwkBuACohfFM+QviyL6qOsVuQhTXJbrNOACgKXJumnTaKWX
-7TBFH+0M27VOq2dVVGxyM51XiMb25GMg32CulbSD7YzN8dJl+hgLrT48fq6L0oaLKw1FFo4xYfAx
-idt8QCUpQsJVuRS7Q4uZ6O2Yyqpz4apWZpi1Qsklzf5205CPcKRaoa6ycM7Jh4TEM6mI6KHr0iGD
-KLmQibFIDwH1KoG8GS5ABDeOiCjhQjBdF0qhJBevGk32cgI0m/W+NSzn71C6AD3N5GJn7N2+0yjn
-ZLRnTHIhM6EQKfo4BfKhyCNZp8pCVXh6sp5m4JO6GBEjTGYkXGUplQQAnmdrFHy1WCG/jEOIsqf5
-4g3IJZFTKB86u2l08p0iE272WMnOkEYO04IxIS8fqFPVD0z8RTiNMsHHNHszkhldjNNgx7rIfvt+
-f6D4yBt/9vcnb/rjx/aMIr4z5xl1e4L9CLMtyEci+uRY5qhGIM9OWfO+PV2pkBqE/+mGPg3T8TRm
-U7/MXKqwv/hy3RQyGdARMW37Ip7LUh8nqDErEFNq0EsZ4/FULWIxmzqLxwl4R/H7ewsAsCophIO7
-rGbrI2SKCbY//HBCMYlFHlMWQDJupi5ojnam8zl48tF0x+QKOJ3GYfQAcNcNtjuQjy56smP6SKIj
-FyAhM0TUnSPqFfkQXawrdd+N1k0fdp0qVX1TdmbcNHrfdrc3zbVCmYnd4eHtdbUz9msGnXV+4aO/
-SD53bV9rFV10kaVXohU2deUXsGn0YKzKQFfZwc6VZEkWYYnIHGl2MZdKa8ZEf57qqrBPQm73hFMB
-gJRccGYsaZ6xnDPJyAXgYr2pl1woVT1nMfQ0L5F9PHSWnI/xHDwRxSnEKezbQ12UcQpr6yWHfIJt
-o7/bd7VW5OJSMvJRafRPFK+cckScFtG6iUm+4OLiIiCbS8wl6rowlhBldFFykIx1xuqFAID70apS
-pa5msD2FXEqeDKI3dcEks+SijwlHSt2CQhl9dDHWRbnbtdt14yLUuqChV1WRVHFSlS6ydyiVzOta
-DWfnXCA/p8mn7YyL4fPnsVTF//vNnQsshS1ELq9erHW1ul7Mhrj1MfP2TwNf5+5dH0AIEOLDrj9E
-HLJL9UzeRWLy9Xr1R68AYFMAAPzr/mTneFWIulIvyxyEKJe41arBfJWDKFbILuzHSDQSMUemP3Zz
-nNU6X5Y2FxNN/OrF+pebFcLUnqCR03/zYpwXKwXnmN4kFwAQosglNpgjzNZNJcYMF0sunn9ghVXq
-iJJgjknWlIJLeWGUp4CI/HwiCobo9YvVh/2huak1cl3IdvDn4KNzCUdP05iUvOvHWqtXa73bPf7F
-21sXfKLuezen6kWTYzn/fQTMFvkE203dGrNrzdvb6+8+tj4/v35R/e79btNoJsCSOx+pM2PirchF
-yS51kci9eblpB4+ISWrqIGoek20cADBb3DZFskSlaYGIUDITZnKhVmUaVbtuvB8TCgoAwBCDczMI
-yVjSEqfv77uR5VwjJuOvZtH66BcTyMXkSKEstGowR8EUInJBybaSTyxnwU0rrdIpl8Iq45NY33Sj
-lDydky4AY7klSoLTKnt2vbDb7Y11Lv1YksfWReljZIIxJpomxWRUHw9dChCwzimUdSl9jJIBLVjK
-7PAxZpJv1eJh9DdFoRBLzmKcUGTjQORnY91aZf/hq/zbfUcgNYaXMr7IbfQ0tIdffWiVZET081cN
-RYYi5rn85pEAYM5WdV13FMvs7M/ed48fT/BPH8mf+4EvCfJ3Jg6DeQ4ezzGvFY5sUWNGkD/r85TM
-i0VoCikz0dTlKocrdCcmAaB/vPuw69XkAYD39pyEpgDwl6vxfcd/uXCX0WG2RM4SmbGfHGW4yHCh
-nlRcHByTLOWTAcALhTOdrZsyXDynQly+ck5E45lvG11xCQCbuu46A1zsDgYFm0E8O8dZzhjPu868
-eX1r3bmfPeM5hXB333372OkCXZg04u6+lYzFKXzNABGTgEyVFx/wSuPdrr34obSKHphg/XkCAKUV
-oiRy0REidp1FCW72zXWtEC1dApyVzKXkLjKVsRgmO8ORiEn25vaGiNbXNbmoFWrkul4ZCk4sKuS6
-kFxKhFll4GbPpZQc6ElHdNk881kr7Ix96Lr11fKfGVeC0XE23fH2phGMRRdMOOdKB6LgXF0VN02R
-GiRyYVVUFP1gOq1QJd/GFCUDKfm+NTd14WLUBcY4uciSv9QQ1csynYS7fVeUqOtV6n90gVLmESbJ
-GCrZ3X9uMAe50AorhaiKZCuzjq4LdW+tMed1U5CLul61+/b5E44ueMh7msnPbvZH67c1/o/y/j/+
-82cAeHNTGOLZ+dj1tp/5V5v6714tltH97Sb/fmAQXI3ZyzLf1irxvs9fnWONVpLDtmJbtRzsaIi/
-LPl3DyMA/PlmucphoknJvIhnzCTC1GCeUMo3X1wBAAgBAMndNS9WLjBHU1OXL0vWrHILC47OfPFC
-Z44O7vzHYzVA9ZuznGiyPhJkiPLkYlpJP5b3rBCjUNHF59xCFyFtj5nOz9/8QQ7NJM3ekvtwt9/c
-NPuuezC2rlRTayVzmOI5+Cf1pU/GCzeOjiZyIZB3NNWVWj5FjxQVSoA3b24B4KDEDXJLbn1dEzly
-AZXc1jUArK91mIIDDgB1UWG2AACii7crrYw3L288iIQF2cGmaq1RZbhIrp2k1UGUCe+3duBCxief
-gKGwbw9vXhQFh31nz8GDXNys1905ximkfLtG8RAFkUvtTa0kYzmb3JfbTWfsUuYSc5gtRY8wG0uo
-pOaLFBXhAOqi/LxvtUKUXPJLUlip66S96YytKwVc7PZd9PHZ4sileP2iOowOANx8AftTlRGMme7Y
-jYN4sgfYYeZSdONgZ9D1ynRHS46XuVYimT+VqnqaNaoYJzuDZBcVRrIEKpmnQJQYp6P1nbGTNR3B
-//pf5lqyuhInF6OnP5zQBfZqGTIy/9grXa3a49SEXeaIfHxnzgDQDlM2HwMZM7o5W9UyrvP5qtE/
-FfbTMCHngcwfPz0mzKcsdbnEm/WFq7m6LsjHr99+2d631br56qY6uPObZslzrgt5nGDgy7/7ggEA
-wvSTCj45puDMbyveef7IqvsRwmJJkdmnuzpS7V9KpjL4viVdr2YQ1k0ZUyn6CxHBTYiY4eK5hOt6
-ZXuSRUFECYIlH1EyRGyaardvldYuwKqojKWuH1OWYC7xSCSLIrqYRDLVsrlq9Ott0xnLZ1Io+3Gs
-tYJ5oRUyxPLmy0RW3FPYtX30sTO21urdh927T9/FKdqeeM53u0dUkuJZMGbHQaFk06UhcS524yDA
-K1Wm/KbPo900+sPhvtTazd4O41UhmEhydiWZrGudDE0AkOzk4+cRVniws2Tsi/XNvj0AwKZWZnSM
-5dub5v33DwplwnxQMoQ5xilezGewth4A9HqNTKBeKZRuihkuJIspTejR2OtNYyzRcWY5T8kXALCQ
-bPf5WGu1b02KGGKCSclTq2bJpR4JAMgci1WZdgKuMoVS1yvkoq4UWeeS53Po069N/zcFSPoY6Tgj
-IgQvJY/Rd8Z2/fhsw38uiM8YLgAskf3PX199uGu/eKFLLb+qeS0pBmd9jFy4wCait3rRHqc7C1/l
-IUfE6KyPf7akr2/Lmk2/3Kz++ksNANUifjgcU8DtNLnjHz/dHU4qYwnz+bF6ZfTnmc51pbwnJkCy
-6KxP4diWKJdYvbj99cf2/3lcbGpcy8W/2mo6DRYWvBCL1YKaMpsXJT+fMLq7QaSF6yK7WVVEdGjH
-i7WIRiVzJliSkqsMQOYpq8yN4wpxnNhzfQWA54Df+89doxVZt9JKF5gq2bbRKDJIGvSnMIhmUwNA
-nEJR4WDHrreqzPJlGX2864bFOXfcV7Xe3e2z8xEA/u7VAsJUL1dS8pRzVleFKlY+xAvji9KOR3Bn
-H2P0UCG3M/gYV1rBbFEwQ7HWKkXMAgCRq4syzSS5xIfRJ/kuUVAZOBe2m/qSZ0GuLkpeZsKDZNzF
-2M+DRjRE5OJmrZN0rN6UTLCU2vC8aNI+fP78zOEgJf/Dx0OE6asvVvBEQaBkK427/UmhxFXGZY6I
-yyoDgBeNjmGy5GQmBGeqQns8owRDgYicC2akZGkiyE6HHuQiOB+naCyRHZNRK0WjmpE2NzdPjHhI
-i1ujAgApmUAJXAB4BxxRasnTpBR9vAitWWYHS+TIz3/Z5LH//L/96uGmgDKcjtb952+6v/82cNRf
-bWoUUfJ4kuWHw7H37va6+I2vAOC9iV9t6s8zAkAAN/ozy3k2HwHgMMn9CP/5nh0n+H0ElbG/eHvb
-FDJkWMQzMpgmVxdZ0iMjYlWiddBoRZ6P/pxGgsGOx9NY5EkVN397LlHEwyR1gfzD4Xh1bj/t21+W
-FgCcj7XwAMAX7OyDGR2TKolbUmNfP9lcgEk7X5T6qTtCRJ5zySBpMC1NqaVjOa9KRLYIzh+NrSvl
-wsVfgpm43d6QC6rM4Ik1hEyxnO/uO+SciOqifG4Nr64LIt93BgAqrcH7dRldDLXCFPKTqhcKbskx
-nrvgxp78tNA3xdF6F+Pu81hrFIz98/uHzfaq60kyZiztW+PGEVG4GAN58uFmczPY8aoQLgatcNvo
-7hxjnFIIxSWLwbno4tOG92LKkQsUPC3uNGyE44UrHOyoFcqi4FLQ0Gt9ddkMcnGzXgPA9XWxqfW3
-3x9PFBOU5AAC+ctgs1hFD/uDSfmKj61RiMYSCu5DjD6iyBAVkaurIniX4qYBoLPOBY9s0dNMRIKx
-ptFENBhT66JSS5Q8RQ3Y3r7erPetkZnYt13OBBeJLyfJEvUryedaISr5vJnJpTyfUAt4/Wczh0FF
-+vO1zdXRWIeIL/iwWhYAgJzvRwCA4wTHCfatBYDftbF1cbAjIjqhPrQRJEZnazaBEK9r9rebfJVD
-Z8arQrzcrOtKpcWjm6YQi+cTYN0UANAPtJaL6GOKSCIihQjeawxvNsXH9gwA2Xxs9EqAMyPxn1Qw
-L1aYifHMB768s3DKGjvlkl+ATsmiBAAmZSYongMukS0ku7jjUfIHYxMEhCgR5iTXqauiesobjVMg
-B6hXLsaVVs6FbaOburLkaPYAoJFHFxdccMGQiZGorhWiVGWBiDFO+bLcdaZW+GHXWiJyQWn98d2H
-2+3N//UP9mapfEwkpay1SpY/lBwFH3tbVDiOwzIvkma9uS52n0eU7PWLZr97eK7Bm0bLonD9YAfr
-gtveNMn/kUzrAEBDX9cq+sBytu9GwVjXWyUlk+ySvsikqtSuNcCFEDgtLpUiuW1c9LfrGgDM6EbT
-V5W29ggAKRWin/37D7tqIZwLVc5dDEwwR0FeTEIzKrkQrNYKM4EaBzu+aLSLQTL2ebRPKiCZmhAX
-L2NbIgrOPkguBMrcOy4kkbM0EdF1c01EqZpEH1Nd72lOpzH5sFrmbdevlqmPDQAQ44SS7VqTgoBS
-HlR/andtb2n6P3778B//PvzTobp+UQcojcHWV5taAMDD4+H7R2NGt84dAKTrSP6Xr8ZfrqMS7C82
-at/59/c2OstRP07KEBRiMZ0GgvzD4Zgwn9evbyAlaQsmn+T+SXBZiMU40u6+rWQxnvlKKwGiEAsX
-mSUCId59dr/b0Xg8fWzPuwHe78eXS6ngzAEgU5moX3wc/PeP5hfX+dAeFvMoMU88ZSKDurHbHwww
-iZJnuEingcogZQ9ejgSeE2SbGh2Frh/vD58xJVgJlpS0krEkCKPgLblCK0yhylI+dB0KnlrzIo/J
-OEZERIQo224gos5S8O4iB5giAMQw/c3Pin033mj1zfvdttHIBfngIKpi9e7D/u3r2+jjg7Gn0wjB
-3RTKGqor1Rlys6+WDRElMijdkQEX3ZjYtwZRKrmAZN0kl6iiWhdpA0N0KDgFH91l9qg1aoVaoTHW
-e4oenAuI8v7Ub5oVUUge5c1aM8l8jC5GifnD6BXmm0YDF+vrOkbfBx+cH3vbdn2tC8bzTV1Imaf8
-HIrRu1iqwpOTjHMpEhLNxA+El1aYZuXlk/mzn50n17t4iQ9yUx/gpi6MJZCLBPhGmJ5tn7VWlcxO
-pxFRHk+TsVRX6jItuAgAnbHWuXbwANAOvl6uHo4Q3fgv333ed35m8h8/nd+1lBzrAHD1Yh3OcbFs
-5rwyxDuKHcW/fyx+c2A3BdwdTI1smKbf7SwAHE/jHz89vjPn0yzB+7T6X27WWkmJ+YILRHxO8WnK
-vBvnoFb37XF70+y6Y7EIM53v2/3BndMatoPLFplWgme81vp6c6sx7LMGAPhhhM7h5+749bV+VYr2
-OKU+pB8nCiFR/Q5Aofr65SZMwTu74AIlczEphDF5f62bKpktkQGTr26v3DhGH1nOVcYQcXNz86xj
-MZbiFH/2s9v3Hx6/Oxhdr5q6mumcNKQuxs7Dm9ubj4+tVjIlfU80vX21beraBWCQAwA9GWHf//5E
-8xkANnXx/u4elbTjcF3Xo+mXyMgcd4fPC8FRMOASUe670cVLZEh/al9vN9Y5rfC7fWdGJ7B0s5eS
-79suwawA4CLLKtQKJRMXTbyluq67fkzt03b7ojO2p9D3JqlusKxS4v7FfBNmAL8uJMNCIxLFdAWO
-o0llLDjPeI6CjwNJLrtupGF8cVNvt/XejG3XZytpumPi9u04AMBCcGCC/JxUbl1vGRNNXTngaSzW
-RaUVpjKxlKzbPzLJsnzCTCQ8J7Fdlpxzk6cBACQT6RBgOXdTNJYi5Ch5OgGQCwls0+ieSDKWxpvd
-aQQAyNkf9sfQ3/3NrfqrKwEAjO6tjxw1Itop5Lk8DW1diVoEC3JTAAteCYYM5mz1+5Zx1JGLr6t8
-W6vVsnDdw8/+/M8Wy8aPx3/57qJ0SCW/xqyuCmQ/TMD5sqyLLPHEu/t2W6+ShncIbNtc4hkbraos
-JPps7nfgBvLM9u1hyvi/fxleqdPPr7N16D/3vY3wE+UoxFRNThQR5sTtM8Hc7KNQKeRVTAEAPu7b
-IbAlF3O0ADCDIHIf7x4A4MO+XXBh59j1dn9//2HXcilS56OkBA9a4ZVWpjtKxmRRnCi62VeYReeN
-Jb3AL17d7A+m1krXZcoI0QUSuW4cdCHbbkgXN6WvfTcizCh4U+v9h+/fvtp+2I8ppkGySHBJSK61
-ssYiyq63m+2VeehYzojcSoklsuBdnIJWGHx8voxCspj7+PtP+22j3+9OgjMpedIdkA/VpWGYtcKq
-0tHHkSg4XynsPo8KJfnAmFBY7lsTaTREz5k8EnM7RxcZCo4ofYgJy4ecP953ACABihKvi+Luvkvr
-lfG8WS3tMDar5d2h29wsyRxZzl7drg+fO2QLckErLCokcqentA0vVc5E8oVR8In/dhAZz2tdzCCS
-b/OmLvqZ4hRuysLH+Lnr+JN3jIJ3ENPVBA9dZyyZwwE5/+9++ZMX/HgaWgD4eAKKcPVi/a+t+GpT
-I7jVsnhTTnWlvly66TTc37eVWnQURyKxEHsL/ePdq2aRcjxtLiK/3DPUP971j3dJ6XBViKaQSi7S
-RVXGkpI5cJn8t+8+7AHAj0fTttPkdu1Bydy0benTrQUEl7gdYUb31y+xKeQyjknmrHLG33f8+/b8
-rwfoQlYvABEzZInBLVWxRJbsWtFH5wIm6DN4AEiWlJFoDNCP49XmpY9RF2gs3dQFQRaJykp+zaCu
-lBCY1GyCMZhirdVyWfzDNx82a63rVfTxHC5B+J2xEuWr23Vn7Z8+fN6s9a9+9/7nb7bWubrR5nCg
-6Oui3B0M2RFR/n1gKtUGrZK3mMgpveqMzaJbIabVBkS5xJQ+eyTat2Z9rSUXsMJUxTd1MYNgOW+N
-vSx9JlnO0yW+CmWyvEjJUpB335uUepskMbWAzg7pZWTLixQCBLPkbm/qGH3b9bc3DbkokxoPID1h
-AKiV/LBriRwTkLqRjuam1vv9aX1T3+279MvGnlDyo/Wn06XtfLt9cd+NGS4EZ8b69JJRcsZySy75
-oQGgwXwc7GqZb9a6Ow2Lc56SlMg6FNzSpAsU7LKrBeN1VezbTiuUMh/7S9rS8zUCzsUTRXJhnJgZ
-XS3pV98ef94sXq9XrxtYy8Uyjn/e+MGO6dohwVxH8+sm/M2VevvV+jS0t6UHADv218p5kG03XG76
-8X4r/eP3HwGgM+NEU/KyNGWuymLBxYILmYntCgEAwiWx88urohtn3TQ/2HEBRLECXPjxmIiwdMOx
-RgAAAnliRY2gBKuQcRNYF/N/X3ZNHHS1IqLHY0xa6qVkqWbIy5XiWeSi60f8UV5IkceCQ4aLyVH9
-dCfPvjN2sHVdt93wLWcnFxPE7CB2nYGcJQHWl2u9P5hKLbHMcokyE1qhscRz/vHu8KJanH24valf
-b9YPxpoUir9eIxPvd/dvtg370fWxXW+JHJFLKUPJ7XpJ5e4MIgJeQv0BYIW4KYpP+zaVhyQ4M6PT
-yCWDIo/k4PQjMttYF3xkk3MQdweTGn07Q/c0PkoIGS5qVRI5qcqCg4vRudDdd4gcAHatuVlWLoZa
-q0sA7Y/yBjvrtELyoVILKfmHXVuqgsjFOFlyusBiVbrZcxSTo8GOy2VhRpca9OijwAvWrEoVXayL
-Mt1NlNBSACDIkm/4OPaYiavr4vmSKMnFOVgl5b41z0u81hh9TM+qaarD48Uj3o1DZyzM1hK1neFS
-/rs319/eU7nEoz8d/WmlZBOHXUc+yhqzSy8dVwDwT4fqRXEy1nWOWQcFogf5oY2IWL24/cc/fKqR
-1ZV6b2K5XCaBJwAkT2PI8PmSCp5zO4N1U728SLOS58S6qebxu4exKLAdvB+PAuR45jVmRATev9w0
-H7qYK43gahEQ8d9XFgD44zECwLdz+f2s2+NUK/lixZ6tjIgXa1g3dlyK5NVK6yZl4Dx/XdV1N/ZK
-SiK6KSoULM1kfxlDFh1jwl1yflIVCWKZw2wR5t6eGM/JBTd7VawSZ7TdNs3yCgBQSRfjl2utSqwr
-lZjgulJmmLv7z+lPB+dp9ojpakSWXmT08XK1Y61PLpKhwY5NUymN5MN+HLf10gHw6AxRo3hTV+QD
-k5IgI6IrrXa7fbquZ8GFX0wAIIEpxH529934HHjqgnfAH/tzZwcXY+qYJbtAQ69vby0550JRoVZq
-t++SLDw1IekyLMkuSUd2mG1vtcIlB3wiRiD4aiUOD6e26x0KZHAAACAASURBVE8U377czpMNU2hu
-dBozAEBJqZXojKV4ZoL5GDmKUz+nITjljp0OxzxbQc7GnvYHo6S05Jhkj8YylHgxuMjOWFWUTLDN
-WvfHC4UsGaPgqZ+J3DgxY93JRSL67cd7AmkIvsrDH+48APzDo0SUhuD37z9vCiDPptPwH952f7Xu
-/3lad8bWMioJEvOrF+umLllw51O7aq5yiR+6aEZ697lNp25T5pfbSTBHwVZKwFMCV+SiKYVpW900
-T/bd/Ld3D19eFXGcaHaZyjw4lzJ1aAYh9q1NQXHt6AbTmdH96YQTTfzFitUZS/acK3SddZlI1/jk
-Ta1d8CeKZnRKVWNPdVoRSQMsuJ2hHfzrV03aKqnuFroylshH+NHFEE+VklWZ4IJJyf1pIshU3UgI
-ZqRaZ5O7+Me/23fpjD4Hn66166zVCrvevlrX5EP0kWYf80uafqJ7OmMtuV1rNmu92+0NUQrcBICF
-4AkflDJPBwKi3HWnulI5kwCAZWW7luX8WTf2p28f4QkBOwevF4oWjFzQhbzbdzd1YShc7jbkQkKg
-+SyZYJNL/QmXYrfvsMLP4xFSHHS9Qsm9J71eP+MBCSUz1iU5Q3NdJFstX8nOWskg+kg+JD6xKHHX
-GrY4d8aqUu73nc5XCmWtVdfb5bIgck1dykxEHwN5Xa/SIflm0wBAlBJXmS6wqPD5BZB1GhGeaA0A
-QMlFMhBPkSaXQraNpWS9dzEcRrdt9C9u69++v/9mb/cHY31sWSmK1WxnJrEWPmTlT99+CUKk3ubd
-x+xDy8+TBAAVafbO0bSc21+oMwDUWv23b/VC8OjpNF66u+WPgsPSU3pRXSD/6IgFn1Y/921SQVs3
-JU6gi/MlmYrO9keSNBWp8+I3n/qmLl1gupBHXOeY88djfCmm//6KypKZwKbJKVgkL2/6dHUhdSFR
-ZkV1yScjIvKhrnX0oSnFwdCCi+gjl0LzLMIEAE0pmpvaPomrK+QJoWeCBx8BQFZlZ12cYlFrImeH
-OSn1peRLDgDw01frzlhVoFZ4tL7Wantd+BjteGRMhCmokn8en8Kop5huxGA8d7NHVaHgTKJWyCYn
-Way1ul3X1pyS571pqtt1ndyuGpGiT1abfnZ2sEWtb6+XTGJnXZIqGDvhOUJ+dgG2jf7d+12tL9de
-MMEuGszoAYBLeVXXwXkmLtyhQtn1o8JcFasUm+ViTMstATuQMtUAiNzuvtUKR9PXVeEiMMFQ8NmF
-ZHbbNjr6iAq73leSd6chhW/iKks1KDiHgkvJk6k3wcpEJNl/5eptmhxZsjO94x4I9+MBRIQHKjOB
-zLpVWVXdt283+4tNkRrJRjMyG7MxmWkW8wOkXyIzrbXUH5BpK61kWkgbLcZkM+JwOBxOs9m8JPte
-3nsr6ysBZCbCIwCEH49AuGvhyLwtYVVmlR+RgIfH8XPe93n5bHryVKzqZrmsQhjWdSO5GGQaV7xg
-zJLjMmWYhT50+12AoZBJ/BUAULfW0jAR/F9erP7tTfsH5+mPF4rJbFmwT47VLvzZzc55dmPCfhji
-w41P+nyKkJcbl5uetx7Pi2ImprYPNyZ8ClJyWNd2talX6/rT/fYsE2eZiE6u8xnGdYiCMalGOkZA
-RnSnPL2GwUURWllV+wGqKYpstiMGOEHBqA86YY6G/QDLgj8/07XZRaRcPLhzn+Cv6/CX+3IfsneN
-4MXlkyVgobPVdo2IES7w3bsVIsqThPOkvK1pWF5o13URLgIyJfJEDjA7QegDA4CW4khBIspI8ni4
-3T6v8PXrZb2u13Xz+uXS7kbnPKqMSfG77z6WCpeLqn5o4hbOJoIxAQBcplIcszSsNt3Pzp4BwFJN
-IGWx6V7IOFE+gf5cCD4IJZlzfm97JlhwoTm0hUxut+YpnJDasSpVGEKUlHamyQoVdb9bJeIWDjN0
-zj/12k1jn8IQAEArCX0cGjgXQt/TcqlBsuCCJadyZRtru71KwHkgcuTCum7iSaNUsm6aE2soVwBQ
-ab2q26iOjj8/8jgsEaJEwYJ3SaqoH2PjUjJW7w+3q/V0mkWRXBxUDRMAgHmVRSyKlFwXSmX529s1
-JrNFVeoy267vT0oh7ziKrnXIJuR7LgUysTFdYyk+XeNb/d/91/TrHf9FufvkmMqz8TjemJCr7LLE
-AhkRcaHmj0OVlQnIYNc4FIHT/vMp3bXtd82xHflCi9+tbIlQZOm6g28+PaiExaWf5+Ushacp78ik
-ZCEOW60buu57DZIXFcTsOTcAwOW8jOiaGIDChjBPR3oEPBsa88S8ub40YSTvxUS0FHiJ8MMpaWRf
-3dq8mv+i3Cl5OlggSp3p2KHrWhvPNEQUsShxd6kwZVwCgM5yhdI5H6NhUfIgZZShVrq80Nnl8nxV
-NwAgExHCMIR+pGP90Fw9P/Pt4e3tRuXKO3f0FkWiUE7ns29vbqtnZWOJiGhwqORqYwTjjKXdwCRj
-f/3p/nSPDUFKjonYmG5wJLkwrZ0iK5FF/3ukEkkGd51dLhfrzeH18llLI5MRc8CcC7pQrusW83Jt
-bNdaVWQK09iJayxdzy8AIDayjHXRoIiICmXre+Ap8sGOEIj0hAmBq5VRYXRhyGa5ue9a38cIrYXO
-bNvFvSDO2g8uRMM7olxW5c2qdt4tqyISA06FVpaVCitdAgD1gXFZ7+rLiyqEnvE0Nnyqx1Qi57xp
-bKGm5QQB4OJce9fb4xiG4JyXDJAJlXPTWiaZZMLs2uhyXK1NVkgA6EOwLVHvXQimtZgI03bo6W29
-/+//F3vfcABouwERX59Ljcybte3aROBCi/OJnY71T+cBAMae6j7NS3klQz8OKyeOXhgKWoaGuCqq
-GxPabnjYbp9AJk8qt0QlhZAAkAQXd4o9UVTjG2OiK2tP7cUcAU4oBvJ+kWUUIPTBdGOIdqJH8uyV
-DD+YdZtPt5olLzRPhvYqZxy4HCcz8v5fvnA/O5/UB5g9MrXdo73w5Vw/3XMOgIZJ6D37PWcwQbLa
-3pd6VptTQENsGsYdtMxwY7qIL2aS7buWem8b+6PXn/39ze3h0PFiev3sXKFkgucKIyL8cOgSgeHY
-/+d//Ad/+XcfJGOm25WlUigdhDcvlzerukR+lonwmIIYs0dTibFymHDRUDg594okPohyzkqFulTG
-Ou9cpDTLRMBo13VTzudZjkTu4EI84sdOnEJpuhaVjMPpeCfEpUmhD84vdOYmgogYE531iLLSuWVJ
-wYVMGYz2+nJhWitnGHUKXUv15qSn39nuTOsikTGhGgBKPgHqzrSi3r9+uYxfJiWvTVNVxXSa9d0e
-VRGZ1bpQUfsZD4jUe0vu+vr8w/YORgsAaxNx5NT7IBiL59q4f1kaslJ1O3IQpOQLrb0bGrLdjphg
-wQ+SsaaxNPavdPKTi53sLSL+2Yfjl1v2/Flpdx0ASEw/sPOrRWUcQ87bI5vLSX2AyDZU6fCXf38P
-AGUm+2OvcvlqCsUkzKaZbesykx9WDwAwlWmVp/kU01RqhWkqZ1jEFYyJPCtV1JvVu/6kGHOxoVds
-tnRdlaewpr5vXYcMjCXNT3qQMHg+Uryj/vSDsgxX9lDwMZ3m9W7g56yppvDTeXg/ij21//T5/lVS
-n4ItlIwQOYUywjxYyhZaBz9EC2w8InsiTMRyfvbu9p4Jzniq8ITNkJie5L4Ktc4AYFHNn3wF69os
-dObIW3IOwma9YSytjYUhXF9egPPXl9XNqv7bL7/9Rz99g0pG6LYlV8gkgkCo93PbBz+c6dI01u7I
-jX0YfDwcP2qZGAS33hyaLoYIAZOssaSVnF9o2+1M27mxB8wkg/W20Tojos8WGh6R9pXO4z9WK7Oo
-dEN07H0EvcSbIYT+7mC7pgUunvjiRP1yUdWmXW+bIstqswOAGNmUKc5Zz3P11N0zbZcVGJX6kgNB
-QpCkEkvE29WmtQdEPOxGAJDA7HEEAB+zkxXWpl0un3WmafxxfxhQcIXSNoeusRH1VSoslUqZEJzt
-gl/XTalnG9PpQpHtiEYuhQTmnD8QMZbWdVvpottRY2lVGwqBbHs5M//bX493e/rtx9b2IQocUok3
-q7Yhzn1v3bFUQuWZ5PDJMQD4aU4ZIkH6nzxPt0NyzpoiS3OVfXSi8dg+3Apwt7creDR2xeOsliz2
-73lfRz0zpAxhJEhyHlCwHhz8Hpn9Yo5lVfbdvqbh1aKqD3S9rO4ejPEME9mxicozn2Cl87e7TExE
-kaXP58VfvT/1dvn7MW99wmHHoXlv/J/ewFvDn6jOm4O9vNCxpy4Z2J1lgj1R6hFxikxXc0TpfP/y
-8izmuEjJqfeuPYm9JEAbEwAfX70PltyeaG06Jlnk2c8QrXMTySiE7foOJD/23pIrdLmzXXChMzvn
-obWksywrC0zEZZV9FeDgwhB6RGmsjXVFzybU+xGEbW3fEzB59fzsrCpN12qt6rtuUen7xt6uNjor
-dJHFZgsiUj92ja2mSOSEOGF2ok64f0yr10U2EZxLwVh6WWWOvOTyQmeXy4v49c73T7X7vTFaZ0+T
-k/JMI8ra+tWe7M4+HYIRMepYpeRPj2w4HWaQ9VwXagh9pUsmWG12F/NZ0/RR8VcqtM3hztLFrEgk
-l8hr0/YhLKuyOZJK2PLxaSwBkh5+rwclGE8LTCSwKNmYCBYvfr1tmo6ibA78QMPkf/y/aoQhz8uj
-n7x580bysGvMP9yaqlAA4LlwNJToiShqFrbueDdinEC9H/MDy35by28+mPu6mYveU3O7PdxuD9Ha
-UmUyVj5zOaEAZVWpoY/1PQAgAwpHP3ghFfVByNObFoXJgWEUfp5p9bY+XC/1pt4DwHVVVrnIMRx7
-DwBr0wMAiuBo+O076pJyTGbkA4//keQzv4MXye6V9gAw0ICc364218s5ACyrcmUOl8uLb26NLlVN
-w3l1HgclEy7W9TaEPkqslnr2u+9WqDKWstW2rsrZfdd7JgqVuRCyAp0brBtCGJhgM0QUiaUBUd5u
-DHChC3Vox4XOtC4b000lywrZk8tV5nzvQqDeFydpDdDYh0eAcIkYfbfIxc26u17MT7FwgodUnsRw
-p6UmWcrWtTkreJnFjq2XkoMfFlWJImGSCYFR4RzpDFyKaAMHgCg0AIA8kQUmtfUBBuddGIKxO5Wr
-6TSLjqpCoXM+L8vYzyfbETnJQDK23jYv59p1nXq8MVDwqipuN4bxlMsUExEH5wAQem+61phmvW1Q
-8tu1uTrT1gVwRwCwDTnnWzcWKnMefHBNe7y8PAcAkJP0CHYM5IY+hNk03XQU6UbxlzLByDoiOvbB
-OucgHB/T3m83NQCY3VEreb2sDvWHn1/yuZykEiWEcfsdkSOQZ8/mtg9EVAmqh9TR8MWyr+TwQnMu
-mGBOyUkPsipn07F+sdC/OE/4SOb7QyxczqeXGofBpU8OITkBAJyxGDYVN3tkEzf2LnwvAUIGxrM9
-tVk4xjS6kY4akxhDGA+xCU4GUHEYIrJif+gcDRLTvJrPptnHewOq5F88k++Nf/sh+cqIXar/z/fZ
-tgM4oaHl6u7wFHETIR/OeYUoJa9Na9uOC6kQXdddPT+TwG7MviwnAICpfJp0nv6MUzp01nd7xlLb
-EpMyLqxV3f6nv/zi3UNdKrTkor9pVTeVLol6gXJnO8EYkYvdp0Wlux0hymcLDgBnpVobo0vVh0C+
-/9mPLte1AQDTdlGR//n1giwNjni8T4YgGLu965zvY1lfKiwz+dWn9RRPKdafVnfL+eNoPQw6K7rG
-RhpcY+lqUcZ/LHVpzClO1IUQ3VgJTtgjsorIOed/f3YehwnvtuZpnSHnT4uyRCUYx1lC5HSJXUvx
-IhGx0oVMRJnhp3sz4T3ISQK9KlFKLoEpGWrTTNMs+OGpaRNngkykBSaHQ7fQWZjg9VK/u72P18wk
-11mxP+6d82TdYXTkxptVTeOxsdZ2O+DpN2+/bcPsYR/2/aFtu6tz5IJdnfEqT5Jxf/Zs/nnVc7//
-kxf8n//k8O++Tuwg74xjO/si9evaiqyomz1Bur1fA0A+xWnibrcHeBT5YCKibB4ZJI+z1YhTjyxE
-IrqoZvCY3QbwfYOo4OMnx3RVbd2xyLIcQ2d9U9eVzpPRAIALLI6JGLUl+oXGqkg+3ptk3I/HMbiO
-D107HHbg+zPRD435Fy+6//JqfF2lSk5uN/UXL5+Z1i7KDAAqXUwEX1QaABTK5QxjRoMlUrr67uNd
-taiaxhpjnRtQoEJ57L1K2BD6Qk3jqcs0nchmPe3i1DYco0+XvvrunaXBOd+HYMm9vp4znq7q9kdX
-i57c5Vx/+d0NlyKBPoRBl6rZbi8XertLAMAFn6uCy/R6OddardZGMEa9r02rSxV6b8lh3E2dL1HG
-Y/HlRRV6H/weABpLzkOpMEL9SyVNY7GQpwx3lobQP+XKqAS69qShMN2Oy5RcUFKKHrQux8FOuZAM
-nsQFUdc9kQxRro3NCnQetFblfK7yTCWMvH8515EHQ+EoGZOJQJRNO2YFXl8u3n7aLKrSmpqljIgU
-pj5BABhBSJlGCCQwUT22Zd3YX87PydbUjwDQkGUsRSaa3bHZmbWxX7y+XG3vLLnbVV1eZKaxsWq1
-5CAMlhwR+b1zgd2uNl9vAnJ+/kx/XYuXuGu7wR9F10/ikCdPTFWGpZpqbuqGX57xz7XZHWgb8O2O
-1a2F7s7RkKssneYfLOwOFOXNsd8PQmQTjzCAEJmYxMSNp6nW/+c1hBmikmnv7FOn3osKYejqbi4n
-bdcNoGK2J8KwPU5yHupmr5WUPPAJ437/u5X97oP95bUck9nrc1kg4wDwyzNV9ykAJMi2O/Y+cIhc
-QT+Y1vY+vGsOjgZLzu46CkdLFD1fzvchDApRcFai8s7BaCWD4AcJYMlNJYtdFAZDNODF6z5QQEQI
-DgAKNZUsVFWxrIpYiX5YG2Biu26qEgFAoGQpi9OlWVaQ88lU6cWz2rTz/BQtw8mdPAPGniKPiGLj
-NlNcl2q1OrVc4kOg0qUlinnUusgAoES+Nh1KTuSVypaLKkb6xCcAY8I2JCXXWX5bd5HFy1nPpajN
-7tXl4q6+UyWu64b60HYdubCoyrJIKl2s1kaX2b6xUvKYQqdQBhci9DO+P7rEEAYuBbijCzGq3mGR
-dC1xFMhFHK1ECSoiSkzJdrertcK00oXpdraxT7Zs7/ogfA8ybjp13Z5ARvmkKlQYgqUhDKe5GN27
-+UURNSam7XY7T+QkC/98uVe0m6fjm9zP0xEcaWTjZDbNqxPbq5z9dB7OM9taTFTy4aB+uy0cOeP1
-xRwn0+pTKD97fjVLYTEV93UTFfy3TR9Xf4ppPkWEoawqRFzqaVz6Ipv13T4q21wfzjKRheODpZjf
-I7MsCHWupXvkEuwO1IMT2azIMgAI3RA7pKYbPUhHgyUKTNStdTYowXQhribHV3kHAHcd8HkGv+31
-q/PdPIOqDH9H3DTMHAEADi64sfe9sw29fllFSsLVmT64EEcsjKUy5rgUSpXKkcepVqVqiGrTtG0T
-nz5r03EpAQAlbzqKWSySQUPhWTHZrGtElDJ9e7uJH95E8F3XXi50xqGxdPP2/Q/OFrGeabZbhXI8
-2LfvH0qFoz2dF5vgQh+azhE5LlPJE0Scn81QZW8/3jOeQnCpRCm5jwI45AcXdJFNJJq2AwCty4XO
-YmsSZQoAoR8e1XLSO6dKbHZH8n3s/fchmGNIB8g4rLv9CKJEvJgWfQjdwBTKdd1gomrTuuDiRtN0
-JLkMYRCcuRAWy7Mn8Ba5UOnSu/7d1iymRWPJWBeJPWRdLKh0qcoM335a12anMWE8vVwuUiZq00ou
-HAQ3OgDgUpQK230vACIWUzLGUjZ/Nmss2ceQpSGFEIY+eOfH2KG6XW0g+jYz+dmy+p++HD85tuPT
-ago7PjUhXSjYDslhV68afyUDEdUHmPHZTMm9dUdeOhokyrsWapcm475Efza11/PZXdu+Lid150zT
-7WmIe/8s/Z7iBoOPwyUlUyVTkc2aut75mNE4dGwy4WJWqikXEqAx+9GOUjAAaOo6n+LOMwqwrpsK
-U5alLNCTE0BiqhBZCtfLwid4fVnVZvdvPyUft+3P5y1Cz//Dg/zm/W3dMADY3Ek1BF0GPYGd7Y6+
-J+ePvjfdTnLZ+6ALtX3YJ8GxlAmBUvK4qYc+rNbb+bMZjT0eg87ymCAy1zkA2G6nJkmMzfGun3Dh
-ggfJS4UCc5RcIb59++knr19Y5ypdHHs/4ertai2LPPRBqdk/3K7iphgriseNUN7cGQDYtc65sFzo
-xbw0jS2VQplyKeq7baXzbmCIp2qtB1gbW+livd5PBDdtN+FqoTWR+7BaM5YuLxertUFECBYeVUwA
-4AIYY/ExTt00Np5JTtBZ6mLbZ0ihrpv52RQAJBc0Wq1VqYrWdTGAsQ9BcvHuflMqtO3pEKzkZL7Q
-t6tNY+k8U+tDq7O8KjH4IWbKW3LVYh7//OW8VJi6EM+vrie3XOq1MbrMSqXiO9xYKlLOeBqT7JHx
-KAqSicBESAYKU0tOciEYbyyFPtSmYSnf2/6F5q7r/uHddrmoNBsGR61Pdrar5PCbW3tegORwrdnN
-dv9mOnT98dtD+rrabvep6flkWh0HaZ2v5KAxaYiTY4lK8il+1xxN09kxfL6YVnmapjKd5lohIhZZ
-xiZ96EM8AOypjbqGkY5SsBc+ctL5gYIDcADxPEABeF8nKtkdKCZMM4k1DYXMrIPoy41pTi546Pu2
-GwIXdbOvdP6zJTy04V9/y/JM8DKTPzqTD/vw21p+CsU8g/vbEQAcDWHwCmVURFsiKfnBBYESBo+p
-bLrGtLZ5EkUOIXZaQipjjp1Ss1POjxQQB3Jywnh69P0XV8vG9jrLI20YYVTZ7NNqg4KXOpsI3pg9
-IpqGBGNx/lBNcTk/uzW7PvjG0urhnshFT2rs2QNA7wPwtDbtxtpFmcXEsSwNKJgxBgBEzF1VGMLw
-vIpCNxvFOefVeQiDLhSiTLL/fwH65J+SjLXjiR9YJCIuSkSsTUtEi3m5Ns2iKm/XBiWP2g0i54MI
-LpwGEb6PGeBM8KhQsO5omu7V5QUiV+U0Xl5EDzGWOgjIhW0OlS52R1c3tppNIeJniE5VX5GlTPQh
-bB/2CqUuUUq+3jZR6Na6rpCJllOWMpayHlLBmOTQEDnnqfcueBeYaewzZD/7wZs/+2qzMmSb2rhw
-u20A4KfzMFPys+dXxmGJ8G5Lf/hi9r4+MAHWHb/aXLnAknEfE0hZCrVLXWAleuuO740HgE/rbcyr
-y6eYTnOtJPT9rFTc7gFgpiQTLB4AJjL7/Xf+qwBZOIbeI4xH35eIvbNlVSGD+gDw2PBxXYcwXi6q
-m+329fL8SDUA7ImQc8k4ItatTYa2Nrva7Dg01xV7VrBZCtx2bd05AFCCOUfftvA2zGIJpAv19c06
-ojK4YKu1+cGlXq82l8vl7d2dmsi4IwIAE6zb76bT7MPaLJfP4qd+sagA4GlSKxPBeg7pcZYVIQzO
-DUyw27URKAmSxUXxJDA+9r7Us5hT1IdgGisZv607SI8weO+G+bNZGPyrV1exU0bkOiIiV2BSr9e/
-/Mmb4MLtxqhc+uCiaEJrHXXd1Oyl5Arlh1WNiEcXEE885LXpdJZzwT59vF/OF7rMT3394Jfz6olt
-KBMh5dGFwMTTzIsW+uRXtI0NfWiItFaWnDEWAFTOAWCKrDZtrOWia3HXnrqrEtjb28315WW93sb4
-AksU+iAllzKN/knBmGAsy5U9jheznGzHeFroUjKmstkQesGYRG4aGzFyEnmM6NrWnXP+wzZ6XHip
-cGMOXMjeB+f74AdLw7H3U2R9t//N33yNKC/PM4K0ylnx7BIAvtuPD12fjPufZ+1cToosbZv90AsF
-E82G33w0m8Pwrj4S0TfffRiTWdsNX31qqiJpu6E2u7+72ca9HwDmcoIwZBMfG5pS5wCQMIVsEj/N
-o+v21DZ13dR1nHZF4kM3sCkXDZHpRp0lxoVqCjMsohz6pEhwvpoiAOyIxSNBtPWS99fLIp3micDi
-2eXGVlUZfnrmAYBfalRZkU7zEuH12eT8mf7h9Ps+7efXi9o0XIp5hmUmm87pLPuwbRB5SKUqv09l
-+/p2W8zElINzQ2zqvbtZAUDU0qRpBgAh9E8nyxJVlG0xGJYLHbd8IgqQDo5a2wFAqZS1OybYcqFX
-a7Mx3eVy+ery4pu/ffv65fLt208eJAAY66pSDY4qXUDK//yv/mGxmDWNfb18ttkcAGBVN7El65wn
-SBzw2rSXj8wizvrBUdRar7b3i6psLMUkJQBQCbM0mK5zzke9XdNRa/0T1SeVcbosmWA6K1yAeMaN
-v65UyCSzO88Gd6BQ6UIXWYxUYoLlxaMnprHVYg4Amc4jaRkAOIp6UxdqGjv9fQi367rMUE0SR845
-vzyf9eQaS576um6iUM+SQ8l0dnrDAaCSqXVuF4ERzr+93UhgUePp+3CzqgHgj5a7azF82g1bd1wW
-fH/EMZnVLgWA98b7PryeJZoN70exdcflNPvaFm3vbrb7TEx+eKm/WGKpxLVmL6/OknE/9vQiT+t2
-lBx2XR9Xf5rKz84yADjXMlFJdJOHPqDkkTcei/7RjjMsRDazcGRDAIBMTN5+vM/S045D4Xjz8R4F
-i0+AOECYcmHdEB/IsUZquw4AlJzcG6vkZG36MZkB6mTcW3dsLQKAngDfHQhFuJLhq5q9CVvvmjgH
-cB643dsdKcnIuhHE5mCDI+fHs1LdrWsiV991iBhcYCy90Fm776tHGvNTzmZ8tXbnxl7ypFQYgaym
-ayXyv/nqdjrNmGRR6dXsRiaGShcC4N26vlzo27tDZH4sF1oeexp7Cv3vVvd/+JPre2Nutg0A1M1+
-bbp9Y//q728A4B/94Q/f3+2XFxpR1nXLfK9QxiCYEHqEMVoob83OOQ/giqIEAJayIYUnacN5dX7z
-sImeZiKSXNCp5SWBupyzkErqvXvUI+yahvpwuzbxevF2MAAAIABJREFUb+8haJUzwZhkfjeqnJ9Q
-cHJi2q7SebSwPQF6QxhMvXVu8NSHIbCUHVyQMlVF9v52fX19brudYOzJAy1ReteHwQuUjKVx6ffD
-pA9Bl8ru/OZwiNo7ALBuYCkT4tQ6vF5WkX1rHjG3P34mH8Liy7tj3blzLUcmk3G/3dkxmU1DV5Uz
-RKwPwAS839C5lo0xb3I/psX5M711x4lvrDvOptkhqcj7KxkqnYMQDfFvPj3safh8MT1/dipTy6qK
-SxwGH4Tquz0wEW3sOQ97asuqul3fKZkuq/On9RMpSXsi58JyKj9//vzpeDYMrtSztut0VQIA5sWm
-3rvArqvy1GwEsO4owCXjvjscAOCfvjZj725qbo7A01QWbF+F3c/m1Gb6zsqzBQDA2JOszmjsQx8u
-dFYil4nUVdlYKjN5prUqEQVflBmTLFDXWhqHk+nkdOSCUTIeJX5qkoTBOz9GLEfcigou80I+3G+R
-CcmTVd0uL3TvgmAMVVabRussy1UMaDj6PqSyzOSimruue/tpA3BKGEDOBWOzUl0vq0rr1eohHHsp
-eZnhXdcBwO3axCgY01CCk+i2YVKF0KOq2raJXv7QB61LwZjOilXdlBMV1USIyAVD5BGgIrNs0xGR
-azqSTCLKdW0E5rah19fLxtKyKulgatN2LbkQuJQRJWKJnBuSmUz7QeVJpYs4K8xV5kJYzi/qujWN
-vfyssjsbk/miT60xe50Vq00dBu+cPxy6xphKF1lZ3Lx9LyWPnR+RHm1jGU+zAgEg+MHFU1CVxXnc
-iX0dgiUXhhD80Fir2PDL2WF7e7dq7KXGrzfhQ00Iw/7QtQ+36w6A6hdZXe8HBRMAKDpjU/GnH3oU
-IVJMFEw0Jsm4T8b9cNjdbPeOhtrstutbiDqfVCLiiwsEAJ0liUp0ltDYs97OL88h9GOwUc32WZbv
-qb1cnMcSKLZ6tu54vcgA4FlWwGh3nm26jgXq+qPOkugBSHBSNzY+7V89P4sziimyiAZDziudN8TP
-9awh/n98OQ148XUttoPkV3n6IvXtyMqyeOG2f3xlPZT7R6YtPKqO3m3NQme/J+cBCcBY2tKITIBM
-C4Vf3Tyc6fJ3332MZ4NXrz4z1v1qcHvba13E71Uogx8cBCY5E0wy/uxsbhr7rt69Wuo4YHLkXl2f
-3662hcqIXHZeAMA4pERubTqFaTHJAOARpgtENNdljGbwg3/S4TSNHfduebnodrZrbCqx0sW9sWS7
-zfpWKykByHZFUUoOkarLBuecJ99fLvTmcHji5ADApu6iXAcAomV2oTMiCkPQWREnr+vaDI4QkSBR
-JRpjonwaJXOhrzC13W7cu4a8Vnlt2rhz72xnW7vabrJSRZrD/FxHbXPow4lr6/u6sSpXr17MA6Sq
-LFd1411fLeYKY56LIOdVqaQY40AAVRbhMeb2Lo4XAUBwFhF65rAzrf3PFu2vks3/8K/vPr/yj6ZE
-BwBcsP/mx8l/+8vwk3K8mk40C2+mtHXHKmdtppHzl8tnYzLTyARzr3jzIqsB4EqGwyhfPF8CnIBR
-ny+mGSIKloJNmAIAIdXeOtONUfIQlZEDnOQ9H7rdaMc9tfPL87KqYrN/Lid2N8Y7JNrTr6tys6U4
-LLvdHqJDIEsDwhh1kLXZyWy67UghusDI+3f1sUT/YrK7LPpuTD/Upzqf7/vD+4HnQr03PslYks84
-NACQIVqiKTIXWOxIZDl+WJtFpWOWW2xxCMZa3zOWSsZ+dLXkoY9XwHhqmh0AmPH7eyZm+0TAv+Qp
-DBP7qB770fXZ7bpWeWJpULnqD8PzM1np3A9eTRJESWO/vjt88fLM0oAFOudX63oZHy95Fos/6n2G
-aMlFlNWPP79sOge+d+R0pdu2s+ReLauN6T5/9coFzxABYF03MSBx9XBvjgEAyonarDeLSke5r3XH
-iAsvH71ITLAiEVwK4CIGkgIAogyhFxglq4RMOADbEACQCy+r8m2911lx9H1c9zEs4/GdAZ0Vi6qk
-0Ed4OvA0cnZLhaWerdbm6rN5uxtp17b2oJWKsnM5nFZ2CD1Kvl0bQ6lMj5KLshRxEmw8832IQ4Cm
-o8ZSTDck7236+n/+68Mshf/919193fxqkV4W/avSSRb+40No96EKu9Yn/+odD0m2asNMyfcbAoCP
-9+YwBInpnZXVBf/yntdmd7Pdv7pQ373ffvPpAQB0maXTXPKAiHH1S8WyDBVM4nMgBq1nGaZglUx1
-Vc2wsHCcYdGYLQC0vQOAsqo2h1bJtB17FDz+1+P2fDzLhIJkyoXMMicmLjghsNJ5D73kMvbZkPOX
-1eSF5haOu1FLibNpVu/sw3bLX6R+43Ljk3/yrPmbffb1VwcAmKXgPCCDA4Vj75lgZVbc3nz6bKFv
-3r2rdBHtf7pUWYGSpaVKEeXNw+Y0plTSU+wVUnSEWR+c7yUwF0IhE7LODQHSYzQ6dC31ITy70PFx
-7wdfzMSOT31wv/ri1cP9Frm4b+xqt3n16goAKl0uF/onby5NGAFge3/oiG43NSJCypbLZ5UuYmRQ
-lELQ6MiSklyh3BMJxhwNu9aViBPJdJYDP6Hg7M5e6Gy9r2dZEUIfR56Ohul8RuTA940lXWSSC1Wo
-bkcx9Tq6HVzoYUgLTExjl/NyVTcloipxbYxC6QJMuLjZ3l0sLiSDKO+JT8WqnC3K7GZVWxrquy5a
-q8EPi2oewtBYam2nSwxDkILFswSNfZzj8lyEIYQwxP1ovtDUGMZEz6Fpvj+GRXp2/Jat2TXW/t27
-ba6y//VPv33weZeUlc4lpp92w1JNN1taNXBIqodu+s1RN00LAMYn//iMXiX1P7m0ulDPz3TBD6bt
-JaZ//YF5Pnt5ufjQidu77ru7Oq7+SufIOQrGAo3BKpkWWQkAHZvE/vXTY3xHDACipq3MdFPXox0T
-nERDTL3rF5VOcCLZyR5kYQSAagrGs4MbWJYiwNH3dn9c6HJdG3xMxfWulywQ0XDYvd1lf78O9w/b
-Qk1A5lqXE5xyPoPPLxgA/JuH8pKzP7ryBQ+fdmHsiUl8okJA7DQNoSjKqIpDJUs9s+RcGJhIG0vR
-CWBaS9bpUq229YSL60kAgFk+kWPqIEjGWjce+yCSI6oMALYPe0S5XZtCYdPYV68ut51Ly2m72U7T
-rLH07GyOSk4lkxwbs391fV6bJsDw9uN9LFGi/+1XP3/dNHa5mK5WD7Vpo2YpjszcoynOkpshbkzH
-xsNnpXj36VOuEADW2wZRKpSu6xpLOivW28YYEyPAdKk+fHdHzmdlAY/IWzY4ljKd5UywUiEmQjLR
-jo5LoUqMh4eTLgWRSY4qS4Jb6DLAoHUZ/EC9j48UTCYuhOvr88bsS0SFUjIWw7S3bVSDjW5PvQ+1
-aZEL5wY/+FKhktLveiVlH4OpnY9XW5vW23D0Viv1/ePX942lD2sDAN++N6maAoDnwpjGGNMQb7uh
-7tzf18d0mutSHXa18ckP9HhnZZrKT479PxtmAgOAxrpp6H46Dz9/if/kWfNK+ysZjq2Zjoe4+n9w
-9WyWAsKAwQGAgpPIh4hCN2Th+6CJPdFFfpKdyzwDgL7bi2w2vzyfchGfAFUu1saOdIwG7lLPo+AZ
-APbUTmV6kSMBTLhAkSDinoggFXDS3bjAQAjD9NdvP6qiUoLdmf32fpMkSeJH/uGgmqbVfJy6HVPJ
-Xzxk//5GFsjiFB2oU3lWKuxDiBMxXSpyfqFLso7aXme5YEBEy6psOoonYwp9TKSaCP7rVALAw8c6
-upPii4c+rv627ZhkCfR9CFwKSNnofDTFZ8jr/UGX6uF+21j6gy+uYz3w7//2q9fXS2rHV8/P4n6Q
-SszSsGsaKZlWuULJpUCU1jldKiZ4jMqKWNL4JwSlVvYIAAJlLGDszpYKE5wY01w9P1sudBTWxtfl
-oqouMsHYdmOqqpgisyOEIVhyEnmk/MawrVKhbSiVaBob0pPm5yIrYjhaD2B347puJIN918YPXjCm
-S1Wvt971DZElF0eHtWl+8HIOAJIxdaatqWPZQ9bxlEvJN4fW+ZGJUwx9Av0pj54LlOxgKb7n3cAk
-C9T7bmcHR0s1+a++OB4P9eCoUJPPXz3/2evlq0VG7a4HOfaEMFh3FBOxdcdv14NI0rjRvFngN/vs
-N9vkTdj+SVXXByj4uN0xAEiOe+4d+QAAf/BmKXnIpziXk0xM2BCeNJ4EqYXxdHi1Lj4BApfnWgKA
-mkgA6Ppj3+1HOs6r7EkjPUUms2y9uo+954v5fD9Aoc8A4OAGZ23bdaXkcYXED5rJaApnClPo+/2h
-+6MfTH8+X302dQDwy+qog5lMOF81cF15NnbfWlkfoCE4E/0shY6o0kWCE/0Iwi4zibNktTYntxcX
-KHl0V4GcSC4s7ZFJACi4tORWppEsREcYAMgsi9nuEtgTGP/VsjJNFzWY3vXXy6q1BwAoUy5RWhpM
-Y01jvetDHw4uOAj1xlw9P3t7uxECr5/aglmWl+Wr5eLP//Yr01gBfazsJQNECSkjorbtojWkNq3k
-Uit5MZ/3Ljjnp8iiJSVu+Z8+3hO5l8vLiDaIL2RCofRMkHXbjiQX8/MyK9AYq8rpFBkyobW6WdVS
-8sHFI7IDAMBMIu8BXGCFylgaxZ44gnBdBwDbziEXlS6YiDhvWSqMw4R108W4OwFQzufr2tjfixsT
-jJnGRpSLc15gzqWMDCLn+6YdTQ8AkKUhyrpoPKYSV/b4Fx/DD5cylZiM+1+Uuz//8tsZ666vL361
-SK8WFQA4Gv5k2fzJs86MjKVQN7YhrmDS1PZF6svE/4f9s0+OfbkavuyL3xr9bQt/8fEQdT5XMigG
-ACCyWaKSkJ5GvAAQK5NMTEw3BoYjHaspMu/ujIuTrOuqBIkvnj/fU9t1FH8OQRI/l5PvEYCIomlx
-hoUdg1QKAMh5RHmzqpczrM0uLlrJgqUBhLgs8eN+dmPyNsyyZGjafez0cD6SaVg7sn/2JgWAP76y
-8wzq3RBPk5E6FlsZR9+Hwf/0p29uN3VDFOXB9caWChuzj7KWEPqeTVrv+hDc2MfaY3B0GDpERDYB
-APK9khLZxLlh27nY5XAhxPKpUNODh2bwl8tl/IwXywsAsM4Njsi6eGe/vl6oAm9u1wBwQiYhX5km
-qs0QMTiKJq94gkfEKk9U+XslQfCb7RYApOT3xiopUbLYA4lZG6vtSUBq3THJJuu6EYxNBLvQmeQS
-Ja9NS7tWMrZaPeRl6UKgdrzQGbU2lchYGqdg3c72IZwrtO4owQNAdZ7FVkz9GCFV6uxmVTMmYrJB
-PLACgKeeS8EEC33QhZJcTueF8y5ycCUDXaqVaTiK+F1qkkjJXQiSC+p9vFU+ND0A9MMkeqO+vbkl
-ooeu39lOY8Jh98c/Pvt6Ez6t60+OBWcJ0nZkf/pB/ZuHcmWsTliVcwQHAPkUYZb/xiQA0HZDVDTc
-tW0M7YrORgCQKJGBkumuOeWfA8Ce2t2BAKCsqqauL3Wus6TriHquihNiuXH7HEPbdQlTWYby0f7i
-uq5EVDINRGdat11X5amOP2c+dfYk3CLbXi+r27qbpXChsxg1He9nFKFQk7Ybblbtz6/obAG/eAYF
-Mv6mgFfavx/zOWurKWgWGs+qPI3GNsFZpQvnfAJ9KrEqy2+++Xi9nCvEKA+OIeNS8kjsIOfLYhJc
-QCVNYxWm7zmrdEH3LmrZn9YfhaMEBgCxFso5t+RikT3P5MPH+uWiuuv2m6bbbO+I6OrFXOVZqWe/
-/s3bPE1jMjMARIoYIjJIl7pcLjT1nlxwTKDgLgTn+wrTZ2fzkcnVqgYuwuBPQZ9ZFlzgKBrrrHNu
-mJSZdAFQ4WptLpcX8VKVnIzdUTAWx3zOeUsUQb8AUOkCJVutjYABAEpkxlK8YxGlI+/HJrjggCPn
-jIngXJnMrG31NI+7Rmz5S8ktOaXypxmzSqAPgUne7UiVU4XyvrGHbRulRxJ8VPATkac+3p/wmHTW
-EAU/sAhJ5zA4+vRw//Wm22zq4tllqWTXTxwNhsavt6rrJ/2x/8mr5XDYNQSaDS+m4R9/Zqlnnz2/
-ynN2Y8LNlv7daqQ+fLsePjp5e9cBwFcfH/72w/a2OQW1x8g6kc0g5cPjZ323J50lOktmWORTBICm
-rueX5xFtm2VYlhNyzHRjkWMpZwOoyPmxI1w93j3lfM7EKRY61lP7AUI3RNV0SKY1DYhoXXDOs5SX
-lVrXjcpyyYJkQWI6HHbT0NWtLZD931+Lv3oLjWeJQA4A/+odf5HsTGAf6yMAlPwUlP3U9UOUqURq
-TiePm9XWEvFMtm5ElAox4h6InEIMLhC5zuymyHate+EDigRlahpb6Di3EoIxcMfW9/NMxuLYOd8H
-3zXtbJrGOMema1er+npRocq+uTWLqtRKNmb/g8vownGvX18DF/ddv7d9BP2pEndNw1ImGYDv740B
-AMlFgpOH+y08ohBUrlyfXi6067o3P7jarptSSfA9Co6CU7OfTrMpfn+7ShZsCPGmhUfA6O1qU2ZI
-PrXkGBNlJjmilHxjHRN8UZXNdtuHUCqcYUHhaOptpQvTtdX8jElGDlSB940FACYVBoj5fG9vN5gX
-grHaNHKGqGTX2GiC6Vo6KxVHERwhytaNusiInOu6TOVP/juVK0uOrIvmBAAgsvPz8puPe5XyPlUA
-sGpAY9IRAcAbxaDvf3SlDy7MzxYS00xMdgf6cFCXef9isrsz7lqzpcaX1YRP+rZ3LxZ6qVFMxH3X
-n2ViHI5x9cf1rWQKg58vTu6c6/nsw7aOu/W5lpt6H5WeW3cUUnUdNc2xVDLBSbsjlqWv5zjSMcGJ
-SqCsnp2eHl0ruVAybbuuKErrhlkKupgAwCyFSIL4uN0Q0Qnxy6XkAvygELkUjgaf4Dlrfnw9d0n+
-cvnsF6/KRMi6tTxeYoxnyjn9xUNWJAEAJKYsZbpQUvKFzta1WSzP7uq7TOXxffed89TXpr1d1YNg
-nnqFs5F267ohokznZ1qfHFU8JTcAQE8OlbTONUSLSneNjZ49LhgTTGJSItrjKFnQunj7fvvzNy9+
-/bu3zg3zTFazKaLcbszWjqaxjKd3202cuJ2VCpX84vVzABhBlAo3HQEXP319vVobJthuNzImkuD6
-EJbnJ+5s6KHIsu8+3KI8xUxEXzIA7A9DrP1iQAYiKsYGR7GEA4CVOSCi80MIQx/Cy8v58qL6dLOK
-ObuxTYTlLPSBQo9TTbYjFwRji7m+XW2kTBGld/0pxI7IsnTnPaJ8dXlBu5ZLsZyXpqFYAsVraIgg
-OLJxvAuFTGJe3WPYuPt+AmhPhrWIR798cVmb3XQylOgji/NwTA2Nepq/SHZ/23gQwrT23e3am7Wj
-4cv1fj/A7EgzJaspUB8QcVGp2uwMSZ9g7g+32+bbD7dnmbjv+qlMoyINEas8TXACKS/4GI1dN9s9
-APDdXaKSO+N0lsR9ZFnp3lkXAIR3gcXY6UJmtzXJLJs8eqcAYIosIpJO27FkSqY+weZ4inUrZGYs
-PZ9fIOLGdDHUgrO+zOSJ1wbARyrKGey7ZQ7PfP0fP7F3nWJ+4NsOPjnGpDINGyez3YH4KXYSIjgt
-QiERkbF0BPHk4VAlrta1QvlyruvNQaE0dteSVyVqXa5WJnLJtyrWtcc4/YkpvykTSTaJyeZxY/au
-dzRWuri5XVfT4uPdKmZuPzvXhUxibiQAqEJ19ybJJsEP43CKprzd1LpUv/m7b21DRG5juleXCzf2
-q9X6elk557M0zJ/NRial5G/fb19dXvQ9oZLzKrM0rJtuoadR101ECU4YDLEEBwCVMCJKskkq0XQt
-ANSmVXLSWCpU1uyO3vXvt4bxVOtSAjPGyiFUumgsMcFKRDoY5zxK1oew3hqWcgm+sXR5oWOFGoZT
-GJFCSb6P/aWj711wpcolY4ioJgkAAJOLqiQXygxbNx4f8RN5qeKxod4fnPMR+E7kdrb7F//FH67q
-tt6NElPNhpdT0KV6kw9VOWts/9cP0B4ZADBHVSa3AXWpKp1zLMfJbLTjx4aDENSHVeMZlxcZVAX7
-cr2PiV1R6Ti3fZrK6/mMBQKAkY4s0CGcjF31bij46PPz0Y7nWgqQAJBEdjmAZEAOYiQmALSuW1Ql
-Cn70ffmYMQUAyAAlj3dObEnxkQqZlZLfNr3ENCopXWDsEUsTUmnqhtx4cOEscjH2ux8uCGHIxOR8
-Ym/XdeApP8hcYxKcHSezb3f8n730D4e83g2OBue8dU5w9oRCQMkDnXyDElgkuTLBYuQRMhHC4Ggk
-cgzlRYbWHV+TI3JZoQZHTLLg/MAED4+tIQ7O+UoXLgTBeENUqIzGfppmMX7H9y5KOD/dG12qm7cf
-n//g6rDdA0Bdt70PZ5kg78+j3yUFS7Rc6NvVRiai9bBe3V8vq1uzA4DBkXO+KktLrvt/qXqTJleS
-JE1MzRxupuaAb4gFiJdvy6ylq6t6mjM9LWQfyMMIKcIzfyH/AXmiCK8UzkwLKT1kTXZVd1V1VuZb
-I4CIePAFgJuaOdxsDoqIzMEpMyJeAAHYovrpt9hA1u2aoSyVc2HbtF+/Xne7nUjlVX3lKDCbH3W0
-UxTaHHcHIdKO6O3N6mGw6woBgOzAppyvltXmy2NWGnJhdCRzHHq6ztCSsz3VN2va916JGMYZt0wm
-10KImeLoYpFK9jpv2t65UJXoJj+TSgu9bR46S4ehB4CqMJz+woRzvu6UEJaIHWgwUbaz3A03LN9b
-1WJ2+v793c3VvGn3Adyr2v58vgvgTj6sK7yp8Ff1DABgkW0HmM3rwwm3rS8x3DoxiNldSy90RCW0
-jC7A/QBdY+92xylNUzy7N7N7pMoWTBYCAAMzPxwSk3RN83X9o80tAGR1Fn3MZQxmAQDkgvdERM/U
-+ptXy+jDTKq73lU3VwBwpCiUAB/mBgHgGJzOMtbRf7H0yxeFi4ACXPDR2abt+PYgclVd1mU2U3Jv
-h3Se91n172+r+wH+0JyqwvzyRQ4A0uiZiHRV6dv9uDawi2fE6jmE7OFov/nmWieKwqHKcoqh7Wxp
-kMcuQ09oMmb8V1VGLmhMbD9odWIZJACUmV5eLCZQzA+JwUmtD8fRx8AhhJYcd35VaQym5KfjyKm9
-h69fr8sqq0ojvAQAnWXXdYbsUgQQvHscvNEzz1QIcl+/Wdue6qrgToAgseSY+ZxqpOhZYyWUrOry
-/baVQtOxXWaohKB4WtVljKNC3VlWAFcAoEWk4G3bcHJZLkVWlgDQdjY6t1xVX46dTlRhMhf8ZVVF
-H8cUtq0tDXoFKp7efRkKqQ3iNM4AoLdHF2OpkFPD+ANrt19WdVmWMyGUJedcFFogYoSRCTM8xy0N
-9nZIhXLMEToHtp5Kg9v9oyXHaeFuct89uKVJxs8/fLPCP7zffb2u+rj4csw/NqYsiw93WwqhIxj8
-qe393cOAiF/l8dVs/7cXLlOnV5WchB4TefDHLJ7eXmerSk2ePj0Ol5m6yNI604z5pJi+yFM2J+Q2
-AAASk0x2SkySIvYh4R3C3xJKKG1gjFVdH5/ohgAwDKQUbratULIqMqHEdY4mEY+dnRsEJV+uVwBw
-MS9Z6PO8RDkzhnwQ2lQmF6kkH9khaujp5MNzoJgI7k0NX12UOca6SAoUEnVsXLrbdqzP/+3Hw86d
-+A+zzgGAEmL35bDddQBKa/mnHz6tliUbFXLvy4eTCw6mGfDUpsion1bXcwDoonAu2tNET0WFEsI6
-Z4QYesdh5c8RdBqEpRERmY3PQNN//ud3dJiiCtU8dwHumwEAyEUh0/7kgVMo42l0pBNl9/bNm6t3
-d/fVPN+2tiqNRAWYcRMcXWz7gZ2T26Z7s6rMLGlozMvSx8gYQmept8fo4/Ji0VoHADWmzoX1zQ0A
-7O6P5EPTDW1n67pAREuUZ0W326GYxehddFrL6OMcz7QzFyOXf2Wmm6bnDBjOluQeaXSEERKcETkt
-VNP267osnxBbLZR1oz1NSghE3bSdAjjNRi1TLUFqZRD7c9Gv79uhta4b+o+P45tvvvndu8fve9h0
-sKqU0OZVJQ/+SBEerfy6RkfjprUPBwKAdSHelu5CHlJzgLy8yFTX9bPQFVlayni7HzftsWn3bGX1
-rOjlV7hIYedOCc544FVkWXMYy2o5+NMCi4cDTXYqZ9HolAcCJzdkGRJZAJjoxAZkWiqh0XuqqhIR
-TQJmprfbvZ3iy1U10YlcMKh1lnXtAE+e6cykQC0IkrOeJHq+VHm9lZmeKck5MR/b8N99c6ZYF3Ky
-PQGANO70Ktm/vVn8ZhktnHajJh9HGvthTIVyk3fBx+jrqmDz7jdvv9ruOib99pNjQqVzgVzU6bml
-Ix+EEklq+mEsRYTJnglt1rkYBxcqU9gYq9KwJK+uCg6jtt0BAIJzUmtIDPlQ12VdFW9eLW13bI/7
-dV2+vqk7Sy76VZlF/2OZmGqMYXx3uwWAKstjGFeVuZ4X7JPMg7CqNFWRkXVsXdoPw3EcnmdP0h46
-SzpRKGaW6HActYiXmeI3FwD64ES0IpVLk9RV8e72HlFvNq2lsVwu26EvDfY2SFTW7i+rqh32Wqh1
-XZ7D9lxk7zfnRhRKoT49TbLhLKyJAGCyBbPW6Ek8tFxdB+eEEtwPeAA6TADgAgw9IeovnHpmHZ9Z
-1kFRVt2n72o9lrWxPgKA7ZqPbeidAqn/8H6XqZmc6L//VZWmel2IpZ4tTtSHpLf4/efu23edBG0d
-jMf9Qyxf5On9Zvds5pOmOiT4Y0xdqhFxotNkJzbFYPw+LzUAvFkuAKA7CQCgeCpyZNEjTV4vMMGZ
-94SIQsnHti2KUoyOiJojXZVlNHMASMDftfu2s9dVBk/+fKgEC7IZ6Soz9nfSHlJmE1ZZnpdlNzgi
-cjQ6GtfVnIvh3/2wAQChjQctk9NhzNdB1UvRF4b+3Y283x2W1k+exugBoOlICNW0/etlhYht262W
-ZVViZwmlAoCZ5owt0w57IhL6nFMNAEWW/k7JebuiAAAgAElEQVRIgoRJDaypTdKTC46LFo7uoeiF
-Ej6GenUJAHVpmnb/Zr3qm0e2F89Kc98OLJbtLCnUq6q05JjrJ1KJYjY6Ou6nr9/c3Df7pnkwqEGq
-D7u2rBYwxs7Sr9/ebLat1GroKc3lv7zfFlm2+dDcVPndtrXkljdXWks3eYonqRVnvTwO3sXAnkDK
-AwAg6iFAVZq2syUKRO3cyLkv29Ze15kG8aE5cmINB1Cz88pApLV0LqDQMXrXHxgFGh2RD0KkTOJg
-JpVBHcdzdm/wzsdoe9vT1BFFFwottU45nYB8mCnB4Fs30NrM/s2/+evd7Q97O/zlQhh0X780jsaf
-LWfb1udl1VJ8fVHs5fwwwsd7MnlGkCanw3dH/PZd99v39mqBdaYDOERM5zkE908PI+cl3yznZZUj
-IpvG8mMcHYwhwdngT6hElSUUYXf3sMBC+mbwp3oO7z4/AkDTWQRorQWAdV21HS0QC50BgJaKgaCY
-as1BqE+pQhOdvn5z4yG2nUUlt00rlJyEvn9otQBQio8ndpa3dNBSDUQxjkTOnk1AUjlRP3RZYRZG
-/8WL6vZ42jaWiOQ+YAq2a5o/H4rXSdhr9Xqd74xKFBIRuUBETdutluWn4zEVar286jorhGLpEyLO
-pHmzrretXdVLn4prbpelun1sAeBViOQnfIohYcdtrgFQKstmbzSJ0QU3Rv+jEOHNOv/Sn4QWUquh
-s9bu67pggycA4FpFC3mZKetOFE9HimP0oyMtxHq9AoB3t9tVlYE7/eoXN+5ArbU8HM0KHPfh+rrs
-h+FnP/tqGHmCoWdSsegRALSQVVVs2iO/mKh1jCO/ciKXSRi6ftP0HUUiZ4d9Q+NqWRE5AWnb2RW7
-3JCrKtO0jwBnhaVzgas+ABDqXMKKVFLwZxKb8zGOzoUYR6aa8s9YGpfXFQCUiEJLcvG+2aNKnAsQ
-xqbr4hi2jcWy+pLc/OHv/8O6hBc6djH5zcUIjr4uZ992+TJ1MyVbFzvrPzUkpHZBWHeaksX3PbQU
-60y//OqF8xER+7jYtgQAdy1xaBeD/RpTYKPIMSye+9tUcqOCAtphes53Cuoc5s5636esIHh1Xbzb
-NogaEbumywojlDBFRuR8jJmR7DbLf/7GnnSiGANARA9p9CGJTuv8i6UKE5SqRGTbEdtZHkHw5yi1
-mkll9KyaQdPHpqNCThSCgdk8r4/DINuYTna6dSIxyS4W+869b2OK6eSpG1yZISLWVbn9cq+EHKN3
-bk+TLw1umg6fwFrywaAmO1xnBgD4ZDKY5ib7KAVwbATHqEyeywBLo1CizLCsFtGDUuhjbAceikUA
-aIehPR7qxXzo9uf+D82z0hKNNqh5f6+ruR7j2zdLHs2i0f/vP/1RzNR6WTI42HZ2sBzBQuv1xe2H
-zdvXy9vNOWIsS+McBQVvclMatHtbGlVm+tPnL3W5AACWrjMeT+7EY8GsLIioRKETZbIcAD7c7QCg
-qrIYxyrLXfQGtaOghTbZIhfAx7kP0RJV9fI5lC6OgYiUEKNK+ZNzMQqRImoK3qBGJemJlcRAWU9E
-5Fxw7CDkXOwG98sX1Qv7uf/87c6d7nd060Qfkh+aJfvdJ9Ph6qJ6PMAvrrO8XiI4LeJAZPcuHTff
-FPC3Fy4vq9Ee20mgErnJWorjcc+VD0tb0nmOUiJiVZhsFphOk6Y6i6dnDXtZLVrrVLZIcNY1TWKS
-oOq+fayypMaUeKZhfV5WvL7LujSoiZzth7oq9Mk3NpztNoQEgLWZiVTEOLad7WkKzvNZ8CTDQFMk
-HRFz1w9E19V8pJHfwFU1nylp90N7gp/PCcH+fid+eHC3+/GP//LdZabk/3DRvd8dyIt/eEe/3wnQ
-+O9uZN4cmQ0qUhGdJSLrIqKsq2KwoZrnnSWDWolzHaZBRB/RZJ0lB3DzasmvbG+HVyFykDW/XLY2
-cC4YPNMZUMzaYV9meWGQaT+QCufGn/3sKy1iczjyVkZEhVqN0ZRohCDrOAPrcfAG8f2X3X0zxDA+
-tlbr9F//5S/bfc/iBE7edcFH5xGxaw8OoK5LLWJZLZrDETDLy9K5EMcolNhs2/k82+w6AOAafabk
-Yp4G56VWraXSIJPSSqM7ioehb4d9jSkAREfqaQ71sG34j0XUdji4CJUCoWUcowueU9d5U6Uaq7qK
-PpYGo49Mh2b9MV+SxuTOBUvOBV8icgwzAMTTzJI7+dBaizAZxP/t20cA2PTxMELT7g/WfWzDQ+v2
-cl6Ig9AmHTfT1B/3zXpV/+xS/fUF/OxSKakBYJot8nCslNcyTkLvHreCDmxjyLJGjSnCiCLWpeke
-GgB4vgEGMRv8iemfXXtmDEx0erb6EcUVsLs/QI1pv6dlpk05r7Jcmzlve0aENgd6s6o5ZvN8+7lR
-C6GlMuX8uspc9DH6SWgiN9EJBTStdQF0ogxiXhrukqsy46AQADB5ls7zfVqdZPmbZfzZxfh+RzfL
-OQDI3V786zoiuFWlOpJZPF1kx3g9584pjtFkuSW3aY+Vyd/d3pvCxOjZGtHHWNeFc6MpkYI3mC4v
-Lw1i8zC0neXZzcenG9+5cI5jkSkAKC3azroAGiW5KdEanowkYIxap9NwYsU9H+pCpL09CiWji223
-FzNVVznDiBxSLbwjcinY3g5DT0oIeLpDP+zaeo4mN2ebk2GQM3RRaKksjVpCdI72vcmToeuPAXZf
-Dl+/Wbv+wGzQyugvd42LsTDJ/W7nY9QCDGoXhRZiopNBbPa+s5RlONMiOqqv55dVJVH5GKOPdVW0
-nW32ProgUmHJaZ0Odv8siifONSL3LNvViTr3xKjPGjEAjleLMLbWRh9pOhG50VF0fmNPd5vNysBV
-QusKTVa8vlk9nmqU8pjUezskSjfdYUzX+6m6XuimO1zM99/3cPBHgnSaLQZ/unVif6T73eF3P2yO
-k36u+88ublIiIqQShK5/rH7ACABHzv9IezYCOK16shMATHbKZdwHUeeqNKqhUSnMECMNmCcGZ1oq
-MboFIujZm4urtrN8GJE7AdvFJQAAvLWii+Tiwig+aIQSRLSqMjf5HzZfiCIippgyLYJPz5lUHcmx
-awHgY3N0Nq6WJddp8t1exCT7dSk7ktHTD93p/777CWVy8mJ2MqgrTNBoAGAgJbpYGmR/baZzntu1
-wbXt4EMsDXKOw6sQedzjgtcyNajZmo/F7/wsqJMYzzN/vgHIDp6978jWdWEybIdzIgbWiS4WkJya
-bfOyZMst0Xb21Zs1EV2uXgydratic9/crK+3Tedi1EIUOV9oki+iT5+/oI4mTmQHVLKjYCdQYwpS
-LYxaXiyIHNdjvxTw2FlII5Ez6YItN9AUiLoympkIuYDLq8ySUwoPnc0yLEzWWeKEuazApu1NLltL
-ZbXwtDeonRsZDwWAU/DuJ2prS67AxIeohdi0XZUVzPi3vWVvOdvZg/X3x77pDpboqoBjgLuHY2rK
-vNTf92BSl832D51NpsP9wX36fAsAnXXg/b7Zjfb42/fNtvXv7Dqd5/94F15V8vfbw7efewCwAnV1
-ua4M1/2XmWKSDypRFYaL+DmK5KcRuU+PBRaJSQ7Ua9R323OFyXugHaaJThRPnfU1ppw47yIImQqV
-ai3dTCHii8uqHfZCCZGOd/ct6vNkTSzODhdEjj1Ezvl/kJzcAEzOR8EGo/wIPnJlxf/7QnTtCVov
-AeCbAhCcT42FmXybxzYkVQaBunUhvi5nr8zZJwsA4hisA26FtU61BC1g2w51XXB2Wlkt+MPjF4So
-NcoYRy7WGay927UAkJ6i1ilLRk4+IuLggkE9n2d32xYRmbMBAGV2ZnoaxBhGso7Gs42uD1GEdN9Z
-LdNnbnNpDNmeyB2I+Min6YCId5t76g6srnIRwhiKRPFrfrGaN/2kq3ymBfmQgOeRttH6YP00WiFS
-fu/+FOGyNGypUCq8bw78FLYnhKntbVUaF+FIkVO+F6VpjoRi1rZtlRUAnpFKNcbnfOXSYAyjC55R
-rJlUTduzZZ11DqViQyFLbl2Vm+Pj48MglOgnf3+01jnyYfaEs7koRjAfty2CG233aOWUFo1LEZE1
-X/O8frMuAGCRAADME/cX1/2vXpV/sTaVprpIXn71AgD++m15UyqU0voogrvd7gDgF6s5R9aB1JVB
-owURYaInOiXCDCf5U/MErcSB+kJOCyyyWWAMtJ4DALANhHVj9JEcTzyoLsvoYzeQRulc0CevpZqG
-09OcRBPR5qmaKjP0MW6aDlEz27JrW5OAax4vVy+a+9bHqIUWMsUnFqOPsWn7Z45gWSy++ap8C3cL
-NQeAZnBEhIjyz97Ucf9//NkuUkAB9Ryq8gyuI+pucJU5M+yb7Y4HtyVKF0Y0erUs+VbSIPgGqMqM
-bYKcC5MLFEIpYm4yDjc/b2IfZkqYWTJ7ApLbp0BfPua7zvKPVqVBqdDoae+ESD2dB2daS7aC4owQ
-FzwIxb2pixG1qLLiMPRVVTo1A4DoY1Uv322a5XXlY1wvr+62rdEzFHLch6rIUo1xDJ82W+vcwqgk
-NZ7277c/EV8DBB/jE4ODyFHwBAkqqXlTZRoAVnU5k+bdplleLJ6i5lU/OSJnqiUikh3cMDg4F7hc
-ArGll9RqO/QA4FPYNJ3WMjunrS1nSjgXdKJQJ11nx5mw+4HcZPTsqxr/+d2mKtT97nDX0raxdZ4A
-QNPH07GpMDkcB5SyEmMpIyj1P/1V1nTiXy37fGy/qUdHLk9a2Hcf2/DNV+VVAcvUtW1vp8g8cwBA
-Ea8K4Gbv5brmARYzebgO4nLI+TjZqTmeHZ4TYdjdn8dhAGB0KpRADalGTjFcr2stBMN6mBcueK8E
-xx5TPwGAiWfpcAyj1lKNUch0XghEPSlT5Bhm8zgGF8E6V2W5mJ1KU4A+VxzMSmRng3/uEth3Rbk4
-+OM0WyTFmkmfcn+k3x/wm9dVOs+/yPo/3iZfjjnv7DLDMtMuBiFS8pGzdztLLkJhsm4gsm5VV1rL
-95umQMkG/7xAtZaMo//wrCqWqXOjc4F1fWwkeg4dejrLqyx3biyeSv84BlOaqsx8jFrLjmw30NDt
-tQAfY0dUlhUACJGuq0Vn6Xpe2L1luvxEp+jjdYaIetu2RsebKlNC3G/vKfj5PAMAUKEP5/iPqsiu
-6isA4L7i8WEonyadYQxtZ1FLB7HIss7SelVF55jtV19lDNTw3DfSwPZVywwh+N6eLyUOdFktqwRn
-gTyb87BrQ6qxs0T7/nVdbXfddWZQqs6SArDkejuU5lwBDr0FgKEnCsHa/n/5K/+7P91+XWNusn/7
-q8u6yud5XcNo9Ozna/3ztc4xlhhainmpD/PK0fjtbSjL4uNQ/36P/9cPyed7q0WEvCzE4WMbvn3X
-fXocDjTeLOccWbdIAdGwpwOKGWOdZbVgJs9PH1qJxCSVnIxOWQJfVVVzhEzNuqZhFTyTebQAF3xV
-mAhpZ+nZiTX6cDPnraJjHN1TaDabHL7fNEmOgXw4RibCgNCQiv7kow88ctFS+xjJDosUhp6IHB+L
-MyUDdR+n/Nsub+T6/9+O0dtDkhGRzPPSBfGHD9aM/tVsX2LYyznrzdzkXQBLowv+5irraQIAIZRO
-VNvsikRXpdk2rXOBPQ4AwBIxwL/vOjVPAYAlkfY0idnJhZHbBvZHEUrYvT0eB+YycFPhwjg+9Vci
-lduma+6PnH1E1j0nuZ/FH27kJ6UYoovd0FdFttm2bDPoY2RCTolYINLkTDlPNaIWuy8H1JF1o9Qd
-2s6aBDZNB8EvM33c7yAV61XNMa/jDN68uZA6JeuOwSshDOqOAtBQVaUeUwDYNu16XbkYBWZawO3n
-x1Rj54LwDgC2m0cKPtV43x4XWSGUiGNELRgfOwUfnI+p7ogQNRdjHGnqY2zarrMkROomhqFsa92U
-LE6j/l//wwRKfZF1MMudfDElCwD4Q3OKzgLAP7yjj20A71HFf/+H1rjT37yYxZMqhtZFUWQpSvn6
-ZsXm5u+b2LR7tjHk4BYAMPpc/RudopgxGROeIsyyWWDXBgDI1IzjLdqQSN/wkc+3BHcLPAfo2h05
-OBBpqWIcAYCHu0qKslo4gJCO0UfWEpXL5fumu8zUprNosjLDCOOL9TXNBPV+YRQHLUdHf3rcFjop
-Dc5RMGCQznOhzsyRvR20iIsUxuP+uG8OxwERF/PsKpvKDOVv3zca05iozYQfT3lusk8NRVzYJ5ZB
-ZXT00bqImHB1dRh6k+Uu+LazaLSLZ/Omrj2glnCgztIEyh9HlJKpgsG56KMCGPacky4AIPoolUYl
-RCqdG7dNx7UQ+0817R5RXxnEQrng22EvtOS9EbXmSpEJWHGM3p8PWu6k7z486iyj4OcotFRSaya1
-8zEMY9oOfWUMB/1iuXDNI9uNdO2hLg0dhFQC3KgxvcxUcJ56l/pRCXFZVay9embnCiVauy/nBVln
-UJdGsWizqgwR5WXZWapWF3VdJt5qnRLRalnFMD7VUzCTSiiIPkYXUctnAx9LzjqXlXnbW0uODpOl
-sWn7kw//9k2xt8PfvJhVmLy6TPuulXb36jJNpkM4RaPhu437b9+6Wo91LmQ4/MXaJCb5/25PFMXf
-t+bShN8sIwSXRPePHwgARhrvdke2MUwxBaXSVHMlym9ygjOWQ1SGVS+irGt2bXhe5ecL8yncrqzr
-eg6Tneo5tMNk3bgnUWl4fBg6IiHSfWc9QKXnWY5de0Al5QyFEt1TScxSh7o0ZAcfIlG43dyvKuzd
-EMO4qsuXpWo6a9AY1P3kjhQtOR9jhUnbW+fCsyHI1QKrGVxn8HaVvazx8cvuDx87F0DeXNWNR61x
-t7fHMXpZ3D00wxjNU4HOn7FBbNsBEedFojAn6xjTfGLaOCFTF2NnyU6gtSxR2tNEISytTzV21gOA
-kKmbfC4l3wBMbfBClUYH8lKn11U2dJZ8YJgVperd5Nw4jbM4hkIqJYWA1JNzwd993JV1CQA0nQYb
-fIxCayWElucROnNU95MrDZKlo4vEdWHwKNW2aderygPEMbCyTksAzEQqabJcbADA4+A761CnQuu2
-s7YfOAWDN3CV5Z0lLZTJjRKCqykiZ8k9bBtLDlECQNtZSyPmGdnhFDxXvdWTtfApeCGUC97HqBMV
-nBcyZcAnFWq37Yg5npMnouVVuTDqP73vp2Tx+51oabrdNo9fdr/7YfPxcXxbz4XC9w1EqUa7aFw6
-eTefX9sx/diGVYUUQjjFj2348+5EPgbXxeC+39Iz4gk/QfevKk2QWjcmOHtWqFAELSD62Oz91QIB
-YPAnXuUA0PUH+MmjD0k9h6Bq6Rs/HFqa7vdU58oNQ4yj1vJu0/CRx0g3v6sw2TjGVPyoiUGp7J7Y
-K8AF4NPKBcfhD1pA0/bpCAwlA8AkNCqppDj5YPRMyPThQG8q87PlLDo72u7yYmlSocBJoUxhZm3X
-ravy7+bdxenup3+AltBax/hMVWV32+aiLr88tBR98fSOlBl2lrROiVyVFWzhBE/f/dOPdDVwYYxj
-6Cx1HXXtUF3nzKmWWhnU6UloqXyMbnKretkfvHVO61TrdKaEEMoUiQ/xbvOgUAstv3697sIEACcf
-MiPf3d0b1O/ffRZKCJGur2siOlJEoztLAhwAqDHuu25dl2ewiCi6cAqemZisdItjaDtCRIpnaBIR
-UUktzmMtF7wlNzpqLUF6er2syPbM21FCzOfZ6MjHyM4o5wMSPNmhnhcAkGrcDoeqNG13lhbNpIrR
-I+oIow+RWYMdhWFPMyV8DFz2kJ9mUpUisi9TMh3ME0p4ebF8+dWLw3H49nNLRH/x8sqf/M6dEMYH
-q/d26Kzvh3HTB0cjop6SxVWlQak+LoTUPOtlvJ8fFSYAcLAOYTQ6PTwfyfGEAlwEoUSdK6Y58AQg
-2kn6BgAY8LmuF9aNk51+eiEgjNc5EiTXy+X5iSoDJvExXFdzAGjbXmaaD/6L0nD0dze4F19d8gFK
-wUcfUarOuiorsjRytAyrNQCgrorO2iQ6F6Ob/ExJZiK+WS7akPQhcVG0XgHAm3XhQctr2QLATYkK
-Z//oq88HsVqtxtG7wD4TyGh3mem7TbOsys2HZnk5jy5yntfQE5ud8IPTJozW8BN36IVRtjsiai3P
-DjNFngCAcyP5EKLTQjZtL1IhlQCA9ARkBxXAPCkKNk1XaGmdCN4BwMtltbk/3G3ueR0n0cVUMzYs
-izkrHvkfzlEM7d46R2DmWnTW5WVpyf3p/QeN2os0Rv9T9R1Ed1NnUisU8Pbm+qdnAaJu2642knzQ
-QqQac4zlzGyaDk3B/L/ooz1NDHT6M3GI2Kkm+liWhrcE82fBB/PEaK/qJfNKzmFeBolIpGJz3wY3
-KiGa7lAp+O6u/T9/++FZrFzDOB73Hcl5HE7H5mWNgFWF4lN3GqaUIO0ICHQ/jELhPK9bFweZuyBO
-x+YfP5CjcTzuf4r3sw/Pc2C1dWf2zqI0fEycn3eO1sVn/rONMNkplpeiuGpPwP3ufXNgTcyBeoBz
-mAVI7ay1RHxFExF/wKUxEVKmsobBWaIsx7J4KqtkevvYai3KfFZl+aI0DEtqLTf29MP2sF6vYhx9
-iOe3lzwi7rtOJ4rNcQGA9T17EnY/dIM7HAe7d4IO8ttbknRgzLhSQURfmNn1QmsJLvgzW5OcG5iM
-eebfd5aUEN104JkOAHCByIeTUEJoHeKz/c8ZROPHcT9pIRxEN0YI4zzN1qvqjP4KpVHuBrdaV03b
-CyX4l6/rch/O7iadpdYdYxjr5eV5kfnIKhAiJ7zDJ//aprN5WZILqVBkGyHTniZE2Xa2vKyeS3Dn
-4gL5/VQgdFGUQ09C43y5OGuCk9nTHsAQFQBIrciFi+X6/RceDAsXI5HLChzabn1dv7u7v66z+24o
-TbFtOsbBzqF0zGuqFhTPMOhMSdsdm7arTG60BvDWOZpOm20LANv2uBtc2/v/+IF+flMh4mSWxzEC
-wM6dZHGzmGcmzwj03g7zVMiJ5lNjUvmqkgS6bVs1U7xnrqpFYWYva9SYCoUD0TPTAQDSec4M50oL
-IsrU7KrSTDZm8Geik3WR/RqMFhcGudkdR8exjbmM1QwSnLEvBitg+Ge4QCKiaMzRRUbPLTlEnI62
-7WyipUiFPU3k4npZ3m3bqq6GUbDqkk8KIdN22M+kcTGefBBCGdpXmPSWpFZN279Z17v7FlEBwGVV
-dQNJJZgnj1Jm8UREVhSXF8vFPLsppIWZvF7oosgOx+Ffqfbjtp3MMrG728ed9ZHZ9i4G8qFaXXAc
-p4/nyHeJSo0psB+6SDuyALBclT7GYU/Ohe7+DGMpITzLKcMIADMluGTiX344jmfCBmo7Hc6jOw8A
-wKUXh2U8i3RX9Y9hoLwhU42lQdSy7Ye8LNveaqmEEjKV/JszLYni3a5dXc+JiOUHwCXZmeGMf3y3
-uT/2q2W5bTqhxBzFNJwd/OKT9orv2VWZsbFz23Rv1rWlPbuTnyPoQLZtF324b4aCQd7KHCmack7k
-UAugAQBYWcq/n1cnIrZ2DwD7zo6zqEW0RM2xtzR+d9eubl7Xir67a8tMH46D7Ztt6wnS/svdvtk1
-DzsAyE1WqWAF3vmciL7buBLDX329vrma/+rNsrenD5svyXR46GxdLojop5VPnadVIhAxnyNFQAGD
-P810dt4ST5nVRouGRpNA01kDybNT1VL/GCqVy5jFE4/Mny2xiuqyaxpUQkudRFdkWfTBlPPoYyKV
-1nJyIY6xafdVic7FdV3O59lucADgJpcKhYi2o7ouDKbOhZerioiCWSBiYbBp+1Vlepo4A5epWWWG
-+33g06el+EN32vTRT/6hPYz2OGGJiDKvl3k4LuZZGxJEfTgOL/J0nmVGCZ4jaCFFKogcouAwXdTS
-oHZhZLpF1x60lmSdEiKQV0L4EAtMQM8YRpSp1DIVIhUyFamwzsUxoJjR6LSQi3maFZpvDzRZPNM8
-vEHNeNGqLq1zqCXnefEOaTurT54v6JmSz47HXBTxqWyZIhJ8R6QF5CYjon1nUUuhhFAQXZBaaS1M
-AqtlqQV0A7H17yIrOktsMy+1Ih/O9niIAMC6GZmbtrNEMUbPO4o9wjoK/KkAgMklzzTAnWCyDgAw
-I6KewvOQEhGFErwf+Fmmg2PbYCLySfV3v35N7aZKxM9vKhH8Yp4NY1TgpmTx+mZ1c5VNZhmo+9TQ
-Kfg3N/XL9eWv3ixbigCwtwMRPR4AANjTHFW8ezh+2f3IcE5TnaYaUpnFE0F6Xs0aAcDtbZUlXNWU
-1QLFDAUwg19k6RTPvQEnk+6DKItFO0xhNvfOko9VlnRNc10v9kGUdb0/kjEZy1+k1s129zDYKXgi
-19tjVRjnRiwUY8EA8HJZ2ikaxERL54IpcbftLI2cmcIDLxRA5Fx03X4KT6gUYObFzIc414L3MJGr
-kvi21i9rrNPxqjSfGhJ0kKM9/tCdfPvl/e5QKb/KYDcmBZ69JskFRuuv5wVRhDFackKk99v7wmRS
-n18oSqW19JFNpih49yOxB4BZR0qKqphxpSuEoniKY2ytaw7H4b6pSiN12h98VeIzR0jIFPTM0mi0
-1omaSYNK8obWEuz0FOjirMkWqGU3uPX6grclucALd7t51ABC4/19Qy4uEDl2rumn1zdLir7pbHV9
-1Q2EWpQZ3t23lcnvD/3yYsG94PnFiFQJsW1bRH2e4UtlUHMAfYWztrOdJU7nHlgMCWD3T5zn6FsP
-cCAtgfMyntPhiSju/f1gtVAAMJOKvXU76y5W11exudvcF0U2KXMKvqX4+bF9vb7woEN/x3S9Czj+
-ZrX4y9fZTKqFGI67T033IxqzbSwA7I+HxYyKsgKA7z/dwVPdDwC8RLJ4SkzC8lmhIIunVV3ZVLXD
-xKMoPm78cOjdkGP86QHf9pZvCfb9RCWUNqgE+93yo6wWr75at8emrsoyK5que/vLtRJiP47soeZj
-1CD6g68Ko6Q4HM/Xy5n2Q46su1lVAOD2UmsAACAASURBVBDjWFcFuJNBlLlB1FroAtHkxrlA5Ilc
-cD54d3RxEvroYgzOpoqHGC1FzgdIMZUIjkD/j28TACBINy2931FPEdhjJ8OmIwDICkTUMFmWdCyy
-gss4lIrxUE4OjS4a1HVZ7h5a+MmIt0ST5Wid4NEvHVtwJ1Ty5EO9mLOFenCjCiCEkk+jFlQS3Ins
-wEKq3g5unO0GytO0P3lEvXkYAADGEMM5mAzFTKQy+uiC10JC8NfLpQMgouvrOvoovNU6bdo+N9l2
-12qAt6u6HfarKusoilRw5329KJjMBwDXc9MOvZICtayKjGskoOFmVW2a7rKqhs72bqirggshLUSm
-pSmxRHwYhqpEVn4crNcLZNo6q9efdVUuDXGMLnq7p82uO1Lc28G6058+7f+fH5qW4kNnWy83XfjV
-m2U+XwDAMnVW4ItVvelCO8W/f7/f78Onhs5W470vM816ht+80KM9vq5nhxN+//33//T9BgB+/XJZ
-52n1VLkYcS7ZUYmyrq2Dsq4PRFUiOIAInkq1MJvDU6QFKwz5XzHdjX0/KYJ31ug0+jj4U5bhq4tq
-VVeXlTGmIHLzq2xVVeDPHEpLZGkcut5BpNGVidm2w8uvLjaHPR92ZpZoLdgoFp5CbkDPoiMt1b7r
-6qrYtG3b2fp6zj0AAEil51rwGfGmFhUmbm/zcIyJAgAE11OUXcA38/i//zmEBCtM8nr5phJ8AxA5
-N3nuP5QQm822XC43uwepFTuxcerg3aZBo50LBrXQHIRoTZ4UZj4ceHYomrbjIS6RqwoDmJXXWdP2
-C6OOx2HfO0Rs9ycAoOhBnnUhXPczffrcjk9+mWHbdNHHtu3475yUeXuzer2sAGB5sRgdueB/tGHk
-kQKKvh+k8OX1ur3fI+q5FmeNDgCRq6uCugNKZe0eAIzWtrN85u2nWGWFD3Gz3SHq88wHuRM4Y/8h
-qhhH1KI0yCNzg9h29rqeM9xJRMtMOwBygUk+JoHTeV4RogcWATfH3kXx2NncZPPly+MYFbjvP90x
-k0oE93gAGTwAHCddzGLT7kVwRs/+6ut162Xbtjz6MUr83S+m79/f1UXysQ2ooqPxcByeKx/2nZ00
-Fkov9Uyjbi0tsCBI+Shk60JIZfQBABaIXXtIcCZPx2GgFOwwEN8DaarJx+t6wYAPAHD4KQAIJRgq
-BYDN9pz3AQBDxz1mDM7nacrkLy2V7ahpeyxUs3u4e2wYfkDEw3EUQmktX79ZG0xRqrNRdgQid1lV
-MfoMcb2aP3w6KCG56Ihx5MUDAN/d+R82Lf/3VbVYZQAABk4SAN4fBQAMMv8ymsNxYJSUPSfIheB8
-VWT/crdb1VXXWbZ/ss7xZ+9jNKjJuvp63rQ9Co0otJYG8zF6P43Pb8S9tadgTbZwLrT9gA4AgKbT
-fJ7NtTClscOezRXx6coTMj2DRQBKiujOhvokzncLr/LREcXTY9vaveXONfpAPnDAqynL6OI5cYjT
-JYLnBUr7nmPr2acNMCswcREo+qo0FE/8wQTnyY0ueKEkSkUhhac90z1HngX/nJqzmicfbm+v53lP
-tKrPgLfA7P3dFoXSEnIB0Uc7ATvOA0BniWy/bTohU7sfLuvivg//6T//fjpNQup5ll1enH/P58d2
-OoU//st3ALAdYCbVPK/tfhht9y/vPr/86kXb2b9cV3/7wv75fuFBf/+h7Yex7f2fb7+0bWsS8euX
-y0UKOj9fzr13iUkg+LNtv/fWjTIceNGTj6jlk/Pmj+TPEYx39qF1ADCODpXwzhZyYmC0rGsunNx+
-AIDmSL94ve6HIdXYhRNHMTAj+MOu3Y/jTKoPd49fhp53iNDCRXH2AuOni74qjHPhoW0tjZ2lOMau
-PdSYsqmU3Yfm2BOFw+kAADBZozVPABjKe3OxeDHXANAcxtOx4TStoxslACzmmSnqwsw+P7ZCmW5w
-zAWyRAb1pj1qqQpMyIeyNC56oYSbvBDKQSwNauTAnwlRWyKiCABN29eLuX5qxm1PqORMGrLOFAgA
-PUREbTC9fWzb3k4uzMtCKGGJCi1OwYJQdjhoEDS60iAbJ50VLRTiGLZNy1+sClOYearR5IaZVY69
-gsmdeG4CYJ143o1tb1ELtjyZyad1QFOJ8n6wRaJsRzH6M2/i6cFiFM6K5K/sHtrKnLOEV3Wphdg0
-XWdJL1BnGVkHkyU7CC1gjBoCQ61S6aw0TPvh30MhkA+PfYg+Nm1/c5UBgIiuqsq26359lZYZjvaY
-2F2RpV9dVv/NS/k//80LPxy0hN3jdjGjOhcg9ddX2eE4uADvmsOn6cWHLhBRcXGjJdw+7haYvlkX
-VZk9V/zPf9oCi6edCOPojE6V1IM/HYhQRHLhsjKxH9armvFQrwSMcR8Euz0/u/ifwX4A68YqS4SS
-nHwKAEKBzjJTou2O67rUWjIjODqqquKx6QDgsqqEEi766OK6Lg/H0Sz+q8RyrSU7oDHqX6AkSLSW
-dm9RS52oDad0kiNI+CZXQjCS8QOpH0jtKDZRX9YlIqrqIiRatm17Acev5vE4RqP17edbAGBfIINo
-ydXlgkU3JjeRiCjo5JwOVhps2j66aO1eC+Gir8qMXMjyM12PUaBuIFPg7qHt7RDcj+5AbW8N4ovL
-qipMomVwXktVIgrEmTSmkKVBB5yaHtkspCqy7283pZbd4OYG2Rqxs+7j3RZR8+CQVysE/yzNvp9c
-qUOZ6W3TVeVZF1YZjXnhnk61qjQdBU5rJSLWwfG3EHUfTlIJFoI9fxERad9XVbm5b5h69bSIUpFK
-in4YxUyLsJ+0Fg5kqvH9prHkrBMaoG079zRshuBnSt7dN6lGSBZ/+P4jkTOpzFLxTw9jVShUsSWY
-ksXhOPzDO/pu44rlBaKWxc3nL6f7HaUaNabrUjrASxMeD5CFPY+H/3z7ZYFpscgdjfVTOjIAcIYF
-ADCrXGWLrmnSVJ99m9Usl/Gh75d19tjaarUkHxKc6Srfd9Ys5EQntsEaR4eIShs2wwIAo9N2mKIP
-uYxMit5s26rI+vvWx2gK3N4fS4PN4YimmI5sbq6joyorOFq8aVtgWgSXozS2vTWoWTO4Xl7acyrc
-VM3z+0MPAD7GrEDygVywROSDC8DqKwBwx15rVNWFBR3M8o7UQ3tYLDKJiI7c72/7tuuatv3F268u
-L5bcBFsi1BKTGcozwUsgcswjdQfmdUqthBb1HF2MWqjSoAt+2BMiVtWTyZzkFYOFyRzA62V9sN5R
-WFflrt3vvhw66yw72wx7NFl3Hpc6JgXEMGqpmrZ/4sdX7z7cv1nXANDRWVByPZ9rIQiS3ZcD081d
-BK3FEFiJBl5oCufVttl1RMQyKxVHkYq2tQztlwY3bSe0DuQNnimuWkLqPLdW7F8UfSRyRms7gdAC
-lYw+tr0VWkidlmoEANtRlsZDZ01hRCrJDnMJ67p0wRtMhZLb/nQ9N3xMbFu7ezykGl+uqt9+fx+S
-HFFvd106UxXCeNz3w9gNVJRVkOryYkmg+92Xq9JkuBAKp7RYGLVt/aYLwdt/uY8A8PO1Pu6bz7e3
-8yx7fZnH4KrS2L17NrQSY7RwqmbQBoECpmhVtmAPKR8cAERltBG7ZrisDAopUvnY2ubxuEAEoVng
-CwDsUphlONmprOsD9UwfQsR9EHmpN9vm7ZsbntLE6Jmj1VmqF/OqNIlUGtMyQxchRs8oHyImWjJd
-/Imvbiy56joHgHbYG9Tk4rquNl8e39ysELVIhRLCTT4BX2N6+q+TqrOiTmbJ5QIE9b/7458F9VfV
-wkUpLy+WH0aTzxdfXVbr9fqBR3RjBAAYoxBpezysV/W26Xg+zyVvtcptT1pL5U+2o2cZP0XP+czb
-9sdslW5wtJ9EKjj2EAD2doh+9ClgMtMo6yqneJJKXM+L++YMLPAiYyaPCz7LmY2n5warunxs28fW
-crewMArS2PbDalk2bbeqy46I40oBwCSgAZqmW88zXrs1pkIjAPR9x6o8LURdFTzhrgqjxmhQkwss
-iheprFbXrt+7CFpLocUcBUcwAUB8wjTfrGo9psGNXYRVXQothlEAAGtZAMDkpmn7KsvPQudALL1/
-fvzuh823v//jyxpv8tGf/C9f5GW5AKXyvLxe6HxR3N7eFmYGACWG1+v8vg8DHV6uLwHgU3eKiQrU
-qaxoXXybDx/b8GnzZYGpgZMLoq7y0ui6NG5vAWDwJxnc5F2CosqSTM348EYYB39SUg8neSAKJ8Va
-9d4NAHBZGfY4mqMgsuTjZabG474uTRxGAEjwHAc20YmIWDtmdGr97BR821ktdXv8gkZXpbl9bNvO
-TsEDQNP0qIWDmJclryUzS86JT08Tw7ou2vs9ABjUTW/rqrz78uBjVGMEgOA8uwOmGjfD/mc366bt
-bla10bNT8MHb6TT96c7m9XKZGwAI/R26Xs7jMPTN/nh4/LKbp0JP+/7LnUkFALiZvLtvSqOJaOgt
-uyCe42bHVCgQMt20B1NibWRVZWdQJcbtrnuzrj8/bADAJAIAYhzt3kYXo4tN290sK6HS3UMHAJ31
-S5OgmA09JVpf1z/e0awKZ3GgTlRVna3g2qZbZEWNqdYCAGIYhVBvXy0heB/jf+HqXZocybU0sQM4
-HThwkg4440FGZlVmVnX3vf0YXRubWc1KZjLJZKYfLDOZaSPTmGwW/Z6+3X1fVZlZVRlkPOhwJ+k4
-gNMBLcCIKikWsYjMYJDuDuCc73wPNvrcG2TgSAjcdq5p9CmCZKzvO71a5QotlZKIXE9ciu8/b32E
-TZMnwdwOfaLhFaVZzMshApNSoUQmhggoebfff7i77VyfmX/bXbs79cYoyeXu8RSS9+RNs7LD4Tj0
-qCp3cEpja/uUAoUIhcrTLhfSHx/9Yv2VrlA3anTd86g8YEf88/bZ03i/7/7+j1+0XnzVYDEdj6dh
-Z8OpaATOnp7333333cNpBID941ZVNaO+Kce//Ujff9pdV+JIY4ml0Qo551IgS1Kw5RwrMbNnWIj5
-8zEJqYYzL1ShZLmSs8cjreTMOj/ROTcMC0Q3gVZ4cmQafSSacXF3owHgaQjLOSKbsarUTZPT3jOD
-etVUOeqipZHFw9PjJZgeQADA/YNVWG4afRjH3KeqmUw+uYNjgiGDL082W5PYznk/5tYx942oJArO
-JGO8ZMFzKfu+u1s3N+vm03YPAKYyIVAG4sx8kele3tNqqUAuiUiq+jRJiokfDl2NrC4iFwoAGrN8
-pQRKllAUCpFi4FK86osZL/spmGblhmPeZX94trWqKIbODmtTZYN2BCZfDIQ3a7O7ZIl6pefJB8ku
-XDetRN1c71pb1fi61gEglCAZ8/GiMkPBbX9Gya+1ohRR8AJn8uWUI6JPWwtchHjAZQ1czLlIY6o4
-+JSqMh2Gfi4valE/BfJJhrNCuW6MPR0k8rUxRqtP21Yr9CmZqg7iwgFmJf/xu59uFzUAfLx/EOwS
-nKzNorW9VnVm/jHB3cFZ64xWplbff9w3Rnf2qBUKXEqI2a0/jzm7gQaiDFHn5uG0/xFRFkW9I3lo
-98fTkAL9l79YzeZNT+mvv90AwA87OxULN0YB/vmnz0/P+1SI6zfv316b05iuVquPO2tqAQCMjnNZ
-5l7uxeGGS8YRVQ6ue73OVwv27IimUDB1gT5faDy3zeJwojkXTLIU4mZtkM3OMSxeAl5zvZQ3/nwC
-yLrJJ0CBs8HFi3cng8CkRFnAZWSed6jcPS7LsjHLkFIqJUqe7btNo//6z9/loO/OOQDIVp4+Bkdj
-2/Y57tIIKCU67wcXd/ZEREaAMcoRuQkaUzuiowsHN+hKqpKP7lRjURcpTMFHmMoF34+So+4nflNN
-RkQA2I+SxZ8BL0eU/7ZRSx8vXSCizCCJwVny6avN2nUnM1/mfI4JROeIIMGLteDV9coNh8bUWZWi
-dB3KUXJp6iqkRM6jkvFFgtOe+lrN949dT9NtVWc1oE8JBWOs/LRtES/c8f48AIBPTPJCK2wU33fE
-JG8U50vVKD5EIPJ6tTr1k0/MJ6AZqwuR75Ajb6018yWR9zF4Hy9zOvJ9DABw/TLI++rbtxBD1qp3
-jhyRqZY76xpT79rOGA3ZsQLRGLVrrZR8VSFMLrOV7h9a5GKhRGb2d0Q5GBMAfv0Xf36j1fE0zFdf
-lWr+3bPf7TsAuJrzFP3vv9hHe/zq7ZvffzkAwLJZPT3v2RTuVlqaawAQDA7bT8fTIM4DIv7Fh7f9
-MP7py/PTELRZZmGX5GnTaD0TRqtThBxcBwBmBoUqOMiczwUAw5kPbLac45Tc+JLU1A+DZBJepNvX
-xiBeeEx/rc7wMulnVXmkPnkyVdEewgKRiFhwALDQar+zOc1WaXzhbBIR3W1uD+PoXH87r7/5sOkc
-UQyMl+cYrO0pTKpgknGNKj8GKaR2tzfVcib4K2OAiDbrRrPEJSOOeY/OnYOSbCb4UlXF2P+Vnhrm
-V/ELk5gCMTrOpxMvZ0JzqovYEb+uuafx+mq1rARcUCCSheBSSMZTCpJD50iks2TMDj1jZe+HfFOV
-ntNFyw41B60QAngaf8XA0QgAWEgpedc5kLOntm+WDZPQ2q5ZzAVnfkwoea5MYEwMRiXlralSCqZa
-5tCH3HVsNo2pqlx/Q6EA4BwiTY5JNriYfLpRGJMg8kKgQqkK6DpX44jFjHysJBhd+ei/2qybps5Z
-qEQRUaY0ZgaHLITkZfQhQ6Wdo9P+WOna2TZ7FOcf6kpKyfNStL0DACWlZGK7s7fzej+QrKo8GUBR
-dPF8dKF3Z0fUPg7P/fnowodm/mE5HNyA4Cf7pZiOgqf1SjOBb690IXBrSUo8ngZU6vP2+dEe88P3
-aU+/3qg/vzOrBaToF/MKRbLWFtPxx+2zKth1JXQl/QsK2ZgaSkY+fqXF5KYcvVUi/hIABYBc37Mx
-1XyaxZ9Z7kTEBM+7Rm4Cm5u582PS1wAAJS8lpmHUZuUTRJDXN9WRiAmexGUHCSlJgCGClCXQoM2i
-G3xKYdt2z097pWqsxX5nHXnkorX9jIs8iXdTyneBsZKc55V8GByRlyyFlJRpPt7f//r9XecI9aJW
-dfTep4SieLcyNRZbS0ZJAFgu9U9H1izKP249i2H5Mp/hb2UAgHnhrbVbS5t1M7rT6xzAJ9ZoZd3B
-pxighOxPT5NPKfPvYxI+pc3akBvoRdnUD0NIybZ2s25+n0BhOQ1nvpCMl+9egk3h5RxsjydWsjh4
-8tEn6N1wipDFJZ9+2KNCD8l578h7SEReq9qeWlayBWLNGACcY3hFNnwC76OPmcUEACAESskCWxxd
-WJsKAPb9WXL56eNP9/ePtzeGppDGlB/r6AOFmJsHZDyzyVNId+9WgjGCwsfLIV5jwYW0nfMxZG/K
-briYWyHiYfKSyxyZnINwXr0NuRTdQFkN/Kee/fBAfyN6ieWqnFp76Fyw1mpOM8Hf3zW/+Uo30AOA
-mM3eba72j1sWvamFQWat/Xy/64exMcssjqmRZZrDN+/XzbJEwb7RFxxdwNgY/X7TtDTq5uLX+Xik
-rm0PJ8pcN0qgZAme5FJF0Zz5+OwoA50Uoioui5yxUmkkikqWefSbNVk5vT2FeIrh2LlrY/II2VTF
-ROdbU/URJBev1yE7xtrOIReQxna3N1VlbacVdi8z+Pz9HOLqarHkjM2ELFk+hG3vkk8x+LafiDxy
-QT7CkRZaZyOcEMinpJXMWDPFWNdV1x/XCnQl51ObcAEAvA/e+eQYNrXadvH+8WWYAeATM0qykief
-JOOSMT8MKaSsCs+yIABIY7Kdy55+u9bWCrVZJBh9grz4HI0upUPv3XAIKWUsyJ2n/YNtjG4WF2e8
-rIZZN/rghovw/EwAQM6bWnEpUPDO0a7t1ndfu4MrkJplCdn3KyNlusr1tNEoOXTka4VcikZrNxxm
-gtt+aIy50kqhRL1Q1aJzdFthfuJrDo/DkIi0wkjh4/bpldLHZwgACFMKkWJQiIyVgQ4cxdCTlDxf
-iuhDEAAv/pgU4rpZ2c7l2nf0tH/oD73PXh1XyA7tvh38v5xqT+On/TFAFhMbEKLtjh93w26ALuJX
-DbIpnA7t1Wr1/q5RcqYRkEGF6ELqh3HuD1927WEIAHBdiaWqyvkSC5lJmmpZHYk0cgD4sGmcH4dw
-bo9jlrRfLZipCmRQgsvLIH/lf2XysoXHJPwUrrWSkudW9cPb69f892aOAHClsB+Gr68MAOy2T4h4
-JEpCabPYtbbmoFB6H4ljXgb2oSfXUwzOQwjk49TM0Q6HfBPV7KJBnwm+fz7m6iL5tGu7c0iZG7Kz
-A8LoU6IYcqswEBFR09RuAuSCiDLWDAA28BOTlZiVEldydltEUS341YL95dfhtgKV6D9sgMiXau4g
-R12kOEbGSiJ6v2k+bdv15toOB47Cdm5tLhG81RLz9plgTClIxoCL1xFpfh0AKJJX1VJKvq5qAFgb
-9bpt946IvGAsiwoAIKREMWiWsiFKPha1QgoRke22D2qpYvrZwc719MqhzTnY5xhuqzpT9LJfVV6N
-Z58c+YxloeA5fC7HWPgEN1XFEDvXKz1HyXPx5lN8/nH7YAfACtIvlG5VXfps7J6MVjCmIOCmQNsP
-eZFrxO32ObM2HoesloujJ+v8qpx+d2+/+XrFURN5yROv7xDxr/7sw2Je7Wz4/tFba1OgFOiP9xYR
-rWfXV6tziO1h2pH82KU4xveG1VX5nZOvkvb8xCDnzfLiG+78eakVcJFv00Krpf7Z25CDtMNkfSqY
-ymSHXw6JtZKyqs4xoOS2c5dYy9Hv7CDES4hoId3ZVxUqKACgPZGS5e1qlTWKR6IUIiIyxBzPk5fi
-0QXTaCaRiIyS+dUGF31K2aQeXixqziFK5H4K6RywFqOn+bJwIW33DygK4NL2LoWkZ2jPHhnLKPNu
-+2S0sjR1g18okS0z/vXH/b8+jkVwAGCnMQxHzkH+8Se4KehmgT/YCACHF7Se8ZKXXHBmjN7ZITeI
-eVhbYxGAdUSrtW5t39o+pMSgTAGCgEbxztG6Mfn0Ofm02z7oeZ1FMIh4jqE/hleu6E2lWtspja4j
-AFiqKj+1XTw3i3m2LM9Kc42oVa1QJu9/yU7JekVEKRnLydILxO2ubW6rzlGNxbFzjsj7tN6Y3IS9
-OhMCQM0hf7ScXecO08utzRsBLxaV4Kxz7sXuClIa/RR6io1ZDj0xXmqt5Fh2jrxP62YFyeUnQBbi
-p5aGA4EQQ9ffbW7fNvjb3TFx8f0PeyK6qy/Y12Je3T+1RkREvNOYHd2WzSo/x3/zpv6wHH567jY1
-1xg3BnnJS6V3NgxdC3nvn2OJpWQJor9tFhepDYyZEQ0AnT3mJIuuPzaLcu/PuRzKcKeS5eFEoloc
-qZdLlbH8PN/2KSFMN+vGR29ub4yAEChToGnyHmAYyKYJAIzRzo/Z02qBWEpkgueg79GT0spHYLy8
-1mp3bFNISl2iNQHAx6BQEpEsfqbTA0CCMo2RUqjV/Mk6NvowHCF7hESvpOyIrHNEiS/kkSj6IKuK
-Qmz0wqdI0/nQ7v/w8af/9T+9MQi7U/jt7shRJ1xwtsRyvuwiy152X6+Nj3AacpjXiDDli6grzO+s
-qjETv1rrGsXJ+TRGVS0EY478Zm08TQLEJcD5xe2wMXo/+A/vbwDgNcaM4wVa3dlhdWvkWDLBHI1P
-bZcVLcBKAKixyGI0yVhI6XEY8o1sllcPL8/jKJiZyYvtLmMPdvAp16aX0JrN6pbxEibXdcFoxQTL
-58B2u2NM8FolGPspXMJF6mrX7oGJXKn7FI2p/RQk44i4NsoRaYWZr+r7w2qtNSolJRNMKxyIXHdS
-qLrBZ8RTstQN5GlkUsF0/L//8fvfXMFGhqu3bySH//Z56CICQB7F2MAX8woAOuIxx4dZS0Tn3v5g
-469udOZgdoPXlfxhZ5/3+5xTXWK5krNFCQrxxsjOxxyORlD+6s26Ufw1QVE3TeQSfqHkes1zz8tg
-clOVznl/ybUHG/2PXVgbZEy0bS+rKr1QgABAMgk+rhvj/Oh9VLJkVZl7MzHGTCPwPpbyEiP98ls5
-UpYQpe0cIhqjow+IGOIvenMAAOBCJp8C+atbMwz0Z998ZYeDmS8PJ3LuIAFYychHcYZTJsYLnlEZ
-rRQWs4T1m6vqj1v/rz/ufQRfLN0YiYhPh257gEcnf/vFA8DBDT7xu9U823pmfb5CWS3Rdu5uc3v/
-YC/1g6qyQNZHSHHMtFDbuVrNdqc+dyrqpcj59PnzVyv98dOj7d1qbTL+7TrKs24fw9ATE0ybBQCI
-ohSSMVZqpe6/9D4lo1XnSKmFc4fbZg4ALY1uPL6vBQAslBAA9uyNVjnKqS7k6KkjYlBKxihE53os
-z/nj5LYVADaNRlXTyeZIdzHGzlHmuiETlbo8Ll+X6qcfPma/eQBgTKgsTe4cEcl6ud91AJCjMjtH
-jVYhJUcujhGRE/nOXdj/f/0Nenv4zQf9dz+NlGD/uOcz1izVYl4ZESWHeRpOh/Z8alEkjfH9TTW6
-U41MgJ/VxvbBOvrhgRDG60ZvLbVtCwB/9uaqQlyUF/x+vdIHYu/Xq0u0upxtH9r2RMlHWVUFznho
-s6VPJuoUOCMmASBff+fHqBa5f8iHzwTipeCRnSN2mc3AK9dNaayaKi+elMYc35tVdaqu7O5SB3JZ
-duQaU/s4YiFej9PWdlWN99sHAFDVoutcxpoWSgDA7CVAMm/BtUKfYKHEk7X2dLi5Mj7Bw0BZYE1T
-yHKldWMA4Bxi59zRhUZQXZUD0ds3b5hU/eHQHw6xkPyTv1Yln80byaEfxkqc1yr1lChGLsUcmamr
-1vbDgV5LZ82LkNI5upASKpkx4aEnSgElyyRkAEC8MC7nktW1zq7/Ssrk01JVAADlyEp2Og2mWmYr
-084eFZZ1XdmdzShvSoGOU8rk8TQqtSTy/RivjXq/ut1mPb4oGC+Tv5gCIMrt/nGBmI1XGStZyU1V
-A5NZgEJEGVDqHDVNDYVaNytHdFgfvwAAIABJREFUngmehb8AwCRv3cW14Zu3Cos66/3zg5510rpC
-Jnj0Y+6AkYvMAfQxe3upkNKn+xYAnD9/v30uzJu//zfr4Gy4/c9vyz8TLlL39koDwPnU5nf+aU/v
-75rZvFmqaqmqp7ZLnipExmWR/MbgtzJk8tnBDV+e9tnITVeST1SWUsmyLOVx6PPen8XpaYznGCQX
-jrwfhiuF7QleTd0KVTw9Dnc3FROss8dyvgzDscESxqhkSUQaESVnAq61mkk2dL2+NkCDRrYMIwBQ
-SNZ2AsSutaYqEKX3qa4vMS0++YxWpzSWYZSyvAgXJ4fIdIVKq8bobGRrtCLntb4koWQ1di5EczoW
-Y2JtVB68zLjID1j70EoOFCbXdSj5Qisu2Ha3T2m81ir6MBO8tQclZ/XV3WJeJe8kT+uV5pPnCrzG
-eDwNltL7u6Yo6hvlFZw9jZLxCcSTtetGq2XBX50dZBl9mHGVx14A8GAHteRaIfnEoJQAXArJZPYl
-Pfm0azsY062Zb9tu19rrpj6dBsll9GE+r1rbpzSu1ibbBPT9YNaGCaZQekh0spt144g4CuSjT2mR
-Verp/HoG5yuVvzPBgIsjka7QdUQxjJ4yFumHoXeD5EICM1q9u1u54ZAxynwmZIaPT0kA3O/a3ATb
-/kwpbNuOcyG5ICKtFAD4Kawb3dOkUNqhl5K7Q7yoNENyHo4uDL2jMP3Ntx/+5//xf3ve/nQ849O5
-sdF0kfWVebNuDm5QgiUuDm7wkelKPh3heBp+bMkGbikJc0UgEeXzqIjo/9nFcr78+OAy4nkxcgO4
-qetcx4+jX1T1dji82rpkDVpHxEYPhXpoj4Uqco5dJWYFU9c3lTvGfBQYLHTTUDpXs3g5MC+h6HaO
-7LlzxujtzgapfAIbGQAYhZJJXPKMBWmFULLOvUb/Cq3V5fpnitmM1aoCrABkZnp2zplq2UevZwoA
-stFqfnIuq1Re7H2k5B155AJFsTYmP2BMXnR2TP4cpLBqKp/Stu1OPkmWOOrMi3563gPA+02tMQIA
-R5EAIFK3Kv2CDTbw5+PlrzLBtm1/ouyzHgVjTVPnG8wk226f4UUkntKYiaymqhCLfhgcHYko67Jn
-gueKGQRgIdaNISIUTOm57d00OgCw/SBYJsCRkjz4F/9kYAXOPu32XDByXutrrbBzfgLh/di/sIm1
-wkNMCuXQX6L7hggbo31K24d2AvHm7fVlok6Uw6dCStR7VS0ziuzcwSdA5EpKyVgAuHsZWTg/go9a
-ySVyH4PksnNOScllKRmkNA495Xeb/WCIfL5KBzd0ziNiDYf/8//632+0Gt0JAGayOpdY88n5s5Kz
-uird0FNg6wr+cl2dT22+N0bEtRG/0QeNEUX6enYgkEzgzoZXM5/8DlEwXFaH06UrbRTXBb5qjtMY
-cxClPfv21NdVNbkp976iWkzJTXSmyWfvW0TMLojDmV8oLYInn5RWh8OEgiEXT9YuCyb5xcFKLdVu
-+wSBDwMJqQ4x6gqzgX5O9yCixqjcj2X7HO9HfPFFRjbTSimNyafu7FBJ2w+vSWqQi3sitVSOvO2G
-93d3mXzOBFvdaJ9YHCOiRFFkkuJS64/3D3kYujF4juHkk8boaeyf7xHx/V1TiXOenPB+GAEggLx9
-c/fYw3xqT5M8FXMAqDi8+gplAdR2a01dgR+NumRg5X/N1MuQIsrSXaz9s8A0AcA5xBwuxJk0tfq0
-f3i/WRGk7fZZLauiVGujAKDrz/NVDSnkuwUAMfjO0UTn9+sVsPKSAk0+R0flvAIAoDBxlEvOKESj
-ldKKiOqZ6BwZozTi2lRZeKlXKwmQQty23ZIzX7JIQUoGcpbzlBiU+QRIPvoXNihIDpJfG0V0SYCV
-jFMM0Y8+gULJBIs+5Ny+7EhMPhERcn48o1nOevs0FYtlLUs1L6ajJbjvxX/dqjZge5g64hx1qea7
-Af7p3llKU7HQGJ/abmPmv92zfhj3x4v/JoLPssbrSjTL8qauK0SjkA7D+9UiggSAVErryL3o4lnJ
-M/vj0DkYUz/8TNRVsny0vq6qXOu/Wl8VOENUcy58YhQiItco/RT0vKEYro1hJQ8pZQFG8mTWF0Z0
-lhCGmCIFWYgs/hpnDJjoHCmNre0QhQSWQycAgNKZyPs4ZmdBVjLv0y9NFSTjJROI/NUa+RVckYxr
-JaulkowhTAtElFwytmlecvKYdP48etrZQCALgVlxXhT1xfJDJXrY7g0y17UUY/by4ZN3Ie3dxKWg
-MGWvsux3QCFSio58tjDIiFApMTvFJikzCisZe21xrrXSZoGRWpu5rNh1jjMpGTuH2B7anb2AdF/f
-LLa7nydx37zb5MqbiNZmTuSVxte/67pTPvhMXTkafbrEFJRM+PgSSOhTsUTbD50LX630xuid7Ywx
-CqUx2vuRCcaYQDbLmQb5z6UxoZIihWV9ueIJLgAuAHgffYqZ1O6jzzO7Q4zbtpOMjZ5sPzycegA4
-seo3f6b/4Xc/fpmW8zR82bXFdGztgYjW6N9pXqvZ4cwB4M2bN707v3nzhgl1fbXqumNH/LrRJ5++
-PNIUaLWAH2x0Q/+nL8+vTz8AVLMoeVKyrGY/Z8xohf7gsBZ3L/KXjuiuqU6UmqVwfnRw1k3THsfb
-ZoGFyJvxxfqBXYSaRG7VVIgoAfKSboy27d72DlHKQtw/2HwCZPMskCUAZO60VpjTyBOM0YfynOIl
-9E7YztUFekhAA+JF0oSFaO0L375CKJmuZ/vnywJGlL07MSj7yTPJajUnH3PIdI5FvMBKhWJSjp6C
-AOBlN/TeR0dksGAlT4VYzCsPuH/c//7e/XRirT30lDgA3K4WupIUksEicZkb/BT9ShWH3qMoMkHy
-gtROAQCqxZJJlgfAAFAXItHP+8ql6Xmlaoap3e2VaQBgszFD53IM+q4bvlqb9nGcI2NM+MmTIwBY
-VdLRiEpmXa8NoE21a23Wx4SUJJZa4ePgMlo8HFyiYfSUpb0/3O/+8sOm61zmC5UjsJJvt8/rm/nH
-7U6ri7VtSEnKMuv6O3KdIym5VhcALsURmMw9AAB07eOJkqkvg4t3Vw0r2c6eVLXsHEUfhgNJDrYf
-TpRoOjuiTaPff/vtb3//EwCsao+CGSy+Nrwxy/vHwRiTX+rDV3eLedV39nweudvX/AQAlWBfNThN
-/TT182VVCMwH9auVFQCUpcw8hdfA6ozb3K6w7zu5VLajV5W6j9C6OEfW0phl0F3bSsF8Aih5VSGM
-KZQ8w9N5X8+8IMkSfzGoNFptd1YC+BR2++7X71b5f8pLsCy4CeZcZGtK11Fjak8xj/A98LypM8Gk
-5BdbNB8lMDkm61xjdE8TyFk30HBwnn5ezwDQmKU8B+TCddS70zfvN//y+/vNxjw/2jebW13J/OKI
-fAJRc5lnbSmNCtEn5vz5V/XxqnSrpVqvNAAY2F3VzEfGy/myi0gx1jJ8XbWbgpRgCs4jjROI0V+Q
-SiKfvHfk60L4lNI5eIqZop03mMBKwTjzPqT0bt3kpudy4QSsmuvW9m+uTYaBlZRElyYppXFR1URe
-K9X1Z0qhQlRYXvrakExdeYqrCi+86JdeKvqL9QMvef7J/fbBp/Thw939g5WS5ZzdLOJ5v2n+/Q9f
-vnm3+XG7c+5QG93aHvz51b82G9UDgOCMlYzxEiXLJdBDe9TNzRxZ52hnh1tTQQxpTGszl8DIT/SS
-8NUN3jpPRFwKs15/+u67nQ1TsfjTD2OIfonp46FScmZq8dOB5QyvVfwCAMfT8KsN2MD7YXy0Rwfy
-u2c/hBlbfIjUvb9r4jl9/vL8+vRnqg8y0E0DXGb4Mn/lUNQqnUOgbF7i/Hn98umQwf7+caGkqBZ3
-65sjkVHozj4/wecY2IsAgBIIgQpRSq4Qtw8tAGzWBgDwnHQld9ZluPNVdqgK8HmeeDinNLa2z1f1
-VUkikbveMckyFYJJzpeFL5mpK0ckJZcQJWOZv+3cC+wWMpmndN4rjVnFOpdMo7q6MdvWciGjD+ub
-+QWnlkwtVf6tXJAj5z9O6yWmz9tnB3K1VFKZ+17cVMA74tZaT+OuL//2i5KC1VUJL7LgvBdqhaZa
-Kq1SSKpWbPSCMSZ59AGXRS4GalkAQN4O6SXoIcOdLY2DO+Q1ml1Rnfe2G/JbBABWMikZcIGSe4qZ
-Bc54aU+H6mWNTXTGugAAn0bIuRj98BIOTlrhAnFjFlrhv/37x0tgMMqQUi7uvY8SZefoWiullot5
-mf8p3++27Yl8GpPSSERpTHY4GIUZhyYoru5WE53NfAlxNIhKK1OrNMZt2wEASk5E3eC3bYfF7FrF
-lSr+4Z/+tZiOqRBXpQOArU3HVOXHMX+iG63+4/v4tx/peBoW88qTv561dVXemEUY+uNp8DSe9j82
-lfz+h/2Xp/2Rxhxd8SrYyLPLVXmZW1fp3A9D9gX6chjhxSFwY+a2H14Rs5xfpGSZpwTWkZpJmrzS
-Kp8ABc6ORMggCMiBRQK8RrS7Z0QMJXMTeJ+MVlkwdPJJqxoA6lqfYzBaSclVjb/gwkgASGPq3ZTP
-E1RVewhD5wSA604oOYMyu+E78lAywRjDF1OtvBWmUUkpgZHzKYw+sZQuKaCo5OXRh7KAQOQzbw2R
-ZU0MxfhVsXu0viqZAv95+9weprURixL4bt/FQiYunsL5Gz2zqeyH0cGMceljUMtKIfoEnSOiiJI/
-2EGAYIIJBt5HMaYQ0zkGDzwv9Pz9tU3Ju856c/vw0B1PY66muBTfvL3pBnptozWiGw610Y78h7tb
-2w2t7c18eXm80hn1wlPMZkRKL0JKHHxeeyefiIhJxrDiKIxWEtiFTqhkRxkDRS6lYAxVnScMQ0+2
-G/IwC7nIbtpEXuZsTCi1VulFF+H7A2Al0pnCVCwql+2ZIuRPuuuGbvA+xTRGms5vVpt/+fgEAEtV
-3ZiFT2wqFi6ktjtelW4qLoZzT233dz/WoqrfvHnzYTm0ffKJNXUBAEqw37xrjFb9MH6tfMZ8siYm
-23eWpfylHWczx70/D2yWlbjDQEayjz89vX/xUUXBPcCMCyVL0+hsaZi/58ALGGPySb7sNQCgZFnz
-S9ErmWSCFzibSeYOTiuEyQHAoqoBYPTUudyq+RkXeWyfj+scoUJEEmJOrUX+wl4RzPUOVZVnR9EH
-D8nUMwDQFeYk6TwC05XM8IOUvHOU00olS4yJdaNRFhKY7d00zpacnyhJJnxKBc4AxByZxPJi0SkY
-FwpF+s27BkUaT4fjCByVaiRjMdwsF99350/bPp8ASjDJhTxHSB4AsgAtF8qULnJ9KblPkNJ4nc0q
-ssDvMHEpc9pz3iE8K3t3mgnOYMwuDxLY8TRmm9jV2ngfmeCMl4oxIp9jARpTX6xQfNRKkI+5eqPo
-yUfBmAPZqIu7slI1gCDyOR55azslpe0dOf+rTYNctLZratU0NWRF6fHUmBrKs1bIhUxpNEbZwzn5
-FEo+eoo+wC8CGtx5khwe6bw2VXs8ZZPqPErjgikpM0vsxKp/+mi/7LdfG67k7PP9zoiolTwd2rUR
-/TA+jwoAnkc1uhOBfHreN4Im++XofOJCovzuqbxeQF2Vv/3TD2mMG8P+jz+cMr9fyVmJpVGoJKgX
-kNBURY7rQkSf2JKnTFp+PJKpis4fASBvYfoF5/HDoM2qwFnB1ERnJtgwEKJikvU+OZ+ylLmuqow2
-SgYMKwpxqfV4iBdr5HrePV18ppyPv/7mm1yFouCIshsopQtH3cdx19qr6xWFSCG1J2LZeyuk5qZy
-3cmnbO4ZkoeDu+yJmRSTR2CMiUwZDilJLsh5HyefmB16Oxy0QlRyc1Pl/zBH1kevFc64kIydKPXD
-KLE8l3iYjHiR/nxteDlfHobA316b/+EdbjSUai6xzM2Zghc+YMn0vG5t56eQ++AMcksGnmIKL1F2
-BYA/5xVSLTGlMef+XoYXafR+xGIWUtrvukbxf/90z8Qoq0pKnmUQqlqkOO5ay2WppPR+JOczM0eh
-fLA/Q0MpJJTcmJ+poJktmPFH1znBWGPqoetQcArxses6R0rPBWf5zKEY3jVG1eh95CjSmBpT73an
-vN4kgxMlJhm8RBf76NWs8MOg65lkElIIGcxOkcgfDrFzNHr64WkEAMnix0NlPc64aMxyzuF3WwcA
-U7F43wAAPD3vrxfgI5M8XV+tEEaK8VMLu33X9lMjKFcO795cqdL/9g/PAPDNXVNiea1ihdgsxULJ
-UlwOWDtM2YbNKHSHQcsFClZVWJby3bu7C9E/TLkazKDZK9aZlbtzdWFxAoCUjAvGYjg56ocBVSUZ
-Y1ImGj5t92bGOke6QlWj5AIWuNYVAFSL2Xb7LBmoGjt7VCiBBvLJ1EqhTD7qef3lySKiFGfgQjJG
-bpAoGRMhJVQVopRMqCU/+/8PBSjT1O3pZ5+EkLVWcrZpalRVVn6R84yJ4/nIZuI1r9b7dIgThSmn
-oQ1hdj13H9bVVCyK5I+psn1YVoJ/WA4fDxWBKqZjR3yjOQBkOvTr6DekpBVe0g4BVK0OMd2aqqpz
-rN3l7fqUJBcJRsmFBxCM5SsehEAmaTo3i3lISQhkJXu7uOkG/+HNbWM0l8INx02jHfnsepBFkh/v
-HzYbAwCRApHXqDLnVJuKiBBRgACAgxvm8wpRXrJbBAMAD7BZXfspCIE1FloJ7+P99lGbhbXdYRxd
-TzmvN6XgIRmtFEqlsbNHXcmcYnRBgdglJItB6ZMHJlIc05gk4+TjOQZ3oBOrmvU7AOBC5WDqL8fQ
-2sP2NNw/tpLD0/O+PaS3y3R9tXo6ghtjqebXCzgVTSXOdVW+39T9ME7FwvnzUlWexr///SWs19Rq
-UcIMX6JWzGoM4jWWq1BFeyIm0dQqb/nDQADAnMtVPpZnrXB7fw8AMy6ujclSzzw1e7LO+VGidJ2T
-AJJLVdU+we1qlVtVrZBh9X6z2h4pU3q2Oys4u9IqD2TSGJumboy2ndOrVQqpwJlCaXvX2l6bxXbf
-aS2UlJ/v27tb48h3RBVi9GGzaVx3yonWQ0/r1YWrm/vDTO8BADEv/RTOIaVzeBgcvASzpzgyVjLB
-UEnyMZ2D0cpTlIxprQQ7I6KnkZXc9uHTlv7p3z5dz10/dMm7MBxHGvnzEPYHh+AA4D9swPlzRtwk
-lrE/VbViJReM2X5QKF3vAMD76MjbzuVCn8hnYqC62KmLkFLySel5bviiD5S8ZOnLk90+WJ+SLOT9
-qUeU//hvn1ZXi+FAXApUMn+qc0ioZGt7pZGcF5wxVmavQsgTBoqX43U4AUButRXKFJLkQvLSDUfv
-k9FVgrGnqTE1CmZPh83Vtffjxe1H8ozeVLqWsrSdc+S5FHVVcSEpBaWqzAXKy+BEl2wi22UVKD11
-jsg7f/7Opr/5j7/pv/xr/3w/m5VfvX3zz5/btqcKsQ34zU1ltFobYWr1+y+2mI5GRMHgW1NCch+W
-g1QGACiwzAuaisXBDX/68uym9M1dU86XiBgLnCOTLye4FCyLUUxVFEwdiW4rSUSmaSikqsJx9Pru
-Lru/+AQomVlf2c7lqa2ayQViprI1WBIAL/mRaLNe+RT1soghqVpdEj3IK3mx52C8bBRvTK2kbK39
-ZI//S5koxrbtM5APMZjb5TSWgjH5QnK2vZuXlWAshiQYCynhS3kpctH7kr2Q5R93tyb6oPDCPqQw
-tQ8d+TimoM3itlK7hz43cjmoxXYuUgAA9sKY8JdwFgFxlDzNuDC1mC8bvboBgOc+LTHdblanYs5/
-Oi5qTmeuv3/0//wgKnGeAtXIkPOWxttFnXPg1FL5lJjgsriEQfgUlFrYziHKTALLfCYm2fbBvibH
-vH4pRHKDlEyhhDhm58eLxF7wHIUruSCKYwpSltmvKosQssQR2QxR+pQESqLLEOT1y5iKCdY78nFk
-rMRFQemcGRz7B0shfbi7vd8+fPP2RlWLLz89aYWZrOp6yk4bXDARgC9VoING3LXHTWPgJZ4kPwGS
-yRRH8vHF5Jnmq69u3tz+w3/7+zbgWZjifHh63r/bXN3Oy8RFrWYE8uNuaOQ4Mfn+rvna8Hfq9P6m
-ejw8pgMdOp/6tpGXa/X0vP/dH/74+cuzKtjdap6nBwCQA/VeTUoA4Eh9XgPWUW5bszj9cOggG9YS
-ZZx+VaHtyHbOaJW812bhJpBcdHavzaKlkQmOMJUSbTdIxlOIXDAiLyVX1QJRRp+qJfqUyHk3AQA4
-729Wd0T06cwAoNKq0vrBDpvVDbnBXFeN0XBJfyvzaJ+jKCBkrqGUXEqmanywJyaAS+G83xidfT+1
-wsPZ57o/f+Vc5xAT+LOHtL6tLzERT0PT1D5kvrCTvOwGjyi1qrNbM/Dy1bri6XkfImv7KYD8ly38
-+w8dnzyv1exGeUYPq6WyXXeYzG8+aAAoJRLRbt9JydVl0sEYK1Hw7f4xP3yt7S+Ee59egh9LT1Fr
-5ch/8/bmYjbPS3I+jhFV9WGzlpIDL+uFIPLvN83pNOQ9AJlgkuUX9H5MY9IKU0hcipQCSt6Rk4wl
-GBfzcruzL1wrAAB3nhwRKunIyxdDYPDnfJk8wGXEdmPa48kNRyk5l8IOfc7sKJmoZVErlJLn/C/G
-y9Z2ecs/9Bf++q7tmGQPdti2/c6entruanWzWU7/8E+/PY5jrWbH0zBMJSJ+3j7v9h2K9ONPXxbz
-am1E68tZ6T+16ej8P/5wXMbTVSWAi0rMnnlzfxB/ccue2s4PhwWWN8vFZmUWJRhjEBEZAJevj/jx
-BV7s2jaCJKK6qlDyx76/XWK9atoTmVpRH/KkNk92N43OnPv86x2RNqtXJFpW1ehpYxZzZB5gVaHk
-wnYu199SLW3n0piyCYAjH2J63N9vZKlZQs7TS0D61nYpJHdwu9Y2Rt9vH5NPRfI5Fx1eQMIHOzRa
-ex+Nrrp+EuzMStbaDtksG/IN/SVvEwBYydrjKb9+5yhS8H50RJ09FuWY4hi9Z0zkg/q2kpJdVm/0
-AeKInGc0aVX6m5lr9OLbb791YzRG18h47O/7tBiFyaEsp0P7L1sIIM8xTOxnxQMAMMmZYLYfdHXh
-BqPkjak3jSbyNZ+Rj3YYKIU8CRLzMrsSmLp6d7fiUno/bm2HqnLDoT+Gi0OOC5u1yfBWpBAEEJHR
-FQD4HM/Rk+2IsdLHMR8I03A2WslfhNvdXTfWuuRTxvW1wtt5vW27TJkytSKiXJICgOuH3k+6QsmF
-lKXg7NHaDBDlhkwrJOdfJ6CXTQiZLATE4MhLlhyNf/nt13Wj//TpfrVUMbjjafjmRrIpLOZVMSt8
-ZJ+2/caoYjpCCBszdz3NS/bdjm4W2PXH//6ZKLG/eBONiDdaffdT92W3B4D1qlZLyUtelhIZcHdU
-soToAS4h1acXlpuoFpnF0A9DbnwhV+RzXGJSepEdNgGAiJz3Rqsnayc6P1mLgp8o+WG4NupIhIhJ
-SAB4si6TJjgLyEUGmnvb5fGf99F5r1BKyW9Wd5/arkuXTm/oOuQiN75cyBx7/uHudtfaiV2K2wlE
-2/YAIBiTkrOZuP+832wMEc3OZaU4pXM5gtLKDhZeKqjXDShHsnMU263drPSn7cXFyDonkUuWpCw/
-24FJnpX1r/QFyZKnsZwv+zP7/b3rO3tjFjdmAQC8LKWnsYHx7bUBgK0lFi9kxrlkVY05pVmMKfmY
-+9qqRsmYZIKxsrX9tu0YK7uzu/iajDMJ0No+nMaLxzr5//7dFxRcyrLrnMJSIeYcea3Qdad8lSUw
-jkIEYEzYbmAly3RrKbkqgAlwh3MKyVMsqpksRODQdRYARk8uJmMUkU8h3Zq5I+9jyM+095GNnnyS
-ktvDWTAWSp7nKfAS2LhZr7Zbu2n0rt2baskk02bRucsUPIO5ezf5KeysS2M6+fR0hAea/dd//NPn
-9vz0vEdEa+3j6XxXh2I6vmtm767rGtmfvjxTYADwz//+A4X09ezw7m79tpmV2phaqNL/rq1/OrGn
-tvvD7jSX5c1yIbG8hPNloX1GORlMdM6uhmf/M+skeJcd/fP/fziQqZWbYAQleWFecIvLMvAXp6oZ
-F509IkwtjcfO5R+y4JVe5NTRObL2RN4fLgYZeAm97GPQiNos8i3LgGka48PwpFSlNGZTjMzlHHoS
-jKGSX630dtsarVBy5KJzrtLK+zgcD+/fX+UbcZ6NFEuF5cOpv5vXKUBZ/pwu42j0v/D6lJKzkqOS
-E4gsA9ztrUL8/1XdkH1dJfrEZvOmEuf3d81/epPmU3s9uywe3g7+zzfyi2fzqf3Lm2Jj0L2Amyef
-4imGmDaNfjp7yMbiKDPNASVz5DPdT0qep79cShQ8lPyXb+K2khlB0koMRM1iTmGqSqUr3LbdZtOM
-s5SxLfhFcNClPZBMSdmeSDCe4lippdI4DWc/BRSY+eilxMVyRuQphsbUD/aU3aTbtpeMYV3EJLLB
-NUbqXGYpoiPPsrlMCkT0KlBGyYmi96OUHEUBAFrJ9nhyNG4fjxQmP4XbW/2bP79exS/PP31+18wA
-YDGv/upddTOfRb4AgEYv3NA3ZvnX3258ZGpZvXtz/fUt7v25oO67UzkxiTBOwRNRPLZ/+vI8r6pm
-WaqlRM6z9wIAKFlydyxw5kMqcJYNrbKJ5+SmMBy1XCCMAOBejLGJSBWQ25vuRbG1bkw3kOSQXRzz
-kiYoFOJCKwoxTwkceT2v93aqb40x2s9EGhO5ntJ5vdKIKBjsrHXdKS+Mh+Ph/SxRjJItAMB2rjF1
-Jrlkt4HHwUFWaaVAzmffq5uqIpqy63cuTQ+d0wqj9xevK1X4xPgv0udrNf+lhtv27pXDkuJ4dGG9
-Mlkcg6LYtlapn7kh+at358Twd7/73HW9qvFhTx+WQwDJGZcHYm1ApZuJyboqMxeIlXwuGZRMcObI
-f70y27YLMYkxDQcCANvRBYrKGkLE5P3u4SH7eIYUX92hHwaf9WmZ4ZQHSfZVYOVIFjI3zdkR+vLB
-sg2o7fIc99L0DH1GwNc31MHUAAAgAElEQVSNTslv3WVewflc4YLIo+SRQh4WXl6/n6oas/GDrCqF
-ZR7Y5VwPjgIRm8U8h5UDQG00Ipey9K8MH+cdjecQUxxb2//tH+3f/2732999nMnq/fvbx6FYV3A8
-DZ9a6IhPxaIj/nE3AICnsamLr1X/uU0o2JU+3xi51NL58zmGTzYVQv5u67487edVVSOLBS5VVUpU
-iCBErvsLVUx0loJNdM6WhkM4jy9tgIMpm/RfcGGBTICbYI7MnlrNf4bVM3XcT6HA2UTnAmdzZHNk
-efvPyd7gx27wzU0FANuHVp5DtcSOXhM1Y9efN7eNQvlgs6kjfjqzpapybVnLImsGXwMFb02123eN
-qSWXlEI9ExlTSTCuGx1SIiJUcj9Q09TsF02dVhJesE4AyO75qCQ5r1Gh4I6oCEDkFcq+H+bzyswX
-Rlf3D+2mMfm4QC58vKz2q9nT/eOA9fLrZt7203KOR+e7wXNEaWkqZkXbHf/uTzvbhy/Pg4OZ82ef
-2Kt+Ob+VW1MdYjK10gqVxoxhNaZGyXKDdWNuPt3vTK3yI/7+qoFMpk1nAFBaAUCzmN9vH779cJV8
-MvOlB17LIndjWmGePZHzWBfex/Xq9v6hBQDyMftOZ+OdzhEymclqo6cYTwnGbL/R+wkFN1qFlBgr
-peTbtkPEgYgL6WgMs3G7a1FJwVimJX7/06NWqFG1jzkMK8IvziJE7Owx6yp2A9TafNVgR/z73XHG
-hQRqB7+YV5KlxbwqpmOIrHOhMUs+kevp0ckPhQWAhy3ruj5zdRDc//Rt2foyGzr8+o2pENcGi+Tn
-kiFKgwWfBXjZ7x+PlzfDQ5t9bS/3xbuylLKqOntcYgqB0ikS0ZyLbHoHANb57v+l6l1+ZEmyM79j
-5uFmxzzC3czjZmZE3vet7urnDB8DDSRKgABB2gwgAgKkvf4W/R9aC9poI2Aw0GooDUk9Zkg22U12
-NZvVdZ+ZEZGZ4eYeEW4PdzfTwiKza3JVt3CzKsPT3OzYOd/3+4x1AUQpOIELpTKcLRBPNuYcj9au
-lAIATqANkyz4ZtdEF1VVmAkQ+XqBrT5ymu/2+/XV4sOnvQ2+zH5vWFkWXClBWJ4aLw4iz1iM3seY
-Ouaqlta66CIi7k6dUqLtxtTxTPlRq1o1TSeKhbOBkPx0GgFA78+22BmjYpalnTGd24i8VnLGSOIS
-VFUBAPp0zAmzISRtWHPqbPCcwowyTuLNafGHr12k/N98O1Xk2Fr43aG8LIAii0jpPCevFP1P32FZ
-L68vawAQfKYET8cKRZZU7z7G4J3pjMDzDfF6fRWcdwACeWvs9aruO/Ojd683W3356mXKeX0i3j6F
-3qhK7PWQGgLJIgQAaS2mK7yLkXlAwSE6Rkhnpwx8+vvMg4lxuZI2OgC4KJhxAQC22xPlnJOzLI/z
-vG87JUX0cV3L1trrVf3bD9vnFwrG2fXrZdvbne4F5kn/7GO0cSQ58Y+pR6ulTFo3a22ywL9cqf/q
-j96UoQGAt9IBQBlOq1q4rPz85SZSfqePH5uxovbnz6uPNw9vlgsLOcf8xEsS7cacFmz+MIj58uX9
-WP/i0/G7D9s5zy8KpirBMZ8IVwLrecoXBkY5PIqcv//VdseE9UwW+GFwru+v6sUAIvYD/Mf1JwBw
-Ele1FMj19gEoQ5cm1pAc0gvE1tpkqUPKkNFaPiqIkJvONiaoooph4EXRt6a+knImXABw4+jDXjAf
-IyJvdLte1dFHa1x6tleq2DStta5vOyXPtwhGCAwzFkcA0J2pV8vo4uBsXVeJmw0Atu0EYqMPm+Zc
-JphxSnZhylnTtNY6JcWmaWWBcYhnxnA2G6IvReHjY5yPdeTxaXSHAwC0xgPAB3fxYW9p8IscaKMP
-t/v2y71+fyj+dkN++/6LtdYM0bgRka/rqu1tsOfF1x+sc1FUIpl3lRSNbgnJk6l8Vctto10kh9a8
-Xi+6tp1zAgDpVbE+nIb+nAA5xDBaANju2xg9oblEfHoTICcpe91NvrVx3zspcG8miSkXzQNAlXEO
-BADuey+SnyNFmnKaOtDw6F8pKuSUqaK01s4YPZ4Gzqlue06IkoIRMs+4C8OZWkyZc8HHmOZlaZA3
-o+z2c3NRy48d/be/+PCbjVHc3h7Ycx4BwLjRWEd48XZVZFnGSYiUAQAvSgBIcI2uHwTM/ovLc51+
-c3OTmf3NIc55ft/7HPMk25xzQjgmIffTz2+tVTSmOEcaXGDnefACK621qs9/fDAWCXBVWmuFFOng
-TmKHjT4hJ0Y3q/WFtZYUOQAAYSSntj0ioqpEa+xlIRxEeOytccp8PHfVIjsDujs3SYG67wVy4LPx
-0bqOjHRuSmhXG326FrbGrmuJyAXnLgLPmCgza13FsxQtDgCbzQNy2gfQrXn3ZuWAEgZZMTPW1qpM
-WqDRB7VUADDPeBziaqnSfUAW2PY2W/A0KkGW6bafMdq3hjJSP05vxuBdJKulrGhMORgAsFYoMRwH
-oEl7fTXPOzOy2ezrty8QcZlPgs+sdWD7DDwnEF0MzkdrV5dzH2PKEQIAgfw3Xz797IevdWcKKRAx
-OlMh3elB7889uE8ns911yCgl3BwMAJwCbLW5vlIAQAgL1rvgdd9JVeAjIz1ZewXyqyt5pYq+7ZI0
-yEdw3REAuuFco9sQKJ27GGMctttjKrf07nB9ffn+dqdbgxUDgFJUSvCE3U3fGH3c6dPR2p+8ev5h
-2yCZbZo2Rm+s4zyPj+Xf4Kw2Zk7htPlda/xiXvyH9/a2tTeO9GT282X8b3/MlJS//nxclgIR3281
-APz4Gf/23u+OTgweAA50/u+b+ptmXMzsNIaP9wcBY3J1LXKQy2UtFzXmsuCqKqwPTw0cJHBg599l
-jqiKLH8chJWS9729rCobx3N6l7fWx+giJzyp/AFA8JknOWTiXutSVADwTCAAcAKr9cV2c4+cGOcQ
-eXrxNk3743cv2r5LjwgZdW5wLlgf0ukKKSbCjWd8PM3lvF7JIkFlVFEG71AUp8PUGotIbfDpZACA
-5cXFwEj0sTWW5GRdy9ZY6ybIRzdEcCMj9Lsvd//Zz37U6EMiwz1hUU6TIzlxNqzXKg2Czp5jHyFJ
-s4x786zaNq2DWM1rRG7bYyqB/mDdAgANfn8w2XiAx/wu2gXMGLpAxnFYl5BNx0CZgVkaKX9uPcMy
-qTsBwOfU+pAuwe5onQtSFVeL6svdBhntE3GNi9bYH7+9aB5DZL+ei5UsrHXNtvnDH79NVrevn1+l
-mxNHmjZpQnNwYdtoynjqQkYfK6SntnMupI2Bc1pR5sLEeR5Hvyz4jx5r0UQ0QU7BjYRTIbFpOlWU
-1XmSKoaYJg9ed+Y8Z4CYZgs395pzqvsuBcMAwHbX2eDTM9I2fm7Hv/2i5+uv0v7hYuIsUAD4qw39
-1ZaEY7Mu4Vlugm2Vkp8bq6coSs5mTE8EAP79P97aECLlzWFqH7bTMF6tl6lzn89LZJSTaOOYluAY
-POG/72CWNE4cAYAw0P1UsFkCO2dEFAVq467mlXGD4Hmi91hrPUR36FP4VxxCWnyR8XvdViU+POaf
-ccrevH2RENZdcH1n36xqa11n+lWtGCG6P1gfOM/Td5yXQYxKilSu/PHgkmjcmO4RA+wo4wCwrGbp
-audcWK5Ua2xC7rHHoE6kbNO0UmDyQlU5TbGLTdPtjEnPQWRk9EF8zyMPANY4FwMij0NEzFK/OI0L
-XN+vamlaC9E5FwALAHCR/HK//tDQP1i3/+J5XNVirUhv7e3+RMtZ+Ek9+5Pafz23U7aYssU7fiBh
-SOPrCymMdZumTVFFV/Nqu2+vr1RrTdL/+Bjd90zW1lrjRkJYJYpalSmz9n1rpCpcDEKKt9fP3t9u
-Xy7l591DGjmlsizZooHTq3p+zj9LqROEnVxcXc2TwfIxVzkFpIW1FP8Yz1qgt9dXhJF03+U05zzn
-hCTiOYew6zvBuUCeMvmS5RIZjS48HQhJDrQ7dZwQN3nnQm/t9cu3kfD7h/0Pr1XX6nns9wczjdNi
-XkRvv7mbtIsBF+uKNPrw3UbXqvxRdVxLqshQV1nS2K4V+ckrmZ5PSml/drksxdmKjpSqoiQ0l/NK
-KWmtnVE2R5JobSl6GhGpb+wjsCN1RcUjavKJXd72rSBAOLGTf6JW2RBaYzknlUAAsA4ulMoJq1eq
-tVbrlhGCjIZjEMg/7rUseHQByZmSlIyg56EspxIx0QkKJV9K9jc5JzSvVUlFyQhBTtxj64aQvOIZ
-JyxFhhrrihLj6BPsXhVVksykv1zxbNeb6GIhBaH5ShbODTPKzBQXgp1Oo7VOCmQD2DiqooI4COSi
-QmsnUZTffvvlh6+X1gcqVcIUAEndefcUFtbFxf/xywAAV6J5VrCM4fVyTv3o+5H+5TZsHJvH/tXs
-oF3ExxcuDCEDr4qyabpVLQkjCFP0MSXCE0aYj+kl011POXv+4qKWi94cAGB6bCOupfjmNzdSiKZp
-kefr9bMUbSSQo+BSME7Z9tQxAGeD1kYW6NywmidXF15IQQjTdkp+mi6c9SSN7t6uLwBgxuhw6L55
-v/nnL9Zn7cMQnRvSIDA4T5Gvatkae6WK5tAY55wbOM9djIyQTdOmAYqPkTISfdzqPr0MP//x6zdv
-v2I4u5oz7ekLDABwWUzXEhutrwUoTi7VIjP7j5tDrcoCsdGHLi5qGAI4c4wJXK5IBgDODg/7vcjI
-u+u6KvI5J2nrIjkVEtM+aq2TReUCXCjl+2NVFAbGq6Kw1gZWpzkAAKSuqHFDVUlkBBEXUkx2FDNu
-IkQXYYiTHQPO0wu2bdpays5YdVEgBxfjspo1d320NuU+dXYqSiSMrGv57a2WauHZrFZVozuBfAxG
-dz1lnAEkvz/PWLBOe/jj4ZznpXd361paFzHnSopWH5MGW0lh/VTm5yrO+iDVopDlzWb35tUSBQc+
-S+Q/zLkLvm9NqqYAIAXmHY1vdAsAm6YVEgFA9x2nnBGSRj0kJ4lK+P5m96qep3y6bnIpQf68ko8N
-eH99WSuq73rxaWdTpU3nZb09ecEIgkvz9lfC5Y9mHDf5PFskZGmK3xKqJox0k4vRRx9Ti8e7+O71
-Og7x1//0eV1X6adfXhWJW+QAkFOBXBVVG0ZwI2W8zHMpUJ8O1ljdH1bzitDcWpsI2qkjZIPXfZc8
-GQCwmOcAEJwjnDg35IS9fX0Fj2I1JcXHvbbWXr+77o+HtJhaYyln0UXd9iUlPkYU1Vb3r+u61cdk
-YGjudOr6p/ijpm2tD8Y6sP2n+yE27wFAR/y4efjNg20cu+uz29aulnIPVS7mAFBKFXFhBoyUEcp3
-m/2NIw1dGxe6fqhh6P3Y6MPNdr/A/PlqCYwJPhOImJ0H9ZznAjFV/0lPf6+1rGsKDgA8uCWfHW2X
-5gBtdyzYLJ0AyAki6q5/9Uzxouh7i4ykE+CqXqQqKul5AaASqO97IDz1GJBRWoq0ZTBKpMCE93u5
-lALzm0/N6+tlozUjZEYFMsoocS6c+4EhOqDIsg8jsdNYLRjnpe47H6PpbQLFJplG0pxnc2EfyYKQ
-0hWQOReSijNN0JqHFlJ+grGpQ516OGkpEpKn48K5gRFCOfMxIqdkxoLzaSZb15VzAeIAALLACZix
-bkaZwLysl92sXsyLDw19VrDnL5eXwgEAnU+NBT6b18BYa+FvtsOnqexsHH1wMQhEO3lGSOq9xJzf
-7hopkBNCCItxAAbWB2OH4Lyb/O1ml1ykAvO2tSSnIiMSwDOIQ2yt4UN0EJvOHIbBQUwsHYH8/WbL
-eY6IEYY0ZSSMIGWE5sgpIopHB2DbjtFFzvP707lHxjOudZfOE+uD6w4AYI2LPhzaNvrY6JYDaa39
-Z1+9afQBwmCjJ5yu1zXlrFayM31iSloX2v6cY/Cru/H+YZ/ZFgB022azDACc6RZTr6QEAJHb+4d9
-Nh2/PLQAsNFt2ztVsav1EgC+3GsSfTWLAHB3tAnosFpWHPNSFNGZOZK6ZAAwES7wkafEeYwDykXa
-4FVdC5gx4EEskvYTANIQoNX7tmkQMb05t00/Bl8UmMZnYQgAsOt7ADBu3OpTjINAzvm5SjGdSfam
-lFt1dzJSoECutYGcQDyzu+059mGvlPQhck5Ph8lYF+MgMF892pK6o+ectt1krPu9VLM1V6pwQAXi
-dDIpd10idqZHUSCjnFMh50hm6VWxwaPgieVqrXuKNB59WMxzFzzntGm69WqZSoBVrTzMzHAUiAJ5
-CvBtjb2qi/ObNkQfY1lxY4eHLx+ncaqkejjGtu1yf/vbhmUM6a22b1dFNh13m31vrUIC3gsYv08k
-BYDt9pTC4RItI3kjCcnBA4TBtKd6tbzd6jfXKx8Dyclm00wupBquBUDC7OTfvbjswtg03bnNR3iM
-A6F5SsCuxFz3HWXEHCwAMEIYIUoWPGMmxtRwSOgr3R+cG54G++m/Zqxrmu7JnaNbM7+UE7BucoQR
-B3EM/tPtVkomC+5siC5sNs3t5k4bE13QXa+NS43nGvN//HwYzGml2MdJ7Q/nqbu1ljD0uUg8SYRB
-IVGYzcvaWlvkBBE/bLrWUqT0xYW6G4XipO2On+97AEg3b6R0zolSKi1xAMiiC9YlEY5xjpCcE+BF
-sZAi9kMmMg8upVd8/ysj4urFi4+fNqultD6cH8IEqhLRxVqKhydRCZ8ZO6ii3G13lHHrIoBfXqno
-Y2qs6b4rM+Ig2uA5IWB740jCEaT6SiJq3SZszL1uCymkwKZpgbK9YKMPN/d6XUsb/EqJcBiExDQc
-aK0VmFs/ybpK6oz3mx0AJB5HUv6ypHnJOSa7Y4yN7mpVNfqQfukLwZKYdLPViY/LCDHWWmsrzAjk
-cyS6NYySpBxLlxAO4LIB8cy2+cG7l89Jd3Nz810LO1d+0OXFs2UYI30pYH9/BICr9bJWJacRGMsx
-H31IfpyEMk1VWlGhtQ74LDiPorDBW3MGQLT6jDF6c7UKxyDVgrCzMokDSIHrWp5O/bsXlwBAU66o
-1skJ6VwQxaIzJ+dC8BGRd6avlTzEYOzgQ/TWlRU/DX3FsxSqw3nuXDSP963T0AMAUnZVoBnPJK/9
-XbtSxY+er6OPHMjJxr6zlHAXgOP59V7VMjq/7TtVFaMPAnOE6Y/leGj2CslzHqM3y4srJWV/PL1+
-8Vpi4DQqJCojrQWJ8P/9Tv/2/RdERMTFvFgrQYJTAp/B6bKYnI+/2vRmOsc8yoKrSiTIHC+KFMeS
-UlhG10N0ELxt9skYONkx9exVXU9mUkVGgzva7s1yAQCC5xyAL7BtjaoEUDbZEaI7ucgJbHX/g+v1
-U36CEpxzWkoZvKPIlJLvP+2LCj9smtQlcwF0f0g1oaVoTcMpS8Yja61zQSkZh7ht9PpKNbrVXY+i
-kPj7VtWHh50U+KnpXfDWuv5g074eXTwa/6xmSVmIjMI0s8GnlSowd+aAyJ+yj4LzgvNv3m+eX6iz
-ZmkaI+TljKdDKSfsMLnrlUJE54L1cYFIGHEuvH2zTJ790+GMn5AFjj6MPii/5Yz8Se3/61fw9RX5
-2IyHZh+Do/uIJHpnBzF4Z4dSqpSlMWPUWIvIRSl8jLo1iNRYJwuOZFbI0ug9UsZFmc47KTAlV7b+
-WFS4aw7zvACAi4Ltegd81rTtixfr/cOxkGKv9enUI6NN05nOigqtceDG6ONKSWtdJQrd9qY/IplJ
-gYQTKcQ8L3a6j3F40gulW0GV8d3ulPS3lPPJhThEwkjbW0T+YbvfNm1S2hUVilm2rqWPMR1irbGE
-s+ii9eFgeg7DV1X8d9s+hY0CwMsawR0qMfv67Ysauuc8ukC0jXqKEoERd7Xgf/SqUEjMEABgLYFT
-uNX979ro7PCbu0MCOCOltSpJTq2199pcq9L1fRrWRGe4KAFAzPjR2ijmnICqijTQOBqXzgFeFnqE
-ik4f9kcAMG7o+t66iIvMWucmL9UiDvkYvFJKMUAO3++lprKBMh6s5wCqEpzTWlWdnZCydCNc1he6
-NevLOQC31i2fLU4uImKju3UtrbWqXurOyGTUMj0A3Pd+xqg1fZJ7vaqLne7xUSjAAQgnWXQPjVdV
-GvKcRwepaNlsGhTYGct5vkmeMgAU/M26BoAzqCubEecoZzDOACDjVArsO2et5ZxKTne9lQJFhdHF
-5aWKLl5cFq2xfWdMfywrPjh7CEhK/L8bpmSs6PTiQgXKOhvpkthhcLLgNydHJzs4u5jZFJKXsoGV
-Eig4oyS6+KhLs5yQvBKc093+ThY8mYYB4O3rZX8OwXTp8Lrv/VXBW310AcJoOQFOczuNyeMDALWq
-NludFHUxDqllJTCX1YyQPC2C/VanQyMNyc4hnZM57Y8AsDt1Sha/+fiQ1GyLed72lnN6FhTEEZFz
-CISR7z5uAOB3Hzffvd8AQHsYnQtH4ztj75vuT7569q/mX/7sl58/7Wwpiq+4/zSW901L7TElNH5z
-qz+N5U/ltBYwZQvrIwX+s8v85pjTyWZZVuDi9sAuahlwMZ8NN9v9NIz/4ofPc8yRkSTzrJW6/l5S
-YPqyejuA6E0AAIWzo7VPUJ30lRBXlwsEAPU9bQQZ3BOWy/rgANa19N5ayGol0qa7Tu07TuMQlRSE
-5EmBE33knMY4AJ+lVBsbXTKRAYANfurHMfhto0WxsMEn+QPJiSqq1Ol/tLAGAPiwaXyMW21WtUyy
-H+sCIaxp2lqprj8oKSIMAFAtkt/ardc1mTFrLCNk1xxqVaWABWvcTvdsnj91MGklUsvkyQRyvVKt
-sfY4rde1OY6IaDorkDe6u+t7Y13uXVEJH2Mcog0BOJrO/sG61UH9+e+O3o4+AgkDPRF+68VuFNWz
-a1pdZ+p5fxwNzFIJhDBFF3MPPkTCSRxiSqqz0T+by1SNOBdTolFZ8c22EcgZIYj8ie0IAFItrHV0
-hq2xLgxNe9w/HHVrKCO3W+2CXxUF8Jl1oRLF5337Zl1vd6cYBySzxEnHBTHjZK0TxSJdcXhRpFLB
-+okR8nZVbza6wiwhTExnE8A1QT+dC9FHF0CpqigF5aw/WDd5Y93gbPDxYPo/XJz+l++KHPHn6zzz
-hohMsaBtXKxe/snb+gdvXiJyxcKH/VFPMXFNPp6gH2nNgVbXLy8va+hyMX89be4f9jfbvZniuzcr
-ZGfUGTIiEOdIBmctZE/1SYmxtUQgEkYnO2o7LhBbfURxvvW27pjuAIO1gdVPSrgMZ83JCuS669NZ
-DcFjxszoorMEK8XOz+dqUd1u9bs3q/S0a1WNPoUuBEJyJDNcZLvmEKy3kKl56QGQsi44NV/E6DcP
-91+9em7aNtEDUogyiiK4c1cHRZGYBlKgC741tpsccpr6gYicznCz1at6CQDbZh/DoIpys2lMb50L
-W326KoQ1rq6rdS03TcsoIRk+ZUVOLiCjal7q/pAUZalP/fbVcnt/JoaICqVAQnJG6LqWBDH1tZKm
-fWj1peLhAL/70lKUfvJFNpQFox9PdBqneU46Mx5PfdfqJK2ZMZoSvgCAMpJuG0WJW91fzecE8tZ4
-SrwUaCePnHzYNPu7Vojq/e3ueqUIJzaOKWKoC5C6wlp3UqDWveAzhtw4lyzSq1p+0EfnBiXFXX8E
-ABsjfE9G2hqbj+ecd1HOnoTKm20DSV/FYNO0SorOTpMLY/BJPRphQOQ2+OpRIJT6Remfb7caAHKO
-yp9+ulb/0//V6Zg7H//s82xi4u/acnBWIelafav74/bzmvtPWx0y1J1XSBSSqsi/MzzgYn8wu4fd
-bx7sxQK+g6JvmxRbJPgMEWXBn+x1J2NfPVPG2hRamnZ3TGoTZzOctX1HOFdFZk1X8WIh+HI2TmZy
-h/PA8dmC9H70/XFOGeHc20Mt5aFtu3Q+Tx5FpWr5/nabDCsAsFZy4GdpSdp9h+hR8CpDFNzGUR9G
-xKxWMo1yAaBCauygqmJz17+9vrq514Rj4vAAQPCuM/1TiM6uOTy6tx3nNCWKb9ueEdJa2+hW6y61
-5AVyZ0NrbdKnVDxzEKUQwGcpfxIA6rryIbruMD46Nr11xjptrHOhOZ7Se2itsz5UObXTKKSwxsXo
-VS2VEgk9nao+F4Ozgx6hbbs//xKvnl8v5sViXrAZAwBaEnMt8Xjqi3BI7Q5tY0qK54QmU2nw0cVo
-rGOErGvZhbHRHZKZvFA7YxAmVS83O/3Tr5/bON7d9dYF01rnhvQBZHHGSKW3uTUmUddVJXjGrlTB
-CFkrmdAM1vqXkjW6JYxE59JvSwosSkzXeZ4+lRvSLykdxLWSF/MqOL+qZafbRVG1iTVJWIzDupZ3
-Wls/9YeUnuBMZ9veWus2Tae4PbD8u13345oAwPsTXM7Ma3EazGmZT7N5DQAvFrGqiruj7V14J2dr
-hcTZD3vbWvpyfQEAXz3jZgirAr75sP8P39xDAjgXnJMoECG4N6vC+jhHMn8U+bgIqfOTg4k+GhcJ
-IydjOWWHtg3AgfC2aQFgP56LniSIoMAHa2VdE0bNwUx2tMHPKAs+qqJMXN7Nvr0SuE74k6ogjFSE
-JNRSUhQXJQIAsDGGAclspQpj7YftXhb/kYkMAIoSz6FYMCVFenIAG2tvm9+LANKsxhwCiiJNFTiQ
-1thVvWzPWV3Ymd4Gn+oFcCMAHELgQJJ8Pzn4pFqcf85xSmhKCAPhxJM8qdzrxVyiQORb3bvJp9td
-cI7RRyD5MHPBr5RilBQVJonEswV5Vc/frKumPWbT8W3ZIzgAoO9q/KoMb+ZR25jNsoXdI7iyYEmI
-BwBImZ8N61r6GKTATdNyIEgZYUNz1ytZ3OqDNf3qct4ai2RWlnSlCo50vVqeyXCTP0fKjZNuD6+X
-9UT4Yp6nyVcXHAA0W73ddataan2CTMzzwlgHj3q4ZP/hEChnwSX6ZL7ZavdIb250my+oEItzRTv5
-6yulO5OSy9LPrKrCx9gcT5SdA1W1cT95xjMi/uKb/TKfbIThdHijSIJB/Mt1G2Zzqu+fwekXHxoA
-WF6s/oefzJrjAFHHc0cAACAASURBVMFdXOJKsVUBNzc3AHBodZZl1lrXHwDgj3/8PMccGENEhCm5
-Ft9dVUmyltxb1gcgPJ0A9aoWnIgZRzJLq4EwertrZC3vtAN4DAcg0DZNKXmO2DYN9wEZ1R6sdWlx
-tMa2xiWcbaHkR31eoFItHMQUklfXFRI2HEPbW8zmACCk2O5bJGwlC5KTGIdKFK1xKcYiCR+eX6i0
-G0q1MNY5F99er9KhNmMUMWuNTRHlnenbhI6ECAAfb+/VfAEAm6YNh2m9frZt2h89f94NIeFldd/J
-fLFt9ro1ShZSMBfOlqZUQQBAOHgInlIm1WL/cGytCc5n4AHAml4JPp8Xwyyulko37eqq4pRttfYh
-cspmjHLMJY1de6zlwtlBd/5Ou1fCHXpPAzgA0FNcFTCN5wvQYIdHMyiPcRDZIkbPyPkCqvtuVcvf
-vH9QUui2l/MKRaGKsmmt7rub3RERtW7VUqVP/nqptm2/aToxy5Jr/tBqAIhhcAFe1woAaIWrq6oz
-lhHaW6tUlTob6QSIcTDWdW5KY0jrwmbz8PzVqnM9ACDLbGulwLMejswAIPqYNrm01rdtzykUpWia
-ttGdsW7TdD+d6b/Tog3krXS9HzddLOd4qfgl30QzPZzKU4AXFxyCr8t87PQr6HQPs0oppY7G/XwZ
-T6RIQY6vhGu0/nh/mIZRZAQzfq3QHJxArIpiSGyFokhUtuhDa5zr+9f1Y4Zzo1MCa4azdM87WntZ
-Qdu0goPup8lMh0AGazORHdrzK/EQPCdw9m0WVeJoSMG5KOdIoovkUTrR6qObfHTBhrM18eKy4IQg
-o4UUyW4i1cI+8re7o69VJVGkreft2+fffblDmDjPd81BSSGl2DZtytoYfahEgYhJvlVRJkpUUtxu
-dlJghZQRsn84Xq8ULbhpT4Tknenj6KML1jpVL/XpsKqX7292y2cLAAg+gU/sOpEKMqb7Hijr+wOS
-WWtNUuIwLM/teD8pVfHsTBDszNmtlsqW8+E5W/zBUlx7/cO5/dll/gNm9j0gJVTSeKDzihy/a+Oy
-FE3kP1+kZLUIAK0xlLNGt6qoBPKUerDZ6pQyBAC6P9RSjMEQRmqJSNnTyNZ1Z0u1izGGYb0om+PJ
-ueBsuF5fVQvmXHizrh3QhLO0pk/qpQLxy5cNIldFmWQOQiycC0kpBQCEk7SsYz/8SxpdDM8ulukO
-oPtDujbYcM48TUw7a9yHh263a3e6v2/Npun+xzfN27f0tP8saVzXlzrm714tgXLt8K8/kX8wswOd
-l+H0djFtHHuzXNSLXJHxgzZfToSa4/NouvZYZvpdNfyp+gwAoz1Nw/jTd9dKFpATUaGdfKKMfPVC
-zijbbPUC8UIpF/xaYYazXXMEAMqIdfH3EWzpF2bHBVYGpkgQAHo/ljSmbNOCzdLZOKcsqbMAgDBy
-7DvCCGWk0+2+twlzfT7GBU+GBwBID0S3Jklucx+PpyHpr1zwujXWOp6TGH1rTYpeFjxuNnq1vuhM
-j5g5F6y17NEUP+fEueHDpjlHg0phrCOEkZzqzhDCaE450v5geU5ccDEOTzwPUSzShiUwf/v86uZe
-YwTOq83mARHTYcg5EXIeU/SOtalkSp1JT2ad6ZFlt/cNyQnnuTlYF0N9NQeAq0LIApv2KPgsG4/v
-p0yH7BWbFJ26iWRIcswpAIydXrD5szl9I5x28a+Osi7zdPqkWdh6VbfGGusulVJFySljhGz7jlO2
-qpdb3Y8uNrqLPm6a1rgxK2a6nY6n4SlgAilLe4buD0mX0h297g+6M9b0SY+ZesNpguhsSJTc6GJn
-LOGEc0o4iS4Y60x7bngBQBsJz/hpf1zX0rrw5tmyO/o3zy4TNTKdAMmLLTCfc9Lobsbon/4gG1z2
-776dDaeD74+/eH/X6MNPZzopH0OGz3l8BV09BwC4lCLM5t+Yxb/Wqiuuozc3jjSkVDIyyt3B/Pl+
-9hefvMjInOc5x8EOPGMLGuuCA8B1XTz0XiKeAgBAuso7fSilTJdg40AVRQqYAABwcUZZhjMbR3Ch
-xKiKLI3MOu8qOoXZHIJPyggx4+lU4YSUUj5BuWVR/eZm+1oV8CTkZMT6oO974DMUPFXk0cdCiiH6
-222jqpluDXJKSK77AyJynlNGXIyb7SnVJAygb42NngPo1jzZmzjP17UUyDkBY4e6rnTfVRlLhzAi
-BxeOfQcA1kVEfogh3Ubc5DlSoDkABOuRzCwBSpxAPrkQxxkAtL3rjufP5SA6iNYHa5zgZz1v+vb+
-wVjTQ04ui0U6/TZNW5Qo+GxG2TRbwPEAABoWZOoTLmCRAwWAepErOv3Jy9mL3PyAHdr+sbeF3PoJ
-Bd8dehSccLKY5+9vd8/frBKbJb3Iqipaa2tVuRjePFsCwNSPGfjFPD8HXPpog0dGK1FEH1z0qiqU
-qlJbQBVV6kYnXVQ6s3Z9d319uVZS910qCXRrOM9R8ATBbY1ZLWXjhr1gEAbg1FgnEHXTsmzsJgeP
-iPbWWKTMHAwnNNEE/tUPu+64/9//6fQ2awDgB4suPYu/vA0uEsXtOzm7OQw6ZN/qrI1ZGU6nAPOc
-+L6708dkCAaAACUMAQD+n2+PAEC5yDGfc1KXeVlmB0uMiwtEMwGjvBB0TiEFkSU0VRICnF+JPALh
-IoMFouNnqrZxETid8XNyETxOAPLcPgXMAMCHbZ/af0n8GHysV7W17sfvXnw6Jc7mZI3jGbvd7KQU
-pj2lx1KJIrVujB18jME9Tgn6wxkqoY+cMk7I27fX7292tar8NEtaYAfgok+KI8KZbvYOorHuaG2C
-G9S1dMGnHIlN0wGnvCqtcekgMq0NPhKanydfjEJy1VpjHxUcGaf0sQ6vFiy9gVdqbo2zxhFOk+Su
-NbZYpMB671zQXV+rcttoNS8pZymCe8aogbGbyNvFdGPjQ3H9bPXmzvDb1tNfNrwnsz/7rnt/e/z7
-I05C/idv8TicNyqSEw7EDs4ah4Td3GtEblp77pTRmRRs03TOBkYI8oyw/KvXF/94s0l2glQCpXHJ
-VvetPiIijlF3/cPNXrcGGRVSbJs2aa2T2gQAKsqapusm51wI3nEglBFreiWLre6VLBihzoWa5wAA
-NE9PTfddvbrY6T4pEFPCdvRR9wcXwFhrQ5D8DgD+6tu+DeTjRN8sFzqS/+ZFr2bw83U++jCZ6ehP
-ihNI2RPHQ3MckiTu4tny66sCAH4qJwD465sxhMM/3DQiIz96eSkLrAuOBPJ5OdmxlsJOvp5jghr1
-JpwCWGuti8fWLK8vXdc8LWJC2BPEikc/2XGB6IL1zmjdSL5IoY5pApCAKE+Q5wspXHRJ9ph2gcmd
-kzvSCUxysm375FNJBuh0DXBu0J2pRNHqo6oKBzSloHMCmC22jVZFlebujT4k9GocvwfnIewpG0bV
-S87z6GMpZSpR6sU8KVsrUVSz3NlQ0szF6IJHpK+vL3yMJCdkxiLkaYU4iBKFA/oE9UjFgvWhVmV6
-SebzglPGOW12pzQgCs5XAht9SAbXo/EhuiSOOrtkAQAgenilxN/emH+8PWz06f/89bYLGGlOY3BF
-HHPMJ44ukN3RTWZKGSQC+aFziPh0sKbNg3Mq1cK6abNvEo5i27TLlbrd6jfrWiAvM055vn84pjzd
-ZLE7D8g45QtElmVFCiLnT8Yx3ZptowFAnw5SFQDQH6xUi5Q7/Xg/Q4G80a1A/nTDgzBwUSb9z2bb
-vL6++Ob9Zl3LOMTbrbbBWxdgiBt9eqXoWx7/za+mr14XEa+6oJ7NDwHKb4+VrBZL0v1RcZuNx1d5
-0C7+xWf/YX/83QnrRf4cCbXHZ6EBgFfQKTrdHIZvbx5+9cWdEbYcBSPAmOB58gE7fVjkkCxa0cNu
-v//5m2X6gOtV/XnTvH59/TTuDVanYIs0QE3RQzJLaelcVbP9Y65McwJZ17KuT8aua1XxIgwhuqik
-QEa3TbteKW/d2+srgXm6QcUh/ujN1S6xQeOwbdpzxgTPAUBKluDHAJC4bkdrGQu6tYxMhOS6M1Ky
-khIbvI0+LbtaSjI4cR7wZe2pafUxGYh1axghN/f6zBpqTz5GjvTD7oiYRR8I5JWYI6e6M3H0i3nO
-RmCcOAcxeueGimcuxieEAoTBtObprfjYaOeC7g9IWfQxSd+QzNJ9fSFY23qJaH1wLjxhTQK4Xx9j
-oPwH715O2UIKFrypkFDM2KexHJk6ZbXK4iqP6Vkned1CMI706ZFRZMnk1h29MV2iYyuBlcCbD1sA
-uNU9ALT9gT2CrQHgqsBdc0DBXXD7bnSPMWyN7qTAFPrnYyykEEX5fCUwYzt9qutKcJ7SiJP107mQ
-3pZEqbhSxYemPbnB+imJgtIblRD1t1vd9hY5ff/pAQCaU/fTt8//uz9+/le7XMDsdx/702kn3Pjt
-sfj7PWm7Yx0P7zUtIUIpl2X8maT/rPKG4LuK1nPQIQOA69Xla3H6BNXf3pt/+LyfF0VZsOvlXFXi
-QgqOOVIKmSA5rYriw/6Y59x7CwDaTlVRtPqYhgAJRfiEwjdu9ICCE/J4D3YuEk4EzxkXAMCFIENU
-dZ3nXNZ12zTGDXOBm0a7PBR5TLIwF0FkkMjVm6aLLqYFSnLS6iPLxzOZGTkAbBr9/EI5FyjhAKCq
-gkMQyI11OcdalYi8HU3wrigRPOzS5RjAWtfozjh32/RXBU/P/HKWS7WIPkbnbPCFLKVkiMgIWa4U
-AFhjVTnjNHcAShW/vfmEiCtZkBk7ngaXDZRwBpBWthSoO6NUlYYS1k/LZwvO8/TH4LwNfv3sIgUx
-KSU2W82QZ+CFnANAq4/I6eqqSrh8jvnoQ0q/vkBXhtOdPvpA3s5hsAO9ruh4amazXLGwt5Ezkjl7
-HIBj3vb2aLyzgWfMGscIscYhIULOm4f2j3761Qd9LPNcP6Z6XK/UYv578+j72y0AXBTsr7/bMBhi
-GAhhNHpkJMVIpqTLzpwAQApMnYHeQW/t1dU8/R8BgFNIjQWpFtb0SorcA+XMuXBVFGaK6b6uW+Mg
-pneVUXJmkrkQw9Aa866Y/ffq8//2l58Ordu78ZcND3Rx9CdyMGLwVK2+DOIA1S91dtfBL/rrT1D9
-qmMv506H7Fdb8uXekRzef9pFM/3Trf5834uMBGfqgteqxMf8Wgjuqsqk4EmtJMrfw/2Q08YOkx0J
-P7OoFlLYxwi35C5K6cIOEheD2zgWBQKAUEJe1rppnpfnYC/Bz8hlKdDGkXCi+wMAcF6m5EyIRvcd
-I0Rk5NC5Va3Sv5fzkhPS9na1kL/+p8/1RWGtpch01ztIYkdsjZ1c2DYtioLktELaGo/IlcR0hUXk
-qhKu79PMzFq3630l5q211+srAOjbw253KqpzWDeyjBA2uHPlzAASFQIFrxaMwKCKstEHJdFBVEWZ
-KiKtu1RipT6vc4MPcf9wfPtqyQnZPNzvdM8GaLsRkXe6nYCBGxExTSq6ozfWiaJMjtkfvoD7sX7F
-pr/47L++Kt6+vOaM1GVO/25PLmrp++61OP3gghVsJqszVk5J8eQKOAcWcGpjlII5iOYw1YJmc2Gt
-7Q+27VvrHvF83/u6731Z8evrVeq7CVHpzooSp360LtjgKzG31jmISFkMZ6VnUpL6GH2MTWtMaxK4
-E0VhrPMxXtWleRSipGUkC2yaLlX/BxuMdTDERrcnF3nGbxz9n3+72A9ZwWanrBaM/HwZu7ioYOy8
-u29a56Oz7ncdLPPpnxfdwfT/5deCcgkAgtMXFxy8jxz/7W1IKKs5z+c8V5VAGEQpVkogpWp+Flx4
-ZwBgVZzRDGkOsF7KDGfhMCVB4ZzyNCCzIUQffaroktjL9gDQtKYqEQAkSttqAMhENifHNBTTrSGM
-WheRzDhhuuulwASHRERVqKvlpQveTBEAONJhFgEgSbk4IdpYRkg+gLGDRBGdF5ibzhQlFhTOIYJk
-BgDr5dX2081PfnS9uesBIPWso49qVQqeXxTM+un6erWY5+cG16NQhVP2BJyM0ZuYA5yTmhLcKS3r
-nT6li1+jO4kiIWqQUTNOKd87xU+lFghH2h5G6wPPGOeUMFLxTCBPWlTgs7oSnenTNvK0IMuK/2J3
-2ZnxX7drJaX2lJq9drE5DLQkput6Bu7b/XjjSO/HJxKTc8EceoZ8u2+RUULz9jCa/hAhb08HkhM3
-Yw83e2QZMoqiqmVxPA1PDMf04UVGjB2api0qvm32MfpaydtdkxUz5LSuq8/7O1nwGJImMTgbfIxJ
-379eq0Z316v6+YuL39xsrgRCchJXbNvs10qmCjqJZn2IyVmWzOyNbm2MLpIglvp0bPaftLHW2pvD
-8Gp24Jg3J3iVHZZlFjKczesjLiPHkCEAvD9mrxR9fyisj/9wN+Qc88WyDXjThZTSPuf51XKRgjQp
-I3MkrT7aEMSCPhibg0m4nhTA2JuQ5/zBWJ4k/oy6rlECW9Oq793S+s5wAhA8T9TODGAICDCZqWn3
-16vLAHyBVWD1ZKYMZwgTIkJ0FjKB3AXQXf/m2fL9zU5IoY1bzPOmtRcFG4P3MUYPdV1JgdaHRPAe
-sjy5XnTb15fK2CFZdgBAqcpYl3ivHOnq1fPN5syjV5VAylprD60xMN33nuSk160Zp6Y1KbB1cNaF
-gXDiXKgX8/vWqKJKq3y5kq215BGWxnmOhKcJ2pnCT3PO6V4HKTHtcDNGlapScymZjAEgpV1xyihn
-MQ7pSlmrMninda8kvrysjR2eblnjOLxcXzhnddsO5lSGk3GxLnP689WiZsO7tbpU/DmPBZu935l0
-CU7lIIEhIcTc5PXp8Hx91en2al75GEpKs2KWKORS4O8+bBfzfK8PtaqUKlprZYFpBwKAvnPOhqJC
-TvMYhuNpQCSbja5E4QIgZRzCel1HGFaqmOcFCr7ftoTkPkSlqkPnCBa28wBgO4+Evd9sa56LjCTr
-NKMkqbWNdfdNl3QW//kq+9OvOQDM65faxu/aCACsWLyt54pOJRNfBsEx78wYutucY6RM0amew1/f
-kNMQtz2sK3LXml98+5HTuNltLgr27s2qLnNgbJGDEsgoTwKHUhRNa54V1cGS2A95zs8RvNHv9seE
-4klDOlXXhCMnPFlhkFIXgTBoXQAA9whnLktiCU/70a0+LOvz6pR1DY8vSRfhquAxerB9LWUXxuSZ
-UoIfT4PAfGn8jDJjB84pB5JYGARyZNnLy/p2pyHJy20/BuPJLHWTtO5WtZQCt01rjf1we3ulimTD
-TRBiwfnlo6g7DpFgYVpTlAIAUPCco7VTnth+AF+/WW37IwrOOTWtVUXZP6JtKzFPARTd0VsXEzxT
-IF8q6k9DsrdbaxMs8UoVxg6XSnGAqwLJjGHFKsye9lxrbUrO7WwYok9p0zNGjR2Op/5vfvXrLMt+
-psilFAc6R+TNYaDZeCzYrMQIh7aew40j88yR3SlVTmPwEfJ0piVRWuKjcE4rMUsX8LcXl8l+vq7l
-1I9NewQArXskrN3vAWD0ASmz1lVIoz8bwBfzXCmZAA3pcuNc2N6fEHmTlCRDFMgrzFZL+XC3TbFW
-uj+kPDwASAQ/M0WSUzNObvLRx+2+fUqPequy/Tj7X//fb7/5sP+bD7rt3VrJbQ9a6/fNSYfsl15p
-F5/zWITDZVUlwt5fbsPf7wmj8SfiuEKn5nItgFB+e7sRGanLPG3bCrM854LnPrgMZ1VRZNEpgRA9
-AJAiHwYneH7fGgHZyQ0uQtf36zlHxOZkwxAmdta3JjaEEufY3XRQuAgLrFpjr1XZhUHOq+Zkn1qf
-C0SEyUwQXUxMlNQ4AoCmMzlhtaoyTjmhe8EOpn9+oRK10w2RU3ZVl0DzO62vr9Rdf0RE7aF3cSUL
-HwMAmHFCyjwjUqADWiuZLO0p5RYAOKeI/HP/aB4wfWtNiuPePNzXqto2Wl0pALi512kgvd235+zU
-/gAAGaec53daM+StMTwnAGBao2TRGsszxh4bGzPKtL53YQAA54bOnBCxm3yVUziHSAAkvi9hAnlr
-TJKyAgCh+egDZrNnc/qjC85o/M6yMpzuWmOt0+H7HMlSdu3xOY8V43vBxuBd8DPKOnPCxwMrHVLB
-+c5NSpTp433et7WqpMA5km2ja7ngNONIOafwmHX8zYeNkkIU5Ua3AIDIT/ujsyEnjPPch+ggIuLL
-y5pAvu//f6repEeSJTsXO2bubnbMPdzNPHKIzKxb0+2BbE5NUtSCogg9PAhvoY1W+m1aayPoFwgQ
-oEcJAimIEB4fyR5ud7P73hq6MiNyCJ8i3AZ3N9PCIrNbsbp1gcqK9OHYOd/5BlutWJXRfrFtPyKj
-SSaiSykA6M5ES1RGiCaJSEhKWbNreMLiWbRrupRRkZc/UPP/9tPtkqy+f61+cJn/wZWYpuEvNhlQ
-9sfr8HkuizACYx/3h/cybZdww0NrA8RER0VuLWkdo/NxGvumaQqeKZlnGY8k9RLDNFkAOMvZCvHo
-HWEnK0IACONUFhgHVm0nJXPiTrnqIoGDMXkpEmfS38v4gOdeTlR5gmmYvIGETLYxEyeQZ6Eu8PWZ
-evfqfNs8HKKi0pi4TVN51Y02BiQbY3p9bNp+sf6F0P7t59uLXBhtzWSvNypyaZXMbQjBBhPm4KfI
-8QzuVFk4p4yQ7cOhVmXmQm8WVZTRJYXQrO31pl4LMgHAQZ94Mbt2FJiJfMUIuchzZyznmRQMV4nR
-45u1IpzGbifO2QDAedbrI0+40dZ6G6Wq8ZgCALtYAEgZpZwH6631RttalScBFk8BIP7TvCoR+arI
-vHVVgsaG/uCuatUdh7LiESaxnvxILlclKLpcSPEwJ5wG+nkpNU9h6J5GB6X8PJe9s3WZIWJwIWXU
-2umyqExw8fXlQAjJNvIkvI/xafG67PVSKdl0B+SRsXxCYWfvkFFj/Xb/eJWrWpVgRhtACjzMB2un
-N2sFACbMzthd034lWX9wwNNsgvdvrjptyixrukPMz6GcteNAOHEhXJfk1GLx1C7OOG+cN9ZHuvX/
-9I/dmwImfWwdLTjJw2z64fNc5qn/TZt8eWyjq+7lGseZTsfh4I5/eR7++oeXAPA3mwYAfnBJkvnw
-0+1Y8Mz4kCMCYy+mkwBQ5flDa4M7PToJpnFfoWFZ8zQmURuAa4WBidm7wARfIQAk4BBlPHMIF8ZY
-wjFajBnnFzMjoxAsY/h2LTsdqjxvjqd29tX19QrxlNfL2cEYIYUqygi5XNVKSlarqtfHFyqKyqsI
-YXNCPu1b6yclcLttvHWtHqydeMJMcMb6OEn7YClnYD3JyGL9xAgjBLJZ5WUUEgGAwCyGLwEASjTa
-cgr1qmBhjoewMcbo8b49GmNR5CFMepgFcoEoBa6KzNqJOFqr0mhLUsYpL4qc8RMWTBJ8+f660yY4
-C6HttFqrOMlYOyFJtbFSCNsPnJD902G9URZCdGfBKgGAMAWB2XVi/rKKe3FCRDJZ83qVCpgpADT9
-8lnzJKk+DPnrdDhbkfjtKWd6GIMN/WKRsBCmD3f39ZnstCHpKRC8LuvzugrWAE+RJ0Onm3ZARpEw
-qVZxflfFqu1HY+ybWmpvPt7t4smAgpvDYv0UVXD9wfGKMkIjSGr06EKIx+4wTaU4aWSbtkfKBKK2
-tu3n+IJZO7XDDAB6HC4T919cpvbp7g0OJsDXpT+DYwb61pI/+OEFACi6XJBOCvbpqW8cfvcQ8tT/
-+Fzc2/LWkn/9zWcACAf/WtFfb+0/fHZJlr65OUdKZM6R0gTTrCgB4OJMUbCUEcLoCnEh/CyvKNjW
-LM7qRCQrrEoaKNgYoJtSFmkdi5mPJhCwkTjISUDkOQWUJ/wtwVSIkykIYXQKth/HusC4VgMARNw2
-/dvrzbbpUsqa5mTZcLdrOafd/Ri7AoHZ4+gET++HcWwHGwAFR+Rvrzf7tpNqZa2P3G8XwqZehzDZ
-bELKiixHTDo/1zKPO5a8QpjSdhyMMW/WyhjDONG/p9ts2h4Rm8PROI/IKWeVkqecSesFZt0wh2cT
-YoF8/3ToRhOYb9ohhKnKKOFwPI7OhktVAICgJOpJlOAmzAQyKZBz+nS3jwwOzjOGfL1RcaS2IUS2
-GDK6qZUNgISNhwUAtJk85R8G8k2XZKLoffKh88bYDDP6OhlueEDE0h9fp4Oiy4oV5P6YUuatIxkl
-nCBlTdtTnlUJa4+Gc6pHg8iDC83QgJ9oJcDOKi9DcDkiUMY57drD+TMKFkeTT03Xdvrt9abtR2PM
-1WY9GrPfte+uN4yQasXAAQCMJ3ScxTiqWNi+PHXxtIklNp7XWzvFziHeGGPMl4Fo4P/xV4+KLv+m
-q+Fobi0poX/UFGF6PIo/ZW3rkyVdedP9+FrEWOLPc/ld7xWSJVmtzzev0+GfD3LRy29unw5mQnqy
-cIufgjJwboXVw1PbjgubQjwBzqWA4BgXCJPkq0Uv2k6DJwz4iobYvruMSIHaTgUSeOl5OAGAL/uG
-Tb4uEBldzIxVom2gnBGnj53ZXJ0DgHNGnqvFzDaEVzXGjnT2zhhzpeSvbnfv31593O6Bp8GBtVPc
-xKeUtUNvQ1AFGm3jXj8vRaQNA0DbaSVEr0dCMiVKzum3n2+/Wl9YO21q+e2395taRuLau+tLAIg8
-C/e8yTuXYrdto9mtNhN/9rjv2w4AjLaUkbYb1XnmQti2XSVybSxDjhkHgFqVxvpt04kcd/u2XhUx
-SCUpktadeu84KO72nUAeBxJVCWunKTjdaT3MrMiQk4ywVg+IfLtrVIGnhoolAHCOVlar68oVS/PQ
-w4Va2UAmM9HHtFZ0WWfL7TABgILDwR3DZQEANviUsri8qFUVHNjniS2a3cKzh73uNACEMEmBHLMk
-TwnNdmMfT4DgJ06IDf4P310BQNMOb6/WITgpsWvbd+9uYphCr8foE0ozejyOnNPdvoteV8thrPJM
-W2KcP8kgggvPN2DQozW+PR5+282VVFP7Zf1MyfYJIqVLujrMSLhQzA+cfdwfmsPUm/BpUUOz33b6
-zDcHXH/cAazuVQAAIABJREFUm+MUHjr97UC/6ZL//Ztd/CEZZnklTsJ2Eo7eRaZQxbjKE+CInMbS
-bgNEmtpv9VHWNWGkpOHJu0hos+O4UeL+oQWA/Wj8y9qEcORE5eolIoXnebCBMiIFDp7Ul6rtx2jG
-GqxRmzOB/PE5Q3YB1hlbK/nm/KJpu+vLGuzMOeU8e0lm4Amr6+ru4QGeB7lx0DH07W7bbC6rVmsA
-QE73D50UiCIfOn2y1A1T241XV2dtp7dN13Q6SrfqVXGMt4BmKHIpsEo4AFDO444/HgtxljDaxsja
-2BcRTnp9DLOL04jMse01z8hzMrGRApfj6fpgwjjPdvsOAKTApu1yVQrkdgqMkErJ4Cd3nBDRGdu2
-+rIuCSPNU7ep1+CnOD1+1hwAvAv3I3zoPAAYwjSk9OPH+291eKF/AcDr7HmRQWjKTjF126bTxh7G
-flPIThsLYbKGMBIfWfKcF9YbDwD7p4P1ExI2n/BdrFUVC8+2baVku31nbHDHySwuFnVtrDELktQF
-HzmGH7dNgYTzzGi7bdvvvb2OIrrRAwAEGwgnz00zudu1KWV/9Sdvbm9vn/zqmy4ZOLvkA8fs/mAH
-Wvz4NZ4L/9vGPGr6dQXnaP+7N3A9bf/m3Pzg3atXdboye8pEcDqZeje7L7e3AHC9PkXVSppOZjLG
-qCo/xL4uT6i3AFBiyHPsF1cgkXm1a1pEPKOsa5rgQmBiMXMhcDFzYyaVVwBgXOD0dyFOhJG2M622
-iMhXSEhmx1EKHAavjV0hcspVlZPJjqPpB7PdtfFROztfR/o+gaxpO6MtIVnk0J88Up99i4OfjLYC
-uXEeBRdpEtv0vEIXPJKUEVKJ/G7XxqyAjeR3+wcAiFwGzrOuPYQwvb2qkyIx2s7ePT3uy4oDAPhJ
-CgYA1rv7ZgAAlZfbprMQrjbqvh3j/QWATpuYjrqp10hSFFyPgzHG+VBf5LozITg9L/BcvxTzAHAZ
-d2eEWBfi4WOnoI0NswuQ9fpoDgsrMm9dcFOtqu326fX1BgCMHo1bIiW5n8m3A0UCgOpCrfaD5lFf
-erleAcDruiip+d6qh3y1LkMsq0CzOE0iZUiZQJ5S9uFuV6vKTqGUgtDM6LFAgnS13ihjbAjOmunr
-m83Y6YgoA8BlzttOi+cXrMhyhEXIojkcX2i9xlhOSAhu7G2OGDNbM47WTk2vhaj27cA5bY9DJFe7
-ELpnLJl49xe8/9O8/+U3//ojuXQPzZ8U3X7Xvc58KfIsK1tHv+ybD0PuTff9Yl8y8Zotfa7Y5fW/
-LjeK+cgUv8iXVZHvJ/70sI9Pf9yH5IhSrTLMIv6zBB25mQmSyNUBgMmaBZgxpi4QEQ1AIhLCETlJ
-MM04HkxfY/Zp376+rI4eINhOuxggklNADkrwYE+WeELVSoqCk1rJrj2knLT9iGuBoqoq+faqvtfa
-BrIcxuuN2jbdpcppzkOY8ERvfvZKeUbh3LPJQHscOM9uH9vryxpOxDXKkUYIHwCurs6s9XUtY5m/
-b0fd6a49xOFhu2svV5U2NktWFuhLhS6KHJEb5ytMOKf9YqVAzrPo4hYDXQDg7VVNGJFqVYmi7cZg
-AyH/Pxws7sjBzjH8IYIEXbAR//DeCeQJp9kyUc5Q8Cm4uEkgCQrk1i/aWIHcGWsh9GZBliBLZudZ
-yqwnHqw1Jr5XSZoImOlNmX2PaQB4p3wJ4cMh2Q8EAJBSmpGjDSFMxjvjnTa2G+2mljLHKqPb3aik
-QJGXUrbjsN02kzUximvxp0SZ028FwDm9exjrsibe3T62ALCRvO1GwUnXHoyxlLNP++bsfE0ZESVG
-2ikAGG3BTybMTXegnEREOSZPNce+dQAAf/7uYk/PPi/s7fr881wGjp+XMhI6vn2y12z4MzmEoz9f
-wX/99erpWBKR/JMuSutukuHP5e1r6P/+nhxwvSSr/unuab+PVlarDCrGAYBjhoirDPIwC57F0C7G
-xdMh5DnGzK/Vc4wfRPwA7AorhMXYsJiZE4j6FUZOZ2ZkGcQWYgEGjgKAJYwQ1hlz8n83Zn22SjA9
-dFpVeRXR9KaLMWoKQZNMG3tzdfFx2/jR7tpxUyvvQq2kQC4Fe3FnqhJOUrZ/6GIYIQDotoETnE+t
-8eOgpWQuhP7gGCEft03MBPjh27NOm7jf1YO+vrrc7Tslhahw9jqiNKMxzeFIJis4j9m9jJBoYEwI
-67R5gbDbTlcJN3rs9TES9WwIiOhdTBDjbaczwoz1v8+7loixxYj2ryJNJkbCFOwU6lXR66MxRlDy
-EjMXfWxjsCIit8GnjJ6F/oZ0K1Y8Pe2/HMnhOFpjNKR0dDMA9N0BAP75IP+iWvqFAIDxnhGShFMQ
-apgCclog2TVdZJMXSDiQ+2ZAeiI2lVK23Zg8IxX62VLTIhpjM47N0Ii8EjyMEzEucJ4hSaVaxQSR
-SqS/+fmHN9f100MbeZGxjMmc6+5Yy5W2xBjz2GnCiDH2aEN7PPwPf7X5Czn/n9/8+sOQ//Rh7vVM
-Mip4moikz5V3unGZ1N0r6ZvucHucAeA3+/l765Qs4yddeCgVmW8KXoTxcBzbbhQJOc9ZXWZZxuvV
-CfGsVZVlPGZyxSsW2T4AcK1KBr8rY4xhiUEDN2FuzFQXJ/onABhICCeIWHAStWDFS5ngmXELMmqC
-u1Iyuj4BwEvA+mPbolJt2xpjmrY32iJJV0UWSebxQY9/izLStB2jpCjyuAcwyxwbBpIR4/ylEL0e
-5Xptn48FhnytpDOWEcIzEoUsvR4Fcrek2lhrJ4nCjuP92BdI6lo2d9uUng4NmtH9dhdfJ07IyXml
-MxxIjEu6WpXGGD3oCGmgyAGglMJRCFMQaUIIiy5sLoQXR03tQ0TJCKPBhomR6M62jDOnmV0cz8jh
-OEUP3bbtu9FUSt63Y7BhfbYK0UmlHzmhs/OyWmWIXqxuznJrDABELhmdjPkyif0I/29TD7T40I1/
-jPquczEiSeRlJD8JzgnJvnd9FV8yqVZHEzhNmrbf3t3lsmyafui6EKa31/VdOwYb7POQGoxB5Emw
-KCpYNBBGM1oU+Xb7xPPc2ilqSYMNQq6s8TSj0YZbIu20iQq12Ix1o724yO92bXw3UspAvf+ff3lY
-87TX89Ds30jKSdg1+nPrPwz596/Vq1X44OWXZlZk+tGKjG7+WpAvzXxLhOKmOcJ/3JG0UonuYt//
-/rrOMLuoKgCIksgbHmIayu9/JD9BlgfT44sM2jsAkGqNjBYCkUAE7yNzM2qJbLBI4FwJB0ycUsCs
-MTb4yRgTw+7HwejeIGJR5HEGyDgqKSwA4SR6k6BcHY5xnyVqVT112lu3PlvFfDi7uCzL44EpMCOM
-oODWeg7kl7c7AADvZI67piOQOWPN4j5sm7zCttOUM6MNp5kUGGbX9przzIQZEsFptgD75Xd39fXV
-y00BAKHWWFaxoo99zKQN2lgkjBHSao2IohSRwGz02OuxvW+rFYtBb/HyPnVaqdzFpsM931+AbpgZ
-cinQ+YAV0yEEPxnnL5Ryxr7oScqETuE0/zSHIwBEv+h4AmiYS8mjv9i6FG/eviuLFQDQdQ4AcOQl
-eJv6rl/I5wljQAblLEJIJGVKCmeGXTdGr4uuPby9qn/+4eHdzeXleh0FwRlHa33THZyxu6aDjEQy
-qcvofTsiokgTLNQw9pgwAHAhIKJEETvUl1jSYA3hVCCPrpSqKHdNR2jGwRu3BBfGQRtjCwp/Umf/
-6RcfFSbfdIkAey0gCTYP89srBIBkOQx6/KZLNMzA8eFg/qlhOUs/Q/WhCwLSRS+jmzfVtH/c/XQ7
-AsCP3q6RkTrnkFEleEykG0kayYYvfP3RzZ09AIBMwwQi9kittsb5tm0BgDi9mNmEU9AdAKg8iZiM
-7gNhZIX4YlgAAEpiraQ4OZJ7ZNSGUCsZM5UJI2HyXdcCACc82khyAjHQ0gWvVP547K+vL26/PF7V
-kiLjCaMiMct8njPkCSdEyXwb5Ti1bNsx0k6jd5gUCFMAgDLh7XEYB5Mr6Y2LQnDBeRdty85zo62S
-Qqk8cQDPLdxjp2/OlbcuBnKSmF466JhW2PZaMYh57m2nN4V0AMYseSW69kBzfjhO1sNlXeacViIH
-AIosxoVEX6BLmSec7poj5zT2byjy4KdeH4UUArPIhYlXEgUnJHv/1XXTddrYuqg4ocYY15uH1j5q
-GiL8YIdpfytgpp0nN0gqcvhaEAFpJVe35AQenwRpxvCMNG3PsERGg58Qcdt0lDOnezuF9aVCpAL5
-ZI3x7uZy1Ty7nMZFBk/Ym02xbY/H48iCS6mISH/T9qoSndERNQuTlypnhBgXovjdOO+mtD0OxvmD
-drG/NG7Zj/Yy5//+K/rTZroSkIcZAL4uvQ7w4V4DQNMvvS8QJoSJ09DYrDXL2/XqooLmMCXB/s27
-7NuBftfNHzV/OoR/2x0BQCQkmjyrStRStNqqPAGAa1V22iAjcYlTyt8BON1MBCedtsZ5JbiqciDs
-sdWSr7bjgAREAtpOkzUeODL62LblhYivE3LyQlUAAN11nLATncF5a72SYr9rRb4yxthxDHAiCBCS
-MUo64zujOafeTq/Xqu3HiFoCm422ETQUHB5HFxPpAKCWeXSKB4C8xLiCRMKiNRMA9NrEqHeRJjEQ
-Ep79WCNR9OqqttYH688v8rbZxwd09u54HG0IL9OLkoJk1IT5UuX3h57neVSfCeQmWG9MVO0Yd+r1
-o+jRhSAwa7sRABzJYs6DSIgLYbH+MhciLY1+GbSstZO3tu1GRC7SxPmgzaQqsW06P5uTd3QIiDyl
-7MjL1rFffNzf3NwAwH7Qb27OW5/ROcNEjG9rn4jx4/7wz58P93tj/Cl7VRtDGbdTqFVFGNSqajsd
-D6wA07u315DMAGCMtxCO2qi8HAb/blM/tm3bj1/JU3PcduZKFUWRI+J9M0SvTE6grqum6QEghMl6
-2G6buq7a3xnbc5bNNnjBefw+B+3MMn8lWT+O/+uvmtZR8O67bn5bhP/nuz0w9odv6p8/TP04vcmN
-kPUxqZEFAKjlqoHsX+/Zp0nkYf4ypt1oOWbedNG8//3bTcEzRFQC8zAXAuOK9OWz5qdMrhVWJkA7
-LgAwjifvy5OFUT/mgiIBDYsSQvBMLyB4di7F0TuZV4uZp8EjYnBe5GWEho1bYsZRrJFRERE3u4SR
-WAsTTI0xcduwuSx2++7tVX1396Dyiies0y5+W0Tc7o5SrRC57Qd4pklyyoINY/8S/c29dSx27Zxm
-hJnFta2OfoMko7eP7eayevnd7YnaYOPCR6pV2+nr680pxZGy7tmB6931xhire4PIpWDRI3G7a2/O
-VZhCCI7zrDc+xqrHgg0AyGjTDoyQyA2zUwDveFUiYsEzbS2BqbM+ePsijIxXyRovUdSqit3gzbn6
-7uPux39w09yP3Wi0sbFkpIzuWjclyfpi3Xftp+2TCu1uBJlzum3DT/bVb+f6nz4Tn+Cf1+FsRcr8
-ZMlmA5HPVn7eTowQTiGGnLWtNsZ6Y4ILxlij7dXVxno36PHu4Xiu1EblXSAAcH/oEXk/dmevamND
-hYlZnFIV4fzu7iGWNE6ZzFFJcX8clEAbHd3u7jptOKHtONRytb0/qci/rgLpHr+zZbE0bcjSom6X
-cHl+/nHbb9sjTcnb63rb+w+78fFp37SDSsjjAX65NcPxsC7FQIuF8E0OhR3u9sdo3h+FvBGrjcNu
-96xSbwbXPbZ7O8dtbjwWYgBjVGyBnRD5Y6fXdb5vxlYbAQkAaDuJBADgsdOvz9Subd++e/Vpf29D
-WNd58FNsDCJV6+NuVFIoKXZNRzISJ0JOIJciOFjMHJ+YTpvd/VHm3Aan8jKGewMAyYhUq87o643q
-D84Ym2X5i5gbnpnY8VNh8vH+gCKPPri9PkZnEWP9/qGtVWX02N4PUWYNAJwQROQJu3l1fnffCMxi
-GxZb3HjyA0C33++aNjhvQ9g1XdeOJ3rSRt0+tsaYXautnbSx3lkT5vY4uPiGPvsXPXZa8MAzwghp
-923MihWcuxDg2S4ufuIXixa02127KrIwBT0vecXdkiZ5KnOk7JTuDgDnZ2s/+Zzh4TjmGQEAT5kx
-hgbKBU+tsVlR/revxlsiesuiPbr17sUgkXNKeSZk0XQ6elFIgdvdnhC2O/YSSTQs0cbWclVfFohc
-PqvpuZttcJv15ulLowSiyB87HY1ya1URmoUwdcaQjHzcNhVlrTYBJs4pz/OmM/AMB3WjTRn99mH+
-h397TMT4ng9rnv7tWfc6HZZkddeZy4JfqYJT4CR0o5XoEfF6LSf5CgCUlFXi/0wOgx6TYDuPP92e
-MB/BU2Tkcr3SNsQyfyaQl+IF5j95HP4e67j15GKFbdPMdgSeBWsLTvRyavpJnr38qNNbdDQA4EJ4
-s758+WMcsWbnKfLzilrrY2i7QF6riiPdtXqJ+QmQnJ2vP97t3l1fnjheNigpdHeMZK/opB2V2X60
-BZJen9xNIIqT7JzLkhHSdtoBSKQAsN91AGDtpMpUIEdOSUb3D+3Xr2/is/u5PdZ1pY1drAfv9Lyo
-Km+aTg9L03QvQ3AslzzPN7W6H020kACApu0jWb/Xo6pypMxOwRhbXxRde0DKSpoNncZVAlHqzby2
-JE7G8Nx9eWszwiDGXtkQZ6mI9uyarhIFCn48jv1sRZoY4+AZPYs9vLcOkzRZDl9ubw/H0VPGKWQZ
-jywYKtF/v9j/u/KgErIfyP3eFMHGAOeXA/Tu4QEpi/SSWooIO0AM6OQUKbMAejwAwOnXvj/umm59
-qU4VDpJgw2Onz17Vu7GDiEyvWC7FtumCnwjJJKIx9u1V/WnfZByRMD0s3WjXqry7bwAgygzevXtT
-M9OG7OlYAkDXH36yz28t2Q/6/QX/4WtxtIFjZozZKGYcAYAjyanez8dmPB6vFPY+qfm0a80J83m7
-yTDjJMQHN54AKymc1deqBOsBoC5Z1LYDQNt0Ue1FXUMYgDmVVUSMp+X9fk8YfPjyeK5EtC+v8nyF
-GJxXVe6t671lU4hxqFFplDIabLABVF5t8spCuPt4CwC5LIMLlLO20xslnh7312+utLEqL0lGKWex
-4Y7dF5szE+YrtYrZmAuw7W4f+wRE3tsl5vpQzpBRTrNutBz8syJMf9i2lyrnnBrrKeO3j20IE+f0
-AtN2HFwIqyIDyozuAQBFXl/kKPLuuSMnNOOcdqM1xhhj7+7buPn66k3dtH032krkbT9qa/V0AADd
-6VYPpxj64ABg8JPvbSUKgVncghljSEbeG9tbn3AaH62XZctmLaO/tDMWGaWcK4mH43SRi2rFAmSC
-cxqNpNxCMvLdg/3q6ozTQEwPAAb44TgCAF2S1dOx/MmyfpV0HwZycaYyxGaIOMOpAY12YoSB0dba
-cN+O3jrxrObjnO4aLRKoVYWczs5TRhA55zRWOABQEr+S7OlL8/7NVdTp0BS9MZuiuro6+3B3X1/k
-xvq4mEyc7rSZGNjg9+0AANG0AxP2n//l5whTmGCgRc7ScnOVs7QUeUVNKfJfb+197wHgw73eDvCD
-S/JVje/KsfTH//Aj+tc/OPte2lZ0+XZnfnP7FONKFSY54rUqjTFXl/VsRwBYzNyOi8oTBxYAmsEB
-AEx+MXMs6sYFz+r7/TMX0k5tPypx8oAIDqRaLWZezFwXaJ/3AKfHkTDCqDHW2LB7bp05gVrJEBzw
-lAOJ54zv7a6NRj3EBrBA291TzJEmJGvaXuW5kIXpDtpMhJNKFJ1fTHQeNyPn2UkaaywLM0TZdHtK
-FnzsNEUuBWpjgp/+4NUloVlvFwDw7hRQhyK/HzWBLNqcGGPq8qQC2z0cOfgXPUNc+sb3GROmKmG6
-g7E+7gpqVfV6JBklGfGDR+R1gVfr8/hMV0ryhJU0g/g+2N+dKkjZd8hZcMYYlwFBHsJUPfNku/Yw
-dnp9tuq0vj6vvT2lukSkiDCyv+9jbdJmen/BLWAmij+6yBB5JgrnifWE+v4u+qB8nqiv6o9t2GnQ
-kAKA9S7iXJyTrj3sHzXnlHMSXDDObw+mVrJpu+CCQB4yHgvS5WVMhLax1QEAbUzXL42ZWJEFF7SZ
-4o8VeRlJozLnujcblbsQrPVSqY/bpmn6MIWTkTqDH727udtuFZkuEvPpqS/98ecP04f78eP+UJZ0
-I0BxI3N+jbZxKBgBgLiyfZ04APj209g22y+L/Nwc47br/duNqkQs/Amm16oEgKfRXeb5wfQA0I5L
-LPBVPOgzGpVfABAdFMsCW09SnrdmRkYLJCE7GRV27cGEmec5Y3hKBER8AVUQeXD+RTAuOCAicdZC
-iDdv9i4q7+qLIt7UGHIT3TxzKS7jtfKL0SPK1eCnKyV7fQwuMEKtnZrBfd7v4xMZf0LXHgTnV7Uc
-e8N5dl7RjLB+sQQygfzhqN+/uvhwe88pSMRY6cHO7eMYg8OkZBCVYpz2elSV2DVtnAGQkWh5Fv8t
-szgXwtXbi7gVUVJoYznNTmIDYwgnWFZN019dKQDo9THutsfIhAtzmF38PwCw1u5TO17WF7FMEJIV
-RSowi0u92N+PvQUAQjKrBwCwUyAw8YQh8rhdqSVuB0jTDAA+z+WVgF7PKrSKTlQTvFD84EnCuLbz
-f3Wz+MnflNGPhEF0YxxHFJxmxAFcXdZREhrlyQSyh1H7/hizaBD5bz7e3bw6V0ro7hhhsnMltLUC
-0R0n8xx607a9es5Djka+NoTggvVu13Rvr2prvVnmow3vL6u3tfzHn3/cajABOk/errEuoEjs16Uf
-E/l0XJGqBgBtfZ56Afa8lu/K6ZsuAYDPCzu445CpleAfGvvTLxYA3r/dCJ7GGYsuZoV41w5I4LKQ
-9+OY8jzB9DLP7/TvBkdjTElDP476mcQZ7QptOygpooqFTLag7Kuruhnc1VUNkf5VnJ6M0y8r8o8f
-vsRoiXjAagtJngbGm6bX42C8u6gvgp/aTitRksnGMC9rfcw2HjttrZdKRNGS6Q5jNyByJGleYa8N
-B1KXLFgfyYgy5yxmjz5ffGunu4fxq1dn2tjLujTOS4HN4fgHN5t+dsaGptXv3t20Yy/KkxEBuBNW
-s6nlftdum24lRYS5F8JPI2lGtbExsKdt9QmzquXzms/GIScyruu64i8COj8BwMGYuMmSAr11iGgh
-7AVDlkzTyCawAQgjx+OszRTjuDnS5nAUyNu2Z5RYoFIgz058k1hkGSFNZ/5LNdTMJHoPANbYazaM
-idxPCeUUqrFdHVsB6ZKsfrYn19UzCfskUSUGEg7EW9e2o7X+qpbtOFzW+XcftxVSFBww57OrL3Jr
-fS1X+6fD1fr86qqOB+7RBFEm2phqxeKpN1lTZpk2k7XeW+f8KfADy2TsTcaxafum6wBg0OPXVfgf
-/69fvSlZTWyM5frjlfmki7LAZD6sirx/+nyTDJ/vTafdQIt9pwGgXl9I9K2jH4ZcyupVPv90C7eP
-+2Walcyv1wrglCGXZRwArlX5Ar8CwGLm+3GMDc9hGuW5MJAFFn0uAABUnjwcjKJhJGnfd6rKE0yr
-ShJGjybUJYu7cCmwquRjq0UlCM0gWKPHzdV55DbHGenlI5ATwoILFoLKq5jPGTLOCYzdIC/zBNN6
-s46abGsWKdCFINXqxBwJs7dOqarTJsFUCjyacJ6zj0+9kkKWqUBuQ0BO205fX9Z3j81LWI4UWK+K
-aKZNOEGRR0uyaEz/5vr8091eKbndPtngbLBXtTw8kxEjoYPQLEy+00asUoF8U0tHwdpJIL++vuiG
-OXbFdhwv67J7bDnPouWt0aMUaO0U7ZL6g7MQ4pWJksiYdGYhyOcIVABoh95OITxn+LEii0a8NgQb
-9985cgrgnQsBk/Sz5oUdOo+K+XqVRdadyAj9fmG+TOKQYnOYXqfDDQ/PMjeIS/VIQDXW2+AZIZEb
-F88XRHSQjV3/7u16ezCmXzgs8aj6cPtba3ykAFzmfKMkodndrhXIP3y4rVX14W5Xq/LqStkQvLPW
-eheC7o31FgB6s3SjfXtW/fXXZ3/3s4crhE+D25vwcW+Asp8dsPRHAPhkyk/bJ05Dc4RFrP/7HyeJ
-6f7qK/7YdL+47REmADgOzWDI3307fbm9FQn50fvrWpUkI1JwP3nBCSJGSo4NJIoYAUDb6d2r8/jf
-LF/pPuTsxZzQ5GFux0Wl0HqSh7niuQ12lVedNjKvEJbYCOEqIQyMsdebmkwWGe1M2KyVDSF257Hy
-AcAyzhGyaNo+r9Bou2va+0Mv1UogdySrVeVsWCFaOykl2l57O+kQ7u5bGyAi0QBAOQswXRbFRX3R
-tH18MQRmMJHeLPuH9rIud91IMoIJE2kS6xF/NiYx3uHvJUASwqKdVvSRPn1nGwCg7fVKipcQO0Q0
-2kpE5ETlJeGUcFKtGOeZVKvdvpNlGmFunueVKOL7H9PyVF4N3nOeHYwJNvBnVNcY4+30OP4OybUh
-cEKmaTxZPv5ep7S/H+M3ZxOYyVaiaIcenjcYJCMVd31+bYz5bWP2UwIAcTFPO09Kav5kNX69yZL5
-AACRHBpdIeA5khErhjyxwcVzLS/RGk8Y0eZQSxlsiFpSIVdNd+i04YQLKZJg409AkTf7h6LIN5eF
-kKiEoMgB4JtffoyeNoyQGMQ0DB4A9u3w6wdrx/H/+MW+XmW1FK/O5M1XZz7hWw1FsHUYDGSddm+u
-zr7rwi/0qtfzv97672z5s0EY4ABwykyfw3/+5e3YNSvMbjbr2L6/OavzStRSxFiKPEdtpzD5yNm0
-7bCSojmarmkAwI0H54x3ITiv7cQJRKuSaFU7ktQEDwDIKHJijEG5SimzAcLkgzthuIwhCs4J7PZt
-sHZTS0IzGwgACA6dNpM1hNOXTAMz9JtaxQcxBqB7Y5WSu30XbLhSsjcLsRYZ5QQIZJGydqnyYINZ
-dKfNu3c3+jADQJgC8qxpe1GKrj2oSnBCkmw6HKc4hyAnUaMon3H3mLgYgpOI0UfaPCdCnN4QY89q
-Gaa5iTq9AAAgAElEQVTfbbIJpxaAEIaCB3syAJWSxW91ub64P/QAIBEjjlmJwjlq7fSyoKg4NWGO
-fREnRJuTx5RZZl6VACBzJGlMmJykQJKy6CeCCUs4jREHhBHERBAClNlx5AkHAIHYh9XfqnaTw6rI
-iTV5mMt6LWCmT4fwsOC/7JP/tKWfNf+4P3yeaDNMs3fG+dk7QrJouKkPsx4W5LSu5W9+fRf1ZpTz
-yM5H5BELK0UOPL3aqKYdWnPql2tVRsGotf5MCgDY79qmHd5dbWIGbXQytNYPekwZpdW1M/OHz/fG
-2H96JEfctI66RL25OkMWboP8DvJS5O+/EgAwTc4aMxwP//idqVQNABL9j+Ryt+8+bZ9uH/cFz242
-68264pjVSkaOYZWy7b47V8J4H/e14G0cf0eSLmZ+if72YhXGaTgawqjgWeSBKhp+P6402BCdn682
-9WTN9bOHz9VGvUQ8xUoJALms7ttRVWnsoYfBr89WpZT7Xdt7q60FNqvLi7bTKq8ifdJbR5G7EDZr
-6UIgUaX+Yi8VXYd5dt+OEIVpUtSqRJY8jq5p+2K9ighSjOsknKaUJZxqY++b4XJTA0A79i8+BqJC
-TpmxoRt7jIy05/6QcLLdjVKK3baNJ3yNmQlzLMWcU6Nt/FecsV3nYjR6r48qL5GyXFXwHOsWguU8
-q1XJCalEEaOtd80e4obYzk2vAaBKT7SI+NHzIjAjKRsPQ3xbmmMv0iSqxuLrBwDgneMn88kQptfJ
-8PN9KKVK9D6SfF+nAwDQryv4HtO9ZYo5UeZ/XodPHcswSymL8EUIU1yaHLTLS+zNEmzIEY2xwQVG
-ACnjsxPIx65XiIMeN/mKE6jVyZbxuuJ3dzsbSL0qfvFxe1bLpu2st0hS408Mn6hs6rSxZno8wGp8
-fDgcDrh+vVFXJfxt+OZ1OrzVH748tkjpj+TyoyujuGn6pdezzHnq2h+esVqp46FP0oT6g08LAICx
-Pc+ZVKXMTznjSoow+bzE2bt3V3VKWdMOEKzKk+Fo4glQ4knCG8/KSG2IowIADJ7kYW49SZCoPMnD
-7Jy52qiDMcEFsFPGcd+M0a7LAjXeXb+pX5pXeHZY0pbE7jliKUPXCYmcMMG5wBXnWYGEcBIrbq2q
-elWo8sQc8dbdvFm3TWuMQUQTXK2q+2a4VHlkoRvnjTHamPOcGX8Sx7gQjB5rVbXteHVZR9NzxAQA
-gju13bG/ikkZu6YTouSc9nrcFBVhELlDUdDcGRO/eWOmYMZ4dMSXBwA2axnzjgAgvkIxvi34qWkH
-bWyvB0J41x7iHx/aNp4wKi+Ntt44IQV9NgCP2QKEcABYrNdm4hlxIdSqbNqhVvJwnPqDkwJ3+86G
-kOTpOBhGiF2sWWZO2eAxZ2liOkHgdphGkt4OU11m9NdHvCVCVaIz8HUxPeXXr7h9psFDShlPWLQw
-KcvT+wAA6jwHlxJGrPEhTFhW3jrKeGtMpKcSzL21BQUASISvlYiY8ekhyoixwYRZ97pWVRwzWm31
-YP7yJv3BK/x4t/vhGTsOTeL0DQ//ZNe/0Ku/u0+Xedm25tuB/t+/4v/wnQOAa3TnZ2vIL+4MYzQU
-GdkIeyWKXz10kVYFAOe1VJUIky9Fzgm5vqzHwXx1tQHKSEbfXG9kLu8ak2Vc5UlE/Rczd02zzhYA
-iFU/ugABwAoxSgIo8HZcxpkyhttdu5hZlCdqwLrOSylIRoMZJU2CDS8bnFqJYC2WCdj5ZQhuDsdS
-SiQMAOIhLgVbzKy7yBRkbaeP0xipYxe56LQJ1keL6d4sUYJYUmqtT1Y8emtuNqrt9XtjAWAZ5xiV
-4ADG3iiVR5b72BtOs6HThJHdvqsE6mGBdI79j8rLaNtWiXzbdoSwMIW20yvErtMvRgECkRBmrZd5
-td3uYtcR2XgAcDhOnNNKFKc3ua4AIOZ/Nm2Lgls7tZ2+vCxO8c88Q8FzUWozRdeJHNH2g6iQMQ8A
-Li43tN2sT06sMRWKZ8Q4r8pK5riMcxwP4nKg0/qJ1ooujcuot/XF+rttu4j1YQJqgP/jd2bb+7So
-myNkw1ZWq2aYUkYjyDqlAZE3ba8teOtiaQlTIIwEF7SxwXkTnH0Oi7/Z1L+63c5eF0XezQ4AfvvJ
-7u/HWC0o587YuqgE8k93jxbAmQEAIlP3bcX+9iux/3z3xytjvL/MIU/9QIv7WTw97TcI7yV5vVGZ
-KDhmwY5LsmKhT5aDG/vheKAZ3Q+6GZaf7Q5PD3u9BCXzy/WqLKlAFGU+WYPIITzvLzMiBRacOGc2
-tZwm245LXTIASDCNDoQAoO0k+apinDgNz1ut+FE0gHe2HZSSAGAPBng2eqh4PnQ6TJ5g3vlFKUE4
-QcIBoO1npaQDqJ+tBQUHfYJfqJLCW9dp40KIgkYpsNNOWxvtIgXyKY62EmP52Kyl9RNSFttIb6do
-H++Ok/FeJWDNyTqzHQdOs7zC6B0SezzrJ20MI0Sp/P7Yq0oY6zmn9/0coTkAeEkoAoCm64QUnJMX
-WbNxSww/tcECgCp+NyoAQMIpodkUnEAuMJMo7pshFv6XhAfk1Nmw3khrp+gBGpjv2oNM8eUE8NZV
-ooglILZARtumHWpVwpxZCJxnyOiu75TMkzyNfApjvR5GgViE8ec6dcvU59f3t3d1zosw3u2P9OvL
-4d+9X11V1Pd3I0mXdDXONMMMkzSEaSVYNhMp0DF4VWMuSwDotFGV+LhtkFPKGWEUCRPI23GAiSDi
-plYvGNl5zj5FRcvslaouVc6Qm8W9ZN7v9WKMHXo7O/8vu+5/+cnwKtN9rpp26Ax0/WH/uHtVhHUp
-Zjc0o01993V5hzC9XWNMp0OYOIWNCJ8//jZ1rR77thujrDHOHpzyWC0yjueXuVLqMPbIyVUt49d4
-gfYTTLumkWp91KbK83GODLlM2wlW+eAJAJQ05CxNMI3K4JylJM+ihVvIeN93wRoTfCmFqvJgxuCC
-QOSEBeYJJxdK7ZqO0wyeE3QQUarcBhesJzTLZZm5gIjRIzr2LXmJx2k02mpjI2neGJdLmU3QHodN
-Le+2uxN93fr4t/S8CJ7+vaccT2NlO8zWT22nUfDeLFdX9a6NlsF213Rjp42xcYpAkUfvsyhMMZNV
-lfD2ZD0d7KnN5iSIhLx4QIgcyfM67GXlvFjfHgd81j+YMAeY/vAPv45OJ3d3DxJFbxZtJqMt5xnn
-GafM2umF+lY96+Z6fYzizIwwnpEXh92qTCJNWhu7qeR22yhVaWsjfpNx1MYMQwcAozGv02E/ceuJ
-MeZ6XdCbdPm4P017JJjRzdPYrzKInRPJCMkI5ayifPSAmFDOQnARv4+X1Ti/bboQXL0+B4Cbq3Nj
-zPX15vaxDZN/HJ1xy6d9S1e8bXsXgjP2sdNaH2KGRZiCNuZPrsVfXg132/s/Wp+WuDebujXhbsGs
-KFtHV0X+dr2iKL8q9E9uESh/fYl/v08lDZ2BP7rIOGbX66LOeSR4nucsw0zwVFUCn/1iJ2uWKQWA
-VV5ZAM6p9S5SEQmjUQEs63oxM5L0d3IVgLzOg9UrxCrPGRd7O5c0jG5uPRndHEnRAEAmCwA2ABI6
-dHrXjhGqjxNkJQoC2f3+IbLKXxJQOGUBMoGreHe9dQK5SBOhagshwBQ1hODAW1fX1X0zbGrJSaZ1
-n1coBWozRQmshRMzN96dMPnXPgDA8TgicpoRbcymlsFP8XEkWXSYolXCotZMCkzAGT0iYqcNMhol
-lwJ5ZH3HkCWYgrU+bvSVwE6b6ESCc4j4IyKNR0evj6ooIdp6I0Z7Y21s9Pswzu+a9lLlABB/fQBw
-FDjPOJCKE5GQeCMIzSpRWDuxE108C9YLzJgLETcDAGPsru/iz4kX2T2PXndOLMnqzfXmZ4NQSDYF
-s570JtCPDf26gj8t9v/NG3ET9MPB/FafwtgoI9pMAnmV8F3TNZ0ZO900/enSIBdi1bR9N5pem+DA
-GENYZoyVKtdm0t0xXt/oC4T8dL8HbQCAkKzTGgDa4+Hff294Xz9822Q3ZdYNY0PK22E6zChzrl0A
-5+ZjE2d2NumPDb3MgVjz7Zdu12cPQb6X6TjTXev+7Ay+u2siwRMAYlB7rWQCbqNUvCjeOJ6wk2v2
-lALA+UXe9iNy0ju7mDkaenZN83azztMTzBfGCShHTgij5tn//uUEAIBRe2PMqD0AeBd6O65Oom9g
-hDAC0apAG1vXkicngGEtknidV0VmjL1vBiXzFy+wKBUXuAKAGO5COZMoZI737djqgdLVy0OzvlTB
-+RiwwDklJGvaIeP4mRIA6NqxrqtIrNruHwl9pglZzwFcCBYg2KCNNd593I2bK9WZ0zDtQrAhMDe7
-EOIiyIZwdam2TVdWXC+hm13kOGhr9QLjYKyd4rqgWjGBJ0ufE3XPO4G4azrdHaVadfv9pla9jsEC
-UyUKAGDxAvP0/qSG5REF6vXRTiHh1BmLJCUp02ZycRThqbX/H1fv0iPJkuX3HTN3MzvmEe5uHpWZ
-EVn3UVW3p7un2RRm2CIJYiSIkgCuuBCkrT4L91wI0EfgTjsK0kIQJAgQRBCSQHGG7Bn2m31vPe6t
-jMjMCn9EhNsx83AzLSwy75ViVYsoZKa7Pc7jf37/qTFVl3qvpzNKnsYeAMDShG44nsYynG7lgc80
-S50uxssl8sdj9faYtayspMJMpgq34tJoZcmlMpnRisiRD9/84eNmbb7dddYeyQWgkXnnYkwhdXDe
-UbjwYRZLAHi1qrthLDjMk40+frfrcsmdO1ia2q4/nrFf/PSf/m/hb97TR8f+eDa/fphaqABA6MUr
-w1AymYlMZ9/05ynjPqpT1nQzu15iS7Ef3UfHdifP6Pi//OFk57hQAgCaUqBkJcYa+fLpXpaMpVMN
-ABTAzboholTvUlmZDiHysTbLkeXNevV8A7BCmEqnthGTPIkgUip8+UTf1BqeRoerqgYAVLy31BNp
-RPV0XwsmQZxrjaoqE1szhS5JlWBpSh6m9jyvro0L/qa5HJ/pOxTPbopKcZjyGD24s0aVHKju9/v1
-yhA5xkUiMD9/tm1v6oKIHAUX48WpRTHFIXVS66dHVGu8qjgABPK1Rjd7pbjwk5e5ZBdw1U9um998
-8369qJKLbpwCcskRN6aG6IoS23ZAVEmTnMgRbXconhxxiObNxjAmnJsyzHuyZX5hVSTxWCJKVHqR
-rLRcdGk4Ju2o2QWKZ4rn1DLTedY0F/cA1EqcIwAgTCyXKeFO5bib1fLzBr8+8PYQQoZlODmaKmR8
-iMvjwqR3uXfnOwtNyQHg7MPzOzueL2deEtOegi85zyWvizKpwFM9eH/f95a4kqm10VvqTkcAeLfv
-meDLotr1Tte4ffdw9qG1gYi+yvrP67z91W/+6z85ISp7cB3FfqSkWZ3sCbhCBiz6t4eiLpTi8H57
-eBFaheLhSOvN1Zs6n7MlAJzcBAA/Xi8EisR0uPDh/r8EZsWYzqCnoBi44Xiky37gzJdlfSTi59O6
-Md1gw3BKkzEAF6+7okDFgHkLCp+H4pNfi4tgn2SMvXVEjimlGCCXNaLiArmMfuJKOntAJrdtX9X1
-hdrgQlrigx1TYopatd0hOF+bZd8dNV6Mp6KPGoXMzk1T3d09JEKyJYeYte1Qm+Xbt9vb22sXJpVJ
-smMueYIHd4O1NOVc9tYmQ3nyM3hwLuaKmaLsiZhiRORjrBdV31/8tkxROhcaU6WroLlZkAsDBZVJ
-c1MmkQITvLckAbZd31OskAPAru0vtL/u2FtqTDn2NrroYkTMoovPAToAFCWmiEjKkHZCdHGwp2SB
-BQBuONTqElOlKpBzU7Kth8TOeZpTQ0SN4jBNSjCyrqjQVPrswzS5Q9+x4G9umr47fDiXJosTTXw6
-Hd5taUp6XQZf1r7/vsgBieiyvb9vTPX4lNcCwB/u9kYrnlgD40gumFp/u+tWL5apdLWqc43KurPO
-LlavPkSy43bbOZlPjvqRvlpMomJX8P7Xnfhf3+JGQ+qMNje3w8y/e+yEXuxGAIAvbnD4dLcbYSS6
-2ay6KADAMvyqvMt0Nny6++PHT5e4XygAEEIZrQAgVwU+8QbXRidj5+7sIExMoRMMAI5ER6KqqlGy
-mc510yAqlKyo62dVCCpoUEiJTGGUusTIClHI3BRZ0pwqLjWiiyAl1smDkbGeglK8JyLrQOWWzoqx
-B3sZefH+cqwkzZUl1z2po12Y+u6Y9G1K8RSINssFkwwR0y3DJEs7LoVMtca+O95ubux4jC5A8Ki/
-dyhLgfvBjkQ+sd9MVTgKFeLdE2IRAHSlJWMuQK1l2opKcUvOPpGtUu4uGUtDrc9Sjq63uWJcyc0S
-Bwr33fj69sbSBHOeFNc/PIMqXWhUCd5I/bFGnUpGLJfIcjdFpYQLvjFl0mK5AKoqXYzOTdVSSlTp
-a+khq6qsNSpgzk2m1rt9/8yUdsEHH08uptaq0eqqqR/bXhbLQ7u/sxBxyf+8iVUeVwU08VByWsrF
-mzoHgFxyjartjxpVXSA9vS0ilycQECpLbl0XBFnTVMhlLvn+01Flqtbyu12nFEd+OYEYF203oC6s
-c21PQiHQ+M9/OfyPv5z/ZouddT+6kt0cv1gbAHC2Vyz8g00Whjsm9W8HMdtZF9Xr2iXo0Jwte+JV
-IQaLf/Oe7vYnALhdLcQTwUozuL2uAWBxmehLJswBYeZKRhfrQjkXwJ2TucsSMdVGU/9rGPrDiegH
-r40cZJgjKp0BIuaqqFSRBBHKlEWB8ANuikbsLRHR6xfF4GYFMAQPAJlSLsabogKA3hJzl9rDRXXr
-QoqFNutVdCHJaZhiqVeAWn187IiczrOxt/1IKR4Dd6boJQPnglm/oHhO6h2mVKRxZS7S+SSUuF2Z
-th+RX0ynda1ddBdFHWKacR3crDgsFsU4UKrG+hibpnr78R61SqPxTDKaPbhzIsVbd1aKn4ZZAaOc
-Bedt13b2AO6sBEtDrUTEuGAq5dMCtVK6rPTi2fLDuSmefYodnJsukgfPAYB8eO4EOzctF6InWy3l
-cPS1WQY7W+eadWN7Ukrc3l4npRBZlx7sUksieg137qkVYyr5mXJM4ko4DgCL6F6b70UdR38yOaRh
-SEeTQr7b97t9fw4+iV0TcfLNq7VGxRRHVEwwXWVvbq/f3u2KZfb+bl+j6g/nlAQ3KGKYyM/v7x53
-+x6i/VKfvqriP3rN/9a1eFmKWa+y8/Hnq/htSyhjPtn//IYsnHl1W/FTsVh8dAxlfNfCZy9qAFjE
-MXr681fhfk9t2wLAj9eLpYClAGTx5vYyzC6L5clS9KEo8G67Uxzq1SpRvJ2Lm/Wi7YYM85OlZoHP
-jJJE4i/L2pJLL/hte3y32+dcomJqiToD1x0UiuD6KDWyXEr0ki2QISJjYoHMFKWLcNeOSglEVEwk
-YG2cIsWzg1g9G0s+TTkpxZlitVm23YGi77rRFKWlKXX7kSnnpufieoTJ1Lon21syRdl1NsYpmWUw
-wVArxRjDYjzYnzAodUHk2nZAmaHKeksXBcGuZUwWigXnOUrkkjGRtFKnafQxro2+MUXJOVlnFmUg
-nw5X5wJmElSe8F5a5b2lRZUBgJxEb4kg26yuHEQFrDZL96SVEkxKxhCxH8mT+3C3uzKG4hmFSr8S
-FzqevZti/YRXA4AC0Z7nukA3RTfFNP/+vB+maQQA21snJucmBczSdDxNqNUPwTMf5tJG+LDrVoze
-t+dvLbzSDlIS3J3hX281AByE+aY/fyHCN+10tD76OBIxEOSD5My6c/JABiwuvdveppp0cL4bzm03
-ELlxINSKXFzfVNadAaClJG3XXW8xk/9w4wHgf/p9//UAANAep/3B/mra/Mut3h9so6ZXDRsKA+py
-2EdvX6r4Fy/OVSGy6F6q+LYP/Uj/4jfzH3andMMIoYRQYlF21iV/6TS6vtD4aRyqqr7drFPxxtS4
-60aYrXWst5Ty4yhU8heb6ewAmgUii+CmVBFaFwoR02yK4mq0QZnSBcdBNQskyBCVnER+kb8vAQDE
-pBg0dX0JJBij4Lt+RMRKL2KY/MWF7TK7lF4SA7Fr9/oHBhzsiQ9uidKElxAFV1Ijdr1VSiTwMgCk
-MB1Z/txdTlMjv49wDp78/OwQ3Fsa7FgXiIgS2MlSanQqxa1zEqbtvr9tjHUukUW4kpIxlNxdQH2I
-WsFsAaCoNABYd0bFTsNsau2CR1RhCnY82J4SgiX9meTDYE9NU80uEDld69osPcs1imc4SpgsaqUE
-c8nwSwYAuJR5kkhOsHS6pydzUT4rRfGsJvFs8nfobT9S01T86dl2g9+NUDarfcSfv6yqF7cXl0gA
-+KqCwbuWlUU8rzV8N+nkf0jBTzRZOt7dPdzemFIXTVOtrtI6gDS3rlHUyJ9l5UTkYujuHwAA3PmC
-WkB0wXfWxjgZ5V9j+NCeEKZKqo+HSZX6upgrfnp4fLitsXXifS8fLf/lO2dkmOypxtAs4O0xczR9
-/Ti3x0kLjojfbj9d3nTGTKVRsul0MFppJWwE0zR+PL7QONNZlHzb9TXyfiRy0dSaIFMQekuKQUeX
-+n2DIsPcjaOUCIJTDEwynbFPFFFy21sXYdf2zXWxbgw5cD4VHGYAYJLrUisuXZhnkLooXYQYJ8mY
-wdySQ1244GvFh65HXSBmNsSUqEQf5UIUtb5pyt3ulDpN61W92/dYZc5NGgUqrlEgqvv2AQDSuaNR
-+BiV4klGleboU1z+fFcAACKizJIGW3EpObNEWqm260/zgfzFPlWj6kdiTL55tbko9Q9zCpYuji/B
-I8t9iEqJcWIaRcEBAJDzfpjZEyP+snWZ1DUqYBrFxeei0mlvD/b05e3V7MJw9JsXxvY2tbRSW/AS
-3CfJZ1MDgHyakX8GhtZmGWVQgol5AoC0zcxN2fUjaqVRlLW2A/UjXQx73NmPx9cLAADF43ef+kUc
-X5YCAHgigf4XX85Hf3rN+79YnUpOn2sAgDhFC/lgz/ZgmeJXTWXHY1LAMsFNUTImLE1FXdUaybrG
-VLvOqkxJiVxJBzHJsDrryM0xTG+33Y/N+Z//imaKK5VHwdJcQqkL8uwnL8vrWjdV9vpG51waFbPo
-hF5olbcnOPpTOwl2PnQzC9Qns95U7wcAJuFS8xE8Hdtd28pimdLEs4upzKc41Bp/+3b35ap2LigG
-LoJiUUp87DpVFDOdq6LoLTXGdP2I7HvBJ/mAukBUjMkj0e36MtBIkKFiqe3CmVc845I985sAgOHF
-S+HSVQ0eAKILmrNURUFU2/et8HG7/bRZm2Se9dTanNI/0otkXAgmFWPOTY+9FUzWGnuixlTjQOub
-qu/GlBFqVIGcpUln7KKen2Jjqn4ctFIMhK5Qo1oWlY9A5Aaae0tEDrXa7rq0Jd7vu0plz7FE01Qx
-eqX4dvvpqy832227t5cqEJMs4a4AwMfQ1Hrb9sJDAp3nkjfLRTfYBHdIxf5knxHPHlRuk7vPQJVe
-KMEuk2LlsyD/4iZIPrgLHXlybmrbIdMlPOXiw9FfwkXEx96aWo/94XqhEVGrPOJyNzFP590IP7mu
-v1L+V7ujQME/zCUA/O/b4sGqg+b/cp9/sKo7w8GObvYazpLxUwDFxWM7kAsoeV3g9uEIT3Z/44Fc
-jEPwN6ZYr+rudHy/79IUHPzgc3LxZ3n3r3/z6cNcfmsh6CUywOh6gs7z142es+Vk+79QrojnydG6
-0e+6+Phpr7x9tz/WPDZiagrVUfxe6VAKAFgosSnKvTuXCyzimUn27HWguLRuyhUjop5Cjbhr+01T
-IeLbu/sfVkgXST5eFKumIKIFss266dv2ixBXhQIAXepIIyr2VLaPg3dqiRAdudjZQ428qmoX5pKz
-dWMmR4wJF1w3Hoq6dG4K5GuzXK/MYMfaLLtuSGcekVu9WE6SFbVGzDw5IlebZfSx5jlqlcwQLE1J
-34JadeOhrFTyS3QUgvOm1r/75ruXn1192HepZM6fLgGVKVNrlNySS1C6thu6wVLwRBSc2w9nAIgw
-kZ8DeUskFyKBCPrhbOriYt3eWwc8OrfZvGj7ftv2qbkZp3BdaHKRSaazy4SuMXqSkJbjc1a6XIi2
-HQZ7AoDeUjz754EVjSId5M+fJss6OgOAA0DEdClVSznYUxJNeCaSPC4/i/QjUgk1RBeIUnZ6ODsI
-k3Xnr7T7eUk/wYevtBO060LmQT2MwKfT4esBbASF4o/HYikX6WoYxkll0kJO5K5qnZ44kdt1trku
-Xn/xohsPaUoVEj/ChaaptFJtf0weZs8i+HQDDnL1obP/po1JLvp//WHfRfF+NjvLAGB7Go0MK5X/
-myF7tz9CcPYwFnMPABTBMnyYUfE4TS7hy//WVxt4mmb8/32Q5Sl/0EoUmi9rnfnoAOoCHYDOIAOv
-UekM3OyBS2TgPTHJE4uhtYF8SC2qoJe/f3opRM5FiP6ijH/mhUUfXXBGl0VdEbn6pth1VqI6UcQq
-S/z7CFMgPwkAgL4bq6cC5XMOYM+zYqLikmhWyBkTyQ3ERVDAKJ7TPZBOHLJOI7bd4eWV6foxwsSY
-GNx8u2mOp6m6EKNS8VT87RhQcl0sE+UbUSUqcnC+aeqeQmPqgx02a8NAAICuFy6y9r6fciY5Sxuv
-1vhu21YqSwsa3Dn9XcmKPd0Atca2G7pzRMV1qdtdV6MGAJ1nh8El5214ojakZWPJoVDI8tSmeC5Y
-AwDF769QAEi3YjovhqN3MVZ6cXd3n1b8t58eBJOOewBAyTlTPVF6yLXRwIVWuUAEgIcZXxk958vs
-fDTIDJ/4iyXj1e1wZlrlO4vv9sfXvE9SCCL68kVFLliidbOqtU75TY3Y9Ta6ePaxt6SVSqXith0o
-eOT8YbS1xm+3OwC4KuSqUHGK3cPjW7jlM+mi4lhnefb7j4dXDUuQ3iEsDnb86Fimsz//Ykk+usDE
-oqwW1f0IYg7k4/3+mDCGt6sFcp46X+lj1iUAkI9Jwmk0JnTh2+8ek+euAuj3+36/j0ItuKTgpWnO
-OgkAACAASURBVEQfY6O5YyI1bpngqdtiqguiFRlcFZKL76PbhKwDACahXOAUXRosTksKAKIXptbM
-OUQFU35hZRYlkZuOoTGlrvV9e2hMeZrG5xwAnkzmIkyOAgVfmyKt1HQuRh9fXpnGVJ4caqW4sO5s
-TJXsYe5PQ42YFGrIpUKedDKWpn/HeF0gSt52g6dDY6r3j/cA4EOUjEGY2q6vEfcPvTEFysz2p88a
-XCwKOQtT6a63dS3f3t3/9M1m1/YaBflgydGp06hSJzhl/z7GxlQmZylIRsSebN8djakAoOuGZ0ZL
-ch6w5IhctZQUz0/gjO+PMzfF8LQHVDIVFhd3CCXYTaG/fWh/+nJN1p1OI5MsU7zKlALWW0o2jcPR
-cyUZiJCyeR8PAXuCLmS/6bNHUiPRyU18KRfZfPxyAdadP8s7IdSvadGd4dPD3gXw85Ra68hyItc0
-lZsvfql//fW7RZlJxtL0etfb3tLrlzd3+14yttv3J4qOpv/0TbWs6zwMjIb320/XL4w/ewT32ZX5
-ycuy7Y+H0zGbj+PpNIxTqYtffXS/2jOQEgCGcZKYR66Gmf362/3j6L/XeEpm6iJp9JtSwGFExKRQ
-P9LwjGS7aZaqKADcfW+xXo4TQ8WGAE1Tdf1YabQzmKogcoqBnMIQwFSafIDolBJpTP6mULdfXk2O
-kMukAL8yZntvr43KJxUdKa6ej7fBnhgTXrK07DQq54ILk9bLx9MAANtte9OUswucqVQffK4CUTwn
-f7hNU4ME54JEFcg/f8fFmCrlSommXt49tkrx3toUlQHAciHavo8gACCQAwA7x/efWkRljJZYErmf
-fvZFupwXi8tF5FIvlgtExSQ7UTxNIy4zIoeS77bd69ubth0Ul4JJCJ6jVEXxXGTMJU82itFHO8Pq
-+mJjemMWKcLJJU+1y3mybTfct4emqYicLpaplZt+n7S+ybpKL+xIfe/TWXM/UqVLshfQZ7KnUIK9
-3e5Qq8WiaHtqd210MfXFG1MqLuPZX/ooSgHA2xM8HMlk8a8eGRG9nzTHmivNf7QcDJu6KKbTYYhL
-o9XdEOCJBgwALoYYJopns1637dCYujbLV5vmy5VxLuza/hx8b+lPX2/StTDRRMfZkuusWxv8r37K
-2++++XdbGGb+5ebFp0lXhfh4CId2/3A698SbCudsmWWZzGXneVU88VxRfLmAh+64XBTPPanU7dIq
-b4xZiu9DIFUWRTyTj8+t2dRhuW+PCkAxBYIpBixhQpCTde5JsZiBR1RFgV7wKpPdYJ/o/pcMeAjw
-rGGcBGhUdhghuoxp70kr4Z7oysF5ZHmF2X7XaZXMIFRanaj4pqnb7lCbZbI3nJ9EdekGQOTgzkm2
-bclxpmj2nhxHmb5jz7NiLP1Wzk1tf9R5dv/UPLb2CACn05h6L0xxnvqYGbM0fblq1kWVWs4Ooqn1
-tu3myT721sXoXKiQd+MhBa6IyrtoD/Zy2BPd3XfIpQt+sKdjUr256GNIFTDMclB5Y6puPDAmao1E
-riiRK/XqdtV1w9mH5UJYosGFxBRUSjx2HbgjAAx2lJw5N10gp7n05NzsG1M+7zGuMxdjqiK4GCVj
-yFRT10qJ9njSKEDlSUFkFmXbHZhiqJWLMbUFAeDvrEXI8P2kh8OhLtQXyxg9AQD/fz4VAdyu89cv
-TKOmX37Xc8GPExxGj4orFCudNaZ2bgIaNKq263ftnsgBvzizz3RmXPSWUHEXvECxPR7artd0+OnL
-9T/5v+dv+nOVBVPXizgCQNsd3lyrTcV+/EKt0YUpcDpWnJ5npt5th9ZjN/hC5q9r/vhpH5wFgF/8
-yUsAaEyZc4k/mFE8TgAA7XFCye5aSuKcvttXRUHxfAp+11nFYdfZTxRvCkk+1GYJwSsma43LonLB
-hSjjFJjkST4Nl3aPShsGFbdRaFQ3i6rtBgdgjEn3zDix7kk94mLsyTImfIwVZhS9UiLFo9u2t841
-pgR3VsBsb5cLcekrxWB7y0A4iG6KqWkanNOoVi+WXW81igu1IfoYvQIWyDf1sj2elOL7+8FDXphy
-1499N3IlDr2Fp/njhRJnHyieh+AVl11vK5WlGcVM6ARuUoozJumJpexj3G7bzU2jlUrGDkWJifoP
-ADOdleLtaVCYEWQAQPM5GVYzJij42iwTyWu72ycz6bJS9jyfXAzkxgMpxsCdZ5D7diRy0QUmGFmX
-GnmQnSWqtHD7i3gu1dBiKqvICRgTu1O/bfvBjs1y0XaHSi/SsOj6puq7I2PKTbHCLG0qjeKjYwmV
-UBeKBb/taMo1APDDiZZy8XdfJzkr/MefsY4iAJSFJBdKXQiF5EMgv3043piCcbFuVi5GriT5YBal
-dVP6zVJp6DB6o9V/eJP//Vfhl1+/u2pqAHjbOQD4cGSfvnuvi+oLw40xM1O6bn5Wz58to0JRNqts
-PpJnRdUU4bCp2H7Kth2lrBcAULLGlMj5qlCqKJ5H8pYC3GFUqAhEWpS1WS6xGsZx3ZiZzooxN44u
-hoMdXeRrY2x/ipMAACaBCRY9mIo/ncigUZ0oRhlOAU5uSt8sM0ZP3mdJ/pVhbmdgwSOqZEelUaVC
-jSXHlUQm04GtUWhUNeJ2t9e17i2Byi9H1+W64y7GlDUm13t4+qTcQKOaXXAUGJMOoq4XGoXt7a7t
-N2tD5AL53b6vTRHcFGUYnyoQJzedg/eeRxfabjC1di5Q8G13+PjYScYczQog2VdyLntLkrHUW0j6
-n6TRIB/SaibIUgz8jI9PooHeUtv3m6ZOialiLGk6EtABALLout7yJQeAbdsrDrebdUoGkMtk7JUp
-XulisCdd4LP1C/lZcwbBF8sy3WAueBRqbYqkTcq5HOwpGaf+/t09AMjoK8ETxpyILE2OJhbcqtSI
-WBeKSVSITBX8qwoA4K/f9sjgR6v8PzDzSriJpgSIPtjxbtei5L2l1bXpBnu0vtby0PeIiIHIuuTY
-NR7oaH3X27KQ0dFf3p//2b8af/MQDnY0Wfw7XxTKd3F4qFYv+tE9PhD1HaN7dQ4fzuVv+mwYp9MU
-yTMLKs/FmzonENuOPj7uASDVfBLIzVSaC26qAjPZjk+xB6hpHAxmAJAxnaYWa7Pc7traLJkEyLSC
-CTk3jRlm11u6/XzBuHBHQi69J2Aq6RN9jDH6hFNeamnnOBAxJs/BOxfIunVTd71VDBZc6gy0Eoox
-RIWKPdtDJOn8ZTsplaaTRxeUErvHU22WZMfNy03Km1c6u+9OijFda5mdAUBlMlUe7XnWShE9KX8A
-nqNBxfgzjdDag+Jyvaq325YrQXb0Meo8czT97Ri63s72gFo1prrbdc+iiVe3LwvESueNqaMMRpcl
-cuSSyDVNnYzQJWedPUQfTa2rTF4aZNE3KCpdJJWbZIzi2RhtqiJNukAStO7a2izdcIjpWlN6u91t
-qiuWy83mRX8aIDWwyQFA11kA0Hk22DE1ChLL8fIHhqgymRphKHmtsTsMisvUFsiic25yMdqRXm0a
-ih5U3ltywaeSnUbxps4XZbOI48/q2Wh8tYg3vCuZ5Q8zZufjceZbJ3+1nf6Pj9n1EptS1KZExR1N
-t+smiQWD80WJC8V8jCeKEDxgQcEDU93h7EM82PHtrv3HP9IU4Zdv23/8I71cFK1HK+S7LhIoZa7u
-T9M4xbcneH+CD7b65Xfd1RI2NV+UTfQWwQHAy/L8q4Mexunj415n7MfrRYJSaSWaKtOIdaGI6PMv
-XmAmdcbaw7Rqim/aqcSYFBBJ4tZ3x08UEbHrCWa70Nj2FmNaRq7rCSWPQlHwoJbPmWj0cVlrxgSo
-PFkM0eylPM8gU0tokiw6YljwUkOaHi7K3tJAIRFQarO8392vNzdtN6xeLBOLszbLXDLnpvXVguzY
-NPX+bpcGt/d2VsAU8u1uj1wqCDFMzXIRp5jyBEuTrjEZIiXuSGNKRPVut49T2DQ1MJG6b7pe3O06
-1EXbDcZU49NuSdlkGlMkH1Iwc98+gGDv7lpdo3MTU5wJ1o2HBH3YNDUF72b/p2++3HXdtTFM8nj2
-lii6SJAdwpTw61MO4M62J8bEZvMCAC4eqcEPR2/P85tXm2/ebhWLm806aRmQ5chyLLNL000rIsdy
-ac9zdMGTq5byeeIx2XCkW3E4etRqmIIlt1rXdqTjaWqMUUooxhKivOtspRfkQ/AxeQvFKWbnYzXe
-XbN+787jeP9STj+SdqDIgasPc/nTW5VNw8tSiKKaiBIdmjGhUPgYJ5DJaCA43+Alcq01Ao0aVZgS
-gcM5mjY4RfVie9/+uPGHOP54QW+023Ve8VhjCNTfSvuztTbIPl+4Kgt/cmsej/DN43mw5+WieH/i
-lc7VefbjkJQOb16txaKsilpnrDbL6GGBzLmIiFfG0FOo8Pa7x8fRf75qunG+jPACAMDntUxngCqK
-nEuafbYsDn2vM3AxpueuUdnxiFwiqm4YleL5JJTiz0lweMI/pUhPccEUnoNVjNmzWyLenwaNqtYo
-GXMQ++5Y1vXQ9al9O8zu4kzqnFKi60fGRXQxFXzSWe4grptVCp84KuTy42OnK8wUB3lGlpN1F6Uk
-cKV42x16awN5F8CSS28kWWipTJEduRJdNyTxrPWxt2TqIuG7U3aec2lpwkymxAAAMFsil+RCzuVh
-HACgt6Qyud91q2tzv2sR1bbtNSIqVhcqugkAdMYU4904cCXf3t03phyOnile6cXN6vrV5y+IiKzb
-bF5oxGHor40BAIpnrJeoixinbhiTwmD/+FjpsjZLimeNotJFcA6SMJlfbtdqKVOsD8kuIEyfrwwA
-pGoSokp3wmNvX61Xbden/07z+YNVJ6a+HgAZDE7+ug8A8LJk/HDo37fn747LsqwNnx+GYVVAUwqF
-Isap1IVkbH1dpJvu3bYlyDQK8nNtlt/2vuutm/3Reh/jf/YZu63Hv/7mWxdYzeNffWCFzIs8aMle
-3xRxgi9v17ksf9F4Ld0fT/Xvtj0AfPfYacGzPDtN8bPPvni//fSHA/+03wPAVSFLXSDnCdufKLNX
-xqSDzQ5jgZjmvzLMrwqZhtYBYI42VYHag49TiD4g4nD2TaEA4GZ9054uOffz1BwiHvreVEUK0BkX
-0U+JTe3jxc+ZceFjrHhuiV40tR1GYOpIxCYXnLfkmGTPzOdUFTiepkQvG+y4MfX7u8c//dlXiXyo
-kKcfvUBG1jk3pfRAMNlbShD52QWjy56sJZcSBgXBz3ljyndfv08LumkqjSI5EQFAU2nnwjg4e56T
-eNZUct0YS1Oyq3i7a1MItN1+YoKl0pDw0J16XWGySDq76CCmAFrXi7YbTF0QOeTSxUA/sAC1c3Qx
-XPyO4AIXGHu7XIgPdzu40MmdRmEPlnLWmLpayve7Yd3UGgW5sLlpVldXXCrGxDSNSeaAiLt2jzzx
-1nMbYrK577vj7epaCYZc1mbpou/cySzKusA0sBbPXqOK0e3a7tkfhIisiz9f0qvV8nZ9bbQqa9Oy
-0uTAQ4ZVFr6sL9fNL76IVXb52xAvzlwqk0rxb3fdZm3ah33Xj2037O6Hq1pbcmkyWjr7f37K/9v/
-eff2rGuED1Z9VcHHwwQAnWO/fd8yAQsOfp7+h18Nra9Wpb69br5tSeb5IcjxdPr0aX/c7wDgYfsd
-APziT14KFD9+te5Ht9Bo6iLZtEQfWPBJvj8SvSH3OPoXGn/YF8uYTlHQ1XUBAC74ZLAVXaiW8i5d
-u6iujfndN+8QlYvR2kFiSUSbpiY7knUuzLooH0cvGZOofIwxTCqTD2d7MXkGcNEJhZVK0jSVkgR4
-CjnWTZ1snJUSY2+78fDl7dU3X3+ozRK1en+3Tz6KOZeWnAuTpSndVykeQy6n6FNUrZ9GRnpLMju3
-3eEnP3q9a3tTlCnmXqyWAFCjjnHa33cAkJLIb1ABwO8/brfbT+tV7YKHMCGqc/CDmyVn66YO5A+z
-qwusC0RUtUbnQsXz5GKtUaQp6tQlqLU2tR5/MCyhGKfD3HaDKoq2O0B2Ttnqtu23uz0AmFp3/ahL
-XaNqu965KZJjXDTLRVEpIhfPPsYpxklVpVLChUnnmRZLsgRPIVCqC6FWbdcrJWKcvOcMhDEVE0wp
-MbhZKc5yOR7oSUlFCtjZh5zL24q3rGyP0799+/C2dX/5x10/HL+1cOnAffep//0n/2ub/6EzCY2Y
-oG5NveRKkHUeYKnloe+b61U/klB4EWmRyyX/vJa/2XZtd3i1qa5FIBAusP0IX9zgfsr+wSZTLO46
-/xUOb+pcoNjUPNnVLxeFFnyRg1I4Tf67jx/57NLZLxQWiME7xeNM56UARHW7bogocglMAUCB2Eem
-M+ad/fyqmOlsiizDXCuRYZ5hvuASADZrY6qiLlDXxXD0dYFuyp0Lzh7M8srHWGtkTCrFmVIA4J/M
-29zskkshAFS5ci6AOIunfNQFMLmKU2ClTNWhCi8942TM6KLXKPrR9d3Rx7hu6t/+/tvGlLY/JaF8
-uoUOc2RcXNCCyBlMKYF2ECVjRa2TrxYAxLN/9eIm/fTOugRTQJY3dfHprsVMJhjb6sb01jo3PcNr
-VSaZYk++PgoArDu/2jRaKaZYyvuVEoE8keuGsTbL3k5EzlTa0hSJ0h04HsjUuuttUerxyc8v7djG
-VKYqNIrt/VEJ9vGxe/3yRikxu7DddUqJMAWOuFwIUxdKcZTcmKrWmjHhJahM7rrRDQfnpuiCPc92
-Ot7oHAA+r2W379zsowP3JDAzRXlV61pj1w2vP1///uPHpHekyd3emNQxOLn4nNp1LqbjWPHYulgX
-qoIzAHA+U8Oc4vBnr5Se/I/y7l37vSaJiNruYmVztH4GCVy8f/chl7y3hJnsrPuH694UGXj/pkEA
-eFmKL7KDQvHVbfK0oXf7oy7VqxX+uhPZ+fjz9TLnsvNc8Xg8jUTkHDlHZzpdFbJCluZ6XyADAFMV
-uiwA4KvPaiIXp+AAuODRkQN4PodM07SHqTZLqfTJUjpWl4in4FFyxuTu4aTLLNWRUPKkakSNSvGu
-t8jltu03TR2nSD5EF+x4fPnZVXB+8cywj742S9sTR+mCAw9ETi3RBSAixaQlRy6mnZD6X4rJ6GIK
-DNKaLkokIiZZOuldDDpjSdPPuCA7JkGOjzFJ3xwFxQVZt2lqSxNTnJIJFoDRKsFIYvSSMRdmECzZ
-5SouU1aQc7myPk5QqUwjutlXmidOv1a5UmIcLgP75GKlF86FosKmrsmOqSaWtqgDiNEzLhrNfQw+
-xm4Yh+CIXBLkpslJncF225pKk3Uvr8zd3UNdy+TAN9jRzf6mqD4+dpYmH+MXt+tvv/vkYqTgr4sl
-EaXosR/pMrCGeJg9AHQedJ4hqiFQdIEXqtILL2CwJ0tOiIImZ3SZnnxywTG13rb952uTyCNpWU6T
-a6N6WYpVqQ2y37jFRBP/8yY2S8Fn+plwzVLErFgKoBBTiyTncvPiCgDG3qYhSWTsu5YgEQpm/zI7
-/OW9+Bd/83aaXAD3heEtiH9/Qq3yf7W76Ry+LMWY1b/90L/b0zdW/U2rvunP37aUHJrWBRhkL/hh
-/7BNEM+lgLKslwIil3wmAFDnuaXpxWqTgA41IsJcFIiIjSn3OjmXuKYUFycilpsiOwffd8crY1yE
-cSBzlSsmiSwA6GIJaWa3G02lk2VLrXHb9o2pdIFKcV0sP3732Jj65CaU2WBPTV2nKHy37xVXi0UR
-HfWXWfWLYt4Fl5Kw3b5PxiqXvoHi0cfNpknmX7liqFXX7gHAzpHIbTZGKfEsH4w+JtAxAChgKfJ5
-Cji44uKCQU60SV2mo70bxturhj/t2HfbdqHYXksmwMcoAe52nTG1JTK1RsTt9pOHGJzrBpvCLQo+
-+EjB24ES+SbxmS8YLGBRqOCmCjnKDJl0MSR8eQK82hmept78x8du3dR97zUKlp8lwJXRu7ar9OLl
-ldk/dMuFAID9fa9ROTe5ALfX1+3xdNOUbTvMLlS6aJMttszseUahFDAXoxJssKe6wEov0mO/IKqU
-aJrq3bZFVIypOMV+HMT5cgMk+JVB1h6nn270eiF5zgCA/9Hr9jjNovqrT7GLM5svrfWj9QPNV03V
-tgP5wLg4+9B2AwjW9sezD721hX/8L7+MpfNiUX5VQc3jbGcWqUaA4/ijpf0ChvHMmdQvXqxc5Fme
-8ZwRqBoDgkNwJ1YofvGprk2pUIhFmTpchYghQyICwZFdqr/kA5M8wzwKFV0E7wFgocRjb8uyBoD7
-9rjeXN21tER8/dmVzmBydLs2ta4AgCIzpkrFHK4kqNzHSORc8OlRouTj8eDnHCXXtVYcnm+As4/R
-xcZU0UdE1R7a53vyslYmh4jx7OkwNDeL3tKmqXdtT5BFF1zwfTea9QtLU6lx7A6mWSnGdZb81MRw
-9JvNi4Ts7C3JOKXav4MLMr/Wl65+Cj7T0nz14uZ+n6xmZQxT1w0KM2uPb26v7+4eNOLj6JHzthuc
-C7drUyOeXIzRY5ZrVF+aAlGpJ51pcudWjHElx4EUY8nDytSaMZk2ZNdb06wee1shPwwuQQ+Mufyv
-d9sWJe86m7Zo+p3bnlAXOZd0GAZ7MqbqRwcAnlwyUAKA27X5+uv3F49NLjL1vTIUAHSe0eQo+JS+
-V3rhpjjYk65xscg1Krp0YIqhfdSopAz9ft+YOhVPc8mFUEkxcGfht+/bbo6Rq/2U8cyRkgxllMwF
-H+uyEEIhv/hLutm1XU/WdafD+7udiyHJxHPJaxZfZ/N/89f5X/ViOh0+WHXMsYmH7+4tMoiCAcDH
-qLo5LgRru06xcMO7Rdn01s/ZskboA4bh7tff7nXGblcLU+uUeGCmxKIEAD4TIsIU5miPRN7TOfhk
-/G0HO5zapJlrSvHFC7Op9clSe/BEpJVoFhiilBKFwt7Sru27wb65Xf/6379vmqrGVDSYJGMDzevG
-XGpBWhW1rpaytxYR+9GtrL+5eDkyiao2y7bvUXGJqrOkmCRytUbhJ8ov2JwoVHTBxVibpfCxLlRq
-nCe5AdlRonLJFd06O0cfo3OTzM7b7ackRpCcFaa+6JaTGE5xAIhPzWqlBCquFKfomqb+8vbKEm27
-EwCMj6Ou8O6+3awvnVoK4fXtTWcP6aguK+WmnAnGctlZ0oi60mm2yTqnGHu/72qz3HXdc4hfZWq0
-h663ycm4a/cHOzImL9gVLlL8/eXKJDZ16od0vSVLkjGNwvYnF4ByVulF1w11oY6nieKZcYFcKiXG
-A63WN5A0/eI8u+DclIo4iOo0jXWByGVv6dqYTPFaIrhzlamuG3ZPFOS27cu6tofwPErKmMglJ6L7
-/THmpXXhVgMAkGdVFrRgfNY1cPn7j4eax7/3YvzQ2XZ0FCIA9NYeBpesMN9++JRJPAwOABxNL7ND
-e/D//YcIAP3o9pPqCGbv/uh1UyiKsFL5x8P09t62HgGgLtTNQt4Hk83Hn7+sHj/tCQQRJXmzqYuE
-2VhwQJhAMAB41dRpG4DgE+gvXpi7drwyhk2uqWsv2LODy/MHWc7Pp3SKfPjUpUZgCm8YE8118e2+
-f3llttuOK5XqKshlCnYPIaSkretG5nm9qINznXU1i0MAANi2faY42ZEJngCPiMgmB1wwCVxJo0vy
-geUy4cNqjbY/9ZacixImyViMft3UqZXbNJWlSbH493iMcboxi2fxg6PgZp8wEwq5j1EpUXHZW0/R
-I5MJ8bBuavfUJnNu6sZDqQtjKl1q54Je5tE58rPOmKPpdx93RpfpUaSLTjGuBONKJWYRJCOZxFV3
-c8WCLnVvKalf0ySDqfWu6xUDchE5vzRZs8u4cNot5+Ap+uB8DNOrTfNu2+72XZyirhdkh4ddmyl+
-PE0o+dD1zk2VynpLfXf0IZrFk/xhytMmv3cXDKN3McWHN6Z46DqdZ70nRFRKCFHUGi257v5ARBoV
-zcey1vVqlSyOUhVIFksefMBlN7PXN5rIPXzaAwCnEIo8/P3PsJT6j8fqtQn/0a2+reXBjimRsu68
-bbuj9YrD5Ijm8y9e5v/Jl8ff3nV8pmvWr4386UZvDPqofqFPt/HUE7THqayNYvFWHsJwpyW7P3l5
-HrvBfzz6mMld51OxPwE9FQpEpNkZY2CKb9bLrZsMZo9dd2vKruuiUG4ciWh9c2Odk1NsbdAqfxz9
-9fJS7k1I595SVRSfb9bw5K9qydV1zkBMjtrj6fZ2TcGzXNqedI2SsZ6sZEwpkcgLSnGzwCQqrm6R
-yCHL6wLrGlEXioHiMhEqo1AouTsSyyVFj5LbkRCVLvOEGNlsXijFBgopivAxImL0om0HjcJFlsqU
-PkaYc43KmIIpRi7AZZJGpECot1RrmfjpRa0vUVCavXRnpUQ32OQ20PX2i9t19NFFQJklNijyS2NV
-o4pTTJyfNFOfOKGm1pam3b5PZR8X4VL1D16jSiV2pnh0McXDptLXhSaihRJt1z/rPsq6bh9GAOgG
-y1El8ymWn8mOqKsrYyDxopUCAMZUCvlev7615JJjUqrqDvakUdykvLbWiHh/7JsX9XbXXRvz8bGz
-I/Vkh6Mf7CGGKQVvjMmutykjIiIuWaL5n4PfGGQSF3F0AX63tZuK/VnDXpaMT6fD1wfOJLzrLAC8
-7Xj6h6Pp7MNj2zuaDoM72LHvDv3oFIt/dl3+s3+Lr2tWLnA/gp78w6duJWbM5AefnVCsDe4pHuzo
-IgOuhFCfTuHqxYoF37oYnd2oy+p/c9sUiIjoaHr1opqZ0opt1ubsRpScfFwiZpjfrhtUzLopYcZM
-pXWla8Q4hatCdi4CQBrubg9eMdi1PZEjIjeOP33zGZEjCnYgo9H21o5DnKIS7DmorVEnXk3X2zhF
-XevuMCwXArN8M1+qE1qpvifnpqKu2m7oe9+kmXR+gUsjky5GlNzHGF3QNZpaJ//QWiPq4m7/sF7V
-HiBTvKj1b3/3MR26l+Gy7GzJESWBsXymOzHJfohK7i0lBZhCnqQNyVyVCeYC2RBNrVNswH2mqQAA
-IABJREFUHaeQ5g3gyXI9dcpMVTyb1owuHGLQqNpuSAocAMAsR413u7ausmdfDyZZpYvGVC6AHY8q
-kw+jTVWmk4u6XvR2QEQAzwTzLDeVvnu/R8Sut5vVNeoCpsTZP+g8Swi3SvEpj0zC7EJyuwCAxpSJ
-W3HTXP8+Gd64oPOsmFUaoXyeqFTAaHI6zwY3Y5WBytOwqCX32FtEJBeeQa4nViQOys1SucjfdZFV
-5q73HABY8Bry7gx7d/7rT7CPeJzA+niwowvgAqRtQCHmi2ZRV//d747pdVxnNCv8uxtrcuiH4wef
-QVkDwO+2FlENYTHMnEKY9Uqj2h/sVVOvSh25+vW3l7MfERUKlKwuFBN8VagEGJzt3CwuAy4znc9u
-7HrSdW3dlNo0vaWiwhRO6HT6CDbT+fSk6BxoBoB6tUqH+k/ffAYApwCgcpZLN3s3RUuOrHu2U989
-nlDyFICqTCa05f0nIBd0cpdZmfTNxlQaRb1aqSTPQnXRaWEW/UUGl5QO9kljDAljpkSgRIousMqC
-84+jTy+p60aNSjHW9WNzVVR64UNkMKFWPxyxv6xRrbrOblZXXW8TejZOEZjWnA2WKJ65+n+ZepMm
-SZI0Pe9TtUVVzd02j8U9Miu3qu6e7urZeiBDDjnAAAIRCgnywj/AC8/8Y7jwRohQKAQEBAQ4zEj3
-dE939TZVmZFLhHssbqq26adqZqo8qEf25Ckrs8LT3VyXb3vfJ7l+OJTEH0UaJkBTgN22UhrHTm/r
-KiCEH6S6yNa3B1lXxb2UZcZkq3GZr7aV8YSQNFCVAACtEzxpZAs47rZVXQoAiFMaqnC/u7l5ubn0
-3gKkjBCeUkSzvVwd7oZS8IC7ZIwIzuoqD2wyYxz6uRTCWwh4GK20MdMpClpi+oRiX3Pe9EOypgGP
-UIhVIJ0Bi0NO3DRtuBv3x4cwt9dIyVOqEU+EO87PYHikddcpbdyfbnyZsZ8dJh+sAhn1TT8lCfvt
-Xltg8ap+HCfvTDtOi8XForYeAP7qzQYAvv399cp0d0cMrsgXER47AgCbDPJoLujyXqWbxLx/bJd5
-AYD7MTp2esshtnJuZbaoTzc3APAX33u2TqAqROD18pRwTupSIKJs1Pg0h3MCWROhNEZg16UAFjdK
-BUCTceRhtP40XwXAs8ibUHlMKQk/y1hSZZmSPWN0Mih4gpMJbcVScON9qP9464t1arzHdrFojIf6
-sgSAyzNANNWmMuBN24l14ftOo+nGVjAmZ08SKjgL8ovEenSWsjQIZEsulMbQlBE8OaixrnKR5Y3s
-BE+88Z89fLqxDf/bQY2MJd769SrRaDwkQUqP2hh0Gg3jVI9dwIEFE4fgXAYAz2suZYvGbbN1KcSr
-8y1C9OaJ+WUBqlWp0dSlQD/TlMFTI8WCD72IXBRqRB7FbW91N3LBKEv/qU+RiIBl2eFuUKMZOwSA
-n0zmoVE/ePbMem9tvKvL632TEsJDX9zZqhSh5mMc7HZ1I7vJ2yeT/QkATqaLjF4fjiH+2Z1VcsCi
-LCshAKCPKQCE/m64uE79cktJnPbDRFOC1mk1bKuyrgpOU55StG5XV6FWBgBSmzUeX1xuibfSeA6m
-4kTATPsJDiPIhTRQ/PGb3bZK3+8fU/AAsFhs0U842bE/r8tXZ9XD45GnxFH2arOuffciXQCAruF1
-7ovIv4i6v//Qvywt8vqP3+zmefrrN6mz+ssz5vh6wqm1JlQ8rzYrfiJ48pim61LUVcUI4yklKayf
-xmnCE9dmIikJn3zBmYFToykFJykZT24Zvsg5AERgXz/b7g/j61dXJJkO+wfB2F3T8YLd3knr/Z//
-8LVUIyNEMMYSMkVJmfGCR+jncDjpFl+9ugAAjyZLBC6zrVZAE9N2nHIAkI2CNedRGlNRn5UAthRc
-aURtOI+s959LcoxAGF8rn6yhGUAjT1y3EOHIoT/PUkQzdSfeAk+p4ElVis8IR+u9kj0XTKG23mNr
-qnoDAN5PoZ/KSYreWuePIwblYZTFHiaRC8rSKgJt5jLjiMuiO0Szu6yJpYzRskyDW2AKhKREoxkW
-g2jEOq6qIvSzEI3GCdGEcKsZsCoySGcOC0mIYPCzIEsyM2E09AoBILggSqUJTQwEyvcUPvWz86q5
-G77/7EIqLdbFZZWhdYwl+/the1mEzaZHRMRWnSBLbEIdxvUEKwVv9eCMDVgJlpD1KmnU+PJybQNo
-3XsAuL2TVSH2x/vtplyLdLaOp+QwketHFZwIF3Gy/qYZ5z/ZJrsS6hSdPLyo6N/s7FWZhqVP3ITO
-/7Mfnv8PP/S/vn3415f4VarrdfLna9WQPMrIdy18HMQNEZvc3/syX/F1uhq78aFRKfW/Oorzs82n
-gcxDk/AkrP6vv9jUGcsKkSRsxcl5QWOaVqUQEaB1lRBngsOTITMAeJp+HswsNxupNNAkFDRC7Yhz
-3nYYtkfJ+YoTRNTdwrJMG1NmfLXK3rzaXlbZQY5vnl8QRkPuFeKWYMGgNIo4MuDvmk6q8dWri0+f
-9gCQyiF4XDMGTT80j2pbb8IUqp8tQGq8325K9LYQGWPUW884RevqbWXMRNlpsj9lhHMe3BDC6GK4
-qR5GS1JCUmLdyVdZ46TRRIz6yQcmigrVVTedOr7hUQh+J0fG6PtjoxV+tjwBgGWcOWdS6XSGnyXs
-2bZumrbMeDDPst7npQAAbxPGmeAJYeTEae4QAPwcf/q0DwNg4V4iJBGMhfevNFYir7Zn1/ujnz+r
-Rm365EAaeIScpKLkPKWf5zgQTSnSmwf55ZeXd03HOWPRfCfH0JapC3HXdBqnu6YjCWFABCXFU24d
-/KPM5ElKgiahKsWhUQzIzYN8eVZ33gWi5s3+4dnzc8EYotEG5NABQJzSAzJPWWACFONtpI+hzUov
-hAEA3vZg7cDyXptfPELTTcRNGuJlmn/81Yv7Fv7tf74LuWYZudHOHZCjmR/H1avNWkC8nvGdpH9Z
-NwjJrw7992vLqNeTK+gwD41uG7qcLGy/enbGOQ/YojcvrwAgjOmzKGVrXhVZyAGMJ9ZiiGHMYtHP
-t3fNi7MqXH967ADgcHcXng4xmKYcrY94TFK64FxV5esXG855VQg1IgQlNeLrbX3zIBGX7cXqc2Ct
-0RRVWVCi52VU7WWdE0bumm61yqrV+u4RdnWh50VkHADqs5PiCZ6IJiEMFZwreeLshjqmQYfa5JQG
-7yqwoBAD/TP8SLAZBgBvve8sALToUkIKsQqhUZZzMDOxFJx1aEMVnJBU8FO1SuuO07QUYjLIT0Tr
-IVAwArRKzbjRlhEqONNjl63zUbVVlYW3HTGacZ4yEnw9AAAXGxyEuAc1tBZgW2atHne7SrY6CJrR
-OPR2f5C7usJlBgBtvUMMidlFVV0/tifDKNlVeREcHc3k66p4/nwHAP0wXdZ5uxiNU9AYQoAZJ8yY
-iScMrUdnPVtDGM1yXpQiF8WpTJQQ2Y5m8nLsiqoMJf/UwtWzYrc7qwQbhnHfqJAfGuN6bQOnglEv
-WPypJwnnEmF2KQDQx94fzaz5+oUwANB0XmSFhtPO/usfXEpLRWL6CSpG/vMd+VmbGeu/7YsNi2/Q
-Xx/70GT+xSMcO1Kz6cfbtSVFO5MSzI/Tditgk5jPZ39IeTnx20poxPOqWiDdlQIA1qXw1iFilnFt
-5oKdtPCD8SvBeUrQJTylstXhhnU+DcmJD8YkCRk0EpKU1VpKdZCap3RXl4imqorbOymSdfkkdQ8V
-9HD5GmcjRmnOG9kFAyZOTmHM7mIFT45ubjRSjceHB8aS4DgZXir0cTViWa0NUABoZKu0dsaeai9S
-cZJ6SKzzTz7ppq7y8p+4gNwvM2MUvQ08uROgNmDcGU0JEeUqOLflpZBq3G03v3l3eP3si1Cq9ykj
-CdnWJerxzdWF0qjRXFaZxul3HqQ227oSWT72XVYWoYhkvA8DNkpZbYz1vuCUR2nIyKN1xjkvxB+s
-H7y3dZWjdYhGK+Sc7Ru5qwsAEClB43e7OgyBMnKSOlztLkMP++rqgiWkkW3At4QZ2O2qBIAWF57S
-u6arzhPZIGoju3ZbCak06i4EgRqNMyZZ02AZv9/LbVX52YYhHe+tYGzfqIqt9vvHLMsfB7Wry5C1
-M0bXIjWLOXaap95PTjDa2GRXceOJhpj2E/zrs+F5opd4/Yz5F5c8ESvO+TLN//PXeVnX6xjfKfbX
-V4KkcFVxzzhLiYb5ppu+5kO+4q82687x/+P7DgB+RIfXVF0QVcT+y3Q8dst9j78/DCdsUZpWPKqr
-Cj0JjlSIGIHlnNeC9kpTxkgKsml21Qq9WwgDgMibBWfjiRy7L17Wu6qUQ++NV4h27AGAEx/0/9u6
-8n5C63bbqooJIYkBr9FcVmsIWgqpwrxkfVaideFQD/WHUnDBE+s8Swh6AzTV83IaBVtMuHnePL8I
-Gq48ZoInASIU/kRwbszkcQzfWUqo8SfH9KoQUncRo+F+aPVovUdEynmnx/Ms3Tfq5aYCgJJzOXSh
-1g5BJ2VcaJeiHj9HwOFO29UFYWRssSpFIbizxnrPRfb29j7lTGkMVMa/pP7N1cWhkWGmuqqykDHv
-6nKYRqkxfOqUkIPUQdwcgQWAmietHj+n6cbB7fvHqsikNrttJdvxaluNnX4YbRol+7smZeT48BDW
-t8bAykYz+WfnVdO0odoWGNfXtzcAoCwq2TsTiFVG8PXt411ZrW8PErV582r79rsPr6/OwgG0WmXB
-yoDzqD4r28Vs6+rdzd16laBxwar541Eimpe7KqYiOPsKzsMN4CdfM1KRCZ1DxHahA8k4ZwJmWlf5
-P8gIAK6P/Vs1//7O98PYdPonX+5ulvyX97OfXEmxs/q7A5LJi8RI472FSrAPNkI4PaB/Z59/Wsp3
-rnznyuMI2vhvdPx+jkOv9+sfPAeAUPBZcVIJzlOKHrZ1NaAnKW0GXJdCtlpwUdW1ccgJXTHSDAEE
-Pe/qElWfCy7Hrlqtq1KoES93GwDgXDBCiLMWkjK8svE+YcGeCADuZG+MK8vUkTRdnfBYxkPqwJgp
-FArQuJSRlJJAY95WIiReX1wAACAiY/Tm4TQdYJ3XOJnJh74SAHjjGEtadAb8ZLDVuKtLxKWui/1d
-E+rfJ4urp/ZtITLB4o22nPP3R7mtRAC1b3engWeeUu8nTmKSEJhixhLZjoVYBbR1uIXqiycpgjv1
-E3gUr1dJ2JZ+8m85a2QbBqdDn+Hl1blFozQ+v9iVnGqcXm4qRFNVIoihE8bffrpnWeaNQ22au4Gx
-hFEIh8vzmksVpOHCLPY8S0kCr3dbpWyV5QBgvQ++D5zzIqFvP92HQwGtW4yTagQzF2J1fHgIUTtP
-KYtSDxOiqatccBa66cZMJE3CcwiYVCV7xKV5VKXgjVSCs2WcqzK7zLh5qveLjJvTCB1NCfls4Pec
-GWM9hwkA1qusSp+gR5zSD0v+YaLJKvc03TGLiLtSZLFrVF+lTo3mWZ4s8frZttZJalusCjEhoicA
-MA1dInpS1L5tfv5J3XTT9bEfCKtL8YWAjw+jXryICOf85bPzbcYI48mTldrrXW0tclgCdSKy3nv7
-clP5cQLyh0LQeSU4iRspq+3Z2+sjIUlwbvv8i84D50ywxPuprooeUXDGGbFPtjBStmUeU8LilNhh
-UloXCU39ZCmwz87DfqKEWefT1JVcqBFFKaz3H++hFELj5K2vq9wZW1d5Skld5TiZqspIQrC1hNG6
-yrlgu+0GAJw9UZMZS0hCt/Xm0BxD21+j2W7Kw10reKLNHKwXL6vMBMpnXTZSeTc1h8Z4n4mcMMIT
-Ftyhg+dPIbJGdtu6LLkIzFMIxo/eC56EuFwq7YzttR3MBDS5kyMncSl4mMdMOSsFv31o6rKcnQ6h
-iDdejacCcVVmPKVji+hsGEmCMOu62NFBKXhesMsqM54MZspFJscuuG0f9nfbTWm8BxYfGvns+Tlq
-8/rZZThEJm8ZSw5qjBgV2dqnrhRcKl1yHrBRANDIVk99MMcO7fbQzg9XIk9Yo1SV5a1ZuGDa+83Z
-+m7Ez4NPzaNiLAlEHOs9OhsA1W12xThLRFkxUoy390q/roXnawrOfC3mx94fpOVgDhpESioOH+b8
-fTN3emTUB4JYDZOYbFmsDxK/afxFAQDgIv7372Dd3z7jZFeJ3WV9seYVI5FWf/vpZN5fldmuLrpO
-CZaEN1rnaVXyg9RpyiMeO5/Kdqzqyhh/aKSGpRKsNWNg0fVKRzzmnLveCc4apUIbZex0Xa4B4DhF
-AACR4Jy9P8rzqtJoDEDggXKa9sNUZXkju/2drKqiqlaEpJSlJ34JoylnlJ/QkUr2hBG0PmBM5QKf
-Z8ob2VWlaGQXnq8zthDZ9e3dl19eSjkionGTVvrzDpetFjwhJFGyD99ZSghhRI4dT6nGk+pI8MQ8
-YcKMtxGj3vrgqxzCKD/b1tlQXBeEhBNuuylTzmSrQ3RRch60l5sqPz722yr79nYfp/SF83UhAGBz
-tu6cQ7T3UgY/LBFHjVJ5Vjwq7f0kOOOwlJwfGhl8UOqLzE8+5OIiF4wyzhmaxXpfxvx314+M+M/T
-ssGLt67KAIAqxCpQbXa7+u9/fb3b1VWR+SchJSJ6N3ESX+8bdDYkzSGm55zVq3PGklJwe2K5EkEJ
-ZSlqg5MJ7EAGpGBRp/TxsQ8FrqsqQ+vqs1LJfretOGdVyRENj+KgKTsM9l7pLI3LYv26Fr/49iMi
-UqDsWmpN+LZKjSMS/TbxEuH9/vFlHQeD/3fKh0VWr5OKLgDwJ1f0H/fmw5JvKw4Av3gE6aLtKqW6
-B5pOiH/7aYAn+/KMc0RzcVZV2zM/+afOKw9KkUGj4EyNRmnLGFkJbjyAN0XO0XrOeWgLCM5FHnHB
-eEo5TRmjNKHBdlcbJzgrOG81vrw6ZzS13heUGWcJTdDZ9Sp5VLqucpFzABiV9k83YOj1tHpgLNE4
-OWu4YPV69fbth6oqQkbICC3EKiu44AkXmTFTSgk8ueYzmt48SMapxonRJBQ3jbPAYp5SqcYQIwFA
-6uesFJyk23oDAII9yWpxKjgVnGs03ngRR5SnDBxPGOdc40TiNJ1iD4kxLsrioIpqmna9SrZl9vLV
-xk9+sy2l0glJA4qcc7bOCgB48YxpNEpj0w/bVYnGmcmnqfMw9cPUKK1xenjc787OvbflZhMWsdK2
-KjKpdOBjy7HlNDXO6E6H9ym1DmFVUKLWVXF7ewiRSfAhXa+Sw1EF+966LkJBb/eyNmaSQ1evV4iG
-MMIZDRtGKl1yuhh3ta3Q4gmVZ0/dAwAIUGFEU+XFQY1K4253tpfyy6+eqRGdsdf75uqyuswzwuj+
-II1xS2+yMvdu6vQYLT0Cuxumm24a7fzrTwfP1wBAU9+WxTqNU4MT40kR+XcDMOKjOPLlF8RgXlYA
-EPpW18f+G+WqyFNgb8oYrJW41BkLYvPDYJt+Mmh+uR9FRL7+YlNWOQAwngQFRhUHYB4tN5tScG0m
-471E2NbrqhSoR0ZYWFIrwTnnUqMoeUxTVuRucpwzrbCqSpISLrKqFCGJLIoMAFrEQnAl+yhnjWzv
-5Bh2S1hkyZoiYliLhCZK9kXEjJu88ekE4eAHgEB/gifdIGdUeQIAD0qH7mOrx883LASylZ/qKg+2
-Nk3TeuM5Z0EYud2UoQgYvEw25+e6m/fNPeqR0VQbEgieANCiYzQRnBnv+2EK011+tsY4wROWkLCv
-Thk2AAAcGvXF5dlBjUpZs1gGhCQkYtR6F4bpzWJDX4my9CITl/XF25uPP3h91jwqYyZO0lYPWS4E
-TxCikvMgejxIGYYovXVBn1BXBRpfn5WMQBgjLwXfVpn1XmnzwvkVI6Xg27pisCiNZbW+2l30wxRg
-ryUXIo9HqQRnSqFD6yd/fOyD0+hBDt56xmigLYZ3HsqdXLDQ9Jit0877yRsPGk3zqH6w24QKmzEQ
-KkutxpQzqbvrwzGQ+apSBHKF4Fyw+G5/LLm7XCW7ugKa1lXOKAiY6Qon1fbvH1rGk/sx+uo8fb0C
-mtDLVfIcP3jG51ZeCeAR+66jRcq08bcavubDa6reqpPX+SI24Yq4fuy/uWlC2CPyjFEPALnIpJSn
-hZVS431JGQCgh1B7IWkileYiI8l0HDETdNBISLqty1ApLERsFhvQgqXgIbwOKRcArBgJrYWqEmW1
-1i3+0evd5wY7ocnNg6zyQuMUzG69m7hgloI3jjNqE8DWBrIIyzLURs9LVYokL24O6lXsASBNXXiF
-kwPz02gaY0nA0AvOOInrukDEYPYkeBLKNWUpCE1sCqk7GavUdWmcZeACQOQUeo3IBdOdXq8SY5wB
-zwWTY5uQ1EyeAZm85Zz1wxSml6ssPzT66rIKlhDA4jDrhsYvxnEecc40Tv/yRzH4aYqSaRqN93fN
-UJUi+MsaMzVSNY3i0UnTrJSm6ckgjKR0v3+sChF6wEVCDxI551fbCtGYceSc+cl9oITQBFh8vW8O
-43gSqRHS6oELthi3OVv/9Ofvrl5tU0quzmvrvVlsGPO2aEohpgQ4Tb2blCcijlJC5L1hLDGTl/8E
-TIqLrVanr15pJDS5azrvTJ4kaN1uV3+4PVQi314WesSwD0MnOwzGXW7W75v5VuE/3Jt3jVmitXGg
-Iab/pc1uk90Pzllj+Z/V869VVFbViBhN7bcPNtKKpYSlpDseoqmNi2rDyZWAd678xp+93J0VZ1d5
-WfXDKNEPczKYSS/+T3/4JtwJ4eI742S324onwlxzN0JKlEZOQHDmjG2kCuGQn5KAtri9Hxmjx9F8
-Nj8L0tXQbQntblFwAPgfCzMYH4bV7pohrIYwCcdYorq5KgTqEaIZAL6oKynbapWjNmHyR2lkhPAi
-vb29bxpl3InZyAiZulbwRC4QZirHvhM8Kau14EnTtGX52XLDcM4/zwMrjWXGV5wEGgoAdOgYS5bW
-WAqEEcHzEArzp1eoVutGth4mBoSmTM9LyDsD+RkA9NS3ziYkRTR1VYb0gKRktQqNCC6VDqOUIo44
-I60eCpGFtfKf/mP//kPz6ouz8G85c6LHpYRIpVmUcpExRrybSsFHxIJHLErlXcc529UlPJm3aTTb
-infeNbIVBbdMIBp07oXzJCFlmValqKuC59H7QxuApwAgCGn64UdffvHu+r6uik+f9mW13talkiM6
-uzlbhzASWMxp+vKsvnmQpeBZKfb7x+356vGfbADB2f5RtmYBALROafzes53SWNZFxnlBUy4YY/Su
-6cJnATMb7zlnQdzbjIYRVzOijZlisfIj51zATH+0FVIpiVCI+PrYlxTP2NCiHxYmGGmzKwDI0ngg
-7NaKth1HSLWHb+4n2eqha4rx9osyBYBoavd3ewC42qzCt/LZr1ywRCodiKXleWWcVYhcZI/onTFX
-21oqzbJsv38UedQorReoChHOMwAgCUV0bnJcZBrNbnc2qs6Y6eWmbmT3twfS6VHEEWM0JVSqsbrM
-c0pfXG0DOBbRiGiNuARPZjhNFJ9WOReMP1mYcJExCjaZRRx9aAYA0DhVEQQTFOu9N77VY0JSwZkd
-Js5Zq0dCksU44y36mbFEHx4ZSxZIAwJIyf6yFNbSqGCX+SkLZPwUmBmczrO01zbUBgJuOViJoDbe
-etSmlYqTFHGxaKq8CM45gifGeylbb72II6Xx6rwOzLJSCCX7QqyyUszWvfqBWDGyGBf08rtdtd/L
-1ixK4/4gM84FT8w4VlnBOc9y4a0ziy2LyFsvx/ZUWuWMkEShv+AxIQkiuslrNLnIfueBEXp3NwBA
-I9vLzQVPSThurvdNlMX1emUW8+y84il9/nzX6lFwZuBUJTvd52amGasK0fZWlCvvTVYKjVP/ZHqw
-zuOm1buziqf0s1S61UNVlx/vHkfE4Kwa0MjWey6YAf9k/cRn6368XVectAtlxP3Nl/mXzBr5oCGm
-v3u0f3qe7CreNcfZpQjsV/uJc74riCBQpW5v0ptuWnmDWittn6/91yX9+iJZxOZ/ekEcZfT4/hlR
-odf7bLuBwISqCt8P1VMVtuT0QWo0XiqdUfCIqem/ffvx6rL+zbv9+0MTTPoRT3RewTll6YoCAKDq
-AeDs4lTn0mpocbmoqkMj6yoPIcppqzyRkaz3p7xW4curc+9tGEUWjOl52Z1Vd0MLTzpD2eq6yu/k
-WFf5/iAZTZp+uKyyYZgBQC4QxJNoHfoZcYkY9X4K6wlxCZILb3zI25AlhVhFYA14zqOgZz8e7y+y
-dcqZecIJl9VaKcueBi0Pd4OU+nJba+zePL9QY+gr+wDrDdjTu7H9/Ek5587YJMkCXeayyqRsx7Fr
-+sHDVGVFxCgscagADsb3sxNxtD9Iwfm+Ud5NiGZ7sfp4VBqnYlWjnxXqcJuhcWh8XRVVvamr0nsb
-ElYyGcpSkgKjzCymUyrAo+BJxbLbnAe+UyEyhXpbZjcPEgBSQvW8eOvHSRci409YED0v4T5vJ4eT
-qUNfmSdm8oEahk+K3r6b60KwhARfR5HHczCncTZJsiznAJBypmR/Wedjh8ZDcBoOWV+nx+tjPyK+
-rOM/e17d3qsb9KckOCd6rwGd+/oiEYzsBBxGeFURMvl6nXw4SD227Ux6mr/a8ACy/g+37r9ed5E+
-yhE84//+jv9yPwLAeZaWGaurnEcxTyMTR8Gruems6parbU0mI6WKaXpolAV+uVkjAQB4ua0RMRzM
-VVV5gxqR0TSE7Lxchys4PGvKU43mXspwggJALrIkycIqZCxRsg+BijFT+6TnsIFXJRgANI+Kc2Yt
-haeCNyKWgos44im5qCqpRsHZipL5CQ8ejhwAQDSLcWiciKMwIxkm6UXJnwhCDACO4+noCvN2grMw
-wsVIGkJqwZOyTA1OG207PW4vV5zTVg8A6c2DHDv9WQLvvTWTDzoYnEw/TMF4wnq3WsXhE4UEXSPW
-61WrZ15E+8Mx2BICwPHhsCvZN7//rq6KQGnnNA2yoS/KtNVjcNZnLNGdnhKoyiieMYKeAAAe6UlE
-QVS05FCPjVQhv0JtYM01mpRQRCM4T3n+tBsZmNlbzxltpNJo7pouODgInrz9dF9XRSO7R6VJxK+v
-7y+q6nef9lHOACAlpMz4D19fylYH9bNWev8o29m0vQ3KeMET03bBIIxz3siW0eT8Imt7y6J0RUm4
-fO4OjciKkLfIRhnj9MldHXORfVnAj7drsJbOw5IKUtTnZxsBM41SfuZbhXScqXFkSQXBfohqn5Cb
-bnpdkmcrdhXh87Vn1N8r3dHVT7bJf/cqf5YnN+i5P0G7vnp2BgChU9Nru+KkFOwEbNRYlgJVz9Yc
-aBrcmk4L2jjOeRAKonGiEEqbLOOCEeNswrhU+lSLpKejveTCes+AMEaNA7lAXrBpGq3zYeyWxKl4
-MjCtVsHCzTP3h7n2bV263qep808TQd54khJW5IIl91KG80ya4Q/GUiwJdoWcs6BICtGqVDoYwTIA
-a+NWj2QyrR7KrNBjNyqNn7dQNIeVerJ9Vtoa//kGUIiI7tl5FUYmaUKVtidxmQXZtUXEvJs8TADA
-EtLIbltXUraoTSM7TtNhOI0teHs6CD5vXRfxqiqqetPI1pip4BEAKHTbuixWtZRjJYqTRDOmOaW6
-W6pSKI1cZKJcxYxY7/OICc4ZIeKpPqbRPCtp+D0A7F7WGs1uVwPAZZ0f1FhmPHSRw15acf54e2SM
-rldJSmjA5PAoPUh9fOyDbrtYpwc1VoVIJwhG2eHX2fMarSvEqmR0fz9UZeatZwkRGZdmYISEaCdN
-HaK5k2NKiU/d1bYKrhBrkR5H+LWKBIHadwDQ3B9fxB06T7X175Zqvcp+/kkp2UWoPF+/3z8OUW0c
-eaT1fuGOsmjuBQFEE26T11R919GDhp+9O5l4AkDCEz+5cCovkApG5JObTVWI0MwiCfm4bwCAMzJN
-xnjwRqeEKI0lp3dyLAU7NuNKcI3mi20lniSzIhecxNoYxmlKCLBYKh1wMkGq/2pXh4mXm5u7YBkE
-T1xlBsRQK9XIUyriSCrMat6deLqcp1ShDkbeCFFQBgNAkmTazFV0aoSllITJeGMmwJGBQ+u2VQYA
-d01X1RufujBnRiy93R8ISZVGPfbJBBqNN+7JKzNVchSlaBoFAEeRChZXWW69CwGDkqPudNAAaHMS
-rHXxJJXmJL1/qqcZP30+R7hgqPHkouws+jkw9gKofESUst3vH19fXd7e3hvvtTGcUaWxRSTpaZ1p
-pWfrKEvVaEKWDABg5tl4jabVWIjMeK/RoHHO+ghsCgwA0DilUSmLrV6tslbj9fX9tsz2e2kpgJkD
-YVbqNgxE6XmpVrkx0+Yyw8WWjIbhJUhmAPBu2h+kKDihSVDSMEL77okjJlhdCKlGA56xRI8YjpWg
-AyaWUpamlPRjCwC3B+mt55z32soZGPVyIX/3yDo9Hkb4rqN5ltJNYlLqWz27iHm+bmzyvavqTUmG
-rkFgFHvrSOPZEq/rdVIVKVj7arP+uYzsbL+9eQzQrvAEs6eKDQCUGddPbT9OvOBswRkRXafrqrJj
-f5A6z08WCcZZFqXGg7NGcD44G+aEPx4keluVYuyX0MYHgMOhD/6SSiOntLjiAKDn5XrfsIi1va2r
-IhjaMZa8vT4AALAY0V5UJ8c844yfbT4RAFiMOzTqzfOLw90fIuxQgJumEQCuZwIAwbbgFOVrIy0Y
-oI1slcZQqjNmQj1KpXleHAYV0A/heiGMIJoQpSAaROu9bRplzOmw8JNjLElmgnqEABJOCGN0v5cA
-sD803npvnOBMo2FAGEvumq4UvB9O3kGHoyJPRadQxQcWN7ITLP7/vsHwvSiN9VkJAN6Y8NhLwdH7
-MiukbhENOnteCmcs58w4oxCfnVfAYi6yUvAT873VUumQhj5IndWnmZSyWpci5YUIb0AUXKNplPKz
-fX+UVSH2+0cAaGRnvS9Efru/AwClgj3eqa0eKpvGOFFwRoga8cRRDp67k2/1cKKJGX+aL9In4uXY
-IWFEI44d7qpygdSYiRFK0hNjeIzKi1I0U9IupJHdtkp3AuSU0pvOK225UetVts3g+dp3eoQ0fX5W
-rleZ4+tNLowj39xPFV04TJCm3z7Yv/00NK0GgDVPwtkf5AXoHOPJZBARa55IXAAgi10j2wYnRtnd
-aMAbF68YIegcOss5ZzS1zqPqSUI14oqmJKHGuE3GDDrBGU1OXoIHOV5u69AV153eXJQfbsx5KRrZ
-hbaXn+3t/k6q8a7p2t5mOf9wPGJrQxUlbBUAOKjxbtRK4+QtkOT42IfJUB6lSvY4GY1Gz8vTAvXw
-ROcNXdUqPW0JPznvp0a2asSTKZD1o+o+HmT4T3U8ImLAWkmlZTc769F4Y5z3pyQYnQuqdtXNAMBI
-mC11XDB1PBoArf9AkjttJOu9ca0eopyFZhwixikNnw6eiLnazH/2RxnjSQjYcDItLgepacomg9b7
-SvDb/eHpR5xGnNJk37ScczVi0w/7/eNd01nvd1WlZK8Qq1LIVlOaKm3K2IuIKK2V7A9HaYx7++me
-M9rI9tAomjKNhnP29vrw5vXuIMe6yhvZhrziKZPxstUPSlvnpdKXda40Lr0x3vvppK7e61keJT4R
-hTUawogaUcmecHZ70wI9jZpbCmaxrfeIBrUx3qF1YTiKUT8Z/P5lloL5QkAjO1xslhBqHKmY33Cy
-ycXepL9WURhQubtrIn2Mlv5F3OnJqRHftk7a9Hrfvr1vVlnmjF5lmX8alw22W2CtwSlhnCQ04nFw
-bjs9X0+Uxtu7Jhxa397urzbV/iCVNiQljWx5uQ7hvgE4yCEl5Dia8MVzRgOzjRPy4fYgODfem3EU
-nB+fkkUIiiTv7watRmxke1rHiIdGsYjdje0pWTQGAHSLaJ1UY3CRf/fxcPMgcbHGe0QTpikZT44i
-xWXeN+okWaTp8V42OO0bZbEzDtC6U8poHWrTLuYgRwCQY+cnH/HYjGO4Ae6be3ATojk0qpEt5dzg
-FKwFvZsCgOjQSCGKB6XRW9SGZRlP6UHqcDOEWbr9/lENKnyWsPcsxIexna1DxGCLq0YMafexWwxO
-v337CQD2BxlqViklowNv/aFXAKlS+kFKpfHth2OguRzuBvwcBQEc5NhIxQUzT/48I6KfHBMCALrW
-aDSqmyGZmqaVShvjRAQajWx1I1tE85vf3jhjfvv2JiRR/diOfdfITiM2TZumrmm1d9N+/9i0uptN
-I1s5dEGxOVu3GGcWo2QvWx3UMOEsuL2904jgpka2aJ3sWgCQjeJPtheoTahk1MSAM207Ul4+ksJE
-+S9uEBHjn5zBd9q/B1EsjUa3YyRCUxF4dp5WdPmpIj+TlmXFRbVmMOjHdhhHERHiJgAgbvq8AcJy
-AQDAKfJmf99XRWYcAYDjFMl21N0YioDoAQACIFlpDACsfaOCT8FgPOe8+XSnzmoAGDsMsUTnPezv
-ICGNbL2fbvf3CBF2+mG0Upvfvv0kH0YTTYKzrj0JWPcHGX62rgszKHAisnD98fFwVK+vLveN+uwO
-8u728PnUPIlfpWpkF6o0nzu1RBKpdCMVoQmiGdADGEYhuPikxEilBWf7po28QdVLiKQ2RZyAcWg0
-on9Q+rwUsh1nZ7MyD4Ieg9PhbmA0/c13HxhlP//u+rwUzf0YwnGRC42otPYWNJpgORo6fUr2p+Wo
-OszEipFDoxih1/umFFxaNDgBAcYTqTSiISSRSmtEpdLjY7M7O2eESqXRew6pM1bkTA6dNjM6+6D0
-nRw+7g+X20vw016qTQIjYpYINSIikoT+5v1RL77TI6IxHjlNRcGlNsZL71eIhlGYR/t2//jm1dZ6
-7yd/vW8oSxec78exNoXgXLZj2Kuy1cE8mKeZtPp8VXzOIT/eN11rbu9klvNe2+ZRGfAh/lGIaJde
-Wzl0fvItLgWHt+/3wXosLIDJYORMYWbO11bDVqTeGL5m3pmojcu/OsfHma04LYqK0iUR+dIrYyyk
-/PWuYn4uVum3B7XNojpjzWjGaUnjyDvnnSNxkoCL4ggABCVmcgAw4Fyu0jWn33586PW0TlyUJFL1
-Vbbqx+GhN/Oy9H0/mZmQWPZD5P3HB0UTv39QA5pqFR0fG7FaPx4locRF0TR5PeLiXD/alDE9GDQz
-ZWmjxk/3TZ6luRDK4rz4mMSHu0fBOZr5sethccM0+dkNOMMCbTsknL7bH9G6ebJo3bzggxzXjD00
-7ULo/cORkAjNjHpyQG4fGid7l2e5EGido04PRg2TnRcKoBGHaTF2MW7uB4QFZDvO0+SX+aE3+Xql
-EQc0ZobY+9HN8+Qeu45EkYDltrMxuLcf972eNnlWrulR9osjsjcXxfqhUbIbAMg8L/PiD00bx9Qv
-oLSOIZXd0PQjo/HsF6mGefH9aBOW7B/7COjHgyxXfHbT0OO3N49635H1Os3iVRQf2r5H+6CGPF/v
-m67I1rcPqljzD58OgiVm9g+yy4X4x/ePuypVw5QQ0gyLGrvIRWaapRoGM2k9Gut6bQc0F3V+u3+M
-4/i8WDmIZNMDdR/3jwDU4YKTWTzJUibVEMcxmolQMs9Li5M2k5l9HJHb2waXmREYxnEwQVk5g48G
-i4wl94/q9tgVnJ1t88OdYiwetft4f7+p8vtjj1oP00SA7B/aOKW5yB6aFudpNstgLY/jB6lITB9l
-N3t/sUo1iSfEBlaruV2fnW9icy81+fGLM0FAJ+nbe1OVZQ2tcaSKfGvNTef/zZvsBv3epNHUDgsj
-KQeAbFF/8cI7yD81My8rdd9sL2sicq+7Z1T9+9skmtqLouBcnLHhv9xEjqZ1im/vzb/64e4Zcz9V
-4nq//99/KIjtjsnZv/3V47/5Kvqk6OtXV9/eyj+uk+tH+eqskiR7r6Ny+PB6vfxft+v/pdz/J/vF
-v6gkAHh2BjwGnGtz/e8eKwD4F2fq274AgP/1eduRfDfjPuZFDO0MS1xEc/t3w+bL5eFtDx+g+Jt1
-+7M2SrP1r+8WkeA0dJfPrhjxF/T279Wz/+17oI5yU9CfNqQZgNXn/3x1H17qpw0Z+dWOT3JcbmUn
-cVmi9Yvz5HiviMEvt8kvVP46H6Xha5HeHmVj+T/f6fd65cSmVbJKnSTlCg8J45PBwwjPnj2j+igt
-BYDf/v4fNxc7kdD1KgOArjnm9aZK3V/sugdFmwFePT9P/d1LSn7akPd6BQCTVgBwUbGu81nsAOBv
-nvcJWf0/+/U/y9oKBgmrCgYAiF6BPdL3Svx5OVx3pz9ccvpeCQBQPnodnZKH8Fdv3eq7pfyry9Y+
-dt+451/TT9e+BIDWRV/W03dNci8NYcIbnRLzk9fCksv/+5f7VV5HS//Vq6vb2w9RVPzqpv1B7RNR
-dkoqx9er7Hvb9T8e+hdxp1YvqD6+V64QcVFWVB87PS7RGgC+t11Pq8vr774ryurX3777b786r/VD
-lUFN4dPmj58ffwkAjYOfnFMA+GlX/5ch/1r0TWf3jawYydJYtX3CeZbGP29iAPibL/O/9vtbF/+f
-H/yGoKNMJ6nByU2uGwbyg926SJlOUrDWOKKt55x9mbumnxrP7oapiNwUi8fH4zanxdlVP4ze4utL
-kU8SAP5xOFl/gjOcQJbGTT9RZ15VQroIAP7rdfdqw98P9Pl5BQDffrjdbkpGPU9PNaJjD1lKLkrx
-scFXFXlGzHcm3SRLNPdLvL7ppv/+in4jE4PGM/6hJ9/fwDNiOqvncY6zuHP8/QAvN1zi8uON93q5
-lvp17svIfbDRi3R558qOrjolszUdbfwv3yz//n35Iu4+zPl53Hx3wB9v18cpEon50Zr8uvfPvH7X
-kaSsnmcz9F27EAD48mU2HaZKoIS1HEG6SLX9n1XLO1d+19HA32Y8+fHG/2o/3c8ij50G1g39VniJ
-/vxsAwD9MCptf5TphXEA2LD4N83MKIQxRGf1+dmm1XMNrXK85G7fwUW1XvkRneOUauOIt9NkklUO
-1rYzeRzcTy6pA0OBPU90Q/KzVZdrBwBv1uRt76sM5AhVBhLWH6T+k2q57uir3F13tIychHUkxpxk
-7/oIAL5at3+3Fz8p3ZuV+Q9tcbbqfn8UFxF+WPIlWrv2ttjUjHhnFGUn+7NXFbmIcInX18d+WFhe
-b85gkNogsO+L9pdDaR35i1z+quPanh7CpIdL1rV+XfHoF7emiFwp0udr/839dNcbLsSPvnodDoVW
-z3WKFY8yP0dzf+9LAPiSWemiii7SRX++VlLz//dARM6eMT/a+Xmi24UUkf/Wir/Ilu/Ihs7Da6re
-ufK0vekiXeRbSYpKtf3bZorqspCem5kQv7wp49g745yPEjlHtwpx1HmRl+vsZb4kXHiafpVhlKbf
-3iPOy+LZnG2Wxe1yAc4bM9/1epginsStRkcoJrngFKLo2E/PhLlpFxJFr/kkyPKpWyYcKdA8Xl7m
-9Ff384vUFClBT0XkVdv3cek9wXl5GHw/LY+OR879ZT0tHm7QaRuJfOVpOi3OJwnM9pLR4zDfL+zN
-mkrgFTEA5DubxUOLqCOWfK/U1mfXD9OP6+ZxXm3dw1ex+UHuped+md4+4JLGAuL7aBPTKKPL3i5A
-eJWn45IeOwKE/Px+QcI58Tc2qbMESHKEVHD+2GISEcLK391N9+j7vt9WqZ3c9y5XmeBv75SbJ59w
-+fiQAKmqHM18mSX/9bqrRCLRi1V5nk7v7jqc3W7tzORWdIYoGrS9fZSyxyoljzZum8eYsWK96g0Q
-UX61mnvjqow9Z7Qg+u8b8q8udEn874eoIQVMqBb6QVMAUjF/6Gbjye/HyMVrk/CSxf/xdpnpUgl/
-51aPwyRi+ipFBZn0MUz4DQrGxP1UTMt8L0eW5cMcveBzD9Ey+2SV//ZT56O0LtiO6CnLYk+ApdZM
-cUzWWRIT+HGtb9xZr83o+QzxKo3OVnHXj3psvyjXEvIP991asF0eDzOUq+w8555GSy+jlOFCAIDO
-utXwXLjjFK0K/t0B/7R0N55d0OnGJt8v5t/0Qvp4SCvqbR5DxHJUqlytKmoyuvxWOZGQaO59tEJP
-f62iC+7R04ouV3z6po1aG7XGRpFbIkqv0lkTdiO79SqpWKrIys3Tpi710L9ewZbPd+1YeDtTMuNE
-lpmCSRI2OHKROpOsnJEUxk0yz2mZkeX8gg8a/GQWO5u0pN5GxK8SIN79yXks0sgzRlhhiHBJdp5z
-S9JkmUSRL0ZPPk6o5yz1ngDARlC07gclzRkUKdyT/I9WuG9949l51H1Z4D8ck5cr+qO0k553LgEA
-Pc+XdFit4Zdj/ZK7db30s+ghuRDp726QEGhtcp6vWxenzvwHVX8/m9VssqxUvkgil/HkUzN44uK0
-vJt4uthxpt00vR3TqyLp6KoFRvpHPZGakb/bT4vz/82Z3yOMk29bxbgw1t5L/NEX9WTw7X3/LFsu
-iyQiC095XcQxIdNCixSOfpVGtEwjH6d67C1N89X67v4Y87XScwJuuybeR/UqIdlGRKafoy8uqo+N
-dYSmabIsy6djX61ovGYfNf96hT9/pGc5VNy3UUZT836gP6zdQdM7pIwCo/CmcpvUiP+/rSvrkds4
-wtUn2bxmhjs7u6u1tZZkWZIFGwgQ5ClA/Of9EvshgI/4iI6stNdc5AzZZN+dh3HWysHHYlfV933d
-b1WoQvqHLTsu0rNKT1EEpAeTP692CUDqdGfdRRlPM/31FYZxKEBfjvzxDGml/zCPN51VwG46/Ggu
-uJOLBNbWOZ62Gr2s47LpNprPMuw83DXmWdr9tNbzSXJciqDlnPvBwpOaN70tsaIYEoy3BlEEXbf9
-cWUJJo/Oj/p9i7kAgAWRQUy+mo6z1F+q/KPMpyiuOztGyBh6s/VnKaxQmfuh5pG4fmtpliUpiimY
-FEeL8eNKfbsRykZlAklwSaHpbT2lyrHvm4gSgfRISFkj1Q0xlgwwYQ9y2g9mJf2gTZl408sRcUvp
-fjCOpiiZMBJrgSZ2uDjLU4xX0kzyZEo8J/xta5IkVRifTyczGLcoB0oHZaTFH9XF9VbNc7TcDx07
-WnX2drvPixwAKg7vG5UmEQdfcXRM3bVhgsQF2v/SQJ2RFzWkDMDFrQ4F9q3BjQ6PFgyS9J+t/Xxh
-zWgbVL3ZuZTRt7swF7Sq+LVMHuA9YAbalpz/unVdoBcV+VgAIvRLMU7Z/tuteFyhU9QNuLztbbDq
-WQ0u+rqgb1qKwPh+0xgsimI7RB1Qjq3xMMV6tGhWMBXxWUEe1/G6D4uc5oKwvK6YkY4wzo2L6yEE
-Yz8/ySJQFaFgeDMiaYFl+ffX/XnmCCJ7j4XvUFY/wMNm0C+PmQpEkAAAFdOT1J/kKXENF1M5qM4C
-mL12EGKUFk6mnFkvrT/G8kYiiZIS/NUmbBwhxjNWTJyakDgp89TrlcMhKe9C9n7AweuzSgPA7Q6f
-isgSPvbmra0AsYQwwmwb0d9uyPEssTQRjD09qRplNz7MKJ1C//PGdYM+m089xOj1n09HhYSO+NFU
-PZxwb8I6FuveEsY0Ld7etM9neNl5INF7vzLM2sFGApy3XScoIk5e1MU8Y0tp6jJN9c5hVCf+AfMb
-46RHrcEeIoMggryy2c7Rnxu3MWg5hFWn5hP+/Z2WKH+Z7gSYr+/cixO4lKQicTTodUcnRKPoP8v0
-jcQAAIjc7YZI2Zy43WjIop45wJwzzWfnXL3vQ0SwqMs+cOQ9z2YFi4EXf5x6kVApZWJlTszbESeU
-N70Vk6nVSpAIAFPBGwelyK7aTrFisGbBQ4JsyiknHryTFn0yS99LUmbJx+cPIuZPyGZp09vtfpbT
-IsHH2LaBvB7Sz4SeYn2UBoWS6z6sRmjppMB+lsNNY7cOaY+LGEQ0SqOKxPNS4+CTUfr54zoLN80Q
-Q/BUrPUYaLFCpbX6YY5nsftRi5LCjz17Lkblw57OHmR9zfUXvP+8DgSZdy2+2sjzs/ppvhblVDpM
-Rnkp46AMxsjzipHQa2chjpEJEq8HstYkScnlVj3J3aur5uT05GVlO4smDAQeB5y0Gs2pbXppcRqN
-2mvvnO88KauqDp2YTJVH3I2D1RkhAvnbES5KhICue7cbzUpCzbzAUGC3sRQAppPqdrtHPnx5hC93
-6ssTYb27mLtoQKUToIEHFzHvrHsthcDodSyV0zLgRdJfHJvTaRg2CHH4dai+eqn/+tr1IX03UMX5
-PNvf7rDi04sjVsTQeYR4YftrBChhaSrQttWUs5SiHO13Q9RErBXmSu6UWY3pDKKKWFo7TcKrNlJK
-y1xYa/7yMbndx88muNFuranz8OLRubKWUrLZyuc1Xzl6PC2IGUvBlq3hwd2oWBbl0qZhkBVH153t
-LRVVecqNVq5M0IjEk0URET1O4kKEFakf4v0PvXhvjj7JYgvpj70oqP9lTz5N9Cp7AONuAFomZGOT
-2bRsu50ygYQQSJI55ykCq+WI87umX7b9Xg6CI4qhTPFmu260e7uUJsaAIHoYUArO46AvWI8I++Gu
-L9K087jXELS86/yb5c551IwBEEjjr1r7pzluTHyv+BTJjMaZb1+t+taSJ5najMHi/CHe/tS4GyNO
-hb8e0Hdq6qxf9iMPbqtcIdg/duhyYzYGjhIA7y3EM2YHUooiGXuTYMiPcIa306FDVDxl3RRp2XtK
-3NDJStAusBqrFEzbm8dCvRtxReL3K/dpYt/oifEBfGzppISYU3e2iM3K7pRBgG4lPJvBzvMJJ/0o
-lXYUgbRoSv27gSoHxpmbHjEc3u19WlTG2uM0/nS7j9FYSFLkJ3F4KKwkggY3Gj0GkgtxxN2o1V7p
-3ngRRhnQi4mTiAFLn2aSsvR6N0wppBgqBoj64EnrEY9xKtBqPz4rTOfpVqmjAl3t8GniooG9R52z
-TrrRQk7M6z2cIP13XSy74K2WozshcNfi2SSOsXolizPYfXMlHtd2H8siQSFqSt17iX65iwz86IMz
-/ou5++7GHAkfvbYaXCCTidgogij7vIiv9r41ifagPel98lPjIqOXjZO77qTi4yg/KZHy4BFtIu0C
-XQiUsLjcBx/UTmE1aG9NA3xnKTL95XKngz+Z5BSHOmNej2xsUfR30hxlzHu4HmCtsagmg400EUbu
-Ur3rHHQmJGl6vfcJg+2gL01qWT4adwTyfMK+ed9neXKc84d8EGAWXPfG9562KqDjPFkPJs/+Y9BI
-lSKr7AhUwO8deevBPD3Jm+53ez2auMh7C/bfw+xn5aH/2QLACLRKUbsbcPLbjBM5DKKcYa8/DHuI
-nGeZAHcoi57VuVV2VjK0lIdC76xkNztzWNw0Ag16zD/odrw/ecgOAL2FgsH//Q7YAICl7JDlHj9L
-WcGg6X43HpiylHWD6ZUVBBFG72t/B5XuI49ARxuDHQ/NUYfpeijYFCMV4tmE38ty2DUhh6FIWcTs
-Xg312zIL9CHgWcl+vZP37YYAUDa/yXJPAS1lXOT3BA/2D4EJcAdx7pVpOqtCPORiKVsNMMVWhVhm
-fDUAYzz38kBBgJPaEkZTjA4SwX3hH6DdDYTRXtnDDUpt84QdiNxT+/AhHZIeblwOw8HrYPfW4UT8
-r8uH72Se8f/6VY/mSmRVivYqPijRQeStJTXzB/Wazq4HU6Qsxejge8BwYPcvRxtgoWRnoLcAAAAA
-SUVORK5CYII=
-EOF
-
- open FP, "> /tmp/crate.png";
- print FP $crate;
- close FP;
-}
+++ /dev/null
-#!/usr/bin/env perl
-#
-# lesson08.pl
-#
-# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
-#
-# ------------------------------------------------------------------------------
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-#
-# ------------------------------------------------------------------------------
-#
-# Please feel free to send questions, suggestions or improvements to:
-#
-# David J. Goehrig
-# dgoehrig@cpan.org
-#
-use Data::Dumper;
-use Benchmark;
-use Getopt::Long;
-use MIME::Base64 qw(decode_base64);
-use SDL;
-use SDL::App;
-use SDL::OpenGL;
-use SDL::Event;
-use SDL::Surface;
-use SDL::Cursor;
-
-my $arg_screen_width =640;
-my $arg_screen_height=512;
-my $arg_fullscreen=0;
-
-GetOptions(
- "width:i" => \$arg_screen_width,
- "height:i" => \$arg_screen_height,
- "fullscreen!" => \$arg_fullscreen,
-
- ) or die $!;
-
-############################################################
-my $light = 0;
-
-my $xrot=0; # x rotation
-my $yrot=0; # y rotation
-my $xspeed=0; # x rotation speed
-my $yspeed=0; # y rotation speed
-
-my $z=-5.0; # depth into the screen.
-
-my $filter = 1; # Which Filter To Use (nearest/linear/mipmapped) */
-my $blend = 1;
-
-
-print STDERR "Use b to toggle blend, page up/down to zoom, and arrow keys to rotate\n";
-
-write_glass();
-main();
-exit;
-
-
-sub main
- {
- my $done=0;
- my $vidmode_flags= SDL_OPENGL;
-
- $vidmode_flags|= SDL_FULLSCREEN if $arg_fullscreen;
-
- my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99",
- -icon => "icon.png",
- -flags => $vidmode_flags,
- -width => $arg_screen_width,
- -height =>$arg_screen_height,
- -opengl => 1,
- );
-
- $app->grab_input(SDL_GRAB_ON);
-
- SDL::ShowCursor(0);
-
- my $event = new SDL::Event;
- $event->set(SDL_SYSWMEVENT,SDL_IGNORE);
-
- InitGL($arg_screen_width, $arg_screen_height);
-
- glEnable(GL_BLEND); # Turn Blending On
- glEnable(GL_LIGHTING);
- glDisable(GL_DEPTH_TEST); # Turn Depth Testing Off
-
- while ( not $done )
- {
-
- DrawGLScene();
-
- $app->sync();
-
- $event->pump;
- $event->poll;
-
- $done = 1 if ( $event->type == SDL_QUIT ) ;
-
- if ( $event->type == SDL_KEYDOWN )
- {
- my $key= $event->key_sym;
-
- $done = 1 if ( $key == SDLK_ESCAPE ) ;
-
- if ($key==SDLK_f)
- {
- printf("Filter was: %d\n", $filter);
- $filter = 1+(($filter) % 3) ;
- printf("Filter is now: %d\n", $filter);
- $app->delay(100);
- }
- if ($key == SDLK_b)
- {
- printf("Blend was: %d\n", $blend);
- $blend = $blend ? 0 : 1;
- printf("Blend is now: %d\n", $blend);
- $app->delay(100);
- if ($blend)
- {
- glEnable(GL_BLEND); # Turn Blending On
- glEnable(GL_LIGHTING);
- glDisable(GL_DEPTH_TEST); # Turn Depth Testing Off
- }
- else
- {
- glDisable(GL_BLEND); # Turn Blending Off
- glDisable(GL_LIGHTING);
- glEnable(GL_DEPTH_TEST); # Turn Depth Testing On
- }
- }
- #bit lax:
- $z-=0.02 if ( $key == SDLK_PAGEUP );
- $z+=0.02 if ( $key == SDLK_PAGEDOWN );
- $xspeed+=0.02 if ( $key == SDLK_UP );
- $xspeed-=0.02 if ( $key == SDLK_DOWN );
- $yspeed-=0.01 if ( $key == SDLK_LEFT );
- $yspeed+=0.01 if ( $key == SDLK_RIGHT );
-
- }
- }
- $app->grab_input(SDL_GRAB_OFF);
- }
-
-
-
-
-
-
-#########################################################################
-#Pretty much in original form, but 'Perlised'
-
-
-
-
-sub InitGL
- {
- my ($Width, $Height) = @_;
-
- glViewport(0, 0, $Width, $Height);
-
- LoadGLTextures(); # Load The Texture(s)
-
- glEnable(GL_TEXTURE_2D); # Enable Texture Mapping
-
-
- glClearColor(0.0, 0.0, 0.0, 0.0); # This Will Clear The Background Color To Black
- glClearDepth(1.0); # Enables Clearing Of The Depth Buffer
- glDepthFunc(GL_LESS); # The Type Of Depth Test To Do
- glEnable(GL_DEPTH_TEST); # Enables Depth Testing
- glShadeModel(GL_SMOOTH); # Enables Smooth Color Shading
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity(); # Reset The Projection Matrix
-
- gluPerspective(45.0, $Width/$Height, 0.1, 100.0); # Calculate The Aspect Ratio Of The Window
-
- glMatrixMode(GL_MODELVIEW);
-
-
- my $LightAmbient = [ 0.5, 0.5, 0.5, 1.0 ]; # white ambient light at half intensity (rgba) */
-
- my $LightDiffuse = [ 1.0, 1.0, 1.0, 1.0 ]; # super bright, full intensity diffuse light. */
-
- my $LightPosition = [ 0.0 , 0.0, 2.0, 1.0 ]; # position of light (x, y, z, (position of light)) */
-
-
-
- #setup light number 1
- glLight(GL_LIGHT1, GL_AMBIENT, @$LightAmbient); # add lighting. (ambient)
- glLight(GL_LIGHT1, GL_DIFFUSE, @$LightDiffuse); # add lighting. (diffuse).
- glLight(GL_LIGHT1, GL_POSITION,@$LightPosition); # set light position.
- glEnable(GL_LIGHT1); # turn light 1 on.
- #/* setup blending */
- glBlendFunc(GL_SRC_ALPHA,GL_ONE); # Set The Blending Function For Translucency
- glColor(1.0, 1.0, 1.0, 0.5);
-
-
- }
-
-
-
-# The main drawing function.
-sub DrawGLScene
- {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); # Clear The Screen And The Depth Buffer
- glLoadIdentity(); # Reset The View
-
- glTranslate(0.0,0.0,$z); # move z units out from the screen.
-
- glRotate($xrot,1.0,0.0,0.0); # Rotate On The X Axis
- glRotate($yrot,0.0,1.0,0.0); # Rotate On The Y Axis
-
- glBindTexture(GL_TEXTURE_2D, $filter); # choose the texture to use.
-
- glBegin(GL_QUADS); # begin drawing a cube
-
- # Front Face (note that the texture's corners have to match the quad's corners)
- glNormal( 0.0, 0.0, 1.0); # front face points out of the screen on z.
- glTexCoord(0.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, 1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, 1.0); # Top Left Of The Texture and Quad
-
- # Back Face
- glNormal( 0.0, 0.0,-1.0); # back face points into the screen on z.
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, -1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, -1.0); # Bottom Left Of The Texture and Quad
-
- # Top Face
- glNormal( 0.0, 1.0, 0.0); # top face points up on y.
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex(-1.0, 1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex( 1.0, 1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
-
- # Bottom Face
- glNormal( 0.0, -1.0, 0.0); # bottom face points down on y.
- glTexCoord(1.0, 1.0); glVertex(-1.0, -1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, -1.0, -1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
-
- # Right face
- glNormal( 1.0, 0.0, 0.0); # right face points right on x.
- glTexCoord(1.0, 0.0); glVertex( 1.0, -1.0, -1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex( 1.0, 1.0, -1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex( 1.0, 1.0, 1.0); # Top Left Of The Texture and Quad
- glTexCoord(0.0, 0.0); glVertex( 1.0, -1.0, 1.0); # Bottom Left Of The Texture and Quad
-
- # Left Face
- glNormal(-1.0, 0.0, 0.0); # left face points left on x.
- glTexCoord(0.0, 0.0); glVertex(-1.0, -1.0, -1.0); # Bottom Left Of The Texture and Quad
- glTexCoord(1.0, 0.0); glVertex(-1.0, -1.0, 1.0); # Bottom Right Of The Texture and Quad
- glTexCoord(1.0, 1.0); glVertex(-1.0, 1.0, 1.0); # Top Right Of The Texture and Quad
- glTexCoord(0.0, 1.0); glVertex(-1.0, 1.0, -1.0); # Top Left Of The Texture and Quad
-
- glEnd(); # done with the polygon.
-
- $xrot+=$xspeed; # X Axis Rotation
- $yrot+=$yspeed; # Y Axis Rotation
-
-
-
- }
-
-
-
-
-sub LoadGLTextures
- {
- # Load Texture
-
- my $pth = $0;
- $pth =~ s/\w+\.\w+$//;
- my ($pixels, $width, $height, $size)=ImageLoad("/tmp/glass.bmp");
-
- # Create Texture
-
- glGenTextures(3);
-
- # texture 1 (poor quality scaling)
- glBindTexture(GL_TEXTURE_2D, 1); # 2d texture (x and y size)
-
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); # cheap scaling when image bigger than texture
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); # cheap scaling when image smalled than texture
-
- # 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image,
- # border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.
- #glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0, #level (0 normal, heighr is form mip-mapping)
- 3, #internal format (3=GL_RGB)
- $width,$height,
- 0, # border
- GL_RGB, #format RGB color data
- GL_UNSIGNED_BYTE, #unsigned bye data
- $pixels); #ptr to texture data
-
-
-
- # texture 2 (linear scaling)
- glBindTexture(GL_TEXTURE_2D, 2); # 2d texture (x and y size)
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); # scale linearly when image bigger than texture
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); # scale linearly when image smalled than texture
- #glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0, #level (0 normal, heighr is form mip-mapping)
- 3, #internal format (3=GL_RGB)
- $width,$height,
- 0, # border
- GL_RGB, #format RGB color data
- GL_UNSIGNED_BYTE, #unsigned bye data
- $pixels); #ptr to texture data
-
-
-
-
- # texture 3 (mipmapped scaling)
- glBindTexture(GL_TEXTURE_2D, 3); # 2d texture (x and y size)
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); # scale linearly when image bigger than texture
- glTexParameter(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); # scale linearly + mipmap when image smalled than texture
- #glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->w, image1->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image1->pixels);
-
- glTexImage2D(GL_TEXTURE_2D,
- 0, #level (0 normal, heighr is form mip-mapping)
- 3, #internal format (3=GL_RGB)
- $width,$height,
- 0, # border
- GL_RGB, #format RGB color data
- GL_UNSIGNED_BYTE, #unsigned bye data
- $pixels); #ptr to texture data
-
- # 2d texture, 3 colors, width, height, RGB in that order, byte data, and the data.
- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, $width, $height, GL_RGB, GL_UNSIGNED_BYTE, $pixels);
-
- my $glerr=glGetError();
- die "Problem setting up 2d Texture (dimensions not a power of 2?)):".gluErrorString($glerr)."\n" if $glerr;
-
- }
-
-
-
-
-
-
-
-
-
-
-
-#somthing needs to keep the ref count alive for objects which represents data in C space (they have no ref count):
-my @ref=();
-
-sub ImageLoad
- {
- my $filename=shift;
-
- my $surface = new SDL::Surface( -name => $filename); #makes use of SDL: BMP loader.
-
-
- my $width=$surface->width();
- my $height=$surface->height();
- my $bytespp= $surface->bytes_per_pixel();
- my $size= $width*$height*$bytespp;
-
- my $surface_pixels=$surface->pixels();
- my $surface_size=$width*$height*$surface->bytes_per_pixel();
- my $raw_pixels = reverse $surface_pixels;
-
-
-
- #do a conversion (the pixel data is accessable as a simple string)
-
- my $pixels=$raw_pixels;
- my $pre_conv= $pixels;
- my $new_pixels="";
- for (my $y=0; $y< $height; $y++)
- {
- my $y_pos=$y*$width*$bytespp; #calculate offset into the image (a string)
- my $row=substr ($pre_conv, $y_pos, $width*$bytespp); #extract 1 pixel row
- $row =~ s/\G(.)(.)(.)/$3$2$1/gms; #turn the BMP BGR order into OpenGL RGB order;
- $new_pixels.= reverse $row;
- }
-
- $raw_pixels = $new_pixels; #put transformed data into C array.
- push @ref, $raw_pixels, $surface;
-
- #we could have created another SDL surface frm the '$raw_pixel's... oh well.
- return ($raw_pixels, $width, $height, $size);
- }
-
-sub write_glass {
- my $glass = decode_base64 <<EOF;
-Qk02wAAAAAAAADYAAAAoAAAAgAAAAIAAAAABABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBsn
-GihRIixUGzdYGy1XGxwzKTE1PVNVQVNSOFBRP1VXP1ZXPlRURVNWSVdaRVNWR1VXQlRWP1NVQVVX
-RFlaR1hYRlZXSVlaSlpaR1lYQVVTPE9OQVRUQlNVO1JTPFZTMD47HyQjQ1BRRFJURlVWRFNUQ1VU
-Q1ZVRFdWSFpZRlhYR1lYRVdWQlVUSFhYRlVVQ1FRSVdWR1ZWRFVVQlNSRFVTR1lXSVpYRlhWRVdV
-SltZSFlXSFpYR1pYR1tZS2BdPj5CLTY6TmpnUWhnUmlpTWhoT2loS2dmSWdmTGdmTmdmRWBfQWRg
-PF5bPmFdO2BcPWJgQWVjS2poTGhmUWppVGxrWG5uWm5uXW5vWXFzU3NzV3JyVW9vT25tMjY4Qjw8
-VWFeU2BeVmNhUF1bUF1cT11dTlxcTVxbUF9eUGBeVWRhUGBcU2JeU19cTlxZTlpXTlpXTltYUVpY
-TVdVSFJPS1RSTFdUS1VTTVlVPkREGRggHS5OGTlWGhtWHSxYIh87ESA+GVKnL2O8KXjAJFexGSpY
-SFtWeaqoeqync6qpdKqsc6mobqqmZqypXqShXaKfYaajY6KfZqWjZ6elaKmmY6qla7KtbLOuZ66p
-bqylcqumZp+baaOheaeseaiveaytY319MDw/iKirkrW4kLW3jLO1jbO1hqyugaapfaKldaOde6mi
-fqunfqqoeqqmcqKfc6CddaCdb5uYapeUaJaSZZKObZqWapeScqCbeqiieqijd6qkea2nfrOshLqz
-lL+6cYCERmFjk8/HfdPJd9TLdNTLYca8XMW6WsG2YsG3bsrBYLmwXL2zXsC2YcO5ZMa8Zca9cM/G
-edXMetXNeNnQd9jOeNfNetbOeNTNZs/FaNvQatvRhd3Wld7ZQFxca3BxqcvGn767o8G+o8G9o7+9
-n7u7or6+or6+o7++pLu+orm8p76/o7u6oru8nL2+nre5m7S1mra2nbK0m7K0mrGznrO1laqsl6yu
-nLK0eYqJESAgDkqDDWW3Bh2zCEexEiFtGR03IFawMm7RLn/HJluzGSdRODgqPFhWO1VXPVVYQFdd
-PFVYPldYPFRYOVJWO1RYO1RYPldYQFZYRFdZQ1ZYPFRUQ1tbRF1cRl9fQltaPlhXP1laPFRYPVha
-OlpZQ15cPEhHJSssRlZbSVxhR11hRFpeRlxcRl1cPlVUNk1MMlBMMlBOMk5QNE9UNVBPNU5MMElG
-NUtINUpINktIPFBQPE9SNkpMN05NO1FQQFhWRV1bP1hWRl9dQ1xaRV9dTWZkQktKK0A+RmtnR2to
-TG1sSW1rRmxqRW1qRWxpTnFvUG9uUm5vT21vSWxtTW5wUG1uVG9vV3RyVnFxVnJxTXBuTHBuSGxq
-Q2dlOmFfKFVSKVpXL2BcQmppT3JyLDw9QEtLWW5sUGJjUmNlUGJjU2NkVWJkUV5gUl5gU2BiUmNk
-UWJhUGNgUmVgVGNgUGVjWGRkWmVkUWJgU2BgU2FgUF5dUF1cU15dUlxcV2JhS0tOHRovEVKaCm7J
-DSbJD1fKGilmERY6G0icM2OyKXizK12kJTBRLSknUldeVlZZVFphYWZvZWtybXR4eYCGhYySgYeN
-eYGHcYGBbXl5bXN1LjIzTlNTbnRzc3h3dHp5bnBydXd6a25yYmJpWWJmUmNjT1lcV2JlWmZqW2ht
-WmluWGpuVWdsUGVuR1xmRlxlT2NtXm14YHB4YXR2a399b3x5c3x6eoF/VFpXIiklTFVRWWBhUFZc
-WWBmYm5tZnNyZHBvZHFwWmxqW25sUGRiT2NhT2JhWWdiVnFoWndzY3V0ZXd0aHp4bn58bX17bnx7
-bnh3a3BwdHh4ZG9sWG5qW2xpJCwrMz89W2pnXW9tVWhmV2ZlVmZlXG9tZXp4d4iIg5CQhJCQhI+Q
-gI6QgYmNfYmKcYiEb4OAaXt9Z3l7ZHZ4YnV2ZHl4YHR0Y3d1YnZ2V3BzVnBxUWpqRl9dIi0vO0pN
-WGdpX3J0XHR2aXl8anx+a3x+ZXh6an6AX3J0RVpcKjU1Gh4mElKNDWq6Dhq1Gky5GzFgFBQkFCRF
-GShDFi9DGypHFh4sJicoOTg+NTk7ODxDP0JLRUpPRklRUlRdVVZeT1JXUlZYTVVUUVRVU1BSMyss
-Qj4+UE5OU1FTUVBTTEpRTFBRSFBMP0FFOzxBPDU6OTI6NT0+NEJAOENJQUZQP0ZNPUlLOEpLN0NM
-NkJNNkZMPUpSREpXS1VbUVhcWF1iXmRnYGNoRUZLIykqNz1AMUE1KzVBPUJIRVFSQU1MRFFPRVFO
-TFJTRU9PQU5NRVFQTFxZWWNbVmBZVGJeVWJiWmlkW2pjXWtpWWlkZWtpYWNoVmBgT1dSS1BSRE5S
-QEtFNi4sNDYxMENJRElJPVBQOkxHREVNSFBST1xXWWVjX21nXGhhWGNjWGRqWGRfUGFhRVhgT15a
-Tl5eTl5eR1hYSllYS1lXSlZZTlxfTl5eUF5cU2BfSFNTPEVGKS0wOUFCTFBSR1NURFhXSlZWUl5e
-UV1dTVxcRVVWQE9QOUhIKy40HB8nEipGHC1NGRpQGi5OJSUvIC4nboaIUWNiKy8sZGVmIiEoOx4z
-VCg6Tyo1TyA7VCNEWyxJWyhRYzBgXy9UVyxDVy1AXi1PYzJUXi5QZjVZcDhkbDRiZzNeaTZhYjNS
-TCI4Tyg+WChNWipQVCRGWCdMSidALh0oMBoqVylOZjFaUiJFUyNFZy5eaS1hVCVLNSExMRctWS1U
-ajBmZzBkXihbXiZZazFkZiZaYStcMSEtQRtFZyhPYidOXSNIXCNGWiJDYCpKWyRGYSpNWilKOB0z
-VyhRZSdVYidEZitPaC1OZy9IZSlNZipUYyZSYCNQUi1HOSE1ZDJfiTpzezRchDlggD1ifjpzhzBX
-VzNNOSQ0ZzBXYSpKWiZAYShEXCY8WCE3YSRIYTFVNyMxMhZASh5nRhtVQxxRQxtRQBhNRBxTRB9X
-WDJvb0yISSpfQx1RTSRaTyRcTiFbSB5ZRx1XczZ0dTFwYS1mVSheWCxjQRZMRxhOVBxUShtRXCdg
-XihVLiYjJDIzKSglQk1LbJWNTVVRKTk4g6GrZXuAOz1BhpGOLTU5PRs4ZilKYitLZi1edzxwajJg
-eDxzhUZ/dz1lcTtadT1fgkF2fUJveUFtg0uAjkyLhER/gkd7gEl1dD5faDVSZTNXbDNhbjJgdkd2
-k1uOWilIMyMrNxkvcy9mijx9dTNpay5YhDt6hzx/bS9fQiI4NRwvdDJuhjODfTd3dC1sayJifTNz
-eydrdy9sPCIyTRpGfStadCtabyhWci1XdS9afzRqdyldeDFgazdcOCIvVyNPfC1neylPfC1bdCtT
-cy1KcypVfihjdCJediNYZjBLOSAzcjRppz+JnT1znkFvmkJvpUWKpzloZThQQSU6fDVkciZSbCRM
-ZiJDZiU+YyE8cypVejxkOyk3OBZLYBt6XiR2VRtnWB9rWR5rYCh4c0KVgU+ldUeYVClyUyFqWyZy
-XSd0bzaGYyt7UR1sdSx/nUWalEWYfTaGfDiIbSx7UhViXR9qXiFtUBZjWCNgLicqSmRpNUZDPFRT
-da2lTV9dKzU0hKWrW3d5P0VIn6KoREZHPR0vaitYaC9hk1qTm2GXeUFum2aZnG2glWmSl2mapXOu
-iFOPkF6NonGloGuonmelm2qhnHCcd01ymmuWlGaUk2mYhViFi1SFhVaRlWGbZjRWLyQqNhcsfTZv
-ikB9hkp8cDlggUF7h0SCbzVfRiU9Lx8scTRpeDFvdztzdDNuaCZhdjJubylmdTNsQic0TBpHcSla
-cixbbipVcy9YdDBafjdrfDZiaD9VXE1UQkA+PCMzVyVGbSpRdipcdSxScy5IcSlSeChfbCRbcyRY
-ajFPNyEzczNlmkCElUBxlzxim0NmmUaFnD9sZDhPOSMtcC9TbChLYyhHZydGZSVAZiVEdC1beDdj
-LyMxOhlOXBhtXCVxWB9tWyJuXCJuYit4YzB+aTaGZzeDYTV5YTR1Xi1xaDV7hE6Vf0aPXS10Zi92
-fT6Gl1Shlk+fgECPgkaVYS15URxkcip0YCBsRBxTLCorZoSIQ1VUOEtPdaSoT11gNDw8gquqX3x+
-QUVInKKlPEA9Lg8laStbZTFXjGKPc0Jtg058kGCWkluSl2aVnGWgkVeSiFSGgk54sYO9mGOjmmSh
-oXSpn3ihgE9/mGecp32wmG+ihVSFhlWMklych12Rb0BfLiUqOR0vfDVtgz55k06KhkF1gkN4l0qJ
-fTllQSg5MSUyai5hdjNqfDh4dzVxci5nfTVzcipogjh2PCk0VRpEcyldei9hdS5YeDJbdzBehT1x
-cD5cbW1qz87Kz9HIio6MS0BJRR0vbS1TdzFTezROcixUcitaciRZcSZfbi1PNx4zczBlnDp9ljho
-kjlim0FkoUKDoUFsaTdNNyIvbCxVci1Way5TbCtPbCtNci9WeDJfdDNcLiMrRRpWXix1WyR0Yyl8
-XSRxZCh2XyVxYTB1d0WMbz2Ic0CNg1ObdEOKbTiAd0CIiFCaeUaNXy5zXixzfzuLmk+kikechz+X
-h0GXWCJpXBxidyp4Sh9LKycqdpOYUGNhOU9Pc6WpSlhbNDw9hq+uW3d6P0RIl6OeLTMuFg4WRiM7
-ZTNQkWaRhVGAg0l+jV+So3elqH2zmmynkmWSh1d+f0lxonOqi1iQl26gl2+WkGGNfEp8k2qZh1+M
-jFyNmV2Wl2Scj12Sd014cD1ZMyYrOiEvdjBpeDNugz54jUp9fkJylUyFfjxoRCw7KyEsbDFjdDJn
-fTh5gDt5cy1ogDd3eTBvejBtOCcxVxxEeC9hezJkdjBaezVfeTBgiEZ3Z19ds8a36OHj2tvYiZWU
-doCBSkRFSiY9bjRRcS1JbypUbStVdSlWcyhgbi5NNB8ucTVkn0CCmDhskzhnmkBpn0GBokNtaztS
-OyU1ayhWdS5cdjZjcjFZczJYdzVeeDVgczRcMiMtTRpZXyt3XSZ2azOGZS57Zy16ekKMZTN0bjt/
-fkeUczuMYjF6e0uTiFefcD6GXCtwb0WEcEmGVypsWyZvaS97fT+OejSHhT6Sbi9/WBhiTR5UHRkg
-KC0pe5qfWmlpNE1LaaSlQ1lZND09ha+uVnN2QEVJpa2yQ0xFEjkMFSkTTSc8dk1uglJ3bz1cglp5
-kl+QkWORlWKZnmqbg094gEZvglODc0RpgF+CbUJXfDtsfEN2kWaMaj1fYS9MYStQajRhcDVgXzRT
-cj9YMiYvOx81eTBvayZcaylVhkN2dDpjiUJ1fTlnPyU8LyI0cTRsdS5rgzuBjEKEfjRzhjd7fTJz
-dCtnNyUvVhtEejBjfjNnejNeezVfhTtqbTxej5mNvcLI0tHQ7u/tnKepdIOHpKiqTDpHYC9FeC5O
-eSlabihQdSlWcCRjcS1VPCQ0ejpjpkOGn0B4mD10oEJxnj+ApENucj5cOiYxdDNbdzBcejlnfT1p
-dDVfgUJseDhjdDVgPCY0cSpxfC2DdCqCcDGHeDmJgECPllGkmVClgT+Tdj2QhlSldECNViNwYzOA
-gFGfZzWAUSNpXzR2YjJ6aDiAViRtXiJuZyt5biyBgTuVXSxpFS8YFmgXKDoqgZ6kXWptNlJPZKSk
-P1dXMzo6i7GwY3t+Q0ZJrbTCUFRUGWMKHnUhJiEkTiA/YCtIYzRIaz1ZcTlmbj1kdT9xeDpxbTdm
-ajNeZzlfb0diYDlUbDdVhj91eDltZzVWXStFYC5BWCk9YCpLcThcZjlZZTVXOik3Nh4xai5iXStN
-VSk+czFicjJjezVrdDFhOyIzNic1azBkcDJmgDd7ij6EhTl8gjR6fzB1dixsOCQ1VBdDdSxdejRi
-dDBaeDJeejVjUzVMpa2l5eDi+Pby///7/f/+1t3a6Ofjal5fUik4bzVMYipOXiVAZSJFaSJZWSU+
-Qyk4bi5XiDNrhTVzgDZphDRcgjZghzlcYDRMPigxZSpObTFXbTJbcTNfaCtWcDNebjFZXipNODI2
-aC9nfjZ8bixyVyZpYzJycECAdDqAfzKCgDyHe0OKdkqOakKDWTRwQR9YTy5nZkOAQCBWPB1PRyNc
-Ui5oQx5VWC5nSSJbSCFcXjBrKyQwD34UFp0UJTgliaepXW5uO1VRZaKeQVlYNzw8k7W0Y3d5UVNT
-s7y5TUlRFGcYJLwjHmEgHBQeMx0sMCAtNyE1OyIzNiEyPSc2QSc3Nh8wNx4tNyIsMyYrLCAkNSAx
-PiQ6NiEvMh4tMR0tMyEvMB4qMyAuLiQrOyc1PCU2IyMgKSAnQiI5NyAvNyEzQiU6RSZAQyQ+RSY8
-NS0tKCYjSCZCQic6SydBTy5GTCpCSypCSihDSSdDJysiOx4wRSY6Ryk9Ryg+SSk/RSc8My4zqLCd
-7efQ9unm/vX0//35/v318+/hbHNnOCcxTTFCQCo+RStAQSo/RydDOS42KSwxRTA6Syc5SCVDRis/
-TjFFSzQ8TDFAOjQ1KywvQSdBQixDOSY8Oyc4Oyc3QCs9Py04RCs5JjImQCk8TC5ESCs+Qiw8Pys7
-QjFBOSo5Oys7Oyc4PCk6PjBCPihDRTFEPSs5Oyg3Py9DOi48MyYvNyU2QCxBPis7QjBAOyg4Oy05
-JyAgFEgVC6gYEZkWIDAgi6moVGplQldVbKigQVxZNz08krSzYHR2UVRVoqOpTkhQFHAVI7kiGkoV
-NRk0XzZhWzJhXi5oWzFsXDRnVTFaTCpORR5MUSVUVyxZYTtmXztqYjhoYDRiUCdOTyBOXCpbXStb
-UyJOUCVVXTVlbzNpcThnNiI4OCA7YC9UXi5XXypjZTBjYS1dYS5ebDVpSC1EMyItXC1RXDFRbThe
-iFV5bjpfbztgdkRrbTVgQCgybzRdhUl0i0tzjU10jU1xjlFzRj5BhpZ/zMu07N3Y9uTl/vHs7Onb
-z9jCXFpXYjFbfTZxfzZsgDh2gUB3ij13d0BuRCRBby9fgi9rhjZxgDNxiD16gT5ugDhqZDVXQSA/
-bihncS5sYCleZSpjaCxoYCRhYSZeZSlhNig5ZjdcgU5xfUZriVJ5d0JphFF4jFuBjVyCdTtjeDpj
-h0xzd0BmfUdtd0FmhlJ0dEFlazlcekZoXyhNeENoiVd6jlx+fk1vazpdWjZUHTYfDXgPGoYgIDEh
-hKOfSmFaQldXbqmjRF1bNz49lLi2an+BQkRGoairNTE0GVkSGV8XLBcmcTdwbCt7YiZ1ZSV5ZCt7
-aC52XihoUCBdSRlaXiZpbzV4aTF1bzp+dTx9aSxtWSBfbStubylsbyprcSxrbDBybjF2hTJ+hEJ+
-PylBPBw5aCZhcC1rcy9wcCtrbCpjbCtkdTBxUDNQNSEwZytYcTBieTFtikV/fDZwfzt0kkSBgDVx
-QSc6eC5doEN5pEd/pEh8o0d3rFJ/YztWVnRoe5qE1tHM6d3b7ebgub+2iaSUPTxAcDVuhjWFfzF4
-iTV9izV5ki6GdzlzRCo6cy9kiS5ygy1nkjd8jzJzgTBihjhqaT1ZNiIxZyZdcCdmaShiaCZjaCVm
-ZCFiZSJeYyhbMiktaTdVl1Z9hj5tkkt4hUBtejdklVaAnWKLiklydzReiUpzfDxofzxwfztwgT9v
-fTxsZSJVjkl9eTNmaSVTgUFpkVB5i0pzejthe0JrYTxZEzIKFFkYJzgrd5iRTWRaRFhacKylRV5c
-NTs9jbSzZH1/P0NDlKCaKissDR8MJyQnajJsZyx1WB9uXChzZjF2aTJxUSRdRxpVSBhXSCBZZDBr
-XSZhZTdxcT97aDFrWSJaYC9nXipqZitrbi5seTZ2bTFxdDJyfjp5gzx+PCk3PCA1ZidfaSpjbS1n
-bjBlZytbZypbbi1lUDJPMiMubS1dcjFkbi1ghUV2cjBjfThvhTxxaSVVOCgwdzJYnERynkh9nkZ6
-oEt9qVeJdEBeOVZRP29onaGj49vavsC8Z4yKXHZxQS86jTp/lDiFgjN1hyx2hTZ3iCl7bC9hPSY3
-bS1gjDRyfi1ckj99jDN6fDFlizd1YTlYLx4tXyFfZSJgYSVeYiRgZCNgaCRiZyZfYCZaLiQtcj9i
-l1eCh0BzeTZmhUJxdTRjdzVkfjtqfzxqfz5sjE58f0JtbS9ccDNgdTdjfDxpfj5qjU15iEdzZiZT
-bi1bby5caCZVZSZRay1aiEd4WEBOFiQUIikhYIF1QVFLSVteb62kRmBcMjc7jLKyYXx+NDg4VV1b
-JSUqJBUkaDpscSx9XyJxXiNrZzBwYjFrTCBZRBlTSh5eRRdcQx1YTB5YXCpmcEWAazZyWyRiYClp
-XyxsYClqczV0dTNweTd5cTB1fjJ5cjJ1dip2OyU4Ox41ZydfZylfailicC5obCxgaChccCxnTi1M
-NCYxcDBidTVnbCtehUJ1fTdtfTVtgjlvZR9ROicxeDJbm0Fxokp9n0Z8pU+FqleLkVNxO0hHOGVn
-Z32By8vGV3F5LWVrOUpLWSxPoEGUjjCAfDR1gTF1eTFwfiZwZixYOCMzbi9hkjd5hDFkkz99kTh+
-fjNmizN0VSpKMx4uYiBhZiVgYCRbZSViZyNhaiNiaihiYidcMiUvaDRXomOMlE9+cC9deThmgkFv
-dTJhcyxcbipZcS9eezxqbixccS9eaylYcjFfcjFegUBsmViEmFeEcC9bczJeejllYyFOZidRcjFc
-djFejVV3WDtIJyUhK0Y7JC4qVGNlbauiRF9aNDk8hq2sZoCBKS0tUl1UHykgRydEdTV5YCh2WyJx
-bjByZSpmTSJaOhdSVyNkWiVlRxpXSx9aUiNfbz16ajl0YCtgXypqXyt1XCdxZytsezx3cDFubTJ1
-bTV7cC51ZDBzdS98OyQ6PiA6aChhaCtfeDpvcC5qaipgaClabyxkTixLNCYxcTFjdTVnczJmg0B0
-gj1ygTlxgjlvaiNVOSYweDNcn0Nxo0p4oUuDplKLpk+Fq1uIVUVQR2VrR2ppan18HEdWNmFjOyw9
-fDNzmj6OkDWBgTh4i0WAfDJxfiVvaC5bOiU0bC1dlTmAijVukDt8kjZ+fTFkkTd3XjBRNBsvZiFl
-ayZlYyNdaCViaiNibiRkaCReYiZbNCcxYS5QjU53mlWFhEJxcC5dhENxg0BvbylZaSVUdTNigkJw
-dDBfbipZbChXbSlYdDJfcC9bfTxoklF9fT1obSxZhURxgUBtfDpmgUNrai9WfD1nfUxrKiQkNU5F
-KzcxR1tabKqgQVtXMDY4g6qpYHp7Njo5fYmHLDg1QBxGYid1TyJuXiZvZihkWyBaRhtYRR5faixx
-YyRhWihdWSZjajdydD55ZC1oZDBjYS5xXCl4YSl1bzJycTNubjJwajR5YTV8WCpybEGEgTyIPCY7
-Oxw5bCxlZShbaitibSpnaytiZCZYbi1jSSlHMCQuczVndjVpejdrezdrjUd9gzxzi0J4bCdZPCs1
-fTZgpkx2pkx8p1KPp1OOq1CJr1KNgVRyS1VbQGRfFDM8GEFHNz49ZC1VijR+lkOIkzyDizx+hzx6
-gC10iSt7g0J3PCQ2ZCZTlzeCkzt6hDJukTd3fi9iljd7ZTVZMRgtbiVrcSlqZSNfaiVkbSVjeC5v
-bCViZyhfMyYwZjJVgD9plE9+llWDdzVkczBfgDxrgzxsaiZUdDNhikp4gj5sZiFQayVVcCpaeDVj
-cS9cczFeczFehkVyczJfdzZijk56hUZyej9oc0FjZS1UajxcLScqaIZ9SV1UP1lVbKuiQVtWLDY2
-g6mnYnp6PURBhJCNMjQ2PBtEWSNzUx1xXiNqXyFYYCdhSxpcWidnbi9vayxpYy1oVCVmc0B6bTZs
-Yi1mXS1qXCtzXyp2ai1vdjp4azN0azZ5ZTR6USZuYDB/dECEhjuFOyo4Ox06aChhaS1eaShmbCtn
-aytkaClfci5oUDNNLSIscjdqfjpzfDdsgj1wmVOIgjx0i0J3aipbPS04hTtmqFF4qk2Go02Rp1GK
-r0+IsFKMnFqMTUdUP2NkFj1EIkA4RzBDfDVshzZ6mEKLjTeAgzZ3jDeAhjN6kzeGhER7OiI0ZCVP
-nTqBlzx9ezBfiDVogTFkmjaCZzZeKRUpbR9kcChoaidjcSpqbCdgdCltcSFrcCpnNCUwZy5Ugj1q
-l09/kFB6gT1raSJTdi5ffzdndTBfaSdWh0d1jk14byxZaCNRbCZXfjhobyxadzNibSpZczFffDto
-cjNegkdvjlJ6h0hygkZubzVcWS9LNzA0bI2BTGBWQVZVb66lP1lVMDo6gaemZn5+Q0lGiZWOMjE0
-NxVEVB9zVyFvXiNjYihgVR9bVR5hbC5ubi5uaC5qUR9aZTl7c0B8cDhwajJuXC54YCx1aSxweDl5
-bTx8YjZ4ZTh/YTN+YzJ9dzuJeT6EiTuHPCo6QSE/aihhbi9hby1rdTJwci9qby5mcyxpVjZRMyUw
-eDptiEB6hD5yikJ3nFWLhDx0iT50cC5gRTQ/jEBrqVF6qlCNpk6Op0+FslOMrU2LsV2caE1mNVRX
-JVBSMEA+akBhhzyAgzV8l0OLkDyFei9xkkCGizyAlDyHez5yQCk5ZyxPkDhvlUB5iTtuizZuhTJr
-njmGZDVVLRoucCJnezJzci9scy1rbClgdixveit3dC5sPCw3cDdddzNgl09/iEdykU57fjhoeDBi
-dzFgdjFgbylYiURznV2HjEp3bypZbSZXdC5edzNidTJgdDBfcCtacS1bdTRfejxlg0Zuj1F7jlN7
-iE10XzZSNCwwcJCFTGBXQlhXc7KpQVxXLTc3hKupaH9/QUdEj6CZPUJENxVDWyZuXSNhYSZeVyFb
-SxZXYCluajBxZC5sUyFbWypkdkV/dD54cTl4Yi93WSp3bzJ2fzx6eD6DZz6DaUKHZjiDcT6PdTmG
-hDqGeTd9iTaHPio9RyRCcS1mcTFidzJxdzBxdS9ueDNveS9uVjRPPCw2ezxulUqFikF2kEZ6j0R6
-iT52iDpweTRmRDE8hTdjqE93rU6Fr1OOpE+JqFWXp1WNtlWZi1d4NUFDOEhNPUBDd0htlECFhDN6
-mUiRjTyFeTFyjT6Dhzx8kz2HiVGBSDJDbDJVhjdlk0N6jjx5kjt3jjp4njmGYzdONCE0eCpvfDV0
-cS9rdi5ycSxnfzV3hDZ8ci5oQTE8eUFmjUl2n1aHhkZxiUZznFWGolmLjkh4iEFxeS9fezBgl1aB
-nFqHh0FwcitcbShYfzxqfjtpejZlfTZlbyhWaidSeDhhgUJrikx2jlN6hUpxb0VhMisub4+DTGFX
-RFpZcLCnSGJeLDY2gaimaoOEO0FAkaSfMzw9PRdAZyhpXyZfWyNcTBdUViFkZDB0ZjRyViRiViRg
-c0F8dT53czl3YTB0XCtzbzR6gD59gUKBckCKbkeRckmReUiTfUKRfDuGejaFdC57gDaCPy0/RyVC
-eTFudjNnfjZ2eTJxejRveTNvgDN3VzNQQC45fz1wmVGJkUp+lkyBmU6EjEB3hzducy1hRC47hDli
-qk50pkyCpVGLp099t1yarFyZj0eEVjJQMzQyaGNWPj89QypCaTBndzNynEyRokyQgTRyij6Djj+D
-jT+AkFKIQCw9bzJdjDprlUF/gzRvkT13mkOImTuBZztPOiU3fC92gDN6dDBrezN2eTFygDh4gzl4
-fDZyQjNAdT5ijUZzmVWDikl1llWCi0d1oFyKpWSOoV2Kkkl4fzNliENxoWCMmVaCfzlpcStcdjBg
-ikVzhURxhEFufzdmbShWbSpWfDtnhUdxjE94hkpybkRgNS0xZYV5TWJYR11ccK+lSGJdKTUzh6+t
-Z4CCQEZHnKypPEVGOxI4ayhqYCxoUh5cVCFiYS9zZzV3YS5sUh5cbTp4d0WEcjl8aSx0XTBzYTJu
-hEF8hEWDcj2CcEeWd0+ZgFGYgEqSgEKLdTiAYzCGejiLej6EOS47RSVBfzR1ezRtgDd5fjd0ezZu
-ezVwhjh/Ui9OPiw4gT9znVmPkE2Blk+FqGCVkUd9hThsdDBhSjVAiUJnqVJ1pFKAqEyKqlF6lkp/
-WjJhUDgwWVcpPkYuyLqTnZqOJyolPCwsMCI1azFpijR8lT2EkT6JlTyKiDx8lk6NPys7cTNilDxy
-m0KFiT5yijpunkOKlTx6cUNdPic6fDJ2hzWCgDp3fjZ1gTh6fzh4dzFufjV3QTVDd0BjfzRjeztp
-k1J/k1J+m1qHi0t1mFuArGyVq2eVk0x+kEl6n16JoGGLjkl4ejNkcSlZhD1si0x2i0t2iURzfzpq
-bilZbitZfj1qh0l0j1F7eU1qOjM2X4B0SV1TQFVVdLKoSWRfLjk3hq+sbYaIPkVGmqyoPUlJQBpA
-cjJzWihkUiJgWSlrYjN5Zjd8VCFfYCxqc0B+cj9+ZS91Zyp1Xi9zbzx5hkSCfUGFb0CLb0iYf1Wf
-hFGZe0CMekCObjiHYTKIfkKQiEuSQTNFRSRBfjR0gjt0hDp9fzd2fTlxfzl0hjl/Xj1bPSw5gkN1
-pWOYkE+DmlaKqGOXkUl/gTZpdTZhRzY9gzxlqlF9tVWDrkuIazZYOig1UkQoqpQiqJgfUEc7wraN
-p5qGRTMghE4VWkAdOigwNyBDbjRqk0GFkz6IijyAnFKTRzFCcTJhlD1zoEiKj0R5iDhslj2Alj16
-dERkPyc8fTV0iTiAgDp7fzd5gDh6gTl5ezRxfDZ1RT1HeD9jfS5hcC1eklJ9lFOAoF+MlFN+iklz
-qGeSrW2ZpGORkk5+nF6Jm16Ikk9+hD5wdS5eejRhiUp0kVJ9jEp5jUt6ezlnaCZVbCpZfj9sjVB7
-eU1rMSotXX1xTGBWQlZWc7GnR2FdKjY1hKyqbIWHPkVGk6ejPEhJQx9FZypqUCFdWCxrXzJ2YTV8
-Wi1yWydnajd1azh3ZTNyZTN1bDJ6ZTN7eUGIf0WMcz+NbkGRfFGcek6YcT6NcjeMZDOLZDaGbD6N
-gUKQhUGTRDBMSCZFgDV2gTpzgjp8gzx6gj11gTt2hjl/WTpYPzA9gUV2oWCWkFGFm1iNqGSZjEd8
-gTZtejlnSDlFikB4sluPfT5kSS08Xlgon30huYoo1rEYrJkdREAqsa54hIFlUSsZlFEFm1QNhE4V
-aEUdRzUvRylJaC5mfzZ5n0+SSy9BczRjkjxylT+AkUZ7iTlsjjd1lD13dURoPCQ4fjdziTuBhTyC
-gDh8gDh5gjp6fTV0fTl2PThAg0tvhjRpdi9ifz5qlVSBo2KOlVSAlFF+nV2KqmyXpWmUpmSThEdy
-ik54lVOBiUN1h0BwcixafT1okFJ+dTVkfj5rikp4gkJwaihZbC5cikx6ek5uKyQnXn1yUGNaQ1lY
-dbOpRV5aJTc3hqqqcYKGQUpJkKmlOUJFOhhAUR1gVCRjYDF0bT2EXjBxXC5tZTJ4ajZ9bDl9azd7
-aTN5aTN3cDx/fEWOfUeUcz+Qd0eXgledc0qPckSVaDeQZTiLcUeSc0aVej+OfEGRQzFGTylKhDd8
-fjpxfjp1hkF7hD55gjt4hTh9XjxfRjZDhkd2mleNklCDm1OKqF2XkkqCfy96iDxrTTZHbDtiUzVV
-RjkxmIYbwKMgrYYZto8qxa8fo5EnQT0vuq51b21XVy0RkE4KmE8JoFAIo1MOilMWYEIiOSw0Th9O
-dEJuUztPezNemT54jkd9jj90kT1xiTdskj1yc0ZlPyc7fjJ5fzl2ijqEgDx9gTh7hzyCfDR2fDp4
-RjlFiVV4jENyhDRqgjxqgz9soV+MomGPjUt6l1aEoV+OqGeVqGiUn1+LiEZzkEt7jkZ5iEFzdjJh
-hENwjU16djNiaSNSgD1slFSCiEd0bi9bdDZkdUlqKSIoYH97UWRhQltbfbSrTF1aIzM0hauqb4OG
-Q0tKlrCpOEJDMA84Uh5kWydqaDJ2XiltYCtsZDJyYDJ1ZjR6bTV9bjV9ZzF4aDR3cz6Cd0GJeEKP
-ekaUgFCdgVafdEqRb0OQaz6QdkmYe1CdcUOUdTmLdz2OQzFGUStNhjl+gj50gT54gj13gz14gDl3
-hTd8ZEJkRTVBhER0lVGIgUZ3l1GLl0aIk0SEgT1oZS1nLy4rPTMmcWArspoXyKEavIontpUksJow
-uaEumoQrQ0A1rZ5wV1JDWS8RjkoJlEsImEwFnE0FlE0GmE8MgFMRVD4dQjI6ODFAWCtIizltpU6J
-kjl3kDl2ijhujjptbkBhQCc/fTF7dzVvgjh6ezl2fzd6hzuCfTZ4fTp4RjVDild5nlmHhzhuhT5u
-gjxrhUNxqGeWomGPkU99oF6No2KQm12HqmmVjkt5i0V2iDxwgTdqjkx7jE98iEp3fztqbylZayhW
-fDxpikl1h0l1ez1qaT5eKyUpYIB5SF1YQVtafbWsSltYLDc5hKuraICDQ0tKn7evPUhGNBM8VCBo
-XChwXihtXy1rYi9uZDFzZjR0YS5yZzN7ajV/ZjB4bTl8dD+CeEKKgEqXg1Cae0yVcEKSbUGQb0KR
-dUeZeUqecUOVbj+TfkGVcjiMQjBGVC5QgjR7gj50h0R9hD95gTp2fzl2hTh8WjhbQzI/hENyikd9
-i02AmE6NlEaKgkuAUzVPNCgud20iopg1uaQmupYhxZ4ivZwbspYfs5EttIomoIImOzc4TkUvMzg3
-SSsSfkYKgUQHekMFfkYKh0oMi0sOmFcMmFcIg04UZ0MWOi4fQiQ6eDhslUKFokiKjj5tijpkaDtZ
-QCRBdyt2czdqeztyejt1gDZ6gTV8fTZ3ejVzRzNBhlJzqGWTkUV7lEt+gz1vgj9wjEp7oWCOoV+N
-lFKBn16Mp2mTomKOllSBhD5vgztuhT9wfzppejdlfDxpjUp5hT5ubSpZby9ddjVifT9rgkRyYjdX
-LSkpZIV8TWNbPllWeratRFhULzg6ibKwZ4KCR01Mpb2zQU1JOBc/XCZvWypxVyptWy5sZDRzbTZ5
-dDp9ZS92YzJ7ZDR+ajN6dD6CeUGFhUuSgE2XfEuTcUKLbD2Naz2QbT+Td0mfb0CackOabT2SfEGV
-gUCVRzRKUSpOgTV4fThwgj56gDp1fzlzfjh0hjh+XzhcPC87gEZ1gzx0mU+PllKJdT1vQi5IUkoi
-kIgfvZ8mqoslso4ttZg4uJYqvZEiunwwsXoov4saqYgfPzZBR0U7Hy4vNycYa0AJfUUHd0UFdkUH
-e0cHfkYLhEoKi1IGnlsOoVMIhlATUDsaOyQrUytUgzx3hzlpiT1iaj1QQB9Adi13dDlxdDhueDhz
-fzd5gDh7eTJzejNyQi89cTxgpGKRnlWLiUJ1h0FziUV3h0N0jUt6oF2LnFqIkVB9nF2JllaCkE18
-fDdohUN0eTdoci1dejNhdTFfdDNhiURyeTdlby5bcC9bbjBbfTxqZDZXLywrcZOHUWVbQ1tXiMC3
-TWVhIygpSGFeOkRCRk1Kp8K5Q05MQB5FZi90YC5wXjBwYTBycTh6dzd6bDJ3Yi53YS12azh8dTx+
-g0KGiEmMg0+RdlCWakGKbD2JbTqIazyOckWcbT+YcEWabT+TbTmOdj+MmEudSDRISiVMfTNtfTdv
-ezZ1ejVufDdufTdzhDV/XjlePS46iEZ8iD5ydj5wRS5CQTsqiXQos5Qfs44js5QZs5AmuqQquJ8s
-u5IjuYYYu3kkuYEtx6AarZofTEtDubGapKuETEM5WTUIfEUHekUHfEkKe0sLekkMfUgLh04PlVsS
-mWEUm10NmlcKfUoTUzgeMyksOiA5bytRXzpOPiM+dDFueDBxdjJvezZ1cjJtdjZwdS1ufDFyPCw6
-XCNMjEZ3lVGEhT9uezVkiUNyiEBxi0R1lE59l1WBmVmDjk16klB+klB+djRigj9tfTlobSlYdzNi
-fDpncTFdejlliEdzeThlcTBcczJecy9dYTFTLikqc5OFVmRZLzw7UHBrMUA9JCYnXGZmSUJDRk1K
-o8G4QUxJPx5EYixxZS9zbTh3czt3czl3cDV5Yi5zYzF4aDR4dT19fEmIikiLgEeLbk+RbUyUaEKM
-aDqIbTqKaTqNbECUdEeab0OObD2LbzmKg0aLoFCeTThLRyJHeDFodjJndTBseTVrdzNqejRxfS16
-XDxWSDM9dzhzSSlUNzMnd3MkqJcivZgbuZESu5UlxKE9wbAut6QytZE6t4EwuYE0uYMxwJcW0rYc
-qJoiPT06qZuH3duacm1bWDkVjVcLhUwGgEoIfEkLe0kMgU4QilUViFMMh1QNi14Sj2IOml0Ip1EI
-lUgRSjwYKicnNyk7NSQ6ZSdefjFzfTF1fjZ4czNucTJrcSlreS9wOCg2XiNLfDFiiEF0jUd2dC9e
-eTNigDlpiEByiUNzlFJ/i0t2kVB7iUl0j096ejplczBefTlobyxabytagT9sbCtYejlmgkFui0p2
-cC9bfDtndDBeZzVXNC0vdJSGVmdcKTk4TnRuNENALzQ1iqShbHZ0RUxJp8K6QExJOxpAZjF2cTh9
-ezx6eDpxdjt3ZC9yXC50YzN5czx8gkWAeEWHbkGIZTyHaEGPa0GOZTuIZTuLZDqMaEGMbESPbD+O
-cj+NbDmJdz2Kl1OToEyWRzJESCRHdi5kczBjdDFsdzNodDBldS5sgCx9WjFWJi0xOSwyZ1ckoJIg
-wK0mtZsWupkRwJgUvI0mso4mwakmtZE1sYg5uH41toI2s5QquaAkuqgkj4IiIyIpVUtLuKeJiI5w
-UDcYoGEQqWcRmlwQik8Mh00OhUsPhEoPhEwLiVAKilILhFcOjF4Oll4InlkLnFURd0kUUTwZOCop
-Pxs/UiVWcy1nezFxbS5oaSpkcSlqfDFzPC06ay1Xeipcei5hhD5tgjxrcixbbSZWeDBiiEJykk98
-jk54jk53k1N8i0t0h0ZwcS5cdzNjci9ebChXejdldzZjdDNgeTdkg0Fufz5rcTFdhEBuYjBSNjQ1
-aY+AR2BVPVpXgcG4S2ZiMDY2epyXXnJvRk5Mr8a+Q0tJOB5AcD2AeTp9dDVwdDtyaTNwYC1xXS1x
-Zzd4dkOAdUB8bj2JWzWGZz+Pf0qWckGPZzeKZTmNaECSc02UflSaeEiUaDiHZTWGhkWPl1OQnk2X
-RjJHSSFCcSlicSpZci5lcC5idyxddi5rWSddOR88TU81kYIoxaggvK0evaMZxqYRvqEZuY4mv5Qb
-v5sqtJIltIk7soxHuIksvZcZvZwqs5tKtaY4cGYmYV9TYFlMST46d31fUzggl1YHomIJnmAHpVwK
-nVYOjk8JkEwGkEwJi0sIkE4InE8JkFcKhmINh2EMkGELnlgImlgNgU4TXzkhOiQnOBw8WSZbbzFp
-czJkbilnfzV9QS09fUhrfzJfeSVadytdgDdnfTVkdi9ebCRWejNlkEl7lU+AiEhyk1N9h0dxi0t1
-ejdmci1fbilabCdZbitbgkFtbi1adzVieDhkhkxzdDdefkNsRCY7Li8tXoV1OlZHPFxZcrmvPFZU
-LzU0f56ZYnJwRU9NscnBQUlGJBQpZzpxeTR7cTFzajNvWyloXSxsazdzbjx5aTp5ajx8ZDKCaDuL
-f0yYhEiNbDuIZDOGZjeLaz+OcUSMdkaPc0KOXjWEZDeHj0aQlEuLn0yYSTZKRyU8cCpieStYfC5j
-dy9gXSZWQiFBQzkydHofspwX0ZIUtpsUsKQgu6YZvqAkuZEyxqYcxKoUwaUzvJRLto06uJkwwJ4Z
-xaUXtpoRu6Mhq6EvTUgzsq2Zw7+YTEZCQkA2TzQhmlUIq2cQq28QpGgHpmINql8SpVoImlMGl1ML
-llAKnFMImVgJkVsJkmAMk2IPk2cVlmgVo1wEmFYNhFceUTkiMR4uQBtIWiJWbiZgfDF1OCk5g1N3
-hkFueCZbey9keC9hfzhohEBuezlnaSdVgD5rklB+kVJ+iEl2jEx5h0h1hUVxby5bbi1abCtYaChT
-ez1lfj9pcjNcg0dvfEJrkkt/WjNQGCYaKzAqYYZ1P1ZJOlhWa7iuPV1aLzU0f56ZYHFuRU5Msce+
-PUpGEBsQMyczYy9oazFyXidoXClnZjVvazhwYC1oYzFuajh3dDyDeUOHgEmMdTyCXi98Xi9/ZzeG
-dUaOekaPbTqFXzB/XjKFZjaEjUSNiDyBnkmVSzhLRSBCbShrci1faixeRBxFRzYxeG8msJ0Zy6Mi
-wJYQuJQNwZwcwaEjtJYitoszwZUuv5ogu6QYu5ktvo05xJktv40uw5EdwpgbybAn2MMYhn4kU1Fb
-1M2y4t21n5iQKSUmRy4ckksKnFIHol8NqXIRrH8apXQSrGoLrWAHrF4KpFwMn1gImFcInFwPoFsO
-omESml8Ol2IMmmcNqWkRrGULplsSh0wVTjcgJyQrORo9ZShfPzE6hk91o16KhzhphjlqlEp5iUFt
-i0Rxn1eIjkZ4ejJkjER1nFeEjEd0kkx5lE97jUd3ejRmdzFjezVmcixcfDVmikN0eTNjdC5dgkBr
-bj5bIkMaHHUeKzwsZ4x7QVVMOFpUYLGmPF5bMjc3f52ZXm9sRE1LrsC7QVFNGUEWGDcUNh49Xi9m
-ZzJwdTt6azJwYS9vZjBuczl1gEN+hkeFgUiEekiLYzSDYTKAajmIeUWRfUiNd0GMZjSEZzeKbDWN
-ajWGhECLhT2In0+dVD1QTB4/aS1qSCVDNSQzWVgnr50hzagWvZgRvZgRvJgSuqY1ups2vJAxwJJN
-uZQxxJskxp4kwaInx5k9zJc0xIosyJQrx5oczrIeyLQw0bgsgG0pZ2Ni39i/5Ny81c+6Tk1DQSsV
-hEcOjkkJlkkLmlQKom0RrIIWt4cZsIAWrXcTqGgMo2UPpGcVnF0QmlsOo2ITpF8QpFwJomEJomcV
-oWsOo2UErFgEp1MRhkwVTD4dNys5MTM0Z0NefE5scUBgWihKZDVTb0NeYzZRajhWeEZkcD5bXSxJ
-aj5dZztaZzpZckZlZz1aWzNPUSpEUSlEUSZDVihGXS9NXDBOUCBCSylCFzgVD5kREq0UJD4ldZqK
-RFZPOVtUXq6jO1pXMDQ3gpiYXG5vPUZIqb68QVRMDFwNI40mGjIcPB9BWS1ZXC9aUCZVUSlXXC5f
-YzdlZT9naT5pZD1xWjlsUS1sWzRuYjpyXTNnXzJkXjJrWi9uWTRpVDBoUCltXC9saTZ0h0J5RzJH
-LiUzRyVDT0ckin0rwqsdxJ8awJYZw6YUzKoTx6Elvpg2wZFCwIxFy5xF0KsyzbAXz7YYzbohwaA0
-xpdByqYh0awbz6Mkx6Ejy58hxqIie1slbnNd1NC9sqmOsKGAXWBSOC0ce0cQmVURnVQSjFAInlMO
-mloOmmcQonQVq3kYrnYUp28QqWoSo2ANnV0OnV4PmlsJl1oGnFoKllwKnmgQpWsNnmkGoF4Eo1UH
-mVQPcE0ePjU+TDtIXDdUTjhOTipBUCg7Sys/QylAQiU7Qyk/RSpBRSY+QiI7PyE3SSs/SCo9Si9F
-SSpASSU5TCo8Rik6SCg7TCk9Sy9CRS9CJBwlEVQUErsXFqcXIjwjfaGZTV5ZPFpXXrmvQ2BbLTA0
-iZucXGttO0RHscXFRlBRDFwPG7gmIG0jFxAWMBswNBwwMx4xMB4rNSA1NB80MyIuPiEvOR82NSEu
-OyI0PyQ4PiU3Pic3PCc2QSw2PiY4Qis8QSo6QixHPCk+PSo/UC9CJjAxP0AriGc1tpIky6ESvJcW
-w58iyKspwK0mwJcxxZo6yJ81zZ070JpB0aku2b0k0Lsi1Lsp17whyqQywZg1x68xyaMwzpMmypog
-y54YyKkdb1pAQk1AUVJGRD4vX1JDTU1DLisnWj8clVwjj1wTolUOolQMpVoNqGYYoWcZpGkVqm4R
-rnUZrHUXqG8QpWsNomsMlV8IklwNlV0OkVcHmV0LoGERnmgPnGYKnGAIl18Gh1sLTzc4hDx1s1Wj
-oVCNnz1/nDZ1nT5/mkeHkkB+oFGTolGZpE2anEKNmj+Fnj9/mThykj58lTp8ky5xlT19jDd2lTl5
-kjd3kzt6n0+Of0l6IyogC3QLG44aJTgmjKuqWmhnPFpZYb6zPlxWMDA0kaKjXmpsPUNGucjNT1Vb
-DFEQIZ0pF0AXPh0+cTptdDtmcDlgcjlrcjp1dD5xeUJpgjxpgTt1gUBqhUBng0F1hEJ4h0R8hUB5
-gTxvijyAkUGIjUF6lUZ9lUVvlVF0o1Z4UTpBdFwbu5AcwpMSv5gUwKATxqYev50rvppCspdHrZY2
-xK02zJ042as317od07wXyaw0zK1D0q0y2aBAzJ08yaw8x6MyyqEvx6Uo06gf3L0lY2E3NDA3nZpn
-z9SY3dqrw7+TZ2ZXODAnbEgZjWMSoGILolsMplwMp2AOqmsSs3odtn8lt4MrsH0dr3kMtn0Msn4N
-p3QRmGIUmWURlVoIk1YHlFgLo1wSqV8RoV0OmlwIlFoNRjU5jDJ0r0aXrlORpz+GmjBxpUKErE+V
-nkCEnD+HpUiSo0KPm0KQm0KLokiMnUCBljx7n0uLlkWGijh7mDh7mTJ1mz1/kzJzoj6EqligekZ6
-GCYbFVQWKjgtmLK3ZXN0PVxcZL+7Ql1dMjM2kKKiZHFzPEBEtb3JVlthDjsKFjkVTSdNfkGAfzh6
-fDNufzZtgDd1fziBfzdxgjhehTpnjTyDjjuHkT2FiT5skUFtmkNxkjpqkTl6mkCMmz+Glj5unD12
-qUeBolN2pk99UjtIcV0WuZonv5ols5IcvZofw6AjwJsfzqQsya44xKM+zKFA1asq2Lcf0aQwzps8
-0agx0LQszqw417Mw17Ew1LAsy6AswqU3xq8v7MgV0b0nRj41qJ9/7eKU5uCd29Wh1tKP0M2SamxT
-OzEXiVUTkWkcnm8No2wRrWYRq2ESpmIUpGUYqWYdsWwUtm4JtmsKrWsIq3QNqHgOp3MPq3IXl14K
-jFcJilYLi1MLlVUSpFgRolYOQDMojzFtrkiYmz6IokCBpD9/oUSGoUeMnjt+pUWHnz+CmTh7nDyD
-nkCIn0KKp0mNojx7mkCBnU6Vn0aMnjl9mTN1nTd6nkCClDd6ljh7p1KWfUV1KCIlLjAwqsDJbXV8
-PF9fbMXHP1xgMDM2lKioaHR2PUBDrbS+UFVYBxQAPiU8gziGgTmAfTh2fjh1fjdyezlyfDx8hkJz
-hz9fhjdrjjt9jTt8iTxwhj1nkkNrmkNtlz9vnkCNpEmIn0N3pER5qUiBqUl+olF0qU+MVDxLeWAZ
-u502v6I2yqkyyKIa0KEnyaQqvaokxp4nxpUsz6Yk060f0aEqx6MxwKFSuqNNx68wzqw6xK8g0akm
-1Z8oz501yKg5z78u4NQTl4kjW0hg2NOf3tx43deN19CZzMyC3NiGtrh7QTsye0IRh1oakWcPm28S
-rHAOsnQSrHITpGkOpWYRr2kNunAHtm0Fq2QSpGQeqXMqrHgWrn4Uqn4Wk2UMj1kGi1IMhU4QiU8M
-j1MPPDAjgCVlsk6Zr0+bnDp+oz+DoESHokqLmTt8nkGDrVGWn0OJoD+Imz2InkGLn0CDp0OAmz2C
-nUSRo0iRnD2DmzN4njN1oEyGn1KMmTh7kzh9olSVcT9qMSwys8rQdXmDNltbbsTEP1xfMzU5k6an
-ZnJ0Oz5CmaKkSE9OKxYneDd4gTOCeTRzezVtfjdveTFrgD10fT5tfj9mg0BngDNvhzpxhzlrijtr
-iTtojjxlkzxpmD57n0KIm0J1oUd2pUSFqUmBqkZ6pUiIrUibVTdNeWEWwaEpt5giuZgnu6QpyZMp
-x4wut5A0zqA5yqEfzaMbzZ4jzaMruZ9AsKRKvKdCyqkvyaUsx6Apy5klz5gwyqQz0Z4317AtrqAl
-S0gwpKGH4+KW4tN42s+I3dWN09F33NaE1dCIWU1BXDMMilcMjlcXi14SmmsPoXQRqXsUsn8UrXcT
-rXAPqWkLnWUMsXssrn42mmwmoGURo3EKr4YVpX8UoGwPllwKilULhFYOfEwMNi8jhitrojiBr0qV
-q0qVpEWRmT6DoEaHnkWHlz+DpU6Vo02UpEuSnESPmECJmT2Anz99oUSHoUiRn0ePoESNmziAoD17
-nEd5m0x9mD15kjZ4pEyVik6EMisxo8DAZnF0O1xccsHARWBgLjE0jqKiZnN1NDc6jJKSP0dESh9G
-fS52dC9vdi5qdS5kdCxgejBoeC5hdjJWfTdkhDh2fjN1gjlsgjRkiDRuhjRkiTZejjZmlTqCljt4
-lzxsnj99pEaGoUpzo0J+okGaqEOiUDlPd2QdvpwiwpwjvZEkwIUuv4MnvYonv5gzyqMvzKcowJAs
-y58qyacgxqA2zq82xaEvxpw4wJwgxZoyu5UiyqUs2b4g5bQluY0rODcog4Jm692g186ey8Z7zMJ/
-28+A2tNv2c6H1MqHeHRWQS0Vg0wOiVMKiVcMiFoLh1kOkmMTo3YVnnQSoHEVpm4apWMVpWARqmAQ
-rV8RpFwOm1oLpG0WqYAYrY0congQllwEl1UGjU8OPzcuhyxsqUKJljV7qU2Uqk6go0aWmzyDrVCV
-qE2TokiPo0uUpFKZpVOcnEePnUOFmTt8lDl6oEeMoEmSnEuVl0OKlTh5lDJrlTJrkjFrkTJslz+C
-hUd9MSgugaOcXGtoPVtda7y5QV5cMTM2h5uaZ3R0LzM0eIaELjY1SRw/cyhqbypodytmcChZdCxZ
-dC1YcSpSdy1efTFpgDRufDBpgDFtgC9phDNniDpkgS9fjDNtkDhykTdnlTluljp8n0Z9nEVwnj59
-oT2WpkCeTzxNb18VupQYuocZvIMnuX0zs4YWxJgQy5QRxp0kwJcrwJgjyqIfzKcYy6Mdw5QrwJc0
-w5gmxpYf0Jsezp8by64h4Lkcr6AYVUcohIVh1MuP5dOP1sedw8KCz8R21MFs1cJs08aE2M+Ghnxa
-MjAlej0HhU8NhEwQg04Nh1UKhlIFilUKlGARmmQNmmEIkVkIlFcKmlUQnFMSl1AIlUoKlk8LmmIL
-oHkOpoAWnGwMmlQFmlALRTUqhyxyokWLo0uHnDh0pTiLrEecn0SLmDR7p0mPmjyDnj2GoEiSqFSf
-oEmWmT+Lkzd8ki9vnTl7nUGIlkOKkjqClzh/kTJwlDVtjyljjCpliitreDZnLiYsa4uETmNfOllZ
-ZLSuQF9eLTEyhZmYX2trKi4vY3JvKTEvRRk6cSdnbydiciZYcSpScClQbihNdS1VeCxidypjey9j
-fTBmgS9ugzBthTRmhTNjhjFnjDVrjjllkDZhlTlxkTh4mUF6mT50mjh0mDN9mzCITzZGemAUs4IN
-sHIZpmoetXsbxZMVwJMIvpIVwp4ru5gnwZ8hx50ewpYXyp0hvowUxI8T0ZYYyaIPzacU0JwMzJIW
-r40kTUY3mJOB09aa39Og18uK08WJzMKHy7xeyLFRz7ha08Fz2Mh4p5ZjNzYqZDIGd0IHe0IIekAF
-ekQBhFIIi1oMh1MJj1EImVYGnl0HnloMl00HkkYGkUQGkkEHkkIGkEcDj08GlGAImWcInVcRmEwM
-Py4kgSZwpEePnD+HoDV+liZtnTF5rUaTnzuInj6KoEOOo0WQmD2CmDuCljeBmTuGmT6FkTR1kzV2
-mkGHkz6BjzR1kzJ4ii1uiCpoiSNgiSZjhyRlcSpaNSwybYiCSFtXOllZYa6oOllaKy4vhZmYYm9v
-KS0udH57Nzw8Qxk9cSdhcSdZeCxXdy1UbiRLditUeS1bey5ffC5ifzBlhjVvhDFtiDJsizZsjjhr
-jDZokDlpkjlllDhtnUKBlDyDlzyEnj+Ilzd0nj55njGEVjVNdlATs3YYtXg5sIRLuIojwoUXvIQW
-u5cmtJQqwKI5wZ8ly50gwJUewpA1w48uzaQY2qcQxJEZuYggx4AczYsOfGAqZWdG3tGj3sm04dCu
-1cmZ0ciE18eFz7hcyK9UyLVU07xt2LppyrZhTUYxTS8Ye0QRez8Mf0AGekIHekkKiFoOk2QVkloO
-i0kFjEULmFERnFYOmlMHmUoKmEoMmEoKlkQEjj4DjUYEkE0ImE0SkkgPQjIsgidxqkiVoTyQoDaI
-nDh4lytsnSp2qD+OnTaEoUGNmECKn0mLoUCGnTd+mziAm0CGnEiKkT6BmD2HnkKJiS1tmTd3jSxw
-hyZqiiVnhiNjiyZocypZNSgvcYSAVF1bO1hYXaulO1tbMTQ2gZaVZHBxKCwsZnBrLzMzRRpAcSVc
-cyhWdilWcidPciZSeitceytcfS5egjNjhDNoiTZwjTlxkDtykjxxkz1rlD1rlj1tlTlumDl5mzyG
-mTyOmTqRnj2UmTyBoESApTyRVTZSdVYQuYIcrXsstplAuJAewIIYxo4XwZ8dwJ0owKAhy6wWzqEQ
-ypIkxIwh06cbzaUVx40cw4Mew4IjxYYhqn8hQzwolI1n3dSD6Mym4s2z2cyp1MyF4MmK2b90ybFf
-yrdh0bZ12rhq38hllYlmQTMoajgTfTwPfToEeT4GekQJiFILil0LjmULlGQJlF0GkVgEkVYFlFUG
-mlMFmFUHmlYKoFQJoFIJmUYKlkEQjkAJiEMKQjMxhyt2oj2PojuQozyJoEKOqUWNmCxznDB4oTJ7
-pT6GoUiNo1KWmTuDojyGpEGOnDyHmUOInkmOnj2IpD6PlTeAiidmljJxkC5xiylujitujSVodClY
-LCAnVmBdQ0hFO1dXYa6oOlpaLC8whZiZZ3R2HyQhNkI6ISYmTBxEdylecilWdStXcShNeC5ZeCla
-fixchDJihTdgiDhojjpskTtxlD90lUFxlT5vmUF1lj11mj56nj6BoD6Gnz6JnDyNnz6NnzqEnjqF
-nziQVDZTdGAMvJUSxJofuZoKw44QxZIXyKAT1KIq0qUczKoPy6IVyJUVxosrxIIy0pYtwIcawooZ
-xIkhzpInt440TUEpMjMyTUU3lIVP2MmO6Na45tOs5tqS28yQvLJzu69Y1MJm2MF218Bs38V54cuS
-hn1kOi0YVyoNgEEGgzwJgkQKh0cFi1IJjWYNmHIDnG4FnGwKnm0Nnm4Kn2YEm2UIoGwQo24Qo2EO
-o04NnkUNh0IHfUMJPC0ukjR/qUOYrEifoTuNoz+XpEOYrEyYrkaNni53ojeAnkOJokePokWOp0aS
-o0GPo0SQnUCLokaRn0KMoj+SnT+OlzV3mi51kS11lTR3kzBzjylseSlaKCMqPD8/LTIvPltYaLSs
-Pl5dMDM0hpmaaXZ3MTc0gpCKREhJTR1CfC5jdy1eeCteeS9ZeTBaeS9afzFhhDVlhzlgjDtplEF0
-kz53mkV/mUV7lUB1m0R8mEB8nUOFoUKKoEKCnEJ6oUOJmzyDo0CBmzmBoDqNWz9YfWQZwZUVyJce
-uo0PwZQcyqgWy64Z1KgqzaQVwJ0Oxpwey5Ibx4Q5w3o6zI0bzowf0I4lvYQxknM1WVEmaWtSwryc
-m4hrOTwjlYNo2Mal4M+gp5tsZF5NU088UEQ1iXxRzLt248173cWD5dOj18yVkJFkRDoyRisHdjoR
-jkwOjkoHjEcLjV4RmHEFnnUJoXcLo3kLo3oKo3gOo3oWp4EfsIglqHYam1oMlEkEk0YEiUcLQDYz
-lTqCtFKirk6jpD+RqECUpD+Sq0mXs02Xr0OOozuFoUGKpUCKp0WPp0qVqE2aokaRo0WQrU+amj6I
-njuKp0mVnj2BpT2FljR8kS1vlzd3kzRzfTRiLywze4CAUVdUOlpWarauPFxaMTQ1hpmaZ3N2NTo4
-nqqmVFlZTB4+eipheS5fey9gei5fey9ffTNjgTVvhTZwjT1qjDlrkUF1l0WAl0SDkj59mEF/nESE
-nUWJpUqTo0eOoUSJo0WKpkiFoUZ6pUSCoT2Kq0OcXUJWg2kdwYwZzZcTz54Rza8c0robz7AiyaAT
-zqQiyJ0zx50s05gc0oQm0Y4T16Ab1aYhpXEzUD06cHNbrqZt7N6g8Oax+OacnZ16WlJKaWBVZWRd
-cGlcm5JUvLBZnZhWSz45h4NN59GF4cmP28yZ5tOM7NaLy7+id3pgQiseWzUHml4Ool0Ojk8IklgH
-nmwJoHEHoXQHqn0Pq4AUpH0YqIIhpHwZoXURpHYUoGkNn1QHmE0LSz02jjB0sUuXtVSnslGhpzyJ
-q0KRrUiYqEOOq0eSq0eUqkWRpkGLpUWOpEaRq1Geo0eSpEeSr1Kdq06Znj2In0KLnz+InTmEoESN
-mTh/ljd8lDR4hDhqKyowi5KSZm9sNlhTarauQGBdMzc4gpaXZnJ0Njk3o62rWV1bSBw0ditadS1Z
-dShceiphfi5lfi5sgTR1hDZviDhpizdqjz1xlT+BlT6GmUSDnkeEnEODpkyRokiPpUqPrU+XpUON
-pkR/okN6rUeTqj+Zq0KhWzxfgFkuy40r06gb27kc1roXy6ojxpc2yJEu2a8a2KcoypQg0pgb0oUk
-06MO8ssTrZAURzw8qa6S59+T9uua7+Ks6Ny64dmV4tucy8Sir6ppu7206NzC7thU4tJJ29aDopKS
-Rj44rp9r5dmS6dqZ7NSS5daY8uTG8Oa0gHVjLR0Xaz0KmloGpF4HlVEHlVYHpmoJpG0JpGcHr3QO
-r3wSrn8SrH8RqHMOnGkKm2oPo20cl1sXU0M8jSxqrD+Kt1OatVWksUaOrDiGpkeZpUaVsEubskuZ
-rkmSqUiWqkeUqEeRp0qSpkqToEKOoUGPpUSQq0qRoUSMqUeUmTaBo0aPn0SPn0KLmTeAfTFoLy00
-jJWSaG5qN1pWZbGqQ2JgLTEzfZCRY21wOTo5pK2pVllWQxcxcyddbSZXcyZgdyhieClefixtfjBu
-gDNlhDVgiThjjzlyjzh0lDt8m0GEoUmAmkF5nUJ/oESEo0aMpUaLo0KCpUF+pkGIqz+XqzuYpD2Z
-XEBYiW8Y26wh0bMh1rU0zZ4oypczxZQs0aMo1Kcf05cfz5ASy40ixpMd3rwYvKgdST4praNx7+e/
-7tus6tqQ4Nmv5tu82NCV5NOO6dqh7t2T59zJ7OGs69g9yr5c4tar6OSzhYRuVU08op9k28uN5dOf
-ysSOsKaZiIJ1XF9LOz9AOy8nUDIOeUgJj1gLlFgNnloIo2sUoWoKnlYKoVwKp2cNqGkQp2gSqWsV
-nmQPl18OjVYPTEA8mDhzrDaEq0B9tlmktlGZsTaEpkWUo0aWrEaZsEiWqkqQrU6ar0uXr0uWpkeP
-okWNoECMoj+Ooz6KokKIo0SOqEWUnTqElzZ9pkiUnECKpESOgjtxMS01jZaSbW1pM1RTabWtQmJf
-KzAxd4qLWmRnOTs5rLavWlxaQRA3cyFmbiVebiRdbSJYbyVUdyhidylifzFfgjNaiTZeizZpiDRg
-kz1xmT6Clj1vlz5xlDhznT+AokGIoD2GmDV9oTyDpkGMoDSGqDyKpkCQWT5PhnIS2K4ZzqkYyJYe
-xZUkwosjzpgh0Z8dx5wewY8QxYkUwIkcxZAWrYoUOjkjmopw5NiA29Gv6dbI3M1+382n59e+3c+U
-4tGI3NGS3tF84syT4dmj1cRMw69r3tSo3Neh6+fRbnNsMi0vYGBJa29PUktAYF5UmImDycF/0cuZ
-paRxjZNsWEtNTzgUfEwJl04JlFQMnm4Qnl0MkUoBlEoEnVEJoUoFoVMHnWAJn2YNnmMWSz45jzFu
-u0KYozFzrkmRt1akr0COqDmBoz6JpkGQp0KPqkiOq0uRr1CYnz+Kp0WVoUGJnj6HpkSQmDiBpkqP
-qE2Wn0COnz+InT6DnT6Hp0qToUKOj0qDMCw0k52YbG5oMFJQbLiwQmFfLDAycoWGVmBjOTo4prCp
-WFpbQhA7cB5faCJWaB9YaiFVaiJPdipgdSddfC5Yfy9SgjBThzZYjTdmkzpzkjhykjdrljpxmTt7
-mjiBnTiDnTiDky56nDeEmTV+mC51mS10lzB/WTtRhnIXyqQPxpsQv30du4wmwY8cxpETvokXwY4b
-xJEQwYUdvostpHcmUT0sbm1Y4s+14Md808qs2dHBzcJq38if4M6x3MyP4cyF38+X285s5Md53dWj
-1L9W0sF15Nqq7+m6uLKiUlRHW1FEMystS0o2sqeD3dm17t265tt/8uCd7+J+6OeSq7J1Oy4mYDIM
-mEsJmUsHi0wEkloKk1QMkEcJk0IFnUMFmUsGj1IFlVQGm1gQTUE7jDl2uk6mqz6ApTJ4q0mbrUqW
-pC9ypDF6pjyIpDuIozmCqUaPp0qTmT2InDmGo0CHoD6Gq0uVokWLnUSHo0qSqUuZmDqElDV7lDN5
-pEaOqU2aiER/Mi42jZaSZ2hjNFZVbLixRmVjKzEybX+AVV9hNDo3lJuWUk9WQRQ5bB1OYRlNaSBd
-cyNdbh5WdydhdiZdeylXgC1UgS5SgzJbjjVwkjV3kDJtkjR1lzl6ljV/kzN4lDN1ljJ5lTB6kSpz
-jyxtlSpzmyl+oC6OVjVXf28XzqUQypYZsXIcu4gmuocju4wOxY4QxIkJv4gQvogZoH4oSzsjjYBl
-2c2w18+/3cR6082u0Mu218du3Mmd3Myo28eS28mK2MSj2Mt53syH3d+9489h9OKm8OPVko54Tkk3
-ubJ14dOSqZmIU0s1q5t32dWs4dWn28996tyl7NV88d6m392VgXZiNyEUfD4Fm0gHh0MJe0ELgkwM
-iU4Phj4LijoEjEkJhkkIjUIBlUULST44kD+FuVOsvE6gpi97oDR+sEqUpDZ9pixtoDB4pDiIojKI
-nDaBl0KLnUGNoTuJnjiDoj+Ko0aSokaQnECFljV7ojuGn0OOlD2ElTR5ljp+o0yThEl8MywyfYaC
-YGBeMVVUbLqyRmFfLDM0Z3h6UVtdMjk2iJWMSk1PPREuaRxGZxxXaR9ZayJIcSRSbyBYbiFQeypX
-fShRgCtSgClhiC1tjTFvjDNokDNvjDBoji5vjjBslzdxmzd4lzF1lS5tlTJslyxzmip8pS+VVzVX
-fG4SxqgNxI8VuXUUtYITvIkbv4sSvHsVtXgQvYEgr4QtTD0piH5r38mQ3c6w2s7G2cR22NGp0smu
-0sFp3Mih5Min5Meh49Cv2s3F0sqK2NKP3eHF0b17oJWTZVlpZ11KyL1+7eWW8Nqs9uKue3pMVElC
-yb+d6Nah4tF57tyh59V65t6649yixsCCREk6SyYIhz0JkkALgzwFeDcFczkHeEIKgToHfTgEiEkM
-mksKj0UMRDYxiCBprT2StlGhpTuGoipyojZ9pkKIoChrmylvoTJ+ny+AmzF6m0CImjiCnjaElzN+
-oUWPn0mVoEuUmTyDnzd+mTB4kjJ6nECIlzV9jzN6ljyFgEN3Mysxd4OAVllYMlVUb7ewRl1cKS8w
-X3FyTFZYMjk2gJWLPUdGPxIsaRpKZx1TZR5IZiA7aiNGbSNUcyVVdyRYfCdUgS1TgShagihghy5r
-hy1tkC5tiStfjSxqkC5xkC5qlC5tkChrkCdlky5skidvlSlwmiiBVDhKgG8S0agUx4siwocluogS
-u30QtnQIt3MPvX8Zx58ad2kjVk5Z186i3siL2s2x2M/B3spw2MyV3M6s1Mdx18ik48+i1sKXq5yL
-hYB6f3JUeW9QcnFtaGNLdmpMn5hf4tmH7uF37uKf7dy77d2TzsSJUk1LioBu69ee38907Nmk6dR+
-4tu739ih4tx/mZplOycdVS0PdzMKgTYHezIGcjAGbTgKcDsIbjsGbjsEeT0EgEANRDUxiB9joSl0
-njN7p0GMoitymSZqoDd8pTN7mCNpmiVonClrmypylzB4lShynDN/kzF7mj2Io0yYoUyUkDN6mzd9
-mzd8lTR4kzR3lDR5jC9zlDZ8dzZpNCwxcoWATVhVMlZUZ66nRV1dJi0sWGlqS1VYNj47epOJQEpM
-QhMvZxlPaB1VZRtCaRtQax5dbiRdciFdeiJhfidYgi5QfSlPhS1kjC52iCx6iSptiipmkSpykSl3
-jSlsjilpkSdqkydojihtkiZ0pDV5lip7WT1OfWsXqn0WoHMSrIgiuIgatm4SuW0Lx44HyqIQlXkl
-RjQwop1x4tOi0MCM18242tO64Mll182P18mfzrlo19CutrWVXlk6VEY8hnpfmo90rJxxtpll2cNl
-6dJT7tlq49B649pk7OCc5uG449aI7delqKCNSkNCw7SA4dR+692u6taA8OCw59+u4tqD29WOTElP
-MS8qOykYVyMPZyoCeDYJfjcQczgKdjcGeTcJdDUFezkJSD45gy1vpi50nidrnC11oTV3oi1vmCFo
-nC15nyhxmSJjlCVfmSRolyhvlyVwmS96ljF6mTaBmTuIoEOPjjB4jC5ykjd3iy5tkjVyiCtohipo
-kjh3ci5cOC81boN+S1dUMFNSZ7KpQV1bKS8sUWFiS1ZaMzw7dY6DP0ZFRhc5ZxxVZxxPZR1BZhtP
-bR9eax9bcyRjfCZkfSVVgitReilciCpzhydyiDFrhTNfiCxijCdnjCZmiitokC5plSxnlSlqkCtl
-miZ4oSiBgS9yUz85RTokOUEpSjEddV4cvooTtG8Xw4ISq4wUZlwYLy03VU4y08Nx4c2e0MOO08q3
-0syw48Vh1M6U2cqf5Mdtxr2bVElCgndXz7qL4sJh3btp3cJg7cNm6chR8dFI8tpW79xx799u8uGd
-8+S679uD6NSp2cupYl1WeXJa2tOK6t6z7NyH69yd4duy4NOK6dyXjIpuPz4ugXVXTkk8PicLSCUM
-bCgDhzYOkTsJgzkKejUIdzsMQD05eS5spzWGli58nSVslitvnCxxmyNqlCJqoyt2lyRrjiRimCVj
-lSJpkSRtkyx0lzR7mTeBkTJ/lTqKmTyHhylskjV3kjV1hCpmhyliiSlpgixsbChVMysxboN/SFJQ
-M1JSarKoP11aKi8sUmJjU1xhMDk5fJGNRE1DRBVDbR5kZiNBaCBXZx5PaR1KcBtgdiRfdyRYeiNV
-fyZbfypkhChmhShhhTBehCpbhyZdiyNhjCRniyVrlStxlihvlCRznCd8niiKZihMNi00HiReGRyU
-Oi2LJCYyXFEVvJAZrnUnYVwdUUo7lYdgZGFVYWIt4Mxj2sua1siY18y52s2s4sdm18yV3s6o2tFj
-cmpTZ1w827t55MCAzqpO4LQ84btp5bpw6Mtd789G9+BN9eJq5tlo8OCo7+G+7dmA49Sn6NK8sq6I
-Uk1PoqB159q97N2M69qX5t644Nqa3tOg0sySQEk7iXJDx7WOl4pvRUFDPCchTCMTdzAGjDoHhzgE
-ijkLQz4qOSc+gS5uoS2Cny57ny58mSdzmCdrlSJhmSNonShtmSVnliNglCNmlSVrkSdpky9ykjJ3
-kDN7hix4lzyHkzaAii52lTqAkDZ4gyReiSRijSlrdTRjNS40bYJ9TVdUNFRTZq+mQl9cJSwpW2pr
-V2FlLDY1e5OPPUxJMBQsYh9RcCNaaR1RZR1Kah5VcSBgdiRYdydQeiRZeh1jeyNjgidchSlajjRn
-jSxujSlqjSZsjid4jCZ0iyFrkiZ0lyiCiyaLUidEHBpFCRWDCAy+FBCQNTRJGC8uVUUWiW0dTUk0
-X2pXz7B789l7eW1DinhJ3tB22c6b282k1Ma128qi4chv2s+X49anw7t1Rj8nnJNS0LRtz6+Bv6Fb
-0qs82Lp+38CH79iR6tFh8N5R9ONl7OBn7eCk6uW65dh539So2su82dGIeW5NV1JKzseo7OKC59mJ
-6d+85dys59u44dWagnpOUkQwzbJ92riMqZ+WRUVGNDw5SC4bWSQNdTUEjEUSQTcpLi00Ry9GYCRT
-iTF0pjuKoTCBlShwmCdsliZvliRqnSdnlyVhnixsmCdokyVgjiVjkSxtmDR5kC93jzN8kTqDkj2D
-hjJ1lT2Dii51hiFcjyZfZi1XLigub4R/TVhVNVRTb6+nSmBeKyoqXnBxVWBiLTUyfJWRO0lJHhMa
-PxcyYBlOaBxCayFSax5mbyBaciBOdCJQeyRfeh9kfiNigSZYgyZZiSlpiC1piCdnjCZwjyt8jjN0
-kzp3lShyjSZxUCw7FRROCQejCQi4DQ+ALjRBhZycfJKlJzY4KyoljYRk7MNt5sl6w7ONWlQ/uahq
-182A2s2b2Mqb3c6+4M+l3slz4dKV3NGhcGFRZFtBxraCzrFtyq53yK9ZxbJsxbaV59eh8OGw49Jw
-6NVY8+Bp7d515dyZ8OCx7d135tWn3c2y5sxvwbFgMy4zh4Bp6N5y8uKN6N+65Nu22dKn39OIv6xd
-OTYvnpJszLN52cioh3ZhUEw6e3NeYV1LSTMvaToTNDMtCwxnITJxNyxAWCdEkjN5pT+PnTOAnix8
-oDaFlSp0liNlliVglCRhlCRhkyVgkSNfkSNjkylulCx0iitzjDZ7jTZ6hzByhCxyijZ4jChnhCha
-PR8vKSUndISDSlhTNlRTdq+rRllZKSYoYHd4V2JkMTk2hJaVO0dIEDQPHS0YPA0sZh9GcyJnbhxl
-dSBUcyBUeiNlgCZufyVthSNnhyhcjS1gjylpii9iiCZhjydukSx1lTF0lDR8nS9+ay9KFx8/DASe
-CAaqKhJ7HjRHYaClhsXVhM7YVaWsMzo2q4xZ2cZ9qJtoXFpEfXlK5NR54c14282a182b2s7A1cyi
-6dGG5dKNrKWDMCIlqKKCy7yWyKpc2bl1xKhSyrFjyLeW2tqv7eq85Nh+6d5S9+Vt8eCB5+CY7t2k
-6uFy6til5tKl48Zp6dFhhHNwQjs308Zr9+aZ6uKs5trC3de13NR518hqWVNBWUxDsp9s08Gbyq5/
-SkIyYl1RzLmcpJl5Vks+JSopEBFPBRCdHi2mMzhQYiFGnDuEsEaZpDiKnTmKoDuJlytxliZglydh
-lCRelCRekiFekyJjkSRolChvkSpyiipwiSxykTh+kzp/kTRxjS1vPyAvGUMcKjApeImLR1lSN1RT
-dbSuPVhYJicpY3Z4VFteMDo2hZaVPEJLBVcBFHMPIB4eSRVCYBhkYBtaayJOcCFUdCNfdiNkdiNj
-eSJbeiVSfSdReiFRfCFcgCNmhSdugSNogiZleyNgbilbMSonBA9xDQG0DxiCJjApO4aHacfUeMLM
-b8fRWNXgSn16V0cwamRIPC4uV0c1wbNn59l31ct32c+c0siY3dC91s+i5tF75NqAZFxLV0VH1cem
-1LiM1rJM3bpxyq1l2rdM38J74+Ks4dmQ08WZtKpfz8Vp6d9+6+SZ8OaX7+V47t+f7tei3sle8tJu
-18eMQj01mZBX8OWT7t+439K3zsaq3dd/1MlsUFA/KyMmlXhUzbmOxbuFSkxBLDEsYlNIcmM/ODUw
-KygsGBoiDQmAByW/HT+bOy88dSlgqU6Ws0qdpz6SnjWElChwnihwmCJqkhxikR1fkCJfjiJdkidk
-jSNhjSZmiilphSlphC1sjTl7hDByTiFBFV4TGYsgIC4gc4iJSVlVNk9NZaGbOFpYIB4gPkxNMzI2
-Nzw6f5GRQT5HBl8KBrUKFWkQGhMZMhkxMx4tNxwvNx4wOh43Ox46Nxs1QCU2QSQ0RSY4RSI5RiQ5
-RCU8QiY9RSU5SylAVS4/Py0xEiQ0BgKdCw6LKiouKDE8QJSYccXPdcLTbsjWWsjNP2V0MDAvNi8t
-PmdyOUQ1hn013c6J1M6G286Z08eU1sWq39Of59V1qp9fSD4/wbWG5MiU1bVq2bJI1bd9yr2F0r5p
-7cyCmJZyYWAxdGxWcXBdWVRGdHBKp6Noq6Nnl41Vr6R04s+Z789X69R77uWek4ZZUU4408yH5929
-29G32dOp4NaTjYFLNkhJS21uRjQmo4xjpJJrKS9OMi5HJjFAKzE7Njo2IyMsJzI5JBpGABudDzrC
-J0Z+Py46VjFNUjBNVjBPUSpFSiQ5TCNASyM9Tic8SyU3TiI7TyE8UyU+USE6Sh46RyA/SCE+RR48
-RiM+MiMqFEwUELIXEJkUJTYic4aHSlJRJjIxSltcMTI1ISgqS399OVpbMzg2dYmFNzhHCGYIC7II
-DUwPLRclTiRDWzFRZTFaaTJaZi1XZSpWZytXai1YYiVQdDNibSpaaitcYydXXSBRcC1ghT5zfkRo
-QSw5CxFfBwe2Ix9gN0RBPUtbLlpgYLC6b9Tec7S4MlBTJSY3NzI4JHB3SsLLWYSHNjUin5Zm2NGQ
-6NCW29SZ6ta46tyn3sZ2WVA1iod58tqY5L5l5rQ+5bZT1bV82cBy1Lxad2pISkU+pZ5l5+Gz5ua/
-y8KDk4RqdHBpb25mYWJYPTUzkIVj781t79Z149CZ0sR2SEIxkodd39Ks4dar7OGMyreAKjMlWY+e
-XMjRPmN2S0MxYE8+DxZwJihiPGV5PVdeVmVzTk9UFEFNMTtCCA1ZCTOzF0e9NT5VRi03YzNUZDNa
-bTdhajFZcDtkYy1ZZzFdbTZkbj1jZDhdWTFTVDJMXjFRXitTWi5TXzBUbTVcQio2CUwKC6ERFZMV
-JTQian+ARk5NSVFOkqypUFlYJzAyTIOAPGBgLzMyboB6MT8/DFMND1INLxwrZCdVZiJXaSpbaylc
-XB9NWhtLaCZZcy9jayRddStodChndylpfzFrZRpTcCReciBajDN4eTNvNCspBQiFAwy4KiVOMlt3
-QnOsOk9ZQHmFZLi7Q1ZeHRJHHyBANWNwL7jDP8DKc7K1OkJLQDgus6GB5d+i4tGMyMGonJZ/Z187
-Qz40qJ9d2buK2b5l4LM93rNG3L9x5Ml9dm9Kblg+18Fn99+D8ei/9OrZ+O998eV05N3Iz9C85uXS
-oZmURzowwq1m5dBs1cJ87uCKjoNeSUE1vrV+79ub5NBwVlI2LWtzdrrOPLTEQ7KxRmRmLykzERaV
-IyJuM1d5J0tYV3+KeJKQFTJLHmd3ICA0CSKODD/MIjV5QSAyeCxmijV5iy95jjF7mTmElTWBjSx5
-kTCAkjSAjTR8didnZydZcyxifilsfCpsgy1xgyxwfjdwPSk2DFANFXMZKDInX3N1Qk1KSFJQk7Gt
-TltZLTQ3VoyKPmBhKy8vbH94OUk/DRoMNhwwZTBZXyRPVBxEUiBDYCNQTA8/UhRFZyVadTFnejNn
-cShdcydffjBqdSNfeytnciJfhzBsgy1uVRdSJiQtBgemChG0LDBOM2iOVI/Yb4qkNk9KKkVHEhhL
-FxFuNDI+P46OMMzVS7/BdcPGRGhsMiwrZFNDgYNsYVNTPElYRkA2ME5MPkFRX1EcnY1Sz79z17hZ
-1rZP3tCCoo9tT0c+2cWA7dpZ5td/5uK98PHI5th329Fv3de34tu/59y67eXEZFxVenJM286B4c90
-3dCAbGVMJiYqaGE+tLBxbmQ5KFVXOMLYZ6y4R7C8LbbCR5CXFiNDChGxLS1yGUdvJ1BuRGtsZbW5
-KThLM3qYMkZGDxleCzfEHDifPSc7aSdVjjt5ji93iCt0hSdsljh+ljh/jzB6izN4jjd6iTd0aShY
-aSxbdytjgS1qhS5wiDR3iDF6ijl7PCo1ES4VJyspXG5wRVFLRFFQiKaiTFlWKjI1WI+NPF9gKCsr
-cIR9Nz86KA8hYS9WWiZLVx5IVBxEUxtDXBtNVBZIaShbbChedS9ndi1lbSJbfC9reChncyFgfi5s
-gzZxgTFqax1VVCNJIBtEBweoDRGyKTRVM2WCYJLNaZzQN1deIh0rDwtfHSJWODc3N4eKNs7fU8fR
-f9XiSnt9PDQ0PDcsICo7IiibKDWxQElHQau3W5ydLC0mTUUpwadh38Rt4tBxxb6BQz42hXlU99yJ
-8c9j9d5m+Om09unG3dNs28996uGn9+q+6tu17N7Cn5iUTUkzzrqB8+N3uKtnMTY2TFlaOTg0TTw4
-OTovGZWjQcXaXbO9Q7u+MsDbNYGAGBFBEBK5ISdUIld8LFmBOVhRW6q4OENHVY6tZXeGFRlAFDO0
-Ij2wLic+XipLijZzjjB3hi5zhC5sgSxqjTd3jDV3ijd5izN3lT2AfS5rbShgcCdffyxofilrgDFy
-fC5ufyttdzpqNiAyHyAhYnN0RFBLQ09PiKWhTVpXLDY4X5eURmlpMzU1gZSPQ0ZIPR00XSZPVRxH
-VB9GShI9Vx1JVBhGXB9OaSlacjBibipeZx1UdSlifjJtei5rcyZidSlkcSdeZx5SezBlUzA/FRJU
-BAStDRbGLzpWKld9VpHGc6LPMEZWGRZXIxR7KThJOkdMLnBzU9HeXtTjYdnmU4aIPjs9Nzg2NCtC
-DhxuKShaTHR9UtLggdPaYGhtJS8qVkwww6lf4NJ0jYJZTDoy2b+H8thq8NRW8NRr8uSo59i2nZJN
-amBCaF5GgHZorKKMz8Ce2MqwU08+mopQ++p3hHU9Ml9masHKL0NLMCdaP0ZgKGRpNqapWa61Xaay
-TL3LOnBuEg1YDRG6KCtYO1dqM3iuSExNPVZZP0ZNbKrPdpqqHyI6DCedGzu/KTFXOB4rgzFykziA
-iTl8fC5qeyxogzJxhzR0izN5hy92hjF0iTZ4dipnbChdcCxeeTNqayZfeS9ngi1vgzFwZzJZJyko
-dYWCUFhXSVFQjKWhSFNRLjk7ZZyZQ2ZmNTg4ipyVR0hMNxYwWSZOWSNLRxI4WCBKXSNPURdDWiJL
-ZStWeDxpaStbYhdRcydigDVvcyhgXh1OWRVIbCFZeiVkdCtjPioyCRBcBAm/DBPSJzVjJ0ZxVZjK
-dZaxIiE/DguWKSZvJT1MQmR3KU1Sb8XOWtbfVtrrTXt5P0ZNLjJDLDVNNTE7JzkuUKSpYs/ZZtfg
-j6y0UE5XLTA2Z1s6vaJ4YVlGp5RZ0raIknxBcmMseWdIfm5gWE5ON0M7SXx/KTM6ISA0NzhEVVFI
-oIRrbmVYZV0y18lxX089QoiRY/LwX3F3GB5BFiqQOjtQSmZjfp2nWa61Ra+7RmdpFhBoBg69IR5w
-NkY8MHa4PF1yJSccPGd5drflZpa1Hh41ByqUETbFKjNrMB8mcixmjTl9izh5eDRsbydheitohzNy
-ijZ3hDN1eSpqfzFvfTRtbS1ebDRegEVyhkp2aCxWejFlhTJvbzReJignfo6LUFhXT1dWiqOfS1ZU
-Ljg6aaGeQ2VmNDY2k6OaSkhMPRk5XCtTRhQ5Uh1EXiZQUhhEUhdEVBhHcDFhbStdZyNYbiJedSlk
-dSpjayJYYh5SbCZbaBxUeihlgjlyPS0xBxJlCxLFDBXPJzOJKj5SVI66U2d3FhtaERSuLShVI0FK
-VImuQUNMap+kTdrdad/pTnh5OFp4OkZaEhRYSzZ0JkU6NbS/WOHkWdHfodLXVXNyLSRJNTRiU05O
-SkU5cXFUR1NeJjqFGzaeKk2gOTpcJy43dbu7afbxYIWDHBdYHx6MKS+DMTpbUEtHT0E3WFs2JTw8
-ZLvEa+zofLO1NDAuGBlhJiiLOD5JVIuUM73FN73GRFtcFhBrCw68GReOJSozGFKCN32sOz8/On2i
-ZrDcM3aWHCFADTCpDTDDLjRjQCQyfDVvgDRvjD9zezdtdC5mcipkezFthTh1fzNweTBrcCpifjNt
-eTJpazVhajFcdTZkbCxcbipdfjFsazBcJygogpKPU1pZSlNRfZeTSlVTMDo8bKWkTHB0NTc3laSc
-TFJQNRQuQA41VCFJZitaTRdCThdATBI9XSBQczFkdjBlfDNrdixjdCpibyZgeS9sgzh2bidfUgo/
-iDlvgzpsQCwwDBNlFRrGEB3NIDC0LjtBP2qMMTlLEyKODxe5NDBXITxBV6vRTVxzSmhlT9rhd9ne
-RldhLHOqNE9iDwVZGDu2NDZGNnl/bdnTWdLlkN/pUKiVLytGDgyJOkh/Ukg8MjZqFzPFCT7iASvq
-HUnZKztQP5+YoP/9Qentgc7PU0pMCRZaDAqpHD3INkqOQD1FMCYxJGxrXtvfatngaNDTRFRWISMk
-DQmDMDJpNVpQM7jDP6+1Njk9DRBoCw21Dw6mJC5aGzdRW5LAQEZKMnqnWbHdLGBsEyJYDjnDEDC4
-Ly9OUShGkDl7gTBrdTRjhjpzgzpyfzhxfzNwdzFpeTJrgjZzeTFqby1jdjJodTBkazFbbTdfcjBj
-cSxldi1oZC1WLSoug5OPV2BdQ0tKcYuFSlVSMTo7bKWmSG1yMTMzi5uVQUtHKAkhWiROaTVdWB1L
-SxdCTBU/WBxIaCxbZydZayVZbCRbZCBUcixihjp2iTp6gjhxWBNIZh5SlUJ/k0OBXDxJDhBPCxG3
-DxnODSXSOkBqL0BCJS89FSysECHHMjpiJj9KWK3ZRIyuM0VKRMPJer28OUJOPpPMOF1wEQpUDjbD
-ITBwIV9gX+DkaOjxauvzSMfDPEY8DxFwGR66TUppHhxHDCzBBkLZCi7RGzWMMEdIKsfBkv79Qevu
-g+zybI6BHiM0DASLDjzNDyDAJTGGSkFJG1lOX8rQi9zkZNzfTG1oNC0nDQxGFRGMM0NIOYSANWpt
-LiwuDg9lCQaoCQitGh+KJzdBbI6iOk9RL3mpSqfDLjc6EC2DCz3FFTOnNC9CYC9RjTJ2izh3ci5n
-gzRvfzVsfzRthTZ1dC9nejRsgTRxgDRxbjBiazFedjFlaixaYilUayxcbClgdy9pYixVKicsfIyI
-TFdSP0pIb4mDQ09LLTY4baamSG1yLi8wg5SQPkpJOxs3cjhmXitQUx9FUBxHWx9PaipbXyJSYCBS
-citgejJoZCJVdzJnfzNvjDp6bidZXBlJhDxylUGCm0SKc0BcHxc7BAyaDxXZAxLoLzCYPTgjJS49
-EiyrDSLMLTZcLT9CZK/XObbiPVZnQoWIYn99Nk9cP6LfPWB0FBFXGTDGHB2VJk5PS9LgbuboWurt
-U6CwQ0M2IStKBBC5LC62MzY+CzCBD0PfDh7PJidcN0Y7KLrCpfn3UevsavL4YsbEPkQ6Gg5bEEy/
-FyaxCTTHLFCXO0ZJaampgtPbWdDWPGRjQEVHHikvBgSBKyyBO0I5NDs/Pk5cGxVZCQSYBQizCwup
-KTdYW2hsLUNPMH+mSIGNHxoxED+zCjnDGzWCQic7dS1dhi9zfzRwhzZ1ijx4kEN7hTdwgzV0fjZx
-fzpwfzlxhTl2fjVtbTFeajBcZylZaChaZipZYyVVbitfXClRJiYqdYiDRlNOOkhGcoyJQkxLMTo7
-campTHB0MDEyfpGOOkdIRSRBai1dVCFFSxo9XypWaSpeaCVbXSFRcDBhdzFmdCxjezNoejFnhDp1
-eC5sXBRLdjBliUB2gC5qeCFdcjBYOilEAwyBCxvgDhndHCeMNT0gJCYvCxijDxLgPDNzMDo4aKzK
-R7zrX5SqSE1RKzw+NWh6PbD1PVltDhJbDCvHIBmlKEhHV8fIfOLwWN/iOlZfRmFrMTxUEiK2EhjN
-Qjx8GzhSDEDDCBnBLipQMj4vLai7pd/kS+3vUfb6dOHiQWFZLisuJ0uZHS61CELKDDW5NTprVnJw
-bNTZQd3hRFRVTWN9L0lSEglWDR2uPj9WL0NFL1x/ISJGBQOODAy+EQynICWDOEFEJjpIK3+WRERS
-DCpjC0rEDjHEIzViXipLkTV4gSxyezZrjDhylEeDkkJ7jz14ijx9gzl1ezhsfDpvfTNwhzJzeTJo
-YzFZYS1VYSZUZStZYyhTZiZYWCdQJCUpbYJ+SFZROEZFeZORRlFRLjo8dKmoRGxsKisrbomGPkdI
-QR48WyNTTxdCXyRSay9fYydXZypacjRkeDdoeDNncixiejNqdy9nfTduYxxUaBtVhjlzey5oaRtV
-biFZdidjVDlFCxxhChnXFRPRHitWMD1XLS9JCAqcEhngJymUIywvWZO0WL7zV7jbVlpYJy47QI28
-SrPuN1NpBAxdBSnDFBOxOT5HTru6dO79UqemJTBBRYmwPEBbGC+rBhjZJSu3O0NICSGKDhazNjdQ
-LjYvJoGFeebqOPX5Mff2c+fsMWRiPTgyIDZiBxihFUPUDULIHiiXR1FXSbq2S9PSMUVDZYOsT2aD
-GxQ3CAmxKTSJKEA4JViGNz1KCAtzChO9Cw2nFA+oLjI4JzUwI1FxJCZCBkC5CEPFGDW1NTRHfi1l
-njqIjzN4gzRuezhsijx6lzx/izh6jj6ClEKCfjVteThteTVvfC9uejBpaCtcYSpWXSVRYiVVYyZV
-YyNVUSBFIR8mY3d4RFFSO0dGgpuZRlBRKzc5d6ypRm9uHR4fVHNwNkNDNRUySxhIYStXdjhpYydX
-ZSlZaC1cay1ccC9haSVZaCFYdzBodzBobihfYhxTeS1ngDRvaRxXciZgcSZneSZphERiKShLABGj
-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
-Dy3iJyxdKFFiNKnjNm2BM2+iOYaxLjBCFC6eB0TBCFjMCGDYBGLVG2CyITBXC0y8JVG1Ly9JExJl
-CzC/DD67CSq7GyyBLShGDhmIECa6BhWrJTKOOy8yXi1FfCxuhzZ+UzlNPys3ai1rZCtrZStqbTBw
-cTNyai5pXShhXCpjZzFrYy5oWytkXjBoYjBpXCdfVyNZVyVYWCZXUiNRUCROSR5ISh9JUCJOOx47
-EDQSDYoUFJElGCkYXnN3M0VGTFFRlqyqRVFQITEzUo2MTXJ0LjU3eX2BOkE9CkcLEzMRTxVBbRlT
-ZxhIaR1Peh9jdhxdeh9egCRfgiZhgCJjiClojCxqiydokChrlSh3lSWAlSV+lipykyZmoS9voy1t
-qjBznS50pyh5lTlsUDVDhThitT56pz54tkicsUF+aklVDyl/DFXfDkzhCTziBiffITjAJC9TFDHC
-FizUIS5WGyReAgW+MT2XJy8zESOkDQ3LChjPHSO6OTg6D0yhEGDVD1DSAyzaNDiPLDU5OpfDNm2C
-OmubQFZaHRVkBy2wDTK/DVvDBV7OFl7MIEt8HTdsCkjPCkfSNFB0Jyk7DiqdDUC1GCS3MCthJCU/
-DBSVEyq0ChmkKzNtQh87ZilDbShmhiV/WixVQh5DdBpsciFsbiBrdCdwfS14fi16bCJuZh5pdCl2
-dC54aCZvaihxbShyaCRrYR9kYSBiYyJkYB9eXh1aXBtYWhlVXhtdYCFbRiBBESsaFlsTFiQWS2Jq
-M0hJRklJlqinR1BRIzM1X5uZT3V3LjY3eXyDPz9EDRgLPBsxdCFbbRhQZx5SaihTdSNVfCZaeyNa
-giVhgSNhiSpvjCxzjityjChulCt2lip8nC+FnzWCozd3pjZ1pzN2rzZ8rTN/rDqPtC2Mmzt4VDZK
-kkBvs0F7p0B6wEefrzqDgEhaDy1yEkjeDz/YCj3YCCvjKzmWJyJmGzrRGzBzJDRWDCvFBwi9HSLK
-NUpHDxhrBwXPChbZLTOEKkNaEFLNE1jTD1HUAC3ZIzi6OUdDVoSfVXKHKURdIixDDQ6ZByeyEia3
-Clu7CFHRHDWdIjJTFDiQCUTNCkfILlulNkJFFCR3BiSxFiCcNDhAIR5BBguMCy+8DiebKCtHVCFL
-cSdMZCheiyR4WihOPyNCeR9xbh5oax5oZh1mbSRtciZtbilvYh9laSJpdS12aydvaCZuayVtaCNq
-YyFlXx5hXh1eYyRgYSRdWx5XVhhRUBZPVxlWaCVgOh83DCENHighS2RuMEhKSkpJkJ+fSlJSJC0u
-X4GARV5fNzs5l5ifUU1NMBYpaCVgdSFVbiNQcidafCxgfCdahC9jjzBwiytrii1nmzR5mzV1mzN2
-oTWFqjaQrDiJrDyBr0eCtkqKuEWQtz2QvUGLvUiMxkeYxT6crEmKUzdOkEZxuFGBqEF4u0eWrjqG
-kkNsHDFWDULPCy/bCTvRHDTbNj9qKyZkLTZ6Iio5Dz+2DyTYCh21DhbKLD6XLSdLBgOrERjLNDNV
-HD+bEUrWDmDQCznRBy7QEUrXN1h9SlxgXWlzPUA6FRRuCxKuCSWwDxawCVu4CUHFKCBkMDdWET27
-EETEFEnJE1a+Old4HiBOAA2lJyt+NjgrKSwzCgt5CzK+FzycNCc8cyZpgiluaClmgSNnWixGPyU7
-bhxoahpkax5nZBpjZhxlZhlgbyVsbidvZB1mdS1zcClvbCdtbilvbCluZyVqbixvZiRlYiFgaShn
-aShmXBxYVRlQVhtTWxdZUhtUMhk3Hx0fTGtyKERKPjo9cXZ5Pj9CGxgaOEdIJC4wRDw8s66sXFZT
-RRpAeClmfCxUditUeS5ZfS5ahjJjjjRzlzV7kzRzjjNsnDZ6pT+Ap0CFr0SVtkOTuEKLvUiKwlCU
-wEqcx1GgxFCUzlWYyVaXz1GXykeet0+QVTVOlFB2tVd/o0Fxt0uTrTuHoUd/MTlOCDq2CijlBTLk
-HzSWRT5FQDxQIzQ+GRaQCDXSCx+5CyDKBhq9GS/BPzppEQ5yGhqNIjFPFS3KEUvZEGnPEkPOCy/W
-D1XVI2G8NDhPQkU9LTVCDgqUChmlBSS0DhGnEU/DFD+tIy5CID1/DD3OCULECkXEC1C/JF+nIic3
-DQiHKi9ROzIsQjM0FBdZCyu7H0agPCNHfSh1hSh8cixrchxXVipBPyQ8aBllaRtjaR5lYhphYRle
-ZRteaB9kdCxyayNrcChwdC10cCxzcS51cC51bi1zcDB0cjJ1aihqZSNmbCprYyJhWhpUWhhSXRha
-WBdYSR9HHRkcR2txL0dPICEkMDw9IicpLjU1iqalY3h5QUJAurWyYF9cTRtDgy9mejJUgTJdgDJf
-hTRijTVokzZzmDh4mj59mkGBoz2Cpj6FsEeTtEmYu06TvkuOyE6Vyk+ezE+k0VWhzliXzVWWy1id
-zFScxE6brlCJVzdPnFmAr013rEZ3sD+KrjuIq0GJRkFJDjigEy7bGC+tKjRIYz9JW0xRHxptCguw
-DCfLDx6/CyW+BhfEByrCMSyUMTJVLSdXFSiDCCLWD1DZD1zREVPODkbWEVDWEU7ULS9vOzUxHSNa
-EAykDRugBhuzBAWbDzu/KEl2Hio5DkGhDjrOEUjGCUbAClLBDla+JzpQLBxSMTA2OS45UTA/JyRE
-CCWTIUSJTihGcSZsbydgcS5odR5kWS1KOiE8aBtmaRthZhxgYxtgYRxfYBpdaSNnbyRrdChxbyZu
-cyx0dDB3dzR7cjF3dTR6eTh8cTFydzV4bChtaidqaCZnYyFfYyFbWhtYXhxaThtFIhwgTHR5Qk5Y
-Mj4+aYuIQE1NMjg5la+wZHh5QD8+vri6Wl9aSx45hjNofzVihzZmgDFghjFijzRokzhsmDt1mj1+
-pEaKp0KHqD+KsEWVsUWVsUeNw1WXxlGWyU+ez1OezFKW0lugz1afzVmoxFKdvFqfrGKTUDJHjDpo
-rkJzqj54sj6OsD6NsDyGVUBKFDCJEjCPMy9FUkJHZzROeU5mHh9bAASMDSLADx7HDCO/DCDDCyfT
-GRSwNjpPMTBDEhixBzLSCEfSDELQD1nTE13SEU3VG0fPLTliRUQ4GxlfCAeYDhmhCBOtCgOsDR+U
-OTwwKSBMHEKqFjvGGk3GEErDCFG+DFXGHkB7NjAnSzJHSCxFbS5RWTNUDh9WGS1YWypOei5/YSpV
-cyxwfCF3VChLOB04biJqbSBjZhxeaiBiZR5fXhpbYhxgZR1icCdtcitycStzdjJ4dzR6eTZ9eTh+
-fj2CdTR3cjB0cC1zaidraCZoaylpaSpmYiliYSJfUBtIJB0jXYKIT1ZgLkBAZJKQPk1OOD0+kaur
-Y3Z3PTw7vLWxYWBdSh07hC5mhDNmgzFggTJdhTJhkDZskTVwlj18ljp7nDx7pkKBrESMr0OQtkiU
-tUWOwlKTyFaayVGhzlKazlady1epyVSmwU6kuU+VrE2OmUZ8WTpTizpnq0hzokV5pkWKrD6Trj97
-WUFMFCdIKSc+eUBhck1nWClIlUJ1QjRJCQhlBxq8Chy7Bhe9CyLCECfaCw2oNTJRKS8vEReGDDfS
-CzvWEDbUDlTQD0bVFVDGJz1bLC5lPEWFJytKBgWJESaqDRetCwinHCdNTUA7ND5KDy10DC68FUfI
-EErHDVG7BEjGGkCaODIwajJiTzFJfS9ifTtmOTREIS0tSShJfyx4ZSxadyhtgSV6Vy1QOxk2bx9l
-biJkcydpaBxebCJjZR9gYBtcYyFiZyZnbyxxcC1ydjN4dzR5eTh9eDd7ejl9eDd8cC50aCZsZiZp
-YCBhYyRjZCZiZSZiYyJhTBxJIxwkZoCGS1ddMENEa5SYQ01QMTY4lK+uZHd4QD8+tq6tXFtaSx48
-ijRqfjFdfjBbfjBghTJojDNrkTtvlUR8oVCJok2Doz53rEKDsUSItUeItkiJvU+OyViZylSey1Ci
-0lmoylaiu0uXuEyesESKpT2DkztyUTJIiTxkqEdqokRxqEeCojyGoTt3Sjg6UThHlkN+pDp/e0Nr
-SSg8ljdyfUZnICE5EiCgFCXFChC3BB66CinTHSWFRjhDP0I3EyBWEkPCCzLYCjfQDEzbFzy8ITJM
-JB1iESbAFS3HNTReFhZZChqhDRWsJSNhPzo5QyxDYzlSJixGBhqbDEDKBkfBB0y+BD/EIDV1XTBK
-g0NyQC40eypljTBxcTNWNisvLSMvbiNnbytndyVrfSFwVCpOOxw5aB1gYxpcaiFibCNkZR1fYx1e
-YRxdYB9fZiVmaidsbytwczB1ejd7fDuAdzZ7cC90bi1yaypvZydqZiZncTNybzBtYiJeZydjYyFf
-Th1LIBkhdI6UTlxhMkRFc5ygQ05QMjg4lK2tYnV2QUE/r6ipX11fTiA+hzJlfjJdfTBhfzFpgzFo
-hjNlkUJ1lkV+mUJ8oEJ6oT54rUaGrEOEtkyIuEqKu0uOxFCZylKgx02kwUySxFSLukuTq0SZrD+F
-pTR+ji9oUzNIijxoqURqoDxpojpzqkJ+mj5rQjVBkEF9tkeUpDqIhEp3SS47kzV0qFmCRT9JEh9y
-ByK+Cgq4BSG9ETO9NDJTYjtQVUhOJCxBE1CaCTXXCS7ZFEnFIyxOJxZwDBDMCzzPDiLKKzWZLzdH
-CQ5qEh18US9GhEN3QCc9fRpjTjNOEhxrCjm5CUrBB0DEE0CvNzRFhjBkhz11QC45dilgjS1yhilq
-YTNULSQraSBkcydvcSBjfB5pUidOOhw6YhxcYhtcYxxebyhpYhpdXRZYYh1eXx5fYyJiaydsbCht
-bitwdjN3fDuAejl9cC5zbCtwaChrZSVlbS9tbDBscDFtYyFdZSJfZyJhUR9MIRkicYuRTFheMEND
-bZaaRE9RLzQ2j6urXnJ0Pz09sqmqWlhZTyFAhC9kfzNlgDJqfS9mfi5jiDRqijhvkjx4nkB/qEaF
-okB/qkaHrEaHskqItEmOu0iVwEmZwlGavlGNvUuOuUeQsVGOpkqJnjF6nyR3jTFoVDNJij5tpUZv
-pUh6o0N+p0B8kz5lRjo+oUGGsEaTpkWNjluETDBDizVtqUeDd0pjGCNTCR28DA20Ch3HFTaBSS07
-jkJtXDdLUzdKGj9YDDC5CifiGi5cJzNZFBjKBhXFEkfAESTIGSjCQEhrKylDMzJGgC12kEGEQSw7
-exJZcTBdJiZOCDWhD0nCDDTCGziGSyk2lCd2hDh4RCxAcitbhSpffSNUcTVdNiMzbyJobB5nbR1b
-eRxeTB9JNhszZiBhaCBhYRtbZCJgXxxaYB1bYB1cXh5dYCFiZyVobCptbitwbyxxdzZ6cTF0bi9y
-aipuZiZoYyNjYiNhXR5aYiNfZCJfYR5bZyJhTx1KIRkia4WLSVZbL0FCaJCVQE1QLzg6h6mqV3J0
-PT09sqqpWFdWSx09hi9ofzJpfjFofi9igjFnhDFrijZwlDt2mzx7nDt7pD1+qD+ArUKDskaIs0qN
-tkiRt0ePtE6HtEyCtkaNqT+Do0yCmzt8nCp9pSGEiC9uUy1LiTZpqD9wpT17pT9/p0N+jjppRjI9
-mDd8r0eQnUCFZ0dgQTYycDBWqUGJm0l1LzRKABSdBQu6BhKzIjVLcjBNnUR1UCpGhTJrSEI/DiaC
-ESiWLiFNGjW/ECDNBBm8DUfLDCDEECHPNTeMNDkxXC5QoimVkUKKRjE/cRJbhB1mQjFBDjJ8DkXG
-GTSeJi9DaCRQnC6AiEF+PS06aitbgCJbfyFUbjFaNR8ycCBqax9iax1VcxZSTyFNNh4ucittbSRm
-XxlYVRVRVxlSYSFbXh5bWRtZWhxcYyRkaClqZydrailtbS1wbjFyaSttZylrYiJkXh1dYiFgXx5b
-YyJfZiRhXx1aYBtaTBpIJBwkbYiNTFlfLj9AYoqPP05SLjk8jK+wVXJzPT8/saqoWlhXSx09iDBq
-gDRnfjJmgDFngC9kgTFliDdvjzhzlzd2nzt7ojp6pj1+qz+BtEaIsEeErEWCsEqEs06Brkd/sEWN
-ojyBpEGBlSp2liZ+nR6FiC90WjJUiTVpozlvozx8nDh2nzpykDlrRTJAlzp8q0mWhD9sOC5WMzlm
-TzBCkThvp0WHUj5LBxd0Aw23DxaZPTM4kjRjoUh0UzJNly16ekZQMDVPKDVOHx92FC/QCRjBCRzB
-CkTHCh3BCBfLJi2RNzM7fS50qCeblkaORC89dRpejCByWDVMFzNaEUu/HTFnQycohSdzmjOFbzZs
-KyUsVydPdCVWfSRXbzRbNCEyaBplayBhaB1ScBVRTSFMMBoqYx1fbSNlYRtaVBVQVhhSWRpVXB9b
-VBlWWB5dXyJiYCNkYiVoZSdrZyhrZylraCprZihqZSZoXyBgXB5cWx1ZVxlVYCBcZiZjZCJhTx5L
-HxggdI6UUF1iLD4/YoqQQE9TNDo9ka+wVm5wQD09s6qoXFtaTB4+hzBpfjNkgTZnhTVsfi5hhjVm
-iDJrjjVwlDh3lTd3oDx9oj19qECBqkCBrkODrEeBqkp+qEN2pj98qkSMlzR4mC54lyd1jSJwmCSA
-gi5sWTNMhDFeoTxwn0eArFqOp0B3kDVqRTNDlTp6pUaKckFeERdsEBPENjtuXy9DiS1pcUdbFiFL
-Bw2tHCZ0WzBCnTdzpUd8WTZNhCtjrDF0YUJMMDw6DBilEynGCRu8CiLBE0fDDSPACxLGIjBmWjBN
-lDmKpTmeklCMPDA2cBtdiCNxeDRgJjBUDzh2NSc5biNQlC18lTmRUTFPICogQiQ6YiNHdiJSaDBR
-NyY3ZRtmYxxbYBhLcBdTUCZRKxcnWBRVaB9gYRxbVhZSVBdRVRhTVBlVUxpXVRxbXyRjWx9gXCBi
-XSBkZylsZSZoYiVmYCJkXiFiZihoXiFgVRlVWRxYYiRgXR9bXx5cUCBNHhcgeJKYVmJoKTs8Zo6T
-QlFVMTk6jq+vVW9vREJCsqyoWltWSh47gzBlfjJkgDFjfTFcfjFdgDBfhzNmizNukTV1ljl4nTp6
-okB6pkJ5qkR/r0mLqUV/pT93pTp9njCCmCx1kyhojCJujiV9lCZwkSZwhCplUzBIgC9doj91ljxy
-oUd8oDx0kjhyPyk/kzd4sFCIVzpOBgx5BADbFRq8Pj9YTiIydDdeRUBNCgqDIi1NYylXqEB5p1CG
-UzpMfCFKsyZ0iS9jMDY8Cg6VCDLHCh2+EiXFFz++DS/JFxmsNC1GgTZ1pj2dnDWTdEJuNDAlVxhU
-iChygiptQTZOJCwwYCdKhSRlkjZ+gjiFKSYxHClqKSw8QR4sch9TajFONSM3bSVsYiBVWBhHahRN
-SyBJKhgpUA5NWRhUYyNdWRlTVhVQWxhTWhlWXyBfWRxbXSBeVhpXVx1aVR1bXSJhYydnXyRkXyRj
-VhxZWiJdWB9bVBxXURlUXyRgXyVgVxtYSh1LIRkjd5GYTFhgMkVHX5WYQlNWMTo6ja+tV3FxPz89
-squpWVhXTCA+hzNrfDBgfzFefS9dfzBigDBjhTJmijNvkTd1kzl1lTlwmj5woUJzpUR6lTpzmj53
-mTd5mTCDlil3jiBhkCJhih1oiR96jh9yiRxrgCVfTy1CgC9cnzpznD11kjNnmzdvkTdxQStBljl9
-oT+GYEhRCQ5+BQPgBQLbMCyoOjQwcSZVZ0hXICdXMzE4dDNnqEOEpkqJWDpSdyBLqSRsrCZ0Zz5P
-FRRiCTa8Bx/ABiO8Cjq+CTDJKy6EVS1LkyiQpzqddzBvOzNDLTY4ShlCfypogCptQDM6RCw+hCxu
-hSNekTqLXDZVFBpeFhvAHh+BLh8qaiNJZSpMMiIwZyFhXBtMVBdDZRVIRx9GKBcmUhBQURNNWBpU
-WxxXVRVQXRxXXBtXYSBeXh1eWhxbWx5bVhtYVR1aWR9eXiJiYiZlVxxcWSBdVR1YUxxXVyBbVR1Y
-VBpVWyFdWh1cSR1KIRokcYqRSVVdMkZHYpicP09SMDk6jq+uXHZ2QEA+ta6sWVdYTB5AhjJsfjJj
-gjNlgTFngjJogTJlgjBohzJujjh0ijRskz1ul0Fum0JymDtykjd5kjV7kC97jSh6hB5iiB9bih5i
-iR1vhiB4kCFughVlgidgVDVCfi9anjZ0njlzmjVooDx0kzl0QixDkzZ6oDqGcU5eEBNqAwLMAwbc
-KCe4OD40diVbhERnTUlNNjIteDNsqEKBoEB5Xz1TbR5Jsid1qiB1nDRlPCpCByCCCRrBCiu4Bzi8
-DDa8PD1fbSVenieQhSp/PCs8EReCGiOMPjEwXyRPhy51UDxGXCdOkyp3hCNahDaBOis2Dh2NFSXB
-GR6ULCI/ZiRDXiREMiEvYBtXXRtOThVAXxZDQR1BKBYmUQ5PUhZQUhZQVhtUVxxVWBtUXBxZYB1c
-Yx9gWh1bXyJgVhtZVh1aWyBfWB1cYCVlWh9fVx1bVx9aUxxXVBxXVx5ZVhxXWB5ZZipnVylXIhol
-Z4KJQk5WM0ZIYJaZPk5RMzo7kra0XXh4Q0NCurO0Xl1eSRxAiDJxgTRogjNogTFpfy9jgDFigTFp
-hDFsiTVtiDRqkj10lz9ylztykTJ1kzCDkjCBji54hiVogyBehiFighxliSF4hSJviB5jiBhpfiRi
-Ty8+fjBanTN0mDNumTNlnDZvjjZwQy1CjzRyrEKLg092IyRSBAOpAAPcKSmwQzg9ei5giTxrdE5n
-My80fjFtpzp3mzxqYj9MWhxBrCN4pyt2oydrazZJEhpWDw60EDe9Bja2DzWtOjhVdSNmnSeSbi1c
-Fho+AwSzDAzDLjFBSyk4hi91VTxSXiRSkCxxgSVYfzJzLiMyDhqRGR3CGyJ7LSQxYh1HYSZMMB4v
-WRpRYR9WUBVCVxQ7QR4/KBMjVRRUUhZPVRlTURVOVRlSURVOXB1ZXh1aYh5eXh1bXR5cWR5cVBtZ
-Vh5cXiNiWh9fXiNiWiFeVR1YUhtWVBxWVRtWYCJeWh5bWBlaTSFOIRkjVWpzNT9FNklMYpmdQVNW
-Njk9jLOzYXx+KCcoVFBPKS8nNRovdixjhDVsgjBkfjBdgTBkgi9qfy9mgS9ohTFsjDZzkDZ3kjVu
-kTJtkTR6mDeIii93ijNvgSVegh9ehiRqgiBuhR1yhB1lhx90jhdyeiJsTS1Aey9ZnDZ4ljNwnjts
-nDRsjDlyRi9CkDdzojiCnEeGWT5YCAtoAQHLJSiUTDJBiTZqhDdnmUuASjhKjzNwpjp9mTp2UjxH
-OjQ8aiJEiSFkqiNxjjFaOC0/DBSAEU3BCDS6DTCkNCtOfiRpmy2JcjZjDBo7AgGsCQnIIytRRCk2
-fzBuUDNKVSBGhCVneCJOfixoMSo1DBSBFxawHyJWOyIxah9OVx9CLx4oSxpEXR9RVBNCVRU7QRw+
-KxIkSxJKURNNVhhSVRhSVBdQURVNVBdRWRtXXB1aZSFeXRtYXyFgVx1dUxpYXyJjYiJlVxtbWSNf
-WB9dVRxYVB1WVh1WWyJYYillailtRiVIGRQbIS04GSQmPU5SXJWaN09RNzo+ibGxU29xPz4/ubO3
-VllYDA0LQhk6ey5phjJngC5cgzFqfi9vfTFkfS1mhTFwiDF0jjBqhyxiiDJpgy1qizB2hSxsfyVe
-fSBbfh5igR5pfxlrgx5viCNyhBt6jRxudiNmTC5AeC5ZnTZ9lDNznTxsnDNpjDlxQio/kDd3mjN2
-pTZ/mEuBMSpGBw59KyxNaDBVkj1zfzlomEZ8TTZJjjNupDyEjDp2LCs/HyR+PkZaUyM9oCFpnSFc
-ajNPFihODEaaDzi9GDKWRDFNfyVujCV8fzx1JS44BgWQBgXBISpHSCk3fi9vUjVLUh5BfyNbcxxE
-fiVgRS5EERNnGBmGJSQoTBw9ciRSVyBAMCAnSxlCWBpMVhNHVhVAQh1BLhUmShFIURVPTxFLVRhS
-URROURVMUhROVRdTVhhVYiJeYiJgXR9eYiVlVxxcXR5gayluXh9iWR9eWSBgWSBeVh9aVx1ZWx5c
-bytvZC5lGhQcISMiXW97M0JIOEhNW5OZM0xONjk9ha2sVG9xR0ZG0crPYGJeF0EYGSsbSBw8dzNh
-fypqgC5seS5kdSteeSxgfC1jfixkgidgfCdgfyhkfiJgcRxXeSBYgiRcex5aex9hgiFogBtmgyNs
-hCRvhR52jiJnfjBrRio8dixZnjaFlTR5kTJhnDNmizhvQypBjzV3nzh6njB/qFGRclNsMSw9VjFC
-nTt+ljx6djllm0V8VDhNii9soj6DgD9aIyVOCAKzIyu6OjNFcRhKoCBcmCtoQDFCEThvETSrKDeR
-SStEhyt6kSaCiieASThFDxNcFRmKOik+ZiVSfy5vTC9ETRk5fSFWchRDgCBeUi5MGBw9ISBHPR0v
-YR1JbCFUWidILxwoShREXRpXWxNRWRRGQRpBLRQlURdOVRdSURJNUhRQURRPUxVPVRdSWRpXXBxb
-WRpYZSVjYSJjZSVnaClsaiZueDF7bSpxYCNnWB1iWyFiVx5cXCJjYCNnYSphGyQfEVMaISskf5qn
-QVVfN0ZLWpGXM0tNNDg6eqSiUG9uQ0NDwry7Wl9VGWsZMYQvIiYbRx9AZSFcYiJWZSRSYh1LZB9M
-YR1HYB1GYhxQYyBQYxtKYxZGYBNDYhRGaRlMZRdLZhpLahlWcRtcbhpXch9fcRpaeRpZYSJNRC03
-aydQhSp0hC1vfylWgS9Wei1eQig5eTRnhitmgixqiT54e1FzTTQ8hjVulTV6ey5iYzRRgj9rVjdI
-dihfiDZnc0BIJB1SCQetBgbTKytuViA1gRxMjx5eai9RIC88CiiGHzR/SChDey5zeSNwgSZ4WDFR
-JSk3KCk8RiQ4ZxtXaihaPCg3RBYycx9QZhE+axpQXStQHhwjKB0hTB86XBxDWRxISyQ8JhYjRxE9
-WRxYThRKURJGPBo5KBEmSBJFShVISBJHRxJFSBRESRNFSRZKRxNJVx1UWyNaUBhRVB1YVR5cXiZj
-aC1way9tbTBtYCdnTh1WTB1TSRxRRhxQTiFUIh4eFIchFZMqGCUbjqm2TWBqNkZKVY6TL0hKMjg5
-cJqXUW5uPD49tbWyW11bD2oRJq4qKGIpFxMTKxQkKhcjKxUlKhcmKRUiKhgjKRciJxUnKhkkKxkj
-LBclLxcnMBgoMxwsNR4tNiIuNh42OyI4QCY2PiQ9Oyg3RCU1QSc6MjA1OCs0Rik9PyY5PyEwPCk0
-SDBDLjYsTitDQSg3Pig0RiM8PS44NDYzSSpBPCo0QCQ7Oic1STBEKzYsPyc6RSQ5QS0vHSY+BAqN
-AwLLICiHQzI0RSQyPiE0RSw2MDcrEiRWGidwLy4xPiU7RCdAQSw8OSczJiQnJyslLyInNhswPCYy
-KCwrKh4gNR4mLRwmLxcsNRgpHB8aHB8ZKhkeMBciJxQfJBghFR4fLRclLRwtKR0iLBUmGxoaGhsd
-LhIrJBUiJhYmJxgnKRolKRokIxgjIxgkKBcoLh0sKxwqKh0qKh8qLyErNSE0Lh4rLB0sMB0yLRsq
-KxkqJRUoJBonFBEUDUQSFrgmGJ8lGCcbkqy5TV5oMkJFU4uQMEdJLjk4bJWSVG1uNDc2k5qWRk1I
-EGcQFpcbEDsWORozXyRFYSJBZh5HYx5LYB5CXRw/XxxEYhxAYRw+ZSBGaCBQbiFfcCVbciVVeypf
-gzRuhDR2gzNugC5nhjJ1jDqFijWOgEmARC0+bTVVhTtbfzxbgDhbhjlngUBuQjE/by9ojDeEei9y
-cC5oXT1ZVC9JdS1cYipEgypmfCxjdjRiRjNAaTRadTFegTxtTzVODBFfCQy9Ki2DVTE+djNbcjFb
-dDRgeDZjRjBIFiRHMCMqZC5OdzhaaDNLUzVBJCQkTSlGaydYYypWXyxQQChAQCI2Vi5GYDFMYDJP
-Tyo+JCAlQBw7Th1FSRc/SBs/RiM5Kh0rTR1DWCZYUyFQXyVePCI7LRoYWCAzYihDYydIZChLXiJB
-WR82WyE1XSU/Zi9SZClEZi1EZS9EYy9BYS1KazZgYzJVYTNXYDBTWyhGXShMVSE/YS5MSyhEEioU
-Bn0MFJIYHi8ihqCtRVZgNURIUYSKM0RIKzg3aI+NWW9wLzMyfIWDNUE4B1EHD0QQPxYvdSVRdBxM
-aBpFaxxSbRtUZhhEahtKbRtRbRhCbBhDcB1Qcx5efiJpeyBbgSVXhiRbiypukzB+jSpxkil3lDKK
-ki6Boy2Ghjh1QyQ+dC5ZljZtkTxpk0JllThwgzdsRis/ciRolDOIizOBdihuYzZhTChHfCZich5Q
-lCl1gipldCxbTDFCbytYhCxmjix9bjNYKSRACQyGLjNqYjFKhCptgS1ffyxfiil3ZTdSJywqMSAo
-ZitQfS5bcCdRYS5PMyQybyxheBxdbCNWcyRbPCI2RCE4eTZlhz50gkJuZTVRKR0nRRk9URdHURJF
-WhlMUSZGLBktVxlGaiVeZR1RcCFkTCZKNBYfYR42bihFdCtQditVcSdOayI/bSM6bSZFczBedy9O
-ejFPejRUezRZfjpnezRodjJZfDZYdzNdcjFjbytfZCRDYydFbDVmTSVDES0LEFsRHy8jdZCcPE1X
-OklNW4mQNURIKDUxZYuJV25wJC4tZ3p3MD41CxoMMRUqbx9MbhxHaRdJbBpOahlRZxlLZRlDaxtM
-bBtJZxc/aBpGaxxQciFbeB9beR5dfiNkfiRiiCpvhiVwiShwkCt2jyp0jStznS58gTBnQyU5djha
-mDxxlD5skkRjkztpfzhkRSw8biBkhzJ+kC+EeSVvZzFiRipFfCRfcSRRjix4gClleDFcRy06aSZP
-gTBliDB5cChQRDBACxREKyxAYyhJiDFzfDBddCtWiSxxbjFZOywzNh8payhRdylabCZOXi5HOyc+
-cCheZiRVYSJNbSNbOCAyQCE2fz5uj01/h0t2bDhdKxwkQRc5ThZCUBVEVx1KUilMLB0tVhxHZiVe
-XiFQaCFeRCNELxgibCREcytKdzBJeTNNdS1NcChKcyhGeTBQdjFZeDFPeTNQejVTfjlbgjphejJX
-eDZLezhRdzBQdjRadDJpby9aaCtHZCZLbjBiPSg6GCUWJCUmcY2ZOkhONUVHXomPM0ZJJzQwYYeF
-UmlrHCcmZX14MT8+KBIlYR1RcRtXZRhIZRdJaBlOaBZTZRdPaBtHZxdFaRpBaBhDaRpJahtPbR5V
-cyJTcx5XeyJjgCZogSRlhydtiix4hyt6iyh2iid0lCd7hTZwPyM3djlZm0V4mkl3lERokTpogTxo
-Pyo7bSNneSlwiCp9dSRsYStcRy1FeCFeciVWjS57fylleDJgQig4aidUey1mhDVwbiJKWCVBQTI0
-KCUoaShRjjR3fi5kcCdTeyVidClcQCo4PB4tayNPdClXZiRJWipDNSQ4ZSNRayldZSFUayVbOyM0
-QR43fzptjEl7iUx3dD9kLBwlPxQ3ThVCURREWBxLVCpNKRkoWiBKaCZhXyNSZyBcQyBBLxgfbSNC
-fS9SfzNSfzVPfDJPfTJafDBZfTNdhj9tiEJ0h0Bvh0FnfzlVhkJjgj1ldjRSeTRVfjZgczFPcjJS
-dy9hcypfaCZIZiNGaTJXQCQ8IyImc4+bOkhNLj5AWoWLNEdKIzEsY4iEUmhrHSgnZH92NENEQRQ1
-cBtTZxZVZxlTZBhKYxZLaBhYZxhQZhlFaBdHaRdCaxlHbR1OaxxPah1QaBtMcyRbdyBeeh9ceyBh
-hyx3hSh7gSd3hyhxhiZykSd5fjJpPyM0cDZSmkp7m019lUNplD5sh0NvPCg5aiNlayJifCVydSZr
-aTFjRSxCeSVhcyldiCl2fitlcy9fQSg7aypZeCxlfS1wcCFWaSJMbjdXNSoveC9kiC5sfzBicitW
-cydbgihnSStAQB4wah1LbCVPYh9CYixJMiAyXCFGaiZeayNcZyRWOSIxQRs2fzZtiER3ik14czxj
-KBoiQRY5VBxIVBhHYSVUVi1MJhYjVx9HZyZeXyNQaCFbQyFALxgebCQ9dy5JfjRTgDVUfjNOgTdU
-hT5gfDhcfjhbhD9ui0R5jkh1fDtZgUJojkl7ezdbeDNSfjhrfDppdzZQcjFPcDBUayxPaylKZSRK
-WS9KJyYqdpGeOUhMLT0/WYOJN0lNKjAvaZGVUGtqHSkkXnVvMT07SRMyZxpOYh5ZaRtNYxZJZhdU
-ZhpPZhpDaRxEaBhHZhZEZxlJaBlOahpTah1WaB5YbR1XcRtXdSFddiVndyRufSZ2fyVugyVuhydr
-iiJseDJvOyU4bzVRlUV2mEx9jT9plEFyg0NuOSo2ZB5eaydneCRzdCNwYzRiPiQ7filqeydjgCpu
-fCZmdzJnPyw4cDBlcilVeS1nbCNUbyZQfjR1Oio3fDNtgTBgfDFjcC1WdytkhCptRyc9QRwrZiBG
-YyFCXx06YCtJMx4vUR05ZSNWaiJeYCBPNyEwPxo2dTBngUJ1g0R0bz5hLRwmQBU3VR1IVxxJYCdV
-Wi5SJBcgVh1BZCNbXyRPZx1cQiI9LhshZiNGcSpAdzFNezpgdC9SdTBMeThYfTteeTVYejZYg0Ft
-gkJudjhYdzheh0V3fjtkdjFMdDRSej5lfTtibzFRcTdSajBPaS1NaCxLUCU5JiIpdJSePUlPLT8/
-VomRNk9MJjIrcpuSXnBwHyIiSF1ZJTI0SBQ+dx1kbxhbaxdCbBZNcBZeahhKbRdHaxRGbRhIbBdH
-cBtLbhhQcB5abyJcaB9UaRpMbhhNcx9bfipviDF9gSV0gCBthSVuhSVgkSdwfjd1Rik9dS9YmDx3
-lkF9jTpukjZyfzpqQCg6ZR1gbyBhgih1diJsWS9RSCE/fiRsfh9kfChohShxdyxqRS5AZyJjbCRQ
-dCZcbB5TdSVhkkSLSDNDdTFkfjRcfS5ldipjfCRxfilwSiZCRhgwYRtGXxtBYhlAWCZHMhonShkx
-Zh5PaiFcWhtHOiAxQBs2cy5lhDh1ijl0azdbJxwnSBU/VxlIXB5OWh5SVihSKhwoWRtCZx9bZCRR
-aiVlSCdCNRwpZydcaSZHaCVFcjBhfDJidC5UbylPdC5VdC1UcSpOdDBdgz5wfzdhcSxSfjpqgzxy
-eS9adzBQezVegDhndjJVcjBOdjRXaypIcCtNXCdCLicqXn+FNENNOU1QgJilREtVHCksUm1kP0tO
-EBYTGiQdHh8gOBw4ThlGTRI1ShIsTRY1SxM4SRM0TBQ3ShIzSxUySxUyTA45SxRETRtNUBxLUxpB
-TRY/SBE9UBRBUx9MViBPVhlIVRlIWBxLWh9TYyBiViRRNyAuVSNCZSlQYi5UYSlNZytPWC5JNyM0
-Rx9HWx5UaShjVR1TSClHOyM4VyJJVCBIVSNIZCdQVCNGPi4/WSpUTCE5UiU/Sho5ViRGWCdUMyMy
-Vi1KVSpFWiZIVyJHVyJRURxHLxsoMBQiRBU0QhUwRRMuNxcsHRQZMg8iRhI2RRU9ORMwJhQiLREl
-Th9EXShVZSdXUCNDKBckNRAuPRU1Qhk5QBQ1NhgtJRkjPhUtQxg5Sxo2SSBDMxotMBgjSiFDUh86
-SxYuRh08TiNBUCE/SBo3SBw0RRkvRBstQxcxTiBAUiRFTyA5TyI/TyVJVSpMTyM7TR82UiU9TiI0
-TCEyTCI3Rh0tSyAxPR8vIiAjK0NJGycuODo5XnRzKDo+HBUmGh9VEDJaGCVcGCFTFxgmJSQfM0FE
-RFNVT2BlXnF1WG5wU2huUmhqVGptWG1yUGVqVm5wS2xxQmBkHjAxFyotLVVbJFtjMGJnQWZtUWtx
-YHJ1YXV9YnV7WXB3VWxzWmpuVGlxWWx1VWlwUm5zWGpyXG92VXFzXW56W297V25xVm5yVGxyUmht
-W3V6ZHV7XHV/VGlxMC81UU5NUWFmXFlkVF1bVmJhX2hsYW1oX2psX2hqWmZhSGBiSltaTl5WTGFf
-VV5fWWZhXG5lXGdoX2tnZW5rX2hpXGtoZmtsYGJkW2ZnXmhrU2FiXmVoMzM4DhQYEDA6F0hQJFFT
-Hk9aGkpWL1hgQFlhQlhcO1ljOVpjM2hvQWRyMGV1LWd2MG16IGR1Pmp3Vm51WXB8Wm11W2t1WGdy
-VGNvWmp2V2x1YXF6ZXN9WGx3JS00Q0tUUmVuUGZuVmhxYG55X251WmlvV2duWmlzVmdtRFVdNUJJ
-IRgeGCpDFzxrGjNtGD9tHyg7DQ0xBROSD1K5DDa4DieTGBMqGhcYMD9BRFNXRFtfUWhrVGxtSWFk
-RV1gQ1teS2NnSWJmPF9jO11jNk9WGyguECMrIklRIFNbJlZePWBkT2tuW3N1W3J2W3F4V2h0TmNs
-Rl5mSl9pSmJqSWFoS2ZrTmZtTGRtSWNqUmZyUWdyTmhxTGZvSWFsQFRhQlpiTWRoSWFnQVVbJS0x
-PEBAPUZJR0pPQkxMTl5dUmFhVGRgUmJfUmFcUWNbRl1XSF1WTWVcUmxjYHJsZXFtZ3ZwaHd0bXx3
-b355bnl4cnx7c317ZnFtWmhkWWVjVWBeVV9dKi8yDQsaDyMzEj1MG0tYH09XH0tTM1hgRWFqRV5o
-OVViNVZhMlpkPFtqL11rI1NjHU5dDkpWGVBXLVdeO1tlSmFpVWZuTl9oRldhS1xmTmJsVWZxWWt0
-T2NsHScwOkVOTmFpTWZrW3B4ZHWAYnR9XG53XW55WGhzUGBqOEhTJjM9FBYcEkCDDnHfDGfgGH7M
-FDZkHBExBBGfC1q5DUbBDyaiFxYvRFZPR2xlRGZmRGllRWlmRmpnQmVjRGdnR2ppR2ppSm1sSW5s
-R2lpSGppUHFxT3JzTnNzS3FxTnFxSGxrRWtqRGhnTm9uUXNxVHV4SnN2TmtrIykpWWBianZ4YnR0
-Z3x7YXV2Znl7ZHd4YnZ4ZHp8YXh5YHh4YHd4YXl5ZHt8aHx9ZHh5ZHd6aXyAYnR3Z3p9Y3V5XXFy
-WW1uVmtsXG9xWWdnXWpqY29vX21tX3BwVFhaIyYoSFxbSmBgTF9gT2NkQ1hZQ1hZPlVWPVRVP1ZX
-PVNVPFNUO1FSOU9QO1FSRldYRFdXPVVUNVFQN1FRN1FRO1ZWP1tbQl9hQF1fRGFiQFxeP1xcRV5d
-NDo8HissQGNgRmdlRmloQ2dlQWZmR2tsR2xsTHBxSm9vRW5vQGpsQGprPmhpP2trPWlpOmRkOGFh
-OWNkO2VmO2ZnPmlpRWxtSmtuSmptSm1vUmttFhgbDzePEHXtD4LnD4veEjljDxA7CRuRDFOkBz6l
-EiOKGSI5RmlpYZCRUoeMVIiMWY2RUYSJR32CQ4CFRoSIS4mNSoaLP3l/P3uAPHuAQ4SITIyPRYGF
-P3V7PnN4OXV6PXuAQHyBSYOJWI+Ua52ka6OqbJKZJjQ6doqPi6WphKSndJeZcJGWcZKYcpOYdpec
-dJSaepugdpeceZmfepykdpqjfKGqcZigcJabcpaWcJSVbJCRcpaWcpOTcJGRcJCQcI+Qd5CReZCR
-gJeZgJmZe5SVbnh8KjY5YIWEa5KTZYaJY4aHX4GDWX19Vn17U3p5UHZ1U3l4TnVzTXNySnFwRmxt
-RWhsRWZsQ2NpQWBmQmBmO1xiP2NoQGltTXV6UHh+VHyCU3uBUnt/ZomLSlRaKjtAZZCRZZWYap6g
-aJ+hY5yeYJWbZpyhZ52iaqGmZKCmZqKoZKClZKGmX5+kXZyhXpieXZSbXpacXJmeXpuhaKWqa6Ws
-bqSqaqCnaqGodKCmGB4kECZ9D1/SB3LUCXnIDTdjFxYhExQyFSA6DR06FhczIh0UIScsJzEyHzQv
-IjIyIzQzITEwITExIzEzJTM1KTc4JDIzGCIlFyEjGyMlGyIlFigmGSUlHSYlGyknFygoGyorHy0v
-JC8xITIxJzIzMDk8KDYzGB0ZMTU0NDg4Nzw7MzY2MTY3Mzg6NTo8NTo8MTo7Mzw9Nj9AMzw9OTw/
-Oj1ANz1AMjs9Mjs9ND0+ND0+NDw+Mzs8NDw7Mjk5NDs7MDg4LjY3LjY2LTQ1LzY3LzM1JSssFh4f
-KDMzKTQ2KTQ3JjI0JjE0KTM0KjMyKTIyJC0sJS8uKDEwJS4tJi8uJS0uJCstJS0uISssISsrIywt
-ISstIy0uJjExJjEzKDQ2KjU3KTQ3KzI0KjU3HCUnGh4gJDIzJzY2JjU1KTg4KDc3KDY0Ljw7Kzk4
-LTs6LDs7Lj09LT09LTw9Kzo8LTs9LTs9LDo8KTk5Kzo6Kjo6Kzo7Kjo6Kzo6KTg4Kzo6JDQ2FxsT
-FRI1ESRHFSxDDy0+IB0tRQEAoDwASgAgBkoABAA=
-EOF
- open FP, "> /tmp/glass.bmp";
- print FP $glass;
- close FP;
-}
-