Commits

Jing Conan Wang  committed b05c439

add ns3_load_dot sadit/configure initial not work yet

  • Participants
  • Parent commits 8500024

Comments (0)

Files changed (36)

File .DS_Store

Binary file removed.
 **.pyc
 **_undo
 **.pcap
+**.dot
 
 syntax: regexp
 ^\.UNDO/*.*

File core/.DS_Store

Binary file removed.

File core/configure/API.py

+from Network import Network
+from Anomaly import AtypicalUserAnomaly, Anomaly, TargetOneServer
+from MarkovAnomaly import MarkovAnomaly
+from MVAnomaly import MVAnomaly
+##################################
+###  Interface          #######
+##################################
+ano_map = {
+        # 'ATYPICAL_USER':AtypicalUser,
+        'atypical_user':AtypicalUserAnomaly,
+        'anomaly':Anomaly,
+        'flow_arrival_rate':Anomaly,
+        'flow_size_mean':Anomaly,
+        'flow_size_var':Anomaly,
+        'target_one_server':TargetOneServer,
+        'markov_anomaly':MarkovAnomaly,
+        'mv_anomaly':MVAnomaly,
+        }
+
+def gen_anomaly_dot(ano_list, netDesc, normalDesc, outputFileName):
+    net = Network()
+    net.init(netDesc, normalDesc)
+    for ano_desc in ano_list:
+        ano_type = ano_desc['anoType'].lower()
+        AnoClass = ano_map[ano_type]
+        A = AnoClass(ano_desc)
+        net.InjectAnomaly( A )
+
+    net.write(outputFileName)
+

File core/configure/Address.py

+def IntToDottedIP( intip ):
+        octet = ''
+        for exp in [3,2,1,0]:
+                octet = octet + str(intip / ( 256 ** exp )) + "."
+                intip = intip % ( 256 ** exp )
+        return(octet.rstrip('.'))
+
+def DottedIPToInt( dotted_ip ):
+        exp = 3
+        intip = 0
+        for quad in dotted_ip.split('.'):
+                intip = intip + (int(quad) * (256 ** exp))
+                exp = exp - 1
+        return(intip)
+
+class Ipv4AddressHelper(object):
+    """replica of Ipv4AddressHelper in NS3"""
+    def __init__(self, network, mask, address):
+        self.SetBase(network, mask, address)
+
+    def SetBase(self, network, mask, address):
+        self.m_network = DottedIPToInt(network)
+        self.m_mask = DottedIPToInt(mask)
+        self.m_base = DottedIPToInt(address)
+        self.m_address = self.m_base
+
+        assert( ( self.m_network & ~self.m_mask) == 0 )
+
+        # Figure out how much to shift network numbers to get them
+        # aligned, and what the maximum allowed address is with respect
+        # to the current mask
+        self.m_shift = self.NumAddressBits(self.m_mask)
+        self.m_max = (1 << self.m_shift) - 2
+        assert(self.m_shift <= 32)
+
+        # shift the network down into the normalized position
+        self.m_network >>= self.m_shift
+
+    def NewNetwork(self):
+        self.m_network += 1
+        self.m_address = self.m_base
+        IntToDottedIP( self.m_network << self.m_shift)
+
+    def NewAddress(self):
+        """The way this is expected to be used is that an address and network number
+        are initialized, and then NewAddress() is called repeatedly to allocate and
+        get new addresses on a given subnet.  The client will expect that the first
+        address she gets back is the one she used to initialize the generator with.
+        This implies that this operation is a post-increment.
+        """
+        assert(self.m_address < self.m_max)
+        addr = IntToDottedIP((self.m_network << self.m_shift) | self.m_address);
+        self.m_address += 1
+        return addr
+
+    def Assign(self, node_container):
+        """node_container is a list of node that will be assigned address.
+        each node will be added a interface same network
+        """
+        for node in node_container:
+            node.add_interface_addr(self.NewAddress() + '/' + str(32-self.m_shift))
+
+    def NumAddressBits(self, maskbits):
+        for i in xrange(32):
+            if (maskbits & 1):
+                return i
+            maskbits >>= 1;
+        raise Exception("Ipv4AddressHelper::NumAddressBits():Bad Mask")
+        return 0;
+
+def test():
+    network = '10.0.7.0'
+    mask = '255.255.255.0'
+    base = '0.0.0.4'
+    helper = Ipv4AddressHelper(network, mask, base)
+    # helper.SetBase()
+    for i in xrange(10):
+        helper.NewNetwork()
+        addr = helper.NewAddress()
+        print 'addr', addr
+
+if __name__ == "__main__":
+    test()

File core/configure/Anomaly.py

+#!/usr/bin/env python
+
+### -- [2012-03-04 14:56:03] FlowRate and FlowSize anomaly parameter has be changed as
+### -- ratio instead of absolute value
+##-- [2012-04-08 22:31:20] Add GenAnomalyDot
+##-- [2012-04-09 18:31:22] refactoring the whole file
+## -- [2012-04-10 01:14:07] FLOW_RATE can work
+##-- [2012-04-10 17:16:27] add _infect_modulator, make anomaly more general
+
+
+# import numpy as np
+import sys
+sys.path.append("..")
+import settings
+from util import Load
+from mod_util import choose_ip_addr
+import cPickle as pickle
+
+# from numpy import cumsum, diff
+def cumsum(it):
+    total = 0
+    for x in it:
+        total += x
+        yield total
+
+def diff(x):
+    res = []
+    for i in xrange(len(x)-1):
+        res.append(x[i+1]-x[i])
+    return res
+
+
+def get_pos(l, v):
+    """index of largest element in l that is less than v"""
+    for i in xrange(len(l)):
+        if l[i] < v :
+            continue
+        return i - 1
+
+def insert_break_pt(b, dur, num):
+    """b is a break point that will break dur, for example,
+    if b = 35, and dur = (20, 20, 10), num = (1, 2, 1)the result will be
+        (20, 15, 5, 10), the new num will be (1, 2, 2, 1)"""
+    t = [0] + list(cumsum( dur ))
+    nt = copy.deepcopy(t)
+    new_num = list(copy.deepcopy(num))
+    i = get_pos(t, b)
+    if i == -1 or i == len(t) - 1:
+        return dur, num, i+1;
+    else:
+        nt.insert(i+1, b)
+        new_num.insert(i+1, num[i])
+        new_dur = list(diff(nt))
+        return new_dur, new_num, i+1
+
+class BadConfigError(Exception):
+    def __init__(self, value):
+        self.value = value
+    def __str__(self):
+        return repr(self.value)
+
+
+import copy
+class Anomaly:
+    '''basis class for anomaly. Its subclass will provide run() method'''
+    def __init__(self, ano_desc):
+        self.ano_desc = ano_desc
+        self.ano_node = None
+
+    def get_profile_with_ano(self, mod_start, mod_profile, ano_t):
+        """in fs, one modulator can only one behaviour
+        toe simulate the change of behaviour of the modulator,
+        the abnormal haviour will be generator by new modulators."""
+        start, end = ano_t
+        start -= mod_start
+        end -= mod_start
+        d, n, i1 = insert_break_pt(start, mod_profile[0], mod_profile[1])
+        d, n, i2 = insert_break_pt(end, d, n)
+        normal_profile_1 = ( tuple(d[:i1]), tuple(n[:i1]) )
+        abnormal_profile = ( tuple(d[i1:i2]), tuple(n[i1:i2]) )
+        normal_profile_2 = ( tuple(d[i2:]), tuple(n[i2:]) )
+        return normal_profile_1, abnormal_profile, normal_profile_2
+
+    def cut_profile(profile, status):
+        """cut into three pieces"""
+
+    def _infect_modulator(self, ano_t, m_id, mod):
+        ano_node = self.ano_node
+        generator = ano_node.generator
+
+        mod_start = eval(mod['start'])
+        mod_profile = mod['profile']
+        np1, ap, np2 = self.get_profile_with_ano(mod_start, mod_profile, ano_t)
+
+        s_id = mod['generator'] # get id for source generator
+        ano_node.add_modulator(start=str(mod_start), profile=np1, generator = [generator[s_id]])
+
+        start, end = ano_t
+        # st = mod_start + float(np.sum(np1[0]))
+        st = mod_start + float(sum(np1[0]))
+        assert(st == start)
+
+        self.new_generator = generator[s_id].get_new_gen(self.ano_desc['change'])
+        ano_node.add_modulator(start=str(start),
+                profile=ap,
+                generator = [ self.new_generator ])
+
+        # st = mod_start + float(np.sum(np1[0])) + float(np.sum(ap[0]))
+        st = mod_start + float(sum(np1[0])) + float(sum(ap[0]))
+        assert(st == end)
+        ano_node.add_modulator(start=str(end), profile=np2, generator=[ generator[s_id] ])
+
+        # delete original modulator
+        del ano_node.modulator[m_id]
+        del ano_node.generator[s_id]
+
+    def _export_ano_flow_para(self):
+        """export para to help to export ano flows"""
+        ano_flow_para = copy.deepcopy(self.new_generator.para)
+        ano_flow_para['ano_type'] = self.ano_desc['anoType']
+        pickle.dump(ano_flow_para, open(settings.EXPORT_ABNORMAL_FLOW_PARA_FILE, 'w')) # For export abnormal flows
+
+    def run(self, net):
+        """inject itself into the network"""
+        self.ano_node = net.node_list[self.ano_desc['ano_node_seq']]
+        ano_t = self.ano_desc['T']
+
+        m_back = copy.deepcopy(self.ano_node.modulator)
+        for m_id, mod in m_back.iteritems(): # For each modulator
+            self._infect_modulator(ano_t, m_id, mod)
+
+        self._export_ano_flow_para()
+
+
+from Edge import NEdge
+from Node import NNode
+from Generator import get_generator
+class AtypicalUserAnomaly(Anomaly):
+    """anomaly of atypical user. an atypical user joins to the network during some time.
+    Atypical user refer those user has large IP distance with users in the network."""
+    ATIP = None # Atypical IP Set. Will Select IP from this set and add a node with atypical ip
+    idx = 0 # A indicator to seperate the IP that has been selected or not
+    NAME = 'AtypicaUser'
+    def __init__(self, ano_desc):
+        """link_to is a list of variables representing the connection to all other nodes
+        * link_to[i] == 1 means there is link from atypical node to node i.
+        * link_to[i] == -1 means there is link from node i to this atypical node.
+        """
+        self.ano_desc = ano_desc
+        Anomaly.__init__(self, ano_desc)
+        if self.ATIP == None:
+            self.ATIP = ano_desc['ATIP']
+        self.net = None
+        self.ano_node = None
+
+    def _change_topology(self):
+        link_to = self.ano_desc['link_to']
+        link_attr = self.ano_desc['link_attr']
+        for i in xrange(len(link_to)):
+            if link_to[i] == 1:
+                edge = NEdge(self.ano_node, self.net.node_list[i], link_attr )
+            elif link_to[i] == -1:
+                edge = NEdge(self.net.node_list[i], self.ano._ode, link_attr )
+            else:
+                raise ValueError('unknown link_to value')
+            self.net.add_edge(edge)
+
+    def _config_traffic(self):
+        nn = len(self.net.node_list)
+        srv_node_list = [self.net.node_list[i] for i in xrange(nn) if i in self.net.net_desc['srv_list'] ]
+        start, end = self.ano_desc['T']
+        for srv_node in srv_node_list:
+            gen_desc = Load(self.ano_desc['gen_desc'])
+            gen_desc['ipsrc'] = choose_ip_addr(self.ano_node.ipdests)
+            gen_desc['ipdst'] = choose_ip_addr(srv_node.ipdests)
+            self.ano_node.add_modulator(start=str(start),
+                    profile='((%d,),(1,))' %(end-start),
+                    generator=get_generator(gen_desc) )
+
+    def _get_ano_node(self):
+        ipdest = [ self.ATIP[self.idx] ]
+        self.idx += 1
+
+        nn = len(self.net.node_list) # Add by J.W
+        self.ano_node = NNode(ipdest, nn)
+        self._config_traffic()
+
+    def _export_ip_addr(self):
+        fid = open(settings.EXPORT_ABNORMAL_FLOW_PARA_FILE, 'w')
+        fid.write( ' '.join([str(i) for i in self.ano_node.ipdests]) )
+        fid.close()
+
+    def _export_ano_flow_para(self):
+        """export para to help to export ano flows"""
+        self._export_ip_addr()
+
+    def run(self, net):
+        '''will add a node for atypical user to the network.
+        The IP address for atypical user is selected from. settings.atypical_ip_file'''
+        self.net = net
+        self._get_ano_node()
+        net.add_node(self.ano_node)
+        self._change_topology()
+
+        self._export_ano_flow_para()
+
+class TargetOneServer(Anomaly):
+    """Only change the behaviour in one server
+    ano_desc should have id **srv_id** of that sever node"""
+    def run(self, net):
+        self.ano_node = net.node_list[self.ano_desc['ano_node_seq']]
+        ano_t = self.ano_desc['T']
+        srv_id = self.ano_desc['srv_id']
+        srv_ip_addr = net.node_list[srv_id].ipdests
+        m_back = copy.deepcopy(self.ano_node.modulator)
+        for m_id, mod in m_back.iteritems(): # For each modulator
+            s_id = mod['generator'] # get id for source generator
+            if self.ano_node.generator[s_id]['ipdst'] not in srv_ip_addr:
+                continue
+            self._infect_modulator(ano_t, m_id, mod)

File core/configure/Behaviour.py

+#!/usr/bin/env python
+"""This file defines the behaviour of """
+import sys
+sys.path.append("..")
+from util import TO_CLS, abstract_method
+from random import randint
+from mod_util import RandDist
+
+class Behaviour(object):
+    def stage(): abstract_method()
+    def behave(): abstract_method()
+
+from random import expovariate as exponential
+class MarkovBehaviour(Behaviour):
+    """Markov behaviour is a kinf of behaviour that can """
+    def __init__(self, interval, P, states):
+        Behaviour.__init__(self)
+        exec TO_CLS('interval', 'P', 'states')
+        sn = len(states)
+        self.cs = randint(0, sn-1) # cs: current state
+        self.run_para = None
+
+    def stage(self):
+        abstract_method()
+
+    def get_new_state(self):
+        # return RandDist(self.P[self.cs])
+        return RandDist(self.P) # FIXME use stationary prob
+
+    def get_interval(self):
+        # return exponential(1.0 / self.interval)
+        return self.interval
+
+    def behave_with_profile(self, start, profile):
+        for dur, num in zip(*profile):
+            end = start + dur
+            for i in xrange(num):
+                self.behave(start, end)
+            start = end
+
+    def behave(self, start, end):
+        t = start
+        while t <= end:
+            self.cs = self.get_new_state()
+            inter = self.get_interval()
+            self.run_para = dict(r_start=t, r_end=t+inter)
+            self.stage()
+            t += inter
+
+try:
+    import numpy as np
+except:
+    print '[Warning] MultiServer Detector requires numpy'
+
+class MVBehaviour(MarkovBehaviour):
+    """
+    Description:
+        - will make choice every other t time.
+        - the generators is selected according to multi-variate distribution
+
+    Required Variables:
+        - states: states for all possible value. it is a list of list,
+            the first dimension is the id of servers, the second dimension is the possible
+            for type of generator for a specific server.
+        - joint_dist: the joint distribution for indicator variable to each server.
+
+    The traffic is generated according to multi-variable distribution
+    if there are m servers, then the joint distribution will be m dimension
+    matrix. For each component, there are n possible values. So we need m*n
+    possible generators
+    """
+    def __init__(self, joint_dist, interval, generator_states):
+        self.joint_dist = joint_dist
+        self.states = generator_states
+        self.interval = interval
+        self.record = []
+
+    @property
+    def dim(self): return self.joint_dist.shape
+
+    @property
+    def srv_num(self): return len(self.dim)
+
+    def get_sample(self):
+        """generate a sample according to joint distribution"""
+        # assert(np.sum(self.joint_dist) == 1 )
+        assert( abs( np.sum(self.joint_dist) - 1) < 1e-3)
+        x = RandDist( self.joint_dist.ravel() )
+        idx = np.unravel_index(x, self.dim)
+        return idx
+
+    def get_new_state(self):
+        ns = self.get_sample()
+        self.record.append(ns)
+        return ns
+
+    def get_interval(self):
+        return self.interval
+        # return exponential(1.0 / self.interval)
+
+    def _sample_freq(self):
+        freq = np.zeros(self.dim)
+        for r in self.record:
+            freq[r] += 1
+        freq /= np.sum(freq)
+        print 'freq, ', freq
+

File core/configure/Edge.py

+from pydot import *
+
+class NEdge(Edge):
+    def __init__(self, src, dst, attr):
+        obj_dict = dict()
+        obj_dict[ 'attributes' ] = attr
+        obj_dict[ 'type' ] = 'edge'
+        obj_dict[ 'parent_graph' ] = None
+        obj_dict[ 'parent_edge_list' ] = None
+        obj_dict[ 'sequence' ] = None
+        if isinstance(src, Node):
+            src = src.get_name()
+        if isinstance(dst, Node):
+            dst = dst.get_name()
+        points = ( quote_if_necessary( src) , quote_if_necessary( dst) )
+        obj_dict['points'] = points
+
+        Edge.__init__(self, src, dst, obj_dict)

File core/configure/Generator.py

+
+import sys
+sys.path.append("..")
+# from util import *
+# from mod_util import *
+from mod_util import Attr
+
+class Generator(object):
+    pass
+
+import copy
+class HarpoonG(Generator):
+    """Harpoon Generator, described by
+       1. flow_size_mean 2. flow_size_var, 3 flow_arrival_rate
+       flow size is normally distributed
+       flow arrival is possion distributed
+       flow duration is determined by the network condition.
+       """
+    def __init__(self, **para):
+        self.para = para
+        self.sync()
+
+    def sync(self):
+        # import pdb;pdb.set_trace()
+        self.gen_desc = dict(
+                ipsrc = self.para['ipsrc'],
+                ipdst = self.para['ipdst'],
+                # flowsize = None,
+                flowsize= 'normal(%f,%f)' %(self.para['flow_size_mean'], self.para['flow_size_var']),
+                flowstart='exponential(%f)' %(self.para['flow_arrival_rate']),
+                sport = 'randomchoice(22,80,443)',
+                dport='randomunifint(1025,65535)',
+                lossrate='randomchoice(0.001)',
+                )
+
+    def __str__(self):
+        self.sync()
+        return str( Attr(name=self.para['TYPE'], **self.gen_desc) )
+
+    def __getitem__(self, name):
+        return self.gen_desc[name]
+
+    def get_new_gen(self, change_para=None):
+        new = copy.deepcopy(self)
+        if change_para:
+            for attr, ratio in change_para.iteritems():
+                new.para[attr.lower()] *= ratio
+            new.sync()
+        return new
+
+class MVGenerator(HarpoonG):
+    def sync(self):
+        self.para['TYPE'] = 'harpoon'
+        self.gen_desc = dict(
+                ipsrc = self.para['ipsrc'],
+                ipdst = self.para['ipdst'],
+                flowsize= 'normal(%f,100)' %(self.para['flow_size']),
+                flowstart='exponential(%f)' %(self.para['flow_arrival_rate']),
+                sport = 'randomchoice(22,80,443)',
+                dport='randomunifint(1025,65535)',
+                lossrate='randomchoice(0.001)',
+                )
+
+gmap = {'harpoon':HarpoonG,
+        'mv':MVGenerator}
+def get_generator(gen_desc):
+    gen_class = gmap[gen_desc['TYPE']]
+    return gen_class(**gen_desc)

File core/configure/MVAnomaly.py

+from MarkovAnomaly import MarkovAnomaly
+
+class MVAnomaly(MarkovAnomaly):
+    @property
+    def joint_dist(self): return self.ano_desc['change']['joint_dist']
+
+    def del_orig_mod_gen(self, m_id, mod):
+        del self.ano_node.modulator[m_id]
+        for row in mod.states:
+            for s_id in row:
+                if s_id is not None: del self.ano_node.generator[s_id]
+
+    def add_ano_seg(self, start, ap, generator_list):
+        # import pdb;pdb.set_trace()
+        self.ano_node.add_modulator(
+                start=str(start),
+                profile=ap,
+                generator_list = generator_list,
+                joint_dist = self.joint_dist,
+                )
+
+    def get_generator_list(self, mod):
+        return [ [ self.ano_node.generator.get(ID, None) for ID in id_row ] for id_row in mod.states ]

File core/configure/MarkovAnomaly.py

+#!/usr/bin/env python
+from Anomaly import Anomaly
+# import numpy as np
+import cPickle as pickle
+
+class MarkovAnomaly(Anomaly):
+    def _infect_modulator(self, ano_t, m_id, mod):
+        mod_start = eval(mod['start'])
+        mod_profile = mod['profile']
+        np1, ap, np2 = self.get_profile_with_ano(mod_start, mod_profile, ano_t)
+
+        generator_list = self.get_generator_list(mod)
+        self.ano_node.add_modulator(
+                start=str(mod_start),
+                profile=np1,
+                generator_list = generator_list,
+                )
+
+        start, end = ano_t
+        # st = mod_start + float(np.sum(np1[0]))
+        st = mod_start + float(sum(np1[0]))
+        assert(st == start)
+        self.add_ano_seg(start, ap, generator_list)
+
+        # st = mod_start + float(np.sum(np1[0])) + float(np.sum(ap[0]))
+        st = mod_start + float(sum(np1[0])) + float(sum(ap[0]))
+        assert(st == end)
+        self.ano_node.add_modulator(
+                start=str(end),
+                profile=np2,
+                generator_list = generator_list,
+                )
+
+        self.del_orig_mod_gen(m_id, mod)
+
+    def del_orig_mod_gen(self, m_id, mod):
+        del self.ano_node.modulator[m_id]
+        for s_id in mod.states:
+            del self.ano_node.generator[s_id]
+
+    def get_generator_list(self, mod):
+        return [ self.ano_node.generator[s] for s in mod.states ]
+
+    def add_ano_seg(self, start, ap, generator_list):
+        self.ano_node.add_modulator(
+                start=str(start),
+                profile=ap,
+                generator_list = generator_list,
+                markov_desc = self.ano_desc['ano_markov_desc'],
+                )
+
+    def _export_ano_flow_para(self):
+        import settings
+        import copy
+        self.ano_flow_para = copy.deepcopy(self.ano_desc)
+        self.ano_flow_para['ano_node_ipdests'] = self.ano_node.ipdests
+        pickle.dump(self.ano_flow_para, open(settings.EXPORT_ABNORMAL_FLOW_PARA_FILE, 'w')) # For export abnormal flows

File core/configure/Modulator.py

+import sys
+sys.path.append("..")
+# from util import *
+# from mod_util import *
+from mod_util import Attr
+class Modulator(object):
+    """ * name
+        * start
+        * profile
+        * generator
+    """
+    def __init__(self, **desc):
+        self.desc = desc
+
+    def __getitem__(self, name):
+        return self.desc[name]
+
+    def __str__(self):
+        return str( Attr(**self.desc) )
+
+    @property
+    def profile(self): return self.desc['profile']
+    @property
+    def start(self): return eval( self.desc['start'] )
+
+from Behaviour import MarkovBehaviour
+class MarkovModulator(Modulator, MarkovBehaviour):
+    """
+        * name
+        * start
+        * profile
+        * generator_states: a list of generator names, representing the states
+        * P: transition probability
+        * interval: mean of interval time.
+    """
+    def __init__(self, interval, P, generator_states, **desc):
+        Modulator.__init__(self, **desc)
+        MarkovBehaviour.__init__(self, interval, P, generator_states)
+        self.mod_list = []
+        # self.generator_states = generator_states
+        # self._gen_modulator_list()
+        self.behave_with_profile(self.start, self.profile)
+
+
+    # def sync(self):
+        # self._gen_modulator_list()
+        # self.behave_with_profile(self.start, self.profile)
+
+    def __str__(self):
+        return ' '.join([str(mod) for mod in self.mod_list])
+
+    def stage(self):
+        """for one markov stage"""
+        r_start = self.run_para['r_start']
+        r_end = self.run_para['r_end']
+        mod = Modulator(
+                # name=self.desc['name'] + '_' + str(self.mmseq),
+                name=self.desc['name'],
+                start=r_start,
+                profile=( (r_end-r_start,), (1,) ) ,
+                generator=self.states[self.cs],
+                )
+        self.mod_list.append(mod)
+
+from Behaviour import MVBehaviour
+class MVModulator(Modulator, MVBehaviour):
+    """
+    Modulator defines the behaviour of generator within a range of time.
+    implement the stage function.
+    joint_dist should be numpy array
+    """
+    def __init__(self, joint_dist, interval, generator_states, **desc):
+        Modulator.__init__(self, **desc)
+        MVBehaviour.__init__(self, joint_dist, interval, generator_states)
+        self.mod_list = []
+        self.behave_with_profile(self.start, self.profile)
+
+    def stage(self):
+        """for one stage"""
+        r_start = self.run_para['r_start']
+        r_end = self.run_para['r_end']
+        for i in xrange(self.srv_num): # for each destination
+            gen = self.states[i][self.cs[i]]
+            if not gen:
+                continue
+            mod = Modulator(
+                    name=self.desc['name'],
+                    start=r_start,
+                    profile=( (r_end-r_start,), (1,) ) ,
+                    generator=gen,
+                    )
+            self.mod_list.append(mod)

File core/configure/Network.py

+from Node import *
+from Edge import *
+from Generator import *
+from mod_util import GetIPAdress, FixQuoteBug
+
+from Address import Ipv4AddressHelper
+
+node_map = {
+        'NNode':NNode,
+        'MarkovNode':MarkovNode,
+        'MVNode':MVNode,
+        }
+
+####################################
+##     Main Class Definition     ###
+####################################
+class Network(Dot):
+    ''' Network Class specifiy the topology of the network.
+    '''
+    def __init__(self):
+        Dot.__init__(self, 'SimConf', graph_type='graph')
+        self.node_list = []
+        self.NODE_NUM = 0
+        self.IPSrcSet, self.AnoSet, _ = GetIPAdress()
+        self.mv = None
+        # self.Node = node_init_handle
+
+        network = '10.0.7.0'
+        mask = '255.255.255.0'
+        base = '0.0.0.4'
+        self.addr_helper = Ipv4AddressHelper(network, mask, base)
+
+    def init(self, net_desc, norm_desc):
+        self.net_desc = net_desc
+        self.Node = node_map[self.net_desc['node_type']]
+        self.norm_desc = norm_desc
+        self._topo(self.net_desc['topo'])
+        self._config_traffic()
+
+    def _config_traffic(self):
+        """config the traffic of network"""
+        nn = len(self.node_list)
+        srv_node_list = [self.node_list[i] for i in xrange(nn) if i in self.net_desc['srv_list'] ]
+        for i in xrange(nn):
+            if i in self.net_desc['srv_list']:
+                continue
+            self.node_list[i].init_traffic(self.norm_desc, srv_node_list)
+
+    def _topo(self, topo):
+        """initialize the topology of the network"""
+        # n, _ = topo.shape
+        n = len(topo)
+        assert(n == len(topo[0]) )
+        self.NodeList = []
+        for i in xrange(n):
+            # FIXME Add start, end to the parameter list
+            # node = self.Node([self.IPSrcSet[i]], i, **self.net_desc['node_para'])
+            node = self.Node([], i, **self.net_desc['node_para'])
+            self.node_list.append(node)
+            self.add_node(node)
+            # if self.mv: mv.MHarpoon(node)
+
+        for i in xrange(n):
+            for j in xrange(n):
+                # if topo[i, j]:
+                if topo[i][j]:
+                    edge = NEdge(self.node_list[i], self.node_list[j], self.net_desc['link_attr'])
+                    self.assign_link_interface_ip(i, j)
+                    self.add_edge(edge)
+
+    def assign_link_interface_ip(self, i, j):
+        node_container = [self.node_list[i], self.node_list[j]]
+        self.addr_helper.Assign(node_container)
+        self.addr_helper.NewNetwork()
+
+    def write(self, fName):
+        '''write the DOT file to *fName*'''
+        for node in self.node_list:
+            node.sync()
+        Dot.write(self, fName)
+        FixQuoteBug(fName, float(self.net_desc['link_attr']['delay']))
+
+    def InjectAnomaly(self, A):
+        '''Inject Anomaly into the network. A is the one type Anomaly'''
+        A.run(self)

File core/configure/Node.py

+# from pydot import *
+from pydot import Node
+# NODE_NUM = 0
+
+import sys
+sys.path.append("..")
+# from util import *
+from util import types, Load
+from mod_util import choose_ip_addr
+# from mod_util import *
+
+from Generator import get_generator
+from Modulator import Modulator, MarkovModulator, MVModulator
+
+class NNode(Node):
+    # node_seq = 0
+    def __init__(self, ipdests, node_seq, **argv):
+        assert( type(ipdests)== types.TupleType or type(ipdests)== types.ListType )
+        self.node_seq = node_seq
+        # default attribute
+        attr = dict(
+                autoack = '"False"',
+                ipdests = '"' + ' '.join(ipdests) + '"',
+                mod_num = '0',
+                traffic = ''
+                )
+        obj_dict = {'attributes': attr,
+                'name': 'n'+str( self.node_seq ),
+                'parent_node_list': None,
+                'port': None,
+                'sequence': 1,
+                'type': 'node'}
+
+        Node.__init__(self, name = 'n'+str(self.node_seq), obj_dict = obj_dict)
+
+        self.ipdests = ipdests
+        self.mod_num = 0
+        self.modulator = dict()
+        self.generator = dict()
+
+    def __str__(self):
+        return str(self.obj_dict)
+
+    @property
+    def m_id(self):
+        """modulator identifier"""
+        return 'm' + str(self.node_seq) + '_' + str(self.mod_num)
+
+    @property
+    def s_id(self):
+        """generator source identifier"""
+        return 's' + str(self.node_seq) + '_' + str(self.mod_num)
+
+    def add_interface_addr(self, addr):
+        """addr should be the CIDR format. e.g. 10.0.7.0/24
+        """
+        self.ipdests.append(addr)
+
+    def _get_generator_list(self, dst_node, para_list):
+        """returns the default generator list"""
+        res = []
+        for state in para_list:
+            s = Load(state)
+            s['ipsrc'] = choose_ip_addr(self.ipdests)
+            s['ipdst'] = choose_ip_addr(dst_node.ipdests)
+            gen = get_generator(s)
+            res.append(gen)
+        return res
+
+    def init_traffic(self, norm_desc, dst_nodes):
+        self.norm_desc = norm_desc
+        para_list = norm_desc['node_para']['states']
+        for node in dst_nodes:
+            self.add_modulator(norm_desc['start'],
+                    norm_desc['profile'],
+                    self._get_generator_list(node, para_list))
+
+
+    def add_modulator(self, start, profile, generator):
+        """generator is a Generator Object"""
+        assert(len(generator) == 1)
+        self.mod_num += 1
+        self.generator[self.s_id] = generator[0]
+
+        m = Modulator(name='modulator',
+                start=str(start),
+                generator=self.s_id,
+                profile=profile)
+        self.modulator[self.m_id] = m
+
+    def sync(self):
+        """sync to the dot property"""
+        attr = self.obj_dict['attributes']
+        # update ipdests
+        attr['ipdests'] = '"' + ' '.join(self.ipdests) + '"'
+        # update traffic
+        attr['traffic'] = '"' + ' '.join(self.modulator.keys()) + '"'
+        # update modultaor
+        for k, v in self.modulator.iteritems():
+            attr[k] = str(v)
+        # update generator
+        for k, v in self.generator.iteritems():
+            attr[k] = str(v)
+
+
+    def clear_modulator(self):
+        self.traffic = ''
+        self.obj_dict['attributes']['mod_num'] = '0'
+
+import copy
+class MarkovNode(NNode):
+    def __init__(self, ipdests, node_seq, **markov_desc):
+        self.markov_desc = markov_desc
+        NNode.__init__(self, ipdests, node_seq)
+        self.gen_num = 0
+
+    def _gen_generator(self, ipdst):
+        self.gen_desc = copy.deepcopy( self.states[self.cs] )
+        self.gen_desc['ipsrc'] = choose_ip_addr(self.ipdests)
+        self.gen_desc['ipdst'] = self.ipdst
+        return get_generator(self.gen_desc)
+
+    @property
+    def s_id(self):
+        """generator source identifier"""
+        return 's' + str(self.node_seq) + '_' + str(self.mod_num) + '_' + str(self.gen_num)
+
+    def add_modulator(self, start, profile, generator_list, markov_desc=None):
+        self.mod_num += 1
+        s_id_list = []
+        for gen in generator_list:
+            self.gen_num += 1
+            # print 'self.s_id, ', self.s_id
+            self.generator[self.s_id] = gen
+            s_id_list.append(self.s_id)
+
+        if not markov_desc: markov_desc = self.markov_desc
+        # import pdb;pdb.set_trace()
+        m = self.get_modulator(start, profile, s_id_list, markov_desc)
+
+        self.modulator[self.m_id] = m
+
+    def get_modulator(self, start, profile, s_id_list, markov_desc):
+        # print 'markov_desc', markov_desc
+        m = MarkovModulator(
+                name='modulator',
+                start = str(start),
+                generator_states = s_id_list,
+                profile=profile,
+                **markov_desc
+                )
+        return m
+
+    def sync(self):
+        """sync to the dot property"""
+        attr = self.obj_dict['attributes']
+        # update ipdests
+        attr['ipdests'] = '"' + ' '.join(self.ipdests) + '"'
+        # update traffic
+        # update modultaor
+        key_list = []
+        mod_list = []
+        for k, v in self.modulator.iteritems():
+            j = 0
+            for mod in v.mod_list:
+                j += 1
+                key_list.append(k+'_'+str(j))
+                mod_list.append(mod)
+
+
+        # print 'self.modulator father, ', self.modulator
+        # print '*' * 100
+        attr['traffic'] = '"' + ' '.join(key_list) + '"'
+        for k, v in zip(key_list, mod_list):
+            attr[k] = str(v)
+
+        # update generator
+        for k, v in self.generator.iteritems():
+            if v: attr[k] = str(v)
+
+
+class MVNode(MarkovNode):
+    """Node for Multi Variable Node"""
+    def __init__(self, ipdests, node_seq):
+        MarkovNode.__init__(self, ipdests, node_seq)
+
+    @property
+    def joint_dist(self): return self.norm_desc['joint_dist']
+
+    @property
+    def start(self): return self.norm_desc['start']
+
+    @property
+    def profile(self): return self.norm_desc['profile']
+
+    @property
+    def para_list(self): return self.norm_desc['node_para']['states']
+
+    @property
+    def interval(self): return self.norm_desc['interval']
+
+    def init_traffic(self, norm_desc, dst_nodes):
+        # print 'MVNode init_traffic'
+        self.norm_desc = norm_desc
+        # FIXME why add None cause the problem?
+        # self.generator_list = [ [None] + self._get_generator_list(node, self.para_list) for node in dst_nodes ]
+        self.generator_list = [ self._get_generator_list(node, self.para_list) for node in dst_nodes ]
+        self.add_modulator(self.start,
+                self.profile,
+                self.generator_list,
+                self.joint_dist,
+                )
+
+    def add_modulator(self, start, profile, generator_list, joint_dist=None):
+        if joint_dist is None : joint_dist = self.joint_dist
+        self.mod_num += 1
+        s_id_list = self.gen_to_id(generator_list)
+        m = self.get_modulator(start, profile, s_id_list, joint_dist) #FIX  A BUG here at [2012-04-25 12:02:11]
+        self.modulator[self.m_id] = m
+        # print self.modulator
+
+    def get_modulator(self, start, profile, s_id_list, joint_dist):
+        m = MVModulator(
+                name='modulator',
+                start = str(start),
+                interval = self.interval,
+                generator_states = s_id_list,
+                profile = profile,
+                joint_dist = joint_dist,
+                )
+        return m
+
+    def gen_to_id(self, generator_list):
+        s_id_list = []
+        for gl in generator_list:
+            row = []
+            for g in gl:
+                self.gen_num += 1
+                self.generator[self.s_id] = g
+                if not g:
+                    row.append(None)
+                else:
+                    row.append(self.s_id)
+            s_id_list.append(row)
+        return s_id_list

File core/configure/ReadMe.txt

+/* Copyright (C) 
+* 2011 - Jing Conan Wang, hbhzwj@gmail.com
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+* 
+*/
+/**
+* @file ReadMe.txt
+* @brief ReadMe File for Automatic Config File Generator For fs simualtor
+* @author Jing Conan Wang, hbhzwj@gmail.com
+* @version 0.0
+* @date 2011-10-24
+*/
+
+To Run the Program Just Need to type
+>> python GenDotConf.py
+in the command window
+the output.dot in current directory will be the configuration file that
+automatically generated.
+
+You may need to install pydot before run this program. there is one copy in
+tools folder. 
+just go to pydot folder and type
+>> python setup.py install
+
+If you want to change the parameter, just revise the main() in GenDotConf.py
+graphSize --> the size of the graph
+link_attr --> the attributes for the link in the graph. 
+
+The node ip will be automatically selected from validip.txt
+
+

