0
  "   ˆl–Ü4ý(&”ÔD¨ 	ÅÕÁ7q§”Å£Áƒh¹À¿      1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
  "   ˆl–Ü4ý(&”ÔD¨ 	ÅÕÆ�¸ÓJbÑ¿Âƒh¹ÁÀ      402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
  G   ˆl–Ü4ý('Ð;â€Æ\¸ËjbÑ¿Ã„i—Ä÷_‹uÐb&=LV[(a–Ü4ý(&”ÔD¨ 	ÅÕÆ�¸ÓjbÑ¿Ã ?÷     #!/usr/bin/perl

package NetAddr::IP::Lite;

use Carp;
use strict;
#use diagnostics;
#use warnings;
use NetAddr::IP::InetBase qw(
	inet_any2n
	isIPv4
	inet_n2dx
	inet_aton
	ipv6_aton
	ipv6_n2x
	fillIPv4
);	
use NetAddr::IP::Util qw(
	addconst
	sub128
	ipv6to4
	notcontiguous
	shiftleft
	hasbits
	bin2bcd
	bcd2bin
	mask4to6
	ipv4to6
	naip_gethostbyname
	havegethostbyname2
);

use vars qw(@ISA @EXPORT_OK $VERSION $Accept_Binary_IP $Old_nth $NoFQDN $AUTOLOAD *Zero);

$VERSION = do { my @r = (q$Revision: 1.57 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };

require Exporter;

@ISA = qw(Exporter);

@EXPORT_OK = qw(Zeros Zero Ones V4mask V4net);

# Set to true, to enable recognizing of ipV4 && ipV6 binary notation IP
# addresses. Thanks to Steve Snodgrass for reporting. This can be done
# at the time of use-ing the module. See docs for details.

$Accept_Binary_IP = 0;
$Old_nth = 0;
*Zero = \&Zeros;

=pod

=encoding UTF-8

=head1 NAME

NetAddr::IP::Lite - Manages IPv4 and IPv6 addresses and subnets

=head1 SYNOPSIS

  use NetAddr::IP::Lite qw(
	Zeros
	Ones
	V4mask
	V4net
	:aton		DEPRECATED !
	:old_nth
	:upper
	:lower
	:nofqdn
  );

  my $ip = new NetAddr::IP::Lite '127.0.0.1';
	or if your prefer
  my $ip = NetAddr::IP::Lite->new('127.0.0.1);
	or from a packed IPv4 address
  my $ip = new_from_aton NetAddr::IP::Lite (inet_aton('127.0.0.1'));
	or from an octal filtered IPv4 address
  my $ip = new_no NetAddr::IP::Lite '127.012.0.0';

  print "The address is ", $ip->addr, " with mask ", $ip->mask, "\n" ;

  if ($ip->within(new NetAddr::IP::Lite "127.0.0.0", "255.0.0.0")) {
      print "Is a loopback address\n";
  }

				# This prints 127.0.0.1/32
  print "You can also say $ip...\n";

  The following four functions return ipV6 representations of:

  ::					   = Zeros();
  FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF  = Ones();
  FFFF:FFFF:FFFF:FFFF:FFFF:FFFF::	   = V4mask();
  ::FFFF:FFFF				   = V4net();

  Will also return an ipV4 or ipV6 representation of a
  resolvable Fully Qualified Domanin Name (FQDN).

=head1 INSTALLATION

Un-tar the distribution in an appropriate directory and type:

	perl Makefile.PL
	make
	make test
	make install

B<NetAddr::IP::Lite> depends on B<NetAddr::IP::Util> which installs by default with its primary functions compiled
using Perl's XS extensions to build a 'C' library. If you do not have a 'C'
complier available or would like the slower Pure Perl version for some other
reason, then type:

	perl Makefile.PL -noxs
	make
	make test
	make install

=head1 DESCRIPTION

This module provides an object-oriented abstraction on top of IP
addresses or IP subnets, that allows for easy manipulations. Most of the
operations of NetAddr::IP are supported. This module will work with older
versions of Perl and is compatible with Math::BigInt.

* By default B<NetAddr::IP> functions and methods return string IPv6
addresses in uppercase.  To change that to lowercase:

NOTE: the AUGUST 2010 RFC5952 states:

    4.3. Lowercase

      The characters "a", "b", "c", "d", "e", and "f" in an IPv6
      address MUST be represented in lowercase.

It is recommended that all NEW applications using NetAddr::IP::Lite be
invoked as shown on the next line.

  use NetAddr::IP::Lite qw(:lower);

* To ensure the current IPv6 string case behavior even if the default changes:

  use NetAddr::IP::Lite qw(:upper);


The internal representation of all IP objects is in 128 bit IPv6 notation.
IPv4 and IPv6 objects may be freely mixed.

The supported operations are described below:

=cut

# in the off chance that NetAddr::IP::Lite objects are created
# and the caller later loads NetAddr::IP and expects to use
# those objects, let the AUTOLOAD routine find and redirect
# NetAddr::IP::Lite method and subroutine calls to NetAddr::IP.
#

my $