File core/configure/__init__.py

+"""
+This module configures the normal traffic.
+"""
+from API import gen_anomaly_dot

File core/configure/back_Node.py

+from pydot import *
+from random import sample
+import re
+NODE_NUM = 0
+
+import sys
+sys.path.append("..")
+import settings
+from util import *
+from mod_util import *
+
+from Generator import *
+from Modulator import *
+
+class NNode(Node):
+    # node_seq = 0
+    def __init__(self, ipdests, **argv):
+        assert( type(ipdests)== types.TupleType or type(ipdests)== types.ListType )
+        global NODE_NUM
+        self.node_seq = NODE_NUM
+        NODE_NUM += 1
+        # default attribute
+        attr = dict(
+                autoack = '"False"',
+                ipdests = '"' + ' '.join(ipdests) + '"',
+                mod_num = '0',
+                traffic = ''
+                )
+        obj_dict = {'attributes': attr,
+                'name': 'n'+str( self.node_seq ),
+                'parent_node_list': None,
+                'port': None,
+                'sequence': 1,
+                'type': 'node'}
+
+        Node.__init__(self, name = 'n'+str(self.node_seq), obj_dict = obj_dict)
+
+        self.ipdests = ipdests
+        self.mod_num = 0
+        self.modulator = dict()
+        self.generator = dict()
+
+    def __str__(self):
+        return str(self.obj_dict)
+
+    @property
+    def m_id(self):
+        """modulator identifier"""
+        return 'm' + str(self.node_seq) + '_' + str(self.mod_num)
+
+    @property
+    def s_id(self):
+        """generator source identifier"""
+        return 's' + str(self.node_seq) + '_' + str(self.mod_num)
+
+    def add_modulator(self, start, profile, generator):
+        """generator is a Generator Object"""
+        assert(len(generator) == 1)
+        self.mod_num += 1
+        self.generator[self.s_id] = generator[0]
+
+        m = Modulator(name='modulator',
+                start=str(start),
+                generator=self.s_id,
+                profile=profile)
+        self.modulator[self.m_id] = m
+
+    def sync(self):
+        """sync to the dot property"""
+        attr = self.obj_dict['attributes']
+        # update ipdests
+        attr['ipdests'] = '"' + ' '.join(self.ipdests) + '"'
+        # update traffic
+        attr['traffic'] = '"' + ' '.join(self.modulator.keys()) + '"'
+        # update modultaor
+        for k, v in self.modulator.iteritems():
+            attr[k] = str(v)
+        # update generator
+        for k, v in self.generator.iteritems():
+            attr[k] = str(v)
+
+
+    def clear_modulator():
+        self.traffic = ''
+        self.obj_dict['attributes']['mod_num'] = '0'
+
+import copy
+class MarkovNode(NNode):
+    def __init__(self, ipdests, **markov_desc):
+        self.markov_desc = markov_desc
+        NNode.__init__(self, ipdests)
+        self.gen_num = 0
+
+    def _gen_generator(self, ipdst):
+        self.gen_desc = copy.deepcopy( self.states[self.cs] )
+        self.gen_desc['ipsrc'] = choose_ip_addr(self.ipdests)
+        self.gen_desc['ipdst'] = self.ipdst
+        return get_generator(self.gen_desc)
+
+    @property
+    def s_id(self):
+        """generator source identifier"""
+        return 's' + str(self.node_seq) + '_' + str(self.mod_num) + '_' + str(self.gen_num)
+
+    def add_modulator(self, start, profile, generator_list, markov_desc=None):
+        self.mod_num += 1
+        s_id_list = []
+        for gen in generator_list:
+            self.gen_num += 1
+            self.generator[self.s_id] = gen
+            s_id_list.append(self.s_id)
+
+        if not markov_desc: markov_desc = self.markov_desc
+        m = MarkovModulator(
+                name='modulator',
+                start = str(start),
+                generator_states = s_id_list,
+                profile=profile,
+                **markov_desc
+                )
+
+        self.modulator[self.m_id] = m
+
+    def sync(self):
+        """sync to the dot property"""
+        attr = self.obj_dict['attributes']
+        # update ipdests
+        attr['ipdests'] = '"' + ' '.join(self.ipdests) + '"'
+        # update traffic
+        # update modultaor
+        key_list = []
+        mod_list = []
+        for k, v in self.modulator.iteritems():
+            j = 0
+            for mod in v.mod_list:
+                j += 1
+                key_list.append(k+'_'+str(j))
+                mod_list.append(mod)
+
+        # print '*' * 100
+        attr['traffic'] = '"' + ' '.join(key_list) + '"'
+        for k, v in zip(key_list, mod_list):
+            attr[k] = str(v)
+
+        # update generator
+        for k, v in self.generator.iteritems():
+            attr[k] = str(v)
+
+
+
+

File core/configure/ips.txt

+123.153.62.58,149.94.219.1,120.116.141.121,100.217.72.152,136.212.18.84,134.174.73.167,191.167.189.33,163.163.37.40,143.17.88.41,155.110.241.104,121.172.179.243,83.32.218.107,156.163.210.254,131.71.208.207,168.225.206.47,153.198.20.252,149.179.150.22,119.41.98.74,150.131.60.133,117.231.197.15,134.238.243.192,126.89.155.167,136.80.179.149,188.7.222.0,124.80.5.103,117.188.184.127,161.173.77.125,110.194.35.152,127.25.168.46,96.105.48.148,136.51.104.212,141.46.163.53,142.147.127.201,127.229.173.34,143.169.49.133,115.115.155.17,83.200.189.107,113.187.197.101,148.136.206.209,166.128.6.175,151.139.19.81,113.188.6.251,136.236.235.139,100.34.87.144,143.96.95.201,138.146.204.79,88.250.106.92,120.9.13.1,169.230.218.73,76.188.35.1,111.51.247.11,87.193.181.210,101.23.164.236,85.169.169.50,137.117.1.11,104.8.166.182,130.132.25.54,144.34.148.80,119.197.31.249,144.17.127.75,122.149.12.189,120.160.107.109,136.194.2.46,153.20.179.113,119.58.57.160,170.43.98.186,96.37.174.243,73.155.184.194,133.198.41.126,68.148.170.88,53.210.238.28,123.217.105.98,130.236.222.174,117.69.251.233,118.197.226.243,139.162.83.198,115.198.145.96,131.8.218.226,117.68.205.11,115.152.120.188,172.217.15.103,176.40.168.227,132.158.55.204,148.98.172.231,160.28.81.171,87.106.120.9,66.10.138.158,158.88.255.209,129.38.40.69,91.22.46.54,145.173.17.198,146.186.204.180,176.108.246.144,122.113.0.208,122.166.164.47,98.216.222.56,61.208.24.40,109.212.172.105,157.33.29.218,100.84.167.21,133.241.220.60,90.13.162.242,165.27.164.217,160.185.57.183,105.239.89.12,100.243.182.69,152.191.149.86,155.64.212.138,151.95.135.137,128.174.182.71,135.255.55.157,139.250.149.151,116.253.89.109,178.10.255.255,104.24.105.231,109.24.252.155,128.192.119.80,130.22.58.54,100.68.109.141,95.72.105.213,109.53.196.99,118.142.241.141,127.103.110.242,94.183.219.117,109.231.212.163,115.215.222.245,100.177.221.89,153.117.227.93,141.47.102.42,119.13.113.203,168.151.32.231,157.172.253.238,124.117.156.32,154.73.214.130,122.96.243.97,115.205.114.15,106.62.250.235,162.55.174.86,167.144.78.80,155.119.35.59,124.122.78.170,162.140.17.190,125.78.181.198,133.104.5.3,127.41.59.88,116.211.64.156,135.35.18.71,134.162.105.225,101.252.52.199,131.232.167.26,195.157.107.111,140.180.212.54,165.139.11.231,135.101.165.45,118.38.182.248,122.181.242.66,91.155.121.46,108.28.65.71,149.96.88.106,142.157.145.187,123.124.239.46,198.245.168.177,173.10.181.253,127.74.181.45,124.114.100.81,145.39.138.185,114.98.185.26,155.209.152.164,134.37.137.91,140.179.105.192,97.117.62.162,131.246.223.96,136.111.88.41,93.17.152.126,96.252.160.221,99.107.212.2,146.193.48.6,146.86.26.149,82.72.165.113,131.36.159.30,86.113.198.115,128.138.207.248,138.51.179.9,77.150.229.112,162.9.134.167,126.65.45.198,97.34.253.184,190.90.31.39,177.20.132.216,137.211.125.103,122.249.113.26,153.122.179.23,150.170.209.107,65.240.164.134,104.146.87.48,91.13.27.222,114.177.67.63,156.88.22.253,89.139.8.92,116.162.228.154,145.61.78.178,51.3.21.76,166.18.123.183,74.70.83.89,125.8.9.160,121.235.168.10,131.129.139.155,145.130.182.204,88.58.134.177,159.110.210.158,127.27.20.34,132.132.80.32,97.143.123.21,126.188.73.106,136.224.92.16,130.192.225.14,140.36.87.159,96.159.223.96,70.71.91.70,125.155.47.204,99.107.194.44,125.41.178.13,137.68.185.213,90.249.198.170,82.39.139.35,103.75.8.248,105.162.72.180,122.57.31.173,120.179.69.192,154.10.130.34,124.50.192.210,146.223.99.240,121.43.82.89,94.124.15.64,146.19.147.247,109.43.7.45,87.97.56.77,140.49.233.128,143.61.87.41,139.182.13.140,108.214.5.41,128.131.153.185,107.212.5.169,130.232.194.178,116.78.180.107,145.148.55.4,122.242.42.80,115.167.11.16,133.40.107.220,94.251.124.158,122.99.119.201,97.231.15.227,114.87.11.122,155.183.222.131,133.235.203.204,116.148.123.110,138.3.178.48,135.98.100.233,117.150.255.206,95.178.198.252,173.240.162.86,129.71.230.232,170.39.225.174,126.203.72.82,159.165.171.216,143.57.67.250,127.207.123.32,87.6.25.201,109.24.237.135,119.5.152.179,153.39.210.177,151.88.242.36,135.8.151.224,126.12.15.63,141.42.202.182,114.19.10.84,154.83.171.71,109.129.207.207,90.50.73.187,124.186.177.37,89.190.29.54,135.241.73.24,160.23.7.130,92.24.12.131,84.229.245.12,121.190.201.190,125.209.235.200,157.210.242.220,136.49.195.177,138.238.213.248,108.28.112.156,127.148.91.83,155.34.185.13,145.218.125.115,121.81.175.12,119.208.21.209,189.129.138.156,137.193.198.41,112.16.231.217,116.235.194.131,132.80.210.125,162.232.184.94,120.227.214.218,132.38.114.102,171.123.174.155,155.160.157.197,115.228.222.249,104.64.38.176,159.191.189.115,127.88.4.177,125.31.240.135,92.211.61.243,60.12.251.14,105.114.254.159,164.86.47.204,115.91.245.83,106.31.98.184,118.246.142.236,145.237.112.240,108.29.246.240,66.224.239.87,109.104.245.226,156.125.66.230,162.38.31.140,157.150.35.73,139.248.175.104,132.151.109.126,100.178.131.113,146.47.203.237,108.101.246.102,140.30.173.151,92.244.186.188,124.245.60.101,160.38.248.171,120.22.76.192,138.108.205.226,126.68.42.1,117.57.59.200,134.134.203.246,115.35.255.75,142.166.29.199,110.17.6.121,107.95.112.172,116.248.159.144,152.249.186.149,140.123.187.106,151.91.184.28,183.159.15.67,118.203.209.37,113.250.17.80,149.221.25.75,123.76.182.239,143.29.38.129,146.220.101.76,149.47.126.129,124.211.61.53,178.12.203.206,124.113.115.116,89.112.44.184,111.220.113.60,148.60.70.119,163.228.158.238,118.222.142.46,172.60.48.70,131.162.77.228,114.121.222.12,154.36.110.167,119.7.253.125,97.3.196.62,53.164.216.13,146.231.124.188,141.230.22.240,102.187.209.62,97.78.75.190,70.252.76.151,106.148.153.32,113.60.54.33,151.106.98.223,123.230.170.44,181.149.185.64,110.204.51.7,99.120.95.44,121.100.171.202,132.170.9.125,132.48.178.69,132.68.222.42,139.2.60.108,142.207.164.110,119.130.137.232,100.124.210.138,130.106.60.112,157.52.201.8,183.118.85.159,124.80.223.32,93.35.206.56,86.168.57.152,109.237.230.94,94.227.201.142,119.101.204.235,93.1.113.176,138.199.91.78,169.200.59.137,158.234.173.114,131.203.203.162,137.201.60.193,122.13.242.29,99.133.72.156,95.181.131.188,110.168.87.81,133.250.90.97,83.135.10.196,118.10.16.30,132.243.201.84,138.126.222.199,143.185.79.144,182.243.50.203,113.16.113.73,142.58.26.93,86.190.241.96,152.6.229.124,114.218.159.53,147.189.200.213,198.115.129.171,106.197.189.46,119.86.21.99,173.27.156.123,164.141.30.233,139.66.15.162,117.76.96.255,107.218.120.84,101.246.192.23,106.244.225.71,135.46.38.165,135.83.57.187,170.157.168.221,129.62.188.61,141.147.106.23,110.70.36.140,132.35.192.33,96.41.82.35,146.117.83.180,90.62.45.174,131.53.207.65,154.106.7.139,138.14.254.131,143.42.67.2,115.152.112.54,59.17.184.146,115.168.222.89,138.32.191.27,88.157.201.176,107.4.109.105,170.63.6.245,125.49.63.184,129.212.49.141,89.125.43.68,126.203.187.113,152.78.73.132,82.196.91.191,117.219.22.149,119.247.17.154,137.206.30.75,162.122.121.44,171.224.206.157,141.93.185.216,167.155.135.193,112.68.229.185,121.116.88.210,99.24.217.249,185.63.172.47,80.52.148.78,139.237.46.47,118.54.7.207,139.129.103.99,87.131.10.53,82.72.138.82,135.196.67.187,178.118.97.97,140.111.28.154,144.57.2.92,109.83.243.84,136.139.51.39,112.34.135.187,110.154.112.217,104.210.153.105,119.22.172.230,150.12.68.151,185.17.39.17,135.8.207.46,123.240.187.253,91.169.239.225,148.165.204.149,143.43.115.124,105.140.58.4,149.193.224.168,162.6.118.20,115.91.152.151,127.107.197.196,166.73.22.193,121.51.10.127,142.138.43.125,117.196.169.42,127.242.107.173,76.4.80.138,101.103.78.91,126.182.75.28,109.46.58.209,79.122.60.136,143.152.206.80,115.185.98.238,147.58.147.51,102.231.56.197,70.185.50.172,166.173.98.4,117.131.145.188,126.106.105.113,110.203.39.210,118.168.127.245,163.39.203.43,156.18.92.129,109.172.235.16,140.34.131.64,117.253.32.236,120.233.156.20,115.146.240.158,114.195.150.119,172.159.75.141,123.238.175.163,147.171.130.216,133.70.140.198,144.84.220.136,130.157.139.110,117.231.141.62,125.90.98.211,182.0.210.253,132.63.129.145,111.116.34.100,120.6.255.104,173.96.27.194,97.95.229.57,124.26.113.13,107.234.48.145,86.224.129.94,144.194.124.203,144.16.144.16,147.111.113.217,149.76.126.209,115.133.248.171,136.216.120.181,90.242.195.76,72.154.175.199,123.148.108.200,166.63.206.206,90.195.234.171,115.183.130.237,170.25.65.176,182.109.242.135,167.41.192.210,145.82.245.212,116.254.85.15,143.160.224.177,112.184.59.198,156.125.150.176,133.63.20.251,104.70.124.104,130.214.198.139,150.220.185.76,168.183.172.181,91.141.100.236,108.202.208.151,136.140.171.164,148.151.136.101,135.1.200.110,118.116.88.117,221.153.194.177,83.92.229.164,172.43.135.123,123.246.112.53,96.116.182.17,117.187.84.96,155.143.185.14,150.171.229.230,78.67.57.107,148.209.196.251,138.245.203.113,154.240.157.109,171.30.68.162,65.123.71.68,161.18.48.230,109.150.174.44,108.175.68.73,105.126.140.51,133.149.102.163,118.255.167.81,137.110.166.22,108.13.7.48,170.228.201.136,132.102.59.206,99.53.215.70,133.86.132.252,125.8.99.83,155.151.47.78,110.132.167.7,151.179.210.100,140.216.74.234,173.181.1.95,126.72.179.60,163.0.200.124,122.134.40.102,150.250.142.248,96.15.168.167,116.37.193.140,129.17.40.142,143.141.233.215,106.200.161.69,116.62.255.184,97.204.1.47,196.229.39.194,108.113.237.34,122.195.196.180,83.145.153.36,100.112.55.211,129.47.218.131,106.180.198.122,136.58.184.190,155.253.150.160,117.160.75.154,157.86.206.148,157.130.2.200,173.66.236.144,143.164.147.89,129.46.68.188,178.250.218.38,146.98.87.182,125.237.132.146,117.15.19.52,122.108.132.235,121.134.135.156,107.203.145.59,127.45.93.143,143.72.198.141,125.93.78.37,101.136.64.60,112.95.152.56,140.241.5.159,147.103.105.39,147.111.205.248,107.70.201.249,115.84.226.119,95.233.151.232,118.12.175.46,101.101.27.206,98.17.199.4,146.205.250.179,77.27.12.217,121.19.197.112,144.45.20.232,127.204.20.165,133.183.34.165,136.164.143.235,205.71.218.88,112.69.100.47,143.47.69.166,98.2.134.73,153.123.80.125,146.202.17.228,153.123.28.146,117.189.244.51,117.19.188.60,150.191.244.105,140.240.104.172,167.216.252.118,149.112.116.106,195.188.82.136,166.13.209.139,93.149.103.136,89.198.63.150,115.197.236.184,95.27.185.84,120.201.15.98,157.141.197.107,159.114.38.41,111.30.63.60,162.51.70.137,143.26.185.111,124.120.225.33,148.202.166.81,163.71.252.156,119.241.163.98,127.100.30.237,132.122.90.167,118.159.184.157,140.73.241.44,140.185.105.232,160.144.88.96,130.68.109.176,108.114.243.7,125.221.175.37,125.104.168.195,116.176.100.58,194.84.22.11,118.243.212.26,129.139.142.237,111.67.212.247,127.204.64.241,118.137.106.91,129.232.15.90,134.154.227.235,120.120.100.244,135.111.95.208,196.227.242.136,158.223.146.163,148.40.215.32,104.23.145.196,145.141.20.14,156.236.86.195,69.228.46.225,134.229.100.242,195.110.164.230,103.35.165.64,99.236.99.27,162.120.180.106,88.164.155.144,116.42.168.139,137.53.170.48,119.59.176.201,125.82.207.254,130.133.175.124,114.250.195.214,127.146.121.153,99.148.208.233,75.44.79.143,155.206.31.151,77.245.95.105,114.116.239.51,169.118.171.54,70.39.208.125,131.149.226.43,153.118.137.231,173.223.71.70,126.8.236.171,121.209.220.109,75.220.128.28,134.212.100.171,107.159.112.119,108.110.231.135,136.80.137.26,123.237.220.89,112.91.219.11,96.162.154.186,130.156.23.74,105.153.106.17,107.243.227.84,137.233.61.206,160.230.147.222,118.159.245.98,132.27.65.4,115.192.168.122,128.80.45.108,102.140.211.21,104.254.53.221,118.5.108.209,163.213.39.211,108.67.165.20,115.251.99.237,164.20.200.75,101.182.251.116,143.9.69.172,106.250.243.237,126.122.45.195,133.148.120.39,144.163.41.141,123.90.6.205,110.231.213.197,122.94.226.153,158.45.141.8,176.250.101.235,136.84.232.176,156.169.203.130,106.195.39.255,135.89.66.131,157.100.139.20,130.52.32.224,118.45.96.101,96.165.76.24,172.194.20.9,133.108.104.33,147.255.253.50,170.200.252.203,123.207.162.13,107.12.143.66,126.12.108.17,85.62.149.247,103.25.75.144,131.243.10.19,123.105.224.252,171.109.112.126,147.190.198.163,132.72.82.210,139.43.42.135,136.30.206.154,134.175.212.97,127.12.154.183,104.254.45.101,147.225.217.3,134.59.142.209,99.32.234.171,109.138.178.14,120.136.40.88,104.146.128.5,133.98.99.148,130.71.252.197,101.117.85.150,175.49.45.164,76.192.94.50,116.17.32.157,149.91.142.246,170.225.111.251,101.28.141.58,112.99.216.116,173.194.58.223,136.243.82.232,103.163.80.119,135.79.234.20,87.129.213.136,87.226.206.233,143.1.183.208,80.249.88.61,118.63.52.122,158.187.2.192,104.96.158.20,187.55.219.74,157.192.122.176,86.105.198.191,153.56.43.242,90.29.64.72,99.0.225.169,177.42.37.131,153.238.132.163,179.253.64.171,160.21.228.213,134.248.135.2,167.105.148.203,84.114.85.125,141.58.110.235,116.219.230.30,129.133.22.141,156.168.158.184,169.12.79.117,115.110.48.49,103.198.102.200,122.136.237.88,146.171.57.214,124.70.157.155,125.160.182.125,146.206.106.177,110.130.159.217,151.25.0.81,145.143.224.185,121.200.8.80,173.240.186.234,81.5.70.181,165.108.156.30,127.69.109.99,95.131.205.255,135.210.88.161,97.199.128.152,189.95.237.24,144.12.120.130,79.98.108.233,108.191.21.41,127.198.230.26,116.2.139.32,141.31.136.224,78.49.255.162,154.45.244.123,86.222.223.226,99.211.139.29,108.153.52.252,193.51.61.160,116.212.41.22,162.112.195.204,102.20.97.57,125.99.189.245,168.73.203.210,114.120.126.155,148.43.71.38,148.246.8.111,140.203.192.70,103.47.105.63,119.180.77.9,143.111.136.62,118.107.99.28,117.135.239.176,177.227.120.62,146.125.2.187,136.202.194.26,104.26.50.243,142.11.244.228,84.245.18.117,147.189.189.133,144.165.120.138,132.236.225.24,167.249.156.128,107.179.25.100,174.132.173.158,127.89.222.9,114.226.79.210,169.235.80.219,79.248.167.228,98.71.243.109,126.54.53.59,161.189.245.172,141.216.178.233,139.246.48.92,116.254.73.98,46.223.87.90,86.160.244.253,129.229.153.144,128.10.148.73,157.35.57.170,141.132.227.47,148.218.234.211,138.100.208.94,118.237.205.151,139.212.5.181,144.49.114.142,117.155.130.245,135.92.88.186,150.201.57.4,120.46.119.82,106.234.158.247,178.128.101.64,107.124.82.104,204.87.238.1,131.157.199.146,107.41.84.37,112.48.86.152,105.190.181.69,136.174.139.53,119.254.48.2,117.165.131.177,124.43.10.176,146.250.35.145,151.200.55.197,108.108.77.30,88.16.101.139,97.205.152.105,102.108.126.227,110.128.151.88,95.76.79.17,111.84.133.213,133.250.156.151,143.225.1.250,129.73.193.133,143.213.11.212,105.113.152.187,112.116.67.125,118.60.116.138,107.82.159.252,118.212.122.63,123.239.43.205,98.234.148.2,174.224.157.129,162.57.218.45,163.8.58.202,151.18.23.39,107.81.115.125,138.117.248.30,131.9.102.234,140.194.72.73,169.52.155.105,112.243.104.131,155.127.112.162,142.128.192.200,141.5.71.131,124.36.135.255,94.147.22.31,117.16.74.218,104.252.110.173,118.204.0.133,173.169.74.191,88.1.129.182,109.231.216.65,152.79.15.175,96.69.217.168,158.94.86.95,145.95.178.192,154.217.183.67,170.6.109.43,151.27.35.62,80.47.62.88,130.0.183.221,149.181.81.134,53.178.246.97,109.241.82.214,124.142.196.168,126.145.61.234,160.59.61.198,116.139.51.231,116.116.79.205,118.12.75.217,120.185.203.98,79.90.245.104,148.155.218.44,128.93.51.169,134.212.140.7,127.78.98.128,111.146.144.178,131.9.128.234,177.250.31.240,139.48.23.93,127.153.16.210,165.186.196.140,147.202.57.98,122.22.96.166,114.88.162.57,111.58.13.204,113.179.13.245,82.241.197.35,117.47.136.64,104.23.184.36,226.131.121.235,88.168.0.153,122.83.252.16,110.2.197.185,124.26.251.189,135.111.140.115,160.150.115.192,165.90.198.22,108.219.225.244,131.121.138.89,113.213.221.223,107.35.168.189,160.202.36.51,163.62.59.124,123.247.29.171,128.59.2.23,109.83.119.142,140.150.63.20,102.105.186.106,84.81.180.106,155.251.158.44,139.12.58.129,129.82.118.89,151.10.184.61,124.170.243.179,100.150.38.50,160.180.192.104,71.179.254.117,131.65.63.0,186.70.179.46,92.186.187.113,128.42.149.155,111.254.161.30,170.224.193.100,126.131.2.135,139.232.96.30,118.80.123.241,122.107.43.11,180.63.77.148,150.40.243.38,172.88.178.116,126.189.4.212,130.131.99.251,151.88.35.46,141.34.66.51,109.126.59.134,105.31.94.21,125.227.29.196,137.145.202.244,135.179.62.52,136.189.6.195,174.136.6.193,170.35.180.68,160.50.127.78,125.241.80.200,149.124.35.250,80.144.156.231,140.220.169.252,101.104.95.31,95.54.90.145,113.128.254.100,174.34.88.179,168.101.238.172,139.1.3.175,179.52.173.122,144.225.135.18,111.104.251.147,129.167.201.142,126.58.11.80,125.79.151.238,161.254.69.127,132.215.102.137,84.163.171.189,176.204.50.141,142.169.66.57,167.80.148.15,138.141.245.113,134.29.55.217,172.166.25.174,86.230.117.252,109.76.146.178,140.105.105.136,86.140.252.43,137.125.20.218,142.173.227.159,122.192.247.125,119.151.4.170,101.233.35.113,114.138.9.238,142.45.190.61,137.194.55.236,100.222.67.52,138.146.211.157,116.115.148.130,95.100.207.132,94.135.8.99,102.121.186.77,141.3.4.180,89.177.105.65,101.215.118.40,124.69.109.29,68.217.232.117,109.247.113.248,179.152.22.31,132.199.50.245,141.113.209.72,164.59.122.99,52.103.190.17,98.196.209.2,75.174.142.131,170.125.117.14,108.6.237.129,126.156.135.110,121.168.172.85,112.219.177.195,126.26.55.13,151.78.179.127,122.173.62.195,123.54.113.79,92.203.245.25,151.126.56.149,196.54.243.35,110.27.207.122,143.148.228.187,184.27.225.226,164.169.205.84,140.141.211.184,167.104.244.61,79.184.53.6,130.43.54.198,172.56.96.219,104.225.48.246,97.115.141.117,105.124.24.115,105.56.45.33,134.122.153.112,116.47.151.29,136.62.160.118,115.254.36.74,143.206.191.168,114.231.201.19,137.6.218.156,140.75.163.14,93.187.237.181,147.154.11.112,135.123.57.126,158.91.65.40,155.18.201.9,175.105.195.145,143.44.206.10,158.161.251.214,112.217.56.135,161.135.239.248,169.225.56.110,112.92.85.62,119.202.53.70,175.242.244.93,135.93.52.206,68.44.212.204,189.197.245.23,112.7.179.61,175.183.220.217,119.246.34.81,142.114.207.26,173.149.198.115,126.162.171.199,68.15.4.143,127.19.19.21,131.81.143.254,134.36.10.11,134.69.181.84,134.132.126.161,124.3.4.36,110.233.158.235,88.196.105.246,164.23.152.249,106.227.9.89,94.83.134.56,149.124.177.89,115.239.19.155,157.4.182.100,162.161.232.179,75.238.252.190,148.185.8.1,167.65.117.143,151.2.69.116,149.131.245.1,143.173.1.142,140.123.201.135,161.112.126.18,133.107.127.175,164.83.161.74,103.77.186.205,161.158.208.9,127.28.236.178,169.92.137.49,96.220.154.123,117.47.158.134,102.101.47.190,129.138.193.131,143.7.162.134,87.98.109.205,95.52.131.185,179.208.36.66,146.30.158.154,137.252.112.53,83.173.66.21,99.17.42.214,143.32.213.146,120.160.82.188,156.84.1.126,174.117.157.248,63.34.104.112,155.154.242.254,119.222.107.173,108.6.155.104,156.42.200.223,96.68.243.96,127.1.133.181,147.114.34.53,169.2.249.139,146.230.134.143,108.40.122.200,175.196.39.50,138.151.11.11,137.123.52.45,140.241.131.22,93.181.107.189,140.97.47.42,177.60.14.199,156.210.173.198,119.120.147.53,113.16.83.63,76.225.78.52,149.119.185.104,112.129.72.28,104.211.99.115,146.14.172.80,137.99.68.2,128.190.89.255,148.238.44.25,145.221.186.251,103.171.7.231,94.179.46.203,123.55.99.200,163.115.66.85,137.90.214.31,103.157.79.167,120.77.114.142,67.196.75.229,116.102.238.135,89.112.156.209,119.155.179.120,103.96.100.252,122.9.121.130,90.213.13.80,122.11.20.207,125.191.240.224,123.151.236.209,102.150.42.177,110.226.183.196,148.162.77.103,135.2.14.85,95.60.127.192,115.104.169.97,136.209.56.48,130.100.16.68,188.87.172.64,95.51.76.87,156.198.112.127,108.81.219.126,158.170.152.192,164.85.230.241,126.234.72.94,124.10.160.125,135.79.222.19,174.208.151.153,100.139.192.22,147.199.183.133,111.27.71.137,135.10.225.29,114.25.130.58,109.95.181.130,80.194.227.138,164.253.141.116,99.88.83.156,150.45.32.17,116.185.170.156,141.111.246.238,139.145.139.193,96.173.85.181,124.99.43.190,98.28.115.210,109.76.53.121,132.130.255.140,110.38.122.110,100.251.76.225,78.8.31.246,119.222.234.112,164.146.8.129,162.81.248.42,122.79.92.83,139.149.81.155,122.129.57.73,111.20.90.228,134.232.205.45,121.47.42.210,145.220.124.231,149.195.85.35,121.36.37.126,111.118.124.206,97.225.6.181,139.14.95.81,136.19.129.177,140.132.23.250,169.213.249.133,152.165.40.218,113.66.16.156,141.176.162.170,144.62.169.77,148.234.105.37,127.192.152.231,150.120.176.148,132.89.43.174,116.15.90.9,156.29.221.210,96.140.110.2,94.137.232.138,138.49.202.164,121.5.44.94,135.71.59.58,130.235.182.28,177.247.193.24,91.18.26.248,96.170.165.223,175.91.136.184,113.249.76.40,114.218.52.97,130.170.99.179,142.25.226.240,109.1.138.121,129.189.241.232,86.143.24.232,135.195.83.61,114.10.112.5,127.176.20.70,124.61.71.227,149.196.38.194,168.120.227.33,163.178.20.95,110.248.250.189,151.24.14.201,114.39.15.213,130.49.183.185,84.156.104.145,121.227.99.136,115.219.189.124,138.130.198.30,119.46.151.21,140.25.134.157,155.101.24.204,152.75.43.9,133.28.18.19,140.202.204.49,107.175.79.173,107.243.57.119,89.27.4.249,137.11.43.79,127.65.48.132,116.173.226.87,129.172.9.76,109.18.59.178,91.240.80.141,147.126.18.91,133.240.6.218,120.108.25.128,146.2.245.163,76.180.94.237,136.136.65.96,127.175.92.144,123.174.213.240,142.63.59.216,171.156.52.139,146.190.171.159,158.97.144.157,94.139.155.25,137.253.248.235,129.203.4.103,123.141.191.7,120.112.103.199,140.245.87.29,145.44.45.241,141.3.167.209,144.209.16.105,134.184.157.3,117.123.194.101,119.75.23.75,126.148.173.72,101.179.122.235,121.90.130.11,134.108.167.167,130.196.189.22,119.132.181.101,129.178.129.110,115.20.73.168,115.101.43.45,126.205.50.240,131.121.159.197,120.238.92.160,128.49.46.145,121.55.43.89,93.82.180.96,177.26.23.62,118.252.181.119,138.111.235.213,135.196.244.101,142.99.120.198,133.118.230.81,139.180.141.254,137.203.17.128,124.178.60.194,91.2.251.224,100.235.100.54,121.203.238.50,168.99.227.133,149.118.164.44,139.143.80.246,130.224.108.139,141.56.31.36,133.91.88.5,145.105.208.80,75.200.0.213,112.235.18.117,138.134.174.119,117.50.42.44,134.251.5.176,160.178.202.14,107.14.42.143,159.250.90.21,142.153.25.210,121.214.71.153,122.166.160.89,72.215.177.200,148.137.200.145,165.207.53.163,149.129.109.225,99.123.227.142,115.80.214.19,103.26.112.44,89.149.152.227,110.161.142.170,156.155.137.253,133.7.184.222,117.57.179.17,157.7.83.246,110.213.170.33,152.20.221.32,108.202.83.254,133.218.11.205,147.33.187.205,110.13.6.199,156.163.207.136,160.4.99.205,144.232.45.149,115.121.63.137,135.123.240.238,164.37.208.104,127.148.57.1,91.17.221.234,125.148.242.0,103.35.211.245,146.208.20.219,128.244.213.216,88.113.124.227,122.118.228.107,162.130.210.43,147.132.219.253,142.41.222.140,87.69.96.167,112.73.118.24,155.63.185.15,141.73.170.109,124.183.195.175,143.44.10.50,138.42.137.239,100.207.164.176,117.18.211.46,72.201.177.5,168.91.204.169,95.185.123.125,110.155.72.16,139.207.80.42,107.140.31.13,129.81.213.137,109.53.166.224,131.123.185.81,126.88.201.213,159.39.32.1,105.97.30.191,157.235.63.59,122.247.136.41,158.184.177.80,120.104.22.232,170.162.25.51,126.141.241.119,131.62.8.189,90.102.209.27,131.232.199.58,104.212.230.217,145.111.148.228,129.212.183.174,114.108.90.211,168.148.192.76,121.20.159.175,107.219.225.18,124.209.120.131,133.95.160.51,108.212.38.221,100.150.195.251,91.158.217.15,124.248.97.171,106.50.29.236,119.100.50.228,135.83.179.93,155.57.45.74,158.183.66.129,126.97.17.61,144.91.103.8,81.70.55.59,140.125.217.121,134.190.154.12,118.224.242.182,148.150.79.239,103.183.62.148,141.8.39.160,117.248.147.15,81.61.246.184,146.68.64.150,130.89.140.30,95.223.17.16,122.200.226.145,127.173.110.166,124.60.199.155,149.95.9.170,114.227.160.10,157.158.160.206,151.189.178.216,105.167.1.157,129.7.202.88,127.57.190.35,107.128.86.83,125.131.99.174,122.175.79.191,92.205.61.41,187.106.0.230,137.79.41.17,129.105.31.46,153.181.90.126,78.188.109.203,175.175.203.115,48.200.252.216,106.249.51.15,127.252.83.197,80.46.78.184,108.242.23.241,162.213.16.183,130.137.72.99,139.154.17.225,130.176.175.178,146.240.215.198,122.35.216.9,91.255.148.119,147.53.79.191,108.43.51.37,106.15.96.220,87.26.1.216,121.202.207.13,178.149.205.141,130.47.18.48,98.99.189.241,116.82.62.54,127.106.165.21,143.28.145.24,95.193.69.237,133.92.193.212,203.165.42.108,122.100.67.195,128.58.240.198,118.49.214.245,102.38.35.13,143.35.6.20,140.73.43.17,122.38.39.22,137.200.128.199,115.96.38.109,114.83.75.202,134.16.198.98,80.197.152.48,166.104.4.243,145.204.169.105,119.122.137.250,107.122.73.55,136.90.137.31,183.243.7.55,136.129.123.235,97.72.253.223,171.69.142.149,108.110.67.100,105.136.178.143,121.97.60.97,118.251.34.54,119.194.111.135,110.168.3.183,93.108.62.153,139.252.244.108,136.12.74.227,115.222.243.1,150.176.185.200,193.184.5.170,124.238.143.145,97.13.85.62,135.114.98.193,166.131.201.125,168.191.170.94,137.199.90.61,123.130.226.219,76.8.244.180,179.95.177.146,130.212.109.101,117.115.219.179,132.193.233.236,159.148.11.249,126.55.32.155,137.35.55.165,159.156.39.103,101.14.165.197,114.36.1.26,126.248.88.222,147.113.169.154,120.148.174.164,95.97.241.50,159.82.131.234,109.166.177.14,115.176.236.110,158.209.230.127,152.218.130.91,133.251.163.86,127.164.191.4,83.229.210.103,108.6.13.96,124.148.53.211,128.164.181.174,134.227.100.134,126.151.91.71,123.48.67.238,128.109.59.230,103.157.118.155,124.57.156.92,103.2.119.245,139.57.40.80,132.111.97.53,94.106.42.13,113.228.167.221,155.203.224.86,103.20.45.72,172.202.135.156,144.97.88.251,94.79.35.243,169.109.222.134,77.23.203.155,151.61.208.41,140.85.121.180,139.152.164.236,177.136.62.178,106.235.140.238,137.230.139.153,126.199.221.112,112.114.25.183,84.4.133.72,157.13.218.147,140.2.186.179,141.166.177.24,155.154.157.205,121.162.136.48,137.36.119.152,147.35.20.183,133.225.63.199,164.111.141.148,95.72.234.124,137.25.22.87,101.221.95.67,96.38.135.144,106.79.197.84,146.15.21.22,96.155.179.49,157.24.164.213,134.61.122.91,106.189.219.114,156.68.198.16,113.67.6.173,118.65.232.33,136.39.137.242,125.213.112.69,170.231.179.18,114.11.158.177,164.247.241.206,139.113.242.186,141.187.80.12,119.19.187.232,158.80.52.192,133.68.245.187,131.99.225.130,114.157.50.226,152.15.62.159,93.33.6.121,107.186.109.132,144.248.210.136,142.253.0.154,122.113.233.190,110.48.1.1,88.113.82.134,221.70.36.180,108.83.218.169,122.150.47.20,108.201.249.75,133.16.236.35,124.71.184.176,83.72.10.119,88.16.21.246,113.17.89.67,167.39.202.117,116.97.110.99,142.155.242.52,145.105.88.140,158.191.229.19,149.37.195.176,143.225.85.164,142.128.150.114,133.201.195.140,187.228.14.107,142.250.216.45,121.159.156.240,118.210.72.62,162.120.121.206,148.131.212.126,114.10.80.107,122.225.15.62,104.120.244.13,117.107.100.241,132.53.237.138,111.172.193.192,113.49.175.201,100.236.226.96,137.139.31.75,122.215.206.162,90.190.59.73,140.10.165.250,149.224.170.21,92.242.129.157,103.1.188.211,109.173.101.8,52.111.149.239,132.53.191.86,145.184.59.192,160.117.232.46,174.32.30.177,107.90.128.219,92.185.238.49,110.168.213.53,161.36.196.124,138.197.133.251,111.29.237.214,87.241.179.49,149.189.131.199,121.81.173.186,99.49.215.29,137.179.140.170,116.209.56.34,139.182.38.219,106.59.27.105,156.140.77.5,107.21.243.120,130.247.23.49,113.140.17.114,149.129.111.133,116.205.18.78,162.46.147.168,101.33.17.66,162.179.121.190,134.206.129.167,137.107.181.206,101.4.147.189,136.14.249.31,173.175.207.13,152.24.200.8,117.222.146.225,146.99.212.173,111.100.91.71,123.114.73.202,156.63.74.136,129.37.14.58,150.52.147.27,117.219.31.227,114.50.199.21,161.191.17.71,114.181.231.88,127.208.184.78,140.49.195.54,119.244.235.203,104.113.220.68,104.199.148.251,88.217.208.157,123.79.26.62,115.230.188.206,116.171.136.140,131.94.229.71,133.22.213.33,138.131.138.57,66.53.208.44,105.13.233.112,133.253.224.84,169.59.180.183,155.17.2.129,130.50.234.219,105.250.236.253,153.221.206.156,134.129.106.25,155.248.27.95,127.75.9.210,117.191.87.74,135.10.14.84,120.164.76.251,183.23.63.130,122.205.41.132,115.35.5.87,97.71.246.176,130.50.189.91,83.186.93.157,166.13.174.215,156.139.10.63,124.252.249.195,102.149.90.197,160.181.209.208,106.250.7.102,130.215.148.171,133.53.207.79,112.160.136.105,116.42.97.119,149.88.137.216,133.235.221.72,158.116.139.236,135.255.169.146,80.229.182.42,95.88.78.127,126.23.124.134,158.229.163.21,146.241.135.159,103.34.245.219,127.71.254.152,100.85.120.32,103.133.148.7,138.5.40.3,116.130.240.52,108.14.7.179,94.14.60.101,189.16.114.178,118.191.99.171,147.59.136.100,138.186.37.74,168.3.234.112,152.192.141.209,130.121.83.196,103.128.3.59,165.165.149.27,148.144.251.150,88.166.57.100,95.98.126.153,143.121.196.38,121.129.250.172,90.44.136.233,139.64.138.219,106.250.5.89,108.66.54.154,116.204.28.177,78.254.190.142,125.57.0.141,100.96.92.120,140.193.215.65,134.83.134.149,131.171.214.82,132.67.178.225,125.20.25.134,123.51.81.58,111.82.1.5,170.174.34.235,161.12.107.80,162.252.208.200,139.40.247.102,103.21.56.104,113.186.126.145,125.144.35.179,132.62.47.51,136.225.84.179,107.127.216.117,135.236.129.43,111.219.0.9,121.93.175.167,155.63.41.71,140.10.175.100,121.132.158.2,79.245.52.35,116.82.201.129,110.175.154.147,116.110.255.112,140.163.176.3,149.172.229.48,68.204.179.183,172.148.155.75,146.121.131.59,85.59.113.97,140.104.255.229,153.155.171.239,156.198.141.119,132.190.90.249,133.73.200.135,149.215.192.85,207.48.39.164,120.58.185.197,142.240.166.243,71.248.240.101,151.91.113.207,140.49.108.168,121.175.164.41,154.179.168.46,124.66.214.161,183.212.131.85,126.136.144.149,129.88.158.195,92.155.131.23,115.41.189.160,143.179.155.24,92.151.53.108,119.156.159.220,146.166.152.228,126.154.229.28,88.115.43.92,137.220.156.171,102.111.152.135,108.233.98.109,105.148.109.105,130.239.163.6,135.152.203.248,83.219.173.176,91.161.6.161,119.95.132.178,91.222.212.186,176.210.85.125,152.220.246.241,123.185.188.191,103.205.23.185,128.126.30.250,155.154.104.171,134.103.107.178,143.1.88.155,126.41.179.238,140.35.232.50,114.199.28.91,61.90.38.121,127.215.16.31,85.94.148.44,202.193.94.85,149.83.69.234,137.139.84.132,117.235.22.155,162.131.208.215,130.158.241.49,168.58.75.24,121.238.32.44,118.200.242.60,144.199.141.219,152.158.76.24,119.132.233.96,157.197.66.195,128.162.61.78,122.6.128.70,117.16.185.146,150.98.28.192,157.160.80.47,155.189.253.80,126.250.222.206,121.139.32.37,156.32.31.148,118.120.203.129,109.195.121.228,102.155.147.243,158.253.9.15,159.57.126.48,127.193.228.93,120.131.248.107,143.88.234.225,112.191.59.252,118.130.0.144,124.168.196.119,116.119.49.249,109.243.101.42,162.208.207.131,168.50.192.126,72.232.188.8,138.55.178.151,118.244.165.103,85.107.162.71,122.75.203.12,101.136.156.211,129.130.221.3,132.56.246.152,140.173.96.51,176.13.49.23,96.218.178.163,135.148.93.11,184.70.219.117,176.96.128.254,122.182.21.141,105.122.117.34,170.25.40.48,126.187.40.44,121.63.118.17,121.170.173.93,110.24.248.79,128.76.88.20,97.27.33.12,100.41.15.37,109.255.235.189,147.216.185.128,117.29.182.51,128.29.67.196,142.148.113.18,90.161.155.135,117.132.99.112,142.62.77.21,144.181.162.120,100.140.164.240,127.119.115.87,139.43.151.109,172.109.169.140,142.247.162.164,146.19.117.1,133.82.195.250,60.95.8.41,108.138.239.40,190.59.90.143,124.50.171.72,168.83.72.190,175.15.76.222,145.178.46.218,149.96.151.29,187.230.202.8,140.248.9.54,141.168.247.99,118.42.224.152,117.30.36.105,105.129.214.129,120.220.186.218,171.62.56.150,111.30.213.14,162.110.198.189,106.109.148.183,107.131.175.28,126.250.50.59,164.14.189.228,98.102.217.59,65.50.85.107,115.193.233.3,123.45.14.165,94.194.95.240,114.230.244.158,109.186.109.190,148.58.226.92,134.84.241.68,157.40.214.83,105.106.225.166,129.64.3.94,93.87.46.141,120.109.117.178,125.189.56.52,113.82.176.98,148.54.36.77,148.81.236.61,138.43.159.76,148.37.87.56,139.237.11.113,130.81.32.193,144.43.223.41,134.103.54.226,160.229.132.80,156.154.78.178,112.253.231.111,108.25.37.0,121.169.12.188,116.51.69.225,98.94.247.255,101.78.77.36,177.178.157.119,162.39.172.90,141.103.104.73,101.5.31.71,135.192.237.40,102.240.227.63,126.23.47.210,160.154.40.126,102.119.142.189,138.160.8.8,144.26.7.61,133.251.144.158,99.95.199.106,134.129.31.37,143.111.116.82,148.118.36.203,108.188.15.52,112.111.120.79,118.160.156.108,164.163.150.191,122.12.19.229,179.29.70.72,152.14.28.209,114.218.244.111,113.82.226.204,145.127.95.141,167.48.255.77,89.89.94.59,149.219.118.101,95.116.2.93,129.215.39.227,147.202.196.29,105.164.191.179,68.172.135.231,149.143.74.190,75.212.138.27,148.78.68.19,110.44.189.66,124.13.98.18,106.62.102.95,155.102.241.159,90.139.186.173,125.184.26.175,198.89.77.86,115.191.225.251,117.177.98.192,167.181.253.182,170.248.96.35,96.160.226.172,130.89.178.157,141.170.142.17,118.125.247.73,113.150.22.25,86.170.186.195,136.249.30.209,156.255.48.68,137.108.109.76,136.142.17.140,180.81.71.185,114.33.195.44,100.20.132.242,127.92.121.27,91.69.140.236,114.217.198.86,168.229.35.64,108.151.219.128,70.158.183.147,98.232.175.103,91.214.162.72,135.60.118.163,127.148.51.184,127.157.88.130,144.50.46.240,165.61.5.179,106.105.58.241,154.206.205.84,141.189.112.115,112.149.46.121,146.24.33.21,168.61.156.240,175.59.125.192,102.33.18.234,92.122.119.86,115.57.220.70,111.235.253.16,109.4.113.64,106.55.68.132,114.30.217.166,179.143.53.158,137.253.196.225,102.176.66.4,155.183.88.0,148.22.193.153,142.145.203.223,130.135.209.127,116.169.95.102,115.49.144.77,104.66.150.200,107.191.13.110,71.136.219.101,144.165.67.88,108.141.20.90,132.19.5.165,110.61.182.232,130.63.19.55,147.1.2.246,136.127.112.117,123.70.200.53,80.247.78.13,124.115.143.4,133.132.188.118,107.136.1.246,95.204.172.172,130.210.240.71,176.128.132.237,114.165.171.35,183.128.206.133,138.175.231.244,122.29.184.105,121.31.255.187,118.215.66.146,130.149.241.205,92.191.102.108,106.62.45.141,95.42.177.146,124.140.242.241,126.32.35.116,139.26.213.3,120.213.54.85,119.31.134.194,78.87.245.71,162.182.219.192,75.125.38.217,183.131.101.165,111.31.199.169,98.212.191.19,142.105.223.160,161.173.66.212,153.16.252.115,139.232.142.205,126.196.216.4,108.177.233.207,125.164.96.177,127.28.83.98,129.138.99.95,149.226.131.157,112.182.172.18,156.49.161.150,131.214.19.153,93.87.52.48,144.54.29.66,152.48.124.199,91.214.239.22,123.169.55.71,150.84.130.248,109.150.59.23,127.147.110.241,111.144.31.159,97.205.254.155,124.123.89.150,84.129.49.229,117.46.185.132,127.114.52.2,124.77.66.238,136.157.69.182,108.38.114.82,162.75.157.193,133.114.57.204,169.11.54.129,73.41.229.37,103.184.173.18,133.139.151.193,99.244.34.210,149.165.125.116,64.9.104.164,106.114.109.243,155.219.148.133,98.59.42.55,137.2.147.226,154.65.123.231,169.87.82.253,118.176.136.3,186.1.225.28,115.192.101.173,169.37.195.115,83.166.1.147,97.31.61.182,88.100.0.67,69.77.93.20,141.138.232.150,139.31.140.78,135.183.10.58,133.158.50.74,77.232.71.12,158.214.155.249,105.12.210.188,138.128.161.248,141.254.198.252,133.53.35.3,146.163.119.161,131.57.197.105,140.86.168.34,107.119.156.115,96.219.158.168,116.38.89.214,102.243.235.98,139.49.113.208,119.66.229.79,133.46.245.231,139.72.71.240,143.22.3.35,130.252.142.200,123.143.176.80,114.121.239.145,85.229.32.23,126.59.140.107,115.133.41.194,138.173.0.190,143.213.37.151,114.149.235.55,99.10.136.95,139.233.83.71,122.16.197.90,163.14.240.15,151.239.228.8,125.84.128.93,84.162.216.153,134.79.144.102,110.143.184.1,116.207.29.62,113.91.246.63,104.159.137.252,94.148.45.198,127.69.103.29,121.254.31.18,166.253.20.143,112.64.132.244,108.23.132.120,132.183.70.72,149.222.178.120,161.58.197.100,114.229.11.103,119.232.142.141,135.196.151.86,127.101.14.194,113.118.154.221,145.1.94.163,131.37.208.2,148.183.14.177,122.168.202.3,147.48.151.64,146.117.134.184,121.153.141.171,94.113.248.105,139.117.69.16,126.51.99.244,158.118.130.224,121.125.137.236,137.241.176.240,126.104.202.37,113.39.25.119,127.97.35.212,139.195.189.32,121.23.187.43,114.155.32.106,144.166.182.122,104.213.84.0,92.175.85.188,130.213.199.251,98.49.6.15,88.230.1.247,130.170.26.2,142.53.135.146,112.227.220.16,139.36.46.134,93.85.191.87,128.12.144.119,98.78.127.109,103.214.134.202,104.110.181.187,69.41.76.233,146.139.138.177,83.93.24.55,127.59.10.104,136.83.185.177,104.130.156.2,127.19.155.161,183.107.249.171,153.252.190.111,116.241.131.231,109.126.106.86,120.221.17.136,103.117.134.38,141.1.189.110,118.207.194.87,64.165.154.22,162.227.32.176,132.194.85.4,149.241.46.1,121.60.150.156,114.131.160.235,113.39.219.145,66.153.41.205,142.79.36.44,189.60.154.218,130.112.193.117,142.177.53.31,158.52.108.217,135.218.67.34,155.87.27.111,162.206.27.84,99.97.117.190,142.151.124.233,157.90.62.52,129.106.14.10,136.85.229.168,150.128.204.29,157.79.39.130,131.7.4.58,142.215.111.254,85.175.161.75,143.85.238.193,87.238.185.97,135.165.22.192,129.54.248.124,113.68.243.70,136.191.253.117,151.104.70.68,133.61.11.142,112.140.122.140,97.246.6.54,137.223.98.74,96.245.18.147,104.217.210.162,128.220.67.9,79.174.22.204,124.19.3.124,79.183.14.47,173.130.56.248,132.38.154.48,134.9.78.120,130.12.241.80,163.167.115.91,129.28.235.248,158.97.220.84,149.134.69.36,75.138.149.216,124.91.129.18,111.135.3.113,171.29.173.5,94.219.80.147,140.14.101.8,116.145.23.47,104.56.140.196,132.152.152.51,91.135.220.61,108.167.221.200,169.30.77.68,114.247.15.105,116.103.54.136,113.208.129.236,162.26.247.148,180.221.121.170,99.212.227.201,114.13.29.171,187.31.237.219,119.106.9.6,81.129.82.142,137.51.13.246,104.222.92.86,74.46.214.234,131.87.96.244,141.137.30.80,101.175.70.217,83.16.81.215,74.82.152.185,161.201.247.159,144.53.74.194,152.240.203.193,100.172.130.213,146.248.71.28,98.66.187.5,101.73.3.178,119.243.229.19,125.208.123.199,100.226.154.92,139.123.102.130,128.227.245.33,129.18.165.148,172.217.173.115,89.205.212.244,145.189.9.248,131.211.125.139,109.28.249.244,104.92.172.10,81.97.248.215,98.88.124.16,75.45.59.255,120.103.17.14,135.60.82.137,135.183.107.102,110.54.53.242,122.193.8.224,118.95.16.183,152.96.220.219,122.192.39.238,123.61.35.15,134.170.105.239,137.3.220.166,39.212.241.128,80.244.1.164,128.15.165.126,152.106.134.158,109.184.229.68,134.54.96.184,90.24.171.106,70.113.35.152,130.144.153.141,148.137.246.248,110.134.108.118,122.155.28.20,116.61.130.254,136.233.228.221,136.144.118.184,101.232.18.18,200.74.241.129,123.68.102.224,115.28.196.44,103.239.224.232,148.60.10.232,126.31.220.64,128.205.108.69,171.29.85.8,119.86.134.12,103.171.228.232,113.2.48.150,95.140.15.119,84.16.161.140,148.159.207.146,160.83.92.111,136.233.231.34,175.154.244.229,87.169.219.67,93.151.202.96,150.247.68.69,177.187.142.129,131.197.127.226,132.94.12.249,157.183.243.23,140.71.34.98,116.179.65.74,112.18.59.252,138.215.53.224,114.166.251.58,91.190.10.27,132.131.64.116,140.223.173.110,142.248.180.145,161.132.239.129,120.234.248.214,141.213.161.135,101.129.234.248,196.82.190.65,140.90.163.230,115.173.113.83,114.47.122.13,145.165.144.72,104.179.13.50,123.199.215.232,111.200.42.239,124.215.189.140,151.39.34.229,124.180.62.72,138.80.16.177,97.36.84.112,161.32.74.58,136.59.141.105,159.156.129.141,117.150.197.94,152.219.184.152,128.250.89.140,160.84.47.236,140.22.206.217,144.176.103.202,164.149.183.111,123.154.50.171,139.146.50.140,112.8.14.84,132.163.162.118,48.161.95.35,103.249.76.14,131.189.145.230,96.55.208.45,113.244.103.81,100.132.207.69,135.145.103.211,132.18.171.100,135.240.154.158,125.222.112.68,102.20.215.170,125.181.65.36,84.124.100.252,110.117.1.136,137.198.164.119,87.102.215.176,123.252.66.1,176.132.153.105,157.26.152.33,130.72.105.189,122.252.168.28,101.11.162.150,126.181.142.67,131.140.237.250,118.175.181.96,121.96.71.27,109.220.56.143,143.73.114.131,154.12.145.109,80.7.86.34,134.228.55.44,144.105.166.245,92.140.88.60,128.144.243.95,115.35.121.64,128.197.25.253,166.6.183.88,153.117.157.151,182.182.117.199,152.152.59.202,123.61.153.138,180.166.110.97,115.57.182.251,112.213.255.113,108.145.30.158,178.134.26.70,125.199.179.190,117.24.125.247,162.30.216.196,89.250.163.71,144.40.176.247,126.53.126.160,109.128.78.188,105.170.107.40,129.244.228.43,153.162.41.140,118.78.189.220,105.43.140.158,155.224.22.210,130.110.203.48,166.235.90.226,141.136.85.13,138.195.220.198,129.2.27.20,122.15.214.24,124.191.129.6,84.176.2.232,115.220.31.202,69.250.120.128,141.142.103.137,117.255.233.144,48.126.2.20,108.84.191.165,164.2.67.151,181.244.114.132,123.1.11.89,152.31.177.228,126.202.241.149,156.80.57.215,112.45.13.20,130.21.210.188,117.92.130.226,148.1.183.81,130.233.184.199,115.251.223.145,103.124.191.8,82.245.197.81,129.180.176.226,156.42.147.229,185.155.32.64,141.4.64.252,107.160.132.53,128.161.154.189,141.95.42.19,100.156.64.162,131.224.187.113,113.94.213.182,118.203.45.46,130.35.50.224,121.254.36.104,107.31.9.167,97.235.167.232,111.246.173.121,105.30.34.117,144.63.29.40,117.211.112.207,145.248.22.143,145.122.51.217,119.109.215.150,75.166.29.100,148.102.78.200,133.49.61.87,132.234.226.215,180.16.70.224,94.146.252.72,170.98.80.25,101.156.125.29,94.143.76.206,98.134.73.53,145.167.217.228,105.134.50.11,147.34.153.23,130.167.159.133,107.108.126.234,146.225.82.157,153.130.140.153,163.24.115.18,81.178.54.198,107.196.152.9,130.105.138.240,96.223.60.251,160.75.28.120,125.216.190.151,115.106.199.0,130.221.196.11,111.71.184.116,146.10.138.146,110.102.15.62,120.89.227.236,142.57.61.47,113.166.123.9,103.160.171.21,118.172.67.247,115.81.139.116,121.63.218.151,134.45.205.55,108.195.173.33,146.197.29.90,145.243.140.9,118.117.86.222,136.117.124.103,123.128.230.122,141.181.250.105,118.184.9.41,137.217.149.92,133.216.114.113,140.171.136.0,110.75.227.45,89.244.136.138,132.35.131.61,134.64.113.225,85.106.99.59,147.226.184.136,157.75.61.12,114.117.76.210,103.127.92.36,113.146.81.60,103.119.209.22,114.235.197.239,133.68.206.117,126.42.50.112,160.3.65.14,109.211.175.252,95.25.221.98,121.46.64.100,155.134.234.193,157.154.52.37,93.28.180.156,103.176.69.81,157.188.160.84,151.162.199.5,87.19.117.205,81.219.5.125,151.163.194.86,117.211.192.215,91.198.162.158,128.55.94.178,154.56.82.248,164.71.181.191,73.65.186.25,163.135.145.94,128.114.89.244,105.250.85.176,135.83.152.244,139.218.200.38,117.96.125.8,151.211.99.1,129.165.29.235,155.172.92.231,155.201.192.52,131.29.75.109,172.30.81.206,139.151.165.69,111.113.212.193,138.199.134.5,115.234.91.53,131.50.231.104,119.125.87.167,132.50.117.160,163.165.83.134,164.183.150.39,152.15.74.77,136.34.21.203,105.200.182.221,124.178.35.137,122.72.236.230,137.81.171.83,122.75.223.64,135.7.174.181,158.13.172.84,173.36.40.223,141.175.253.11,99.238.44.193,99.241.134.5,122.44.59.199,142.225.137.39,141.91.147.203,137.158.119.139,98.61.85.83,97.41.170.38,158.132.208.231,128.110.36.236,125.127.61.31,94.96.191.68,145.197.220.95,128.227.37.233,123.177.120.101,161.140.81.101,113.106.253.12,97.194.144.183,126.147.34.192,205.222.80.114,130.110.32.2,105.169.10.79,109.113.61.137,134.211.111.183,149.59.1.71,96.244.81.72,142.241.178.219,119.50.102.91,147.218.226.243,133.244.226.132,135.119.243.103,165.87.238.184,129.121.129.41,89.137.42.236,172.176.119.244,137.86.66.215,139.75.35.196,143.15.43.54,129.233.216.189,84.75.65.91,134.27.220.178,104.224.7.191,156.175.190.106,104.234.53.237,164.13.83.152,121.93.22.157,82.2.231.191,128.141.2.158,164.56.202.107,143.82.120.210,106.100.239.251,142.248.135.31,59.189.253.143,190.54.138.136,154.233.232.203,183.52.63.211,90.163.202.53,141.103.184.15,151.51.139.230,106.140.165.28,114.77.115.77,74.150.176.187,147.84.65.150,91.178.53.52,163.85.19.193,135.37.44.108,102.137.209.234,143.215.66.163,125.192.243.115,138.136.135.48,152.54.221.66,153.69.200.72,139.125.122.208,133.167.153.89,164.77.187.96,177.248.208.1,141.101.186.66,187.14.154.139,96.174.46.180,92.152.96.179,166.212.189.129,129.51.206.99,98.50.19.181,123.180.85.228,118.125.211.103,119.46.207.117,138.196.101.111,131.223.129.28,102.40.31.217,110.32.126.152,142.211.186.59,177.173.142.157,155.223.99.84,112.117.133.120,127.172.71.105,140.73.128.27,99.195.167.106,122.18.143.249,117.14.164.109,137.12.201.155,136.56.141.143,146.194.176.21,112.116.29.98,124.70.12.235,114.187.163.230,137.188.28.227,138.51.142.162,119.241.3.157,183.251.107.165,87.21.242.20,89.33.15.42,88.103.52.80,130.234.55.210,110.41.49.105,97.218.215.235,135.133.233.131,103.130.131.179,107.127.88.97,128.12.143.92,131.46.200.86,109.168.84.174,92.54.24.12,93.114.255.92,162.191.184.125,110.36.242.11,128.98.78.82,108.20.137.236,148.70.255.176,132.204.79.167,159.240.147.123,155.249.99.114,154.106.5.174,149.19.163.29,89.43.168.17,117.82.100.91,115.135.252.25,151.154.182.211,124.8.38.57,106.189.122.14,147.204.83.69,102.81.217.117,118.103.255.8,95.85.86.89,147.94.19.26,119.36.124.6,111.194.121.119,119.201.247.171,113.219.44.70,124.210.178.192,124.41.8.228,176.221.49.202,160.111.183.136,125.37.246.162,126.25.17.24,118.73.211.208,127.170.2.185,157.158.92.123,107.174.172.166,130.93.185.31,118.134.25.220,115.122.99.117,155.167.79.74,156.110.180.110,146.68.14.247,111.117.122.237,150.110.233.121,130.47.0.42,126.114.163.136,117.227.46.95,92.173.218.16,114.199.200.199,114.237.6.174,167.22.161.190,59.178.158.245,94.161.191.69,144.241.111.50,78.25.252.91,172.100.56.100,131.155.43.225,152.135.239.87,128.216.171.199,177.125.73.227,117.26.103.147,121.30.46.189,134.235.151.173,149.220.48.112,162.224.134.55,155.143.128.185,103.6.154.66,142.42.253.216,126.222.76.38,123.61.112.207,152.179.155.97,128.99.169.204,139.174.83.207,150.53.160.22,137.126.19.13,91.168.60.19,149.28.96.21,114.186.129.165,121.185.140.254,141.241.120.18,100.28.122.145,103.158.90.83,139.13.175.253,134.170.168.177,101.44.188.45,156.172.8.154,136.137.15.114,150.34.122.139,135.238.98.10,139.160.146.0,129.186.155.58,106.205.109.41,148.234.37.134,178.195.61.180,126.68.109.151,148.127.66.36,97.16.133.220,127.79.184.202,145.133.169.72,127.32.147.126,127.25.230.127,104.174.91.139,92.167.140.86,145.179.104.248,112.49.94.48,79.101.84.120,119.215.16.125,133.10.172.91,171.88.70.22,135.160.197.176,100.90.125.251,115.152.210.166,69.200.218.18,126.60.221.192,154.113.197.122,159.118.212.37,108.131.201.105,116.132.151.111,156.46.45.237,149.47.199.239,136.129.115.98,153.97.172.42,138.225.238.7,135.71.174.100,164.127.64.104,87.206.11.51,74.165.53.87,145.38.140.233,134.100.46.211,121.148.129.210,135.14.139.253,89.126.49.39,145.212.176.234,118.237.159.224,159.213.163.137,141.104.179.18,138.52.22.131,104.182.129.207,116.44.182.156,85.233.41.179,98.217.162.236,144.65.148.106,98.247.216.71,149.138.133.250,163.37.126.199,151.170.180.153,90.117.102.200,169.219.75.199,110.167.16.245,88.152.4.184,106.192.129.108,135.155.22.179,140.222.73.255,144.238.80.206,121.243.199.118,137.105.56.221,122.201.132.125,138.212.101.253,124.174.193.196,114.168.148.195,125.121.248.43,137.243.48.33,172.164.86.201,136.235.47.228,96.239.253.151,131.106.12.112,137.201.38.46,145.200.144.89,110.203.100.68,107.29.115.229,147.219.253.147,100.5.62.38,124.18.60.16,135.27.16.198,151.210.226.230,137.83.79.91,95.238.7.150,97.198.138.46,142.136.122.137,112.9.3.42,137.138.224.96,148.89.68.18,145.149.230.10,162.24.29.174,95.28.111.75,170.142.167.229,104.26.154.67,127.118.14.249,132.67.50.93,168.81.53.7,139.197.219.77,125.237.13.217,87.62.222.41,115.163.32.210,160.107.58.226,133.62.123.55,88.196.202.207,141.145.76.45,144.87.240.218,140.191.178.153,72.173.178.212,127.155.235.3,137.227.62.96,101.34.221.225,109.42.214.12,107.54.192.16,77.241.13.84,125.44.65.64,159.250.199.95,116.190.165.196,118.10.205.241,146.190.159.121,169.238.240.27,158.172.5.111,91.161.25.205,75.184.147.50,147.205.8.12,129.206.37.11,101.74.116.86,155.60.36.185,138.133.217.140,91.170.92.55,156.179.222.175,150.79.132.127,119.183.232.239,177.52.49.42,88.253.124.49,122.239.208.117,131.14.193.151,134.57.117.179,82.90.58.148,75.247.122.45,96.200.7.154,130.209.80.189,130.159.75.190,149.139.64.4,170.64.174.201,96.38.21.245,126.205.248.130,158.50.21.174,120.74.107.230,107.157.9.92,105.116.162.0,144.197.189.97,158.182.109.218,85.219.62.170,133.146.57.87,137.109.216.2,144.109.219.198,110.184.136.194,194.92.228.187,130.39.96.209,133.96.200.131,96.221.35.230,128.106.87.187,156.11.244.65,136.171.35.79,100.115.133.200,129.37.228.139,163.37.142.143,75.231.228.175,122.18.48.73,132.32.127.14,112.5.247.105,150.142.248.172,125.12.86.98,167.125.126.68,129.35.65.120,158.226.63.132,104.92.186.132,130.28.82.159,139.28.208.96,97.81.111.64,97.135.96.47,87.125.53.24,231.62.20.187,127.32.129.9,116.186.111.205,145.130.216.242,127.46.97.93,133.185.198.251,97.44.227.233,122.21.152.24,104.103.115.163,132.9.36.188,116.208.42.127,109.95.28.228,117.76.53.151,153.117.179.198,143.198.206.174,115.91.233.80,138.227.190.110,118.6.54.225,122.37.246.108,113.90.203.194,121.176.80.184,90.49.124.9,106.182.36.189,103.132.49.172,96.34.240.239,148.193.112.22,127.196.193.234,79.35.61.221,107.115.23.222,106.204.45.4,158.5.10.143,141.152.228.96,160.214.24.133,100.241.29.72,125.17.49.228,98.142.37.127,156.9.171.112,117.91.189.50,144.237.12.227,145.150.206.18,115.202.35.227,147.199.84.114,124.164.232.134,122.88.187.19,97.174.161.67,84.245.90.30,150.204.223.97,109.153.247.64,60.59.210.10,118.220.166.20,110.127.71.209,115.187.52.135,119.135.143.178,123.113.205.129,79.84.222.36,185.56.184.167,83.74.154.103,129.232.47.14,130.190.169.214,84.135.178.252,99.98.123.83,119.10.220.37,123.213.62.155,179.49.28.229,146.180.133.83,177.244.169.140,91.234.133.131,123.108.166.159,98.227.187.93,124.227.213.49,108.230.5.208,123.214.161.166,116.206.170.39,131.101.160.166,142.33.40.23,153.156.143.237,119.6.95.110,156.221.122.27,100.29.2.114,119.201.168.82,138.247.227.45,164.222.85.224,113.248.252.176,106.237.217.165,156.44.50.182,143.132.155.149,136.215.145.74,146.178.178.99,168.69.98.178,121.27.47.165,125.98.248.166,114.170.248.99,127.197.250.129,111.16.56.203,108.54.135.147,111.107.133.51,106.101.11.78,174.119.79.78,144.236.187.19,117.6.22.120,105.15.54.226,121.223.128.38,154.226.44.80,98.78.211.126,111.58.153.166,157.171.45.136,140.237.83.101,81.27.154.211,93.64.20.199,121.53.224.221,113.143.103.25,93.12.178.8,127.181.14.249,127.81.39.214,133.153.110.155,148.110.55.184,99.155.104.225,103.148.99.129,152.231.83.129,128.193.135.70,110.60.222.144,100.32.92.217,144.83.175.242,122.8.92.30,129.247.90.129,104.217.69.209,171.91.27.175,154.8.9.113,131.73.224.117,136.124.50.76,145.81.94.236,158.144.80.162,90.29.53.184,89.85.175.44,111.96.82.40,129.255.18.234,131.29.58.238,107.39.21.21,89.197.217.176,147.15.234.30,118.19.233.44,129.103.36.184,137.106.81.87,164.24.216.110,77.171.208.180,125.169.24.58,126.116.250.177,119.154.18.131,127.100.158.194,159.134.252.74,89.110.251.98,78.8.154.59,138.2.183.75,75.26.125.151,120.185.73.194,107.104.141.227,181.116.0.172,135.140.13.144,126.157.146.228,139.144.208.160,98.59.130.248,115.178.71.191,107.81.79.94,143.14.1.84,107.72.117.129,120.98.95.252,89.192.186.34,159.217.123.93,154.226.102.222,86.167.163.177,118.142.132.71,115.42.115.74,133.167.183.150,137.90.153.168,97.120.117.75,123.149.41.22,112.187.50.179,152.134.47.88,121.3.202.172,121.18.28.15,76.10.196.53,147.96.50.33,127.179.152.65,112.240.49.145,139.94.165.108,151.253.94.244,169.75.82.168,155.22.73.220,113.177.184.34,151.91.236.120,123.158.187.27,83.39.165.239,115.105.104.245,92.240.14.89,180.104.236.61,197.139.142.255,145.68.123.73,93.115.65.3,139.32.216.96,99.0.175.228,152.14.221.145,143.62.180.41,103.153.198.108,98.237.72.229,108.103.248.102,130.194.163.40,160.25.161.194,181.187.63.8,118.168.111.95,103.255.43.210,113.13.100.95,137.218.148.88,125.179.219.170,69.16.121.57,131.50.169.201,131.101.253.151,162.57.37.46,126.40.208.58,201.231.46.185,143.39.150.122,130.37.107.202,130.83.64.87,137.19.60.170,147.194.24.87,105.177.203.203,125.24.105.101,130.2.172.37,198.81.214.65,85.96.116.190,132.3.63.236,132.217.14.237,90.119.210.16,129.24.5.247,94.44.48.62,115.20.130.251,152.30.166.122,114.174.179.117,131.44.128.176,162.96.133.187,126.90.9.163,144.12.59.78,139.112.29.179,126.72.155.81,141.235.143.66,139.80.96.123,119.95.226.76,125.14.22.59,92.114.102.151,139.73.134.166,63.249.5.237,138.144.133.82,107.193.215.218,128.79.152.44,125.133.166.163,156.98.145.54,132.67.122.46,139.250.179.242,125.17.251.91,115.195.245.56,132.226.171.76,172.135.10.131,172.160.163.181,132.111.217.132,129.184.191.171,133.36.221.95,81.229.85.244,95.166.68.195,133.173.134.181,130.202.47.0,144.87.127.147,94.153.175.207,82.185.2.80,141.19.152.20,114.55.92.32,122.129.37.136,89.22.169.238,121.80.29.218,104.213.90.36,178.102.30.31,144.120.204.208,126.18.237.136,89.221.252.223,147.182.118.63,152.215.109.114,177.224.108.57,169.25.44.219,84.187.87.47,108.49.109.10,156.121.141.4,124.77.221.11,167.65.6.67,108.44.122.31,117.186.175.55,138.1.169.100,134.169.103.158,133.176.232.108,108.138.116.120,87.10.74.204,114.48.10.199,164.102.100.73,136.251.236.130,136.83.149.243,101.1.48.157,128.254.161.144,108.241.42.5,94.34.178.13,149.7.71.31,161.90.245.144,93.45.68.177,134.141.89.143,80.255.16.76,146.121.123.89,129.171.253.72,131.81.255.105,137.128.5.240,140.8.149.165,150.64.134.152,137.188.189.123,70.191.248.13,112.105.231.225,109.149.204.233,129.213.41.129,163.186.250.42,131.162.201.223,141.219.128.80,82.150.28.26,148.242.137.136,98.173.215.177,145.216.27.137,153.88.227.175,126.50.188.86,182.201.250.170,129.209.90.170,108.32.38.167,113.13.240.246,87.225.160.250,116.117.176.87,157.90.185.24,99.209.99.104,141.41.160.254,89.203.104.27,116.161.211.29,115.29.50.183,136.191.192.142,131.16.30.206,129.28.239.11,74.20.126.52,167.70.3.4,92.7.107.101,144.86.40.211,175.148.213.24,103.222.161.245,145.121.195.155,151.16.112.123,155.103.131.152,143.103.96.84,150.131.162.91,162.162.118.159,120.239.74.200,80.57.227.186,115.38.249.140,130.7.130.21,163.147.185.59,130.182.97.181,175.204.195.230,87.171.184.217,142.250.253.90,158.129.106.95,178.93.49.118,89.73.52.251,111.199.79.67,100.238.201.188,165.163.154.254,113.192.199.5,160.67.167.215,97.91.113.120,141.227.160.47,98.100.214.200,137.129.105.180,112.77.238.27,73.50.90.78,123.65.183.54,110.80.215.75,132.154.64.131,108.139.39.227,140.7.146.255,114.0.205.255,91.253.181.31,162.244.168.207,52.1.7.205,130.93.98.171,80.49.68.190,106.79.75.197,141.103.174.191,139.14.174.95,138.98.148.19,129.227.226.174,167.225.135.8,135.207.92.167,128.165.133.81,121.110.95.216,131.129.185.53,127.26.134.254,131.112.174.118,163.80.231.207,149.89.0.21,36.245.253.38,137.133.55.181,95.173.13.247,135.130.54.129,139.58.81.38,153.157.84.37,132.13.164.180,96.201.237.121,143.145.226.239,155.17.81.19,162.88.184.40,123.36.142.188,128.77.125.49,138.203.37.40,152.52.223.152,155.125.217.216,159.87.244.237,97.25.176.213,154.75.166.138,136.190.171.212,144.81.196.226,63.202.198.150,142.112.65.44,134.100.137.143,122.118.236.149,114.214.181.62,123.249.228.250,135.214.132.117,105.252.232.38,93.200.94.4,162.232.138.247,108.99.242.176,110.239.238.74,97.161.180.233,128.46.250.239,121.2.105.133,167.213.137.19,117.147.131.203,109.28.212.147,79.151.47.103,124.84.73.147,144.139.138.58,144.214.150.21,126.3.19.199,117.22.17.200,134.244.63.77,134.112.191.47,103.230.173.176,112.84.209.227,136.74.102.48,111.225.42.35,117.23.84.156,119.217.0.220,131.229.121.183,141.195.3.213,132.79.153.143,164.139.0.57,156.216.3.12,165.60.18.18,112.122.110.72,168.16.49.187,160.20.13.89,102.52.107.30,104.39.252.140,127.35.185.43,95.168.228.215,151.140.45.107,110.94.118.150,84.95.208.107,120.49.42.170,129.143.28.184,82.231.25.252,131.48.131.214,138.76.184.230,99.129.107.160,124.235.146.224,127.231.45.71,135.156.156.237,170.7.150.55,145.135.249.56,126.120.10.91,100.52.250.210,110.182.109.129,137.225.220.175,145.210.62.25,159.171.253.159,118.9.251.242,132.206.103.188,152.92.26.122,155.7.217.165,148.31.215.200,153.250.62.2,121.7.216.174,145.55.64.86,134.94.158.3,107.149.59.246,120.166.50.110,152.143.55.51,88.31.245.162,115.25.112.188,132.57.131.203,104.140.85.6,118.135.253.232,128.35.233.50,108.210.93.112,148.163.158.168,136.213.126.110,84.86.173.235,158.224.4.244,168.96.118.178,154.121.132.215,135.240.42.37,212.83.32.80,115.31.113.93,144.26.247.210,140.218.55.223,152.189.143.29,148.230.250.120,142.183.219.142,109.109.230.232,135.172.138.242,112.143.33.39,152.178.155.66,95.201.85.228,116.39.213.132,110.207.11.96,117.201.127.200,121.227.136.103,124.201.152.99,123.123.10.133,166.88.91.106,137.99.51.123,158.232.141.241,114.192.252.159,134.199.34.44,124.25.210.57,151.81.199.224,146.237.169.62,144.14.106.85,111.81.13.188,83.41.136.142,110.235.145.67,153.15.31.43,179.13.60.152,102.79.222.95,145.4.218.161,178.222.32.58,69.120.140.205,138.81.97.164,131.254.228.173,90.117.149.227,148.11.26.255,137.58.207.125,123.169.250.247,120.215.116.134,106.74.32.128,113.244.219.188,151.163.151.56,127.58.102.83,120.35.231.110,110.25.203.133,134.130.128.111,166.187.225.184,114.141.188.131,100.159.212.48,134.39.158.207,130.30.75.223,114.153.49.129,85.170.24.25,122.153.72.196,134.9.123.121,92.127.64.48,130.5.200.82,161.253.218.199,140.6.109.64,147.31.133.123,153.92.150.248,151.6.92.49,151.148.50.229,96.152.221.25,148.237.13.244,180.156.174.140,154.74.175.245,114.95.200.185,151.200.250.86,103.139.191.80,168.227.81.11,79.229.200.100,135.249.51.76,105.77.218.147,141.181.179.8,123.127.126.255,120.117.28.41,90.239.0.213,121.122.24.185,160.141.249.105,147.71.231.237,121.103.231.162,122.78.50.34,143.250.80.90,149.34.162.126,151.75.180.198,119.202.82.182,82.85.106.153,161.71.111.120,126.146.243.116,153.55.202.170,158.213.45.194,144.171.232.201,111.15.9.68,110.206.158.146,144.179.89.149,142.137.178.188,101.36.137.42,98.50.69.190,92.0.222.69,62.64.227.200,110.60.123.187,77.13.48.213,145.207.221.117,117.93.61.138,122.26.14.114,84.133.87.19,155.164.234.221,163.136.18.22,164.189.243.13,100.212.95.142,109.93.173.80,148.158.74.247,121.141.0.223,148.81.23.177,142.219.80.100,101.9.75.195,153.182.93.209,131.88.69.145,108.237.180.174,146.31.245.62,101.74.140.145,131.225.152.239,109.118.93.147,149.50.13.252,137.249.9.116,95.238.229.6,97.138.241.238,147.97.218.42,197.103.209.137,132.229.231.172,153.202.115.178,182.80.225.232,116.130.50.235,127.247.79.137,122.243.8.169,146.61.158.128,180.80.193.3,143.181.227.128,116.5.130.167,121.113.160.220,148.161.37.28,151.193.224.39,118.177.14.75,115.6.252.24,113.87.244.230,132.69.97.240,140.144.70.68,170.8.124.48,124.23.235.254,123.83.118.80,174.194.44.67,96.51.8.237,125.57.145.36,91.120.241.173,112.88.85.243,93.150.109.171,148.60.147.83,89.179.162.224,118.163.226.247,103.205.18.232,99.139.68.11,174.131.203.190,96.215.149.16,121.74.231.248,114.241.30.36,140.217.237.113,98.222.233.105,120.201.42.233,167.40.195.149,109.7.137.251,153.83.114.110,119.213.52.240,136.127.82.53,139.44.133.203,76.239.140.251,132.116.114.102,123.113.9.98,93.141.206.13,136.112.151.26,155.38.71.182,101.199.76.144,154.165.148.136,109.191.191.52,95.185.71.183,146.197.78.102,142.135.188.226,154.135.84.117,124.69.245.155,118.194.189.172,154.172.195.254,98.112.40.44,104.186.61.254,123.254.139.37,118.127.226.235,126.72.153.89,98.135.232.134,127.142.1.0,158.181.127.12,104.192.13.12,88.42.196.70,111.32.20.241,129.144.127.129,130.88.138.153,153.47.183.82,136.139.205.122,138.252.187.232,152.239.1.24,126.229.100.143,105.71.247.1,109.7.166.249,130.133.141.230,134.63.108.101,141.163.31.50,111.58.63.146,107.60.6.61,113.140.89.254,136.90.88.102,133.128.130.186,149.152.117.232,111.193.176.131,92.0.223.52,131.128.125.76,101.64.27.122,138.221.46.193,140.168.237.172,105.174.81.7,125.72.5.104,127.190.112.144,115.26.63.72,133.191.115.25,127.8.169.119,122.10.173.116,147.86.129.46,113.107.132.27,147.25.63.241,122.233.21.232,129.4.113.147,128.95.29.136,135.18.156.38,174.140.18.140,114.231.137.115,172.60.60.39,104.90.150.159,92.148.52.196,133.81.188.3,137.218.53.117,129.111.38.26,135.150.167.5,148.171.47.45,165.95.73.49,101.66.172.134,174.45.139.193,105.237.209.237,115.86.172.204,130.220.158.9,90.135.145.30,105.155.174.42,102.221.31.255,95.192.32.122,103.177.34.92,101.150.81.99,115.41.30.108,118.145.188.77,110.225.206.125,79.56.197.58,173.207.217.153,85.210.253.232,158.206.90.236,161.140.147.123,115.191.128.117,96.246.144.18,163.207.21.22,142.147.120.105,100.80.212.61,130.47.243.99,85.136.225.22,176.64.233.63,144.254.75.104,92.118.4.153,169.91.36.117,83.139.100.202,98.115.222.113,142.116.168.135,150.81.85.141,131.206.51.163,182.74.156.69,118.68.177.44,112.104.10.122,138.87.0.75,96.41.64.110,119.218.14.52,139.203.196.224,117.6.43.182,128.63.28.249,110.67.96.254,160.226.144.43,125.132.131.134,171.39.111.95,108.35.11.70,114.80.132.56,122.49.21.130,143.158.53.119,117.212.167.62,103.53.82.130,92.249.6.228,135.206.215.244,95.226.11.63,149.200.184.249,151.151.150.81,149.114.126.148,141.182.1.180,119.242.56.174,146.50.161.217,121.248.232.236,139.87.11.115,162.194.199.199,145.10.212.116,171.134.114.68,109.179.41.5,85.200.254.31,120.175.4.223,157.117.150.165,162.247.98.179,150.229.185.132,93.95.145.238,78.110.24.53,132.175.36.68,150.143.17.227,112.23.96.92,164.78.185.142,123.191.13.54,95.132.73.178,135.46.123.27,101.24.224.94,115.118.228.159,108.72.104.60,132.125.118.15,151.203.164.32,123.254.30.15,136.14.7.85,100.109.132.91,136.222.32.184,143.146.102.131,147.235.2.190,134.245.144.157,88.206.112.101,161.249.157.191,122.249.39.213,153.189.118.211,138.216.224.168,79.222.126.198,134.41.112.31,170.185.106.223,101.228.39.109,133.85.159.155,139.0.125.64,120.165.129.70,98.103.98.121,124.61.6.229,154.218.94.61,139.52.153.65,118.244.91.93,149.210.74.202,140.40.119.204,153.110.180.39,146.37.119.38,125.225.186.68,135.238.110.175,147.13.213.86,122.234.93.188,107.25.147.216,149.65.43.57,114.90.203.238,116.225.80.85,137.141.190.13,76.165.244.132,158.32.112.84,124.149.37.18,144.175.225.143,118.62.58.194,97.134.74.93,133.186.79.78,111.145.247.30,93.110.241.182,121.80.147.57,171.146.59.220,102.72.137.110,107.22.128.27,107.213.5.15,142.243.221.194,149.231.145.84,124.211.9.123,98.114.253.70,93.0.215.218,167.215.148.163,91.224.95.132,96.194.238.172,106.207.191.130,123.65.224.106,140.160.3.6,113.31.214.246,143.213.6.216,134.41.128.29,111.232.72.157,88.22.241.118,132.246.127.41,129.20.146.174,141.39.255.32,107.27.206.129,143.113.117.231,161.96.26.37,133.163.122.212,163.142.153.245,132.119.229.172,165.204.103.215,89.150.120.8,134.222.149.27,118.54.181.237,138.201.70.98,95.212.142.43,95.83.173.50,115.236.111.114,97.65.28.98,126.88.127.148,113.197.6.22,134.192.233.56,111.14.133.163,104.244.42.47,119.188.16.135,133.178.125.69,156.91.132.187,122.90.41.212,116.99.107.144,134.160.219.227,118.238.115.247,91.250.108.229,110.112.98.198,143.173.56.156,71.160.238.12,131.40.200.22,152.253.243.206,146.116.68.157,137.153.75.202,145.41.1.206,113.78.66.70,120.61.234.8,133.228.140.150,116.65.69.107,155.52.44.229,113.24.167.32,120.155.251.128,150.13.249.173,163.38.250.232,123.188.116.45,157.199.157.134,102.166.93.12,118.105.240.3,125.92.204.121,121.238.16.170,105.50.61.211,92.93.13.172,120.194.133.238,166.69.19.10,155.61.228.208,133.175.70.177,152.28.212.220,123.196.253.246,134.172.157.79,125.71.88.44,134.90.143.26,107.119.246.243,144.138.159.220,86.75.67.241,100.27.152.114,143.140.29.239,127.167.156.2,126.154.143.118,90.12.169.60,105.215.185.108,156.171.225.133,124.203.219.143,69.75.218.50,126.120.241.11,154.17.249.79,161.162.227.236,128.175.220.224,126.73.131.170,109.238.188.30,146.11.139.87,99.111.56.39,93.76.204.156,114.183.87.30,151.208.9.49,105.125.49.194,134.190.162.61,107.51.72.137,173.109.116.52,140.237.40.158,97.37.176.43,155.210.140.14,93.187.26.19,87.107.171.95,143.64.206.222,114.185.7.228,101.213.208.125,155.215.78.245,96.86.136.209,191.85.6.193,124.251.210.250,113.128.29.33,180.168.19.64,147.227.103.151,109.212.24.150,153.6.155.156,118.211.54.77,146.42.87.243,154.226.4.206,127.188.40.123,127.90.231.38,146.224.124.87,124.132.213.218,152.149.181.29,101.56.221.106,122.151.84.4,146.175.77.198,147.244.109.253,106.152.174.118,119.112.158.222,134.249.247.101,136.152.81.254,151.79.16.241,147.248.16.174,91.191.207.172,115.186.1.70,127.32.250.173,115.187.46.125,101.251.245.20,114.214.169.153,96.152.104.252,91.157.172.18,110.225.78.241,151.211.97.183,119.73.247.105,162.85.0.200,131.97.253.197,135.163.62.84,151.76.43.78,99.133.10.171,156.163.20.112,127.222.160.155,117.7.83.234,129.10.231.58,141.38.101.192,130.42.232.188,115.158.36.37,158.48.109.8,100.6.178.23,130.126.27.106,92.106.102.235,133.234.117.230,130.187.119.68,124.195.131.49,148.147.150.86,103.17.210.229,86.38.165.229,162.166.74.83,212.101.44.130,115.157.251.43,136.102.42.149,142.74.148.162,147.216.125.114,107.249.85.174,114.229.68.207,135.222.187.98,109.3.53.149,147.128.66.8,158.209.70.10,167.135.27.124,99.253.104.215,163.221.10.60,109.201.130.149,103.111.209.252,141.103.63.44,117.136.58.2,109.29.106.91,137.54.221.113,109.19.76.234,128.44.110.152,131.141.210.140,122.208.95.144,129.173.116.10,133.237.5.121,118.230.110.255,163.240.95.240,111.251.230.50,160.122.52.59,119.200.217.50,112.222.177.64,140.222.198.255,46.158.90.118,107.193.188.190,168.133.26.120,138.108.66.246,142.134.114.108,98.8.164.116,114.183.46.67,116.1.254.16,104.174.230.199,127.86.131.60,119.234.219.212,94.132.226.191,86.90.78.156,101.49.80.245,94.205.145.128,109.206.191.27,93.113.151.143,122.188.214.118,117.51.199.55,116.166.75.41,139.45.104.194,123.198.8.208,121.42.165.166,78.107.207.6,126.200.155.152,184.107.249.29,141.133.170.160,145.251.113.71,93.68.62.172,135.230.202.78,109.29.55.87,140.33.223.94,90.97.105.4,158.229.166.38,96.107.216.203,113.79.209.39,164.63.90.202,143.176.50.172,98.52.148.91,168.238.175.191,103.242.67.21,142.153.173.201,142.36.172.217,188.200.42.39,156.103.96.140,126.210.1.214,120.71.189.122,54.20.214.185,153.125.135.160,88.2.142.53,119.223.59.250,151.208.71.185,137.69.206.244,134.229.163.19,113.37.145.141,108.240.7.216,122.146.217.240,149.211.34.232,110.229.72.239,131.238.92.81,117.118.71.64,106.99.95.116,103.199.61.3,128.81.71.27,139.139.1.215,89.56.172.62,108.244.153.108,144.22.44.94,110.89.225.180,140.94.84.64,149.44.9.100,101.118.120.30,144.238.46.237,124.209.45.138,137.9.169.195,100.39.6.172,135.254.94.178,114.207.194.124,134.239.9.53,108.10.206.195,90.142.91.28,121.105.241.90,107.172.35.105,136.198.57.239,116.5.184.200,150.106.71.150,133.115.153.207,116.77.249.241,131.255.254.132,135.109.193.25,146.221.13.145,128.79.247.248,50.163.228.33,147.249.91.99,148.97.103.104,134.56.175.30,112.181.132.89,120.32.29.197,117.219.105.247,139.112.78.247,119.253.75.114,105.240.232.185,123.29.154.39,108.197.57.103,121.44.142.108,88.203.155.113,131.220.161.25,109.215.161.15,175.132.214.111,158.131.23.118,142.104.246.51,107.35.39.10,119.236.177.161,114.159.54.71,153.233.183.225,164.209.222.29,145.39.183.113,150.55.252.231,173.90.155.155,134.102.157.162,101.137.47.30,119.38.102.17,132.24.205.252,79.54.146.144,123.131.213.34,142.231.135.49,127.169.91.183,121.250.247.246,120.70.141.135,157.244.123.157,141.92.181.223,123.119.8.167,106.195.200.65,194.239.39.140,104.131.173.189,142.74.198.134,134.83.16.136,120.192.90.221,140.163.3.244,88.175.214.61,124.221.133.56,117.183.204.196,136.18.82.153,157.148.72.149,153.242.230.208,112.97.233.66,154.241.122.36,91.7.200.104,117.185.116.163,135.245.113.128,86.2.233.203,77.180.37.199,79.183.139.101,92.133.119.185,115.156.62.93,171.241.10.117,131.202.68.67,107.39.56.187,143.119.215.101,135.156.243.78,157.96.129.6,106.232.250.162,100.40.7.105,147.91.210.126,59.221.182.240,131.147.164.12,92.23.152.167,87.134.85.229,158.140.107.76,152.80.18.88,101.128.27.177,88.90.123.223,87.11.184.88,142.6.211.179,80.167.93.223,91.168.86.135,136.207.57.207,125.31.225.170,145.46.40.172,108.61.27.15,131.67.86.42,125.145.126.200,172.141.168.13,116.154.8.66,106.14.61.247,131.250.24.211,126.35.69.85,96.208.25.236,123.22.194.82,128.32.230.126,163.24.72.6,95.154.52.49,96.78.230.121,75.206.133.194,151.171.245.99,144.205.118.174,91.34.119.62,102.150.139.194,112.229.154.146,110.105.95.215,139.110.180.244,130.203.92.97,130.45.114.186,153.37.231.235,97.200.74.80,141.69.35.150,176.152.172.98,138.234.184.173,151.116.92.204,155.101.189.194,163.114.21.169,98.98.197.189,124.40.44.134,106.180.252.17,112.29.161.242,81.227.91.15,140.172.7.125,132.28.199.203,209.209.226.136,143.149.92.42,128.12.26.224,70.156.234.4,143.31.34.153,90.181.74.35,131.141.216.67,145.141.142.195,173.153.149.244,134.192.18.149,89.20.141.205,112.12.163.1,161.104.129.54,130.146.161.225,135.45.106.49,144.28.6.151,102.186.71.106,112.254.2.144,112.121.161.51,163.174.254.43,126.109.95.217,102.155.112.67,120.18.13.215,151.114.147.138,136.196.242.241,157.85.19.216,118.79.98.158,67.70.73.56,105.223.26.144,130.21.254.144,113.116.225.255,156.32.135.122,88.33.62.57,134.4.69.20,121.163.83.22,59.153.125.234,177.52.167.211,101.47.160.93,136.65.55.38,148.24.208.155,114.141.173.136,155.59.238.206,147.65.190.38,104.61.172.58,148.69.180.77,121.194.170.159,81.10.106.169,143.76.74.113,175.167.46.21,140.170.250.24,117.106.105.200,98.223.196.131,129.172.166.215,109.91.223.146,102.247.53.157,112.149.170.18,84.169.235.136,123.4.162.4,134.165.163.83,132.197.233.185,134.177.57.10,102.16.19.137,97.73.125.34,95.126.191.233,119.179.38.74,109.53.230.103,131.84.240.89,189.88.38.154,103.7.8.208,135.10.214.54,88.139.223.90,116.33.66.143,141.142.42.166,73.249.222.52,153.236.106.195,157.171.246.165,140.26.141.53,107.232.201.102,161.245.202.198,131.92.192.123,112.115.171.98,94.8.243.152,120.1.58.129,134.129.129.192,153.13.173.254,111.224.75.75,138.214.189.243,100.239.186.5,97.173.250.170,157.140.100.6,90.238.225.9,150.202.95.83,159.57.42.14,116.24.149.132,112.224.45.19,94.35.93.146,111.116.5.33,147.161.103.232,149.28.55.90,124.70.164.185,91.133.49.209,117.22.92.218,115.167.195.133,110.104.99.102,114.7.88.137,174.189.197.220,132.79.160.223,115.45.110.53,179.124.97.152,133.165.106.118,181.189.73.70,159.84.85.132,66.180.203.206,84.29.240.243,81.200.34.69,101.185.220.60,132.126.214.233,135.23.35.88,156.40.193.206,109.172.180.178,154.203.174.74,131.247.130.160,125.146.18.247,134.90.38.68,156.53.77.167,119.151.105.82,107.80.114.17,118.88.66.68,164.208.84.54,146.67.182.60,100.140.152.151,138.100.71.23,104.87.209.209,167.133.53.29,76.237.62.244,86.160.114.221,148.251.94.131,114.74.174.200,138.30.207.86,114.63.4.243,131.241.195.204,74.172.194.197,108.151.101.199,129.212.145.91,90.62.46.198,122.110.56.101,120.191.94.77,111.228.212.50,129.40.155.185,128.15.132.252,107.81.39.226,126.172.7.173,154.84.249.122,151.91.75.8,97.138.98.51,163.71.40.217,141.150.91.58,172.63.250.139,121.37.84.79,142.63.63.127,184.145.143.29,122.120.173.251,136.247.57.157,170.187.43.210,149.11.248.142,132.143.88.252,180.18.5.13,147.25.38.195,73.71.80.94,123.218.9.203,108.172.182.110,101.61.90.80,110.225.128.72,118.12.155.132,159.100.42.91,88.156.252.67,104.42.79.21,71.64.183.104,168.39.246.47,85.0.221.52,107.126.200.1,175.13.89.201,133.70.222.178,172.136.127.227,127.165.81.94,119.141.239.84,115.37.248.237,82.156.118.193,125.148.223.41,168.224.82.99,152.238.171.164,146.51.249.68,91.227.41.67,159.208.34.118,162.32.55.4,158.241.35.18,103.191.159.179,150.131.125.39,175.62.114.16,174.185.220.155,135.134.49.28,121.244.80.210,95.197.38.149,131.22.101.102,124.79.239.222,140.46.103.142,118.194.171.1,131.238.83.194,151.70.60.133,147.163.244.254,172.52.68.197,150.114.177.238,146.83.209.20,130.60.139.70,108.249.195.30,134.47.19.237,81.217.246.147,107.194.185.48,152.103.130.176,112.110.225.135,150.207.207.30,146.197.252.196,138.59.2.160,119.213.101.113,146.153.254.196,131.161.82.216,121.242.209.139,159.195.218.21,161.171.6.229,196.5.61.245,154.120.247.3,134.178.20.84,63.39.252.39,98.231.81.155,104.141.69.235,109.95.75.20,147.124.23.87,136.5.176.95,140.20.20.1,131.117.96.60,124.154.241.138,138.113.140.158,121.4.55.13,76.41.201.64,103.74.40.190,160.109.223.49,85.66.107.107,169.239.10.58,119.135.184.46,111.141.188.128,133.201.241.118,118.83.173.27,158.121.128.177,97.205.132.16,74.118.191.98,147.47.89.73,102.157.45.71,164.135.190.34,137.146.162.174,120.184.197.130,140.65.7.247,129.77.36.187,138.139.154.152,137.27.238.255,134.150.174.164,100.199.216.90,141.96.31.77,122.114.227.113,100.247.39.112,157.185.114.51,178.210.221.114,161.120.228.3,140.13.177.63,119.234.99.51,134.59.199.202,129.229.200.208,139.33.206.160,121.105.207.161,103.193.210.149,134.242.191.233,106.51.173.137,115.247.133.135,155.26.52.141,114.16.17.55,135.207.162.73,121.251.132.189,110.131.68.25,128.79.83.210,124.54.221.6,109.223.186.173,112.174.191.252,164.108.29.45,145.87.241.123,144.230.181.191,118.54.87.88,121.95.172.62,85.231.49.131,139.118.6.121,99.198.130.192,156.158.82.39,132.117.23.8,123.30.34.80,127.147.52.20,134.189.122.33,107.29.183.12,116.82.10.160,152.144.140.51,72.41.177.65,149.247.55.62,155.0.235.179,139.165.76.155,146.248.253.132,139.138.196.17,153.193.236.60,127.97.238.226,101.54.18.184,119.141.196.1,155.212.50.32,141.194.2.146,112.229.232.213,163.73.79.3,131.15.230.154,89.197.219.88,139.31.175.19,158.96.49.131,167.59.144.218,125.32.132.196,107.192.204.63,92.245.232.170,135.146.74.62,142.157.224.78,147.253.1.163,118.22.25.43,119.108.154.221,113.252.176.127,131.166.124.174,116.81.210.192,145.44.26.113,125.61.0.238,109.90.129.126,134.152.178.152,145.137.83.93,146.123.151.137,166.201.7.128,153.78.71.45,120.244.195.209,134.231.243.174,142.194.32.101,97.145.168.207,153.94.115.149,112.14.167.14,168.184.106.127,170.167.82.193,118.193.137.104,96.112.233.68,112.111.204.168,118.36.124.23,145.42.71.252,134.76.38.139,143.84.205.236,167.28.28.120,126.124.43.210,125.132.118.235,115.22.98.200,112.79.73.249,138.11.33.207,144.23.166.205,118.168.84.1,124.100.140.7,119.138.240.96,128.5.231.1,110.215.150.135,120.206.31.179,155.193.177.26,58.23.165.255,117.116.69.16,88.168.55.50,141.155.207.76,155.71.85.117,158.106.221.60,137.117.116.127,150.181.174.56,131.130.134.244,160.216.170.117,62.135.0.16,81.191.179.190,113.26.150.210,139.218.144.200,154.139.14.28,162.222.117.85,81.6.171.2,159.214.135.84,175.130.110.52,129.32.78.206,92.173.209.162,205.115.23.235,106.47.26.109,142.112.158.128,118.216.203.94,131.106.112.171,175.201.51.40,109.126.103.87,156.36.49.37,171.29.11.147,147.139.55.86,146.78.84.162,159.218.165.48,118.142.78.51,122.23.30.61,115.24.94.208,154.227.138.87,150.2.146.249,150.85.12.87,88.205.253.111,111.136.10.97,108.86.190.4,87.63.143.180,121.149.218.168,120.212.165.104,146.210.221.179,152.7.99.243,103.213.121.47,134.23.109.205,118.61.86.111,137.158.114.219,163.170.138.229,95.155.160.239,128.43.196.114,141.49.15.66,84.157.161.37,156.62.53.238,136.37.65.254,189.250.202.24,149.165.10.42,148.72.223.147,167.145.130.132,120.37.9.41,158.20.197.41,124.93.202.23,143.13.46.233,131.221.13.222,120.181.45.136,102.128.163.62,128.6.21.85,130.238.220.77,129.49.102.182,128.172.121.166,122.123.56.181,142.198.73.137,147.23.163.139,149.171.111.110,127.113.209.133,114.237.248.95,169.25.250.0,123.178.48.150,117.45.122.179,108.157.220.89,124.227.121.46,129.130.207.118,117.250.76.103,125.183.25.109,96.115.164.65,111.43.157.151,99.23.24.20,128.231.83.169,151.65.150.232,113.115.17.148,105.30.52.59,101.37.28.187,142.17.32.178,134.10.3.137,131.157.249.61,156.195.189.70,89.115.128.9,162.233.95.195,87.102.1.20,154.129.120.153,134.1.155.248,114.119.129.201,144.233.155.189,151.3.38.104,121.175.200.242,150.117.162.106,171.5.218.154,156.20.190.210,163.207.54.31,105.172.27.251,99.72.84.14,81.204.122.148,152.215.94.34,107.143.95.15,105.113.226.100,97.231.86.16,122.77.0.70,114.204.169.126,133.173.90.40,101.29.229.215,120.24.232.38,131.212.177.160,169.85.111.172,159.73.212.228,119.188.15.170,167.217.135.148,153.152.129.147,106.151.108.100,112.214.29.72,120.228.55.30,164.161.87.12,121.19.55.115,160.250.102.132,125.121.9.14,181.36.88.230,169.235.39.40,79.158.29.86,150.107.69.30,115.9.136.201,86.146.156.173,110.67.112.84,158.237.49.81,115.177.5.67,162.104.28.8,136.3.60.121,142.43.137.29,94.16.221.1,102.47.155.20,120.255.51.78,121.74.131.255,122.245.183.95,156.131.243.13,108.170.222.251,144.113.97.205,99.144.69.138,99.235.239.24,133.115.188.174,177.206.67.114,150.214.190.178,74.67.117.216,110.207.193.11,107.232.55.237,96.24.153.45,161.97.223.52,128.135.11.209,88.43.140.84,135.237.190.216,120.136.13.86,101.255.119.200,140.44.121.178,104.193.0.104,127.85.161.209,109.59.10.239,83.74.219.254,113.46.200.0,122.227.183.150,138.173.184.247,144.122.116.249,115.45.250.226,133.50.156.41,117.202.171.104,130.245.6.184,92.125.51.28,142.72.108.152,125.8.195.120,123.188.15.32,146.227.82.94,98.127.117.41,147.236.132.238,100.192.155.145,135.220.1.244,122.50.20.172,116.32.235.248,144.183.99.16,153.212.127.175,141.119.255.167,133.37.31.148,124.111.44.19,80.141.98.172,97.50.94.159,155.85.102.202,125.28.242.50,123.16.177.192,128.4.149.202,132.158.74.203,124.15.20.212,147.10.138.70,118.7.148.109,96.96.171.17,143.133.4.183,168.51.32.159,114.226.226.168,151.237.222.92,123.130.53.201,128.38.180.179,138.80.222.23,114.198.237.174,142.176.147.138,113.204.242.237,119.78.235.46,134.76.60.212,174.81.25.10,129.47.196.255,104.29.180.178,159.138.186.236,125.31.1.163,148.95.131.75,118.19.215.230,119.0.215.46,101.227.125.119,148.59.159.128,139.143.150.75,99.196.235.168,111.52.252.208,140.223.99.207,105.229.128.136,144.73.216.245,85.43.69.145,148.224.22.182,115.206.121.181,117.156.124.147,154.150.245.85,107.233.129.65,99.186.79.168,166.247.6.11,106.53.16.161,142.243.57.0,143.205.128.115,135.242.190.114,139.112.146.75,113.218.221.71,151.228.176.54,148.191.73.252,137.99.26.239,77.62.26.88,112.15.152.168,113.113.15.231,162.19.249.151,154.69.26.13,118.139.207.68,167.60.2.20,133.147.120.229,144.241.126.230,71.216.167.127,112.179.123.205,109.173.239.38,125.96.105.177,136.239.210.248,130.172.179.40,103.48.182.4,172.64.31.100,146.140.231.60,140.235.75.238,160.102.198.233,121.127.245.181,127.156.244.18,167.83.194.17,161.231.116.162,89.165.85.109,181.202.248.187,136.172.223.92,115.108.232.45,121.255.133.244,115.57.144.116,112.242.161.206,154.213.199.172,175.154.190.3,160.85.98.210,143.78.206.252,149.187.157.154,106.67.86.129,169.87.170.4,170.164.35.30,93.238.3.73,109.84.13.187,168.31.37.70,125.40.34.173,120.114.168.209,70.60.108.20,128.53.246.15,115.147.197.121,114.246.8.231,89.141.203.65,141.161.130.158,200.250.77.215,114.78.244.245,126.163.46.34,138.198.13.125,110.24.136.94,142.216.133.134,129.25.214.88,113.139.237.169,126.245.164.97,145.236.240.3,104.142.254.77,131.240.242.139,130.66.157.37,107.110.217.43,160.119.90.17,96.77.15.248,147.124.227.31,105.116.143.145,123.13.187.34,156.87.22.113,135.145.213.97,80.235.215.16,107.103.164.5,105.24.120.110,104.150.3.24,139.12.47.38,133.67.86.200,94.42.76.130,213.217.60.232,131.38.12.185,80.88.75.223,123.94.49.157,112.192.58.130,107.66.151.138,106.11.188.252,161.23.139.53,137.97.180.147,127.217.251.187,125.9.100.94,129.83.8.206,117.143.134.36,101.179.68.249,80.203.48.155,132.0.128.238,117.37.141.220,105.83.66.36,120.217.78.252,139.2.199.37,128.38.96.73,146.111.107.65,143.129.89.139,148.18.169.234,132.241.157.146,108.148.185.154,183.23.66.116,171.110.255.206,96.233.74.225,132.249.87.38,82.31.138.114,158.57.57.180,129.159.9.151,103.34.159.110,53.203.71.212,70.139.110.169,182.98.79.136,82.11.92.59,147.94.206.245,109.189.27.108,136.235.26.213,156.113.102.160,143.176.68.0,157.35.142.128,137.41.119.41,116.143.77.0,180.198.31.139,157.87.42.166,95.90.120.154,98.147.193.255,147.222.113.42,137.153.193.164,134.182.126.78,133.242.226.218,111.242.100.221,136.17.227.163,179.150.118.50,123.168.196.169,96.112.53.94,67.142.147.72,147.14.168.23,130.134.199.137,136.28.39.209,129.27.110.143,93.204.55.110,157.181.147.182,180.218.181.78,135.126.137.72,138.164.91.198,131.64.219.170,141.222.54.211,119.193.116.123,101.253.217.168,140.61.220.249,123.189.136.155,130.194.128.154,93.232.107.237,150.73.190.199,132.158.254.183,113.228.37.12,92.47.25.187,141.140.101.129,130.135.113.49,143.5.65.3,134.124.56.96,167.202.84.100,119.144.198.131,119.58.82.117,130.86.193.142,167.15.127.169,120.92.189.246,130.128.220.173,135.17.218.34,126.104.223.187,126.24.9.138,110.245.82.163,107.176.228.154,117.152.36.193,127.92.9.80,139.248.98.207,93.67.187.6,169.83.182.101,122.67.90.127,123.239.207.220,160.80.71.226,120.39.109.119,143.37.51.18,112.140.186.39,87.151.221.190,132.30.38.180,119.212.127.168,152.101.105.210,91.68.77.45,152.36.78.45,115.117.249.94,145.140.153.237,144.3.74.53,134.142.19.4,129.84.157.241,107.188.54.104,146.127.14.53,134.236.107.193,164.17.30.156,117.98.122.90,154.117.54.109,184.146.185.19,117.245.147.230,116.118.196.57,126.41.206.235,125.199.53.160,110.240.252.76,142.5.187.238,125.233.34.70,135.198.161.111,119.7.84.84,196.192.225.158,148.154.79.152,144.134.169.1,142.88.50.232,111.47.12.136,142.161.4.59,98.22.244.106,178.235.231.206,149.16.104.9,74.95.20.80,138.161.199.56,120.11.139.146,140.28.217.175,129.154.206.195,146.25.35.217,128.51.35.201,106.93.234.127,128.73.67.169,153.240.95.213,125.164.164.225,114.171.234.110,133.234.211.237,105.90.153.104,117.80.99.253,115.254.117.202,115.11.162.41,192.151.186.9,182.225.73.98,100.185.214.230,128.91.242.107,109.221.10.40,179.164.72.231,181.4.91.63,131.4.153.139,105.140.40.20,122.120.135.205,158.206.61.88,143.203.221.136,93.123.76.164,134.173.240.93,143.3.137.5,150.201.98.125,103.100.54.112,111.0.118.228,87.212.232.75,136.186.201.81,137.180.117.105,157.42.90.148,60.31.31.14,120.153.22.122,172.13.53.122,129.48.66.122,122.247.22.218,124.117.82.193,122.81.79.179,132.66.54.147,131.105.167.189,101.182.179.65,143.237.209.89,134.179.5.10,139.88.207.241,100.244.188.84,160.16.169.50,116.165.138.49,136.249.200.106,167.15.119.106,146.233.215.99,82.218.94.216,128.135.172.43,134.47.205.203,128.76.84.183,101.189.178.45,140.189.246.21,120.99.204.81,123.215.74.60,153.85.59.109,115.215.246.255,114.22.202.35,109.203.38.68,134.101.80.102,121.71.221.144,73.55.218.131,110.111.22.137,139.0.236.129,125.104.86.215,127.69.227.185,187.4.198.150,90.178.81.78,134.92.178.62,94.17.129.229,101.221.224.252,126.165.126.189,97.201.182.203,127.143.237.245,139.107.17.187,145.152.65.212,169.162.107.15,116.154.177.121,147.69.111.239,97.41.201.139,149.0.103.74,127.27.33.246,125.140.93.137,122.34.33.109,121.240.139.29,148.202.29.65,108.120.193.194,142.104.133.145,139.230.144.191,120.83.65.27,90.55.89.133,134.20.9.154,173.238.215.12,138.84.183.138,105.187.129.116,102.53.205.217,116.44.0.181,145.242.59.79,154.43.86.69,122.252.214.55,150.89.133.232,177.153.158.124,130.126.115.31,140.39.229.16,177.160.81.192,78.191.151.95,119.159.4.11,168.250.159.225,133.204.148.207,151.105.99.141,97.247.93.128,169.30.94.201,155.123.159.184,153.117.232.225,115.145.211.42,134.27.140.233,127.19.240.38,164.83.12.4,98.223.31.113,126.30.251.184,85.88.248.44,135.98.29.183,143.9.209.136,113.58.0.140,118.79.71.95,160.12.5.38,122.136.21.58,99.74.225.157,113.105.245.166,111.173.104.224,141.63.177.88,123.12.187.0,152.253.239.201,123.255.168.145,124.130.211.250,138.146.197.193,123.185.221.89,119.18.114.255,123.127.39.127,161.122.129.52,128.34.98.152,75.74.20.175,99.169.211.120,130.38.180.122,164.106.145.186,70.178.150.149,102.246.4.145,80.196.175.245,127.86.14.210,120.94.123.137,150.64.206.225,80.197.34.90,138.96.241.110,135.249.83.193,165.135.176.112,134.186.215.57,134.180.4.139,153.102.90.52,129.80.116.3,105.152.172.65,126.15.113.163,123.241.73.155,76.198.41.168,95.121.44.197,136.70.84.40,121.251.42.69,95.231.144.177,135.121.146.161,140.73.251.250,151.147.169.65,132.182.192.237,146.15.21.60,158.221.125.171,70.48.13.128,157.194.34.57,105.58.226.180,133.120.17.149,152.123.226.130,109.172.114.217,138.246.61.66,140.105.238.253,119.92.94.124,114.84.253.191,97.178.179.118,156.76.241.141,129.209.207.151,133.158.153.225,119.221.77.29,168.63.39.143,88.132.13.184,92.212.217.155,159.27.142.25,90.251.232.173,83.216.108.242,148.148.12.16,142.227.65.207,125.177.244.48,109.230.35.98,103.245.79.130,109.103.43.53,126.176.71.86,141.200.118.118,113.153.14.50,86.238.241.212,128.174.216.85,109.48.10.36,135.252.168.35,71.158.184.47,107.31.3.186,140.135.234.204,103.65.204.78,164.151.199.104,147.20.61.175,106.211.72.45,130.219.151.180,127.24.228.230,93.228.169.222,132.76.232.255,138.123.178.113,160.13.149.212,153.26.119.217,84.35.105.235,141.229.5.20,157.66.6.58,116.24.2.17,107.185.102.66,138.78.81.141,121.141.94.27,116.223.130.178,119.127.236.232,116.123.57.251,74.34.197.144,100.68.215.16,139.71.188.193,128.130.43.54,147.226.250.41,70.218.89.165,171.180.162.70,100.72.145.215,141.17.229.157,120.1.73.127,121.128.147.105,161.184.119.35,131.235.217.194,124.147.191.213,69.128.210.177,121.35.87.19,95.49.129.197,119.124.81.43,101.58.126.87,137.146.161.113,121.175.210.201,94.62.232.78,116.164.143.167,136.117.16.117,120.67.197.169,103.59.253.100,141.163.181.82,138.34.123.134,108.5.144.28,123.185.23.65,114.247.239.133,104.34.211.251,106.157.224.210,76.66.119.225,137.231.124.123,201.79.223.202,136.9.196.86,146.77.81.166,165.38.55.59,98.9.89.64,112.116.22.152,77.191.208.109,147.89.68.49,112.156.251.136,126.149.114.83,72.90.250.57,165.6.252.195,147.255.127.195,115.137.239.101,201.107.97.140,92.247.85.140,94.105.38.142,147.107.112.55,150.223.223.84,113.228.121.70,119.146.135.110,116.168.111.15,113.35.146.170,118.255.115.87,122.64.48.7,145.235.150.225,152.71.189.210,134.51.109.103,130.145.55.104,110.45.176.46,91.239.204.114,123.99.197.123,104.131.236.190,91.123.204.211,160.230.12.78,138.151.67.156,175.36.234.214,158.84.104.168,108.151.34.112,93.133.227.159,98.158.16.50,108.151.159.94,87.214.151.183,129.137.162.66,99.153.101.27,92.247.164.81,135.234.48.66,138.249.61.238,131.179.150.75,153.19.103.145,137.42.96.16,132.216.13.56,98.95.227.249,95.138.124.233,116.207.15.100,142.118.71.13,131.74.190.179,139.49.104.178,127.181.165.101,158.92.36.113,92.7.35.180,206.8.39.76,130.74.158.31,104.243.164.81,114.83.55.109,52.33.93.182,151.48.245.132,139.177.242.60,136.121.56.23,175.200.30.98,147.181.94.14,177.108.11.45,141.53.80.94,152.206.228.11,164.163.136.16,152.53.1.212,120.159.243.243,131.224.239.31,112.68.189.68,109.83.200.17,95.116.252.206,120.72.128.165,130.241.243.108,85.153.185.214,132.76.97.144,132.75.140.152,132.96.191.218,142.10.154.165,89.61.110.103,89.87.195.128,143.12.221.21,87.217.77.167,126.149.184.232,136.118.240.87,112.169.104.204,113.208.160.179,169.146.229.155,97.96.41.41,156.58.147.114,154.185.46.193,97.117.195.130,92.227.233.254,143.211.128.217,103.236.196.92,138.135.118.67,123.48.253.39,157.55.72.101,155.201.67.67,131.20.36.37,160.201.19.166,112.9.26.96,153.219.226.13,82.229.89.64,137.74.1.56,123.138.195.84,139.55.89.0,133.7.240.153,120.73.36.194,94.155.140.74,112.198.33.52,111.2.31.173,112.83.228.194,122.129.16.162,121.238.52.39,110.149.205.23,163.32.132.68,113.38.9.151,92.251.227.193,122.246.238.90,175.193.246.47,77.55.179.101,108.53.169.203,108.23.189.79,77.149.159.252,113.37.105.253,136.104.159.30,169.103.161.177,118.197.134.27,122.239.138.6,154.230.205.108,132.114.213.59,135.247.40.104,118.31.141.234,180.29.91.52,173.181.36.52,97.171.188.89,122.54.221.63,121.93.91.68,152.171.234.164,114.111.106.13,144.255.157.69,94.139.162.154,129.210.182.162,138.82.39.75,94.240.229.237,116.78.87.18,152.73.53.9,182.32.151.0,138.249.29.4,132.225.97.113,163.244.21.161,136.174.132.52,106.138.121.80,124.21.63.166,99.97.7.27,139.129.178.240,143.50.176.198,112.75.102.196,108.193.186.82,155.204.35.96,71.226.221.250,150.194.233.117,109.128.221.2,173.186.210.85,144.102.152.207,101.217.181.43,104.135.242.71,149.0.79.115,94.150.123.35,135.157.226.163,128.115.82.223,96.91.207.102,145.1.131.78,122.190.135.196,127.62.52.75,126.190.154.225,147.21.100.20,122.107.104.40,151.108.107.191,97.91.121.10,127.229.165.14,100.73.111.118,91.86.170.184,144.191.81.231,177.254.239.48,137.87.46.6,115.45.200.254,133.36.0.156,124.254.29.103,161.19.137.182,141.193.216.102,132.165.24.83,156.181.126.135,171.55.200.193,135.200.224.180,111.47.62.161,165.204.21.59,132.126.15.95,146.27.242.63,154.46.38.45,114.250.106.49,94.70.213.45,121.82.137.124,169.86.47.224,119.244.50.164,123.92.177.189,104.225.104.230,152.29.106.194,123.81.73.213,103.75.152.162,125.166.15.209,79.227.114.63,115.62.2.31,129.247.61.159,126.210.185.227,152.176.20.81,95.250.81.116,128.204.159.212,141.124.18.199,136.218.186.187,139.148.246.106,136.1.204.147,131.253.197.164,91.242.9.93,124.28.216.139,127.181.163.74,153.146.121.63,129.61.9.215,112.24.188.1,126.63.89.119,109.117.197.95,132.151.236.97,118.194.246.37,130.20.37.130,143.52.174.191,93.30.226.114,121.223.206.241,103.117.33.238,130.25.28.4,133.107.24.200,120.22.5.243,164.222.223.23,147.164.240.211,160.183.177.13,153.8.223.187,175.72.56.115,142.47.111.187,143.233.226.16,118.170.89.180,92.128.147.175,113.241.247.84,137.229.196.26,149.230.18.72,108.28.206.118,76.250.19.85,140.138.90.120,149.87.230.18,113.180.111.59,150.61.20.94,121.245.233.28,140.66.135.94,133.210.112.88,115.66.50.217,104.56.24.149,110.209.56.94,165.239.197.54,94.176.131.138,142.141.173.85,119.66.225.204,129.164.111.164,110.45.137.182,151.201.52.203,120.98.2.131,115.137.113.167,108.11.93.89,125.223.65.208,141.24.61.60,126.240.165.27,169.27.92.232,127.2.131.95,104.81.243.190,101.221.141.16,133.196.247.201,160.57.162.202,136.114.202.200,134.143.62.176,133.210.254.196,132.212.224.122,106.134.225.44,114.250.24.208,136.6.32.103,178.32.29.160,152.232.122.54,154.238.30.43,146.254.24.218,91.237.214.89,157.215.198.36,58.35.98.108,119.26.87.252,143.102.188.243,132.233.124.173,140.139.193.221,101.169.241.102,99.45.68.143,127.239.197.133,117.254.229.37,98.48.31.181,106.221.206.152,131.221.123.249,75.219.40.48,88.243.110.250,154.206.5.66,128.193.84.8,191.22.141.115,139.111.125.110,145.109.88.148,108.68.166.148,167.32.227.185,124.98.138.152,84.112.224.221,86.181.251.53,114.52.7.155,135.82.93.50,69.119.16.213,108.54.208.166,117.68.175.115,144.50.147.192,121.240.28.169,88.239.152.246,130.129.101.185,183.122.213.42,119.138.84.236,129.241.76.249,151.18.91.224,100.18.45.254,65.30.143.145,149.44.197.76,113.210.149.75,175.247.43.186,102.105.20.95,124.155.125.173,88.203.151.37,111.134.34.54,130.191.247.15,115.201.122.59,159.26.135.178,129.85.124.0,112.35.74.245,154.30.67.211,76.150.100.110,129.31.85.236,142.58.51.125,144.115.57.126,145.226.107.203,124.182.156.173,152.74.51.149,127.170.143.252,77.239.197.130,125.38.98.146,107.197.17.52,103.212.27.62,118.98.63.166,108.43.3.221,122.219.208.86,162.82.27.249,159.49.140.30,168.106.152.170,111.150.2.253,135.20.199.58,178.122.25.142,142.173.115.8,102.30.137.236,147.60.253.31,152.146.129.32,118.149.5.83,109.138.150.219,137.106.234.191,147.75.25.80,139.195.10.134,87.84.254.9,120.242.147.212,92.44.37.178,95.151.190.195,147.95.86.113,123.223.73.153,130.189.45.109,112.94.234.217,154.223.172.31,105.37.41.0,80.231.250.221,138.102.244.180,140.62.53.75,127.14.164.14,185.97.199.195,128.146.203.41,117.89.199.89,131.86.117.49,116.113.54.2,157.132.173.62,89.217.108.139,99.126.139.183,126.2.33.233,112.60.182.251,122.130.234.43,127.204.19.45,162.130.177.82,146.107.8.218,96.135.191.235,102.18.37.100,118.248.47.127,180.250.125.78,108.213.27.243,115.11.196.2,115.133.215.172,122.112.79.206,66.116.14.189,148.16.197.83,100.106.29.93,155.68.17.177,157.250.119.63,80.209.19.37,160.123.93.253,98.208.62.110,93.255.206.184,118.67.107.72,103.134.167.181,82.28.208.207,142.255.54.34,146.212.205.56,138.121.223.191,116.2.153.143,149.57.238.75,137.174.216.153,109.118.114.14,143.174.173.28,104.87.137.10,94.11.121.135,129.45.51.177,135.82.198.135,95.23.104.120,170.203.125.6,118.116.158.246,149.99.31.243,125.176.148.165,75.158.85.193,82.246.72.224,156.159.237.56,102.33.7.248,188.110.152.157,127.241.130.104,152.194.19.232,118.195.0.174,108.129.181.244,156.146.92.20,106.89.136.67,79.196.163.17,87.39.117.217,151.206.144.235,118.114.124.176,140.163.161.129,139.252.23.21,104.254.155.112,130.187.13.27,147.148.239.8,124.192.189.196,133.142.107.167,125.22.42.114,151.109.84.120,100.234.16.180,153.32.29.198,102.81.74.166,109.144.209.212,129.134.99.240,107.27.55.34,139.113.47.183,148.143.28.6,168.29.78.185,154.243.240.72,147.77.213.132,142.204.139.51,137.202.65.105,131.214.126.28,147.252.21.89,113.161.128.76,130.248.101.206,180.0.72.29,145.41.187.252,136.199.62.200,132.177.199.140,173.228.255.11,66.69.133.85,131.18.149.91,115.106.215.162,103.29.81.128,91.210.47.218,123.94.117.111,122.231.183.90,116.159.183.194,137.208.202.47,114.176.100.153,126.0.165.195,152.97.3.86,98.145.144.81,138.84.13.120,116.137.27.1,122.56.6.181,140.16.153.11,135.211.146.62,135.246.202.72,142.9.169.50,141.102.113.179,151.234.88.7,120.105.129.6,144.123.9.213,171.23.45.27,108.248.163.103,131.180.228.62,139.61.0.145,176.82.244.171,96.44.191.224,162.210.86.217,133.8.227.161,110.194.191.26,108.93.233.25,112.140.129.89,97.220.10.50,119.134.171.223,110.197.248.225,168.229.201.194,158.135.57.219,128.1.252.165,133.66.137.13,139.164.35.13,155.60.95.228,149.15.80.163,59.94.5.158,94.79.231.93,114.161.111.48,150.194.225.214,154.181.45.93,108.229.104.28,136.123.186.145,120.119.110.234,137.67.132.23,159.105.162.152,116.249.220.96,180.53.107.12,114.153.159.22,115.230.110.147,147.93.49.230,114.24.176.190,100.9.143.52,114.80.109.161,158.18.27.168,125.62.113.122,121.250.125.246,143.56.149.59,110.209.45.170,166.146.95.164,106.96.110.118,162.97.58.248,163.24.191.233,66.199.198.25,112.142.193.246,130.139.47.154,164.215.194.243,138.4.94.156,131.139.219.128,100.97.253.253,134.58.36.150,146.131.124.237,173.35.73.36,114.33.80.1,113.121.13.106,144.103.81.202,110.97.238.81,143.188.74.117,130.228.69.243,102.228.111.53,124.115.104.243,138.40.154.247,108.199.114.109,126.177.235.150,86.248.31.84,121.98.211.77,93.67.194.143,146.192.109.103,122.187.117.209,160.244.128.204,105.126.157.200,171.32.229.255,118.236.241.126,108.224.9.49,108.212.133.242,109.251.79.245,124.102.174.186,124.220.159.130,70.137.14.175,115.202.187.4,118.171.36.136,172.125.92.1,146.237.192.89,106.101.39.223,110.237.219.156,190.12.220.63,151.147.105.180,152.213.74.186,148.76.15.56,99.250.82.16,108.50.242.250,128.135.127.3,150.191.154.64,113.252.49.111,125.227.241.206,139.90.139.135,163.179.220.36,160.191.20.51,114.131.89.245,123.93.78.2,110.108.28.93,113.8.139.219,120.157.165.45,114.96.41.75,102.153.35.47,122.108.161.119,94.175.248.139,150.251.79.254,124.206.43.163,115.188.113.80,173.212.165.133,118.198.52.158,150.42.194.42,117.94.34.9,114.71.139.31,101.23.111.83,161.142.187.47,125.99.56.140,74.198.214.124,149.255.199.67,118.168.4.228,173.13.35.172,159.72.69.19,79.129.33.44,148.178.131.71,162.217.205.44,95.119.82.34,163.118.243.74,123.87.239.101,163.76.108.104,130.224.28.64,97.229.247.22,142.240.85.29,135.140.61.230,115.125.45.124,120.175.218.9,98.195.8.110,142.151.107.225,168.183.120.248,104.245.184.255,143.187.240.70,126.36.247.79,109.208.227.182,136.104.9.252,102.61.13.46,107.246.180.90,121.14.70.26,92.19.50.208,128.201.253.161,129.142.32.93,160.128.215.165,176.45.180.205,155.112.45.36,127.156.17.147,132.36.99.37,145.149.22.189,131.12.175.169,136.45.236.11,110.80.87.14,116.134.48.180,157.252.96.87,135.47.96.151,111.3.190.85,137.165.199.87,136.86.111.237,143.255.89.63,132.85.44.66,101.175.112.157,86.94.69.127,157.141.219.64,130.99.3.65,92.7.100.223,118.38.243.29,93.245.201.24,146.4.181.255,160.186.85.38,109.88.107.143,131.127.147.80,161.34.81.135,145.36.166.242,128.203.158.121,122.55.199.240,142.34.67.127,125.18.207.112,139.29.232.110,112.71.2.12,123.141.95.101,158.220.178.118,86.78.123.160,142.19.132.24,105.20.125.212,133.164.61.52,122.255.65.131,158.87.200.176,124.102.45.42,148.191.163.246,97.66.59.56,120.60.56.81,110.156.1.80,130.69.41.122,122.12.67.190,89.144.81.65,111.127.104.57,142.133.124.164,116.143.64.28,156.122.255.84,103.150.135.208,147.18.152.196,105.250.30.48,136.251.17.131,105.215.245.110,124.201.172.52,147.154.138.200,118.66.11.3,116.70.93.105,150.145.151.36,147.50.255.51,129.234.153.102,96.226.14.13,118.25.139.216,133.155.119.88,168.153.131.158,72.237.182.235,157.66.110.183,143.145.190.47,172.62.133.15,142.28.208.35,118.234.100.197,158.105.148.200,125.113.9.129,102.249.188.176,157.92.27.129,131.119.143.154,121.46.27.157,122.57.10.17,105.82.98.241,157.117.5.253,83.251.173.13,145.228.7.164,142.42.195.215,135.0.203.132,145.246.194.125,83.60.152.234,147.43.57.208,114.65.84.211,147.138.154.99,67.33.242.100,142.23.251.221,72.190.195.161,120.42.242.187,149.211.6.80,147.91.90.150,115.227.76.115,143.216.87.178,111.200.34.8,124.174.237.110,140.124.58.246,144.138.95.150,111.49.1.156,122.62.2.221,84.114.35.123,124.88.118.145,120.179.66.212,163.161.165.65,131.41.56.200,140.199.100.255,129.204.219.86,133.195.245.8,112.160.181.241,140.40.24.63,117.198.247.120,136.73.141.91,168.228.136.186,142.230.26.8,139.38.85.18,108.114.229.67,162.119.102.165,126.107.166.113,107.101.128.113,110.156.201.4,154.119.244.8,153.231.178.22,156.81.243.41,104.215.118.35,109.225.239.40,120.110.35.226,108.177.62.252,114.223.54.104,106.202.153.47,113.216.197.114,130.212.14.87,132.182.59.57,80.83.5.54,126.188.121.74,111.7.52.157,130.187.243.224,150.140.124.214,137.80.182.65,91.152.228.205,113.13.1.118,84.91.18.136,127.65.14.249,101.114.81.111,131.28.193.192,111.41.207.140,120.140.18.230,94.234.8.91,117.251.57.172,112.178.230.245,157.161.92.229,145.85.18.66,157.231.128.183,147.48.197.18,159.220.227.164,118.172.208.182,102.152.170.10,162.90.134.154,111.178.17.132,151.85.124.178,137.18.214.240,143.87.106.253,161.243.51.24,111.144.197.163,86.123.118.250,139.127.118.202,102.10.102.242,83.80.39.120,122.126.171.188,167.77.5.169,95.22.38.219,123.255.89.173,128.92.167.49,96.7.163.21,141.205.209.55,90.85.127.34,149.13.15.208,111.103.118.38,105.15.101.19,106.157.70.122,141.140.156.139,125.124.217.53,153.85.251.252,117.64.227.45,131.25.67.108,101.157.181.8,206.152.110.71,163.130.60.81,132.38.171.100,126.169.104.112,145.103.41.229,140.20.31.108,111.186.215.220,77.123.10.202,145.172.192.51,107.235.97.104,152.10.123.27,169.22.126.232,103.53.67.151,153.201.234.208,141.81.107.198,149.195.13.29,143.54.58.94,173.191.190.40,126.2.149.243,152.145.34.47,141.124.42.127,71.30.39.169,98.185.230.10,102.206.159.129,157.119.71.25,132.230.193.123,81.130.11.221,122.174.156.38,120.8.160.42,123.198.168.244,146.255.243.35,100.241.24.113,119.42.196.154,168.212.226.122,122.29.56.172,184.214.46.172,116.162.182.127,146.59.130.79,135.31.65.85,108.57.186.237,106.201.62.98,159.59.205.40,104.119.14.87,119.223.54.125,96.142.141.243,150.41.119.159,157.86.231.147,103.56.194.128,186.243.157.53,120.189.68.6,122.59.149.215,155.62.223.69,84.234.239.223,133.211.20.91,145.117.206.18,133.152.62.187,137.209.196.15,147.23.239.54,122.27.181.67,128.171.72.127,95.21.193.47,133.194.58.43,135.130.119.73,152.98.47.144,146.202.164.74,105.202.187.130,141.62.35.44,159.126.76.145,104.104.227.146,151.187.238.34,171.150.140.27,118.60.160.54,141.50.189.82,131.214.149.21,115.159.201.138,119.216.106.122,112.16.112.149,91.148.141.248,105.55.39.155,87.108.209.40,140.114.84.216,165.72.243.123,118.101.215.242,110.118.35.190,137.204.7.102,135.147.130.107,104.191.109.210,121.99.178.179,148.89.199.252,149.247.102.83,141.26.103.229,112.229.62.54,99.247.46.122,130.97.126.50,140.146.57.91,117.20.215.23,159.95.136.182,147.183.157.238,124.163.197.202,140.15.59.141,137.83.21.75,104.29.171.145,100.210.140.164,164.69.71.62,136.135.224.25,129.236.185.78,119.222.166.161,99.180.97.29,141.90.17.161,121.7.41.140,103.242.48.67,176.1.111.124,135.15.181.39,136.237.98.246,105.151.76.126,143.60.118.112,124.181.222.115,136.147.108.230,142.191.142.180,165.105.57.44,99.160.96.242,101.40.129.176,153.38.202.252,142.217.169.35,116.186.129.16,120.147.179.21,144.206.107.8,124.132.91.154,170.104.135.161,144.239.60.113,82.205.238.47,122.96.80.1,120.86.251.87,155.160.79.249,130.99.252.174,92.43.117.188,123.212.164.106,167.192.109.134,123.176.25.90,104.174.224.12,136.171.182.143,170.106.249.29,135.199.21.86,96.85.127.92,153.7.57.68,181.162.91.94,148.189.154.40,155.107.72.81,113.121.181.228,113.3.78.40,104.26.147.131,114.206.129.235,111.119.3.218,149.88.185.58,125.33.31.91,156.25.15.1,136.11.218.99,127.223.147.9,86.182.199.9,102.114.237.175,151.126.223.131,133.135.22.185,128.127.167.122,135.166.183.3,103.128.167.198,128.13.180.193,110.156.248.253,109.96.126.177,144.224.206.241,154.197.59.16,146.251.73.156,164.123.49.7,126.253.108.232,107.214.21.206,126.214.165.122,111.34.142.80,116.22.5.88,134.165.26.98,122.155.208.137,171.180.52.19,106.212.151.195,139.148.66.69,117.14.190.111,113.27.177.109,119.218.133.223,137.88.118.9,83.119.15.103,130.67.155.9,110.229.219.96,114.116.139.32,152.181.100.137,170.209.148.56,84.142.36.52,112.183.146.100,132.98.56.221,130.35.192.70,144.68.141.230,130.224.184.13,105.26.222.215,135.120.204.69,95.169.63.29,116.26.239.116,155.223.65.157,116.102.116.16,154.45.208.217,146.180.111.133,133.249.65.29,146.228.153.172,132.112.239.4,145.25.145.16,143.251.226.206,93.204.245.196,141.139.85.248,95.158.124.29,142.186.232.8,153.53.228.135,124.77.118.61,99.14.216.97,88.75.174.18,146.148.85.212,83.38.233.52,134.79.183.101,114.30.130.176,123.140.212.71,117.132.20.193,121.140.58.5,170.13.226.145,150.182.217.29,154.106.126.170,148.144.146.189,123.34.23.12,105.173.195.126,141.29.204.155,66.65.124.135,169.196.242.212,135.75.38.183,149.85.179.238,142.132.139.98,117.56.225.52,83.117.185.129,146.50.138.130,86.194.239.87,109.124.245.220,132.129.23.59,124.194.53.16,126.100.90.201,175.91.134.60,117.206.97.95,154.102.133.1,138.37.183.74,154.33.188.191,130.217.56.43,97.150.192.170,117.235.127.253,137.68.195.32,123.120.242.83,118.6.209.136,52.8.30.48,147.69.154.230,118.21.203.98,141.114.179.76,140.142.164.220,138.164.174.194,158.90.166.251,155.237.230.201,148.166.153.115,74.213.75.155,110.82.81.128,150.33.112.30,137.18.251.219,109.140.59.210,141.234.177.18,132.204.253.127,113.127.85.84,136.139.220.110,116.223.26.220,137.11.212.62,150.117.38.230,125.88.241.76,107.181.235.68,180.211.37.12,111.45.189.63,142.180.108.186,132.137.110.120,165.167.237.237,116.122.131.207,129.118.80.14,163.29.71.94,119.143.52.103,104.1.107.207,130.63.101.104,135.0.227.234,143.241.58.191,169.100.163.114,119.89.90.8,96.173.99.88,126.90.84.107,149.79.16.238,93.181.46.185,117.201.195.134,80.217.80.173,160.130.200.72,137.136.174.195,166.53.157.217,156.205.173.242,127.7.180.173,80.94.112.252,129.220.157.239,119.128.96.53,138.91.192.254,169.90.6.252,220.158.15.114,186.162.24.76,163.199.228.52,108.243.3.8,95.246.111.251,103.161.31.157,141.148.118.218,111.120.209.46,164.167.118.78,111.96.174.231,145.77.250.207,112.242.203.244,138.248.56.121,139.137.117.251,116.167.156.172,97.200.21.146,106.134.239.45,158.54.157.217,136.164.84.65,106.108.150.60,152.202.192.231,103.76.65.35,111.119.52.162,140.248.230.193,86.60.61.122,100.92.213.34,124.176.226.26,140.72.114.34,100.61.229.226,82.158.57.37,133.236.185.96,123.134.199.122,110.96.113.170,138.30.172.1,132.62.220.67,151.98.150.72,121.85.42.114,76.174.232.239,171.14.253.212,86.183.67.206,127.137.220.95,120.221.89.14,140.26.8.148,115.245.160.192,114.145.106.1,135.8.155.35,174.255.232.87,89.31.137.166,104.213.153.247,126.65.228.196,161.91.175.202,152.105.233.93,99.152.79.122,142.167.254.208,143.110.128.247,112.166.125.190,88.14.14.84,170.108.143.243,142.176.100.19,129.24.166.173,112.195.252.228,110.214.8.48,136.31.135.202,98.31.208.5,146.218.49.57,115.192.156.139,157.185.189.193,135.187.15.108,85.57.3.62,170.19.248.53,99.81.76.78,102.223.173.202,121.251.5.233,101.28.7.220,135.204.55.239,91.166.156.81,148.204.147.203,143.62.27.122,109.249.1.3,150.184.84.231,166.213.21.228,105.217.132.102,128.172.18.149,90.40.185.47,152.87.225.41,175.46.17.142,177.39.24.66,142.127.116.89,115.194.242.166,58.132.143.31,121.125.109.251,147.58.23.149,118.171.41.136,107.33.170.42,159.251.158.189,105.110.111.234,94.18.154.66,113.60.233.25,159.217.41.0,152.91.37.104,104.17.9.3,88.232.232.164,89.239.201.82,178.82.55.162,131.69.9.225,97.239.248.153,150.46.38.108,141.83.157.30,97.142.134.151,129.64.172.6,114.233.233.38,140.66.174.235,200.14.26.231,149.85.121.204,150.181.242.211,129.146.13.215,112.234.165.69,104.65.230.192,80.165.68.31,123.236.117.219,80.250.113.22,139.89.110.4,149.119.196.163,110.28.95.233,118.252.240.251,130.34.149.19,152.125.197.145,102.240.100.4,134.30.66.104,117.219.71.115,68.172.81.138,80.227.226.57,81.21.45.164,130.131.103.206,156.178.233.27,102.25.97.252,102.82.150.39,139.193.199.4,151.7.161.89,119.244.61.114,133.227.219.143,128.178.130.81,102.105.99.94,122.81.15.172,126.153.215.112,160.38.81.172,140.206.255.1,123.179.29.129,101.95.65.252,139.56.42.61,90.105.255.107,78.194.140.44,147.87.75.70,101.183.105.160,141.143.227.129,139.157.120.91,152.55.139.246,118.177.201.141,143.104.53.208,136.84.240.103,184.245.235.124,150.243.18.9,115.76.14.172,111.171.12.2,133.214.238.125,147.104.249.15,122.202.106.8,108.100.67.145,170.86.240.95,127.119.102.177,81.195.70.176,72.31.25.52,136.229.36.108,118.142.222.41,155.164.89.33,132.104.33.72,134.92.17.141,152.195.54.6,110.129.187.216,130.7.203.92,137.160.192.64,147.142.164.63,176.123.122.198,139.168.230.157,111.54.181.111,121.122.26.234,109.25.163.155,148.122.73.29,129.155.202.221,82.247.5.250,141.142.59.161,138.138.40.156,164.72.108.145,127.54.118.146,124.209.88.217,140.158.177.111,153.12.229.42,114.84.110.247,85.46.203.54,150.9.234.203,88.20.116.131,131.132.224.153,144.42.181.63,131.46.56.239,155.109.48.72,121.228.195.96,118.180.143.55,122.32.44.113,108.180.253.183,155.158.183.190,127.164.228.59,138.165.205.198,128.234.118.219,178.100.157.91,147.239.143.171,127.185.187.255,174.58.7.71,127.220.221.92,137.167.239.38,120.239.149.3,132.181.51.238,103.138.253.222,163.83.241.94,151.159.93.150,149.5.133.187,145.138.80.195,144.53.29.121,141.219.67.194,111.146.72.52,105.232.176.178,70.154.110.177,143.79.201.224,123.131.75.247,116.30.194.152,142.208.197.6,213.27.218.137,84.120.41.228,81.126.73.63,111.6.63.76,120.156.154.112,92.6.40.221,77.78.142.247,89.6.126.61,157.235.52.240,97.118.174.161,109.65.96.97,94.14.74.208,160.169.167.138,100.141.209.222,115.247.86.93,68.212.114.58,138.102.215.11,115.82.203.169,127.5.254.10,201.30.248.188,103.107.44.57,170.102.106.115,125.27.209.104,170.227.116.66,108.206.71.234,189.103.140.42,88.227.82.52,156.154.17.201,146.186.171.14,115.156.211.123,141.9.232.21,181.141.49.123,128.124.214.161,157.115.70.99,148.170.213.35,95.141.213.40,100.55.20.37,141.54.60.105,94.48.27.159,113.26.43.14,127.225.180.169,98.159.82.15,156.252.52.64,134.189.154.184,113.169.41.87,129.31.19.148,114.146.217.34,130.34.232.89,172.46.228.81,72.130.12.208,82.23.226.31,123.173.253.227,144.19.20.69,124.97.56.160,141.215.226.58,123.109.216.19,99.253.1.205,123.115.169.169,152.63.153.178,147.44.15.33,133.182.71.144,106.137.27.29,136.98.249.100,123.67.122.118,109.201.28.166,112.63.86.243,183.229.6.211,161.38.174.111,143.215.168.207,161.49.20.20,134.63.61.218,97.34.34.13,106.94.198.178,72.118.252.211,119.123.201.127,145.206.10.192,111.226.86.126,114.137.246.155,136.71.12.123,113.99.217.183,94.157.231.159,109.159.239.131,140.32.221.214,101.192.206.200,139.69.33.124,135.253.246.8,154.185.44.186,130.103.143.78,153.100.176.152,114.54.84.5,153.113.84.54,137.223.145.229,86.67.201.120,156.135.131.103,124.124.252.124,101.85.106.187,143.173.15.30,139.192.90.16,136.118.52.45,115.150.139.142,144.234.190.136,93.193.148.150,111.227.132.203,173.5.209.52,118.145.192.238,160.100.196.136,135.196.80.232,113.223.53.2,119.240.74.49,127.79.251.99,115.11.238.67,165.199.92.5,105.24.35.196,100.139.103.108,139.141.162.213,139.17.156.123,161.42.194.89,60.183.218.185,123.119.199.104,137.63.243.151,104.76.81.82,113.69.207.126,146.14.114.26,144.10.199.242,135.64.101.23,90.13.36.42,144.62.156.111,134.27.206.206,170.253.220.227,145.239.165.80,94.129.84.122,144.79.30.87,125.166.114.102,126.142.48.72,129.13.54.83,121.114.143.81,117.63.239.139,107.136.21.47,83.177.232.0,146.231.249.173,77.254.179.121,172.226.16.162,111.188.97.237,122.97.94.35,116.209.154.228,137.35.140.149,127.126.44.111,92.44.28.76,68.129.166.78,121.223.136.8,124.83.203.82,165.150.77.92,117.18.184.38,135.1.6.66,143.204.124.136,91.172.40.32,146.214.114.232,124.113.168.148,97.10.77.130,124.215.13.141,115.102.187.242,185.78.171.155,120.100.136.204,145.87.211.208,157.238.98.171,163.132.240.52,89.250.240.17,110.224.65.198,84.156.184.123,126.11.26.107,149.237.35.136,135.163.187.39,100.78.160.126,174.201.74.3,112.102.250.177,164.151.247.3,128.49.235.235,153.94.59.46,148.50.28.107,212.150.78.227,131.131.169.21,110.221.208.17,160.156.107.216,119.219.211.159,117.165.193.182,121.88.14.169,122.121.164.81,137.159.74.52,150.35.164.134,99.157.24.180,147.148.53.209,104.134.236.204,105.116.1.241,46.178.60.239,133.13.236.131,151.16.156.145,129.231.122.101,130.73.17.45,127.185.73.207,146.38.155.106,147.245.236.162,136.82.129.195,128.41.62.210,90.132.111.233,144.241.196.87,93.58.63.185,113.176.14.250,101.54.229.81,141.179.45.187,94.226.5.82,122.123.214.54,139.197.188.148,154.4.163.148,110.206.94.192,131.121.229.190,110.188.47.187,96.34.197.139,148.113.25.238,138.118.113.31,150.237.54.122,111.83.202.234,155.9.86.69,97.249.95.177,136.119.123.32,137.224.173.120,84.9.17.198,147.251.128.76,169.91.223.81,159.187.149.107,126.237.12.109,135.37.99.231,119.90.225.145,104.208.13.218,111.125.211.157,137.90.102.19,122.110.102.200,183.30.149.75,139.22.141.235,138.97.156.197,122.7.68.203,126.22.181.72,104.57.50.227,160.148.3.98,101.149.14.77,118.30.114.155,111.59.175.43,168.209.126.20,150.177.183.197,121.128.116.114,127.42.49.64,138.82.253.145,115.32.62.64,108.53.17.188,149.203.142.49,140.69.10.7,139.155.161.251,160.39.176.188,100.15.76.90,143.27.154.11,157.175.209.42,165.110.199.170,132.36.69.41,125.156.247.2,146.250.81.31,108.100.8.81,69.41.155.186,138.217.156.180,117.128.232.188,120.194.100.134,123.118.34.218,132.109.225.47,140.113.241.4,101.172.4.89,119.169.90.99,105.4.12.251,130.41.16.157,100.156.205.254,99.96.166.198,116.91.162.8,128.76.204.197,103.163.157.8,123.162.32.179,115.207.17.17,146.249.9.104,144.241.93.32,159.215.252.20,86.203.222.12,91.135.162.124,178.67.255.9,111.207.109.63,130.79.184.106,144.16.192.134,125.223.211.28,89.224.103.182,126.46.87.184,115.104.200.139,177.244.11.33,169.245.105.205,136.178.247.4,112.126.15.78,130.162.142.119,134.36.122.136,100.83.135.217,151.217.5.60,123.158.200.76,91.169.69.27,102.113.93.243,156.156.149.34,125.236.53.243,165.14.233.215,116.59.254.66,130.42.173.62,74.109.97.3,134.234.88.121,84.5.141.255,101.0.192.34,137.51.138.119,170.56.228.100,123.244.92.244,127.243.107.44,158.179.85.247,132.44.183.106,125.110.253.137,124.39.98.4,109.209.163.9,139.172.185.110,121.143.102.192,131.2.229.2,167.214.125.114,105.172.110.197,113.202.89.195,139.52.103.116,138.180.56.99,134.108.132.170,173.160.50.242,103.231.178.237,121.243.148.84,112.190.178.178,107.5.141.190,118.49.155.97,176.107.16.62,108.138.127.203,138.248.71.50,95.125.100.90,105.199.103.22,150.237.239.89,113.200.185.161,119.203.235.28,113.2.65.166,156.185.186.184,82.154.205.140,133.177.142.14,110.213.76.86,140.130.203.0,86.81.87.131,174.5.187.168,117.133.124.132,180.53.32.91,110.202.194.42,103.178.14.121,135.182.14.234,102.86.34.26,135.190.186.8,139.81.55.29,138.215.236.18,130.139.59.3,126.224.85.233,108.163.78.28,111.11.247.65,169.115.233.19,73.254.25.231,102.212.145.136,135.231.182.251,139.117.117.26,115.32.182.143,135.71.82.193,120.212.170.146,151.185.118.30,138.82.7.109,114.243.194.76,70.9.23.232,138.150.70.35,180.169.199.22,140.188.84.37,120.86.188.115,169.255.190.132,131.114.208.42,172.37.60.206,135.38.122.88,145.93.154.211,170.83.177.254,147.220.131.68,191.25.211.230,96.158.225.56,95.189.254.231,159.5.127.95,115.127.143.41,129.94.151.111,152.248.48.177,135.108.219.205,126.26.109.6,139.42.99.183,102.71.208.105,126.198.100.72,160.12.56.151,136.194.50.206,196.205.76.181,159.1.146.45,172.188.239.19,133.177.238.108,96.139.125.214,110.214.142.109,166.215.83.150,102.105.22.140,150.218.219.158,143.187.38.87,102.169.198.232,152.234.215.93,97.13.107.81,132.160.253.105,105.95.171.118,135.17.186.250,124.243.71.93,90.49.144.71,155.78.209.60,155.251.220.101,138.234.81.155,119.153.66.78,79.148.6.255,105.190.147.65,135.176.74.85,131.73.238.140,126.230.12.244,131.204.216.225,157.210.239.50,152.148.61.214,86.60.60.53,128.20.85.245,76.48.223.212,179.86.118.28,168.103.137.237,160.66.130.154,135.162.251.55,146.168.242.208,118.225.76.93,153.203.98.217,118.114.55.222,87.205.212.175,151.53.68.39,169.108.117.112,142.164.210.107,59.97.101.106,152.59.115.104,186.183.229.44,75.28.3.201,168.29.75.249,155.210.208.245,103.37.127.169,112.47.7.203,68.139.88.82,191.56.156.171,98.109.189.44,128.163.165.49,118.124.66.117,135.112.192.250,129.210.180.181,92.5.134.96,127.204.149.135,128.4.153.89,118.79.189.192,135.140.121.207,108.249.245.41,97.51.133.210,119.68.203.179,111.44.1.164,94.183.78.123,146.71.232.172,119.151.60.239,140.154.89.196,119.12.152.242,138.194.63.72,144.23.33.28,129.110.73.28,96.143.133.182,120.68.56.126,101.230.120.147,140.116.7.1,117.98.160.70,109.121.49.213,143.9.141.62,151.161.119.172,98.44.142.28,127.117.241.46,141.146.245.28,126.5.251.22,175.128.200.129,121.33.89.116,143.105.145.35,97.1.11.117,110.34.214.246,139.63.182.228,144.204.8.7,135.136.226.226,183.152.207.157,115.13.92.137,113.134.104.46,154.118.15.45,106.251.222.240,184.190.59.172,113.181.82.146,120.44.133.18,156.229.184.250,107.237.200.118,151.253.130.13,148.71.50.176,100.125.213.220,149.89.196.30,136.191.197.23,113.197.18.110,111.218.230.199,128.124.187.161,134.58.245.222,106.215.73.99,136.22.141.175,124.216.204.192,106.130.141.63,101.242.59.189,113.147.234.64,107.100.189.16,155.116.161.148,98.230.241.51,131.104.247.144,141.83.123.149,103.50.114.242,137.112.94.147,115.161.247.118,105.101.64.242,90.155.92.148,103.176.162.115,171.234.240.168,87.200.76.47,111.71.242.227,98.111.133.189,147.125.140.64,104.127.93.222,116.164.62.29,146.128.49.54,151.214.201.140,100.6.2.14,123.23.88.116,137.175.25.195,127.185.124.17,175.215.120.111,161.38.150.131,162.32.191.190,75.106.210.225,118.255.95.23,121.221.211.112,100.46.54.6,107.196.89.222,146.146.195.160,92.59.206.23,157.246.145.165,170.148.188.110,128.86.133.125,174.6.252.223,169.35.126.65,130.4.105.194,117.193.183.250,149.208.96.95,110.253.147.251,123.124.112.5,158.188.65.249,102.33.45.65,110.37.68.45,150.120.197.127,80.242.254.100,151.211.118.68,125.143.143.65,124.54.195.152,124.15.138.229,118.19.7.252,126.147.13.116,116.40.36.16,107.206.214.18,153.216.65.213,127.234.18.72,139.178.233.10,142.118.250.221,123.146.101.46,118.207.254.155,139.8.119.65,120.60.254.14,141.70.203.203,100.29.135.226,128.190.86.33,131.13.241.88,163.80.63.11,172.192.74.10,122.51.102.191,110.204.51.82,101.61.14.213,113.70.126.11,128.16.228.25,96.23.81.53,115.201.25.98,142.28.142.228,164.122.45.45,153.35.45.45,111.191.88.69,76.210.176.64,117.205.200.213,136.241.23.244,129.72.115.190,112.130.14.15,113.149.142.214,139.87.181.137,163.116.38.247,144.11.102.60,71.236.23.130,106.119.39.166,100.103.157.18,104.195.29.138,163.121.252.216,137.74.157.86,128.156.244.207,124.241.171.53,79.92.116.108,120.117.130.124,112.98.239.33,123.208.118.49,107.158.9.204,144.242.144.132,119.162.101.77,134.112.60.91,142.206.190.184,128.214.151.92,128.199.154.87,151.92.0.253,151.202.52.41,95.161.203.137,95.112.189.227,162.203.23.154,120.230.40.22,132.74.242.156,133.227.212.195,121.199.229.154,131.91.185.150,117.247.175.98,155.153.172.105,142.151.144.201,108.151.52.156,144.252.65.252,94.107.123.21,98.38.62.135,97.59.238.139,122.185.235.215,140.199.208.176,151.176.83.219,113.77.126.37,107.98.212.82,132.119.101.153,144.99.84.178,98.218.252.112,117.105.190.22,130.21.84.33,116.158.81.193,121.242.221.132,114.158.196.129,169.230.93.131,81.114.20.164,130.159.60.207,173.142.38.156,119.9.202.198,133.65.224.117,76.66.241.12,86.111.169.106,90.68.38.47,168.28.164.188,147.199.120.141,114.156.253.76,134.171.4.11,176.183.201.85,105.216.217.176,140.58.119.23,148.211.104.92,96.159.168.179,96.160.49.116,136.214.78.131,143.140.44.143,91.101.11.127,155.127.183.11,117.33.137.79,80.242.70.7,133.200.165.85,161.29.244.197,121.55.166.61,163.251.172.54,147.55.229.136,93.65.192.159,106.84.38.140,126.214.75.75,158.150.244.129,141.16.153.233,92.56.252.39,163.81.205.116,132.238.232.96,150.47.148.201,113.1.140.63,102.20.55.100,103.15.161.82,155.212.16.69,76.14.173.102,128.154.32.75,113.34.135.105,116.128.24.179,113.78.27.129,120.222.72.130,134.54.181.217,109.164.128.235,103.239.59.35,89.225.158.92,100.122.158.177,162.89.76.82,116.120.138.16,87.100.241.133,105.82.104.51,135.212.28.153,125.30.54.3,129.183.31.121,118.250.28.160,162.12.111.27,109.190.171.173,107.132.226.224,80.130.145.72,124.6.21.235,119.101.136.73,141.213.157.80,113.192.206.231,98.60.181.20,77.123.168.46,201.1.159.194,137.197.150.189,180.110.123.17,138.131.188.40,90.129.124.207,153.123.204.67,117.59.73.75,159.32.140.183,154.92.252.103,145.21.17.178,137.3.131.253,122.198.80.13,175.0.161.19,124.153.213.238,96.182.19.196,95.164.121.162,131.181.141.69,107.1.178.26,86.191.252.114,119.91.33.62,144.101.197.85,152.175.104.174,125.246.235.39,109.80.78.253,115.71.16.60,90.11.115.55,133.160.186.79,108.64.217.246,111.176.135.85,115.212.77.64,120.253.240.3,137.130.66.230,126.170.34.16,159.54.55.22,118.8.214.137,142.2.72.189,99.50.21.134,97.53.238.85,79.6.43.1,114.74.230.169,126.139.89.247,121.108.27.143,137.10.55.222,135.12.179.175,100.166.101.207,169.57.180.80,155.125.152.156,146.24.169.145,118.86.7.140,164.255.195.38,145.90.235.231,157.188.6.19,108.215.163.243,159.3.164.8,123.14.72.128,109.173.186.139,102.34.97.123,109.127.80.25,86.212.90.111,112.112.29.107,103.109.250.228,150.247.58.4,167.2.70.105,114.114.235.139,124.120.254.211,104.27.34.254,154.141.145.225,93.6.181.85,163.34.58.186,144.139.79.69,79.34.142.153,113.239.219.22,117.143.191.156,141.113.76.216,159.185.158.16,126.64.59.31,113.85.193.136,61.154.28.253,112.84.132.105,156.143.165.15,109.27.90.97,143.12.172.27,137.185.150.8,88.165.240.235,121.224.151.149,149.148.46.8,140.85.111.4,144.87.42.205,129.74.157.152,104.28.215.139,140.24.61.101,132.189.220.40,120.196.198.45,88.146.18.60,128.155.221.233,106.27.29.123,169.112.71.158,139.180.135.124,174.72.231.12,130.184.164.60,120.181.205.212,112.251.208.8,113.65.27.48,117.219.122.210,163.204.87.58,98.120.78.10,146.115.194.108,125.52.234.132,166.54.153.40,93.19.166.194,135.239.232.136,101.189.130.174,114.107.27.157,127.45.34.20,115.74.228.122,137.86.4.154,128.104.48.84,136.76.39.160,90.194.4.240,118.247.47.179,114.156.11.90,127.32.50.239,126.81.204.135,148.192.60.126,131.24.59.36,159.13.53.134,157.156.35.87,91.195.95.35,98.67.154.225,107.24.196.80,132.120.195.165,97.14.105.52,134.2.159.138,137.251.186.107,124.55.191.128,117.59.34.105,170.75.119.68,120.229.153.187,146.21.212.198,114.22.204.248,158.238.163.134,79.28.41.152,114.236.76.144,128.22.209.65,76.252.164.187,207.38.40.108,122.93.25.239,184.191.22.47,144.182.4.125,125.82.221.17,90.28.168.171,114.103.183.215,134.36.91.113,76.19.49.233,113.110.198.221,142.244.35.89,148.19.209.232,124.216.107.146,96.220.0.12,93.209.3.2,129.75.67.123,131.239.170.184,173.190.250.129,139.156.215.102,128.246.193.188,130.186.166.102,121.133.117.124,111.231.231.225,152.16.150.4,123.97.237.14,134.142.54.196,136.137.231.166,105.142.26.234,101.237.93.143,114.1.75.53,72.84.121.92,143.36.94.105,148.78.134.61,162.36.187.239,87.46.39.28,157.234.6.110,90.13.167.197,111.94.218.149,122.90.24.244,84.126.101.101,141.122.200.123,128.23.163.235,125.185.205.217,89.209.205.100,140.147.241.34,117.74.247.50,165.101.12.32,163.121.241.188,124.183.51.165,132.194.219.116,158.101.9.112,161.229.229.105,130.160.133.77,187.179.242.2,149.91.21.155,161.90.224.180,116.45.168.191,91.82.170.134,155.166.172.249,143.174.146.14,146.83.11.234,106.242.92.42,112.89.216.14,156.53.13.65,117.126.92.221,167.138.152.28,107.235.48.252,177.216.108.85,83.153.28.174,65.152.114.124,133.94.136.141,174.173.34.170,154.78.182.9,156.144.102.209,122.81.238.24,132.254.57.230,135.117.232.169,96.96.241.242,169.126.38.235,118.72.35.68,139.237.228.186,119.23.170.72,175.132.41.160,167.36.240.206,146.107.117.197,117.238.84.70,95.72.31.164,135.182.255.243,157.6.43.23,124.138.190.57,90.176.45.34,179.182.30.200,95.240.82.255,168.205.8.106,147.144.56.200,134.154.207.135,130.239.18.23,138.111.225.229,117.79.213.34,141.119.170.50,141.233.31.24,151.114.21.160,100.142.238.139,134.22.135.0,124.161.239.55,177.46.44.22,82.213.223.212,144.207.169.221,113.75.53.117,101.11.184.113,161.147.48.246,152.80.230.114,150.147.56.65,184.100.221.250,145.101.231.249,97.25.103.156,127.110.91.53,101.206.22.86,136.122.126.79,125.170.44.24,142.48.37.147,148.34.197.69,169.127.207.136,113.230.42.4,145.44.212.239,99.79.87.226,154.239.58.36,152.218.140.215,108.163.191.92,128.18.107.64,176.122.142.17,91.34.164.242,136.22.151.60,102.142.28.166,105.209.39.90,150.3.99.26,141.170.128.221,154.129.62.144,163.192.165.123,95.41.56.178,107.189.115.136,103.74.211.184,132.50.28.29,166.113.161.223,131.23.250.215,118.215.101.161,131.145.35.140,93.113.16.247,107.159.150.43,129.152.32.53,99.222.248.116,96.106.45.160,184.149.81.14,144.87.108.122,103.239.26.82,104.32.122.128,117.247.116.12,106.98.36.194,97.223.234.6,170.72.208.199,144.149.176.83,131.201.121.105,133.236.66.27,102.255.52.136,110.253.74.7,131.229.228.213,105.26.223.74,155.71.234.243,91.127.216.80,144.251.237.253,113.8.96.195,160.74.186.72,140.75.73.129,108.116.243.86,125.50.36.73,130.208.50.69,149.69.243.64,109.230.205.164,143.188.28.46,119.40.219.0,146.237.105.242,152.127.210.240,177.1.82.76,105.109.173.164,112.132.118.138,178.51.84.222,108.237.169.200,127.255.55.227,122.130.202.245,156.71.219.157,140.91.145.207,63.234.115.72,161.22.194.180,91.32.62.122,131.114.44.30,136.135.202.116,140.174.205.141,165.69.255.94,83.183.109.145,143.89.197.76,145.152.40.203,172.42.211.64,114.106.170.194,105.248.234.238,111.146.13.147,119.44.213.120,155.128.22.250,125.34.47.69,115.65.63.51,126.194.63.172,109.58.207.183,126.63.59.201,151.166.71.54,109.41.179.246,103.110.100.206,145.180.225.37,119.44.240.108,136.87.74.225,164.250.13.189,135.66.94.14,88.62.186.58,76.253.42.2,100.248.227.125,133.173.246.133,106.108.217.176,102.29.135.109,127.243.136.143,131.216.15.49,175.182.201.143,131.252.115.18,120.72.160.152,124.227.210.149,69.5.157.15,121.251.128.182,108.207.94.33,126.28.166.176,149.45.123.169,135.77.2.128,76.220.159.11,93.60.20.245,54.40.137.3,114.68.220.32,88.77.199.108,113.48.122.113,102.203.249.164,108.197.45.65,153.22.239.194,167.204.99.229,175.28.36.152,182.121.72.82,101.82.215.192,119.218.181.115,186.56.120.222,137.158.117.78,76.178.225.64,127.117.158.162,106.178.57.212,171.238.15.27,167.94.125.179,140.133.30.97,94.59.21.208,154.189.52.57,145.120.196.196,111.146.82.39,110.104.27.91,149.235.169.24,95.23.33.1,86.194.207.63,96.77.166.135,120.127.99.150,140.208.197.12,75.255.164.129,127.232.126.242,95.199.216.241,142.152.137.34,133.97.67.162,133.128.32.147,151.240.153.174,129.16.80.1,101.41.125.101,143.141.124.54,165.176.122.34,114.132.83.220,86.152.13.22,115.140.128.36,192.197.49.115,119.228.202.145,101.176.141.174,110.143.36.242,107.254.34.214,102.204.212.142,137.39.96.191,147.240.114.252,95.197.66.228,99.243.43.76,164.243.251.207,149.244.39.196,123.52.78.12,106.10.38.171,123.163.189.24,135.49.31.33,143.171.31.57,95.78.178.151,165.254.237.181,112.18.23.196,166.221.202.217,141.245.61.94,128.36.25.193,118.131.182.82,112.144.24.162,78.195.158.213,97.70.160.10,149.239.111.175,158.237.246.126,126.163.24.85,113.105.82.177,140.139.176.118,151.56.254.227,92.178.143.166,149.221.151.186,131.88.196.208,128.228.78.159,129.139.169.200,120.191.159.234,122.160.130.126,149.69.79.103,136.52.206.227,159.8.172.183,131.70.36.1,92.74.133.147,143.168.114.218,114.40.114.23,97.96.186.233,118.126.241.83,156.83.21.6,93.221.147.122,143.135.15.195,117.139.192.124,118.235.217.126,107.147.64.233,117.177.152.121,155.169.200.64,117.238.248.115,124.227.11.162,95.255.199.97,101.146.118.3,122.132.0.11,140.217.158.33,129.11.185.193,110.86.140.203,122.113.1.178,150.16.23.39,122.155.89.175,166.46.174.81,104.209.82.16,90.244.128.223,135.74.55.188,117.179.70.156,125.179.219.233,130.134.227.152,168.207.101.157,100.211.237.145,134.168.11.73,154.105.69.62,108.105.32.136,126.249.65.234,158.154.206.122,102.168.128.232,137.160.112.205,116.112.244.9,135.158.50.216,146.109.251.38,179.205.214.252,88.73.175.140,134.26.131.58,122.28.117.177,120.210.76.148,118.16.12.210,94.230.196.246,128.75.253.123,141.112.253.85,123.171.254.210,193.253.54.215,86.79.32.24,130.58.118.186,165.56.6.249,95.174.115.237,87.232.112.129,131.140.109.133,111.188.17.54,108.25.194.248,94.116.37.181,141.6.208.153,91.87.201.3,123.104.144.154,90.235.62.60,124.216.79.47,104.11.178.164,159.149.190.128,124.166.11.14,151.87.250.169,105.240.169.241,147.102.23.233,172.174.193.224,77.82.200.241,119.108.89.233,129.73.52.60,100.90.4.188,181.141.230.178,123.243.79.28,175.70.184.126,102.142.178.27,121.241.218.56,114.84.251.157,66.182.90.120,107.151.236.34,117.110.207.57,130.84.213.146,88.88.27.134,130.142.15.200,145.3.125.31,136.135.182.223,128.73.40.42,138.15.178.83,143.59.7.197,117.22.137.126,132.226.125.88,157.242.66.71,93.34.239.176,152.183.75.24,138.24.215.169,177.129.156.149,141.8.155.94,137.212.68.93,112.172.92.105,174.109.186.71,112.9.80.125,112.97.1.41,120.86.132.184,129.27.37.191,99.213.133.36,131.182.148.33,118.92.58.13,173.77.41.159,118.101.87.99,119.92.7.63,157.50.170.37,118.113.197.40,149.1.127.114,128.146.166.118,93.255.187.36,115.86.83.35,127.71.4.125,139.39.145.68,176.36.155.166,135.58.230.98,153.75.197.88,106.174.117.158,102.21.35.75,113.240.216.127,130.168.193.227,135.251.246.211,98.86.165.183,114.154.37.119,184.103.79.73,141.207.89.215,151.84.209.127,93.168.205.208,126.27.45.246,88.16.248.51,125.239.137.214,132.212.74.145,164.183.172.114,120.68.143.19,149.237.223.195,105.96.64.90,89.208.217.245,162.111.83.91,142.28.127.78,152.193.162.102,135.202.66.80,89.248.189.124,144.206.238.186,128.101.192.213,134.41.119.2,130.208.150.150,98.84.16.40,148.160.160.89,111.31.130.116,124.215.29.108,98.96.211.3,108.58.35.235,61.219.79.2,139.9.26.147,120.35.115.232,138.203.17.189,99.144.228.75,114.93.150.32,103.206.216.2,111.218.142.105,126.181.109.43,131.159.35.123,132.203.120.209,166.119.80.191,157.25.194.112,128.153.41.2,128.55.149.44,135.100.232.170,132.92.131.46,153.91.212.209,163.37.66.188,136.239.235.83,143.139.136.0,122.136.215.187,73.197.98.76,130.221.78.124,77.160.123.228,116.111.111.40,179.232.81.20,155.249.207.35,94.62.110.69,116.236.206.18,124.42.200.123,99.243.184.127,129.16.229.188,133.10.158.85,112.25.169.220,119.81.115.202,140.15.77.109,145.156.159.248,130.27.3.119,118.56.105.92,150.46.236.89,122.121.222.208,130.32.2.121,144.177.70.234,142.201.66.129,146.135.178.253,121.25.146.3,172.23.162.188,126.97.117.106,124.158.32.231,126.211.45.117,101.173.134.253,120.161.23.148,140.234.192.193,152.197.234.181,88.97.22.195,124.191.151.169,93.13.160.138,68.63.184.37,161.180.191.136,152.127.219.219,124.254.66.2,173.123.230.213,127.221.253.19,140.173.207.134,142.234.111.3,117.210.239.244,83.200.173.154,144.17.224.24,126.42.251.87,94.53.41.49,111.154.44.90,137.19.147.191,97.105.244.20,107.172.67.225,132.124.54.68,133.59.202.101,110.106.101.11,124.75.172.210,143.221.178.236,93.112.146.237,133.19.10.111,132.213.183.217,112.131.201.165,118.141.249.15,120.141.19.231,120.237.153.4,112.148.145.193,139.217.212.165,145.110.155.101,107.24.166.222,144.200.153.203,87.146.21.60,121.213.166.57,136.45.117.225,100.162.193.55,152.194.125.63,110.205.250.57,92.141.25.90,166.164.195.32,144.167.90.207,150.238.109.241,220.148.128.21,89.153.53.164,144.125.66.0,128.229.143.75,160.206.51.234,163.112.87.191,160.38.157.102,137.165.91.207,97.217.189.225,107.105.41.50,137.198.20.9,154.62.31.89,173.226.187.180,74.19.235.125,98.164.251.239,125.45.61.137,164.43.108.30,101.142.226.212,148.215.13.222,124.178.148.247,174.171.230.239,141.78.36.143,119.115.196.61,123.91.97.35,151.183.110.78,151.239.92.102,135.35.229.205,173.106.222.161,112.181.37.130,178.227.242.62,106.17.63.140,117.3.124.87,167.196.188.22,128.93.95.76,114.167.145.45,132.205.188.192,109.233.114.175,156.109.207.57,101.73.125.43,97.179.200.239,130.136.19.209,138.120.115.54,126.173.143.23,135.59.30.3,114.170.50.81,132.249.116.60,110.54.233.98,189.154.50.87,121.187.41.57,107.246.182.255,135.64.39.124,143.202.23.83,153.109.161.104,141.28.136.133,183.97.127.176,120.36.127.209,178.197.58.227,162.112.181.147,148.61.246.45,106.91.132.7,115.236.253.39,128.244.35.189,151.147.92.196,132.187.185.155,140.20.159.131,118.83.255.7,134.165.217.20,105.91.153.57,118.222.104.196,161.59.235.148,140.20.55.191,80.110.27.35,142.188.143.10,113.45.243.142,124.113.239.195,162.71.88.52,158.17.121.181,99.182.186.195,158.230.59.51,63.186.9.78,134.111.187.159,142.191.79.98,90.0.127.150,173.103.24.239,140.160.189.104,91.195.71.141,90.156.235.57,120.50.199.125,176.215.36.6,128.179.25.56,103.179.214.36,99.248.151.2,102.111.219.135,107.166.216.118,150.215.34.124,141.25.168.255,104.192.249.215,114.48.190.50,138.156.24.131,124.54.103.214,94.34.248.65,120.245.88.221,122.163.156.77,127.186.84.158,156.118.112.36,186.115.136.133,148.129.250.197,146.203.115.124,155.55.142.46,91.195.64.56,150.91.234.134,121.148.14.229,132.35.165.72,88.40.158.82,169.190.245.186,127.7.0.38,118.31.7.226,129.146.139.231,156.95.94.240,147.241.84.174,158.63.234.168,158.85.13.31,132.231.165.185,123.184.32.72,151.17.126.100,119.175.119.44,119.114.30.114,146.93.34.80,144.51.255.87,137.137.120.149,121.45.12.183,109.10.156.185,123.142.5.62,147.228.94.184,58.17.223.148,88.77.69.135,161.186.188.95,116.197.70.175,108.145.169.188,154.83.156.198,88.109.88.85,109.115.223.6,133.220.220.12,114.169.181.134,137.198.216.61,139.218.39.216,114.13.166.159,74.31.157.122,113.97.105.89,83.49.113.69,109.113.56.120,94.51.24.90,130.147.218.102,140.35.205.29,123.167.54.151,127.23.252.213,146.219.133.24,112.26.237.77,157.36.72.200,116.164.141.200,138.117.115.59,125.209.242.164,112.66.198.134,125.212.111.241,139.214.98.139,117.107.108.114,100.79.223.131,129.218.100.238,125.190.250.233,114.227.81.227,106.58.204.189,128.105.47.57,140.215.28.35,199.254.178.196,155.233.109.210,183.13.247.210,122.134.18.97,132.146.67.199,142.83.100.25,107.15.89.184,95.17.157.146,92.95.212.130,95.195.206.12,115.96.35.141,113.153.178.174,142.186.191.16,125.13.21.122,97.35.105.196,92.250.139.192,137.11.126.134,88.213.191.103,127.212.96.78,151.202.19.183,105.49.45.198,154.30.51.8,140.135.51.122,115.250.93.133,118.151.169.65,158.52.101.159,119.220.100.244,82.70.178.206,75.12.37.201,141.4.194.104,131.22.93.179,108.34.137.170,121.26.0.23,121.191.26.76,151.21.59.214,155.178.150.109,125.7.217.249,103.90.45.114,132.237.73.67,169.72.49.249,128.10.109.6,124.254.170.154,125.61.121.240,93.0.129.18,128.199.68.162,136.160.214.240,52.229.152.1,86.46.75.42,136.25.2.218,123.56.172.189,122.215.227.187,129.213.81.62,98.58.44.218,130.97.205.0,147.18.26.73,96.238.191.143,137.189.162.209,110.204.71.11,143.228.162.9,145.176.177.22,159.153.187.215,144.119.187.163,122.208.217.117,143.49.197.229,137.229.184.82,125.203.55.234,151.76.43.85,152.176.80.178,104.251.7.241,133.43.55.251,128.13.108.31,171.154.183.185,99.149.243.108,113.109.211.216,79.191.129.131,82.240.162.85,187.217.53.236,131.125.67.95,162.181.93.203,113.251.116.164,129.83.152.173,97.134.119.163,70.15.40.138,179.169.192.12,131.68.71.148,108.37.183.229,126.13.114.116,171.229.27.158,130.122.87.141,170.171.159.251,122.67.215.5,107.233.16.44,165.174.73.80,76.184.103.61,149.15.80.212,164.245.37.199,126.83.215.166,148.247.146.72,174.145.225.49,121.136.202.160,130.119.126.68,130.40.253.203,113.60.191.100,191.87.142.136,124.15.94.136,165.141.87.76,126.116.150.43,123.217.205.40,137.70.82.45,144.155.136.231,103.122.254.150,156.173.158.45,142.232.18.6,124.200.2.224,144.190.59.183,117.69.144.194,146.103.186.249,86.209.128.216,132.216.26.105,132.20.99.65,144.80.34.244,167.95.66.83,118.143.36.95,152.81.101.0,122.6.134.155,118.171.70.241,119.250.81.193,134.182.84.76,88.160.87.231,117.92.128.151,116.17.128.83,78.161.81.150,159.140.137.223,113.12.18.212,115.100.177.23,172.123.52.61,135.92.117.138,120.166.154.159,113.20.98.162,169.73.32.10,96.231.151.210,122.66.46.113,131.161.33.238,107.170.214.248,133.103.239.145,107.51.6.5,136.184.86.130,125.136.180.172,148.44.171.89,130.98.153.214,102.198.0.202,124.102.227.76,123.16.94.12,164.42.224.154,137.121.1.184,122.232.169.137,112.157.44.172,130.204.182.107,98.20.82.28,76.93.155.60,146.195.173.233,126.34.69.220,180.101.180.172,178.121.224.105,157.59.159.182,116.73.19.81,123.175.12.88,157.81.18.17,153.100.195.215,105.103.172.241,130.64.101.91,130.241.18.209,102.80.134.78,157.48.118.172,81.102.144.102,96.224.58.156,125.100.148.149,130.132.16.186,97.114.208.167,155.3.114.85,121.236.253.39,104.249.64.62,130.42.42.20,114.169.222.253,79.39.58.236,76.4.88.60,133.94.214.135,112.151.149.119,90.101.154.233,144.248.193.51,138.58.215.173,104.145.116.205,157.33.144.144,111.193.222.77,125.173.173.2,120.210.186.35,136.219.219.83,159.227.199.57,136.10.145.209,134.253.254.126,131.149.95.112,108.58.170.199,121.74.144.130,96.241.175.94,153.64.60.101,122.210.104.196,95.232.34.48,146.163.232.167,135.105.189.66,142.115.85.156,131.144.94.57,101.173.168.221,88.61.135.121,116.117.75.165,149.100.43.166,98.126.83.152,139.108.153.255,147.190.125.11,136.157.34.80,155.60.157.141,142.145.196.130,125.173.204.125,98.94.99.47,69.198.200.221,125.204.244.238,98.45.126.194,138.194.25.33,160.223.220.59,123.158.113.232,97.139.51.28,84.32.148.143,127.81.149.167,120.123.67.220,149.28.95.1,119.236.57.195,147.29.57.106,138.97.102.230,160.122.170.113,144.19.184.126,99.31.178.53,135.30.136.245,80.23.98.7,103.2.232.145,113.47.71.20,106.100.134.172,135.214.202.129,98.53.176.171,183.237.74.31,145.135.193.21,150.140.52.56,158.38.92.211,51.244.159.149,115.176.154.220,128.193.104.229,143.112.110.247,176.63.97.57,137.85.96.130,131.42.192.107,161.125.170.182,134.216.11.187,122.65.116.170,103.51.242.189,83.224.43.52,113.177.235.213,112.223.45.26,115.124.226.209,129.14.212.42,156.124.44.122,110.84.91.25,91.196.74.0,125.236.29.135,106.242.70.144,170.163.240.247,155.157.166.201,194.143.89.89,103.222.113.150,144.36.19.141,140.17.101.135,113.220.228.209,152.237.243.43,122.231.183.75,104.63.202.31,135.6.254.124,105.255.239.129,109.207.89.0,124.52.238.71,127.126.151.10,109.82.32.13,89.80.60.12,136.242.70.215,164.129.35.116,135.155.22.82,102.203.202.126,150.247.162.77,120.145.49.195,167.137.244.176,136.90.152.247,92.82.216.152,113.214.43.209,164.69.179.11,159.174.183.146,112.75.234.23,133.254.38.138,117.108.170.192,91.213.147.119,86.74.52.137,177.32.68.23,134.97.117.253,144.135.70.208,103.88.174.171,160.82.31.133,121.78.170.36,105.47.102.72,87.221.50.252,113.185.162.143,127.200.165.52,158.47.33.244,114.148.176.199,90.54.111.202,143.38.97.21,119.72.1.38,128.140.161.115,149.47.188.158,126.55.41.72,138.88.6.60,122.164.57.43,153.206.148.156,118.98.174.34,54.103.138.156,126.106.245.113,120.105.40.37,175.2.200.205,172.191.223.177,116.249.209.246,171.150.215.50,153.143.30.219,151.46.22.20,130.212.220.160,118.62.239.101,118.184.129.79,139.0.220.132,141.243.193.6,137.215.156.242,142.91.154.183,104.179.134.9,98.97.175.235,114.172.167.80,107.114.122.212,146.39.236.54,107.12.126.208,142.202.92.192,171.121.111.78,105.96.7.175,142.228.38.134,126.177.156.30,119.120.207.170,152.46.47.49,128.91.179.229,125.228.201.17,153.130.199.236,123.238.2.216,107.127.106.145,139.176.31.108,165.66.253.121,133.238.141.35,118.67.88.246,71.205.54.31,177.215.82.103,171.11.219.159,154.160.150.188,156.178.220.96,107.157.95.11,134.39.171.124,127.254.137.229,158.13.94.210,119.134.178.29,146.10.192.236,134.187.36.23,168.225.100.236,146.197.27.88,152.182.149.111,150.0.165.213,124.200.224.197,160.75.50.195,169.129.180.100,114.31.127.224,151.44.38.115,107.214.57.114,101.41.19.45,117.40.203.137,146.177.71.239,166.175.94.86,128.39.94.65,115.105.135.245,142.183.36.231,118.115.182.160,126.117.217.185,137.113.7.129,153.225.68.213,141.245.44.72,107.205.152.100,163.192.85.2,132.156.0.97,147.96.143.51,117.129.12.64,119.213.99.182,88.61.88.155,123.230.232.32,184.181.110.193,137.57.166.68,186.216.36.191,138.206.236.214,128.113.119.58,113.134.165.195,145.206.242.170,123.197.87.150,95.10.30.8,139.33.14.46,180.63.243.95,133.59.210.148,124.183.215.48,147.118.18.4,63.107.37.167,120.101.29.230,76.185.132.5,60.186.55.140,146.54.69.191,128.73.82.21,130.163.252.225,123.26.176.128,140.241.142.125,136.203.222.125,152.44.111.66,136.242.244.102,124.40.102.38,148.176.233.27,146.1.227.155,130.96.238.65,139.94.114.66,156.224.29.46,141.108.137.71,111.128.183.151,132.155.221.205,136.61.138.72,177.128.212.243,140.70.242.97,167.172.136.249,86.121.195.29,118.1.225.170,121.221.165.25,148.73.203.1,125.100.212.51,117.89.253.246,160.18.179.231,160.210.60.165,109.210.246.247,145.131.124.170,130.108.91.31,140.63.40.126,100.140.121.140,115.10.87.85,112.89.35.76,102.104.224.254,152.130.32.22,137.147.59.26,157.46.240.243,131.57.86.36,176.75.158.148,117.67.168.232,141.180.55.230,173.120.250.109,78.148.124.185,179.239.86.207,145.208.157.246,92.216.25.146,162.168.102.148,138.250.92.163,121.5.175.105,133.241.28.245,156.185.160.236,103.111.251.52,141.145.154.100,100.177.17.18,184.228.183.247,144.89.219.233,128.160.133.34,128.88.24.100,122.45.193.134,146.80.141.71,151.42.63.26,151.135.47.231,172.34.206.163,96.104.95.199,120.227.31.107,130.233.199.235,95.230.132.83,145.54.199.183,118.88.231.196,105.242.120.236,167.4.56.58,108.236.55.246,68.156.185.4,139.87.213.116,142.236.60.45,113.248.226.114,102.91.140.231,165.189.45.240,78.251.96.249,92.137.209.46,64.208.102.19,132.52.179.34,113.216.219.201,132.60.52.138,121.234.205.103,129.108.150.192,106.154.139.142,158.143.219.165,122.222.244.238,145.67.100.50,96.74.6.249,147.43.253.3,113.223.150.61,177.107.28.19,101.138.220.223,88.64.133.108,102.19.188.238,110.153.234.77,135.213.177.147,135.186.228.217,147.172.198.32,100.89.211.230,116.254.15.104,140.174.98.189,137.92.238.34,124.251.69.183,156.66.185.128,94.201.38.175,89.68.240.179,154.180.25.253,88.252.228.152,95.109.89.160,142.240.240.246,135.72.46.188,125.169.106.57,166.192.171.53,114.114.48.61,137.35.46.73,219.202.41.86,95.71.232.118,141.241.140.97,145.141.125.241,104.122.205.143,137.145.56.121,110.44.19.169,139.193.70.179,137.120.16.247,103.68.20.135,171.155.172.151,87.56.212.251,130.204.71.96,108.29.74.7,155.167.242.203,140.14.150.122,124.243.149.169,140.197.114.153,115.202.155.225,103.81.74.59,143.52.4.5,114.235.34.68,129.10.72.223,136.69.29.237,92.121.9.187,164.56.131.57,109.116.3.241,90.250.50.14,134.42.7.51,112.153.191.255,154.89.68.178,166.190.169.154,118.82.12.167,157.160.84.124,128.176.224.52,93.140.130.71,120.237.249.173,89.216.194.129,176.89.250.211,115.195.184.27,105.240.169.70,128.29.15.155,122.212.26.78,151.150.89.137,128.26.236.213,79.43.196.84,182.132.223.172,184.83.209.22,163.235.115.237,90.170.31.159,106.38.73.166,135.38.41.116,84.97.225.59,101.118.46.17,116.160.6.49,139.38.203.7,137.219.216.65,148.65.103.225,150.102.173.14,110.225.94.46,88.103.233.39,121.192.205.43,161.249.2.83,121.138.26.246,156.135.45.255,96.3.191.90,156.56.252.236,147.11.163.7,159.64.1.166,142.178.194.160,161.213.27.33,117.194.161.245,104.63.68.157,155.255.159.30,174.119.61.83,110.109.155.138,118.35.12.88,108.15.179.147,124.33.17.76,168.37.239.33,91.159.154.253,128.233.21.39,111.111.22.67,108.149.111.208,121.35.156.186,120.244.199.198,128.211.148.67,105.92.236.76,113.31.46.85,135.52.20.119,147.10.23.208,149.6.5.48,150.128.125.69,144.113.164.193,123.186.96.17,93.191.204.197,158.39.230.115,132.170.193.227,120.52.98.88,116.138.191.252,128.159.89.212,146.243.131.158,175.80.87.29,162.98.29.156,132.245.113.144,129.126.180.239,128.200.229.215,138.114.252.87,114.215.222.246,130.50.253.40,113.194.1.237,113.147.80.29,111.227.73.105,147.193.48.46,145.33.126.35,123.168.255.82,156.195.19.157,128.23.164.120,134.0.79.65,144.63.35.193,116.7.246.5,110.97.154.205,157.46.140.42,127.181.68.194,137.164.128.143,151.155.192.0,111.31.179.130,111.146.211.31,133.71.205.43,116.155.250.189,93.241.36.194,153.39.224.71,116.73.187.194,155.124.228.110,99.166.159.148,121.233.0.92,131.77.194.62,113.27.65.127,156.99.125.76,112.188.227.141,71.251.250.99,153.212.96.237,68.49.77.69,104.243.59.118,110.194.188.223,129.214.179.232,114.33.138.34,149.20.137.92,128.57.230.59,107.118.59.135,140.24.229.84,115.51.103.34,129.81.99.68,125.209.159.104,119.36.111.80,186.81.69.98,105.145.43.123,125.149.83.239,129.246.180.66,150.171.212.48,123.55.46.211,150.255.126.109,97.200.147.58,171.84.107.205,135.150.30.178,124.137.200.6,90.94.40.129,96.26.159.208,113.173.167.22,67.57.65.62,126.107.87.198,100.177.181.248,158.114.169.113,175.57.42.55,112.132.104.236,133.83.93.35,120.92.84.118,90.94.95.31,143.170.205.125,102.46.116.10,68.232.21.145,133.245.71.201,115.184.3.244,118.83.95.242,87.183.75.231,133.231.229.38,117.234.129.209,114.106.104.161,109.189.250.81,143.77.39.22,168.112.145.3,83.181.50.164,139.218.45.197,122.196.193.14,122.175.142.239,148.157.7.223,128.11.160.57,119.7.14.92,156.150.46.236,121.151.9.236,121.174.181.182,182.77.28.58,107.203.148.166,117.62.113.194,154.21.44.239,158.30.196.78,116.137.236.15,97.39.219.58,155.18.233.173,138.144.38.208,142.18.39.38,115.39.82.101,157.3.221.8,107.147.70.70,139.181.174.131,122.208.48.239,108.129.239.126,161.122.96.197,147.63.11.7,163.130.162.252,141.134.225.125,162.59.252.159,143.74.239.163,122.108.242.188,115.102.179.212,143.239.112.172,147.156.71.147,150.199.161.172,96.62.212.198,103.165.147.188,169.107.158.54,137.156.29.107,137.76.73.93,133.202.206.161,163.42.227.182,159.226.223.183,146.72.5.130,132.113.147.10,116.204.235.91,121.84.161.66,106.205.143.213,84.44.191.131,160.247.73.42,136.155.97.100,104.211.71.62,123.117.127.141,174.133.217.116,132.2.160.149,210.207.20.230,140.77.237.134,146.159.245.212,161.163.134.222,153.33.128.89,132.59.88.126,139.104.15.134,74.173.131.62,131.21.65.7,149.114.147.208,122.78.207.131,116.230.81.74,84.95.61.183,144.171.132.172,122.231.249.32,172.28.4.132,130.3.185.114,124.123.235.115,75.236.175.252,111.6.236.109,136.172.235.103,103.126.11.141,138.0.35.108,145.25.131.173,111.218.208.225,145.85.97.216,168.250.168.44,139.65.214.42,120.173.24.198,105.205.42.238,146.94.82.240,107.255.248.141,113.135.184.104,119.223.51.253,144.134.113.5,87.219.189.190,141.85.5.135,147.255.39.96,114.8.167.116,102.137.241.196,145.245.77.20,81.206.196.39,111.74.236.90,145.185.43.20,118.61.9.51,133.123.70.75,156.25.46.94,133.14.104.226,134.209.119.22,122.1.149.243,168.80.168.109,164.171.70.184,96.56.202.116,111.50.225.68,132.249.216.162,128.233.46.41,192.44.138.47,146.13.4.255,106.251.194.19,85.235.140.199,154.173.183.97,133.182.143.194,152.95.26.231,110.199.65.137,109.239.55.65,150.2.89.91,114.236.88.89,130.110.184.248,112.148.58.124,166.58.212.191,131.114.176.101,109.241.20.88,131.199.108.63,98.185.41.29,145.25.196.92,150.107.95.242,138.219.99.168,117.190.228.151,183.171.171.136,133.255.53.201,106.73.26.191,102.9.212.19,142.254.185.121,135.105.200.111,75.151.70.60,132.121.28.195,162.64.224.29,160.248.82.109,182.66.5.44,152.236.114.91,132.219.49.172,143.21.204.118,182.66.153.99,152.9.243.213,112.30.185.55,80.82.87.179,115.109.196.232,154.176.131.104,71.88.0.165,87.87.147.114,106.216.75.184,144.94.198.229,155.39.55.48,153.232.85.154,137.177.31.17,88.178.79.182,173.238.41.127,154.58.244.137,153.30.234.238,143.178.27.110,144.247.184.7,138.62.41.28,154.139.175.60,120.97.147.8,148.98.36.166,170.158.244.200,91.174.249.79,116.151.201.250,116.244.226.64,97.127.65.82,117.172.111.223,120.158.142.167,126.199.106.136,132.63.11.194,196.33.145.43,165.27.243.152,128.224.166.145,119.48.151.222,151.174.163.72,90.179.6.168,100.157.146.28,111.104.158.196,140.88.252.200,131.46.18.41,132.49.98.73,115.77.212.161,107.221.139.232,98.1.252.245,94.69.245.149,158.172.10.129,162.245.11.242,155.13.159.159,110.91.161.194,138.90.143.138,102.200.167.39,121.172.48.177,114.229.59.237,122.194.163.90,93.128.32.74,118.106.34.198,126.80.22.162,106.140.201.48,165.109.232.114,86.228.69.234,82.118.127.179,168.75.27.169,140.21.218.73,110.154.178.37,129.6.202.225,134.118.180.4,138.40.247.159,134.187.251.191,129.108.15.116,138.238.101.253,103.137.224.215,108.236.1.130,135.134.242.141,135.158.127.153,129.94.83.198,172.153.19.245,154.181.254.165,151.250.99.133,148.104.120.192,97.2.210.231,161.32.248.170,107.242.252.148,133.220.32.11,125.234.67.30,90.106.128.200,100.178.189.248,140.73.247.120,148.251.160.239,152.121.192.181,163.20.153.49,157.43.254.241,119.1.29.28,114.3.58.202,189.170.111.228,123.40.172.253,97.121.230.82,73.207.43.192,143.176.25.160,156.201.245.156,145.89.249.0,126.230.159.86,110.117.191.19,124.223.243.141,153.235.109.121,166.121.135.165,148.126.146.194,151.114.60.147,125.116.226.196,129.130.12.86,114.212.173.102,126.204.91.122,139.218.158.17,173.251.167.3,143.249.101.132,168.60.186.187,112.47.229.217,148.24.118.217,161.104.248.185,148.150.214.149,149.76.142.18,131.76.222.203,83.244.89.73,133.241.98.100,101.88.127.247,130.26.219.38,144.196.163.53,108.181.168.152,151.21.39.171,142.10.156.157,103.157.142.165,148.139.40.220,111.68.138.10,77.203.230.144,116.51.131.32,131.152.189.208,119.87.90.183,129.104.105.56,161.97.224.2,123.133.226.129,125.102.56.40,122.163.157.12,99.249.54.116,126.72.97.233,149.2.60.244,119.68.141.93,108.185.163.2,116.175.210.12,145.100.218.25,126.68.54.160,142.219.82.34,118.84.218.30,118.148.186.120,130.208.49.76,134.111.231.225,130.132.48.133,103.94.53.96,134.180.33.206,124.30.33.241,107.13.192.74,159.9.213.55,92.26.217.188,105.188.14.102,154.85.198.163,143.107.32.92,129.97.15.135,127.129.92.19,149.159.130.224,169.192.160.71,124.84.229.125,156.52.216.120,136.243.233.103,90.183.118.190,122.140.170.76,119.28.206.101,108.77.197.197,125.74.101.159,129.116.170.22,157.186.238.219,108.26.110.130,137.226.48.43,94.47.48.37,146.129.233.80,130.156.124.142,110.30.147.62,108.222.101.197,160.162.116.101,157.0.82.27,160.11.247.134,115.227.124.74,145.18.117.93,125.129.71.244,142.140.236.48,148.72.112.151,181.145.20.150,128.79.219.232,123.13.114.114,100.146.129.170,121.63.4.109,145.202.147.38,115.67.47.24,132.120.185.98,62.191.5.218,85.28.174.44,138.253.113.80,163.105.98.90,111.45.83.184,137.48.5.199,70.39.234.105,86.118.230.48,146.59.179.190,140.217.106.150,178.100.67.48,171.187.235.236,102.16.175.136,109.184.109.59,143.112.178.156,129.148.36.66,139.139.124.78,138.131.189.101,131.234.13.187,139.130.116.133,142.123.109.239,149.32.43.30,100.172.26.167,117.13.129.66,148.222.23.79,150.74.222.206,147.43.162.117,95.94.4.134,145.113.255.110,125.108.198.177,133.35.149.198,146.155.16.116,139.20.69.26,112.25.210.182,163.64.121.187,92.200.149.253,103.34.23.117,123.195.141.68,144.16.44.209,80.147.32.32,65.41.155.153,168.26.21.148,119.173.209.191,105.81.158.74,169.212.242.242,176.175.178.203,149.3.186.20,149.102.209.5,140.225.103.27,142.188.229.82,119.191.123.105,127.217.192.128,124.193.197.67,132.87.207.59,139.254.244.158,128.191.66.19,106.175.175.216,120.189.175.75,120.184.219.214,107.32.43.47,123.221.73.100,116.32.153.81,102.192.191.242,164.15.217.91,130.113.177.134,80.118.202.27,135.186.56.119,126.21.199.240,138.160.99.16,147.61.47.234,99.52.131.160,179.203.251.175,140.118.186.99,96.229.107.156,109.148.113.17,122.173.72.161,156.228.225.167,164.217.118.225,133.77.180.157,139.10.202.157,101.79.104.94,136.107.0.148,62.89.130.10,131.223.174.169,162.8.54.13,99.8.230.215,125.125.113.48,107.0.178.130,134.72.82.106,124.124.43.230,109.249.7.21,181.215.124.3,115.78.154.97,76.223.240.204,119.99.185.47,104.150.49.209,105.151.140.196,165.14.176.86,84.101.183.112,113.251.14.188,109.25.50.111,59.244.75.8,156.26.70.60,176.218.30.203,133.125.252.192,109.85.187.24,150.17.11.50,132.192.62.48,125.42.236.219,153.144.46.212,75.15.27.177,149.33.240.220,160.215.0.168,145.50.233.138,166.85.157.113,131.46.126.0,158.234.57.108,116.53.37.117,122.215.225.204,166.65.6.221,135.64.125.92,128.76.170.27,138.144.63.139,127.200.41.30,140.138.220.16,92.196.49.239,94.151.109.224,45.248.0.7,157.250.134.167,127.83.245.127,129.138.43.78,97.80.204.212,120.226.158.120,149.36.230.86,217.41.77.90,131.240.77.127

File core/configure/makefile

+all:
+	./test.py

File core/configure/mod_util.py

+##############################################
+####    Utility Function for Configure #######
+##############################################
+def LoadValidIP(fileName):
+    fid = open(fileName, 'r')
+    content = fid.readline()
+    # print content
+    return content.split(',')
+
+def GetIPAdress():
+    '''
+    Select normal IP address and abnormal IP address,
+    the distance  between normal IP address and abnormal IP
+    address is very large
+    '''
+    IPMat = GetIPMat() #  Get All IPs
+    DF = lambda x,y:np.abs(x[0]-y[0])* (256 ** 3) + np.abs(x[1]- y[1]) * (256 ** 2) + np.abs(x[2] - y[2]) * (256) + np.abs(x[3] - y[3])
+    # Calculate the center and distance to centers
+    center, dis = CalIPCenter(IPMat, DF)
+    sortIdx = np.argsort(dis, axis=0)
+    ratio = 0.001 # Portion of selected points
+    IPNum = len(dis)
+    corePts = list( sortIdx[ range(int(IPNum * ratio)) ] );
+    anoPts = list( sortIdx[ range(int(IPNum * (1-ratio)), IPNum, 1) ] )
+
+    graphSize = len(corePts) + len(anoPts) # Size of the Graph
+
+    IPSrcSet = []
+    for pt in corePts:
+        IPSrcSet.append("%d.%d.%d.%d" %(IPMat[pt, 0], IPMat[pt, 1], IPMat[pt, 2], IPMat[pt, 3]))
+    AnoSet = []
+    for pt in anoPts:
+        AnoSet.append("%d.%d.%d.%d" %(IPMat[pt, 0], IPMat[pt, 1], IPMat[pt, 2], IPMat[pt, 3]))
+    return IPSrcSet, AnoSet, graphSize
+
+def CalIPCenter(IPMat, DF):
+    '''*IPMat* is a Mx4 numpy matrix contains M ip addresses.
+    *DF* is a user defined distance function'''
+    IPNum, y = np.shape(IPMat)
+    IPCenter = np.mean(IPMat, axis=0)
+    dis = np.zeros( (IPNum, 1) )
+    for i in range(IPNum):
+        dis[i] = DF(IPMat[i,:], IPCenter)
+    return IPCenter, dis
+
+
+try:
+    from matplotlib.pyplot import figure, plot
+except:
+    print 'no matplotlib'
+
+def PlotPts(IPMat, corePts, anoPts, c):
+    figure()
+    for pt in corePts:
+        plot(IPMat[pt, 0], IPMat[pt, 1], 'bo')
+    for pt in anoPts:
+        plot(IPMat[pt, 0], IPMat[pt, 1], 'ro')
+    plot(c[0], c[1], 'go')
+
+import settings
+try:
+    import numpy as np
+except:
+    print "numpy hasn't been installed"
+def GetIPMat():
+    '''load valid ip adrees from setting.IPS_FILE'''
+    IP = LoadValidIP(settings.IPS_FILE)
+    IPNum = len(IP)
+    IPMat = np.zeros( (IPNum, 4) )
+    i = -1
+    for ip in IP:
+        i += 1
+        val = ip.split('.')
+        ipInt = [int(x) for x in val]
+        IPMat[i, :] = ipInt
+    return IPMat
+
+# def GetIPMat():
+#     '''load valid ip adrees from setting.IPS_FILE'''
+#     IP = LoadValidIP(settings.IPS_FILE)
+#     return [ [int(x) for x in ip.split('.')] for ip in IP]
+
+
+
+
+def P2F_RAW(flowRate, flowDuration, pktRate): # Change Prameter to FS Format for rawflow
+    pass
+# interval =
+    # flowlets # Number of Flowlets in Flow
+    # bytes # Number of Flowlets in each flow
+    # interval # Interval between flowlets.
+    # pkts # Number of packets in each emitted flow
+
+
+# def F2P_RAW(flowlets, bytes, interval, pkts ):
+#     pktRate = bytes * pkts / interval
+#     flowDuration = flowlets * interval
+#     flowRate = 1.0 / flowDuration
+
+
+
+import re
+def FixQuoteBug(fileName, delay=0.001):
+    """ There is a bug in pydot. when link attribute is < 1, pydot will automatically add quote to value
+    which is not desirable. This function try to fix that problem """
+    fid = open(fileName, 'r')
+    content = fid.read()
+    content = re.sub('delay="[\d.]*"', 'delay='+str(delay), content)
+    fid.close()
+    fid = open(fileName, 'w')
+    fid.write(content)
+    fid.close()
+
+
+def ParseArg(string):
+    # print '---before--'
+    # print string
+    string = string.replace('"','')
+    # print string
+    # print '---after--'
+    val = string.rsplit(' ')
+    attr = dict()
+    for v in val:
+        sr = v.rsplit('=')
+        if len(sr) == 1:
+            attr['name'] = sr[0]
+        else:
+            x, y = sr
+            attr[x] = y
+    return attr
+
+# Both Modulator and Source are described by Attr
+class Attr():
+    '''Sub Class of String. __str__ method was overloaded, providing an easy way to
+    get DOT format attribute string.'''
+    def __init__(self, string=None, **args):
+        if not string:
+            self.attr = args
+        else:
+            self.attr = ParseArg(string)
+
+    def __str__(self):
+        string = '"' + self.attr['name']
+        for k, v in self.attr.iteritems():
+            if k == 'name':
+                continue
+            string = string + ' ' + k + '=' + str(v).replace(" ", "")
+        string = string + '"'
+        return string
+
+
+from random import randint
+def choose_ip_addr(ip_addr_set):
+    n = len(ip_addr_set)
+    return ip_addr_set[randint(0, n-1)]
+
+
+import random
+
+def RandDist(dist):
+    '''Generate Random Variable According to Certain Kind of
+    Distribution'''
+
+    # TODO Finish A Complete Version
+    s = 0
+    rv = random.random()
+    m = -1
+    for p in dist:
+        m += 1
+        s += p
+        if s > rv:
+            break
+
+    return m
+
+

File core/configure/test.py

+#!/usr/bin/env python
+########################
+### MVBehaviour test ###
+########################
+
+from unittest import TestCase, main, skip
+from Behaviour import MVBehaviour
+import numpy as np
+
+class MVBehaveTest(MVBehaviour):
+    def stage(self):
+        pass
+
+@skip("classing skipping")
+class TestMultiServer(TestCase):
+    def setUp(self):
+        joint_dist = np.array([[0.2, 0.1],
+            [0.1, 0.6]])
+        self.mv_beh = MVBehaveTest(joint_dist, None, 0.1)
+
+    def testBehave(self):
+        self.mv_beh.behave(0, 1000)
+        self.mv_beh._sample_freq()
+
+########################
+### MVBehaviour test ###
+########################
+gen_para_type_list = [
+        {'TYPE':'mv', 'flow_size':100, 'flow_arrival_rate':0.1},
+        {'TYPE':'mv', 'flow_size':1000, 'flow_arrival_rate':0.1},
+        {'TYPE':'mv', 'flow_size':100, 'flow_arrival_rate':1},
+        {'TYPE':'mv', 'flow_size':1000, 'flow_arrival_rate':1},
+        ]
+from Generator import MVGenerator
+@skip("classing skipping")
+class TestMSGenerator(TestCase):
+    def setUp(self):
+        pass
+    def testSync(self):
+        print '------ start to test generator --------'
+        for no in range(4):
+            mv = MVGenerator(type_no = no,
+                    ipsrc = '0.0.0.0',
+                    ipdst = '0.0.0.0',
+                    states = gen_para_type_list,
+                    TYPE = 'harpoon')
+            mv.sync()
+            # print mv
+
+########################
+### MVNode test ###
+########################
+
+
+########################
+### Network test  ###
+########################
+
+
+
+#################################
+##   topology ##
+#################################
+from numpy import zeros, array
+g_size = 10
+srv_node_list = [0]
+# srv_node_list = [0, 1]
+topo = zeros([g_size, g_size])
+for i in xrange(g_size):
+    if i in srv_node_list:
+        continue
+    topo[i, srv_node_list] = 1
+link_attr = {'weight':'10', 'capacity':'10000000', 'delay':'0.01'} # link Attribute
+
+sim_t = 3000
+start = 0
+DEFAULT_PROFILE = ((sim_t,),(1,))
+
+gen_para_type_list = [
+        {'TYPE':'mv', 'flow_size':100, 'flow_arrival_rate':0.1},
+        {'TYPE':'mv', 'flow_size':1000, 'flow_arrival_rate':0.1},
+        {'TYPE':'mv', 'flow_size':100, 'flow_arrival_rate':1},
+        {'TYPE':'mv', 'flow_size':1000, 'flow_arrival_rate':1},
+        ]
+
+gen_desc = {'TYPE':'harpoon', 'flow_size_mean':'4e3', 'flow_size_var':'100', 'flow_arrival_rate':'1'}
+gen_para_type_list =[gen_desc]
+# size of joint_dist equals to m * m ... *m, there n dimensions array and len of each
+# dimension equals to m, n is the number of server nodes, m is hte possible type of flows
+joint_dist = array([[0.025, 0.025, 0.025, 0.025],
+                    [0.05, 0.05, 0.05, 0.05],
+                    [0.05, 0.05, 0.05, 0.05],
+                    [0.125, 0.125, 0.125, 0.125]])
+norm_desc = dict(
+        TYPE = 'NORMAl',
+        start = '0',
+        node_para = {'states':gen_para_type_list},
+        profile = DEFAULT_PROFILE,
+        joint_dist = joint_dist,
+        interval = 100,
+        )
+
+net_desc = dict(
+        topo=topo,
+        # size=topo.shape[0],
+        size = len(topo),
+        srv_list=srv_node_list,
+        link_attr=link_attr,
+        # node_type='MVNode',
+        node_type = 'NNode',
+        node_para={},
+        )
+
+from Network import Network
+# @skip("classing skipping")
+class TestNetwork(TestCase):
+    def setUp(self):
+        pass
+
+    def testNetwork(self):
+        net = Network()
+        net.init(net_desc, norm_desc)
+        net.write('./res.dot')
+
+if __name__ == "__main__":
+    main()
+
+

File core/configure/validips.txt

+208.231.32.233,173.193.190.100,192.65.129.178,208.62.237.89,90.212.149.140,97.145.19.13,209.222.21.102,166.187.165.115,75.81.108.130,15.174.10.18,15.102.134.106,3.251.42.27,95.50.125.86,68.108.140.241,209.66.152.5,108.24.153.120,17.81.135.167,74.171.177.17,87.155.49.189,62.234.68.195,174.139.108.164,53.181.60.30,122.163.139.165,141.161.8.157,92.12.125.49,188.16.220.239,119.165.6.215,190.188.143.47,12.170.154.134,18.22.204.241,135.23.103.26,15.80.197.178,18.175.103.251,152.85.76.115,207.191.30.134,6.107.47.185,213.82.141.250,72.187.35.214,128.125.224.90,128.165.78.35,205.229.152.226,6.114.165.133,124.193.106.248,63.200.226.233,147.83.116.182,200.180.27.99,69.25.130.149,18.100.0.56,209.186.45.92,214.248.14.115,15.127.164.56,71.191.60.245,65.219.233.179,130.15.185.142,113.100.211.173,53.81.34.171,18.151.233.49,18.46.23.118,7.53.116.32,75.79.133.83,12.54.101.85,57.79.149.212,12.119.83.161,114.9.131.104,192.94.241.4,75.46.237.17,203.176.88.242,198.234.200.75,18.210.185.237,72.249.9.83,17.76.151.52,71.167.234.130,209.48.31.210,17.46.188.178,98.178.160.115,121.243.21.71,114.150.224.120,90.151.149.170,68.252.197.121,128.32.33.222,71.97.221.107,17.104.31.113,17.182.78.171,3.95.236.139,64.207.21.136,204.189.36.112,89.122.150.37,63.64.196.12,98.66.224.206,18.30.251.127,6.224.156.52,79.14.192.33,128.84.44.160,211.115.97.237,53.82.28.96,84.87.209.136,70.136.147.105,3.179.129.97,208.100.13.96,198.42.233.81,208.203.120.79,68.213.254.166,97.162.92.104,72.188.105.212,24.15.209.197,98.186.227.14,24.98.128.145,66.170.246.171,18.148.73.92,98.64.9.120,53.102.227.65,59.92.162.252,53.193.226.120,96.129.195.12,86.43.102.235,98.76.177.225,214.174.106.164,6.81.136.83,129.96.122.87,6.248.76.134,167.6.201.236,3.96.42.138,74.143.162.238,97.231.247.160,87.140.117.165,147.215.127.112,75.29.96.212,67.166.34.163,87.158.115.2,61.7.179.1,78.15.56.21,114.87.214.251,84.68.140.46,88.74.226.53,3.183.100.8,3.154.147.206,87.118.94.173,75.6.23.204,63.114.136.90,24.216.232.2,195.147.161.71,139.230.13.207,18.196.21.186,114.166.43.136,7.2.152.155,68.248.47.76,200.248.150.199,61.17.76.208,15.179.22.157,163.1.27.27,53.29.165.27,66.21.76.234,171.75.238.72,220.97.191.40,206.203.128.70,202.144.96.210,78.81.200.128,119.201.108.241,222.106.169.200,68.117.110.66,66.13.187.42,71.66.140.138,202.72.17.14,15.97.184.24,192.124.98.15,15.169.4.74,217.57.204.255,75.19.75.60,88.217.41.40,17.52.185.147,75.93.89.161,74.59.51.97,92.31.157.91,92.17.221.117,94.220.175.162,15.82.199.85,59.189.227.220,74.161.75.159,12.254.52.155,70.113.160.136,98.223.76.102,98.133.228.103,190.137.248.144,77.199.137.196,35.108.195.134,78.247.238.96,64.184.177.197,146.244.43.232,63.93.102.237,3.24.84.78,18.40.12.174,201.218.124.223,65.231.196.144,195.46.177.234,70.157.25.171,89.117.243.34,17.180.238.27,64.26.139.113,108.56.127.10,66.88.231.3,205.171.120.241,190.51.9.48,12.14.18.4,201.110.89.14,75.231.20.201,178.162.246.51,24.27.188.90,117.40.107.152,196.34.16.172,83.23.207.102,167.145.0.166,114.158.152.170,68.108.204.238,53.246.106.58,209.92.128.191,212.100.24.67,217.206.48.250,17.87.45.62,75.75.232.126,53.6.43.77,64.56.60.207,53.184.179.117,67.202.34.9,71.38.187.10,108.13.201.161,201.137.189.189,207.12.170.116,60.52.9.169,4.47.6.239,74.74.62.180,74.180.239.152,130.237.115.163,114.164.166.173,15.57.43.237,57.72.233.58,63.173.166.180,80.47.250.182,211.174.176.135,193.118.11.215,216.99.214.191,97.23.66.85,66.215.149.184,87.2.49.129,6.140.70.178,18.15.169.88,68.111.102.155,96.254.87.230,17.167.62.194,69.27.15.159,156.142.232.51,61.6.216.3,68.79.142.96,147.251.132.89,17.2.23.155,114.4.174.225,139.55.141.220,6.212.195.184,210.195.30.98,7.0.1.42,70.151.149.31,24.250.167.72,158.184.118.194,93.39.42.228,24.187.33.127,66.151.58.244,79.57.177.179,78.25.95.56,71.122.80.211,190.36.17.136,190.213.184.227,62.41.168.65,78.81.118.124,17.236.13.17,24.51.155.181,97.250.239.228,194.170.250.29,98.81.123.71,204.27.176.198,205.152.83.191,121.131.122.108,149.79.172.101,128.232.31.218,75.79.140.141,168.30.33.19,65.13.168.71,6.10.135.238,203.54.44.157,97.8.58.232,88.224.192.111,18.112.155.78,89.224.23.52,6.120.62.235,47.82.12.37,212.178.85.148,133.19.14.66,63.74.4.88,159.84.71.111,89.224.1.178,210.55.25.158,53.97.169.194,74.179.61.245,78.39.142.202,147.229.118.101,74.86.255.201,24.247.158.39,78.166.73.65,91.206.137.151,139.178.20.130,207.163.229.159,67.216.101.26,114.68.141.45,6.95.125.119,75.8.221.110,208.82.118.172,152.34.4.32,80.183.241.22,71.152.212.200,78.247.33.55,117.199.209.161,141.76.229.203,198.153.142.76,140.253.123.175,190.26.133.216,53.67.254.123,202.134.152.56,3.1.218.119,208.206.92.233,146.176.229.68,17.80.202.127,209.180.147.254,83.25.171.12,152.12.226.219,75.69.233.154,15.199.189.160,88.166.123.97,123.203.176.217,92.242.7.112,218.150.130.218,71.138.113.30,97.195.235.177,88.116.60.197,18.54.92.109,75.204.113.126,192.52.220.168,81.100.46.53,88.191.240.171,18.127.252.231,208.4.54.252,98.136.255.231,3.199.124.99,94.109.23.170,53.174.90.112,74.74.75.6,15.210.45.8,15.84.67.62,169.244.24.175,71.142.158.104,66.106.97.24,18.93.73.189,17.193.61.59,3.33.53.54,65.118.84.193,174.37.14.34,3.48.18.9,78.132.100.254,6.60.153.237,206.233.195.85,207.170.97.184,159.71.50.104,24.139.219.67,90.214.34.178,65.218.210.4,121.241.117.217,15.15.6.140,3.247.213.113,53.48.53.182,64.69.123.56,217.189.169.27,129.37.74.128,87.169.132.203,81.244.7.101,71.92.199.114,15.175.185.216,18.150.138.164,18.122.189.187,59.183.197.150,206.245.254.108,18.129.70.145,78.74.110.140,97.26.150.37,96.239.179.62,66.1.23.152,76.198.164.45,136.204.167.118,68.236.150.138,108.19.27.248,114.163.78.113,15.173.236.119,84.137.214.62,12.164.128.135,17.49.108.137,63.101.206.77,53.24.16.6,113.97.181.61,141.241.201.61,82.195.98.55,163.32.221.124,216.215.198.121,208.135.242.81,65.96.187.200,209.7.139.210,15.220.18.225,78.111.79.234,81.69.59.179,18.162.207.82,207.144.14.82,77.166.92.233,99.173.192.51,75.69.20.47,15.168.25.155,17.99.206.201,68.195.149.137,77.197.129.156,68.77.169.160,17.93.253.54,198.178.232.155,61.3.97.232,58.145.143.71,86.158.198.187,195.101.210.134,117.26.43.164,15.148.214.88,6.43.212.3,119.212.230.129,72.234.168.108,76.201.116.233,66.2.89.229,6.246.40.239,15.177.0.40,78.69.78.149,3.200.4.231,90.194.129.196,17.28.135.54,6.254.190.251,155.105.65.51,193.89.115.51,157.88.184.30,84.195.193.246,3.75.11.203,68.68.239.47,98.65.248.169,71.233.15.157,53.39.206.17,78.7.51.17,78.220.242.174,70.157.75.132,68.10.190.241,80.219.55.29,97.158.154.137,97.252.52.199,58.3.30.162,3.240.255.96,15.117.81.233,75.136.129.127,114.60.17.72,3.235.94.108,12.47.121.2,72.214.205.94,62.149.13.154,129.12.27.219,6.250.33.140,18.31.108.200,18.28.19.255,6.11.238.102,200.62.155.228,6.233.37.23,78.239.219.228,94.3.183.55,63.115.238.157,63.11.136.45,216.242.186.175,128.42.23.175,74.160.108.139,78.191.218.25,79.2.171.226,187.21.162.206,212.145.66.200,6.218.52.220,210.159.179.125,130.199.10.230,6.85.124.57,114.246.118.126,17.211.101.148,53.73.213.197,128.122.149.250,134.68.196.244,212.161.75.157,118.119.140.136,129.199.74.140,78.85.238.119,204.175.0.128,154.11.107.91,66.216.109.168,206.138.111.154,15.93.96.77,66.223.1.93,187.26.113.125,15.196.185.193,63.167.84.30,98.215.64.74,76.192.67.134,69.209.52.167,62.37.11.207,207.206.30.158,95.122.112.65,210.239.48.134,71.104.61.91,130.83.116.76,128.210.73.225,53.103.235.155,110.52.139.245,12.252.191.148,78.6.181.215,15.30.33.205,41.230.79.173,216.249.203.141,152.119.105.225,86.141.247.58,17.97.144.193,47.142.151.127,90.25.97.250,208.182.198.75,169.234.36.26,12.105.79.108,63.88.252.159,169.7.98.18,74.54.184.180,65.187.163.249,15.182.199.183,205.156.227.132,96.128.102.245,158.116.193.144,117.25.102.222,17.242.127.17,114.19.25.86,134.93.17.63,15.59.239.206,78.213.133.29,219.148.51.172,15.200.42.213,62.202.204.52,86.127.79.172,206.173.238.163,203.239.51.220,53.19.149.67,86.155.31.148,6.172.173.96,6.198.90.50,216.206.70.79,212.225.13.64,114.96.2.55,18.202.76.12,216.199.178.122,209.175.101.228,53.203.177.158,192.103.184.106,216.168.94.179,18.228.60.196,195.158.80.205,195.62.129.37,114.82.39.223,3.207.186.205,151.92.184.85,87.214.161.62,196.31.183.174,155.63.0.196,165.88.150.216,141.3.219.152,89.133.85.6,114.240.184.188,216.135.170.94,114.98.198.121,203.6.255.72,172.185.56.98,65.160.132.126,97.22.187.174,53.35.208.84,138.64.94.217,69.46.9.18,17.247.160.197,98.69.76.2,3.207.50.65,70.136.5.210,3.35.219.163,212.178.35.171,195.101.15.179,152.36.12.220,18.208.226.94,96.249.182.88,18.141.106.57,202.131.140.163,70.226.231.117,119.198.180.173,71.148.164.30,6.190.86.205,208.36.154.202,18.92.28.233,209.94.207.15,15.59.56.66,68.23.171.241,29.52.151.2,65.40.107.143,87.59.181.104,52.10.138.1,57.56.56.114,59.53.156.156,203.248.189.71,18.169.111.100,59.180.166.222,71.219.38.141,15.216.246.77,87.3.179.217,204.30.211.191,130.149.11.224,160.94.237.230,218.3.66.184,128.12.28.120,61.112.227.233,170.89.31.119,67.92.164.24,6.79.244.231,3.63.13.90,78.75.132.184,82.10.84.27,147.215.172.207,53.159.151.247,80.200.46.6,76.246.106.236,94.216.70.112,68.202.143.15,75.38.231.69,87.12.52.134,81.99.180.229,138.89.128.22,70.96.200.37,78.121.168.175,217.228.160.102,64.255.163.193,78.213.20.102,6.203.200.24,209.77.208.6,53.125.74.169,65.248.52.231,24.234.125.85,219.6.54.124,24.7.131.128,75.160.195.131,78.105.115.59,3.142.199.20,63.76.122.245,64.151.43.169,113.110.52.120,75.181.111.216,63.210.211.65,53.201.107.161,6.213.37.236,194.244.241.82,78.69.37.251,165.30.111.71,98.91.42.147,53.156.180.218,72.69.149.137,91.140.23.73,6.103.221.223,207.33.43.179,89.161.212.65,18.234.131.65,3.7.25.215,187.26.250.106,4.153.85.29,200.40.239.16,97.177.7.227,75.61.98.66,97.158.181.14,144.139.249.30,17.194.110.36,90.217.180.41,195.76.127.161,108.49.17.27,15.176.66.5,94.8.221.245,152.19.46.105,24.199.48.2,65.0.197.169,72.214.221.14,155.207.80.69,217.82.45.218,75.14.179.228,71.212.135.1,78.154.125.62,50.22.139.41,114.203.208.77,15.23.240.149,17.156.88.69,17.137.235.42,174.134.132.240,17.2.1.74,7.23.128.235,63.167.16.4,78.194.72.230,114.162.54.143,113.98.212.52,216.60.130.171,6.70.177.84,58.215.110.76,67.118.92.157,15.142.17.192,168.17.236.10,95.123.199.56,192.104.81.112,69.248.197.155,199.89.181.84,216.188.230.62,71.196.192.4,217.231.173.10,12.72.208.228,142.154.200.244,76.65.212.177,95.122.77.182,66.214.192.93,153.87.111.66,53.190.127.17,198.102.159.249,97.178.115.113,87.156.168.250,71.78.113.228,83.95.198.168,66.133.8.246,3.252.243.200,201.47.101.66,70.146.31.132,61.198.228.13,75.94.166.145,53.171.55.16,99.148.126.143,212.102.128.167,99.149.49.44,77.194.140.199,201.241.28.221,64.38.159.219,207.204.224.102,184.155.34.145,67.227.12.114,114.249.198.244,6.245.121.226,3.149.107.9,71.76.111.112,24.148.21.198,68.235.48.61,38.203.242.89,15.235.198.63,83.226.105.128,70.185.101.99,114.172.66.178,15.107.253.206,119.219.221.129,78.232.117.84,81.245.237.127,18.158.34.207,65.24.69.50,152.29.39.107,74.69.181.61,143.83.71.67,208.51.184.175,72.209.151.100,24.101.173.39,53.22.221.6,82.51.145.123,17.233.153.251,18.136.161.216,58.220.228.66,146.145.193.28,209.168.49.245,3.65.79.58,53.221.28.247,144.81.254.6,18.175.146.110,124.173.52.94,78.236.175.73,114.234.22.95,130.240.91.241,77.57.27.154,142.154.202.5,6.60.104.105,78.51.216.178,78.238.48.182,80.196.76.163,78.80.255.201,198.83.10.118,78.114.69.61,114.18.128.97,89.1.197.248,17.10.218.150,149.123.123.74,15.156.96.209,123.112.40.236,3.148.17.74,70.70.185.191,60.58.69.207,12.8.161.79,194.22.174.232,198.182.120.91,201.137.116.3,12.158.247.32,6.82.52.135,79.154.70.18,119.198.92.183,121.11.208.51,65.89.229.184,204.62.199.71,193.95.216.126,18.213.65.43,53.202.218.1,15.170.18.24,132.187.72.252,87.133.84.177,79.63.12.50,76.253.249.128,77.67.170.78,66.106.59.43,94.0.194.109,63.200.153.52,65.214.74.29,97.54.130.133,192.116.146.82,71.144.96.33,78.189.200.137,219.210.85.166,74.223.164.192,6.223.231.81,194.166.210.217,180.222.16.47,108.13.51.36,134.105.53.206,143.51.65.159,208.189.164.25,41.233.181.30,49.0.5.102,217.102.13.255,69.134.2.190,98.135.165.27,78.139.204.173,66.15.184.114,18.4.127.54,97.162.87.161,187.7.27.224,68.48.190.173,208.245.194.125,218.226.57.122,172.210.226.200,119.201.70.17,92.30.132.203,212.73.3.147,70.120.221.150,3.79.223.42,207.203.28.128,17.221.224.228,130.108.162.139,75.199.82.146,15.200.44.51,17.201.54.58,60.48.223.2,78.122.77.77,212.127.158.172,67.94.43.187,3.9.244.95,114.223.209.45,80.28.15.224,59.52.81.240,121.131.54.236,76.196.212.202,6.34.37.121,53.98.203.197,144.90.41.133,124.43.155.129,125.120.215.136,209.193.9.26,74.139.31.155,114.70.17.132,63.84.14.184,81.0.127.247,6.127.106.211,96.0.4.66,83.153.191.220,15.155.106.106,67.3.18.96,17.111.139.219,17.130.141.80,75.173.102.139,17.165.113.38,18.196.45.55,208.57.38.195,72.80.132.237,207.26.64.206,78.179.173.72,61.33.64.59,64.52.202.119,141.64.101.44,192.234.115.180,3.242.136.25,216.102.143.132,53.110.110.223,18.99.244.6,17.62.130.221,91.104.131.232,168.77.148.94,222.108.227.95,94.8.11.163,89.27.195.229,210.67.178.217,20.18.5.146,174.120.229.104,128.113.218.128,71.95.69.121,75.129.216.242,114.216.128.141,75.158.46.54,76.77.137.30,15.142.36.94,70.212.237.244,68.36.196.155,114.18.231.115,135.248.204.134,81.214.15.52,65.43.61.23,87.212.36.22,180.230.212.124,70.118.179.195,17.147.51.132,78.182.232.113,114.209.105.153,64.24.198.180,97.240.8.96,92.8.229.0,150.176.34.252,45.76.210.176,208.182.198.219,97.130.106.73,141.219.61.92,83.50.68.138,18.178.163.170,63.118.73.25,117.42.88.12,6.108.218.45,141.62.45.237,207.113.109.37,129.116.237.182,3.139.95.242,96.129.48.171,18.219.138.132,82.237.208.212,96.240.130.96,198.199.140.176,62.168.64.119,95.211.124.222,64.114.48.165,207.233.207.82,168.28.211.146,152.125.46.228,164.227.19.165,158.110.52.163,195.14.97.147,3.2.99.227,71.72.107.8,13.202.220.27,98.168.87.55,114.128.14.141,114.47.29.34,63.255.14.221,150.150.100.124,70.99.239.114,67.188.142.129,87.136.240.9,91.104.16.214,76.229.78.104,71.210.255.192,72.222.31.100,53.101.0.164,150.135.87.183,194.184.132.27,7.40.186.136,143.55.235.132,97.20.187.131,206.166.153.76,77.228.250.218,213.69.86.42,211.133.144.191,4.40.73.107,79.116.85.36,70.133.205.253

File core/ns3/.DS_Store

Binary file removed.

File core/ns3/DotConfig.py

+#!/usr/bin/env python
+import networkx
+import itertools
+from util import get_net, CIDR_to_subnet_mask
+
+class DotConfig(object):
+    """load dot configurationn. """
+    # DEFAULT_ROUTING_PREFIX = 8
+    DEFAULT_ROUTING_PREFIX = 24
+
+    # the fs dot file doesn't have the botnet and trace information.
+    pcap_nodes = [ 0, 1, 2 ]
+    pcap_links = [ (0, 2) ]
+    botmaster_id_set = [  ]
+    client_id_set = [ ]
+    server_id_set = [  ]
+    server_addr = [ ]
+
+    def __init__(self, f_name, trace_config):
+        self._loadconfig(f_name)
+        self.__dict__.update(trace_config)
+
+    def _loadconfig(self, config):
+        self.graph = networkx.nx_pydot.read_dot(config)
+
+    @staticmethod
+    def nid(node_name):
+        """get node id from **node_name**, node_name should start
+        with n and follows with a digit"""
+        return int(node_name[1:])
+    @staticmethod
+    def nname(nid):
+        return 'n' + str(nid)
+
+
+    def _load_link_attr(self):
+        """create **link_attr** map, with the key to be tuple (src_id, dst_id)
+        the value is defined by **link_handler_list**.
+        """
+        link_handler_list =(
+                ('delay', lambda x: x + 's'),
+                ('capacity', lambda x: x + 'bps'),
+                )
+        def handle(d, h):
+            """h[0] is the attribute name, h[1] is the preprocessor"""
+            return h[1](d[h[0]])
+
+        self.link_attr = dict()
+        for src_node, dst_node, d in self.graph.edges(data=True):
+            self.link_attr[(self.nid(src_node), self.nid(dst_node))] = [handle(d, h) for h in link_handler_list]
+
+    def load_mod_prof(self):
+        """return a dictionary. for each node return the
+           (start, end, num, generator): start time of onoff application, end time of onoff application and the number and source.
+        """
+        self.mod_prof = dict()
+        for node_name, node_attr in self.graph.node.iteritems():
+            self.mod_prof[node_name] = []
+            for mod in node_attr['traffic'].rsplit():
+                mod_name = mod.strip('"')
+                mod_info_str = node_attr.get(mod_name, None)
+                # modulator profile=((8000,),(1,)) start=0 generator=s1_1
+                if not mod_info_str:
+                    continue
+
+                mod_info_list = mod_info_str.strip('"').rsplit()
+                assert(mod_info_list[0] == 'modulator')
+                mod_para = dict(val_pair.rsplit('=') for val_pair in mod_info_list[1:])
+                start = float(mod_para['start'])
+                cum_time = start
+                for dur, num in zip(*eval(mod_para['profile'])):
+                    self.mod_prof[node_name].append( (cum_time, cum_time+dur, num, mod_para['generator']) )
+
+        return self.mod_prof
+
+    def get_gen(self, node_name, gen_name):
+        """get generator from **node_name** with name **gen_name**
+        """
+        gen_string = self.graph.node[node_name][gen_name]
+        gen_info_list = gen_string.strip('"').rsplit()
+        gen = dict()
+        gen['type'] = gen_info_list[0]
+        for info in gen_info_list[1:]:
+            kvpair = info.rsplit("=")
+            gen[kvpair[0]] = kvpair[1]
+        return gen
+
+    def export_net_settings(self, fname):
+        """export **link_attr**, **link_to_ip_map**, from the dot configuration
+        get **link_attr** first, then for each link, search the ipdests for
+        the node. Find two ipaddress share with the same prefix, add corresponding
+        item to link_to_ip_map. if the net
+        length in the CIDR format is not specified, use the default value of
+        24.
+        """
+        self._load_link_attr()
+
+        def get_ips(nid):
+            ipstr = self.graph.node[self.nname(nid)]['ipdests']
+            return [ip.strip('"') for ip in ipstr.rsplit(' ')]
+
+        def find_addr_in_same_net(a, b):
+            # routing_prefix_len = lambda a: int(a.rsplit('/')[1]) if '/' in a else self.DEFAULT_ROUTING_PREFIX
+            aug_routing_prefix_len = lambda a: a if '/' in a else (a + '/' + str(self.DEFAULT_ROUTING_PREFIX))
+
+            def same_net(au, bu):
+                a_addr, a_net, a_mask = CIDR_to_subnet_mask(au)
+                b_addr, b_net, b_mask = CIDR_to_subnet_mask(bu)
+                return get_net(a_net, a_mask) == get_net(b_net, b_mask)
+
+            for addr1, addr2 in itertools.product(a, b):