From dbef6ca9d0daa82de8fdf083389593fc6dbd7cdc Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 14 Jun 2024 11:26:29 -0500 Subject: [PATCH 01/59] First commit for FENDL3.2B retrofitting --- .../fendl32B_retrofit/GROUPR/groupr.py | 20 + .../fendl32B_retrofit/GROUPR/groupr_tools.py | 230 ++++++++ .../GROUPR/run_njoy_template.sh | 42 ++ src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 103 ++++ src/DataLib/fendl32B_retrofit/gendf_tools.py | 141 +++++ src/DataLib/fendl32B_retrofit/mt_table.csv | 538 ++++++++++++++++++ 6 files changed, 1074 insertions(+) create mode 100644 src/DataLib/fendl32B_retrofit/GROUPR/groupr.py create mode 100644 src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py create mode 100644 src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh create mode 100644 src/DataLib/fendl32B_retrofit/fendl3_gendf.py create mode 100644 src/DataLib/fendl32B_retrofit/gendf_tools.py create mode 100644 src/DataLib/fendl32B_retrofit/mt_table.csv diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr.py new file mode 100644 index 0000000..2201167 --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr.py @@ -0,0 +1,20 @@ +import groupr_tools as grpt +import pandas as pd + +# Call TENDL download function by user CLI input +element = input('Select element: ') +A = input('Select mass number: A = ') +endf_path = grpt.tendl_download(element, A, 'endf') +pendf_path = grpt.tendl_download(element, A, 'pendf') +print(f'ENDF file can be found at ./{endf_path}') +print(f'PENDF file can be found at ./{pendf_path}') + +# Extract necessary MT and MAT data from the ENDF file +matb, MTs = grpt.endf_specs(endf_path) + +# Write out the GROUPR input file +mt_table = pd.read_csv('./mt_table.csv') +card_deck = grpt.groupr_input(matb, MTs, element, A, mt_table) + +# Run NJOY +grpt.run_njoy(endf_path, pendf_path, card_deck, element, A) \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py new file mode 100644 index 0000000..308f5af --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -0,0 +1,230 @@ +# Import packages +import ENDFtk +import os +import requests +import contextlib +import subprocess +import pandas as pd + +# List of elements in the Periodic Table +elements = [ + 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', + 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', + 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', + 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', + 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', + 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', + 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', + 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', + 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', + 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', + 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', + 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og' +] + +# Define a function to download the .tendl file given specific user inputs to for element and mass number +def tendl_download(element, A, filetype, save_path = None): + # Ensure that A is properly formatted + A = str(A) + if 'm' in A: + m_index = A.find('m') + A = A[:m_index].zfill(3) + 'm' + else: + A = A.zfill(3) + + # Define general URL format for files in the TENDL database + tendl_gen_url = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' + + # Construct the filetype-specific URl for the data file + if filetype == 'endf' or filetype == 'ENDF': + # Construct the URL of the ENDF file to be downloaded + download_url = tendl_gen_url + f'{element}/{element}{A}/lib/endf/n-{element}{A}.tendl' + + # Define a save path for the ENDF file if there is not one already specified + if save_path is None: + #save_path = f'tendl_2017_{element}{A}_{filetype}.endf' + save_path = 'tape20' + + elif filetype == 'pendf' or filetype == 'PENDF': + # Construct the URL of the PENDF file to be downloaded + download_url = tendl_gen_url + f'{element}/{element}{A}/lib/endf/n-{element}{A}.pendf' + + # Define a save path for the PENDF file if there is not one already specified + if save_path is None: + #save_path = f'tendl_2017_{element}{A}_{filetype}.pendf' + save_path = 'tape21' + + # Check if the file exists + response = requests.head(download_url) + if response.status_code == 404: + # Raise FileNotFoundError if file not found + raise FileNotFoundError(f'{download_url} not found') + + # Download the file using wget + subprocess.run(['wget', download_url, '-O', save_path]) + + return save_path + +@contextlib.contextmanager +def suppress_output(): + """Suppress all output to stdout and stderr.""" + with open(os.devnull, 'w') as fnull: + old_stdout = os.dup(1) + old_stderr = os.dup(2) + os.dup2(fnull.fileno(), 1) + os.dup2(fnull.fileno(), 2) + try: + yield + finally: + os.dup2(old_stdout, 1) + os.dup2(old_stderr, 2) + os.close(old_stdout) + os.close(old_stderr) + +# Define a function to extract MT and MAT data from an ENDF file +def endf_specs(endf_path): + # Read in ENDF tape using ENDFtk + tape = ENDFtk.tree.Tape.from_file(endf_path) + + # Determine the material ID + mat_ids = tape.material_numbers + matb = mat_ids[0] + + # Set MF for cross sections + xs_MF = 3 + + # Extract out the file + file = tape.material(matb).file(xs_MF) + + # Extract the MT numbers that are present in the file + MTs = [] + for i in range(1000): + with suppress_output(): + try: + file.section(i) + MTs.append(i) + except: + continue + + return matb, MTs + +# Define a function to format GROUPR input cards +def format_card(card_name, card_content, MTs): + card_str = '' + gen_str = ' ' + ' '.join(map(str, card_content)) + if card_name == 'Card 9': + for line in card_content: + card_str += f' {line}/\n' + elif card_name == 'Card 4': + card_str += gen_str + '\n' + else: + card_str += gen_str + '/\n' + return card_str + +# Define a function to create the GROUPR input file +def groupr_input(matb, MTs, element, A, mt_table): + + # INPUT PARAMETERS + + # Set Card 1 + nendf = 20 # unit for endf tape + npend = 21 # unit for pendf tape + ngout1 = 0 # unit for input gout tape (default=0) + ngout2 = 31 # unit for output gout tape (default=0) + + card1 = [nendf, npend, ngout1, ngout2] + + # Set Card 2 + # matb -- (already defined) -- material to be processed + ign = 17 # neutron group structure option + igg = 0 # gamma group structure option + iwt = 11 # weight function option + lord = 0 # Legendgre order + ntemp = 1 # number of temperatures (default = 1) + nsigz = 1 # number of sigma zeroes (default = 1) + iprint = 1 # long print option (0/1=minimum/maximum) -- (default=1) + ismooth = 1 # swith on/off smoother operation (1/0, default=1=on) + + card2 = [matb, ign, igg, iwt, lord, ntemp, nsigz, iprint] + + # Set Card 3 + Z = str(elements.index(element) + 1).zfill(2) + title = f'"{Z}-{element}-{A} for TENDL 2017"' + card3 = [title] + + # Set Card 4 + temp = 293.16 # temperature in Kelvin + card4 = [temp] + + # Set Card 5 + sigz = 0 # sigma zero values (including infinity) + card5 = [sigz] + + # Set Card 9 + mfd = 3 # file to be processed + mtd = MTs # sections to be processed + card9 = [] + for mt in MTs: + mtname = mt_table[mt_table['MT'] == mt]['Reaction'].values[0] # description of section to be processed + card9_line = f'{mfd} {mt} "{mtname}"' + card9.append(card9_line) + + # Set Card 10 + matd = 0 # next mat number to be processed + card10 = [matd] + + # Create a card deck + deck = [card1, card2, card3, card4, card5, card9, card10] + deck_names = ['Card 1', 'Card 2', 'Card 3', 'Card 4', 'Card 5', 'Card 9', 'Card 10'] + deck_df = pd.DataFrame({ + 'Card' : deck_names, + 'Contents' : deck + }) + + # WRITE INPUT FILE FROM CARDS + + # Write the input deck to the groupr.inp file + with open('groupr.inp', 'w') as f: + f.write('groupr\n') + for card_name, card_content in zip(deck_names, deck): + f.write(format_card(card_name, card_content, MTs)) + f.write(' 0/\nstop') + + return deck_df + +# Define a function to execute NJOY bash script +def run_njoy(endf_path, pendf_path, card_deck, element, A): + # Read the template file + try: + with open('run_njoy_template.sh', 'r') as f: + script_content = f.read() + except: + with open('./GROUPR/run_njoy_template.sh', 'r') as f: + script_content = f.read() + + # Replace placeholders with actual file paths + script_content = script_content.replace('', endf_path) + script_content = script_content.replace('', pendf_path) + + # Write modified script content to run_njoy.sh file + with open('run_njoy.sh', 'w') as f: + f.write(script_content) + + # Make the script executable + subprocess.run(["chmod", "+x", "run_njoy.sh"]) + + # Execute the modified script + njoy_run_message = subprocess.run(["./run_njoy.sh"], capture_output=True, text=True) + print(njoy_run_message.stdout) + print(njoy_run_message.stderr) + + # If the run is successful, print out the output and make a copy of the file as a .GENDF file + if njoy_run_message.stderr == '': + output = subprocess.run(['cat', 'output'], capture_output=True, text = True) + title = card_deck[card_deck['Card'] == 'Card 3']['Contents'].values[0][0][1:-1] + title_index = output.stdout.find(title) + print(output.stdout[:title_index + len(title)]) + + gendf_path = f'tendl_2017_{element}{A}.gendf' + subprocess.run(['cp', 'tape31', gendf_path]) + return gendf_path \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh b/src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh new file mode 100644 index 0000000..527efaa --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Check if NJOY is installed and accessible +if ! command -v njoy &> /dev/null +then + echo "NJOY could not be found. Please make sure it is installed and added to your PATH." + exit 1 +fi + +# Define the input files +TAPE20="" +TAPE21="" +INPUT="groupr.inp" +OUTPUT="groupr.out" + +# Check if input files exist +if [ ! -f "$TAPE20" ]; then + echo "ENDF file not found!" + exit 1 +fi + +if [ ! -f "$TAPE21" ]; then + echo "PENDF file not found!" + exit 1 +fi + +if [ ! -f "$INPUT" ]; then + echo "Input file not found!" + exit 1 +fi + +# Run NJOY with the input file +echo "Running NJOY..." +njoy < "$INPUT" > "$OUTPUT" + +# Check if NJOY ran successfully +if [ $? -eq 0 ]; then + echo "NJOY ran successfully. Output written to /output." +else + echo "NJOY encountered an error. Check /output for details." + exit 1 +fi diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py new file mode 100644 index 0000000..b8692e1 --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -0,0 +1,103 @@ +import ENDFtk +import gendf_tools as GENDFtk +import pandas as pd +import sys +import subprocess + +# Load MT table +# Data for MT table collected from +# https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf +mt_table = pd.read_csv('mt_table.csv') + +# Set user parameters +print('Input GENDF file or download from FENDL 3.2b') +usr_selection = input('For local input, type I. For download, type D. (I, D): ') +if usr_selection == 'I': + gendf_path = input('Type in path of GENDF file: ') + pKZA = GENDFtk.gendf_pkza_extract(gendf_path) +elif usr_selection == 'D': + element = input('Select target element: ') + A = input('Select mass number (A): ') + # Check isomeric state + if 'm' not in A: + gendf_path, pKZA = GENDFtk.gendf_download(element, A) + else: + # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file + sys.path.append('./GROUPR') + import groupr_tools as GRPRtk + + # Download ENDF and PENDF files for the isomer + endf_path = GRPRtk.tendl_download(element, A, 'endf') + pendf_path = GRPRtk.tendl_download(element, A, 'pendf') + + # Extract necessary MT and MAT data from the ENDF file + matb, MTs = GRPRtk.endf_specs(endf_path) + + # Write out the GROUPR input file + card_deck = GRPRtk.groupr_input(matb, MTs, element, A, mt_table) + + # Run NJOY with GROUPR to create a GENDF file for the isomer + gendf_path = GRPRtk.run_njoy(endf_path, pendf_path, card_deck, element, A) + + # Save pKZA value + pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = 1) + + # Clean up repository from unnecessary intermediate files from GROUPR run + groupr_files = ['groupr.inp', 'groupr.out', 'run_njoy.sh', 'tape20', + 'tape21', 'tape31', f'fendl3_{element}{A[:-1]}'] + for file in groupr_files: + subprocess.run(['rm', file]) + +print(f"GENDF file path: {gendf_path}") +print(f"Parent KZA (pKZA): {pKZA}") + +# Read in data with ENDFtk +tape = ENDFtk.tree.Tape.from_file(gendf_path) +mat_ids = tape.material_numbers +mat = mat_ids[0] +xs_MF = 3 +file = tape.material(mat).file(xs_MF) + +# Extract MT values +MTs = [] +for i in range(1000): + with GENDFtk.suppress_output(): + try: + file.section(i) + MTs.append(i) + except: + continue + +# Initialize lists +cross_sections_by_MT = [] +emitted_particles_list = [] +dKZAs = [] + +# Extract data for each MT +for MT in MTs: + try: + sigma_list = GENDFtk.extract_cross_sections(file, MT) + if not sigma_list: + continue + dKZA, emitted_particles = GENDFtk.reaction_calculator(MT, mt_table, pKZA) + if dKZA is None: + continue + cross_sections_by_MT.append(sigma_list) + dKZAs.append(dKZA) + emitted_particles_list.append(emitted_particles) + except Exception as e: + print(f"Error processing MT {MT}: {e}") + continue + +# Store data in a Pandas DataFrame +gendf_data = pd.DataFrame({ + 'Parent KZA': [pKZA] * len(dKZAs), + 'Daughter KZA': dKZAs, + 'Emitted Particles': emitted_particles_list, + 'Cross Sections': cross_sections_by_MT +}) + +# Save to CSV +gendf_data.to_csv('gendf_data.csv', index=False) +print("Saved gendf_data.csv") +print(gendf_data.head()) \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py new file mode 100644 index 0000000..cedf8f3 --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -0,0 +1,141 @@ +import subprocess +import requests +import os +import contextlib + +# List of elements in the Periodic Table +elements = [ + 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', + 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', + 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', + 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', + 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', + 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', + 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', + 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', + 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', + 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', + 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', + 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og' +] + +# Download the GENDF file +def gendf_download(element, A, M=None, save_path=None): + Z = str(elements.index(element) + 1).zfill(2) + A = str(A).zfill(3) + gendf_gen_url = 'https://www-nds.iaea.org/fendl/data/neutron/group/' + download_url = f'{gendf_gen_url}{Z}{element}_{A}.g' + save_path = save_path or f'./fendl3_{element}{A}' + + print(f"Downloading GENDF file from: {download_url}") + + response = requests.head(download_url) + if response.status_code == 404: + raise FileNotFoundError(f'{download_url} not found') + elif response.status_code == 301: + download_url = f'{gendf_gen_url}{Z}{element}{A}.g' + + print(f"Final download URL: {download_url}") + + subprocess.run(['wget', download_url, '-O', save_path]) + + M = M or '0' + pKZA = int(Z + A + M) + print(f"Downloaded file saved to: {save_path}, pKZA: {pKZA}") + return save_path, pKZA + +# Suppress unnecessary warnings from ENDFtk +@contextlib.contextmanager +def suppress_output(): + with open(os.devnull, 'w') as fnull: + old_stdout = os.dup(1) + old_stderr = os.dup(2) + os.dup2(fnull.fileno(), 1) + os.dup2(fnull.fileno(), 2) + try: + yield + finally: + os.dup2(old_stdout, 1) + os.dup2(old_stderr, 2) + os.close(old_stdout) + os.close(old_stderr) + +# Extract pKZA data from a GENDF file +def gendf_pkza_extract(gendf_path, M=None): + with open(gendf_path, 'r') as f: + first_line = f.readline() + print(f"First line of GENDF file: {first_line}") + Z, element, A = first_line.split('-')[:3] + A = A.split(' ')[0] + if 'm' in A: + m_index = A.find('m') + A = A[:m_index] + M = str(M) or '0' + pKZA = int(Z + A + M) + print(f"Extracted pKZA: {pKZA}") + return pKZA + +# Extract cross-section data for a given MT +def extract_cross_sections(file, MT): + try: + section = file.section(MT).content + lines = section.split('\n')[2:-2:2] + sigma_list = [] + for line in lines: + sigma = line.split(' ')[2] + sign = 1 if '+' in sigma else -1 + mantissa, exponent = sigma.split('+') if sign == 1 else sigma.split('-') + sigma_list.append(float(mantissa) * (10 ** (sign * int(exponent)))) + return sigma_list + except Exception as e: + print(f"Error extracting cross sections for MT {MT}: {e}") + return [] + +# Count emitted particles +def emitted_particle_count(particle, emitted_particle_string): + particle_index = emitted_particle_string.find(particle) + number_str = '' + for i in range(particle_index - 1, -1, -1): + if emitted_particle_string[i].isdigit(): + number_str = emitted_particle_string[i] + number_str + else: + break + return int(number_str) if number_str else 1 if particle in emitted_particle_string else None + +# Check for isomers +def isomer_check(emitted_particle_string): + last_digits_str = '' + for char in reversed(emitted_particle_string): + if char.isdigit(): + last_digits_str = char + last_digits_str + else: + break + return int(last_digits_str) if last_digits_str else 0 + +# Calculate reaction +def reaction_calculator(MT, mt_table, pKZA): + try: + nucleus_protons = int(str(pKZA)[:2]) + A = int(str(pKZA)[2:5]) + reaction = mt_table[mt_table['MT'] == MT]['Reaction'].values[0] + emitted_particles = reaction.split(',')[1][:-1] + particle_types = ['n', 'd', 'alpha', 'p', 't', '3He'] + emission_tuples = [(emitted_particle_count(p, emitted_particles), p) for p in particle_types if emitted_particle_count(p, emitted_particles)] + + nucleus_neutrons = A - nucleus_protons + 1 + for num_particle, particle in emission_tuples: + if particle == 'n': + nucleus_neutrons -= num_particle + if particle == 'p': + nucleus_protons -= num_particle + + residual_A = str(nucleus_neutrons + nucleus_protons).zfill(3) + M = isomer_check(emitted_particles) + if M != 0: + emitted_particles = emitted_particles[:-len(str(M))] + + dKZA = int(f"{str(nucleus_protons)}{residual_A}{str(M)}") + return dKZA, emitted_particles + except Exception as e: + print(f"Error in reaction calculation for MT {MT}: {e}") + return None, None \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/mt_table.csv b/src/DataLib/fendl32B_retrofit/mt_table.csv new file mode 100644 index 0000000..ae25ad0 --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/mt_table.csv @@ -0,0 +1,538 @@ +MT,Reaction,Description +1,"(n, total)",Neutron total cross sections. +2,"(z,z0)",Elastic scattering cross section for incident particles. +3,"(z, nonelas.)",Nonelastic neutron cross section. +4,"(z,n)",Production of one neutron in the exit channel. +5,"(z,anything)",Sum of all reactions not given explicitly in another MT number. This is a partial reaction to be added to obtain MT=1 +10,"(z,contin.)",Total continuum reaction; includes all continuum reactions and excludes all discrete reactions. +11,"(z,2nd)","Production of two neutrons and a deuteron, plus a residua" +16,"(z,2n)","Production of two neutrons and a residual1. Sum of MT=875-891, if they are present" +17,"(z,3n)",Production of three neutrons and a residual +18,"(z,fission)","Particle-induced fission (sum of MT 19, 20, 21 and 38, if present)." +19,"(n,f)",First-chance neutron-induced fission +20,"(n,nf)",Second-chance neutron-induced fission +21,"(n,2nf)",Third-chance neutron-induced fission +22,"(z,nα)","Production of a neutron and an alpha particle, plus a residual" +23,"(n,n3α)","Production of a neutron and three alpha particles, plus a residua" +24,"(z,2nα)","Production of two neutrons and an alpha particle, plus a residual" +25,"(z,3nα)","Production of three neutrons and an alpha particle, plus a residual" +27,"(n,abs)",Absorption; sum of MT=18 and MT=102 through MT=117 +28,"(z,np)","Production of a neutron and a proton, plus a residual." +29,"(z,n2α)","Production of a neutron and two alpha particles, plus a residual." +30,"(z,2n2α)","Production of two neutrons and two alpha particles, plus a residual." +32,"(z,nd)","Production of a neutron and a deuteron, plus a residual." +33,"(z,nt) ","Production of a neutron and a triton, plus a residual." +34,"(z,n3He)","Production of a neutron and a 3He particle, plus a residual." +35,"(z,nd2α)","Production of a neutron, a deuteron, and 2 alpha particles, plus a residual." +36,"(z,nt2α)","Production of a neutron, a triton, and 2 alpha particles, plus a residual." +37,"(z,4n)","Production of 4 neutrons, plus a residual" +38,"(n,3nf)",Fourth-chance fission cross section +41,"(z,2np)","Production of 2 neutrons and a proton, plus a residual." +42,"(z,3np)","Production of 3 neutrons and a proton, plus a residual." +44,"(z,n2p)","Production of a neutron and 2 protons, plus a residual." +45,"(z,npα)","Production of a neutron, a proton, and an alpha particle, plus a residual." +50,"(y,n0)","Production of a neutron, leaving the residual nucleus in the ground state." +51,"(z,n1)","Production of a neutron, with residual in the 1st excited state." +52,"(z,n2)","Production of a neutron, with residual in the 2nd excited state" +53,"(z,n3)",... +54,"(z,n4)",... +55,"(z,n5)",... +56,"(z,n6)",... +57,"(z,n7)",... +58,"(z,n8)",... +59,"(z,n9)",... +60,"(z,n10)",... +61,"(z,n11)",... +62,"(z,n12)",... +63,"(z,n13)",... +64,"(z,n14)",... +65,"(z,n15)",... +66,"(z,n16)",... +67,"(z,n17)",... +68,"(z,n18)",... +69,"(z,n19)",... +70,"(z,n20)",... +71,"(z,n21)",... +72,"(z,n22)",... +73,"(z,n23)",... +74,"(z,n24)",... +75,"(z,n25)",... +76,"(z,n26)",... +77,"(z,n27)",... +78,"(z,n28)",... +79,"(z,n29)",... +80,"(z,n30)",... +81,"(z,n31)",... +82,"(z,n32)",... +83,"(z,n33)",... +84,"(z,n34)",... +85,"(z,n35)",... +86,"(z,n36)",... +87,"(z,n37)",... +88,"(z,n38)",... +89,"(z,n39)",... +90,"(z,n40)",... +91,"(z,nc)",Production of a neutron in the continuum not included in the above discrete representation. +101,"(n,disap)",Neutron disappearance; equal to sum of MT=102-117. +102,"(z,γ)",Radiative capture. +103,"(z,p)","Production of a proton, plus a residual. Sum of MT=600-649, if they are present." +104,"(z,d)","Production of a deuteron, plus a residual. Sum of MT=650-699, if they are present." +105,"(z,t)","Production of a triton, plus a residual. Sum of MT=700-749, if they are present." +106,"(z,3He)","Production of a 3He particle plus a residual. Sum of MT=750-799, if they are present." +107,"(z,α)","Production of an alpha particle, plus a residual. Sum of MT=800-849, if they are present." +108,"(z,2α)","Production of 2 alpha particles, plus a residual." +109,"(z,3α)","Production of 3 alpha particles, plus a residual." +111,"(z,2p)","Production of 2 protons, plus a residual." +112,"(z,pα)","Production a proton and an alpha particle, plus a residual." +113,"(z,t2α)","Production of a triton and 2 alpha particles, plus a residual." +114,"(z,d2α)","Production of a deuteron and 2 alpha particles, plus a residual." +115,"(z,pd)","Production of proton and a deuteron, plus a residual." +116,"(z,pt)","Production of proton and a triton, plus a residual." +117,"(z,dα)","Production of deuteron and an alpha particle, plus a residual." +151,"(n,RES)",Resonance parameters that can be used to calculate cross sections at different temperatures in the resolved and unresolved energy regions. +201,"(z,Xn)",Total neutron production. +202,"(z,Xγ)",Total gamma production. +203,"(z,Xp)",Total proton production. +204,"(z,Xd)",Total deuteron production. +205,"(z,Xt)",Total triton production +206,"(z,X3He)",Total 3He production. +207,"(z,Xα)",Total alpha particle production. +208,"(z,Xπ +)",Total π + production. +209,"(z,Xπ 0 )",Total π 0 production. +210,"(z,Xπ −)",Total π − production. +211,"(z,Xµ +)",Total µ + production. +212,"(z,Xµ −)",Total µ − production. +213,"(z,Xκ +)",Total κ + production. +214,"(z,Xκ 0 long)",Total κ 0 long production. +215,"(z,Xκ 0 short)",Total κ 0 short production. +216,"(z,Xκ −)",Total κ − production. +217,"(z,Xp−)",Total anti-proton production. +218,"(z,Xn−)",Total anti-neutron production. +251,"(n,...)","µ, average cosine of the scattering angle (laboratory system) for elastic scattering of neutrons." +252,"(n,...)","ξ, average logarithmic energy decrement for elastic scattering of neutrons." +253,"(n,...)","γ, average of the square of the logarithmic energy decrement divided by twice the average logarithmic energy decrement, for elastic scattering of neutrons." +301,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +302,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +303,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +304,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +305,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +306,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +307,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +308,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +309,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +310,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +311,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +312,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +313,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +314,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +315,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +316,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +317,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +318,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +319,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +320,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +321,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +322,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +323,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +324,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +325,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +326,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +327,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +328,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +329,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +330,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +331,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +332,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +333,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +334,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +335,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +336,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +337,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +338,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +339,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +340,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +341,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +342,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +343,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +344,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +345,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +346,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +347,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +348,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +349,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +350,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +351,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +352,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +353,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +354,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +355,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +356,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +357,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +358,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +359,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +360,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +361,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +362,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +363,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +364,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +365,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +366,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +367,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +368,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +369,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +370,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +371,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +372,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +373,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +374,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +375,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +376,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +377,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +378,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +379,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +380,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +381,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +382,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +383,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +384,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +385,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +386,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +387,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +388,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +389,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +390,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +391,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +392,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +393,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +394,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +395,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +396,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +397,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +398,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +399,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +400,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +401,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +402,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +403,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +404,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +405,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +406,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +407,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +408,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +409,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +410,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +411,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +412,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +413,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +414,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +415,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +416,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +417,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +418,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +419,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +420,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +421,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +422,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +423,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +424,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +425,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +426,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +427,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +428,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +429,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +430,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +431,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +432,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +433,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +434,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +435,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +436,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +437,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +438,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +439,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +440,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +441,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +442,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +443,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +444,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +445,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +446,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +447,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +448,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +449,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +450,"(z,...)","Energy release parameters, , for total and partial cross sections; MT= 300 plus the reaction MT number, e.g., MT=302 is the elastic scattering kerma" +451,"(z,...)",Heading or title information; given in File 1 only. +452,"(z,...)","νT , average total (prompt plus delayed) number of neutrons released per fission event." +454,"(z,...)",Independent fission product yield data +455,"(z,...)","νd, average number of delayed neutrons released per fission event." +456,"(z,...)","νp, average number of prompt neutrons released per fission event." +457,"(z,...)",Radioactive decay data. +458,"(n,...)",Energy release in fission for incident neutrons. +459,"(z,...)",Cumulative fission product yield data. +600,"(z,p0)",Production of a proton leaving the residual nucleus in the ground state. +601,"(z,p1)","Production of a proton, with residual in the 1st excited state." +602,"(z,p2)","Production of a proton, with residual in the 2nd excited state." +603,"(z,p3)","Production of a proton, with residual in the 3rd excited state." +604,"(z,p4)","Production of a proton, with residual in the 4th excited state." +605,"(z,p5)",... +606,"(z,p6)",... +607,"(z,p7)",... +608,"(z,p8)",... +609,"(z,p9)",... +610,"(z,p10)",... +611,"(z,p11)",... +612,"(z,p12)",... +613,"(z,p13)",... +614,"(z,p14)",... +615,"(z,p15)",... +616,"(z,p16)",... +617,"(z,p17)",... +618,"(z,p18)",... +619,"(z,p19)",... +620,"(z,p20)",... +621,"(z,p21)",... +622,"(z,p22)",... +623,"(z,p23)",... +624,"(z,p24)",... +625,"(z,p25)",... +626,"(z,p26)",... +627,"(z,p27)",... +628,"(z,p28)",... +629,"(z,p29)",... +630,"(z,p30)",... +631,"(z,p31)",... +632,"(z,p32)",... +633,"(z,p33)",... +634,"(z,p34)",... +635,"(z,p35)",... +636,"(z,p36)",... +637,"(z,p37)",... +638,"(z,p38)",... +639,"(z,p39)",... +640,"(z,p40)",... +641,"(z,p41)",... +642,"(z,p42)",... +643,"(z,p43)",... +644,"(z,p44)",... +645,"(z,p45)",... +646,"(z,p46)",... +647,"(z,p47)",... +648,"(z,p48)",... +649,"(z,pc)",Production of a proton in the continuum not included in the above discrete representation +650,"(z,d0)",Production of a deuteron leaving the residual nucleus in the ground state +651,"(z,d1)","Production of a deuteron, with the residual in the 1st excited state." +652,"(z,d2)","Production of a deuteron, with the residual in the 2nd excited state." +653,"(z,d3)",... +654,"(z,d4)",... +655,"(z,d5)",... +656,"(z,d6)",... +657,"(z,d7)",... +658,"(z,d8)",... +659,"(z,d9)",... +660,"(z,d10)",... +661,"(z,d11)",... +662,"(z,d12)",... +663,"(z,d13)",... +664,"(z,d14)",... +665,"(z,d15)",... +666,"(z,d16)",... +667,"(z,d17)",... +668,"(z,d18)",... +669,"(z,d19)",... +670,"(z,d20)",... +671,"(z,d21)",... +672,"(z,d22)",... +673,"(z,d23)",... +674,"(z,d24)",... +675,"(z,d25)",... +676,"(z,d26)",... +677,"(z,d27)",... +678,"(z,d28)",... +679,"(z,d29)",... +680,"(z,d30)",... +681,"(z,d31)",... +682,"(z,d32)",... +683,"(z,d33)",... +684,"(z,d34)",... +685,"(z,d35)",... +686,"(z,d36)",... +687,"(z,d37)",... +688,"(z,d38)",... +689,"(z,d39)",... +690,"(z,d40)",... +691,"(z,d41)",... +692,"(z,d42)",... +693,"(z,d43)",... +694,"(z,d44)",... +695,"(z,d45)",... +696,"(z,d46)",... +697,"(z,d47)",... +698,"(z,d48)",... +699,"(z,dc)",Production of a deuteron in the continuum not included in the above discrete representation. +700,"(z,t0)",Production of a triton leaving the residual nucleus in the ground state. +701,"(z,t1)","Production of a triton, with residual in the 1st excited state" +702,"(z,t2)","Production of a triton, with residual in the 2nd excited state." +703,"(z,t3)",... +704,"(z,t4)",... +705,"(z,t5)",... +706,"(z,t6)",... +707,"(z,t7)",... +708,"(z,t8)",... +709,"(z,t9)",... +710,"(z,t10)",... +711,"(z,t11)",... +712,"(z,t12)",... +713,"(z,t13)",... +714,"(z,t14)",... +715,"(z,t15)",... +716,"(z,t16)",... +717,"(z,t17)",... +718,"(z,t18)",... +719,"(z,t19)",... +720,"(z,t20)",... +721,"(z,t21)",... +722,"(z,t22)",... +723,"(z,t23)",... +724,"(z,t24)",... +725,"(z,t25)",... +726,"(z,t26)",... +727,"(z,t27)",... +728,"(z,t28)",... +729,"(z,t29)",... +730,"(z,t30)",... +731,"(z,t31)",... +732,"(z,t32)",... +733,"(z,t33)",... +734,"(z,t34)",... +735,"(z,t35)",... +736,"(z,t36)",... +737,"(z,t37)",... +738,"(z,t38)",... +739,"(z,t39)",... +740,"(z,t40)",... +741,"(z,t41)",... +742,"(z,t42)",... +743,"(z,t43)",... +744,"(z,t44)",... +745,"(z,t45)",... +746,"(z,t46)",... +747,"(z,t47)",... +748,"(z,t48)",... +749,"(z,tc) ",Production of a triton in the continuum not included in the above discrete representation. +750,"(n,3He0)",Production of a 3He particle leaving the residual nucleus in the ground state. +751,"(z,3He1)","Production of a 3He, with residual in the 1st excited state." +752,"(z,3He2)","Production of a 3He, with residual in the 2nd excited state." +753,"(z,3He3)",... +754,"(z,3He4)",... +755,"(z,3He5)",... +756,"(z,3He6)",... +757,"(z,3He7)",... +758,"(z,3He8)",... +759,"(z,3He9)",... +760,"(z,3He10)",... +761,"(z,3He11)",... +762,"(z,3He12)",... +763,"(z,3He13)",... +764,"(z,3He14)",... +765,"(z,3He15)",... +766,"(z,3He16)",... +767,"(z,3He17)",... +768,"(z,3He18)",... +769,"(z,3He19)",... +770,"(z,3He20)",... +771,"(z,3He21)",... +772,"(z,3He22)",... +773,"(z,3He23)",... +774,"(z,3He24)",... +775,"(z,3He25)",... +776,"(z,3He26)",... +777,"(z,3He27)",... +778,"(z,3He28)",... +779,"(z,3He29)",... +780,"(z,3He30)",... +781,"(z,3He31)",... +782,"(z,3He32)",... +783,"(z,3He33)",... +784,"(z,3He34)",... +785,"(z,3He35)",... +786,"(z,3He36)",... +787,"(z,3He37)",... +788,"(z,3He38)",... +789,"(z,3He39)",... +790,"(z,3He40)",... +791,"(z,3He41)",... +792,"(z,3He42)",... +793,"(z,3He43)",... +794,"(z,3He44)",... +795,"(z,3He45)",... +796,"(z,3He46)",... +797,"(z,3He47)",... +798,"(z,3He48)",... +799,"(n,3Hec)",Production of a 3He in the continuum not included in the above discrete representation. +800,"(z,α0)",Production of an alpha particle leaving the residual nucleus in the ground state. +801,"(z,α1)","Production of an alpha particle, with residual in the 1st excited state." +802,"(z,α2)","Production of an alpha particle, with residual in the 2nd excited state." +803,"(z,α3)",... +804,"(z,α4)",... +805,"(z,α5)",... +806,"(z,α6)",... +807,"(z,α7)",... +808,"(z,α8)",... +809,"(z,α9)",... +810,"(z,α10)",... +811,"(z,α11)",... +812,"(z,α12)",... +813,"(z,α13)",... +814,"(z,α14)",... +815,"(z,α15)",... +816,"(z,α16)",... +817,"(z,α17)",... +818,"(z,α18)",... +819,"(z,α19)",... +820,"(z,α20)",... +821,"(z,α21)",... +822,"(z,α22)",... +823,"(z,α23)",... +824,"(z,α24)",... +825,"(z,α25)",... +826,"(z,α26)",... +827,"(z,α27)",... +828,"(z,α28)",... +829,"(z,α29)",... +830,"(z,α30)",... +831,"(z,α31)",... +832,"(z,α32)",... +833,"(z,α33)",... +834,"(z,α34)",... +835,"(z,α35)",... +836,"(z,α36)",... +837,"(z,α37)",... +838,"(z,α38)",... +839,"(z,α39)",... +840,"(z,α40)",... +841,"(z,α41)",... +842,"(z,α42)",... +843,"(z,α43)",... +844,"(z,α44)",... +845,"(z,α45)",... +846,"(z,α46)",... +847,"(z,α47)",... +848,"(z,α48)",... +849,"(z,αc) ",Production of an alpha particle in the continuum not included in the above discrete representation. +875,"(z,2n0)",Production of 2 neutrons with residual in the ground state. +876,"(z,2n1)",Production of 2 neutrons with residual in the 1st excited state. +877,"(z,2n2)",Production of 2 neutrons with residual in the 2nd excited state. +878,"(z,2n3)",... +879,"(z,2n4)",... +880,"(z,2n5)",... +881,"(z,2n6)",... +882,"(z,2n7)",... +883,"(z,2n8)",... +884,"(z,2n9)",... +885,"(z,2n10)",... +886,"(z,2n11)",... +887,"(z,2n12)",... +888,"(z,2n13)",... +889,"(z,2n14)",... +890,"(z,2n15)",... +891,"(z,2nc)",Production of 2 neutrons in the continuum not included in the above discrete representation. \ No newline at end of file From cdd7bcd3605790391574f890a1903064dbc0fb82 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 11:56:53 -0500 Subject: [PATCH 02/59] Replacing NJOY Bash script with subprocess execution in Python --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 33 ++++----------- .../GROUPR/run_njoy_template.sh | 42 ------------------- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 2 +- 3 files changed, 10 insertions(+), 67 deletions(-) delete mode 100644 src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 308f5af..496d831 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -193,33 +193,18 @@ def groupr_input(matb, MTs, element, A, mt_table): return deck_df # Define a function to execute NJOY bash script -def run_njoy(endf_path, pendf_path, card_deck, element, A): - # Read the template file - try: - with open('run_njoy_template.sh', 'r') as f: - script_content = f.read() - except: - with open('./GROUPR/run_njoy_template.sh', 'r') as f: - script_content = f.read() - - # Replace placeholders with actual file paths - script_content = script_content.replace('', endf_path) - script_content = script_content.replace('', pendf_path) - - # Write modified script content to run_njoy.sh file - with open('run_njoy.sh', 'w') as f: - f.write(script_content) - - # Make the script executable - subprocess.run(["chmod", "+x", "run_njoy.sh"]) +def run_njoy(card_deck, element, A): + # Define the input files + INPUT = 'groupr.inp' + OUTPUT = 'groupr.out' - # Execute the modified script - njoy_run_message = subprocess.run(["./run_njoy.sh"], capture_output=True, text=True) - print(njoy_run_message.stdout) - print(njoy_run_message.stderr) + # Run NJOY + result = subprocess.run(['njoy'], input=open(INPUT).read(), text= True, capture_output=True) + with open(OUTPUT, 'w') as output_file: + output_file.write(result.stdout) # If the run is successful, print out the output and make a copy of the file as a .GENDF file - if njoy_run_message.stderr == '': + if result.stderr == '': output = subprocess.run(['cat', 'output'], capture_output=True, text = True) title = card_deck[card_deck['Card'] == 'Card 3']['Contents'].values[0][0][1:-1] title_index = output.stdout.find(title) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh b/src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh deleted file mode 100644 index 527efaa..0000000 --- a/src/DataLib/fendl32B_retrofit/GROUPR/run_njoy_template.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash - -# Check if NJOY is installed and accessible -if ! command -v njoy &> /dev/null -then - echo "NJOY could not be found. Please make sure it is installed and added to your PATH." - exit 1 -fi - -# Define the input files -TAPE20="" -TAPE21="" -INPUT="groupr.inp" -OUTPUT="groupr.out" - -# Check if input files exist -if [ ! -f "$TAPE20" ]; then - echo "ENDF file not found!" - exit 1 -fi - -if [ ! -f "$TAPE21" ]; then - echo "PENDF file not found!" - exit 1 -fi - -if [ ! -f "$INPUT" ]; then - echo "Input file not found!" - exit 1 -fi - -# Run NJOY with the input file -echo "Running NJOY..." -njoy < "$INPUT" > "$OUTPUT" - -# Check if NJOY ran successfully -if [ $? -eq 0 ]; then - echo "NJOY ran successfully. Output written to /output." -else - echo "NJOY encountered an error. Check /output for details." - exit 1 -fi diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index b8692e1..86f5a6a 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -37,7 +37,7 @@ card_deck = GRPRtk.groupr_input(matb, MTs, element, A, mt_table) # Run NJOY with GROUPR to create a GENDF file for the isomer - gendf_path = GRPRtk.run_njoy(endf_path, pendf_path, card_deck, element, A) + gendf_path = GRPRtk.run_njoy(card_deck, element, A) # Save pKZA value pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = 1) From f3d010ffd7585c6bc8bcda6994fde82db3225a24 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 12:14:26 -0500 Subject: [PATCH 03/59] Simplifying mass number formatting in tendl_download() function --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 496d831..860f22b 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -25,12 +25,7 @@ # Define a function to download the .tendl file given specific user inputs to for element and mass number def tendl_download(element, A, filetype, save_path = None): # Ensure that A is properly formatted - A = str(A) - if 'm' in A: - m_index = A.find('m') - A = A[:m_index].zfill(3) + 'm' - else: - A = A.zfill(3) + A = str(A).zfill(3 + ('m' in A)) # Define general URL format for files in the TENDL database tendl_gen_url = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' From 6c5ac246535d46236b1f7fba1bb408d0ab5284b0 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 12:53:09 -0500 Subject: [PATCH 04/59] Simplifying endf_specs() function --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 860f22b..93fd6ae 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -89,17 +89,10 @@ def endf_specs(endf_path): xs_MF = 3 # Extract out the file - file = tape.material(matb).file(xs_MF) + file = tape.material(matb).file(xs_MF).parse() # Extract the MT numbers that are present in the file - MTs = [] - for i in range(1000): - with suppress_output(): - try: - file.section(i) - MTs.append(i) - except: - continue + MTs = [MT.MT for MT in file.sections.to_list()] return matb, MTs From 03e3af32632f94b0ae1144160227ccd2b7cae920 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 12:56:18 -0500 Subject: [PATCH 05/59] Remove now-obsolete ENDFtk warning suppression --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 93fd6ae..1e7fdd1 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -1,6 +1,5 @@ # Import packages import ENDFtk -import os import requests import contextlib import subprocess @@ -60,22 +59,6 @@ def tendl_download(element, A, filetype, save_path = None): return save_path -@contextlib.contextmanager -def suppress_output(): - """Suppress all output to stdout and stderr.""" - with open(os.devnull, 'w') as fnull: - old_stdout = os.dup(1) - old_stderr = os.dup(2) - os.dup2(fnull.fileno(), 1) - os.dup2(fnull.fileno(), 2) - try: - yield - finally: - os.dup2(old_stdout, 1) - os.dup2(old_stderr, 2) - os.close(old_stdout) - os.close(old_stderr) - # Define a function to extract MT and MAT data from an ENDF file def endf_specs(endf_path): # Read in ENDF tape using ENDFtk From fa4f29e312a2b26effb63dd8dff4d546840302a9 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 15:23:08 -0500 Subject: [PATCH 06/59] Simplify tendl_download() function using data structures --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 1e7fdd1..89fee8a 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -29,24 +29,18 @@ def tendl_download(element, A, filetype, save_path = None): # Define general URL format for files in the TENDL database tendl_gen_url = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' - # Construct the filetype-specific URl for the data file - if filetype == 'endf' or filetype == 'ENDF': - # Construct the URL of the ENDF file to be downloaded - download_url = tendl_gen_url + f'{element}/{element}{A}/lib/endf/n-{element}{A}.tendl' - - # Define a save path for the ENDF file if there is not one already specified - if save_path is None: - #save_path = f'tendl_2017_{element}{A}_{filetype}.endf' - save_path = 'tape20' - - elif filetype == 'pendf' or filetype == 'PENDF': - # Construct the URL of the PENDF file to be downloaded - download_url = tendl_gen_url + f'{element}/{element}{A}/lib/endf/n-{element}{A}.pendf' - - # Define a save path for the PENDF file if there is not one already specified - if save_path is None: - #save_path = f'tendl_2017_{element}{A}_{filetype}.pendf' - save_path = 'tape21' + # Create a dictionary to generalize formatting for both ENDF and PENDF files + file_handling = {'endf' : {'ext': 'tendl', 'tape_num': 20}, + 'pendf' : {'ext': 'pendf', 'tape_num': 21}} + + # Construct the filetype and isotope specific URL + isotope_component = f'{element}/{element}{A}/lib/endf/n-{element}{A}.' + ext = file_handling[filetype.lower()]['ext'] + download_url = tendl_gen_url + isotope_component + ext + + # Define a save path for the file if there is not one already specified + if save_path is None: + save_path = f'tape{file_handling[filetype.lower()]["tape_num"]}' # Check if the file exists response = requests.head(download_url) From 0190096e33917daaba2cb4ed27aa71481bd53506 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 16:05:13 -0500 Subject: [PATCH 07/59] Switching tendl_download() function over to urllib dependence --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 89fee8a..7b27df2 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -1,6 +1,6 @@ # Import packages import ENDFtk -import requests +import urllib import contextlib import subprocess import pandas as pd @@ -43,13 +43,20 @@ def tendl_download(element, A, filetype, save_path = None): save_path = f'tape{file_handling[filetype.lower()]["tape_num"]}' # Check if the file exists - response = requests.head(download_url) - if response.status_code == 404: - # Raise FileNotFoundError if file not found - raise FileNotFoundError(f'{download_url} not found') - - # Download the file using wget - subprocess.run(['wget', download_url, '-O', save_path]) + try: + urllib.request.urlopen(download_url) + except urllib.error.URLError as e: + file_not_found_code = 404 + if str(file_not_found_code) in str(e): + raise FileNotFoundError() + + # Download the file using urllib + with urllib.request.urlopen(download_url) as f: + temp_file = f.read().decode('utf-8') + + # Write out the file to the save_path + with open(save_path, 'w') as f: + f.write(temp_file) return save_path From 413ae46c97d485b21162e0cb2585c7ce3791d6cd Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 16:44:49 -0500 Subject: [PATCH 08/59] Moving card deck formatting from Pandas DataFrame to dictionary --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 50 +++++++++---------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 7b27df2..4a5a932 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -1,7 +1,6 @@ # Import packages import ENDFtk import urllib -import contextlib import subprocess import pandas as pd @@ -84,10 +83,9 @@ def endf_specs(endf_path): def format_card(card_name, card_content, MTs): card_str = '' gen_str = ' ' + ' '.join(map(str, card_content)) - if card_name == 'Card 9': - for line in card_content: - card_str += f' {line}/\n' - elif card_name == 'Card 4': + if card_name == 9: + card_str = ' ' + '/\n '.join(card_content) + '/\n' + elif card_name == 4: card_str += gen_str + '\n' else: card_str += gen_str + '/\n' @@ -98,13 +96,15 @@ def groupr_input(matb, MTs, element, A, mt_table): # INPUT PARAMETERS + cards = {} + # Set Card 1 nendf = 20 # unit for endf tape npend = 21 # unit for pendf tape ngout1 = 0 # unit for input gout tape (default=0) ngout2 = 31 # unit for output gout tape (default=0) - card1 = [nendf, npend, ngout1, ngout2] + cards[1] = [nendf, npend, ngout1, ngout2] # Set Card 2 # matb -- (already defined) -- material to be processed @@ -117,55 +117,53 @@ def groupr_input(matb, MTs, element, A, mt_table): iprint = 1 # long print option (0/1=minimum/maximum) -- (default=1) ismooth = 1 # swith on/off smoother operation (1/0, default=1=on) - card2 = [matb, ign, igg, iwt, lord, ntemp, nsigz, iprint] + cards[2] = [matb, ign, igg, iwt, lord, ntemp, nsigz, iprint] # Set Card 3 Z = str(elements.index(element) + 1).zfill(2) title = f'"{Z}-{element}-{A} for TENDL 2017"' - card3 = [title] + cards[3] = [title] # Set Card 4 temp = 293.16 # temperature in Kelvin - card4 = [temp] + cards[4] = [temp] # Set Card 5 sigz = 0 # sigma zero values (including infinity) - card5 = [sigz] + cards[5] = [sigz] # Set Card 9 mfd = 3 # file to be processed mtd = MTs # sections to be processed - card9 = [] + cards[9] = [] for mt in MTs: mtname = mt_table[mt_table['MT'] == mt]['Reaction'].values[0] # description of section to be processed card9_line = f'{mfd} {mt} "{mtname}"' - card9.append(card9_line) + cards[9].append(card9_line) # Set Card 10 matd = 0 # next mat number to be processed - card10 = [matd] - - # Create a card deck - deck = [card1, card2, card3, card4, card5, card9, card10] - deck_names = ['Card 1', 'Card 2', 'Card 3', 'Card 4', 'Card 5', 'Card 9', 'Card 10'] - deck_df = pd.DataFrame({ - 'Card' : deck_names, - 'Contents' : deck - }) + cards[10] = [matd] # WRITE INPUT FILE FROM CARDS # Write the input deck to the groupr.inp file with open('groupr.inp', 'w') as f: f.write('groupr\n') - for card_name, card_content in zip(deck_names, deck): - f.write(format_card(card_name, card_content, MTs)) + #for card_name, card_content in zip(deck_names, deck): + # f.write(format_card(card_name, card_content, MTs)) + max_card_index = 10 + for i in range(max_card_index + 1): + try: + f.write(format_card(i, cards[i], MTs)) + except KeyError: + continue f.write(' 0/\nstop') - return deck_df + return cards # Define a function to execute NJOY bash script -def run_njoy(card_deck, element, A): +def run_njoy(cards, element, A): # Define the input files INPUT = 'groupr.inp' OUTPUT = 'groupr.out' @@ -178,7 +176,7 @@ def run_njoy(card_deck, element, A): # If the run is successful, print out the output and make a copy of the file as a .GENDF file if result.stderr == '': output = subprocess.run(['cat', 'output'], capture_output=True, text = True) - title = card_deck[card_deck['Card'] == 'Card 3']['Contents'].values[0][0][1:-1] + title = cards[3][0][1:-1] title_index = output.stdout.find(title) print(output.stdout[:title_index + len(title)]) From 2eb9ffdc16deae17acb8f2da0d36c9f9beec7a74 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 16:53:15 -0500 Subject: [PATCH 09/59] Separating out a write function for the GROUPR input from the input card formatting function --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 12 ++++-------- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 3 ++- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 4a5a932..44a66d6 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -92,9 +92,7 @@ def format_card(card_name, card_content, MTs): return card_str # Define a function to create the GROUPR input file -def groupr_input(matb, MTs, element, A, mt_table): - - # INPUT PARAMETERS +def groupr_input_file_format(matb, MTs, element, A, mt_table): cards = {} @@ -145,13 +143,13 @@ def groupr_input(matb, MTs, element, A, mt_table): matd = 0 # next mat number to be processed cards[10] = [matd] - # WRITE INPUT FILE FROM CARDS + return cards +# Define a function to write out the GROUPR input file +def groupr_input_file_writer(cards, MTs): # Write the input deck to the groupr.inp file with open('groupr.inp', 'w') as f: f.write('groupr\n') - #for card_name, card_content in zip(deck_names, deck): - # f.write(format_card(card_name, card_content, MTs)) max_card_index = 10 for i in range(max_card_index + 1): try: @@ -160,8 +158,6 @@ def groupr_input(matb, MTs, element, A, mt_table): continue f.write(' 0/\nstop') - return cards - # Define a function to execute NJOY bash script def run_njoy(cards, element, A): # Define the input files diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 86f5a6a..28828a2 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -34,7 +34,8 @@ matb, MTs = GRPRtk.endf_specs(endf_path) # Write out the GROUPR input file - card_deck = GRPRtk.groupr_input(matb, MTs, element, A, mt_table) + card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_table) + GRPRtk.groupr_input_file_writer(card_deck, MTs) # Run NJOY with GROUPR to create a GENDF file for the isomer gendf_path = GRPRtk.run_njoy(card_deck, element, A) From 1247db369111f7dea446597907c009b39e7d8882 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 17 Jun 2024 16:57:32 -0500 Subject: [PATCH 10/59] Removing now-obsolete Pandas dependence --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 44a66d6..b00e556 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -2,7 +2,6 @@ import ENDFtk import urllib import subprocess -import pandas as pd # List of elements in the Periodic Table elements = [ From 1d35b79f500ae98e4b6db9d6ccbdac7c47f3a6a5 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein <134320171+eitan-weinstein@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:53:54 -0500 Subject: [PATCH 11/59] Simplifying card writing for groupr_input_file_writer() Co-authored-by: Paul Wilson --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index b00e556..a0325ec 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -149,12 +149,8 @@ def groupr_input_file_writer(cards, MTs): # Write the input deck to the groupr.inp file with open('groupr.inp', 'w') as f: f.write('groupr\n') - max_card_index = 10 - for i in range(max_card_index + 1): - try: - f.write(format_card(i, cards[i], MTs)) - except KeyError: - continue + for card_num, card in cards.items(): + f.write(format_card(i, cards[i], MTs)) f.write(' 0/\nstop') # Define a function to execute NJOY bash script From de3cbb41759ab70b68e71a55f7b3ea90609a335c Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 09:58:42 -0500 Subject: [PATCH 12/59] Fixing indexing on groupr_input_file_writer() --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index a0325ec..6ef913a 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -150,7 +150,7 @@ def groupr_input_file_writer(cards, MTs): with open('groupr.inp', 'w') as f: f.write('groupr\n') for card_num, card in cards.items(): - f.write(format_card(i, cards[i], MTs)) + f.write(format_card(card_num, card, MTs)) f.write(' 0/\nstop') # Define a function to execute NJOY bash script From d20eed8de068701e2389327a9a3710502fd058f1 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 10:09:20 -0500 Subject: [PATCH 13/59] Storing elements in a single dictionary to be referenced across both toolkits --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 5 +++-- src/DataLib/fendl32B_retrofit/gendf_tools.py | 22 +++++-------------- 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 6ef913a..6e030e9 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -3,7 +3,7 @@ import urllib import subprocess -# List of elements in the Periodic Table +# Dictionary of elements in the Periodic Table elements = [ 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', @@ -18,6 +18,7 @@ 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og' ] +elements = dict(zip(elements, range(1, len(elements)+1))) # Define a function to download the .tendl file given specific user inputs to for element and mass number def tendl_download(element, A, filetype, save_path = None): @@ -117,7 +118,7 @@ def groupr_input_file_format(matb, MTs, element, A, mt_table): cards[2] = [matb, ign, igg, iwt, lord, ntemp, nsigz, iprint] # Set Card 3 - Z = str(elements.index(element) + 1).zfill(2) + Z = str(elements[element]).zfill(2) title = f'"{Z}-{element}-{A} for TENDL 2017"' cards[3] = [title] diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index cedf8f3..9e9d4c0 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -1,27 +1,15 @@ +# Import packages import subprocess import requests import os import contextlib - -# List of elements in the Periodic Table -elements = [ - 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', - 'Na', 'Mg', 'Al', 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', - 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', - 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', - 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', - 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', - 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', - 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', - 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', - 'Pa', 'U', 'Np', 'Pu', 'Am', 'Cm', 'Bk', 'Cf', 'Es', 'Fm', - 'Md', 'No', 'Lr', 'Rf', 'Db', 'Sg', 'Bh', 'Hs', 'Mt', 'Ds', - 'Rg', 'Cn', 'Nh', 'Fl', 'Mc', 'Lv', 'Ts', 'Og' -] +import sys +sys.path.append('./GROUPR') +from groupr_tools import elements # Download the GENDF file def gendf_download(element, A, M=None, save_path=None): - Z = str(elements.index(element) + 1).zfill(2) + Z = elements[element] A = str(A).zfill(3) gendf_gen_url = 'https://www-nds.iaea.org/fendl/data/neutron/group/' download_url = f'{gendf_gen_url}{Z}{element}_{A}.g' From 58a4edee630d62069b0e3e5df7d5e3e5e161307f Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 10:14:34 -0500 Subject: [PATCH 14/59] Removing now-obsolete ENDFtk warning supression from gend_tools.py and fendl3_gendf.py --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 11 ++--------- src/DataLib/fendl32B_retrofit/gendf_tools.py | 18 ------------------ 2 files changed, 2 insertions(+), 27 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 28828a2..eae7916 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -59,15 +59,8 @@ xs_MF = 3 file = tape.material(mat).file(xs_MF) -# Extract MT values -MTs = [] -for i in range(1000): - with GENDFtk.suppress_output(): - try: - file.section(i) - MTs.append(i) - except: - continue +# Extract the MT numbers that are present in the file +MTs = [MT.MT for MT in file.sections.to_list()] # Initialize lists cross_sections_by_MT = [] diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 9e9d4c0..97b4b5a 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -1,8 +1,6 @@ # Import packages import subprocess import requests -import os -import contextlib import sys sys.path.append('./GROUPR') from groupr_tools import elements @@ -32,22 +30,6 @@ def gendf_download(element, A, M=None, save_path=None): print(f"Downloaded file saved to: {save_path}, pKZA: {pKZA}") return save_path, pKZA -# Suppress unnecessary warnings from ENDFtk -@contextlib.contextmanager -def suppress_output(): - with open(os.devnull, 'w') as fnull: - old_stdout = os.dup(1) - old_stderr = os.dup(2) - os.dup2(fnull.fileno(), 1) - os.dup2(fnull.fileno(), 2) - try: - yield - finally: - os.dup2(old_stdout, 1) - os.dup2(old_stderr, 2) - os.close(old_stdout) - os.close(old_stderr) - # Extract pKZA data from a GENDF file def gendf_pkza_extract(gendf_path, M=None): with open(gendf_path, 'r') as f: From b83be55792bd0c4e3adee4f06b88efdb0dff94f4 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 11:06:33 -0500 Subject: [PATCH 15/59] Updating gendf_download() function -- notably switching away from wget to requests --- src/DataLib/fendl32B_retrofit/gendf_tools.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 97b4b5a..1cf5ba4 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -5,9 +5,10 @@ sys.path.append('./GROUPR') from groupr_tools import elements -# Download the GENDF file +# Define a function to download the GENDF file from nds.iaea.org def gendf_download(element, A, M=None, save_path=None): - Z = elements[element] + # Initialize parameters + Z = str(elements[element]) A = str(A).zfill(3) gendf_gen_url = 'https://www-nds.iaea.org/fendl/data/neutron/group/' download_url = f'{gendf_gen_url}{Z}{element}_{A}.g' @@ -15,6 +16,7 @@ def gendf_download(element, A, M=None, save_path=None): print(f"Downloading GENDF file from: {download_url}") + # Check to see if the URL is valid response = requests.head(download_url) if response.status_code == 404: raise FileNotFoundError(f'{download_url} not found') @@ -23,11 +25,17 @@ def gendf_download(element, A, M=None, save_path=None): print(f"Final download URL: {download_url}") - subprocess.run(['wget', download_url, '-O', save_path]) + # Download the file from the URL + response = requests.get(download_url, stream=True) + with open(save_path, 'wb') as f: + for chunk in response.iter_content(chunk_size=1024): + f.write(chunk) + # Write out the pKZA M = M or '0' pKZA = int(Z + A + M) print(f"Downloaded file saved to: {save_path}, pKZA: {pKZA}") + return save_path, pKZA # Extract pKZA data from a GENDF file From e135311ff2fe3411a22417041192afbe8b1a6413 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 11:39:52 -0500 Subject: [PATCH 16/59] Switching CSV reading from Pandas DataFrame to dictionary --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 3 ++- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 7 ++--- src/DataLib/fendl32B_retrofit/gendf_tools.py | 26 +++++++++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 6e030e9..b563caa 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -135,7 +135,8 @@ def groupr_input_file_format(matb, MTs, element, A, mt_table): mtd = MTs # sections to be processed cards[9] = [] for mt in MTs: - mtname = mt_table[mt_table['MT'] == mt]['Reaction'].values[0] # description of section to be processed + index = mt_table['MT'].index(str(mt)) + mtname = mt_table['Reaction'][index] # description of section to be processed card9_line = f'{mfd} {mt} "{mtname}"' cards[9].append(card9_line) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index eae7916..2ad038b 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -1,3 +1,4 @@ +# Import packages import ENDFtk import gendf_tools as GENDFtk import pandas as pd @@ -7,7 +8,7 @@ # Load MT table # Data for MT table collected from # https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf -mt_table = pd.read_csv('mt_table.csv') +mt_table = GENDFtk.read_csv('mt_table.csv') # Set user parameters print('Input GENDF file or download from FENDL 3.2b') @@ -44,8 +45,8 @@ pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = 1) # Clean up repository from unnecessary intermediate files from GROUPR run - groupr_files = ['groupr.inp', 'groupr.out', 'run_njoy.sh', 'tape20', - 'tape21', 'tape31', f'fendl3_{element}{A[:-1]}'] + groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', + 'tape31', f'fendl3_{element}{A[:-1]}'] for file in groupr_files: subprocess.run(['rm', file]) diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 1cf5ba4..29d5d52 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -1,10 +1,31 @@ # Import packages -import subprocess +import csv import requests import sys sys.path.append('./GROUPR') from groupr_tools import elements +# Define a function to read CSV files +def read_csv(csv_path): + + # Initialize an empty dictionary + data_dict = {} + + # Open the CSV file + with open(csv_path, mode='r') as file: + # Create a CSV reader object + csv_reader = csv.DictReader(file) + + # Initialize the dictionary keys with empty lists + for column in csv_reader.fieldnames: + data_dict[column] = [] + + # Populate the dictionary with the CSV data + for row in csv_reader: + for column in csv_reader.fieldnames: + data_dict[column].append(row[column]) + return data_dict + # Define a function to download the GENDF file from nds.iaea.org def gendf_download(element, A, M=None, save_path=None): # Initialize parameters @@ -95,7 +116,8 @@ def reaction_calculator(MT, mt_table, pKZA): try: nucleus_protons = int(str(pKZA)[:2]) A = int(str(pKZA)[2:5]) - reaction = mt_table[mt_table['MT'] == MT]['Reaction'].values[0] + index = mt_table['MT'].index(str(MT)) + reaction = mt_table['Reaction'][index] emitted_particles = reaction.split(',')[1][:-1] particle_types = ['n', 'd', 'alpha', 'p', 't', '3He'] emission_tuples = [(emitted_particle_count(p, emitted_particles), p) for p in particle_types if emitted_particle_count(p, emitted_particles)] From 29528ddc857396cecc8c3c653e80e9675689a820 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 13:04:48 -0500 Subject: [PATCH 17/59] Moving away from direct input to argparse input/options --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 88 +++++++++++-------- src/DataLib/fendl32B_retrofit/gendf_tools.py | 24 ++++- 2 files changed, 72 insertions(+), 40 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 2ad038b..961de18 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -10,45 +10,55 @@ # https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf mt_table = GENDFtk.read_csv('mt_table.csv') -# Set user parameters -print('Input GENDF file or download from FENDL 3.2b') -usr_selection = input('For local input, type I. For download, type D. (I, D): ') -if usr_selection == 'I': - gendf_path = input('Type in path of GENDF file: ') - pKZA = GENDFtk.gendf_pkza_extract(gendf_path) -elif usr_selection == 'D': - element = input('Select target element: ') - A = input('Select mass number (A): ') - # Check isomeric state - if 'm' not in A: - gendf_path, pKZA = GENDFtk.gendf_download(element, A) - else: - # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file - sys.path.append('./GROUPR') - import groupr_tools as GRPRtk - - # Download ENDF and PENDF files for the isomer - endf_path = GRPRtk.tendl_download(element, A, 'endf') - pendf_path = GRPRtk.tendl_download(element, A, 'pendf') - - # Extract necessary MT and MAT data from the ENDF file - matb, MTs = GRPRtk.endf_specs(endf_path) - - # Write out the GROUPR input file - card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_table) - GRPRtk.groupr_input_file_writer(card_deck, MTs) - - # Run NJOY with GROUPR to create a GENDF file for the isomer - gendf_path = GRPRtk.run_njoy(card_deck, element, A) - - # Save pKZA value - pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = 1) - - # Clean up repository from unnecessary intermediate files from GROUPR run - groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', - 'tape31', f'fendl3_{element}{A[:-1]}'] - for file in groupr_files: - subprocess.run(['rm', file]) +def main(): + # Parse command line arguments + args = GENDFtk.fendl_args() + + # Set conditionals for local file input + if args.method == 'I': + gendf_path = args.local_path + pKZA = GENDFtk.gendf_pkza_extract(gendf_path) + + # Set conditionals for file download + elif args.method == 'D': + element = args.element + A = args.A + # Check isomeric state + if 'm' not in A: + gendf_path, pKZA = GENDFtk.gendf_download(element, A) + else: + # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file + sys.path.append('./GROUPR') + import groupr_tools as GRPRtk + + # Download ENDF and PENDF files for the isomer + endf_path = GRPRtk.tendl_download(element, A, 'endf') + pendf_path = GRPRtk.tendl_download(element, A, 'pendf') + + # Extract necessary MT and MAT data from the ENDF file + matb, MTs = GRPRtk.endf_specs(endf_path) + + # Write out the GROUPR input file + card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_table) + GRPRtk.groupr_input_file_writer(card_deck, MTs) + + # Run NJOY with GROUPR to create a GENDF file for the isomer + gendf_path = GRPRtk.run_njoy(card_deck, element, A) + + # Save pKZA value + pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = 1) + + # Clean up repository from unnecessary intermediate files from GROUPR run + groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', + 'tape31', f'fendl3_{element}{A[:-1]}'] + for file in groupr_files: + subprocess.run(['rm', file]) + + return gendf_path, pKZA + +# Execute main() function based on arguments +if __name__ == '__main__': + gendf_path, pKZA = main() print(f"GENDF file path: {gendf_path}") print(f"Parent KZA (pKZA): {pKZA}") diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 29d5d52..1142a6e 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -1,10 +1,32 @@ # Import packages +import argparse import csv import requests import sys sys.path.append('./GROUPR') from groupr_tools import elements +# Define an argument parser +def fendl_args(): + parser = argparse.ArgumentParser() + + # Subparsers for 'I' and 'D' + subparsers = parser.add_subparsers(dest='method', required=True) + parser_I = subparsers.add_parser('I', help='Local file input') + parser_I.add_argument('--local-path', + required=True, + help='Path to the local GENDF file.') + parser_D = subparsers.add_parser('D', help='Download GENDF file') + parser_D.add_argument('--element', + required=True, + help= 'Chemical symbol for selected element (i.e. Ti).') + parser_D.add_argument('--A', + required=True, + help='Mass number for selected isotope (i.e. 48). If the target is an isomer, "m" after the mass number (i.e. 48m)') + + args = parser.parse_args() + return args + # Define a function to read CSV files def read_csv(csv_path): @@ -69,7 +91,7 @@ def gendf_pkza_extract(gendf_path, M=None): if 'm' in A: m_index = A.find('m') A = A[:m_index] - M = str(M) or '0' + M = str(str(M).count('m')) or '0' pKZA = int(Z + A + M) print(f"Extracted pKZA: {pKZA}") return pKZA From 0abb51bc3c860e00d9b3de97528c199ec17d14f5 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 13:13:59 -0500 Subject: [PATCH 18/59] Expanding argparse usage --- src/DataLib/fendl32B_retrofit/gendf_tools.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 1142a6e..170155a 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -17,10 +17,10 @@ def fendl_args(): required=True, help='Path to the local GENDF file.') parser_D = subparsers.add_parser('D', help='Download GENDF file') - parser_D.add_argument('--element', + parser_D.add_argument('--element', '-e', required=True, help= 'Chemical symbol for selected element (i.e. Ti).') - parser_D.add_argument('--A', + parser_D.add_argument('--A', '-a', required=True, help='Mass number for selected isotope (i.e. 48). If the target is an isomer, "m" after the mass number (i.e. 48m)') From 582424b9ac44c21e5ed12459f6ed11eeafffb510 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 18 Jun 2024 16:06:06 -0500 Subject: [PATCH 19/59] Moving away from print statements towards logging --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 7 ++++-- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 14 +++++++----- src/DataLib/fendl32B_retrofit/gendf_tools.py | 22 ++++++++----------- .../fendl32B_retrofit/logging_config.py | 12 ++++++++++ 4 files changed, 34 insertions(+), 21 deletions(-) create mode 100644 src/DataLib/fendl32B_retrofit/logging_config.py diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index b563caa..8aeffda 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -2,6 +2,9 @@ import ENDFtk import urllib import subprocess +import sys +sys.path.append('../') +from logging_config import logger # Dictionary of elements in the Periodic Table elements = [ @@ -166,12 +169,12 @@ def run_njoy(cards, element, A): with open(OUTPUT, 'w') as output_file: output_file.write(result.stdout) - # If the run is successful, print out the output and make a copy of the file as a .GENDF file + # If the run is successful, log out the output and make a copy of the file as a .GENDF file if result.stderr == '': output = subprocess.run(['cat', 'output'], capture_output=True, text = True) title = cards[3][0][1:-1] title_index = output.stdout.find(title) - print(output.stdout[:title_index + len(title)]) + logger.info(output.stdout[:title_index + len(title)]) gendf_path = f'tendl_2017_{element}{A}.gendf' subprocess.run(['cp', 'tape31', gendf_path]) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 961de18..dac0902 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -4,6 +4,7 @@ import pandas as pd import sys import subprocess +from logging_config import logger # Load MT table # Data for MT table collected from @@ -11,9 +12,10 @@ mt_table = GENDFtk.read_csv('mt_table.csv') def main(): + # Parse command line arguments args = GENDFtk.fendl_args() - + # Set conditionals for local file input if args.method == 'I': gendf_path = args.local_path @@ -60,8 +62,8 @@ def main(): if __name__ == '__main__': gendf_path, pKZA = main() -print(f"GENDF file path: {gendf_path}") -print(f"Parent KZA (pKZA): {pKZA}") +logger.info(f"GENDF file path: {gendf_path}") +logger.info(f"Parent KZA (pKZA): {pKZA}") # Read in data with ENDFtk tape = ENDFtk.tree.Tape.from_file(gendf_path) @@ -91,7 +93,7 @@ def main(): dKZAs.append(dKZA) emitted_particles_list.append(emitted_particles) except Exception as e: - print(f"Error processing MT {MT}: {e}") + logger.error(f"Error processing MT {MT}: {e}") continue # Store data in a Pandas DataFrame @@ -104,5 +106,5 @@ def main(): # Save to CSV gendf_data.to_csv('gendf_data.csv', index=False) -print("Saved gendf_data.csv") -print(gendf_data.head()) \ No newline at end of file +logger.info("Saved gendf_data.csv") +logger.info(gendf_data.head()) \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 170155a..cb45c59 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -5,6 +5,7 @@ import sys sys.path.append('./GROUPR') from groupr_tools import elements +from logging_config import logger # Define an argument parser def fendl_args(): @@ -51,14 +52,12 @@ def read_csv(csv_path): # Define a function to download the GENDF file from nds.iaea.org def gendf_download(element, A, M=None, save_path=None): # Initialize parameters - Z = str(elements[element]) + Z = str(elements[element]).zfill(2) A = str(A).zfill(3) gendf_gen_url = 'https://www-nds.iaea.org/fendl/data/neutron/group/' download_url = f'{gendf_gen_url}{Z}{element}_{A}.g' save_path = save_path or f'./fendl3_{element}{A}' - print(f"Downloading GENDF file from: {download_url}") - # Check to see if the URL is valid response = requests.head(download_url) if response.status_code == 404: @@ -66,18 +65,16 @@ def gendf_download(element, A, M=None, save_path=None): elif response.status_code == 301: download_url = f'{gendf_gen_url}{Z}{element}{A}.g' - print(f"Final download URL: {download_url}") - # Download the file from the URL + logger.info(f'Downloading file from: {download_url}') response = requests.get(download_url, stream=True) - with open(save_path, 'wb') as f: - for chunk in response.iter_content(chunk_size=1024): - f.write(chunk) + with open(save_path, 'w') as f: + f.write(response.content.decode('utf-8')) + logger.info(f'Downloaded file saved to: {save_path}') # Write out the pKZA M = M or '0' pKZA = int(Z + A + M) - print(f"Downloaded file saved to: {save_path}, pKZA: {pKZA}") return save_path, pKZA @@ -85,7 +82,7 @@ def gendf_download(element, A, M=None, save_path=None): def gendf_pkza_extract(gendf_path, M=None): with open(gendf_path, 'r') as f: first_line = f.readline() - print(f"First line of GENDF file: {first_line}") + logger.info(f"First line of GENDF file: {first_line}") Z, element, A = first_line.split('-')[:3] A = A.split(' ')[0] if 'm' in A: @@ -93,7 +90,6 @@ def gendf_pkza_extract(gendf_path, M=None): A = A[:m_index] M = str(str(M).count('m')) or '0' pKZA = int(Z + A + M) - print(f"Extracted pKZA: {pKZA}") return pKZA # Extract cross-section data for a given MT @@ -109,7 +105,7 @@ def extract_cross_sections(file, MT): sigma_list.append(float(mantissa) * (10 ** (sign * int(exponent)))) return sigma_list except Exception as e: - print(f"Error extracting cross sections for MT {MT}: {e}") + logger.error(f"Error extracting cross sections for MT {MT}: {e}") return [] # Count emitted particles @@ -159,5 +155,5 @@ def reaction_calculator(MT, mt_table, pKZA): dKZA = int(f"{str(nucleus_protons)}{residual_A}{str(M)}") return dKZA, emitted_particles except Exception as e: - print(f"Error in reaction calculation for MT {MT}: {e}") + logger.error(f"Error in reaction calculation for MT {MT}: {e}") return None, None \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py new file mode 100644 index 0000000..f707733 --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -0,0 +1,12 @@ +# Import packages +import logging + +# Configure logging +logging.basicConfig( + level= 'INFO', + format='%(asctime)s - %(levelname)s - %(message)s', + filename= 'fendl3_gendf.log', + filemode= 'w' +) + +logger = logging.getLogger(__name__) \ No newline at end of file From 77e9a65f59b023fa6f071ad535c5df58b97e7554 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Wed, 19 Jun 2024 09:31:40 -0500 Subject: [PATCH 20/59] Removed unnecessary file from file cleanup list --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index dac0902..5708512 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -51,8 +51,7 @@ def main(): pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = 1) # Clean up repository from unnecessary intermediate files from GROUPR run - groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', - 'tape31', f'fendl3_{element}{A[:-1]}'] + groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', 'tape31'] for file in groupr_files: subprocess.run(['rm', file]) From 493a35cdf6b1ee132f29215f420a6589d7ca5828 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Wed, 19 Jun 2024 11:26:49 -0500 Subject: [PATCH 21/59] Expanding logger to capture 'No bottleneck testing available' message --- .../fendl32B_retrofit/logging_config.py | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py index f707733..b3d62a3 100644 --- a/src/DataLib/fendl32B_retrofit/logging_config.py +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -1,12 +1,28 @@ # Import packages import logging +import sys # Configure logging logging.basicConfig( level= 'INFO', - format='%(asctime)s - %(levelname)s - %(message)s', + format= '%(asctime)s - %(levelname)s - %(message)s', filename= 'fendl3_gendf.log', filemode= 'w' ) -logger = logging.getLogger(__name__) \ No newline at end of file +logger = logging.getLogger(__name__) + +# Redirect stdout and stderr to the logger +class LoggerWriter: + def __init__(self, level): + self.level = level + + def write(self, message): + if message.strip(): # Avoid logging empty messages + self.level(message.strip()) + + def flush(self): + pass # No need to flush, but method must be defined + +sys.stdout = LoggerWriter(logger.info) +sys.stderr = LoggerWriter(logger.error) \ No newline at end of file From a29bd66645e85503534193947d504ef0ba54a646 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Wed, 19 Jun 2024 11:35:44 -0500 Subject: [PATCH 22/59] Improving readability of NJOY run message for logger --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 8aeffda..1263986 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -174,7 +174,7 @@ def run_njoy(cards, element, A): output = subprocess.run(['cat', 'output'], capture_output=True, text = True) title = cards[3][0][1:-1] title_index = output.stdout.find(title) - logger.info(output.stdout[:title_index + len(title)]) + logger.info(f'\n{output.stdout[:title_index + len(title)]}\n') gendf_path = f'tendl_2017_{element}{A}.gendf' subprocess.run(['cp', 'tape31', gendf_path]) From 69fe5f05b2a7124ad0b4d6c42d13535f2b51e24d Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 21 Jun 2024 10:15:09 -0500 Subject: [PATCH 23/59] Updating the logging to redirect ENDFtk messages to the logger and retain argparse messages in terminal --- .../fendl32B_retrofit/GROUPR/groupr_tools.py | 53 ++++++++++++++----- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 21 ++++---- src/DataLib/fendl32B_retrofit/gendf_tools.py | 50 ++++++++++------- 3 files changed, 84 insertions(+), 40 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 1263986..12accf3 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -4,7 +4,9 @@ import subprocess import sys sys.path.append('../') -from logging_config import logger +from logging_config import logger, LoggerWriter +import contextlib +import os # Dictionary of elements in the Periodic Table elements = [ @@ -62,23 +64,50 @@ def tendl_download(element, A, filetype, save_path = None): return save_path +# Define a function to redirect special ENDFtk output to logger +@contextlib.contextmanager +def redirect_ENDFtk_output(): + # Redirect stdout and stderr to logger + logger_stdout = LoggerWriter(logger.info) + logger_stderr = LoggerWriter(logger.error) + + with open(os.devnull, 'w') as fnull: + old_stdout = os.dup(1) + old_stderr = os.dup(2) + # Suppress terminal stdout readout + os.dup2(fnull.fileno(), 1) + + sys.stdout = logger_stdout + sys.stderr = logger_stderr + try: + yield + finally: + os.dup2(old_stdout, 1) + os.dup2(old_stderr, 2) + os.close(old_stdout) + os.close(old_stderr) + # Reset stdout and stderr to default + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + # Define a function to extract MT and MAT data from an ENDF file def endf_specs(endf_path): - # Read in ENDF tape using ENDFtk - tape = ENDFtk.tree.Tape.from_file(endf_path) + with redirect_ENDFtk_output(): + # Read in ENDF tape using ENDFtk + tape = ENDFtk.tree.Tape.from_file(endf_path) - # Determine the material ID - mat_ids = tape.material_numbers - matb = mat_ids[0] + # Determine the material ID + mat_ids = tape.material_numbers + matb = mat_ids[0] - # Set MF for cross sections - xs_MF = 3 + # Set MF for cross sections + xs_MF = 3 - # Extract out the file - file = tape.material(matb).file(xs_MF).parse() + # Extract out the file + file = tape.material(matb).file(xs_MF).parse() - # Extract the MT numbers that are present in the file - MTs = [MT.MT for MT in file.sections.to_list()] + # Extract the MT numbers that are present in the file + MTs = [MT.MT for MT in file.sections.to_list()] return matb, MTs diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 5708512..d2fa44e 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -5,6 +5,8 @@ import sys import subprocess from logging_config import logger +sys.path.append('./GROUPR') +import groupr_tools as GRPRtk # Load MT table # Data for MT table collected from @@ -30,8 +32,6 @@ def main(): gendf_path, pKZA = GENDFtk.gendf_download(element, A) else: # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file - sys.path.append('./GROUPR') - import groupr_tools as GRPRtk # Download ENDF and PENDF files for the isomer endf_path = GRPRtk.tendl_download(element, A, 'endf') @@ -65,14 +65,15 @@ def main(): logger.info(f"Parent KZA (pKZA): {pKZA}") # Read in data with ENDFtk -tape = ENDFtk.tree.Tape.from_file(gendf_path) -mat_ids = tape.material_numbers -mat = mat_ids[0] -xs_MF = 3 -file = tape.material(mat).file(xs_MF) - -# Extract the MT numbers that are present in the file -MTs = [MT.MT for MT in file.sections.to_list()] +with GRPRtk.redirect_ENDFtk_output(): + tape = ENDFtk.tree.Tape.from_file(gendf_path) + mat_ids = tape.material_numbers + mat = mat_ids[0] + xs_MF = 3 + file = tape.material(mat).file(xs_MF) + + # Extract the MT numbers that are present in the file + MTs = [MT.MT for MT in file.sections.to_list()] # Initialize lists cross_sections_by_MT = [] diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index cb45c59..3c0ee0e 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -9,24 +9,38 @@ # Define an argument parser def fendl_args(): - parser = argparse.ArgumentParser() - - # Subparsers for 'I' and 'D' - subparsers = parser.add_subparsers(dest='method', required=True) - parser_I = subparsers.add_parser('I', help='Local file input') - parser_I.add_argument('--local-path', - required=True, - help='Path to the local GENDF file.') - parser_D = subparsers.add_parser('D', help='Download GENDF file') - parser_D.add_argument('--element', '-e', - required=True, - help= 'Chemical symbol for selected element (i.e. Ti).') - parser_D.add_argument('--A', '-a', - required=True, - help='Mass number for selected isotope (i.e. 48). If the target is an isomer, "m" after the mass number (i.e. 48m)') - - args = parser.parse_args() - return args + # Temporarily reset stdout and stderr to the defaults + # so that arg messages (i.e. --help) print out to terminal + original_stdout = sys.stdout + original_stderr = sys.stderr + + try: + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + + parser = argparse.ArgumentParser() + + # Subparsers for 'I' and 'D' + subparsers = parser.add_subparsers(dest='method', required=True) + parser_I = subparsers.add_parser('I', help='Local file input') + parser_I.add_argument('--local-path', + required=True, + help='Path to the local GENDF file.') + parser_D = subparsers.add_parser('D', help='Download GENDF file') + parser_D.add_argument('--element', '-e', + required=True, + help= 'Chemical symbol for selected element (i.e. Ti).') + parser_D.add_argument('--A', '-a', + required=True, + help='Mass number for selected isotope (i.e. 48). If the target is an isomer, "m" after the mass number (i.e. 48m)') + + args = parser.parse_args() + return args + + finally: + # Restore stdout and stderr to the logger + sys.stdout = original_stdout + sys.stderr = original_stderr # Define a function to read CSV files def read_csv(csv_path): From d0f7d3b43e2d6f9ad938ccaa95cd06c2a25dcbf3 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 21 Jun 2024 10:17:08 -0500 Subject: [PATCH 24/59] Removing stand-alone groupr script -- unnecessary and not called individually --- .../fendl32B_retrofit/GROUPR/groupr.py | 20 ------------------- 1 file changed, 20 deletions(-) delete mode 100644 src/DataLib/fendl32B_retrofit/GROUPR/groupr.py diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr.py deleted file mode 100644 index 2201167..0000000 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr.py +++ /dev/null @@ -1,20 +0,0 @@ -import groupr_tools as grpt -import pandas as pd - -# Call TENDL download function by user CLI input -element = input('Select element: ') -A = input('Select mass number: A = ') -endf_path = grpt.tendl_download(element, A, 'endf') -pendf_path = grpt.tendl_download(element, A, 'pendf') -print(f'ENDF file can be found at ./{endf_path}') -print(f'PENDF file can be found at ./{pendf_path}') - -# Extract necessary MT and MAT data from the ENDF file -matb, MTs = grpt.endf_specs(endf_path) - -# Write out the GROUPR input file -mt_table = pd.read_csv('./mt_table.csv') -card_deck = grpt.groupr_input(matb, MTs, element, A, mt_table) - -# Run NJOY -grpt.run_njoy(endf_path, pendf_path, card_deck, element, A) \ No newline at end of file From 4318ae457363aea1ed510c11e923b5cf66859b82 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 21 Jun 2024 10:22:36 -0500 Subject: [PATCH 25/59] Reorganizing folder structure -- separate GROUPR folder no longer seemed necessary with only one file in it --- src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py | 1 - src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 1 - src/DataLib/fendl32B_retrofit/gendf_tools.py | 1 - 3 files changed, 3 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py index 12accf3..659f742 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py @@ -3,7 +3,6 @@ import urllib import subprocess import sys -sys.path.append('../') from logging_config import logger, LoggerWriter import contextlib import os diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index d2fa44e..fb8d908 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -5,7 +5,6 @@ import sys import subprocess from logging_config import logger -sys.path.append('./GROUPR') import groupr_tools as GRPRtk # Load MT table diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 3c0ee0e..81a6266 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -3,7 +3,6 @@ import csv import requests import sys -sys.path.append('./GROUPR') from groupr_tools import elements from logging_config import logger From b1b63f9d7d45eca37847ab64ae2bb2f8d71a0968 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 21 Jun 2024 10:24:34 -0500 Subject: [PATCH 26/59] Finalizing move out of GROUPR/ --- src/DataLib/fendl32B_retrofit/{GROUPR => }/groupr_tools.py | 1 + 1 file changed, 1 insertion(+) rename src/DataLib/fendl32B_retrofit/{GROUPR => }/groupr_tools.py (99%) diff --git a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py similarity index 99% rename from src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py rename to src/DataLib/fendl32B_retrofit/groupr_tools.py index 659f742..12accf3 100644 --- a/src/DataLib/fendl32B_retrofit/GROUPR/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -3,6 +3,7 @@ import urllib import subprocess import sys +sys.path.append('../') from logging_config import logger, LoggerWriter import contextlib import os From 1edd2514dc0dbbf0dd106291787096771884aa48 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 21 Jun 2024 15:50:01 -0500 Subject: [PATCH 27/59] Moving the rest of fendl3_gendf.py to the main() function --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 98 +++++++++---------- 1 file changed, 48 insertions(+), 50 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index fb8d908..38c62ec 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -54,56 +54,54 @@ def main(): for file in groupr_files: subprocess.run(['rm', file]) - return gendf_path, pKZA + logger.info(f"GENDF file path: {gendf_path}") + logger.info(f"Parent KZA (pKZA): {pKZA}") + + # Read in data with ENDFtk + with GRPRtk.redirect_ENDFtk_output(): + tape = ENDFtk.tree.Tape.from_file(gendf_path) + mat_ids = tape.material_numbers + mat = mat_ids[0] + xs_MF = 3 + file = tape.material(mat).file(xs_MF) + + # Extract the MT numbers that are present in the file + MTs = [MT.MT for MT in file.sections.to_list()] + + # Initialize lists + cross_sections_by_MT = [] + emitted_particles_list = [] + dKZAs = [] + + # Extract data for each MT + for MT in MTs: + try: + sigma_list = GENDFtk.extract_cross_sections(file, MT) + if not sigma_list: + continue + dKZA, emitted_particles = GENDFtk.reaction_calculator(MT, mt_table, pKZA) + if dKZA is None: + continue + cross_sections_by_MT.append(sigma_list) + dKZAs.append(dKZA) + emitted_particles_list.append(emitted_particles) + except Exception as e: + logger.error(f"Error processing MT {MT}: {e}") + continue + + # Store data in a Pandas DataFrame + gendf_data = pd.DataFrame({ + 'Parent KZA': [pKZA] * len(dKZAs), + 'Daughter KZA': dKZAs, + 'Emitted Particles': emitted_particles_list, + 'Cross Sections': cross_sections_by_MT + }) + + # Save to CSV + gendf_data.to_csv('gendf_data.csv', index=False) + logger.info("Saved gendf_data.csv") + logger.info(gendf_data.head()) # Execute main() function based on arguments if __name__ == '__main__': - gendf_path, pKZA = main() - -logger.info(f"GENDF file path: {gendf_path}") -logger.info(f"Parent KZA (pKZA): {pKZA}") - -# Read in data with ENDFtk -with GRPRtk.redirect_ENDFtk_output(): - tape = ENDFtk.tree.Tape.from_file(gendf_path) - mat_ids = tape.material_numbers - mat = mat_ids[0] - xs_MF = 3 - file = tape.material(mat).file(xs_MF) - - # Extract the MT numbers that are present in the file - MTs = [MT.MT for MT in file.sections.to_list()] - -# Initialize lists -cross_sections_by_MT = [] -emitted_particles_list = [] -dKZAs = [] - -# Extract data for each MT -for MT in MTs: - try: - sigma_list = GENDFtk.extract_cross_sections(file, MT) - if not sigma_list: - continue - dKZA, emitted_particles = GENDFtk.reaction_calculator(MT, mt_table, pKZA) - if dKZA is None: - continue - cross_sections_by_MT.append(sigma_list) - dKZAs.append(dKZA) - emitted_particles_list.append(emitted_particles) - except Exception as e: - logger.error(f"Error processing MT {MT}: {e}") - continue - -# Store data in a Pandas DataFrame -gendf_data = pd.DataFrame({ - 'Parent KZA': [pKZA] * len(dKZAs), - 'Daughter KZA': dKZAs, - 'Emitted Particles': emitted_particles_list, - 'Cross Sections': cross_sections_by_MT -}) - -# Save to CSV -gendf_data.to_csv('gendf_data.csv', index=False) -logger.info("Saved gendf_data.csv") -logger.info(gendf_data.head()) \ No newline at end of file + main() \ No newline at end of file From fb2d548d320cc9fd5c11fa2fae78efd0c184419b Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 21 Jun 2024 15:53:55 -0500 Subject: [PATCH 28/59] Forgot to include mt_table in main() --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 38c62ec..2cbe3a4 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -7,12 +7,11 @@ from logging_config import logger import groupr_tools as GRPRtk -# Load MT table -# Data for MT table collected from -# https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf -mt_table = GENDFtk.read_csv('mt_table.csv') - def main(): + # Load MT table + # Data for MT table collected from + # https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf + mt_table = GENDFtk.read_csv('mt_table.csv') # Parse command line arguments args = GENDFtk.fendl_args() From 4065d00b0a1a0c2d6efabef4452054806ef733c4 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 24 Jun 2024 11:02:55 -0500 Subject: [PATCH 29/59] Streamlining endf_specs usage and placement. --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 64 +++++++++---------- src/DataLib/fendl32B_retrofit/gendf_tools.py | 63 +++++++++++++++++- src/DataLib/fendl32B_retrofit/groupr_tools.py | 52 --------------- 3 files changed, 90 insertions(+), 89 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 2cbe3a4..ab0e519 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -19,53 +19,47 @@ def main(): # Set conditionals for local file input if args.method == 'I': gendf_path = args.local_path - pKZA = GENDFtk.gendf_pkza_extract(gendf_path) + M = args.isomer + pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = M.upper()) + matb, MTs, file_obj = GENDFtk.endf_specs(gendf_path, 'gendf') # Set conditionals for file download elif args.method == 'D': element = args.element A = args.A - # Check isomeric state - if 'm' not in A: - gendf_path, pKZA = GENDFtk.gendf_download(element, A) - else: - # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file + # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file - # Download ENDF and PENDF files for the isomer - endf_path = GRPRtk.tendl_download(element, A, 'endf') - pendf_path = GRPRtk.tendl_download(element, A, 'pendf') + # Download ENDF and PENDF files for the isomer + endf_path = GRPRtk.tendl_download(element, A, 'endf') + pendf_path = GRPRtk.tendl_download(element, A, 'pendf') - # Extract necessary MT and MAT data from the ENDF file - matb, MTs = GRPRtk.endf_specs(endf_path) - - # Write out the GROUPR input file - card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_table) - GRPRtk.groupr_input_file_writer(card_deck, MTs) + # Extract necessary MT and MAT data from the ENDF file + matb, MTs = GENDFtk.endf_specs(endf_path, 'endf') + + # Write out the GROUPR input file + card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_table) + GRPRtk.groupr_input_file_writer(card_deck, MTs) - # Run NJOY with GROUPR to create a GENDF file for the isomer - gendf_path = GRPRtk.run_njoy(card_deck, element, A) + # Run NJOY with GROUPR to create a GENDF file for the isomer + gendf_path = GRPRtk.run_njoy(card_deck, element, A) - # Save pKZA value - pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = 1) + # Save pKZA value + M = 'M' if 'm' in A else None + pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = M) - # Clean up repository from unnecessary intermediate files from GROUPR run - groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', 'tape31'] - for file in groupr_files: - subprocess.run(['rm', file]) + # Recalibrate MT list after GENDF conversion + matb, MTs, file_obj = GENDFtk.endf_specs(gendf_path, 'gendf') + + # Clean up repository from unnecessary intermediate files from GROUPR run + groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', + 'tape31', f'tendl_2017_{element}{A}.gendf'] + for file in groupr_files: + subprocess.run(['rm', file]) + subprocess.run(['mv', 'output', 'njoy_output']) logger.info(f"GENDF file path: {gendf_path}") logger.info(f"Parent KZA (pKZA): {pKZA}") - - # Read in data with ENDFtk - with GRPRtk.redirect_ENDFtk_output(): - tape = ENDFtk.tree.Tape.from_file(gendf_path) - mat_ids = tape.material_numbers - mat = mat_ids[0] - xs_MF = 3 - file = tape.material(mat).file(xs_MF) - - # Extract the MT numbers that are present in the file - MTs = [MT.MT for MT in file.sections.to_list()] + logger.info(f'MTs: {MTs}') # Initialize lists cross_sections_by_MT = [] @@ -75,7 +69,7 @@ def main(): # Extract data for each MT for MT in MTs: try: - sigma_list = GENDFtk.extract_cross_sections(file, MT) + sigma_list = GENDFtk.extract_cross_sections(file_obj, MT) if not sigma_list: continue dKZA, emitted_particles = GENDFtk.reaction_calculator(MT, mt_table, pKZA) diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 81a6266..9a46dcf 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -4,7 +4,10 @@ import requests import sys from groupr_tools import elements -from logging_config import logger +from logging_config import logger, LoggerWriter +import ENDFtk +import contextlib +import os # Define an argument parser def fendl_args(): @@ -25,6 +28,10 @@ def fendl_args(): parser_I.add_argument('--local-path', required=True, help='Path to the local GENDF file.') + parser_I.add_argument('--isomer', '-m', + required=False, + default=None, + help = 'Isomeric state of the element') parser_D = subparsers.add_parser('D', help='Download GENDF file') parser_D.add_argument('--element', '-e', required=True, @@ -101,10 +108,62 @@ def gendf_pkza_extract(gendf_path, M=None): if 'm' in A: m_index = A.find('m') A = A[:m_index] - M = str(str(M).count('m')) or '0' + M = str(str(M).count('M')) or '0' pKZA = int(Z + A + M) return pKZA +# Define a function to redirect special ENDFtk output to logger +@contextlib.contextmanager +def redirect_ENDFtk_output(): + # Redirect stdout and stderr to logger + logger_stdout = LoggerWriter(logger.info) + logger_stderr = LoggerWriter(logger.error) + + with open(os.devnull, 'w') as fnull: + old_stdout = os.dup(1) + old_stderr = os.dup(2) + # Suppress terminal stdout readout + os.dup2(fnull.fileno(), 1) + + sys.stdout = logger_stdout + sys.stderr = logger_stderr + try: + yield + finally: + os.dup2(old_stdout, 1) + os.dup2(old_stderr, 2) + os.close(old_stdout) + os.close(old_stderr) + # Reset stdout and stderr to default + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + +# Define a function to extract MT and MAT data from an ENDF file +def endf_specs(path, filetype): + with redirect_ENDFtk_output(): + # Read in ENDF tape using ENDFtk + tape = ENDFtk.tree.Tape.from_file(path) + + # Determine the material ID + mat_ids = tape.material_numbers + matb = mat_ids[0] + + # Set MF for cross sections + xs_MF = 3 + + # Extract out the file + file = tape.material(matb).file(xs_MF) + + # Extract the MT numbers that are present in the file + MTs = [MT.MT for MT in file.sections.to_list()] + + filetype = filetype.lower() + return_values = { + 'endf': (matb, MTs), + 'gendf': (matb, MTs, file) + } + return return_values.get(filetype) + # Extract cross-section data for a given MT def extract_cross_sections(file, MT): try: diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 12accf3..1075ba8 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -1,12 +1,7 @@ # Import packages -import ENDFtk import urllib import subprocess -import sys -sys.path.append('../') from logging_config import logger, LoggerWriter -import contextlib -import os # Dictionary of elements in the Periodic Table elements = [ @@ -64,53 +59,6 @@ def tendl_download(element, A, filetype, save_path = None): return save_path -# Define a function to redirect special ENDFtk output to logger -@contextlib.contextmanager -def redirect_ENDFtk_output(): - # Redirect stdout and stderr to logger - logger_stdout = LoggerWriter(logger.info) - logger_stderr = LoggerWriter(logger.error) - - with open(os.devnull, 'w') as fnull: - old_stdout = os.dup(1) - old_stderr = os.dup(2) - # Suppress terminal stdout readout - os.dup2(fnull.fileno(), 1) - - sys.stdout = logger_stdout - sys.stderr = logger_stderr - try: - yield - finally: - os.dup2(old_stdout, 1) - os.dup2(old_stderr, 2) - os.close(old_stdout) - os.close(old_stderr) - # Reset stdout and stderr to default - sys.stdout = sys.__stdout__ - sys.stderr = sys.__stderr__ - -# Define a function to extract MT and MAT data from an ENDF file -def endf_specs(endf_path): - with redirect_ENDFtk_output(): - # Read in ENDF tape using ENDFtk - tape = ENDFtk.tree.Tape.from_file(endf_path) - - # Determine the material ID - mat_ids = tape.material_numbers - matb = mat_ids[0] - - # Set MF for cross sections - xs_MF = 3 - - # Extract out the file - file = tape.material(matb).file(xs_MF).parse() - - # Extract the MT numbers that are present in the file - MTs = [MT.MT for MT in file.sections.to_list()] - - return matb, MTs - # Define a function to format GROUPR input cards def format_card(card_name, card_content, MTs): card_str = '' From 4250c4400b16332d46b4ce2073095bc5fe5876a6 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 24 Jun 2024 11:05:55 -0500 Subject: [PATCH 30/59] Removing direct GENDF download function -- all downloads need to be processed through NJOY now --- src/DataLib/fendl32B_retrofit/gendf_tools.py | 29 -------------------- 1 file changed, 29 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 9a46dcf..c9ddff2 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -69,35 +69,6 @@ def read_csv(csv_path): data_dict[column].append(row[column]) return data_dict -# Define a function to download the GENDF file from nds.iaea.org -def gendf_download(element, A, M=None, save_path=None): - # Initialize parameters - Z = str(elements[element]).zfill(2) - A = str(A).zfill(3) - gendf_gen_url = 'https://www-nds.iaea.org/fendl/data/neutron/group/' - download_url = f'{gendf_gen_url}{Z}{element}_{A}.g' - save_path = save_path or f'./fendl3_{element}{A}' - - # Check to see if the URL is valid - response = requests.head(download_url) - if response.status_code == 404: - raise FileNotFoundError(f'{download_url} not found') - elif response.status_code == 301: - download_url = f'{gendf_gen_url}{Z}{element}{A}.g' - - # Download the file from the URL - logger.info(f'Downloading file from: {download_url}') - response = requests.get(download_url, stream=True) - with open(save_path, 'w') as f: - f.write(response.content.decode('utf-8')) - logger.info(f'Downloaded file saved to: {save_path}') - - # Write out the pKZA - M = M or '0' - pKZA = int(Z + A + M) - - return save_path, pKZA - # Extract pKZA data from a GENDF file def gendf_pkza_extract(gendf_path, M=None): with open(gendf_path, 'r') as f: From 93d469f265df279a2f9da725611ae881e148cbd2 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 24 Jun 2024 11:16:15 -0500 Subject: [PATCH 31/59] Moving GROUPR parameters to global constants. --- src/DataLib/fendl32B_retrofit/groupr_tools.py | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 1075ba8..7c1060e 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -3,6 +3,24 @@ import subprocess from logging_config import logger, LoggerWriter +# Define constants +NENDF = 20 # unit for endf tape +NPEND = 21 # unit for pendf tape +NGOUT1 = 0 # unit for input gout tape (default=0) +NGOUT2 = 31 # unit for output gout tape (default=0) +IGN = 17 # neutron group structure option (corresponding to Vitamin J) +IGG = 0 # gamma group structure option +IWT = 11 # weight function option (corresponding to Vitamin E) +LORD = 0 # Legendre order +NTEMP = 1 # number of temperatures (default=1) +NSIGZ = 1 # number of sigma zeroes (default=1) +IPRINT = 1 # long print option (0/1=minimum/maximum) --(default=1) +ISMOOTH = 1 # switch on/off smoother operation (1/0, default=1=on) +TEMP = 293.16 # temperature in Kelvin +SIGZ = 0 # sigma zero values (including infinity) +MFD = 3 # file to be processed +MATD = 0 # next mat number to be processed + # Dictionary of elements in the Periodic Table elements = [ 'H', 'He', 'Li', 'Be', 'B', 'C', 'N', 'O', 'F', 'Ne', @@ -60,12 +78,12 @@ def tendl_download(element, A, filetype, save_path = None): return save_path # Define a function to format GROUPR input cards -def format_card(card_name, card_content, MTs): +def format_card(card_number, card_content, MTs): card_str = '' gen_str = ' ' + ' '.join(map(str, card_content)) - if card_name == 9: + if card_number == 9: card_str = ' ' + '/\n '.join(card_content) + '/\n' - elif card_name == 4: + elif card_number == 4: card_str += gen_str + '\n' else: card_str += gen_str + '/\n' @@ -77,25 +95,11 @@ def groupr_input_file_format(matb, MTs, element, A, mt_table): cards = {} # Set Card 1 - nendf = 20 # unit for endf tape - npend = 21 # unit for pendf tape - ngout1 = 0 # unit for input gout tape (default=0) - ngout2 = 31 # unit for output gout tape (default=0) - - cards[1] = [nendf, npend, ngout1, ngout2] + cards[1] = [NENDF, NPEND, NGOUT1, NGOUT2] # Set Card 2 # matb -- (already defined) -- material to be processed - ign = 17 # neutron group structure option - igg = 0 # gamma group structure option - iwt = 11 # weight function option - lord = 0 # Legendgre order - ntemp = 1 # number of temperatures (default = 1) - nsigz = 1 # number of sigma zeroes (default = 1) - iprint = 1 # long print option (0/1=minimum/maximum) -- (default=1) - ismooth = 1 # swith on/off smoother operation (1/0, default=1=on) - - cards[2] = [matb, ign, igg, iwt, lord, ntemp, nsigz, iprint] + cards[2] = [matb, IGN, IGG, IWT, LORD, NTEMP, NSIGZ, IPRINT] # Set Card 3 Z = str(elements[element]).zfill(2) @@ -103,26 +107,22 @@ def groupr_input_file_format(matb, MTs, element, A, mt_table): cards[3] = [title] # Set Card 4 - temp = 293.16 # temperature in Kelvin - cards[4] = [temp] + cards[4] = [TEMP] # Set Card 5 - sigz = 0 # sigma zero values (including infinity) - cards[5] = [sigz] + cards[5] = [SIGZ] # Set Card 9 - mfd = 3 # file to be processed mtd = MTs # sections to be processed cards[9] = [] for mt in MTs: index = mt_table['MT'].index(str(mt)) mtname = mt_table['Reaction'][index] # description of section to be processed - card9_line = f'{mfd} {mt} "{mtname}"' + card9_line = f'{MFD} {mt} "{mtname}"' cards[9].append(card9_line) # Set Card 10 - matd = 0 # next mat number to be processed - cards[10] = [matd] + cards[10] = [MATD] return cards From 98dcc9303858157b5a97416a5ca580a2881bb072 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 24 Jun 2024 11:17:43 -0500 Subject: [PATCH 32/59] Logging error if NJOY run is unsuccessful. --- src/DataLib/fendl32B_retrofit/groupr_tools.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 7c1060e..af2269f 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -155,4 +155,6 @@ def run_njoy(cards, element, A): gendf_path = f'tendl_2017_{element}{A}.gendf' subprocess.run(['cp', 'tape31', gendf_path]) - return gendf_path \ No newline at end of file + return gendf_path + else: + logger.error(result.stderr) \ No newline at end of file From 2460d720a43b14d6e042b3bd4c23e4c33c29e937 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 24 Jun 2024 11:28:57 -0500 Subject: [PATCH 33/59] Cleaning up package imports --- src/DataLib/fendl32B_retrofit/gendf_tools.py | 2 -- src/DataLib/fendl32B_retrofit/groupr_tools.py | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index c9ddff2..9c1f014 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -1,9 +1,7 @@ # Import packages import argparse import csv -import requests import sys -from groupr_tools import elements from logging_config import logger, LoggerWriter import ENDFtk import contextlib diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index af2269f..08db028 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -1,5 +1,6 @@ # Import packages -import urllib +import urllib.error +import urllib.request import subprocess from logging_config import logger, LoggerWriter From 6fcf5e581c0c43198dd8688bf20a7166f91523a4 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 24 Jun 2024 11:30:44 -0500 Subject: [PATCH 34/59] Removing unnecessary package imports on fendl3_gendf.py --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index ab0e519..8223dff 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -1,8 +1,6 @@ # Import packages -import ENDFtk import gendf_tools as GENDFtk import pandas as pd -import sys import subprocess from logging_config import logger import groupr_tools as GRPRtk From 5ec6bbfb221933778d8b00d1eb95495837ec33e2 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Wed, 26 Jun 2024 14:43:17 -0500 Subject: [PATCH 35/59] Fixing KZA formatting. --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 4 +--- src/DataLib/fendl32B_retrofit/gendf_tools.py | 3 ++- src/DataLib/fendl32B_retrofit/groupr_tools.py | 3 ++- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 8223dff..abbee01 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -49,8 +49,7 @@ def main(): matb, MTs, file_obj = GENDFtk.endf_specs(gendf_path, 'gendf') # Clean up repository from unnecessary intermediate files from GROUPR run - groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', - 'tape31', f'tendl_2017_{element}{A}.gendf'] + groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', 'tape31'] for file in groupr_files: subprocess.run(['rm', file]) subprocess.run(['mv', 'output', 'njoy_output']) @@ -91,7 +90,6 @@ def main(): # Save to CSV gendf_data.to_csv('gendf_data.csv', index=False) logger.info("Saved gendf_data.csv") - logger.info(gendf_data.head()) # Execute main() function based on arguments if __name__ == '__main__': diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 9c1f014..2d300ad 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -78,7 +78,7 @@ def gendf_pkza_extract(gendf_path, M=None): m_index = A.find('m') A = A[:m_index] M = str(str(M).count('M')) or '0' - pKZA = int(Z + A + M) + pKZA = Z.zfill(2) + A.zfill(3) + M return pKZA # Define a function to redirect special ENDFtk output to logger @@ -189,6 +189,7 @@ def reaction_calculator(MT, mt_table, pKZA): nucleus_protons -= num_particle residual_A = str(nucleus_neutrons + nucleus_protons).zfill(3) + nucleus_protons = str(nucleus_protons).zfill(2) M = isomer_check(emitted_particles) if M != 0: emitted_particles = emitted_particles[:-len(str(M))] diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 08db028..0f20f62 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -55,6 +55,7 @@ def tendl_download(element, A, filetype, save_path = None): isotope_component = f'{element}/{element}{A}/lib/endf/n-{element}{A}.' ext = file_handling[filetype.lower()]['ext'] download_url = tendl_gen_url + isotope_component + ext + logger.info(f'{filetype.upper()} URL: {download_url}') # Define a save path for the file if there is not one already specified if save_path is None: @@ -66,7 +67,7 @@ def tendl_download(element, A, filetype, save_path = None): except urllib.error.URLError as e: file_not_found_code = 404 if str(file_not_found_code) in str(e): - raise FileNotFoundError() + raise FileNotFoundError(f'{filetype.upper()} file does not exist at {download_url}') # Download the file using urllib with urllib.request.urlopen(download_url) as f: From f490d38da2bfb28dd085e8c75d36f413ccb42b3c Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 1 Jul 2024 12:49:38 -0500 Subject: [PATCH 36/59] Addressing low-level comments from most recent review. --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 102 ++++-- src/DataLib/fendl32B_retrofit/gendf_tools.py | 322 +++++++++++++----- src/DataLib/fendl32B_retrofit/groupr_tools.py | 123 ++++++- 3 files changed, 421 insertions(+), 126 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index abbee01..2f2d971 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -1,18 +1,77 @@ # Import packages import gendf_tools as GENDFtk import pandas as pd -import subprocess from logging_config import logger import groupr_tools as GRPRtk +import sys +import argparse + +# Define an argument parser +def fendl_args(): + """ + Configure Argument Parser for the FENDL 3.2-b/TENDL 2017 retroffiting, + including options for user input of GENDF files that have already + been processed using the NJOY GROUPR module or downloading and + processing TENDL/PENDF files from the TENDL 2017 database. + + Note: If the user opts to select the "Loclal file input" option, + they must ensure that the GENDF file is properly formatted and + contains activation, and not transport data, themselves. + + Arguments: + None + + Returns: + None + """ + # Temporarily reset stdout and stderr to the defaults + # so that arg messages (i.e. --help) print out to terminal + original_stdout = sys.stdout + original_stderr = sys.stderr + + try: + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + + parser = argparse.ArgumentParser() + + # Subparsers for 'I' and 'D' + subparsers = parser.add_subparsers(dest='method', required=True) + parser_I = subparsers.add_parser('I', help='Local file input.') + parser_I.add_argument('--local-path', + required=True, + help='Path to the local GENDF file.') + parser_I.add_argument('--isomer', '-m', + required=False, + default=None, + help = 'Isomeric state of the element.') + parser_D = subparsers.add_parser('D', help='Download TENDL/PENDF files.') + parser_D.add_argument('--element', '-e', + required=True, + help= 'Chemical symbol for selected element (i.e. Ti).') + parser_D.add_argument('--A', '-a', + required=True, + help='Mass number for selected isotope (i.e. 48). If the target is an isomer, "m" after the mass number (i.e. 48m).') + + args = parser.parse_args() + return args + + finally: + # Restore stdout and stderr to the logger + sys.stdout = original_stdout + sys.stderr = original_stderr def main(): + """ + Main method when run as a command line script. + """ # Load MT table # Data for MT table collected from # https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf - mt_table = GENDFtk.read_csv('mt_table.csv') + mt_dict = GENDFtk.read_csv('mt_table.csv') # Parse command line arguments - args = GENDFtk.fendl_args() + args = fendl_args() # Set conditionals for local file input if args.method == 'I': @@ -35,7 +94,7 @@ def main(): matb, MTs = GENDFtk.endf_specs(endf_path, 'endf') # Write out the GROUPR input file - card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_table) + card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_dict) GRPRtk.groupr_input_file_writer(card_deck, MTs) # Run NJOY with GROUPR to create a GENDF file for the isomer @@ -49,43 +108,14 @@ def main(): matb, MTs, file_obj = GENDFtk.endf_specs(gendf_path, 'gendf') # Clean up repository from unnecessary intermediate files from GROUPR run - groupr_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', 'tape31'] - for file in groupr_files: - subprocess.run(['rm', file]) - subprocess.run(['mv', 'output', 'njoy_output']) + GRPRtk.njoy_file_cleanup() logger.info(f"GENDF file path: {gendf_path}") logger.info(f"Parent KZA (pKZA): {pKZA}") logger.info(f'MTs: {MTs}') - # Initialize lists - cross_sections_by_MT = [] - emitted_particles_list = [] - dKZAs = [] - - # Extract data for each MT - for MT in MTs: - try: - sigma_list = GENDFtk.extract_cross_sections(file_obj, MT) - if not sigma_list: - continue - dKZA, emitted_particles = GENDFtk.reaction_calculator(MT, mt_table, pKZA) - if dKZA is None: - continue - cross_sections_by_MT.append(sigma_list) - dKZAs.append(dKZA) - emitted_particles_list.append(emitted_particles) - except Exception as e: - logger.error(f"Error processing MT {MT}: {e}") - continue - - # Store data in a Pandas DataFrame - gendf_data = pd.DataFrame({ - 'Parent KZA': [pKZA] * len(dKZAs), - 'Daughter KZA': dKZAs, - 'Emitted Particles': emitted_particles_list, - 'Cross Sections': cross_sections_by_MT - }) + # Extract and save data for each MT + gendf_data = GENDFtk.iterate_MTs(MTs, file_obj, mt_dict, pKZA) # Save to CSV gendf_data.to_csv('gendf_data.csv', index=False) diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 2d300ad..0cef4c6 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -1,74 +1,49 @@ # Import packages -import argparse import csv import sys from logging_config import logger, LoggerWriter import ENDFtk import contextlib import os +import pandas as pd -# Define an argument parser -def fendl_args(): - # Temporarily reset stdout and stderr to the defaults - # so that arg messages (i.e. --help) print out to terminal - original_stdout = sys.stdout - original_stderr = sys.stderr - - try: - sys.stdout = sys.__stdout__ - sys.stderr = sys.__stderr__ - - parser = argparse.ArgumentParser() - - # Subparsers for 'I' and 'D' - subparsers = parser.add_subparsers(dest='method', required=True) - parser_I = subparsers.add_parser('I', help='Local file input') - parser_I.add_argument('--local-path', - required=True, - help='Path to the local GENDF file.') - parser_I.add_argument('--isomer', '-m', - required=False, - default=None, - help = 'Isomeric state of the element') - parser_D = subparsers.add_parser('D', help='Download GENDF file') - parser_D.add_argument('--element', '-e', - required=True, - help= 'Chemical symbol for selected element (i.e. Ti).') - parser_D.add_argument('--A', '-a', - required=True, - help='Mass number for selected isotope (i.e. 48). If the target is an isomer, "m" after the mass number (i.e. 48m)') - - args = parser.parse_args() - return args - - finally: - # Restore stdout and stderr to the logger - sys.stdout = original_stdout - sys.stderr = original_stderr - -# Define a function to read CSV files def read_csv(csv_path): + """ + Read in the mt_table.csv file and store it in a dictionary. - # Initialize an empty dictionary - data_dict = {} - - # Open the CSV file - with open(csv_path, mode='r') as file: - # Create a CSV reader object - csv_reader = csv.DictReader(file) - - # Initialize the dictionary keys with empty lists - for column in csv_reader.fieldnames: - data_dict[column] = [] + Arguments: + csv_path (str): File path to mt_table.csv + This should be in the same repository. + + Returns: + data_dict (dict): Dictionary formatted data structure for mt_table.csv + """ + mt_dict = {} - # Populate the dictionary with the CSV data + with open(csv_path, 'r') as f: + csv_reader = csv.DictReader(f) + for row in csv_reader: - for column in csv_reader.fieldnames: - data_dict[column].append(row[column]) - return data_dict + mt_dict[row['MT']] = row['Reaction'] + + return mt_dict -# Extract pKZA data from a GENDF file def gendf_pkza_extract(gendf_path, M=None): + """ + Read in and parse the contents of a GENDF file to construct the parent KZA. + KZA values are defined as ZZAAAM, where ZZ is the isotope's atomic number, + AAA is the mass number, and M is the isomeric state (0 if non-isomeric). + + Arguments: + gendf_path (str): File path to the GENDF file being analyzed. + M (str, optional): Identifier of isomer, signified by the letter "M" at the end + of the mass number string. + Defaults to None and will be otherwise defined internally. + + Returns: + pKZA (str): Parent KZA identifier. + """ + with open(gendf_path, 'r') as f: first_line = f.readline() logger.info(f"First line of GENDF file: {first_line}") @@ -81,9 +56,21 @@ def gendf_pkza_extract(gendf_path, M=None): pKZA = Z.zfill(2) + A.zfill(3) + M return pKZA -# Define a function to redirect special ENDFtk output to logger @contextlib.contextmanager def redirect_ENDFtk_output(): + """ + Force ENDFtk-specific output to the logger instead of the terminal. + ENDFtk prompts a number of warnings, which would not otherwise redirect + to the logger without a more strong-armed method, and this function only + needs to be called when explicitly making use of the ENDFtk module. + + Arguments: + None + + Returns: + None + """ + # Redirect stdout and stderr to logger logger_stdout = LoggerWriter(logger.info) logger_stderr = LoggerWriter(logger.error) @@ -107,8 +94,22 @@ def redirect_ENDFtk_output(): sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ -# Define a function to extract MT and MAT data from an ENDF file def endf_specs(path, filetype): + """ + Extract the material ID and MT numbers from an ENDF or GENDF file. + + Arguments: + path (str): File path to the selected ENDF/GENDF file. + filetype (str): Either ENDF or GENDF (case insensitive) + + Returns: + matb (int): Unique material ID extracted from the file. + MTs (list): List of reaction types (MT's) present in the file. + file (ENDFtk.tree.File or None): ENDFtk file object containing the contents + for a specific material's cross-section data. + Only returns the file for GENDF filetypes. + """ + with redirect_ENDFtk_output(): # Read in ENDF tape using ENDFtk tape = ENDFtk.tree.Tape.from_file(path) @@ -133,8 +134,23 @@ def endf_specs(path, filetype): } return return_values.get(filetype) -# Extract cross-section data for a given MT def extract_cross_sections(file, MT): + """ + Parse through the contents of a GENDF file section to extract the cross-section + data for a specific reaction type (MT). + + Arguments: + file (ENDFtk.tree.File): ENDFtk file object containing a specific material's + cross-section data. + MT (int): Numerical identifier for the reaction type corresponding to the + file's sectional organization. + + Returns: + sigma_list (list): All of the cross-sections for a given reaction type + and material, listed as floating point numbers. If the run fails, + the function will just return an empty list. + """ + try: section = file.section(MT).content lines = section.split('\n')[2:-2:2] @@ -149,8 +165,23 @@ def extract_cross_sections(file, MT): logger.error(f"Error extracting cross sections for MT {MT}: {e}") return [] -# Count emitted particles def emitted_particle_count(particle, emitted_particle_string): + """ + Count emitted particles from a reaction given a target particle + and the particles produced in a neutron activation reaction. + + Arguments: + particle (str): Name of the target particle produced in the reaction. + Options include n, p, alpha, d, t, and 3He, corresponding to + neutrons, protons, alpha particles, deuterons, tritons, and helium-3 nuclides. + emitted_particle_string (str): Particle product(s) of the neutron activation, + of the format 'p' for a single proton for example or '2n' for two neutrons etc. + + Returns: + number_str (int or None): Count of the target particle present in the product. + For particles not present, returns None rather than 0. + """ + particle_index = emitted_particle_string.find(particle) number_str = '' for i in range(particle_index - 1, -1, -1): @@ -158,44 +189,179 @@ def emitted_particle_count(particle, emitted_particle_string): number_str = emitted_particle_string[i] + number_str else: break - return int(number_str) if number_str else 1 if particle in emitted_particle_string else None + + if number_str: + number_str = int(number_str) + elif particle in emitted_particle_string: + number_str = 1 + else: + number_str = None + + return number_str # Check for isomers def isomer_check(emitted_particle_string): + """ + Check the isomeric status of a neutron-activated nucleus. + By the formatting conventions of ENDF reaction types, + if the string of a reaction product ends with a digit, + that signifies the excitation state of the nucleus, so + this function looks for and stores these values. + + Arguments: + emitted_particle_string (str): Particle product(s) of the neutron activation. + + Returns: + isomeric_state (int): Nuclear excitation level of the activated nucleus. + For a nucleus in the ground state, isomeric_state = 0. + """ + last_digits_str = '' for char in reversed(emitted_particle_string): if char.isdigit(): last_digits_str = char + last_digits_str else: break - return int(last_digits_str) if last_digits_str else 0 + isomeric_value = int(last_digits_str) if last_digits_str else 0 + return isomeric_value + +# Nuclear transmutation function +def nuclear_decay(A, nucleus_protons, emission_tuples): + """ + Reconfigure nucleus for nuclear decay during neutron activation + by adding in a single neutron and then subtracting the total number + of neutrons and protons (if any) emitted during the reaction from + the nucleus. + + Arguments: + A (int): Mass number for target isotope. + nucleus_protons (int): Atomic number for the target isotope, + namely the number of protons in the nucleus. + emission_tuples (list): List of all emitted particles for a given reaction, + in the form of tuples with the particle count as the first value + and the particle symbol as the second value. For example, a reaction that + emits one neutron and one proton will have + emission_tuples = [(1, 'n'), (1, 'p')]. + + Returns: + nucleus_neutrons (int): Updated count of neutrons in the residual nucleus. + nucleus_protons (int): Updated count of protons in the residual nucleus. + """ + + nucleus_neutrons = A - nucleus_protons + 1 + for num_particle, particle in emission_tuples: + if particle == 'n': + nucleus_neutrons -= num_particle + if particle == 'p': + nucleus_protons -= num_particle + if particle == 'd': + nucleus_neutrons -= num_particle + nucleus_protons -= num_particle + if particle == 't': + nucleus_neutrons -= 2 * num_particle + nucleus_protons -= num_particle + if particle == '3He': + nucleus_neutrons -= num_particle + nucleus_protons -= 2 * num_particle + if particle == 'α': + nucleus_neutrons -= 2 * num_particle + nucleus_protons -= 2 * num_particle + + return nucleus_neutrons, nucleus_protons # Calculate reaction -def reaction_calculator(MT, mt_table, pKZA): +def reaction_calculator(MT, mt_dict, pKZA): + """ + Calculate the products of a neutron activation reaction given + the parent nuclide's KZA and the selected reaction type (MT). + This calculation determines both the residual nucleus, as described by the + daughter KZA value (dKZA) and the emitted particle(s). + + Arguments: + MT (int): Unique identifier for the reaction type corresponding to a specific + reaction tabulated in the mt_table dictionary. + mt_dict (dict): Reference dictionary containing reaction information + for each MT number pre-defined in the ENDF manual. + (https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf) + pKZA (int or str): Parent KZA identifier of the format ZZAAAM, + where ZZ is the isotope's atomic number, AAA is the mass number, + and M is the isomeric state (0 if non-isomeric). + + Returns: + dKZA (str): KZA of the residual (daughter) nucleus. + emitted_particles (str): Name of the particles emitted from the reaction, + given as a single string. If multiple particles are emitted from the reaction, + then the emitted_particles would be written in the form "np", corresponding + to the emission of a neutorn and a proton. + """ + try: + # Extract the parent nuclide properties from the pKZA nucleus_protons = int(str(pKZA)[:2]) A = int(str(pKZA)[2:5]) - index = mt_table['MT'].index(str(MT)) - reaction = mt_table['Reaction'][index] - emitted_particles = reaction.split(',')[1][:-1] - particle_types = ['n', 'd', 'alpha', 'p', 't', '3He'] - emission_tuples = [(emitted_particle_count(p, emitted_particles), p) for p in particle_types if emitted_particle_count(p, emitted_particles)] - nucleus_neutrons = A - nucleus_protons + 1 - for num_particle, particle in emission_tuples: - if particle == 'n': - nucleus_neutrons -= num_particle - if particle == 'p': - nucleus_protons -= num_particle + # Identify the particles emitted from the given reaction + reaction = mt_dict[str(MT)] + emitted_particles = reaction.split(',')[1][:-1] + + # Tally the counts of each emitted particle from the reaction + particle_types = ['n', 'd', 'α', 'p', 't', '3He', 'gamma'] + emission_tuples = [ + ( + emitted_particle_count(particle, emitted_particles), + particle + ) + for particle in particle_types + if emitted_particle_count(particle, emitted_particles) + ] + # Reconfigure nucleus to account for changing nucleon counts + nucleus_neutrons, nucleus_protons = nuclear_decay(A, + nucleus_protons, + emission_tuples) residual_A = str(nucleus_neutrons + nucleus_protons).zfill(3) nucleus_protons = str(nucleus_protons).zfill(2) M = isomer_check(emitted_particles) if M != 0: emitted_particles = emitted_particles[:-len(str(M))] - - dKZA = int(f"{str(nucleus_protons)}{residual_A}{str(M)}") + dKZA = f"{str(nucleus_protons)}{residual_A}{str(M)}" return dKZA, emitted_particles + except Exception as e: logger.error(f"Error in reaction calculation for MT {MT}: {e}") - return None, None \ No newline at end of file + return None, None + +def iterate_MTs(MTs, file_obj, mt_dict, pKZA): + # Initialize lists + cross_sections_by_MT = [] + emitted_particles_list = [] + dKZAs = [] + groups = [] + + # Extract data for each MT + for MT in MTs: + try: + sigma_list = extract_cross_sections(file_obj, MT) + if not sigma_list: + continue + dKZA, emitted_particles = reaction_calculator(MT, mt_dict, pKZA) + if dKZA is None: + continue + cross_sections_by_MT.append(sigma_list) + dKZAs.append(dKZA) + emitted_particles_list.append(emitted_particles) + groups.append(len(sigma_list)) + except Exception as e: + logger.error(f"Error processing MT {MT}: {e}") + continue + + # Store data in a Pandas DataFrame + gendf_data = pd.DataFrame({ + 'Parent KZA': [pKZA] * len(dKZAs), + 'Daughter KZA': dKZAs, + 'Emitted Particles': emitted_particles_list, + 'Non-Zero Groups' : groups, + 'Cross Sections': cross_sections_by_MT + }) + + return gendf_data diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 0f20f62..a6a6033 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -39,10 +39,28 @@ ] elements = dict(zip(elements, range(1, len(elements)+1))) -# Define a function to download the .tendl file given specific user inputs to for element and mass number def tendl_download(element, A, filetype, save_path = None): + """ + Download ENDF/PENDF files from the TENDL 2017 database for specific isotopes. + + Arguments: + element (str): Chemical symbol for element of interest (i.e. Ti). + A (str or int): Mass number for selected isotope (i.e. 48). + If the target is an isomer, "m" after the mass number (i.e. 48m), + so A must be input as a string. + filetype (str): Either "ENDF" or "PENDF" filetypes to be downloaded + (case insensitive). + save_path (str, optional): User-defined file path for the downloaded file. + Defaults to None and will be otherwise defined internally. + + Returns: + save_path (str): File path for the file downloaded file. + """ + # Ensure that A is properly formatted - A = str(A).zfill(3 + ('m' in A)) + A = str(A).zfill(3) + if 'm' in A: + A += 'm' # Define general URL format for files in the TENDL database tendl_gen_url = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' @@ -79,8 +97,22 @@ def tendl_download(element, A, filetype, save_path = None): return save_path -# Define a function to format GROUPR input cards def format_card(card_number, card_content, MTs): + """ + Format individual "cards" for the NJOY input cards to run with GROUPR. + Formatting and terminology based on the NJOY user manual: + (https://github.com/njoy/NJOY2016-manual/raw/master/njoy16.pdf) + + Arguments: + card_number (int): Individual identifier of "card" in input "deck". + card_content (list): Values to be written on each individual "card". + MTs (list): List of reaction types (MT's) present in the ENDF/PENDF files. + + Returns: + card_str (str): Concatenated string of an individual "card's" contents. + """ + + # Initialize string and concatenate contents of the card with it card_str = '' gen_str = ' ' + ' '.join(map(str, card_content)) if card_number == 9: @@ -91,8 +123,34 @@ def format_card(card_number, card_content, MTs): card_str += gen_str + '/\n' return card_str -# Define a function to create the GROUPR input file -def groupr_input_file_format(matb, MTs, element, A, mt_table): +def groupr_input_file_format(matb, MTs, element, A, mt_dict): + + """" + Format the input "deck" to run NJOY from individually formatted cards. + Most parameters are predefined as constants, as necessary for a GROUPR run + to write a group-wise file (GENDF) based on the ENDF and PENDF files + with a Vitamin-J 175 group structure and a Vitamin-E weighting function. + Other parameters are isotope specific, such as "matb", which corresponds + to the NJOY naming convention for the material ID, which are separately + extracted from the ENDF file to be referenced. + + Formatting and terminology based on the NJOY user manual: + (https://github.com/njoy/NJOY2016-manual/raw/master/njoy16.pdf) + + Arguments: + matb (int): Unique material ID extracted from the ENDF base file. + MTs (list): List of reaction types (MT's) present in the ENDF/PENDF files. + element (str): Chemical symbol for element of interest. + A (str or int): Mass number for selected isotope. + If the target is an isomer, "m" after the mass number, + so A must be input as a string. + mt_dict (dict): Reference dictionary containing reaction information + for each MT number pre-defined in the ENDF manual. + (https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf) + + Returns: + cards (dict): Dictionary containing each "card" identified by its card number. + """ cards = {} @@ -117,10 +175,9 @@ def groupr_input_file_format(matb, MTs, element, A, mt_table): # Set Card 9 mtd = MTs # sections to be processed cards[9] = [] - for mt in MTs: - index = mt_table['MT'].index(str(mt)) - mtname = mt_table['Reaction'][index] # description of section to be processed - card9_line = f'{MFD} {mt} "{mtname}"' + for MT in MTs: + mtname = mt_dict[str(MT)] # description of section to be processed + card9_line = f'{MFD} {MT} "{mtname}"' cards[9].append(card9_line) # Set Card 10 @@ -128,8 +185,18 @@ def groupr_input_file_format(matb, MTs, element, A, mt_table): return cards -# Define a function to write out the GROUPR input file def groupr_input_file_writer(cards, MTs): + """" + Write out the NJOY GROUPR input card by formatting each card line by line. + + Arguments: + cards (dict): Dictionary containing each "card" identified by its card number. + MTs (list): List of reaction types (MT's) present in the ENDF/PENDF files. + + Returns: + None + """ + # Write the input deck to the groupr.inp file with open('groupr.inp', 'w') as f: f.write('groupr\n') @@ -137,8 +204,22 @@ def groupr_input_file_writer(cards, MTs): f.write(format_card(card_num, card, MTs)) f.write(' 0/\nstop') -# Define a function to execute NJOY bash script def run_njoy(cards, element, A): + """ + Use subprocess to run NJOY given a pre-written input card to convert a pair + of ENDF and PENDF files to a GENDF file and save it locally. + + Arguments: + cards (dict): Dictionary containing each "card" identified by its card number. + element (str): Chemical symbol for element of interest. + A (str or int): Mass number for selected isotope. + If the target is an isomer, "m" after the mass number, + so A must be input as a string. + + Returns: + gendf_path (str): File path to the newly created GENDF file. + """ + # Define the input files INPUT = 'groupr.inp' OUTPUT = 'groupr.out' @@ -159,4 +240,22 @@ def run_njoy(cards, element, A): subprocess.run(['cp', 'tape31', gendf_path]) return gendf_path else: - logger.error(result.stderr) \ No newline at end of file + logger.error(result.stderr) + +def njoy_file_cleanup(output_path = 'njoy_ouput'): + """ + Clean up repository from unnecessary intermediate files from NJOY run. + + Arguments: + output_path (str): The path where the automated NJOY output will be saved. + Defaults to 'njoy_output'. + + Returns: + None + """ + + njoy_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', 'tape31'] + for file in njoy_files: + subprocess.run(['rm', file]) + subprocess.run(['mv', 'output', output_path]) + logger.info(f'Full NJOY output file readout can be found at {output_path}') \ No newline at end of file From 45df27f9afd9afa085ca6d4a650e9c656ec0dbba Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 1 Jul 2024 16:39:07 -0500 Subject: [PATCH 37/59] Improving readability --- src/DataLib/fendl32B_retrofit/fendl3_gendf.py | 18 +++--- src/DataLib/fendl32B_retrofit/gendf_tools.py | 16 ++---- src/DataLib/fendl32B_retrofit/groupr_tools.py | 56 +++++++++---------- 3 files changed, 41 insertions(+), 49 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py index 2f2d971..77a552c 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_gendf.py @@ -61,7 +61,7 @@ def fendl_args(): sys.stdout = original_stdout sys.stderr = original_stderr -def main(): +def fendl3_2b_retrofit(): """ Main method when run as a command line script. """ @@ -77,8 +77,8 @@ def main(): if args.method == 'I': gendf_path = args.local_path M = args.isomer - pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = M.upper()) - matb, MTs, file_obj = GENDFtk.endf_specs(gendf_path, 'gendf') + pKZA = GENDFtk.extract_gendf_pkza(gendf_path, M = M.upper()) + matb, MTs, file_obj = GENDFtk.extract_endf_specs(gendf_path, 'gendf') # Set conditionals for file download elif args.method == 'D': @@ -87,11 +87,11 @@ def main(): # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file # Download ENDF and PENDF files for the isomer - endf_path = GRPRtk.tendl_download(element, A, 'endf') - pendf_path = GRPRtk.tendl_download(element, A, 'pendf') + endf_path = GRPRtk.download_tendl(element, A, 'endf') + pendf_path = GRPRtk.download_tendl(element, A, 'pendf') # Extract necessary MT and MAT data from the ENDF file - matb, MTs = GENDFtk.endf_specs(endf_path, 'endf') + matb, MTs = GENDFtk.extract_endf_specs(endf_path, 'endf') # Write out the GROUPR input file card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_dict) @@ -102,10 +102,10 @@ def main(): # Save pKZA value M = 'M' if 'm' in A else None - pKZA = GENDFtk.gendf_pkza_extract(gendf_path, M = M) + pKZA = GENDFtk.extract_gendf_pkza(gendf_path, M = M) # Recalibrate MT list after GENDF conversion - matb, MTs, file_obj = GENDFtk.endf_specs(gendf_path, 'gendf') + matb, MTs, file_obj = GENDFtk.extract_endf_specs(gendf_path, 'gendf') # Clean up repository from unnecessary intermediate files from GROUPR run GRPRtk.njoy_file_cleanup() @@ -123,4 +123,4 @@ def main(): # Execute main() function based on arguments if __name__ == '__main__': - main() \ No newline at end of file + fendl3_2b_retrofit() \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/gendf_tools.py index 0cef4c6..14ae702 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/gendf_tools.py @@ -22,13 +22,12 @@ def read_csv(csv_path): with open(csv_path, 'r') as f: csv_reader = csv.DictReader(f) - for row in csv_reader: mt_dict[row['MT']] = row['Reaction'] return mt_dict -def gendf_pkza_extract(gendf_path, M=None): +def extract_gendf_pkza(gendf_path, M=None): """ Read in and parse the contents of a GENDF file to construct the parent KZA. KZA values are defined as ZZAAAM, where ZZ is the isotope's atomic number, @@ -94,7 +93,7 @@ def redirect_ENDFtk_output(): sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ -def endf_specs(path, filetype): +def extract_endf_specs(path, filetype): """ Extract the material ID and MT numbers from an ENDF or GENDF file. @@ -165,7 +164,7 @@ def extract_cross_sections(file, MT): logger.error(f"Error extracting cross sections for MT {MT}: {e}") return [] -def emitted_particle_count(particle, emitted_particle_string): +def count_emitted_particles(particle, emitted_particle_string): """ Count emitted particles from a reaction given a target particle and the particles produced in a neutron activation reaction. @@ -199,7 +198,6 @@ def emitted_particle_count(particle, emitted_particle_string): return number_str -# Check for isomers def isomer_check(emitted_particle_string): """ Check the isomeric status of a neutron-activated nucleus. @@ -225,7 +223,6 @@ def isomer_check(emitted_particle_string): isomeric_value = int(last_digits_str) if last_digits_str else 0 return isomeric_value -# Nuclear transmutation function def nuclear_decay(A, nucleus_protons, emission_tuples): """ Reconfigure nucleus for nuclear decay during neutron activation @@ -269,7 +266,6 @@ def nuclear_decay(A, nucleus_protons, emission_tuples): return nucleus_neutrons, nucleus_protons -# Calculate reaction def reaction_calculator(MT, mt_dict, pKZA): """ Calculate the products of a neutron activation reaction given @@ -308,11 +304,11 @@ def reaction_calculator(MT, mt_dict, pKZA): particle_types = ['n', 'd', 'α', 'p', 't', '3He', 'gamma'] emission_tuples = [ ( - emitted_particle_count(particle, emitted_particles), + count_emitted_particles(particle, emitted_particles), particle ) for particle in particle_types - if emitted_particle_count(particle, emitted_particles) + if count_emitted_particles(particle, emitted_particles) ] # Reconfigure nucleus to account for changing nucleon counts @@ -364,4 +360,4 @@ def iterate_MTs(MTs, file_obj, mt_dict, pKZA): 'Cross Sections': cross_sections_by_MT }) - return gendf_data + return gendf_data \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index a6a6033..72957e2 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -5,6 +5,7 @@ from logging_config import logger, LoggerWriter # Define constants +TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' NENDF = 20 # unit for endf tape NPEND = 21 # unit for pendf tape NGOUT1 = 0 # unit for input gout tape (default=0) @@ -39,7 +40,27 @@ ] elements = dict(zip(elements, range(1, len(elements)+1))) -def tendl_download(element, A, filetype, save_path = None): +def urllib_download(download_url, filetype): + """ + Use the urllib Request and Error packages to download the contents of + a webpage, if it exists + + Arguments: + download_url (str): Link to the webpage to download the desired file. + filetype (str): Either "ENDF" or "PENDF" filetypes to be downloaded + (case insensitive). + """ + + try: + with urllib.request.urlopen(download_url) as f: + temp_file = f.read().decode('utf-8') + except urllib.error.URLError as e: + if e.code == 404: + temp_file = None + raise FileNotFoundError(f'{filetype.upper()} file does not exist at {download_url}') + return temp_file + +def download_tendl(element, A, filetype, save_path = None): """ Download ENDF/PENDF files from the TENDL 2017 database for specific isotopes. @@ -62,9 +83,6 @@ def tendl_download(element, A, filetype, save_path = None): if 'm' in A: A += 'm' - # Define general URL format for files in the TENDL database - tendl_gen_url = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' - # Create a dictionary to generalize formatting for both ENDF and PENDF files file_handling = {'endf' : {'ext': 'tendl', 'tape_num': 20}, 'pendf' : {'ext': 'pendf', 'tape_num': 21}} @@ -72,24 +90,15 @@ def tendl_download(element, A, filetype, save_path = None): # Construct the filetype and isotope specific URL isotope_component = f'{element}/{element}{A}/lib/endf/n-{element}{A}.' ext = file_handling[filetype.lower()]['ext'] - download_url = tendl_gen_url + isotope_component + ext + download_url = TENDL_GEN_URL + isotope_component + ext logger.info(f'{filetype.upper()} URL: {download_url}') # Define a save path for the file if there is not one already specified if save_path is None: save_path = f'tape{file_handling[filetype.lower()]["tape_num"]}' - # Check if the file exists - try: - urllib.request.urlopen(download_url) - except urllib.error.URLError as e: - file_not_found_code = 404 - if str(file_not_found_code) in str(e): - raise FileNotFoundError(f'{filetype.upper()} file does not exist at {download_url}') - - # Download the file using urllib - with urllib.request.urlopen(download_url) as f: - temp_file = f.read().decode('utf-8') + # Conditionally download + temp_file = urllib_download(download_url, filetype) # Write out the file to the save_path with open(save_path, 'w') as f: @@ -153,34 +162,21 @@ def groupr_input_file_format(matb, MTs, element, A, mt_dict): """ cards = {} - - # Set Card 1 + cards[1] = [NENDF, NPEND, NGOUT1, NGOUT2] - - # Set Card 2 # matb -- (already defined) -- material to be processed cards[2] = [matb, IGN, IGG, IWT, LORD, NTEMP, NSIGZ, IPRINT] - - # Set Card 3 Z = str(elements[element]).zfill(2) title = f'"{Z}-{element}-{A} for TENDL 2017"' cards[3] = [title] - - # Set Card 4 cards[4] = [TEMP] - - # Set Card 5 cards[5] = [SIGZ] - - # Set Card 9 mtd = MTs # sections to be processed cards[9] = [] for MT in MTs: mtname = mt_dict[str(MT)] # description of section to be processed card9_line = f'{MFD} {MT} "{mtname}"' cards[9].append(card9_line) - - # Set Card 10 cards[10] = [MATD] return cards From b76634f975a3c5a16bd0f4725503706b5a1ca7ce Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 1 Jul 2024 17:46:18 -0500 Subject: [PATCH 38/59] Beginning high-level overhaul and restructuring --- ...{gendf_tools.py => activation_analysis.py} | 163 +----------- .../{fendl3_gendf.py => fendl3_retrofit.py} | 46 ++-- src/DataLib/fendl32B_retrofit/groupr_tools.py | 69 ----- .../fendl32B_retrofit/logging_config.py | 2 +- .../fendl32B_retrofit/tendl_preprocessing.py | 235 ++++++++++++++++++ 5 files changed, 255 insertions(+), 260 deletions(-) rename src/DataLib/fendl32B_retrofit/{gendf_tools.py => activation_analysis.py} (60%) rename src/DataLib/fendl32B_retrofit/{fendl3_gendf.py => fendl3_retrofit.py} (67%) create mode 100644 src/DataLib/fendl32B_retrofit/tendl_preprocessing.py diff --git a/src/DataLib/fendl32B_retrofit/gendf_tools.py b/src/DataLib/fendl32B_retrofit/activation_analysis.py similarity index 60% rename from src/DataLib/fendl32B_retrofit/gendf_tools.py rename to src/DataLib/fendl32B_retrofit/activation_analysis.py index 14ae702..2df6d32 100644 --- a/src/DataLib/fendl32B_retrofit/gendf_tools.py +++ b/src/DataLib/fendl32B_retrofit/activation_analysis.py @@ -1,168 +1,7 @@ # Import packages -import csv -import sys from logging_config import logger, LoggerWriter -import ENDFtk -import contextlib -import os import pandas as pd - -def read_csv(csv_path): - """ - Read in the mt_table.csv file and store it in a dictionary. - - Arguments: - csv_path (str): File path to mt_table.csv - This should be in the same repository. - - Returns: - data_dict (dict): Dictionary formatted data structure for mt_table.csv - """ - mt_dict = {} - - with open(csv_path, 'r') as f: - csv_reader = csv.DictReader(f) - for row in csv_reader: - mt_dict[row['MT']] = row['Reaction'] - - return mt_dict - -def extract_gendf_pkza(gendf_path, M=None): - """ - Read in and parse the contents of a GENDF file to construct the parent KZA. - KZA values are defined as ZZAAAM, where ZZ is the isotope's atomic number, - AAA is the mass number, and M is the isomeric state (0 if non-isomeric). - - Arguments: - gendf_path (str): File path to the GENDF file being analyzed. - M (str, optional): Identifier of isomer, signified by the letter "M" at the end - of the mass number string. - Defaults to None and will be otherwise defined internally. - - Returns: - pKZA (str): Parent KZA identifier. - """ - - with open(gendf_path, 'r') as f: - first_line = f.readline() - logger.info(f"First line of GENDF file: {first_line}") - Z, element, A = first_line.split('-')[:3] - A = A.split(' ')[0] - if 'm' in A: - m_index = A.find('m') - A = A[:m_index] - M = str(str(M).count('M')) or '0' - pKZA = Z.zfill(2) + A.zfill(3) + M - return pKZA - -@contextlib.contextmanager -def redirect_ENDFtk_output(): - """ - Force ENDFtk-specific output to the logger instead of the terminal. - ENDFtk prompts a number of warnings, which would not otherwise redirect - to the logger without a more strong-armed method, and this function only - needs to be called when explicitly making use of the ENDFtk module. - - Arguments: - None - - Returns: - None - """ - - # Redirect stdout and stderr to logger - logger_stdout = LoggerWriter(logger.info) - logger_stderr = LoggerWriter(logger.error) - - with open(os.devnull, 'w') as fnull: - old_stdout = os.dup(1) - old_stderr = os.dup(2) - # Suppress terminal stdout readout - os.dup2(fnull.fileno(), 1) - - sys.stdout = logger_stdout - sys.stderr = logger_stderr - try: - yield - finally: - os.dup2(old_stdout, 1) - os.dup2(old_stderr, 2) - os.close(old_stdout) - os.close(old_stderr) - # Reset stdout and stderr to default - sys.stdout = sys.__stdout__ - sys.stderr = sys.__stderr__ - -def extract_endf_specs(path, filetype): - """ - Extract the material ID and MT numbers from an ENDF or GENDF file. - - Arguments: - path (str): File path to the selected ENDF/GENDF file. - filetype (str): Either ENDF or GENDF (case insensitive) - - Returns: - matb (int): Unique material ID extracted from the file. - MTs (list): List of reaction types (MT's) present in the file. - file (ENDFtk.tree.File or None): ENDFtk file object containing the contents - for a specific material's cross-section data. - Only returns the file for GENDF filetypes. - """ - - with redirect_ENDFtk_output(): - # Read in ENDF tape using ENDFtk - tape = ENDFtk.tree.Tape.from_file(path) - - # Determine the material ID - mat_ids = tape.material_numbers - matb = mat_ids[0] - - # Set MF for cross sections - xs_MF = 3 - - # Extract out the file - file = tape.material(matb).file(xs_MF) - - # Extract the MT numbers that are present in the file - MTs = [MT.MT for MT in file.sections.to_list()] - - filetype = filetype.lower() - return_values = { - 'endf': (matb, MTs), - 'gendf': (matb, MTs, file) - } - return return_values.get(filetype) - -def extract_cross_sections(file, MT): - """ - Parse through the contents of a GENDF file section to extract the cross-section - data for a specific reaction type (MT). - - Arguments: - file (ENDFtk.tree.File): ENDFtk file object containing a specific material's - cross-section data. - MT (int): Numerical identifier for the reaction type corresponding to the - file's sectional organization. - - Returns: - sigma_list (list): All of the cross-sections for a given reaction type - and material, listed as floating point numbers. If the run fails, - the function will just return an empty list. - """ - - try: - section = file.section(MT).content - lines = section.split('\n')[2:-2:2] - sigma_list = [] - for line in lines: - sigma = line.split(' ')[2] - sign = 1 if '+' in sigma else -1 - mantissa, exponent = sigma.split('+') if sign == 1 else sigma.split('-') - sigma_list.append(float(mantissa) * (10 ** (sign * int(exponent)))) - return sigma_list - except Exception as e: - logger.error(f"Error extracting cross sections for MT {MT}: {e}") - return [] +from tendl_preprocessing import extract_cross_sections def count_emitted_particles(particle, emitted_particle_string): """ diff --git a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py similarity index 67% rename from src/DataLib/fendl32B_retrofit/fendl3_gendf.py rename to src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 77a552c..acdbbd7 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_gendf.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -1,12 +1,11 @@ # Import packages -import gendf_tools as GENDFtk -import pandas as pd +import tendl_preprocessing as tpp +import activation_analysis from logging_config import logger -import groupr_tools as GRPRtk +import groupr_tools import sys import argparse -# Define an argument parser def fendl_args(): """ Configure Argument Parser for the FENDL 3.2-b/TENDL 2017 retroffiting, @@ -65,57 +64,48 @@ def fendl3_2b_retrofit(): """ Main method when run as a command line script. """ - # Load MT table - # Data for MT table collected from - # https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf - mt_dict = GENDFtk.read_csv('mt_table.csv') - # Parse command line arguments args = fendl_args() + # Load MT table + mt_dict = tpp.read_csv('mt_table.csv') + # Set conditionals for local file input if args.method == 'I': gendf_path = args.local_path M = args.isomer - pKZA = GENDFtk.extract_gendf_pkza(gendf_path, M = M.upper()) - matb, MTs, file_obj = GENDFtk.extract_endf_specs(gendf_path, 'gendf') + pKZA = tpp.extract_gendf_pkza(gendf_path, M = M.upper()) + matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') # Set conditionals for file download elif args.method == 'D': element = args.element A = args.A - # Use NJOY GROUPR to convert the isomer's TENDL 2017 data to a GENDF file - # Download ENDF and PENDF files for the isomer - endf_path = GRPRtk.download_tendl(element, A, 'endf') - pendf_path = GRPRtk.download_tendl(element, A, 'pendf') + endf_path = tpp.download_tendl(element, A, 'endf') + pendf_path = tpp.download_tendl(element, A, 'pendf') - # Extract necessary MT and MAT data from the ENDF file - matb, MTs = GENDFtk.extract_endf_specs(endf_path, 'endf') + material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') - # Write out the GROUPR input file - card_deck = GRPRtk.groupr_input_file_format(matb, MTs, element, A, mt_dict) - GRPRtk.groupr_input_file_writer(card_deck, MTs) + card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, element, A, mt_dict) + groupr_tools.groupr_input_file_writer(card_deck, MTs) - # Run NJOY with GROUPR to create a GENDF file for the isomer - gendf_path = GRPRtk.run_njoy(card_deck, element, A) + gendf_path = groupr_tools.run_njoy(card_deck, element, A) - # Save pKZA value M = 'M' if 'm' in A else None - pKZA = GENDFtk.extract_gendf_pkza(gendf_path, M = M) + pKZA = tpp.extract_gendf_pkza(gendf_path, M = M) # Recalibrate MT list after GENDF conversion - matb, MTs, file_obj = GENDFtk.extract_endf_specs(gendf_path, 'gendf') + matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') - # Clean up repository from unnecessary intermediate files from GROUPR run - GRPRtk.njoy_file_cleanup() + groupr_tools.njoy_file_cleanup() logger.info(f"GENDF file path: {gendf_path}") logger.info(f"Parent KZA (pKZA): {pKZA}") logger.info(f'MTs: {MTs}') # Extract and save data for each MT - gendf_data = GENDFtk.iterate_MTs(MTs, file_obj, mt_dict, pKZA) + gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) # Save to CSV gendf_data.to_csv('gendf_data.csv', index=False) diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 72957e2..921f886 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -1,11 +1,8 @@ # Import packages -import urllib.error -import urllib.request import subprocess from logging_config import logger, LoggerWriter # Define constants -TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' NENDF = 20 # unit for endf tape NPEND = 21 # unit for pendf tape NGOUT1 = 0 # unit for input gout tape (default=0) @@ -40,72 +37,6 @@ ] elements = dict(zip(elements, range(1, len(elements)+1))) -def urllib_download(download_url, filetype): - """ - Use the urllib Request and Error packages to download the contents of - a webpage, if it exists - - Arguments: - download_url (str): Link to the webpage to download the desired file. - filetype (str): Either "ENDF" or "PENDF" filetypes to be downloaded - (case insensitive). - """ - - try: - with urllib.request.urlopen(download_url) as f: - temp_file = f.read().decode('utf-8') - except urllib.error.URLError as e: - if e.code == 404: - temp_file = None - raise FileNotFoundError(f'{filetype.upper()} file does not exist at {download_url}') - return temp_file - -def download_tendl(element, A, filetype, save_path = None): - """ - Download ENDF/PENDF files from the TENDL 2017 database for specific isotopes. - - Arguments: - element (str): Chemical symbol for element of interest (i.e. Ti). - A (str or int): Mass number for selected isotope (i.e. 48). - If the target is an isomer, "m" after the mass number (i.e. 48m), - so A must be input as a string. - filetype (str): Either "ENDF" or "PENDF" filetypes to be downloaded - (case insensitive). - save_path (str, optional): User-defined file path for the downloaded file. - Defaults to None and will be otherwise defined internally. - - Returns: - save_path (str): File path for the file downloaded file. - """ - - # Ensure that A is properly formatted - A = str(A).zfill(3) - if 'm' in A: - A += 'm' - - # Create a dictionary to generalize formatting for both ENDF and PENDF files - file_handling = {'endf' : {'ext': 'tendl', 'tape_num': 20}, - 'pendf' : {'ext': 'pendf', 'tape_num': 21}} - - # Construct the filetype and isotope specific URL - isotope_component = f'{element}/{element}{A}/lib/endf/n-{element}{A}.' - ext = file_handling[filetype.lower()]['ext'] - download_url = TENDL_GEN_URL + isotope_component + ext - logger.info(f'{filetype.upper()} URL: {download_url}') - - # Define a save path for the file if there is not one already specified - if save_path is None: - save_path = f'tape{file_handling[filetype.lower()]["tape_num"]}' - - # Conditionally download - temp_file = urllib_download(download_url, filetype) - - # Write out the file to the save_path - with open(save_path, 'w') as f: - f.write(temp_file) - - return save_path - def format_card(card_number, card_content, MTs): """ Format individual "cards" for the NJOY input cards to run with GROUPR. diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py index b3d62a3..a62c1ed 100644 --- a/src/DataLib/fendl32B_retrofit/logging_config.py +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -6,7 +6,7 @@ logging.basicConfig( level= 'INFO', format= '%(asctime)s - %(levelname)s - %(message)s', - filename= 'fendl3_gendf.log', + filename= 'fendl3_retrofit.log', filemode= 'w' ) diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py new file mode 100644 index 0000000..8d4251a --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -0,0 +1,235 @@ +# Import packages +import csv +import urllib.error +import urllib.request +import sys +from logging_config import logger, LoggerWriter +import ENDFtk +import contextlib +import os + +# Define constant(s) +TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' + +def read_csv(csv_path): + """ + Read in the mt_table.csv file and store it in a dictionary. + + Arguments: + csv_path (str): File path to mt_table.csv + This should be in the same repository. + + Returns: + data_dict (dict): Dictionary formatted data structure for mt_table.csv + """ + mt_dict = {} + + with open(csv_path, 'r') as f: + csv_reader = csv.DictReader(f) + for row in csv_reader: + mt_dict[row['MT']] = row['Reaction'] + + return mt_dict + +def urllib_download(download_url, filetype): + """ + Use the urllib Request and Error packages to download the contents of + a webpage, if it exists + + Arguments: + download_url (str): Link to the webpage to download the desired file. + filetype (str): Either "ENDF" or "PENDF" filetypes to be downloaded + (case insensitive). + """ + + try: + with urllib.request.urlopen(download_url) as f: + temp_file = f.read().decode('utf-8') + except urllib.error.URLError as e: + if e.code == 404: + temp_file = None + raise FileNotFoundError(f'{filetype.upper()} file does not exist at {download_url}') + return temp_file + +def download_tendl(element, A, filetype, save_path = None): + """ + Download ENDF/PENDF files from the TENDL 2017 database for specific isotopes. + + Arguments: + element (str): Chemical symbol for element of interest (i.e. Ti). + A (str or int): Mass number for selected isotope (i.e. 48). + If the target is an isomer, "m" after the mass number (i.e. 48m), + so A must be input as a string. + filetype (str): Either "ENDF" or "PENDF" filetypes to be downloaded + (case insensitive). + save_path (str, optional): User-defined file path for the downloaded file. + Defaults to None and will be otherwise defined internally. + + Returns: + save_path (str): File path for the file downloaded file. + """ + + # Ensure that A is properly formatted + A = str(A).zfill(3) + if 'm' in A: + A += 'm' + + # Create a dictionary to generalize formatting for both ENDF and PENDF files + file_handling = {'endf' : {'ext': 'tendl', 'tape_num': 20}, + 'pendf' : {'ext': 'pendf', 'tape_num': 21}} + + # Construct the filetype and isotope specific URL + isotope_component = f'{element}/{element}{A}/lib/endf/n-{element}{A}.' + ext = file_handling[filetype.lower()]['ext'] + download_url = TENDL_GEN_URL + isotope_component + ext + logger.info(f'{filetype.upper()} URL: {download_url}') + + # Define a save path for the file if there is not one already specified + if save_path is None: + save_path = f'tape{file_handling[filetype.lower()]["tape_num"]}' + + # Conditionally download + temp_file = urllib_download(download_url, filetype) + + # Write out the file to the save_path + with open(save_path, 'w') as f: + f.write(temp_file) + + return save_path + +def extract_gendf_pkza(gendf_path, M=None): + """ + Read in and parse the contents of a GENDF file to construct the parent KZA. + KZA values are defined as ZZAAAM, where ZZ is the isotope's atomic number, + AAA is the mass number, and M is the isomeric state (0 if non-isomeric). + + Arguments: + gendf_path (str): File path to the GENDF file being analyzed. + M (str, optional): Identifier of isomer, signified by the letter "M" at the end + of the mass number string. + Defaults to None and will be otherwise defined internally. + + Returns: + pKZA (str): Parent KZA identifier. + """ + + with open(gendf_path, 'r') as f: + first_line = f.readline() + logger.info(f"First line of GENDF file: {first_line}") + Z, element, A = first_line.split('-')[:3] + A = A.split(' ')[0] + if 'm' in A: + m_index = A.find('m') + A = A[:m_index] + M = str(str(M).count('M')) or '0' + pKZA = Z.zfill(2) + A.zfill(3) + M + return pKZA + +@contextlib.contextmanager +def redirect_ENDFtk_output(): + """ + Force ENDFtk-specific output to the logger instead of the terminal. + ENDFtk prompts a number of warnings, which would not otherwise redirect + to the logger without a more strong-armed method, and this function only + needs to be called when explicitly making use of the ENDFtk module. + + Arguments: + None + + Returns: + None + """ + + # Redirect stdout and stderr to logger + logger_stdout = LoggerWriter(logger.info) + logger_stderr = LoggerWriter(logger.error) + + with open(os.devnull, 'w') as fnull: + old_stdout = os.dup(1) + old_stderr = os.dup(2) + # Suppress terminal stdout readout + os.dup2(fnull.fileno(), 1) + + sys.stdout = logger_stdout + sys.stderr = logger_stderr + try: + yield + finally: + os.dup2(old_stdout, 1) + os.dup2(old_stderr, 2) + os.close(old_stdout) + os.close(old_stderr) + # Reset stdout and stderr to default + sys.stdout = sys.__stdout__ + sys.stderr = sys.__stderr__ + +def extract_endf_specs(path, filetype): + """ + Extract the material ID and MT numbers from an ENDF or GENDF file. + + Arguments: + path (str): File path to the selected ENDF/GENDF file. + filetype (str): Either ENDF or GENDF (case insensitive) + + Returns: + matb (int): Unique material ID extracted from the file. + MTs (list): List of reaction types (MT's) present in the file. + file (ENDFtk.tree.File or None): ENDFtk file object containing the contents + for a specific material's cross-section data. + Only returns the file for GENDF filetypes. + """ + + with redirect_ENDFtk_output(): + # Read in ENDF tape using ENDFtk + tape = ENDFtk.tree.Tape.from_file(path) + + # Determine the material ID + mat_ids = tape.material_numbers + matb = mat_ids[0] + + # Set MF for cross sections + xs_MF = 3 + + # Extract out the file + file = tape.material(matb).file(xs_MF) + + # Extract the MT numbers that are present in the file + MTs = [MT.MT for MT in file.sections.to_list()] + + filetype = filetype.lower() + return_values = { + 'endf': (matb, MTs), + 'gendf': (matb, MTs, file) + } + return return_values.get(filetype) + +def extract_cross_sections(file, MT): + """ + Parse through the contents of a GENDF file section to extract the cross-section + data for a specific reaction type (MT). + + Arguments: + file (ENDFtk.tree.File): ENDFtk file object containing a specific material's + cross-section data. + MT (int): Numerical identifier for the reaction type corresponding to the + file's sectional organization. + + Returns: + sigma_list (list): All of the cross-sections for a given reaction type + and material, listed as floating point numbers. If the run fails, + the function will just return an empty list. + """ + + try: + section = file.section(MT).content + lines = section.split('\n')[2:-2:2] + sigma_list = [] + for line in lines: + sigma = line.split(' ')[2] + sign = 1 if '+' in sigma else -1 + mantissa, exponent = sigma.split('+') if sign == 1 else sigma.split('-') + sigma_list.append(float(mantissa) * (10 ** (sign * int(exponent)))) + return sigma_list + except Exception as e: + logger.error(f"Error extracting cross sections for MT {MT}: {e}") + return [] \ No newline at end of file From 121e57a752bd9304bb7f7ecca04c90f388cc99fd Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 1 Jul 2024 17:54:21 -0500 Subject: [PATCH 39/59] Improving readability for nuclear_decay() --- src/DataLib/fendl32B_retrofit/activation_analysis.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/DataLib/fendl32B_retrofit/activation_analysis.py b/src/DataLib/fendl32B_retrofit/activation_analysis.py index 2df6d32..096aa58 100644 --- a/src/DataLib/fendl32B_retrofit/activation_analysis.py +++ b/src/DataLib/fendl32B_retrofit/activation_analysis.py @@ -83,22 +83,30 @@ def nuclear_decay(A, nucleus_protons, emission_tuples): nucleus_neutrons (int): Updated count of neutrons in the residual nucleus. nucleus_protons (int): Updated count of protons in the residual nucleus. """ - + + # Neutron capture nucleus_neutrons = A - nucleus_protons + 1 + for num_particle, particle in emission_tuples: + # Neutron emission if particle == 'n': nucleus_neutrons -= num_particle + # Proton emission if particle == 'p': nucleus_protons -= num_particle + # Deuteron (1 proton, 1 neutron) emission if particle == 'd': nucleus_neutrons -= num_particle nucleus_protons -= num_particle + # Triton (1 proton, 2 neutrons) emission if particle == 't': nucleus_neutrons -= 2 * num_particle nucleus_protons -= num_particle + # Helium-3 (2 protons, 1 neutron) emission if particle == '3He': nucleus_neutrons -= num_particle nucleus_protons -= 2 * num_particle + # Alpha particle (2 protons, 2 neutrons) emission if particle == 'α': nucleus_neutrons -= 2 * num_particle nucleus_protons -= 2 * num_particle From fb1b7960c967a94321bf9e28630f6557c0d133f1 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Mon, 1 Jul 2024 18:03:22 -0500 Subject: [PATCH 40/59] Increasing readability of argparser --- src/DataLib/fendl32B_retrofit/fendl3_retrofit.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index acdbbd7..4218dfc 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -50,7 +50,9 @@ def fendl_args(): help= 'Chemical symbol for selected element (i.e. Ti).') parser_D.add_argument('--A', '-a', required=True, - help='Mass number for selected isotope (i.e. 48). If the target is an isomer, "m" after the mass number (i.e. 48m).') + help= '''Mass number for selected isotope (i.e. 48). + If the target is an isomer, + "m" after the mass number (i.e. 48m).''') args = parser.parse_args() return args @@ -87,7 +89,8 @@ def fendl3_2b_retrofit(): material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') - card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, element, A, mt_dict) + card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, + element, A, mt_dict) groupr_tools.groupr_input_file_writer(card_deck, MTs) gendf_path = groupr_tools.run_njoy(card_deck, element, A) From c8e6cea6518eb478865dfee7fc283b4179858e39 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 9 Jul 2024 11:29:29 -0500 Subject: [PATCH 41/59] Major overhaul of modularity and including functionality for iterating over multiple isotopes. --- .../fendl32B_retrofit/fendl3_retrofit.py | 173 ++++++++++++++---- src/DataLib/fendl32B_retrofit/groupr_tools.py | 7 +- .../fendl32B_retrofit/tendl_preprocessing.py | 101 +++++++++- 3 files changed, 232 insertions(+), 49 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 4218dfc..6084a02 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -5,6 +5,9 @@ import groupr_tools import sys import argparse +import asyncio +import pandas as pd +import time def fendl_args(): """ @@ -21,8 +24,10 @@ def fendl_args(): None Returns: - None + args (argparse.Namespace): Argparse object that contains the user + specified arguments for executing the program. """ + # Temporarily reset stdout and stderr to the defaults # so that arg messages (i.e. --help) print out to terminal original_stdout = sys.stdout @@ -36,23 +41,34 @@ def fendl_args(): # Subparsers for 'I' and 'D' subparsers = parser.add_subparsers(dest='method', required=True) - parser_I = subparsers.add_parser('I', help='Local file input.') - parser_I.add_argument('--local-path', + parser_I = subparsers.add_parser('I', help='''Local file input. + Note: This option should only be selected + if the user already has properly formatted + GENDF activation files that have been + processed using the NJOY GROUPR module for + a Vitmain-J group structure with a Vitamin-E + weight function.''') + parser_I.add_argument('--path', '-p', required=True, help='Path to the local GENDF file.') parser_I.add_argument('--isomer', '-m', required=False, default=None, help = 'Isomeric state of the element.') - parser_D = subparsers.add_parser('D', help='Download TENDL/PENDF files.') + parser_D = subparsers.add_parser('D', help='''Download TENDL/PENDF files + from the TENDL 2017 neutron activation + database.''') parser_D.add_argument('--element', '-e', required=True, help= 'Chemical symbol for selected element (i.e. Ti).') parser_D.add_argument('--A', '-a', required=True, help= '''Mass number for selected isotope (i.e. 48). - If the target is an isomer, - "m" after the mass number (i.e. 48m).''') + If the target is an isomer, type + "m" after the mass number (i.e. 48m). + To automatically iterate over all of + the isotopes for the target element, + select "all" as the option for --A.''') args = parser.parse_args() return args @@ -62,56 +78,133 @@ def fendl_args(): sys.stdout = original_stdout sys.stderr = original_stderr -def fendl3_2b_retrofit(): +def initialize_dataframe(): """ - Main method when run as a command line script. + Initialize an empty Pandas DataFrame in which to store extracted data from + TENDL 2017 files. + + Arguments: + None + + Returns: + None + """ + return pd.DataFrame({ + 'Parent KZA' : [], + 'Daughter KZA' : [], + 'Emitted Particles' : [], + 'Non-Zero Groups' : [], + 'Cross Sections' : [] + }) + +def handle_local_file_input(args, mt_dict): """ + Method for extracting and analyzing data from preprocessed GENDF files + that the user already has saved locally. Called when the argument + for the main function -- fendl3_2b_retrofit() -- is specified as 'I'. - args = fendl_args() + Arguments: + args (argparse.Namespace): Argparse object that contains the user + specified arguments for executing the program. + mt_dict (dict): Dictionary formatted data structure for mt_table.csv + """ - # Load MT table - mt_dict = tpp.read_csv('mt_table.csv') + # Establish parameters from the user arguments + gendf_path = args.path + M = args.isomer.upper() if args.isomer else None - # Set conditionals for local file input - if args.method == 'I': - gendf_path = args.local_path - M = args.isomer - pKZA = tpp.extract_gendf_pkza(gendf_path, M = M.upper()) - matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') + # Extract fundamental data from the GENDF file + pKZA = tpp.extract_gendf_pkza(gendf_path, M = M) + matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') + + logger.info(f"GENDF file path: {gendf_path}") + logger.info(f"Parent KZA (pKZA): {pKZA}") + logger.info(f'MTs: {MTs}') + + # Extract and save specific data for each MT + gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) + return gendf_data + +def handle_download_file(args, mt_dict): + """ + Method for downloading ENDF/PENDF files from the TENDL 2017 database, + using the NJOY GROUPR module to convert these to a group-wise file, + and then extracting and analyzing the resultant data. Called when + the argument for the main function -- fendl3_2b_retrofit() -- + is specified as 'D'. - # Set conditionals for file download - elif args.method == 'D': - element = args.element - A = args.A + Arguments: + args (argparse.Namespace): Argparse object that contains the user + specified arguments for executing the program. + mt_dict (dict): Dictionary formatted data structure for mt_table.csv + """ - endf_path = tpp.download_tendl(element, A, 'endf') - pendf_path = tpp.download_tendl(element, A, 'pendf') + # Establish parameters from the user arguments + element = args.element + A = args.A + if A == 'all': + A_vals = asyncio.run(tpp.identify_tendl_isotopes(element)) + logger.info(f'All isotopes of {element} (by mass number): {A_vals}') + else: + A_vals = [A] - material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') - - card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, - element, A, mt_dict) - groupr_tools.groupr_input_file_writer(card_deck, MTs) + # Iterate over all isotopes/isomers, as specified by arguments + for A in A_vals: + try: + endf_path = tpp.download_tendl(element, A, 'endf') + pendf_path = tpp.download_tendl(element, A, 'pendf') - gendf_path = groupr_tools.run_njoy(card_deck, element, A) + material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') + + card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, + element, A, mt_dict) + groupr_tools.groupr_input_file_writer(card_deck, MTs) - M = 'M' if 'm' in A else None - pKZA = tpp.extract_gendf_pkza(gendf_path, M = M) + gendf_path = groupr_tools.run_njoy(card_deck, element, A) - # Recalibrate MT list after GENDF conversion - matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') + M = 'M' if 'm' in A else None + pKZA = tpp.extract_gendf_pkza(gendf_path, M = M) - groupr_tools.njoy_file_cleanup() + # Recalibrate MT list after GENDF conversion + matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') - logger.info(f"GENDF file path: {gendf_path}") - logger.info(f"Parent KZA (pKZA): {pKZA}") - logger.info(f'MTs: {MTs}') + groupr_tools.njoy_file_cleanup() - # Extract and save data for each MT - gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) + logger.info(f"GENDF file path: {gendf_path}") + logger.info(f"Parent KZA (pKZA): {pKZA}") + logger.info(f'MTs: {MTs}') + + # Extract and save specific data for each MT + gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) + + logger.info(f'Finished iterating for {element}-{A}') + except Exception as e: + logger.error(e) + + return gendf_data + +def fendl3_2b_retrofit(): + """ + Main method when run as a command line script. + """ + + # Initialize arguments, DataFrame to store data, and load in MT reference + args = fendl_args() + cumulative_df = initialize_dataframe() + mt_dict = tpp.load_csv('mt_table.csv') + + # Set conditionals for local file input + if args.method == 'I': + gendf_data = handle_local_file_input(args, mt_dict) + cumulative_df = pd.concat([cumulative_df, gendf_data], ignore_index=True) + + # Set conditionals for file download + elif args.method == 'D': + gendf_data = handle_download_file(args, mt_dict) + cumulative_df = pd.concat([cumulative_df, gendf_data], ignore_index=True) # Save to CSV - gendf_data.to_csv('gendf_data.csv', index=False) + cumulative_df.to_csv(f'gendf_data.csv', index=False) logger.info("Saved gendf_data.csv") # Execute main() function based on arguments diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 921f886..1ce63c5 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -163,7 +163,7 @@ def run_njoy(cards, element, A): title_index = output.stdout.find(title) logger.info(f'\n{output.stdout[:title_index + len(title)]}\n') - gendf_path = f'tendl_2017_{element}{A}.gendf' + gendf_path = f'./gendf_files/tendl_2017_{element}{A}.gendf' subprocess.run(['cp', 'tape31', gendf_path]) return gendf_path else: @@ -183,6 +183,11 @@ def njoy_file_cleanup(output_path = 'njoy_ouput'): njoy_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', 'tape31'] for file in njoy_files: + if file == 'groupr.out': + with open(file, 'r') as f: + groupr_out = f.read() + logger.info(groupr_out) + subprocess.run(['rm', file]) subprocess.run(['mv', 'output', output_path]) logger.info(f'Full NJOY output file readout can be found at {output_path}') \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index 8d4251a..2476685 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -1,5 +1,8 @@ # Import packages import csv +import aiohttp +import asyncio +import time import urllib.error import urllib.request import sys @@ -11,9 +14,9 @@ # Define constant(s) TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' -def read_csv(csv_path): +def load_csv(csv_path): """ - Read in the mt_table.csv file and store it in a dictionary. + Load in the mt_table.csv file and store it in a dictionary. Arguments: csv_path (str): File path to mt_table.csv @@ -31,6 +34,91 @@ def read_csv(csv_path): return mt_dict +async def fetch(session, url): + """ + Asynchronously fetch the content from the URL using the provided session. + + Arguments: + session (aiohttp.client.ClientSession): Aiohttp session to use for making + the request. + url (str): The URL from which to fetch content. + + Returns: + str or None: The content of the URL as a string if the request is successful, + signified by status code 200. Returns None if the request is unsuccessful + or an error occurs. + """ + + try: + async with session.get(url) as response: + if response.status == 200: + return await response.text() + else: + return None + except aiohttp.ClientError: + return None + +async def fetch_with_sem(semaphore, session, url): + """ + Use an asyncio semaphore to call the fetch() function for a specific URL. + + Arguments: + semaphore (asyncio.locks.Semaphore): A semaphore to limit the number of + concurrent requests. + session (aiohttp.client.ClientSession): Aiohttp session to use for making + the request. + url (str): The URL from which to fetch content. + + Returns: + str or None: The content of the URL as a string if the request is successful, + signified by status code 200. Returns None if the request is unsuccessful + or an error occurs. + """ + + async with semaphore: + return await fetch(session, url) + +async def identify_tendl_isotopes(element, concurrency_limit = 50): + """ + Use asyncio and aiohttp to iterate over all possible mass numbers for a given + element to identify all of its isotopes and isomers in the TENDL database. + + Arguments: + element (str): Chemical symbol for element of interest (i.e. Ti). + concurrency_limit (int, optional): The maximum number of concurrent + processes or sessions that can be handled at once. + """ + + A_vals = [] + semaphore = asyncio.Semaphore(concurrency_limit) + + async with aiohttp.ClientSession() as session: + tasks = [] + # Iterate over all mass numbers possible in the TENDL database + for A in range(1, 292): + # Iterate over each number twice to check for isomers + for i in range(2): + A_str = str(A).zfill(3) + if i == 1: + A_str += 'm' + + isotope_component = f'{element}/{element}{A_str}/lib/endf/n-{element}{A_str}.' + tendl_url = TENDL_GEN_URL + isotope_component + 'tendl' + pendf_url = TENDL_GEN_URL + isotope_component + 'pendf' + + tendl_task = fetch_with_sem(semaphore, session, tendl_url) + pendf_task = fetch_with_sem(semaphore, session, pendf_url) + + tasks.append((tendl_task, pendf_task, tendl_url, pendf_url, A_str)) + + results = await asyncio.gather(*[asyncio.gather(tendl_task, pendf_task) for tendl_task, pendf_task, _, _, _ in tasks]) + + for (tendl_result, pendf_result), (tendl_task, pendf_task, tendl_url, pendf_url, A_str) in zip(results, tasks): + if tendl_result and pendf_result: + A_vals.append(A_str) + + return A_vals + def urllib_download(download_url, filetype): """ Use the urllib Request and Error packages to download the contents of @@ -70,9 +158,7 @@ def download_tendl(element, A, filetype, save_path = None): """ # Ensure that A is properly formatted - A = str(A).zfill(3) - if 'm' in A: - A += 'm' + A = A.zfill(4) if 'm' in A else str(A).zfill(3) # Create a dictionary to generalize formatting for both ENDF and PENDF files file_handling = {'endf' : {'ext': 'tendl', 'tape_num': 20}, @@ -88,10 +174,9 @@ def download_tendl(element, A, filetype, save_path = None): if save_path is None: save_path = f'tape{file_handling[filetype.lower()]["tape_num"]}' - # Conditionally download + # Conditionally downloa temp_file = urllib_download(download_url, filetype) - - # Write out the file to the save_path + with open(save_path, 'w') as f: f.write(temp_file) From 4d99f41c687d911d69ffae822b50f43dcb8add6e Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 9 Jul 2024 11:35:40 -0500 Subject: [PATCH 42/59] Removing time package. --- .../gendf_files/tendl_2017_Be007.gendf | 3688 +++++++++++++++++ .../fendl32B_retrofit/tendl_preprocessing.py | 2 +- 2 files changed, 3689 insertions(+), 1 deletion(-) create mode 100644 src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf diff --git a/src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf b/src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf new file mode 100644 index 0000000..1e10731 --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf @@ -0,0 +1,3688 @@ +04-Be-007 for TENDL 2017 0 0 0 0 + 4.007000+3 6.956650+0 0 1 -1 1 419 1451 1 + 2.931600+2 0.000000+0 175 0 179 0 419 1451 2 + 0.000000+0 1.00000+10 1.000000-5 1.000000-1 4.139900-1 5.315800-1 419 1451 3 + 6.825600-1 8.764200-1 1.125400+0 1.445000+0 1.855400+0 2.382400+0 419 1451 4 + 3.059000+0 3.927900+0 5.043500+0 6.476000+0 8.315300+0 1.067700+1 419 1451 5 + 1.371000+1 1.760300+1 2.260300+1 2.902300+1 3.726700+1 4.785100+1 419 1451 6 + 6.144200+1 7.889300+1 1.013000+2 1.300700+2 1.670200+2 2.144500+2 419 1451 7 + 2.753600+2 3.535800+2 4.540000+2 5.829500+2 7.485200+2 9.611200+2 419 1451 8 + 1.234100+3 1.584600+3 2.034700+3 2.248700+3 2.485200+3 2.612600+3 419 1451 9 + 2.746500+3 3.035400+3 3.354600+3 3.707400+3 4.307400+3 5.530800+3 419 1451 10 + 7.101700+3 9.118800+3 1.059500+4 1.170900+4 1.503400+4 1.930500+4 419 1451 11 + 2.187500+4 2.357900+4 2.417600+4 2.478800+4 2.605800+4 2.700000+4 419 1451 12 + 2.850000+4 3.182800+4 3.430700+4 4.086800+4 4.630900+4 5.247500+4 419 1451 13 + 5.656200+4 6.737900+4 7.200000+4 7.950000+4 8.250000+4 8.651700+4 419 1451 14 + 9.803700+4 1.110900+5 1.167900+5 1.227700+5 1.290700+5 1.356900+5 419 1451 15 + 1.426400+5 1.499600+5 1.576400+5 1.657300+5 1.742200+5 1.831600+5 419 1451 16 + 1.925500+5 2.024200+5 2.128000+5 2.237100+5 2.351800+5 2.472400+5 419 1451 17 + 2.732400+5 2.872500+5 2.945200+5 2.972000+5 2.985000+5 3.019700+5 419 1451 18 + 3.337300+5 3.688300+5 3.877400+5 4.076200+5 4.504900+5 4.978700+5 419 1451 19 + 5.234000+5 5.502300+5 5.784400+5 6.081000+5 6.392800+5 6.720600+5 419 1451 20 + 7.065100+5 7.427400+5 7.808200+5 8.208500+5 8.629400+5 9.071800+5 419 1451 21 + 9.616400+5 1.002600+6 1.108000+6 1.164800+6 1.224600+6 1.287300+6 419 1451 22 + 1.353400+6 1.422700+6 1.495700+6 1.572400+6 1.653000+6 1.737700+6 419 1451 23 + 1.826800+6 1.920500+6 2.019000+6 2.122500+6 2.231300+6 2.306900+6 419 1451 24 + 2.345700+6 2.365300+6 2.385200+6 2.466000+6 2.592400+6 2.725300+6 419 1451 25 + 2.865000+6 3.011900+6 3.166400+6 3.328700+6 3.678800+6 4.065700+6 419 1451 26 + 4.493300+6 4.723700+6 4.965900+6 5.220500+6 5.488100+6 5.769500+6 419 1451 27 + 6.065300+6 6.376300+6 6.592400+6 6.703200+6 7.046900+6 7.408200+6 419 1451 28 + 7.788000+6 8.187300+6 8.607100+6 9.048400+6 9.512300+6 1.000000+7 419 1451 29 + 1.051300+7 1.105200+7 1.161800+7 1.221400+7 1.252300+7 1.284000+7 419 1451 30 + 1.349900+7 1.384000+7 1.419100+7 1.455000+7 1.491800+7 1.568300+7 419 1451 31 + 1.648700+7 1.690500+7 1.733300+7 1.964000+7 0.000000+0 419 1451 32 + 419 0 0 0 + 4.007000+3 0.000000+0 1 1 0 175 419 3 1 1 + 2.931600+2 0.000000+0 2 1 2 1 419 3 1 2 + 4.319880+4 2.209759+2 419 3 1 3 + 2.931600+2 0.000000+0 2 1 2 2 419 3 1 4 + 4.541334+3 1.662589+2 419 3 1 5 + 2.931600+2 0.000000+0 2 1 2 3 419 3 1 6 + 2.500159-1 1.440149+2 419 3 1 7 + 2.931600+2 0.000000+0 2 1 2 4 419 3 1 8 + 2.500007-1 1.412604+2 419 3 1 9 + 2.931600+2 0.000000+0 2 1 2 5 419 3 1 10 + 2.499990-1 1.388903+2 419 3 1 11 + 2.931600+2 0.000000+0 2 1 2 6 419 3 1 12 + 2.500524-1 1.367319+2 419 3 1 13 + 2.931600+2 0.000000+0 2 1 2 7 419 3 1 14 + 2.499748-1 1.348765+2 419 3 1 15 + 2.931600+2 0.000000+0 2 1 2 8 419 3 1 16 + 2.499951-1 1.332959+2 419 3 1 17 + 2.931600+2 0.000000+0 2 1 2 9 419 3 1 18 + 2.500121-1 1.318853+2 419 3 1 19 + 2.931600+2 0.000000+0 2 1 2 10 419 3 1 20 + 2.499837-1 1.306557+2 419 3 1 21 + 2.931600+2 0.000000+0 2 1 2 11 419 3 1 22 + 2.500210-1 1.296260+2 419 3 1 23 + 2.931600+2 0.000000+0 2 1 2 12 419 3 1 24 + 2.499994-1 1.286732+2 419 3 1 25 + 2.931600+2 0.000000+0 2 1 2 13 419 3 1 26 + 2.500068-1 1.279213+2 419 3 1 27 + 2.931600+2 0.000000+0 2 1 2 14 419 3 1 28 + 2.499983-1 1.273033+2 419 3 1 29 + 2.931600+2 0.000000+0 2 1 2 15 419 3 1 30 + 2.499987-1 1.267857+2 419 3 1 31 + 2.931600+2 0.000000+0 2 1 2 16 419 3 1 32 + 2.500377-1 1.264454+2 419 3 1 33 + 2.931600+2 0.000000+0 2 1 2 17 419 3 1 34 + 2.499480-1 1.262157+2 419 3 1 35 + 2.931600+2 0.000000+0 2 1 2 18 419 3 1 36 + 2.500174-1 1.261090+2 419 3 1 37 + 2.931600+2 0.000000+0 2 1 2 19 419 3 1 38 + 2.500101-1 1.262809+2 419 3 1 39 + 2.931600+2 0.000000+0 2 1 2 20 419 3 1 40 + 2.500236-1 1.265096+2 419 3 1 41 + 2.931600+2 0.000000+0 2 1 2 21 419 3 1 42 + 2.499879-1 1.270566+2 419 3 1 43 + 2.931600+2 0.000000+0 2 1 2 22 419 3 1 44 + 2.500057-1 1.279199+2 419 3 1 45 + 2.931600+2 0.000000+0 2 1 2 23 419 3 1 46 + 2.500030-1 1.290357+2 419 3 1 47 + 2.931600+2 0.000000+0 2 1 2 24 419 3 1 48 + 2.499980-1 1.307254+2 419 3 1 49 + 2.931600+2 0.000000+0 2 1 2 25 419 3 1 50 + 2.499905-1 1.330286+2 419 3 1 51 + 2.931600+2 0.000000+0 2 1 2 26 419 3 1 52 + 2.500449-1 1.360430+2 419 3 1 53 + 2.931600+2 0.000000+0 2 1 2 27 419 3 1 54 + 2.499671-1 1.403063+2 419 3 1 55 + 2.931600+2 0.000000+0 2 1 2 28 419 3 1 56 + 2.500068-1 1.459872+2 419 3 1 57 + 2.931600+2 0.000000+0 2 1 2 29 419 3 1 58 + 2.500344-1 1.538958+2 419 3 1 59 + 2.931600+2 0.000000+0 2 1 2 30 419 3 1 60 + 2.499914-1 1.650051+2 419 3 1 61 + 2.931600+2 0.000000+0 2 1 2 31 419 3 1 62 + 2.500083-1 1.809264+2 419 3 1 63 + 2.931600+2 0.000000+0 2 1 2 32 419 3 1 64 + 2.500005-1 2.045087+2 419 3 1 65 + 2.931600+2 0.000000+0 2 1 2 33 419 3 1 66 + 2.500053-1 2.410394+2 419 3 1 67 + 2.931600+2 0.000000+0 2 1 2 34 419 3 1 68 + 2.500019-1 3.007212+2 419 3 1 69 + 2.931600+2 0.000000+0 2 1 2 35 419 3 1 70 + 2.499939-1 4.038737+2 419 3 1 71 + 2.931600+2 0.000000+0 2 1 2 36 419 3 1 72 + 2.500204-1 5.800627+2 419 3 1 73 + 2.931600+2 0.000000+0 2 1 2 37 419 3 1 74 + 1.000054-1 7.369107+2 419 3 1 75 + 2.931600+2 0.000000+0 2 1 2 38 419 3 1 76 + 1.000023-1 8.017371+2 419 3 1 77 + 2.931600+2 0.000000+0 2 1 2 39 419 3 1 78 + 4.999344-2 8.126551+2 419 3 1 79 + 2.931600+2 0.000000+0 2 1 2 40 419 3 1 80 + 4.998216-2 7.924756+2 419 3 1 81 + 2.931600+2 0.000000+0 2 1 2 41 419 3 1 82 + 1.000173-1 7.219841+2 419 3 1 83 + 2.931600+2 0.000000+0 2 1 2 42 419 3 1 84 + 9.999092-2 5.875572+2 419 3 1 85 + 2.931600+2 0.000000+0 2 1 2 43 419 3 1 86 + 9.999970-2 4.450680+2 419 3 1 87 + 2.931600+2 0.000000+0 2 1 2 44 419 3 1 88 + 1.500058-1 3.011295+2 419 3 1 89 + 2.931600+2 0.000000+0 2 1 2 45 419 3 1 90 + 2.500017-1 1.611893+2 419 3 1 91 + 2.931600+2 0.000000+0 2 1 2 46 419 3 1 92 + 2.500055-1 7.679518+1 419 3 1 93 + 2.931600+2 0.000000+0 2 1 2 47 419 3 1 94 + 2.500077-1 4.002805+1 419 3 1 95 + 2.931600+2 0.000000+0 2 1 2 48 419 3 1 96 + 1.500462-1 2.493297+1 419 3 1 97 + 2.931600+2 0.000000+0 2 1 2 49 419 3 1 98 + 9.997709-2 1.906184+1 419 3 1 99 + 2.931600+2 0.000000+0 2 1 2 50 419 3 1 100 + 2.499603-1 1.363613+1 419 3 1 101 + 2.931600+2 0.000000+0 2 1 2 51 419 3 1 102 + 2.500535-1 8.738475+0 419 3 1 103 + 2.931600+2 0.000000+0 2 1 2 52 419 3 1 104 + 1.249822-1 6.447770+0 419 3 1 105 + 2.931600+2 0.000000+0 2 1 2 53 419 3 1 106 + 7.501319-2 5.562577+0 419 3 1 107 + 2.931600+2 0.000000+0 2 1 2 54 419 3 1 108 + 2.500427-2 5.183034+0 419 3 1 109 + 2.931600+2 0.000000+0 2 1 2 55 419 3 1 110 + 2.499960-2 5.007668+0 419 3 1 111 + 2.931600+2 0.000000+0 2 1 2 56 419 3 1 112 + 4.996592-2 4.763287+0 419 3 1 113 + 2.931600+2 0.000000+0 2 1 2 57 419 3 1 114 + 3.551254-2 4.501778+0 419 3 1 115 + 2.931600+2 0.000000+0 2 1 2 58 419 3 1 116 + 5.406805-2 4.251739+0 419 3 1 117 + 2.931600+2 0.000000+0 2 1 2 59 419 3 1 118 + 1.104440-1 3.843965+0 419 3 1 119 + 2.931600+2 0.000000+0 2 1 2 60 419 3 1 120 + 7.500417-2 3.448034+0 419 3 1 121 + 2.931600+2 0.000000+0 2 1 2 61 419 3 1 122 + 1.750007-1 3.014620+0 419 3 1 123 + 2.931600+2 0.000000+0 2 1 2 62 419 3 1 124 + 1.249909-1 2.609918+0 419 3 1 125 + 2.931600+2 0.000000+0 2 1 2 63 419 3 1 126 + 1.250025-1 2.359766+0 419 3 1 127 + 2.931600+2 0.000000+0 2 1 2 64 419 3 1 128 + 7.500159-2 2.199393+0 419 3 1 129 + 2.931600+2 0.000000+0 2 1 2 65 419 3 1 130 + 1.749988-1 2.046840+0 419 3 1 131 + 2.931600+2 0.000000+0 2 1 2 66 419 3 1 132 + 6.633374-2 1.934818+0 419 3 1 133 + 2.931600+2 0.000000+0 2 1 2 67 419 3 1 134 + 9.909245-2 1.878715+0 419 3 1 135 + 2.931600+2 0.000000+0 2 1 2 68 419 3 1 136 + 3.704183-2 1.842288+0 419 3 1 137 + 2.931600+2 0.000000+0 2 1 2 69 419 3 1 138 + 4.754332-2 1.826234+0 419 3 1 139 + 2.931600+2 0.000000+0 2 1 2 70 419 3 1 140 + 1.250060-1 1.808307+0 419 3 1 141 + 2.931600+2 0.000000+0 2 1 2 71 419 3 1 142 + 1.249977-1 1.810968+0 419 3 1 143 + 2.931600+2 0.000000+0 2 1 2 72 419 3 1 144 + 5.003748-2 1.836724+0 419 3 1 145 + 2.931600+2 0.000000+0 2 1 2 73 419 3 1 146 + 4.993605-2 1.859668+0 419 3 1 147 + 2.931600+2 0.000000+0 2 1 2 74 419 3 1 148 + 5.004291-2 1.886518+0 419 3 1 149 + 2.931600+2 0.000000+0 2 1 2 75 419 3 1 150 + 5.001871-2 1.919864+0 419 3 1 151 + 2.931600+2 0.000000+0 2 1 2 76 419 3 1 152 + 4.995191-2 1.966325+0 419 3 1 153 + 2.931600+2 0.000000+0 2 1 2 77 419 3 1 154 + 5.004533-2 2.024105+0 419 3 1 155 + 2.931600+2 0.000000+0 2 1 2 78 419 3 1 156 + 4.994617-2 2.090359+0 419 3 1 157 + 2.931600+2 0.000000+0 2 1 2 79 419 3 1 158 + 5.004675-2 2.164534+0 419 3 1 159 + 2.931600+2 0.000000+0 2 1 2 80 419 3 1 160 + 4.995962-2 2.250039+0 419 3 1 161 + 2.931600+2 0.000000+0 2 1 2 81 419 3 1 162 + 5.004203-2 2.355560+0 419 3 1 163 + 2.931600+2 0.000000+0 2 1 2 82 419 3 1 164 + 4.999656-2 2.481443+0 419 3 1 165 + 2.931600+2 0.000000+0 2 1 2 83 419 3 1 166 + 4.998960-2 2.623553+0 419 3 1 167 + 2.931600+2 0.000000+0 2 1 2 84 419 3 1 168 + 5.000872-2 2.704370+0 419 3 1 169 + 2.931600+2 0.000000+0 2 1 2 85 419 3 1 170 + 4.999855-2 2.778313+0 419 3 1 171 + 2.931600+2 0.000000+0 2 1 2 86 419 3 1 172 + 5.000133-2 2.901323+0 419 3 1 173 + 2.931600+2 0.000000+0 2 1 2 87 419 3 1 174 + 5.000904-2 3.101899+0 419 3 1 175 + 2.931600+2 0.000000+0 2 1 2 88 419 3 1 176 + 9.999235-2 3.721857+0 419 3 1 177 + 2.931600+2 0.000000+0 2 1 2 89 419 3 1 178 + 5.000304-2 5.008751+0 419 3 1 179 + 2.931600+2 0.000000+0 2 1 2 90 419 3 1 180 + 2.499432-2 6.187462+0 419 3 1 181 + 2.931600+2 0.000000+0 2 1 2 91 419 3 1 182 + 9.058439-3 6.892441+0 419 3 1 183 + 2.931600+2 0.000000+0 2 1 2 92 419 3 1 184 + 4.364640-3 7.205932+0 419 3 1 185 + 2.931600+2 0.000000+0 2 1 2 93 419 3 1 186 + 1.155782-2 7.594364+0 419 3 1 187 + 2.931600+2 0.000000+0 2 1 2 94 419 3 1 188 + 1.000058-1 1.004787+1 419 3 1 189 + 2.931600+2 0.000000+0 2 1 2 95 419 3 1 190 + 1.000048-1 8.854462+0 419 3 1 191 + 2.931600+2 0.000000+0 2 1 2 96 419 3 1 192 + 4.999968-2 5.874304+0 419 3 1 193 + 2.931600+2 0.000000+0 2 1 2 97 419 3 1 194 + 5.000103-2 4.676143+0 419 3 1 195 + 2.931600+2 0.000000+0 2 1 2 98 419 3 1 196 + 1.000018-1 3.667679+0 419 3 1 197 + 2.931600+2 0.000000+0 2 1 2 99 419 3 1 198 + 1.000045-1 2.947287+0 419 3 1 199 + 2.931600+2 0.000000+0 2 1 2 100 419 3 1 200 + 5.000770-2 2.073263+0 419 3 1 201 + 2.931600+2 0.000000+0 2 1 2 101 419 3 1 202 + 4.999119-2 1.989307+0 419 3 1 203 + 2.931600+2 0.000000+0 2 1 2 102 419 3 1 204 + 4.999926-2 1.962238+0 419 3 1 205 + 2.931600+2 0.000000+0 2 1 2 103 419 3 1 206 + 5.000533-2 1.933776+0 419 3 1 207 + 2.931600+2 0.000000+0 2 1 2 104 419 3 1 208 + 5.000403-2 1.907281+0 419 3 1 209 + 2.931600+2 0.000000+0 2 1 2 105 419 3 1 210 + 5.000589-2 1.883085+0 419 3 1 211 + 2.931600+2 0.000000+0 2 1 2 106 419 3 1 212 + 4.999055-2 1.857652+0 419 3 1 213 + 2.931600+2 0.000000+0 2 1 2 107 419 3 1 214 + 5.000941-2 1.833146+0 419 3 1 215 + 2.931600+2 0.000000+0 2 1 2 108 419 3 1 216 + 4.999941-2 1.810634+0 419 3 1 217 + 2.931600+2 0.000000+0 2 1 2 109 419 3 1 218 + 4.999644-2 1.787013+0 419 3 1 219 + 2.931600+2 0.000000+0 2 1 2 110 419 3 1 220 + 5.000559-2 1.764782+0 419 3 1 221 + 2.931600+2 0.000000+0 2 1 2 111 419 3 1 222 + 4.999654-2 1.743269+0 419 3 1 223 + 2.931600+2 0.000000+0 2 1 2 112 419 3 1 224 + 5.830020-2 1.719691+0 419 3 1 225 + 2.931600+2 0.000000+0 2 1 2 113 419 3 1 226 + 4.171240-2 1.699586+0 419 3 1 227 + 2.931600+2 0.000000+0 2 1 2 114 419 3 1 228 + 9.996149-2 1.671582+0 419 3 1 229 + 2.931600+2 0.000000+0 2 1 2 115 419 3 1 230 + 4.999362-2 1.643146+0 419 3 1 231 + 2.931600+2 0.000000+0 2 1 2 116 419 3 1 232 + 5.006558-2 1.623070+0 419 3 1 233 + 2.931600+2 0.000000+0 2 1 2 117 419 3 1 234 + 4.993355-2 1.605047+0 419 3 1 235 + 2.931600+2 0.000000+0 2 1 2 118 419 3 1 236 + 5.007376-2 1.588060+0 419 3 1 237 + 2.931600+2 0.000000+0 2 1 2 119 419 3 1 238 + 4.993734-2 1.570202+0 419 3 1 239 + 2.931600+2 0.000000+0 2 1 2 120 419 3 1 240 + 5.003856-2 1.553125+0 419 3 1 241 + 2.931600+2 0.000000+0 2 1 2 121 419 3 1 242 + 5.000960-2 1.537660+0 419 3 1 243 + 2.931600+2 0.000000+0 2 1 2 122 419 3 1 244 + 4.998946-2 1.521526+0 419 3 1 245 + 2.931600+2 0.000000+0 2 1 2 123 419 3 1 246 + 4.997139-2 1.507077+0 419 3 1 247 + 2.931600+2 0.000000+0 2 1 2 124 419 3 1 248 + 5.000422-2 1.492997+0 419 3 1 249 + 2.931600+2 0.000000+0 2 1 2 125 419 3 1 250 + 5.002048-2 1.479018+0 419 3 1 251 + 2.931600+2 0.000000+0 2 1 2 126 419 3 1 252 + 5.001758-2 1.466639+0 419 3 1 253 + 2.931600+2 0.000000+0 2 1 2 127 419 3 1 254 + 4.999299-2 1.454121+0 419 3 1 255 + 2.931600+2 0.000000+0 2 1 2 128 419 3 1 256 + 4.995837-2 1.443262+0 419 3 1 257 + 2.931600+2 0.000000+0 2 1 2 129 419 3 1 258 + 3.320467-2 1.434147+0 419 3 1 259 + 2.931600+2 0.000000+0 2 1 2 130 419 3 1 260 + 1.657101-2 1.429130+0 419 3 1 261 + 2.931600+2 0.000000+0 2 1 2 131 419 3 1 262 + 8.251205-3 1.426972+0 419 3 1 263 + 2.931600+2 0.000000+0 2 1 2 132 419 3 1 264 + 8.295947-3 1.425515+0 419 3 1 265 + 2.931600+2 0.000000+0 2 1 2 133 419 3 1 266 + 3.285067-2 1.421818+0 419 3 1 267 + 2.931600+2 0.000000+0 2 1 2 134 419 3 1 268 + 4.877513-2 1.414204+0 419 3 1 269 + 2.931600+2 0.000000+0 2 1 2 135 419 3 1 270 + 4.797896-2 1.406340+0 419 3 1 271 + 2.931600+2 0.000000+0 2 1 2 136 419 3 1 272 + 4.696325-2 1.400253+0 419 3 1 273 + 2.931600+2 0.000000+0 2 1 2 137 419 3 1 274 + 4.575857-2 1.393870+0 419 3 1 275 + 2.931600+2 0.000000+0 2 1 2 138 419 3 1 276 + 4.436130-2 1.389301+0 419 3 1 277 + 2.931600+2 0.000000+0 2 1 2 139 419 3 1 278 + 4.272235-2 1.386127+0 419 3 1 279 + 2.931600+2 0.000000+0 2 1 2 140 419 3 1 280 + 7.996083-2 1.381826+0 419 3 1 281 + 2.931600+2 0.000000+0 2 1 2 141 419 3 1 282 + 7.163087-2 1.380532+0 419 3 1 283 + 2.931600+2 0.000000+0 2 1 2 142 419 3 1 284 + 6.244718-2 1.383353+0 419 3 1 285 + 2.931600+2 0.000000+0 2 1 2 143 419 3 1 286 + 2.762652-2 1.386115+0 419 3 1 287 + 2.931600+2 0.000000+0 2 1 2 144 419 3 1 288 + 2.519994-2 1.389340+0 419 3 1 289 + 2.931600+2 0.000000+0 2 1 2 145 419 3 1 290 + 2.279025-2 1.392847+0 419 3 1 291 + 2.931600+2 0.000000+0 2 1 2 146 419 3 1 292 + 2.042470-2 1.395061+0 419 3 1 293 + 2.931600+2 0.000000+0 2 1 2 147 419 3 1 294 + 1.814121-2 1.400354+0 419 3 1 295 + 2.931600+2 0.000000+0 2 1 2 148 419 3 1 296 + 1.594743-2 1.403540+0 419 3 1 297 + 2.931600+2 0.000000+0 2 1 2 149 419 3 1 298 + 1.387617-2 1.406610+0 419 3 1 299 + 2.931600+2 0.000000+0 2 1 2 150 419 3 1 300 + 8.164822-3 1.409308+0 419 3 1 301 + 2.931600+2 0.000000+0 2 1 2 151 419 3 1 302 + 3.774230-3 1.410983+0 419 3 1 303 + 2.931600+2 0.000000+0 2 1 2 152 419 3 1 304 + 1.015727-2 1.412617+0 419 3 1 305 + 2.931600+2 0.000000+0 2 1 2 153 419 3 1 306 + 8.535865-3 1.413705+0 419 3 1 307 + 2.931600+2 0.000000+0 2 1 2 154 419 3 1 308 + 7.082296-3 1.413012+0 419 3 1 309 + 2.931600+2 0.000000+0 2 1 2 155 419 3 1 310 + 5.799002-3 1.411721+0 419 3 1 311 + 2.931600+2 0.000000+0 2 1 2 156 419 3 1 312 + 4.681642-3 1.408733+0 419 3 1 313 + 2.931600+2 0.000000+0 2 1 2 157 419 3 1 314 + 3.723745-3 1.405742+0 419 3 1 315 + 2.931600+2 0.000000+0 2 1 2 158 419 3 1 316 + 2.916072-3 1.400209+0 419 3 1 317 + 2.931600+2 0.000000+0 2 1 2 159 419 3 1 318 + 2.246747-3 1.394393+0 419 3 1 319 + 2.931600+2 0.000000+0 2 1 2 160 419 3 1 320 + 1.955084-3 1.386998+0 419 3 1 321 + 2.931600+2 0.000000+0 2 1 2 161 419 3 1 322 + 1.953959-3 1.377931+0 419 3 1 323 + 2.931600+2 0.000000+0 2 1 2 162 419 3 1 324 + 1.951830-3 1.366447+0 419 3 1 325 + 2.931600+2 0.000000+0 2 1 2 163 419 3 1 326 + 1.955070-3 1.344881+0 419 3 1 327 + 2.931600+2 0.000000+0 2 1 2 164 419 3 1 328 + 9.765906-4 1.319837+0 419 3 1 329 + 2.931600+2 0.000000+0 2 1 2 165 419 3 1 330 + 9.651867-3 1.293306+0 419 3 1 331 + 2.931600+2 0.000000+0 2 1 2 166 419 3 1 332 + 1.527244+0 1.250093+0 419 3 1 333 + 2.931600+2 0.000000+0 2 1 2 167 419 3 1 334 + 5.083487+0 1.224253+0 419 3 1 335 + 2.931600+2 0.000000+0 2 1 2 168 419 3 1 336 + 8.848247+0 1.200281+0 419 3 1 337 + 2.931600+2 0.000000+0 2 1 2 169 419 3 1 338 + 6.806587+0 1.176073+0 419 3 1 339 + 2.931600+2 0.000000+0 2 1 2 170 419 3 1 340 + 2.298726+0 1.152504+0 419 3 1 341 + 2.931600+2 0.000000+0 2 1 2 171 419 3 1 342 + 3.462235-1 1.127090+0 419 3 1 343 + 2.931600+2 0.000000+0 2 1 2 172 419 3 1 344 + 3.382274-3 1.085441+0 419 3 1 345 + 2.931600+2 0.000000+0 2 1 2 173 419 3 1 346 + 1.693835-3 1.142670+0 419 3 1 347 + 2.931600+2 0.000000+0 2 1 2 174 419 3 1 348 + 1.691494-3 1.170512+0 419 3 1 349 + 2.931600+2 0.000000+0 2 1 2 175 419 3 1 350 + 8.453596-3 1.121927+0 419 3 1 351 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 2 1 + 2.931600+2 0.000000+0 2 1 2 1 419 3 2 2 + 4.319880+4 1.298938+2 419 3 2 3 + 2.931600+2 0.000000+0 2 1 2 2 419 3 2 4 + 4.541350+3 1.225765+2 419 3 2 5 + 2.931600+2 0.000000+0 2 1 2 3 419 3 2 6 + 2.500160-1 1.213254+2 419 3 2 7 + 2.931600+2 0.000000+0 2 1 2 4 419 3 2 8 + 2.500008-1 1.212308+2 419 3 2 9 + 2.931600+2 0.000000+0 2 1 2 5 419 3 2 10 + 2.499990-1 1.211653+2 419 3 2 11 + 2.931600+2 0.000000+0 2 1 2 6 419 3 2 12 + 2.500525-1 1.211253+2 419 3 2 13 + 2.931600+2 0.000000+0 2 1 2 7 419 3 2 14 + 2.499749-1 1.210970+2 419 3 2 15 + 2.931600+2 0.000000+0 2 1 2 8 419 3 2 16 + 2.499950-1 1.210905+2 419 3 2 17 + 2.931600+2 0.000000+0 2 1 2 9 419 3 2 18 + 2.500122-1 1.211288+2 419 3 2 19 + 2.931600+2 0.000000+0 2 1 2 10 419 3 2 20 + 2.499838-1 1.211814+2 419 3 2 21 + 2.931600+2 0.000000+0 2 1 2 11 419 3 2 22 + 2.500210-1 1.212490+2 419 3 2 23 + 2.931600+2 0.000000+0 2 1 2 12 419 3 2 24 + 2.499995-1 1.213358+2 419 3 2 25 + 2.931600+2 0.000000+0 2 1 2 13 419 3 2 26 + 2.500069-1 1.214473+2 419 3 2 27 + 2.931600+2 0.000000+0 2 1 2 14 419 3 2 28 + 2.499983-1 1.215904+2 419 3 2 29 + 2.931600+2 0.000000+0 2 1 2 15 419 3 2 30 + 2.499988-1 1.217741+2 419 3 2 31 + 2.931600+2 0.000000+0 2 1 2 16 419 3 2 32 + 2.500377-1 1.220101+2 419 3 2 33 + 2.931600+2 0.000000+0 2 1 2 17 419 3 2 34 + 2.499480-1 1.223130+2 419 3 2 35 + 2.931600+2 0.000000+0 2 1 2 18 419 3 2 36 + 2.500174-1 1.227020+2 419 3 2 37 + 2.931600+2 0.000000+0 2 1 2 19 419 3 2 38 + 2.500101-1 1.232015+2 419 3 2 39 + 2.931600+2 0.000000+0 2 1 2 20 419 3 2 40 + 2.500237-1 1.238429+2 419 3 2 41 + 2.931600+2 0.000000+0 2 1 2 21 419 3 2 42 + 2.499879-1 1.246664+2 419 3 2 43 + 2.931600+2 0.000000+0 2 1 2 22 419 3 2 44 + 2.500057-1 1.257238+2 419 3 2 45 + 2.931600+2 0.000000+0 2 1 2 23 419 3 2 46 + 2.500029-1 1.271554+2 419 3 2 47 + 2.931600+2 0.000000+0 2 1 2 24 419 3 2 48 + 2.499980-1 1.290936+2 419 3 2 49 + 2.931600+2 0.000000+0 2 1 2 25 419 3 2 50 + 2.499905-1 1.315826+2 419 3 2 51 + 2.931600+2 0.000000+0 2 1 2 26 419 3 2 52 + 2.500449-1 1.347794+2 419 3 2 53 + 2.931600+2 0.000000+0 2 1 2 27 419 3 2 54 + 2.499671-1 1.391451+2 419 3 2 55 + 2.931600+2 0.000000+0 2 1 2 28 419 3 2 56 + 2.500067-1 1.449937+2 419 3 2 57 + 2.931600+2 0.000000+0 2 1 2 29 419 3 2 58 + 2.500345-1 1.530291+2 419 3 2 59 + 2.931600+2 0.000000+0 2 1 2 30 419 3 2 60 + 2.499915-1 1.641948+2 419 3 2 61 + 2.931600+2 0.000000+0 2 1 2 31 419 3 2 62 + 2.500082-1 1.802002+2 419 3 2 63 + 2.931600+2 0.000000+0 2 1 2 32 419 3 2 64 + 2.500005-1 2.038745+2 419 3 2 65 + 2.931600+2 0.000000+0 2 1 2 33 419 3 2 66 + 2.500053-1 2.404900+2 419 3 2 67 + 2.931600+2 0.000000+0 2 1 2 34 419 3 2 68 + 2.500019-1 3.002681+2 419 3 2 69 + 2.931600+2 0.000000+0 2 1 2 35 419 3 2 70 + 2.499940-1 4.034129+2 419 3 2 71 + 2.931600+2 0.000000+0 2 1 2 36 419 3 2 72 + 2.500204-1 5.796318+2 419 3 2 73 + 2.931600+2 0.000000+0 2 1 2 37 419 3 2 74 + 1.000054-1 7.365786+2 419 3 2 75 + 2.931600+2 0.000000+0 2 1 2 38 419 3 2 76 + 1.000023-1 8.014007+2 419 3 2 77 + 2.931600+2 0.000000+0 2 1 2 39 419 3 2 78 + 4.999344-2 8.123385+2 419 3 2 79 + 2.931600+2 0.000000+0 2 1 2 40 419 3 2 80 + 4.998216-2 7.921760+2 419 3 2 81 + 2.931600+2 0.000000+0 2 1 2 41 419 3 2 82 + 1.000173-1 7.216956+2 419 3 2 83 + 2.931600+2 0.000000+0 2 1 2 42 419 3 2 84 + 9.999092-2 5.872816+2 419 3 2 85 + 2.931600+2 0.000000+0 2 1 2 43 419 3 2 86 + 9.999970-2 4.448048+2 419 3 2 87 + 2.931600+2 0.000000+0 2 1 2 44 419 3 2 88 + 1.500058-1 3.008833+2 419 3 2 89 + 2.931600+2 0.000000+0 2 1 2 45 419 3 2 90 + 2.500017-1 1.609656+2 419 3 2 91 + 2.931600+2 0.000000+0 2 1 2 46 419 3 2 92 + 2.500056-1 7.659960+1 419 3 2 93 + 2.931600+2 0.000000+0 2 1 2 47 419 3 2 94 + 2.500077-1 3.985085+1 419 3 2 95 + 2.931600+2 0.000000+0 2 1 2 48 419 3 2 96 + 1.500463-1 2.477638+1 419 3 2 97 + 2.931600+2 0.000000+0 2 1 2 49 419 3 2 98 + 9.997709-2 1.891487+1 419 3 2 99 + 2.931600+2 0.000000+0 2 1 2 50 419 3 2 100 + 2.499602-1 1.350124+1 419 3 2 101 + 2.931600+2 0.000000+0 2 1 2 51 419 3 2 102 + 2.500535-1 8.618856+0 419 3 2 103 + 2.931600+2 0.000000+0 2 1 2 52 419 3 2 104 + 1.249822-1 6.339729+0 419 3 2 105 + 2.931600+2 0.000000+0 2 1 2 53 419 3 2 106 + 7.501319-2 5.459695+0 419 3 2 107 + 2.931600+2 0.000000+0 2 1 2 54 419 3 2 108 + 2.500427-2 5.082779+0 419 3 2 109 + 2.931600+2 0.000000+0 2 1 2 55 419 3 2 110 + 2.499960-2 4.908599+0 419 3 2 111 + 2.931600+2 0.000000+0 2 1 2 56 419 3 2 112 + 4.996592-2 4.665877+0 419 3 2 113 + 2.931600+2 0.000000+0 2 1 2 57 419 3 2 114 + 3.551254-2 4.406326+0 419 3 2 115 + 2.931600+2 0.000000+0 2 1 2 58 419 3 2 116 + 5.406805-2 4.158437+0 419 3 2 117 + 2.931600+2 0.000000+0 2 1 2 59 419 3 2 118 + 1.104440-1 3.754591+0 419 3 2 119 + 2.931600+2 0.000000+0 2 1 2 60 419 3 2 120 + 7.500417-2 3.362371+0 419 3 2 121 + 2.931600+2 0.000000+0 2 1 2 61 419 3 2 122 + 1.750007-1 2.933962+0 419 3 2 123 + 2.931600+2 0.000000+0 2 1 2 62 419 3 2 124 + 1.249909-1 2.519273+0 419 3 2 125 + 2.931600+2 0.000000+0 2 1 2 63 419 3 2 126 + 1.250024-1 2.247347+0 419 3 2 127 + 2.931600+2 0.000000+0 2 1 2 64 419 3 2 128 + 7.500166-2 2.065500+0 419 3 2 129 + 2.931600+2 0.000000+0 2 1 2 65 419 3 2 130 + 1.749987-1 1.878880+0 419 3 2 131 + 2.931600+2 0.000000+0 2 1 2 66 419 3 2 132 + 6.633372-2 1.726290+0 419 3 2 133 + 2.931600+2 0.000000+0 2 1 2 67 419 3 2 134 + 9.909244-2 1.638692+0 419 3 2 135 + 2.931600+2 0.000000+0 2 1 2 68 419 3 2 136 + 3.704181-2 1.573531+0 419 3 2 137 + 2.931600+2 0.000000+0 2 1 2 69 419 3 2 138 + 4.754338-2 1.537651+0 419 3 2 139 + 2.931600+2 0.000000+0 2 1 2 70 419 3 2 140 + 1.250059-1 1.470691+0 419 3 2 141 + 2.931600+2 0.000000+0 2 1 2 71 419 3 2 142 + 1.249976-1 1.389372+0 419 3 2 143 + 2.931600+2 0.000000+0 2 1 2 72 419 3 2 144 + 5.003758-2 1.342621+0 419 3 2 145 + 2.931600+2 0.000000+0 2 1 2 73 419 3 2 146 + 4.993603-2 1.319913+0 419 3 2 147 + 2.931600+2 0.000000+0 2 1 2 74 419 3 2 148 + 5.004292-2 1.300570+0 419 3 2 149 + 2.931600+2 0.000000+0 2 1 2 75 419 3 2 150 + 5.001879-2 1.284066+0 419 3 2 151 + 2.931600+2 0.000000+0 2 1 2 76 419 3 2 152 + 4.995182-2 1.270704+0 419 3 2 153 + 2.931600+2 0.000000+0 2 1 2 77 419 3 2 154 + 5.004532-2 1.261413+0 419 3 2 155 + 2.931600+2 0.000000+0 2 1 2 78 419 3 2 156 + 4.994617-2 1.256684+0 419 3 2 157 + 2.931600+2 0.000000+0 2 1 2 79 419 3 2 158 + 5.004681-2 1.256987+0 419 3 2 159 + 2.931600+2 0.000000+0 2 1 2 80 419 3 2 160 + 4.995964-2 1.263599+0 419 3 2 161 + 2.931600+2 0.000000+0 2 1 2 81 419 3 2 162 + 5.004196-2 1.278884+0 419 3 2 163 + 2.931600+2 0.000000+0 2 1 2 82 419 3 2 164 + 4.999656-2 1.304902+0 419 3 2 165 + 2.931600+2 0.000000+0 2 1 2 83 419 3 2 166 + 4.998963-2 1.346342+0 419 3 2 167 + 2.931600+2 0.000000+0 2 1 2 84 419 3 2 168 + 5.000875-2 1.409586+0 419 3 2 169 + 2.931600+2 0.000000+0 2 1 2 85 419 3 2 170 + 4.999850-2 1.504648+0 419 3 2 171 + 2.931600+2 0.000000+0 2 1 2 86 419 3 2 172 + 5.000131-2 1.649445+0 419 3 2 173 + 2.931600+2 0.000000+0 2 1 2 87 419 3 2 174 + 5.000890-2 1.873790+0 419 3 2 175 + 2.931600+2 0.000000+0 2 1 2 88 419 3 2 176 + 9.999238-2 2.531522+0 419 3 2 177 + 2.931600+2 0.000000+0 2 1 2 89 419 3 2 178 + 5.000289-2 3.857723+0 419 3 2 179 + 2.931600+2 0.000000+0 2 1 2 90 419 3 2 180 + 2.499423-2 5.059027+0 419 3 2 181 + 2.931600+2 0.000000+0 2 1 2 91 419 3 2 182 + 9.058439-3 5.773122+0 419 3 2 183 + 2.931600+2 0.000000+0 2 1 2 92 419 3 2 184 + 4.364640-3 6.087790+0 419 3 2 185 + 2.931600+2 0.000000+0 2 1 2 93 419 3 2 186 + 1.155790-2 6.481800+0 419 3 2 187 + 2.931600+2 0.000000+0 2 1 2 94 419 3 2 188 + 1.000057-1 8.957675+0 419 3 2 189 + 2.931600+2 0.000000+0 2 1 2 95 419 3 2 190 + 1.000047-1 7.802117+0 419 3 2 191 + 2.931600+2 0.000000+0 2 1 2 96 419 3 2 192 + 4.999968-2 4.854294+0 419 3 2 193 + 2.931600+2 0.000000+0 2 1 2 97 419 3 2 194 + 5.000093-2 3.677059+0 419 3 2 195 + 2.931600+2 0.000000+0 2 1 2 98 419 3 2 196 + 1.000019-1 2.698657+0 419 3 2 197 + 2.931600+2 0.000000+0 2 1 2 99 419 3 2 198 + 1.000046-1 2.018558+0 419 3 2 199 + 2.931600+2 0.000000+0 2 1 2 100 419 3 2 200 + 5.000770-2 1.160719+0 419 3 2 201 + 2.931600+2 0.000000+0 2 1 2 101 419 3 2 202 + 4.999119-2 1.089395+0 419 3 2 203 + 2.931600+2 0.000000+0 2 1 2 102 419 3 2 204 + 4.999926-2 1.076843+0 419 3 2 205 + 2.931600+2 0.000000+0 2 1 2 103 419 3 2 206 + 5.000523-2 1.063683+0 419 3 2 207 + 2.931600+2 0.000000+0 2 1 2 104 419 3 2 208 + 5.000401-2 1.052770+0 419 3 2 209 + 2.931600+2 0.000000+0 2 1 2 105 419 3 2 210 + 5.000589-2 1.043148+0 419 3 2 211 + 2.931600+2 0.000000+0 2 1 2 106 419 3 2 212 + 4.999055-2 1.033033+0 419 3 2 213 + 2.931600+2 0.000000+0 2 1 2 107 419 3 2 214 + 5.000946-2 1.023219+0 419 3 2 215 + 2.931600+2 0.000000+0 2 1 2 108 419 3 2 216 + 4.999941-2 1.014843+0 419 3 2 217 + 2.931600+2 0.000000+0 2 1 2 109 419 3 2 218 + 4.999655-2 1.006118+0 419 3 2 219 + 2.931600+2 0.000000+0 2 1 2 110 419 3 2 220 + 5.000556-2 9.976508-1 419 3 2 221 + 2.931600+2 0.000000+0 2 1 2 111 419 3 2 222 + 4.999654-2 9.901614-1 419 3 2 223 + 2.931600+2 0.000000+0 2 1 2 112 419 3 2 224 + 5.830013-2 9.817024-1 419 3 2 225 + 2.931600+2 0.000000+0 2 1 2 113 419 3 2 226 + 4.171240-2 9.747053-1 419 3 2 227 + 2.931600+2 0.000000+0 2 1 2 114 419 3 2 228 + 9.996152-2 9.653432-1 419 3 2 229 + 2.931600+2 0.000000+0 2 1 2 115 419 3 2 230 + 4.999362-2 9.560016-1 419 3 2 231 + 2.931600+2 0.000000+0 2 1 2 116 419 3 2 232 + 5.006568-2 9.496818-1 419 3 2 233 + 2.931600+2 0.000000+0 2 1 2 117 419 3 2 234 + 4.993348-2 9.437232-1 419 3 2 235 + 2.931600+2 0.000000+0 2 1 2 118 419 3 2 236 + 5.007376-2 9.386860-1 419 3 2 237 + 2.931600+2 0.000000+0 2 1 2 119 419 3 2 238 + 4.993734-2 9.334141-1 419 3 2 239 + 2.931600+2 0.000000+0 2 1 2 120 419 3 2 240 + 5.003862-2 9.281934-1 419 3 2 241 + 2.931600+2 0.000000+0 2 1 2 121 419 3 2 242 + 5.000960-2 9.239429-1 419 3 2 243 + 2.931600+2 0.000000+0 2 1 2 122 419 3 2 244 + 4.998952-2 9.195999-1 419 3 2 245 + 2.931600+2 0.000000+0 2 1 2 123 419 3 2 246 + 4.997129-2 9.153568-1 419 3 2 247 + 2.931600+2 0.000000+0 2 1 2 124 419 3 2 248 + 5.000422-2 9.119440-1 419 3 2 249 + 2.931600+2 0.000000+0 2 1 2 125 419 3 2 250 + 5.002058-2 9.084348-1 419 3 2 251 + 2.931600+2 0.000000+0 2 1 2 126 419 3 2 252 + 5.001758-2 9.047757-1 419 3 2 253 + 2.931600+2 0.000000+0 2 1 2 127 419 3 2 254 + 4.999307-2 9.020635-1 419 3 2 255 + 2.931600+2 0.000000+0 2 1 2 128 419 3 2 256 + 4.995837-2 8.997945-1 419 3 2 257 + 2.931600+2 0.000000+0 2 1 2 129 419 3 2 258 + 3.320467-2 8.978178-1 419 3 2 259 + 2.931600+2 0.000000+0 2 1 2 130 419 3 2 260 + 1.657101-2 8.965910-1 419 3 2 261 + 2.931600+2 0.000000+0 2 1 2 131 419 3 2 262 + 8.251205-3 8.959656-1 419 3 2 263 + 2.931600+2 0.000000+0 2 1 2 132 419 3 2 264 + 8.295947-3 8.955433-1 419 3 2 265 + 2.931600+2 0.000000+0 2 1 2 133 419 3 2 266 + 3.285065-2 8.945561-1 419 3 2 267 + 2.931600+2 0.000000+0 2 1 2 134 419 3 2 268 + 4.877513-2 8.933370-1 419 3 2 269 + 2.931600+2 0.000000+0 2 1 2 135 419 3 2 270 + 4.797899-2 8.919836-1 419 3 2 271 + 2.931600+2 0.000000+0 2 1 2 136 419 3 2 272 + 4.696325-2 8.905606-1 419 3 2 273 + 2.931600+2 0.000000+0 2 1 2 137 419 3 2 274 + 4.575866-2 8.890647-1 419 3 2 275 + 2.931600+2 0.000000+0 2 1 2 138 419 3 2 276 + 4.436130-2 8.863402-1 419 3 2 277 + 2.931600+2 0.000000+0 2 1 2 139 419 3 2 278 + 4.272230-2 8.808360-1 419 3 2 279 + 2.931600+2 0.000000+0 2 1 2 140 419 3 2 280 + 7.996078-2 8.663313-1 419 3 2 281 + 2.931600+2 0.000000+0 2 1 2 141 419 3 2 282 + 7.163081-2 8.345714-1 419 3 2 283 + 2.931600+2 0.000000+0 2 1 2 142 419 3 2 284 + 6.244700-2 8.042607-1 419 3 2 285 + 2.931600+2 0.000000+0 2 1 2 143 419 3 2 286 + 2.762672-2 7.879591-1 419 3 2 287 + 2.931600+2 0.000000+0 2 1 2 144 419 3 2 288 + 2.519987-2 7.811752-1 419 3 2 289 + 2.931600+2 0.000000+0 2 1 2 145 419 3 2 290 + 2.279050-2 7.763286-1 419 3 2 291 + 2.931600+2 0.000000+0 2 1 2 146 419 3 2 292 + 2.042454-2 7.705842-1 419 3 2 293 + 2.931600+2 0.000000+0 2 1 2 147 419 3 2 294 + 1.814118-2 7.671233-1 419 3 2 295 + 2.931600+2 0.000000+0 2 1 2 148 419 3 2 296 + 1.594721-2 7.655073-1 419 3 2 297 + 2.931600+2 0.000000+0 2 1 2 149 419 3 2 298 + 1.387617-2 7.644701-1 419 3 2 299 + 2.931600+2 0.000000+0 2 1 2 150 419 3 2 300 + 8.164642-3 7.641350-1 419 3 2 301 + 2.931600+2 0.000000+0 2 1 2 151 419 3 2 302 + 3.774230-3 7.638559-1 419 3 2 303 + 2.931600+2 0.000000+0 2 1 2 152 419 3 2 304 + 1.015748-2 7.633221-1 419 3 2 305 + 2.931600+2 0.000000+0 2 1 2 153 419 3 2 306 + 8.535930-3 7.624742-1 419 3 2 307 + 2.931600+2 0.000000+0 2 1 2 154 419 3 2 308 + 7.082486-3 7.615830-1 419 3 2 309 + 2.931600+2 0.000000+0 2 1 2 155 419 3 2 310 + 5.799093-3 7.606464-1 419 3 2 311 + 2.931600+2 0.000000+0 2 1 2 156 419 3 2 312 + 4.681658-3 7.596905-1 419 3 2 313 + 2.931600+2 0.000000+0 2 1 2 157 419 3 2 314 + 3.723745-3 7.587659-1 419 3 2 315 + 2.931600+2 0.000000+0 2 1 2 158 419 3 2 316 + 2.916072-3 7.574418-1 419 3 2 317 + 2.931600+2 0.000000+0 2 1 2 159 419 3 2 318 + 2.246695-3 7.553534-1 419 3 2 319 + 2.931600+2 0.000000+0 2 1 2 160 419 3 2 320 + 1.955084-3 7.519533-1 419 3 2 321 + 2.931600+2 0.000000+0 2 1 2 161 419 3 2 322 + 1.953959-3 7.388554-1 419 3 2 323 + 2.931600+2 0.000000+0 2 1 2 162 419 3 2 324 + 1.951830-3 7.283726-1 419 3 2 325 + 2.931600+2 0.000000+0 2 1 2 163 419 3 2 326 + 1.955070-3 7.257681-1 419 3 2 327 + 2.931600+2 0.000000+0 2 1 2 164 419 3 2 328 + 9.765906-4 7.233629-1 419 3 2 329 + 2.931600+2 0.000000+0 2 1 2 165 419 3 2 330 + 9.651867-3 7.209409-1 419 3 2 331 + 2.931600+2 0.000000+0 2 1 2 166 419 3 2 332 + 1.527244+0 7.170074-1 419 3 2 333 + 2.931600+2 0.000000+0 2 1 2 167 419 3 2 334 + 5.083487+0 7.146891-1 419 3 2 335 + 2.931600+2 0.000000+0 2 1 2 168 419 3 2 336 + 8.848247+0 7.124288-1 419 3 2 337 + 2.931600+2 0.000000+0 2 1 2 169 419 3 2 338 + 6.806587+0 7.100661-1 419 3 2 339 + 2.931600+2 0.000000+0 2 1 2 170 419 3 2 340 + 2.298726+0 7.076876-1 419 3 2 341 + 2.931600+2 0.000000+0 2 1 2 171 419 3 2 342 + 3.462235-1 7.049925-1 419 3 2 343 + 2.931600+2 0.000000+0 2 1 2 172 419 3 2 344 + 3.382274-3 6.957872-1 419 3 2 345 + 2.931600+2 0.000000+0 2 1 2 173 419 3 2 346 + 1.693835-3 6.861877-1 419 3 2 347 + 2.931600+2 0.000000+0 2 1 2 174 419 3 2 348 + 1.691494-3 6.803872-1 419 3 2 349 + 2.931600+2 0.000000+0 2 1 2 175 419 3 2 350 + 8.453596-3 6.708329-1 419 3 2 351 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 3 1 + 2.931600+2 0.000000+0 2 1 2 1 419 3 3 2 + 4.319880+4 9.068374+1 419 3 3 3 + 2.931600+2 0.000000+0 2 1 2 2 419 3 3 4 + 4.541324+3 4.355326+1 419 3 3 5 + 2.931600+2 0.000000+0 2 1 2 3 419 3 3 6 + 2.500158-1 2.268949+1 419 3 3 7 + 2.931600+2 0.000000+0 2 1 2 4 419 3 3 8 + 2.500006-1 2.002730+1 419 3 3 9 + 2.931600+2 0.000000+0 2 1 2 5 419 3 3 10 + 2.499989-1 1.772343+1 419 3 3 11 + 2.931600+2 0.000000+0 2 1 2 6 419 3 3 12 + 2.500522-1 1.560547+1 419 3 3 13 + 2.931600+2 0.000000+0 2 1 2 7 419 3 3 14 + 2.499747-1 1.375883+1 419 3 3 15 + 2.931600+2 0.000000+0 2 1 2 8 419 3 3 16 + 2.499950-1 1.214945+1 419 3 3 17 + 2.931600+2 0.000000+0 2 1 2 9 419 3 3 18 + 2.500120-1 1.072339+1 419 3 3 19 + 2.931600+2 0.000000+0 2 1 2 10 419 3 3 20 + 2.499837-1 9.463937+0 419 3 3 21 + 2.931600+2 0.000000+0 2 1 2 11 419 3 3 22 + 2.500208-1 8.351183+0 419 3 3 23 + 2.931600+2 0.000000+0 2 1 2 12 419 3 3 24 + 2.499994-1 7.370344+0 419 3 3 25 + 2.931600+2 0.000000+0 2 1 2 13 419 3 3 26 + 2.500068-1 6.504874+0 419 3 3 27 + 2.931600+2 0.000000+0 2 1 2 14 419 3 3 28 + 2.499982-1 5.739312+0 419 3 3 29 + 2.931600+2 0.000000+0 2 1 2 15 419 3 3 30 + 2.499987-1 5.057156+0 419 3 3 31 + 2.931600+2 0.000000+0 2 1 2 16 419 3 3 32 + 2.500377-1 4.487465+0 419 3 3 33 + 2.931600+2 0.000000+0 2 1 2 17 419 3 3 34 + 2.499479-1 3.944423+0 419 3 3 35 + 2.931600+2 0.000000+0 2 1 2 18 419 3 3 36 + 2.500173-1 3.480743+0 419 3 3 37 + 2.931600+2 0.000000+0 2 1 2 19 419 3 3 38 + 2.500100-1 3.071904+0 419 3 3 39 + 2.931600+2 0.000000+0 2 1 2 20 419 3 3 40 + 2.500236-1 2.711088+0 419 3 3 41 + 2.931600+2 0.000000+0 2 1 2 21 419 3 3 42 + 2.499879-1 2.393085+0 419 3 3 43 + 2.931600+2 0.000000+0 2 1 2 22 419 3 3 44 + 2.500056-1 2.111752+0 419 3 3 45 + 2.931600+2 0.000000+0 2 1 2 23 419 3 3 46 + 2.500029-1 1.863154+0 419 3 3 47 + 2.931600+2 0.000000+0 2 1 2 24 419 3 3 48 + 2.499980-1 1.643846+0 419 3 3 49 + 2.931600+2 0.000000+0 2 1 2 25 419 3 3 50 + 2.499905-1 1.451987+0 419 3 3 51 + 2.931600+2 0.000000+0 2 1 2 26 419 3 3 52 + 2.500449-1 1.280809+0 419 3 3 53 + 2.931600+2 0.000000+0 2 1 2 27 419 3 3 54 + 2.499670-1 1.128747+0 419 3 3 55 + 2.931600+2 0.000000+0 2 1 2 28 419 3 3 56 + 2.500068-1 1.006487+0 419 3 3 57 + 2.931600+2 0.000000+0 2 1 2 29 419 3 3 58 + 2.500344-1 8.795281-1 419 3 3 59 + 2.931600+2 0.000000+0 2 1 2 30 419 3 3 60 + 2.499915-1 7.764909-1 419 3 3 61 + 2.931600+2 0.000000+0 2 1 2 31 419 3 3 62 + 2.500083-1 6.868591-1 419 3 3 63 + 2.931600+2 0.000000+0 2 1 2 32 419 3 3 64 + 2.500005-1 6.039246-1 419 3 3 65 + 2.931600+2 0.000000+0 2 1 2 33 419 3 3 66 + 2.500054-1 5.350884-1 419 3 3 67 + 2.931600+2 0.000000+0 2 1 2 34 419 3 3 68 + 2.500019-1 4.702463-1 419 3 3 69 + 2.931600+2 0.000000+0 2 1 2 35 419 3 3 70 + 2.499942-1 4.155816-1 419 3 3 71 + 2.931600+2 0.000000+0 2 1 2 36 419 3 3 72 + 2.500204-1 3.668446-1 419 3 3 73 + 2.931600+2 0.000000+0 2 1 2 37 419 3 3 74 + 1.000055-1 3.359357-1 419 3 3 75 + 2.931600+2 0.000000+0 2 1 2 38 419 3 3 76 + 1.000025-1 3.197325-1 419 3 3 77 + 2.931600+2 0.000000+0 2 1 2 39 419 3 3 78 + 4.999347-2 3.067895-1 419 3 3 79 + 2.931600+2 0.000000+0 2 1 2 40 419 3 3 80 + 4.998229-2 2.995084-1 419 3 3 81 + 2.931600+2 0.000000+0 2 1 2 41 419 3 3 82 + 1.000174-1 2.884164-1 419 3 3 83 + 2.931600+2 0.000000+0 2 1 2 42 419 3 3 84 + 9.999096-2 2.754570-1 419 3 3 85 + 2.931600+2 0.000000+0 2 1 2 43 419 3 3 86 + 9.999992-2 2.632040-1 419 3 3 87 + 2.931600+2 0.000000+0 2 1 2 44 419 3 3 88 + 1.500060-1 2.461341-1 419 3 3 89 + 2.931600+2 0.000000+0 2 1 2 45 419 3 3 90 + 2.500021-1 2.237344-1 419 3 3 91 + 2.931600+2 0.000000+0 2 1 2 46 419 3 3 92 + 2.500058-1 1.960584-1 419 3 3 93 + 2.931600+2 0.000000+0 2 1 2 47 419 3 3 94 + 2.500081-1 1.743868-1 419 3 3 95 + 2.931600+2 0.000000+0 2 1 2 48 419 3 3 96 + 1.500464-1 1.567208-1 419 3 3 97 + 2.931600+2 0.000000+0 2 1 2 49 419 3 3 98 + 9.997715-2 1.468289-1 419 3 3 99 + 2.931600+2 0.000000+0 2 1 2 50 419 3 3 100 + 2.499605-1 1.349241-1 419 3 3 101 + 2.931600+2 0.000000+0 2 1 2 51 419 3 3 102 + 2.500539-1 1.195218-1 419 3 3 103 + 2.931600+2 0.000000+0 2 1 2 52 419 3 3 104 + 1.249823-1 1.081662-1 419 3 3 105 + 2.931600+2 0.000000+0 2 1 2 53 419 3 3 106 + 7.501323-2 1.029526-1 419 3 3 107 + 2.931600+2 0.000000+0 2 1 2 54 419 3 3 108 + 2.500424-2 1.002195-1 419 3 3 109 + 2.931600+2 0.000000+0 2 1 2 55 419 3 3 110 + 2.499961-2 9.906551-2 419 3 3 111 + 2.931600+2 0.000000+0 2 1 2 56 419 3 3 112 + 4.996597-2 9.741083-2 419 3 3 113 + 2.931600+2 0.000000+0 2 1 2 57 419 3 3 114 + 3.551257-2 9.545310-2 419 3 3 115 + 2.931600+2 0.000000+0 2 1 2 58 419 3 3 116 + 5.406806-2 9.330380-2 419 3 3 117 + 2.931600+2 0.000000+0 2 1 2 59 419 3 3 118 + 1.104441-1 8.936008-2 419 3 3 119 + 2.931600+2 0.000000+0 2 1 2 60 419 3 3 120 + 7.500419-2 8.567524-2 419 3 3 121 + 2.931600+2 0.000000+0 2 1 2 61 419 3 3 122 + 1.750007-1 8.063610-2 419 3 3 123 + 2.931600+2 0.000000+0 2 1 2 62 419 3 3 124 + 1.249910-1 9.050259-2 419 3 3 125 + 2.931600+2 0.000000+0 2 1 2 63 419 3 3 126 + 1.250025-1 1.123152-1 419 3 3 127 + 2.931600+2 0.000000+0 2 1 2 64 419 3 3 128 + 7.500169-2 1.339302-1 419 3 3 129 + 2.931600+2 0.000000+0 2 1 2 65 419 3 3 130 + 1.749988-1 1.678124-1 419 3 3 131 + 2.931600+2 0.000000+0 2 1 2 66 419 3 3 132 + 6.633376-2 2.085305-1 419 3 3 133 + 2.931600+2 0.000000+0 2 1 2 67 419 3 3 134 + 9.909254-2 2.401918-1 419 3 3 135 + 2.931600+2 0.000000+0 2 1 2 68 419 3 3 136 + 3.704179-2 2.680646-1 419 3 3 137 + 2.931600+2 0.000000+0 2 1 2 69 419 3 3 138 + 4.754338-2 2.887465-1 419 3 3 139 + 2.931600+2 0.000000+0 2 1 2 70 419 3 3 140 + 1.250060-1 3.373621-1 419 3 3 141 + 2.931600+2 0.000000+0 2 1 2 71 419 3 3 142 + 1.249977-1 4.213706-1 419 3 3 143 + 2.931600+2 0.000000+0 2 1 2 72 419 3 3 144 + 5.003758-2 4.941353-1 419 3 3 145 + 2.931600+2 0.000000+0 2 1 2 73 419 3 3 146 + 4.993605-2 5.390412-1 419 3 3 147 + 2.931600+2 0.000000+0 2 1 2 74 419 3 3 148 + 5.004302-2 5.862524-1 419 3 3 149 + 2.931600+2 0.000000+0 2 1 2 75 419 3 3 150 + 5.001871-2 6.359416-1 419 3 3 151 + 2.931600+2 0.000000+0 2 1 2 76 419 3 3 152 + 4.995191-2 6.947528-1 419 3 3 153 + 2.931600+2 0.000000+0 2 1 2 77 419 3 3 154 + 5.004543-2 7.621653-1 419 3 3 155 + 2.931600+2 0.000000+0 2 1 2 78 419 3 3 156 + 4.994617-2 8.330287-1 419 3 3 157 + 2.931600+2 0.000000+0 2 1 2 79 419 3 3 158 + 5.004682-2 9.075272-1 419 3 3 159 + 2.931600+2 0.000000+0 2 1 2 80 419 3 3 160 + 4.995962-2 9.859042-1 419 3 3 161 + 2.931600+2 0.000000+0 2 1 2 81 419 3 3 162 + 5.004203-2 1.075741+0 419 3 3 163 + 2.931600+2 0.000000+0 2 1 2 82 419 3 3 164 + 4.999659-2 1.175701+0 419 3 3 165 + 2.931600+2 0.000000+0 2 1 2 83 419 3 3 166 + 4.998963-2 1.277000+0 419 3 3 167 + 2.931600+2 0.000000+0 2 1 2 84 419 3 3 168 + 5.000882-2 1.293683+0 419 3 3 169 + 2.931600+2 0.000000+0 2 1 2 85 419 3 3 170 + 4.999863-2 1.272619+0 419 3 3 171 + 2.931600+2 0.000000+0 2 1 2 86 419 3 3 172 + 5.000142-2 1.250476+0 419 3 3 173 + 2.931600+2 0.000000+0 2 1 2 87 419 3 3 174 + 5.000916-2 1.227196+0 419 3 3 175 + 2.931600+2 0.000000+0 2 1 2 88 419 3 3 176 + 9.999264-2 1.189861+0 419 3 3 177 + 2.931600+2 0.000000+0 2 1 2 89 419 3 3 178 + 5.000320-2 1.149954+0 419 3 3 179 + 2.931600+2 0.000000+0 2 1 2 90 419 3 3 180 + 2.499435-2 1.128808+0 419 3 3 181 + 2.931600+2 0.000000+0 2 1 2 91 419 3 3 182 + 9.058538-3 1.118936+0 419 3 3 183 + 2.931600+2 0.000000+0 2 1 2 92 419 3 3 184 + 4.364640-3 1.114988+0 419 3 3 185 + 2.931600+2 0.000000+0 2 1 2 93 419 3 3 186 + 1.155782-2 1.110733+0 419 3 3 187 + 2.931600+2 0.000000+0 2 1 2 94 419 3 3 188 + 1.000062-1 1.090416+0 419 3 3 189 + 2.931600+2 0.000000+0 2 1 2 95 419 3 3 190 + 1.000052-1 1.051820+0 419 3 3 191 + 2.931600+2 0.000000+0 2 1 2 96 419 3 3 192 + 4.999999-2 1.020370+0 419 3 3 193 + 2.931600+2 0.000000+0 2 1 2 97 419 3 3 194 + 5.000110-2 9.981101-1 419 3 3 195 + 2.931600+2 0.000000+0 2 1 2 98 419 3 3 196 + 1.000021-1 9.687396-1 419 3 3 197 + 2.931600+2 0.000000+0 2 1 2 99 419 3 3 198 + 1.000048-1 9.283382-1 419 3 3 199 + 2.931600+2 0.000000+0 2 1 2 100 419 3 3 200 + 5.000770-2 9.121833-1 419 3 3 201 + 2.931600+2 0.000000+0 2 1 2 101 419 3 3 202 + 4.999119-2 8.995571-1 419 3 3 203 + 2.931600+2 0.000000+0 2 1 2 102 419 3 3 204 + 4.999926-2 8.850576-1 419 3 3 205 + 2.931600+2 0.000000+0 2 1 2 103 419 3 3 206 + 5.000533-2 8.698124-1 419 3 3 207 + 2.931600+2 0.000000+0 2 1 2 104 419 3 3 208 + 5.000393-2 8.546089-1 419 3 3 209 + 2.931600+2 0.000000+0 2 1 2 105 419 3 3 210 + 5.000589-2 8.400978-1 419 3 3 211 + 2.931600+2 0.000000+0 2 1 2 106 419 3 3 212 + 4.999055-2 8.248720-1 419 3 3 213 + 2.931600+2 0.000000+0 2 1 2 107 419 3 3 214 + 5.000941-2 8.099380-1 419 3 3 215 + 2.931600+2 0.000000+0 2 1 2 108 419 3 3 216 + 4.999941-2 7.958023-1 419 3 3 217 + 2.931600+2 0.000000+0 2 1 2 109 419 3 3 218 + 4.999649-2 7.810195-1 419 3 3 219 + 2.931600+2 0.000000+0 2 1 2 110 419 3 3 220 + 5.000559-2 7.671085-1 419 3 3 221 + 2.931600+2 0.000000+0 2 1 2 111 419 3 3 222 + 4.999654-2 7.531994-1 419 3 3 223 + 2.931600+2 0.000000+0 2 1 2 112 419 3 3 224 + 5.830013-2 7.380330-1 419 3 3 225 + 2.931600+2 0.000000+0 2 1 2 113 419 3 3 226 + 4.171240-2 7.246462-1 419 3 3 227 + 2.931600+2 0.000000+0 2 1 2 114 419 3 3 228 + 9.996157-2 7.062560-1 419 3 3 229 + 2.931600+2 0.000000+0 2 1 2 115 419 3 3 230 + 4.999362-2 6.870344-1 419 3 3 231 + 2.931600+2 0.000000+0 2 1 2 116 419 3 3 232 + 5.006558-2 6.734532-1 419 3 3 233 + 2.931600+2 0.000000+0 2 1 2 117 419 3 3 234 + 4.993355-2 6.613014-1 419 3 3 235 + 2.931600+2 0.000000+0 2 1 2 118 419 3 3 236 + 5.007376-2 6.493637-1 419 3 3 237 + 2.931600+2 0.000000+0 2 1 2 119 419 3 3 238 + 4.993727-2 6.368157-1 419 3 3 239 + 2.931600+2 0.000000+0 2 1 2 120 419 3 3 240 + 5.003866-2 6.250200-1 419 3 3 241 + 2.931600+2 0.000000+0 2 1 2 121 419 3 3 242 + 5.000960-2 6.138135-1 419 3 3 243 + 2.931600+2 0.000000+0 2 1 2 122 419 3 3 244 + 4.998948-2 6.021907-1 419 3 3 245 + 2.931600+2 0.000000+0 2 1 2 123 419 3 3 246 + 4.997139-2 5.916306-1 419 3 3 247 + 2.931600+2 0.000000+0 2 1 2 124 419 3 3 248 + 5.000419-2 5.809805-1 419 3 3 249 + 2.931600+2 0.000000+0 2 1 2 125 419 3 3 250 + 5.002058-2 5.708686-1 419 3 3 251 + 2.931600+2 0.000000+0 2 1 2 126 419 3 3 252 + 5.001758-2 5.612802-1 419 3 3 253 + 2.931600+2 0.000000+0 2 1 2 127 419 3 3 254 + 4.999298-2 5.520176-1 419 3 3 255 + 2.931600+2 0.000000+0 2 1 2 128 419 3 3 256 + 4.995837-2 5.434564-1 419 3 3 257 + 2.931600+2 0.000000+0 2 1 2 129 419 3 3 258 + 3.320467-2 5.366008-1 419 3 3 259 + 2.931600+2 0.000000+0 2 1 2 130 419 3 3 260 + 1.657101-2 5.328809-1 419 3 3 261 + 2.931600+2 0.000000+0 2 1 2 131 419 3 3 262 + 8.251205-3 5.309846-1 419 3 3 263 + 2.931600+2 0.000000+0 2 1 2 132 419 3 3 264 + 8.295947-3 5.297041-1 419 3 3 265 + 2.931600+2 0.000000+0 2 1 2 133 419 3 3 266 + 3.285065-2 5.264842-1 419 3 3 267 + 2.931600+2 0.000000+0 2 1 2 134 419 3 3 268 + 4.877513-2 5.208617-1 419 3 3 269 + 2.931600+2 0.000000+0 2 1 2 135 419 3 3 270 + 4.797899-2 5.143134-1 419 3 3 271 + 2.931600+2 0.000000+0 2 1 2 136 419 3 3 272 + 4.696324-2 5.085092-1 419 3 3 273 + 2.931600+2 0.000000+0 2 1 2 137 419 3 3 274 + 4.575857-2 5.037720-1 419 3 3 275 + 2.931600+2 0.000000+0 2 1 2 138 419 3 3 276 + 4.436130-2 5.020756-1 419 3 3 277 + 2.931600+2 0.000000+0 2 1 2 139 419 3 3 278 + 4.272236-2 5.038208-1 419 3 3 279 + 2.931600+2 0.000000+0 2 1 2 140 419 3 3 280 + 7.996079-2 5.148792-1 419 3 3 281 + 2.931600+2 0.000000+0 2 1 2 141 419 3 3 282 + 7.163096-2 5.454951-1 419 3 3 283 + 2.931600+2 0.000000+0 2 1 2 142 419 3 3 284 + 6.244688-2 5.781706-1 419 3 3 285 + 2.931600+2 0.000000+0 2 1 2 143 419 3 3 286 + 2.762654-2 5.981618-1 419 3 3 287 + 2.931600+2 0.000000+0 2 1 2 144 419 3 3 288 + 2.519975-2 6.082843-1 419 3 3 289 + 2.931600+2 0.000000+0 2 1 2 145 419 3 3 290 + 2.279025-2 6.162393-1 419 3 3 291 + 2.931600+2 0.000000+0 2 1 2 146 419 3 3 292 + 2.042450-2 6.252570-1 419 3 3 293 + 2.931600+2 0.000000+0 2 1 2 147 419 3 3 294 + 1.814118-2 6.338314-1 419 3 3 295 + 2.931600+2 0.000000+0 2 1 2 148 419 3 3 296 + 1.594720-2 6.390602-1 419 3 3 297 + 2.931600+2 0.000000+0 2 1 2 149 419 3 3 298 + 1.387617-2 6.429871-1 419 3 3 299 + 2.931600+2 0.000000+0 2 1 2 150 419 3 3 300 + 8.164756-3 6.460945-1 419 3 3 301 + 2.931600+2 0.000000+0 2 1 2 151 419 3 3 302 + 3.774230-3 6.472964-1 419 3 3 303 + 2.931600+2 0.000000+0 2 1 2 152 419 3 3 304 + 1.015748-2 6.488416-1 419 3 3 305 + 2.931600+2 0.000000+0 2 1 2 153 419 3 3 306 + 8.535865-3 6.512946-1 419 3 3 307 + 2.931600+2 0.000000+0 2 1 2 154 419 3 3 308 + 7.082278-3 6.521798-1 419 3 3 309 + 2.931600+2 0.000000+0 2 1 2 155 419 3 3 310 + 5.798985-3 6.519525-1 419 3 3 311 + 2.931600+2 0.000000+0 2 1 2 156 419 3 3 312 + 4.681642-3 6.491419-1 419 3 3 313 + 2.931600+2 0.000000+0 2 1 2 157 419 3 3 314 + 3.723745-3 6.475475-1 419 3 3 315 + 2.931600+2 0.000000+0 2 1 2 158 419 3 3 316 + 2.916072-3 6.437175-1 419 3 3 317 + 2.931600+2 0.000000+0 2 1 2 159 419 3 3 318 + 2.246690-3 6.397165-1 419 3 3 319 + 2.931600+2 0.000000+0 2 1 2 160 419 3 3 320 + 1.955084-3 6.350453-1 419 3 3 321 + 2.931600+2 0.000000+0 2 1 2 161 419 3 3 322 + 1.953959-3 6.390763-1 419 3 3 323 + 2.931600+2 0.000000+0 2 1 2 162 419 3 3 324 + 1.951830-3 6.380741-1 419 3 3 325 + 2.931600+2 0.000000+0 2 1 2 163 419 3 3 326 + 1.955070-3 6.191132-1 419 3 3 327 + 2.931600+2 0.000000+0 2 1 2 164 419 3 3 328 + 9.765906-4 5.964746-1 419 3 3 329 + 2.931600+2 0.000000+0 2 1 2 165 419 3 3 330 + 9.651867-3 5.723650-1 419 3 3 331 + 2.931600+2 0.000000+0 2 1 2 166 419 3 3 332 + 1.527244+0 5.330860-1 419 3 3 333 + 2.931600+2 0.000000+0 2 1 2 167 419 3 3 334 + 5.083487+0 5.095638-1 419 3 3 335 + 2.931600+2 0.000000+0 2 1 2 168 419 3 3 336 + 8.848247+0 4.878518-1 419 3 3 337 + 2.931600+2 0.000000+0 2 1 2 169 419 3 3 338 + 6.806587+0 4.660063-1 419 3 3 339 + 2.931600+2 0.000000+0 2 1 2 170 419 3 3 340 + 2.298726+0 4.448162-1 419 3 3 341 + 2.931600+2 0.000000+0 2 1 2 171 419 3 3 342 + 3.462235-1 4.220972-1 419 3 3 343 + 2.931600+2 0.000000+0 2 1 2 172 419 3 3 344 + 3.382274-3 3.896537-1 419 3 3 345 + 2.931600+2 0.000000+0 2 1 2 173 419 3 3 346 + 1.693835-3 4.564828-1 419 3 3 347 + 2.931600+2 0.000000+0 2 1 2 174 419 3 3 348 + 1.691494-3 4.901247-1 419 3 3 349 + 2.931600+2 0.000000+0 2 1 2 175 419 3 3 350 + 8.453596-3 4.510943-1 419 3 3 351 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 4 1 + 2.931600+2 0.000000+0 2 1 2 100 419 3 4 2 + 5.000771-2 3.844929-3 419 3 4 3 + 2.931600+2 0.000000+0 2 1 2 101 419 3 4 4 + 4.999119-2 1.329464-2 419 3 4 5 + 2.931600+2 0.000000+0 2 1 2 102 419 3 4 6 + 4.999926-2 2.326306-2 419 3 4 7 + 2.931600+2 0.000000+0 2 1 2 103 419 3 4 8 + 5.000523-2 3.345910-2 419 3 4 9 + 2.931600+2 0.000000+0 2 1 2 104 419 3 4 10 + 5.000401-2 3.854945-2 419 3 4 11 + 2.931600+2 0.000000+0 2 1 2 105 419 3 4 12 + 5.000589-2 4.169765-2 419 3 4 13 + 2.931600+2 0.000000+0 2 1 2 106 419 3 4 14 + 4.999054-2 4.498967-2 419 3 4 15 + 2.931600+2 0.000000+0 2 1 2 107 419 3 4 16 + 5.000951-2 4.778601-2 419 3 4 17 + 2.931600+2 0.000000+0 2 1 2 108 419 3 4 18 + 4.999941-2 5.038104-2 419 3 4 19 + 2.931600+2 0.000000+0 2 1 2 109 419 3 4 20 + 4.999645-2 5.302597-2 419 3 4 21 + 2.931600+2 0.000000+0 2 1 2 110 419 3 4 22 + 5.000559-2 5.532846-2 419 3 4 23 + 2.931600+2 0.000000+0 2 1 2 111 419 3 4 24 + 4.999648-2 5.766610-2 419 3 4 25 + 2.931600+2 0.000000+0 2 1 2 112 419 3 4 26 + 5.830021-2 5.995121-2 419 3 4 27 + 2.931600+2 0.000000+0 2 1 2 113 419 3 4 28 + 4.171237-2 6.199099-2 419 3 4 29 + 2.931600+2 0.000000+0 2 1 2 114 419 3 4 30 + 9.996160-2 6.438433-2 419 3 4 31 + 2.931600+2 0.000000+0 2 1 2 115 419 3 4 32 + 4.999362-2 6.682240-2 419 3 4 33 + 2.931600+2 0.000000+0 2 1 2 116 419 3 4 34 + 5.006567-2 6.850253-2 419 3 4 35 + 2.931600+2 0.000000+0 2 1 2 117 419 3 4 36 + 4.993355-2 6.973241-2 419 3 4 37 + 2.931600+2 0.000000+0 2 1 2 118 419 3 4 38 + 5.007376-2 7.089521-2 419 3 4 39 + 2.931600+2 0.000000+0 2 1 2 119 419 3 4 40 + 4.993724-2 7.209103-2 419 3 4 41 + 2.931600+2 0.000000+0 2 1 2 120 419 3 4 42 + 5.003866-2 7.297060-2 419 3 4 43 + 2.931600+2 0.000000+0 2 1 2 121 419 3 4 44 + 5.000960-2 7.377330-2 419 3 4 45 + 2.931600+2 0.000000+0 2 1 2 122 419 3 4 46 + 4.998943-2 7.453764-2 419 3 4 47 + 2.931600+2 0.000000+0 2 1 2 123 419 3 4 48 + 4.997139-2 7.506525-2 419 3 4 49 + 2.931600+2 0.000000+0 2 1 2 124 419 3 4 50 + 5.000411-2 7.558360-2 419 3 4 51 + 2.931600+2 0.000000+0 2 1 2 125 419 3 4 52 + 5.002058-2 7.591371-2 419 3 4 53 + 2.931600+2 0.000000+0 2 1 2 126 419 3 4 54 + 5.001758-2 7.618006-2 419 3 4 55 + 2.931600+2 0.000000+0 2 1 2 127 419 3 4 56 + 4.999307-2 7.630825-2 419 3 4 57 + 2.931600+2 0.000000+0 2 1 2 128 419 3 4 58 + 4.995834-2 7.636035-2 419 3 4 59 + 2.931600+2 0.000000+0 2 1 2 129 419 3 4 60 + 3.320467-2 7.633833-2 419 3 4 61 + 2.931600+2 0.000000+0 2 1 2 130 419 3 4 62 + 1.657101-2 7.630535-2 419 3 4 63 + 2.931600+2 0.000000+0 2 1 2 131 419 3 4 64 + 8.251205-3 7.628852-2 419 3 4 65 + 2.931600+2 0.000000+0 2 1 2 132 419 3 4 66 + 8.295947-3 7.627717-2 419 3 4 67 + 2.931600+2 0.000000+0 2 1 2 133 419 3 4 68 + 3.285065-2 7.624063-2 419 3 4 69 + 2.931600+2 0.000000+0 2 1 2 134 419 3 4 70 + 4.877513-2 7.615177-2 419 3 4 71 + 2.931600+2 0.000000+0 2 1 2 135 419 3 4 72 + 4.797896-2 7.603350-2 419 3 4 73 + 2.931600+2 0.000000+0 2 1 2 136 419 3 4 74 + 4.696318-2 7.588188-2 419 3 4 75 + 2.931600+2 0.000000+0 2 1 2 137 419 3 4 76 + 4.575857-2 7.557957-2 419 3 4 77 + 2.931600+2 0.000000+0 2 1 2 138 419 3 4 78 + 4.436130-2 7.485308-2 419 3 4 79 + 2.931600+2 0.000000+0 2 1 2 139 419 3 4 80 + 4.272236-2 7.358350-2 419 3 4 81 + 2.931600+2 0.000000+0 2 1 2 140 419 3 4 82 + 7.996083-2 7.024813-2 419 3 4 83 + 2.931600+2 0.000000+0 2 1 2 141 419 3 4 84 + 7.163080-2 6.360938-2 419 3 4 85 + 2.931600+2 0.000000+0 2 1 2 142 419 3 4 86 + 6.244698-2 5.694404-2 419 3 4 87 + 2.931600+2 0.000000+0 2 1 2 143 419 3 4 88 + 2.762652-2 5.231108-2 419 3 4 89 + 2.931600+2 0.000000+0 2 1 2 144 419 3 4 90 + 2.519972-2 4.977471-2 419 3 4 91 + 2.931600+2 0.000000+0 2 1 2 145 419 3 4 92 + 2.279022-2 4.771624-2 419 3 4 93 + 2.931600+2 0.000000+0 2 1 2 146 419 3 4 94 + 2.042454-2 5.803069-2 419 3 4 95 + 2.931600+2 0.000000+0 2 1 2 147 419 3 4 96 + 1.814121-2 6.906549-2 419 3 4 97 + 2.931600+2 0.000000+0 2 1 2 148 419 3 4 98 + 1.594717-2 7.263521-2 419 3 4 99 + 2.931600+2 0.000000+0 2 1 2 149 419 3 4 100 + 1.387605-2 7.381137-2 419 3 4 101 + 2.931600+2 0.000000+0 2 1 2 150 419 3 4 102 + 8.164821-3 7.374298-2 419 3 4 103 + 2.931600+2 0.000000+0 2 1 2 151 419 3 4 104 + 3.774194-3 7.336395-2 419 3 4 105 + 2.931600+2 0.000000+0 2 1 2 152 419 3 4 106 + 1.015723-2 7.226763-2 419 3 4 107 + 2.931600+2 0.000000+0 2 1 2 153 419 3 4 108 + 8.535770-3 6.970510-2 419 3 4 109 + 2.931600+2 0.000000+0 2 1 2 154 419 3 4 110 + 7.082278-3 6.753227-2 419 3 4 111 + 2.931600+2 0.000000+0 2 1 2 155 419 3 4 112 + 5.798906-3 7.257820-2 419 3 4 113 + 2.931600+2 0.000000+0 2 1 2 156 419 3 4 114 + 4.681642-3 7.819775-2 419 3 4 115 + 2.931600+2 0.000000+0 2 1 2 157 419 3 4 116 + 3.723613-3 8.456803-2 419 3 4 117 + 2.931600+2 0.000000+0 2 1 2 158 419 3 4 118 + 2.916027-3 8.631221-2 419 3 4 119 + 2.931600+2 0.000000+0 2 1 2 159 419 3 4 120 + 2.246747-3 8.498361-2 419 3 4 121 + 2.931600+2 0.000000+0 2 1 2 160 419 3 4 122 + 1.955090-3 8.211442-2 419 3 4 123 + 2.931600+2 0.000000+0 2 1 2 161 419 3 4 124 + 1.953965-3 8.303702-2 419 3 4 125 + 2.931600+2 0.000000+0 2 1 2 162 419 3 4 126 + 1.951832-3 8.553741-2 419 3 4 127 + 2.931600+2 0.000000+0 2 1 2 163 419 3 4 128 + 1.955078-3 8.546101-2 419 3 4 129 + 2.931600+2 0.000000+0 2 1 2 164 419 3 4 130 + 9.765916-4 8.380858-2 419 3 4 131 + 2.931600+2 0.000000+0 2 1 2 165 419 3 4 132 + 1.016273-2 8.239368-2 419 3 4 133 + 2.931600+2 0.000000+0 2 1 2 166 419 3 4 134 + 1.531876+0 7.949865-2 419 3 4 135 + 2.931600+2 0.000000+0 2 1 2 167 419 3 4 136 + 5.083488+0 7.708143-2 419 3 4 137 + 2.931600+2 0.000000+0 2 1 2 168 419 3 4 138 + 8.848180+0 7.464097-2 419 3 4 139 + 2.931600+2 0.000000+0 2 1 2 169 419 3 4 140 + 6.806517+0 7.203295-2 419 3 4 141 + 2.931600+2 0.000000+0 2 1 2 170 419 3 4 142 + 2.304996+0 6.944747-2 419 3 4 143 + 2.931600+2 0.000000+0 2 1 2 171 419 3 4 144 + 3.504250-1 6.658233-2 419 3 4 145 + 2.931600+2 0.000000+0 2 1 2 172 419 3 4 146 + 3.382293-3 5.204540-2 419 3 4 147 + 2.931600+2 0.000000+0 2 1 2 173 419 3 4 148 + 1.693836-3 2.220709-2 419 3 4 149 + 2.931600+2 0.000000+0 2 1 2 174 419 3 4 150 + 1.691503-3 6.494102-3 419 3 4 151 + 2.931600+2 0.000000+0 2 1 2 175 419 3 4 152 + 8.453621-3 6.000976-3 419 3 4 153 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 16 1 + 2.931600+2 0.000000+0 2 1 2 163 419 3 16 2 + 1.955080-3 1.13726-10 419 3 16 3 + 2.931600+2 0.000000+0 2 1 2 164 419 3 16 4 + 9.766681-4 6.906002-6 419 3 16 5 + 2.931600+2 0.000000+0 2 1 2 165 419 3 16 6 + 9.893008-3 2.468578-5 419 3 16 7 + 2.931600+2 0.000000+0 2 1 2 166 419 3 16 8 + 1.537615+0 5.087607-5 419 3 16 9 + 2.931600+2 0.000000+0 2 1 2 167 419 3 16 10 + 5.083622+0 6.603765-5 419 3 16 11 + 2.931600+2 0.000000+0 2 1 2 168 419 3 16 12 + 8.848080+0 8.024520-5 419 3 16 13 + 2.931600+2 0.000000+0 2 1 2 169 419 3 16 14 + 6.806521+0 9.485868-5 419 3 16 15 + 2.931600+2 0.000000+0 2 1 2 170 419 3 16 16 + 2.304996+0 1.093362-4 419 3 16 17 + 2.931600+2 0.000000+0 2 1 2 171 419 3 16 18 + 3.559738-1 1.252346-4 419 3 16 19 + 2.931600+2 0.000000+0 2 1 2 172 419 3 16 20 + 3.382293-3 1.717998-4 419 3 16 21 + 2.931600+2 0.000000+0 2 1 2 173 419 3 16 22 + 1.693836-3 1.990406-4 419 3 16 23 + 2.931600+2 0.000000+0 2 1 2 174 419 3 16 24 + 1.691503-3 2.178215-4 419 3 16 25 + 2.931600+2 0.000000+0 2 1 2 175 419 3 16 26 + 8.453629-3 2.775120-4 419 3 16 27 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 22 1 + 2.931600+2 0.000000+0 2 1 2 125 419 3 22 2 + 5.002049-2 5.880741-7 419 3 22 3 + 2.931600+2 0.000000+0 2 1 2 126 419 3 22 4 + 5.001758-2 2.222485-6 419 3 22 5 + 2.931600+2 0.000000+0 2 1 2 127 419 3 22 6 + 4.999307-2 3.957407-6 419 3 22 7 + 2.931600+2 0.000000+0 2 1 2 128 419 3 22 8 + 4.995837-2 5.780408-6 419 3 22 9 + 2.931600+2 0.000000+0 2 1 2 129 419 3 22 10 + 3.320467-2 7.368585-6 419 3 22 11 + 2.931600+2 0.000000+0 2 1 2 130 419 3 22 12 + 1.657101-2 8.354294-6 419 3 22 13 + 2.931600+2 0.000000+0 2 1 2 131 419 3 22 14 + 8.251205-3 8.856765-6 419 3 22 15 + 2.931600+2 0.000000+0 2 1 2 132 419 3 22 16 + 8.295947-3 9.196060-6 419 3 22 17 + 2.931600+2 0.000000+0 2 1 2 133 419 3 22 18 + 3.285067-2 1.005659-5 419 3 22 19 + 2.931600+2 0.000000+0 2 1 2 134 419 3 22 20 + 4.877513-2 1.182942-5 419 3 22 21 + 2.931600+2 0.000000+0 2 1 2 135 419 3 22 22 + 4.797899-2 1.405535-5 419 3 22 23 + 2.931600+2 0.000000+0 2 1 2 136 419 3 22 24 + 4.696325-2 1.639535-5 419 3 22 25 + 2.931600+2 0.000000+0 2 1 2 137 419 3 22 26 + 4.575866-2 1.885541-5 419 3 22 27 + 2.931600+2 0.000000+0 2 1 2 138 419 3 22 28 + 4.436130-2 2.144237-5 419 3 22 29 + 2.931600+2 0.000000+0 2 1 2 139 419 3 22 30 + 4.272235-2 2.416143-5 419 3 22 31 + 2.931600+2 0.000000+0 2 1 2 140 419 3 22 32 + 7.996096-2 2.848485-5 419 3 22 33 + 2.931600+2 0.000000+0 2 1 2 141 419 3 22 34 + 7.163098-2 3.479077-5 419 3 22 35 + 2.931600+2 0.000000+0 2 1 2 142 419 3 22 36 + 6.244718-2 4.175656-5 419 3 22 37 + 2.931600+2 0.000000+0 2 1 2 143 419 3 22 38 + 2.762671-2 4.751731-5 419 3 22 39 + 2.931600+2 0.000000+0 2 1 2 144 419 3 22 40 + 2.519994-2 5.157155-5 419 3 22 41 + 2.931600+2 0.000000+0 2 1 2 145 419 3 22 42 + 2.279047-2 5.583306-5 419 3 22 43 + 2.931600+2 0.000000+0 2 1 2 146 419 3 22 44 + 2.042476-2 6.031209-5 419 3 22 45 + 2.931600+2 0.000000+0 2 1 2 147 419 3 22 46 + 1.814118-2 6.502056-5 419 3 22 47 + 2.931600+2 0.000000+0 2 1 2 148 419 3 22 48 + 1.594743-2 6.997046-5 419 3 22 49 + 2.931600+2 0.000000+0 2 1 2 149 419 3 22 50 + 1.387617-2 7.517373-5 419 3 22 51 + 2.931600+2 0.000000+0 2 1 2 150 419 3 22 52 + 8.164822-3 7.974631-5 419 3 22 53 + 2.931600+2 0.000000+0 2 1 2 151 419 3 22 54 + 3.774230-3 8.258612-5 419 3 22 55 + 2.931600+2 0.000000+0 2 1 2 152 419 3 22 56 + 1.015748-2 8.639229-5 419 3 22 57 + 2.931600+2 0.000000+0 2 1 2 153 419 3 22 58 + 8.535930-3 9.243573-5 419 3 22 59 + 2.931600+2 0.000000+0 2 1 2 154 419 3 22 60 + 7.082486-3 9.878790-5 419 3 22 61 + 2.931600+2 0.000000+0 2 1 2 155 419 3 22 62 + 5.799093-3 1.054650-4 419 3 22 63 + 2.931600+2 0.000000+0 2 1 2 156 419 3 22 64 + 4.681774-3 1.124839-4 419 3 22 65 + 2.931600+2 0.000000+0 2 1 2 157 419 3 22 66 + 3.723745-3 1.198618-4 419 3 22 67 + 2.931600+2 0.000000+0 2 1 2 158 419 3 22 68 + 2.916072-3 1.276166-4 419 3 22 69 + 2.931600+2 0.000000+0 2 1 2 159 419 3 22 70 + 2.246747-3 1.357676-4 419 3 22 71 + 2.931600+2 0.000000+0 2 1 2 160 419 3 22 72 + 1.955091-3 1.445648-4 419 3 22 73 + 2.931600+2 0.000000+0 2 1 2 161 419 3 22 74 + 1.953971-3 1.535999-4 419 3 22 75 + 2.931600+2 0.000000+0 2 1 2 162 419 3 22 76 + 1.951837-3 1.630904-4 419 3 22 77 + 2.931600+2 0.000000+0 2 1 2 163 419 3 22 78 + 1.955080-3 1.730702-4 419 3 22 79 + 2.931600+2 0.000000+0 2 1 2 164 419 3 22 80 + 9.766681-4 1.808774-4 419 3 22 81 + 2.931600+2 0.000000+0 2 1 2 165 419 3 22 82 + 9.893008-3 1.877571-4 419 3 22 83 + 2.931600+2 0.000000+0 2 1 2 166 419 3 22 84 + 1.537615+0 1.978912-4 419 3 22 85 + 2.931600+2 0.000000+0 2 1 2 167 419 3 22 86 + 5.083622+0 2.037578-4 419 3 22 87 + 2.931600+2 0.000000+0 2 1 2 168 419 3 22 88 + 8.848080+0 2.092553-4 419 3 22 89 + 2.931600+2 0.000000+0 2 1 2 169 419 3 22 90 + 6.806521+0 2.149099-4 419 3 22 91 + 2.931600+2 0.000000+0 2 1 2 170 419 3 22 92 + 2.304996+0 2.205118-4 419 3 22 93 + 2.931600+2 0.000000+0 2 1 2 171 419 3 22 94 + 3.559738-1 2.266636-4 419 3 22 95 + 2.931600+2 0.000000+0 2 1 2 172 419 3 22 96 + 3.382293-3 2.446815-4 419 3 22 97 + 2.931600+2 0.000000+0 2 1 2 173 419 3 22 98 + 1.693836-3 2.552221-4 419 3 22 99 + 2.931600+2 0.000000+0 2 1 2 174 419 3 22 100 + 1.691503-3 2.624892-4 419 3 22 101 + 2.931600+2 0.000000+0 2 1 2 175 419 3 22 102 + 8.453629-3 2.855859-4 419 3 22 103 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 28 1 + 2.931600+2 0.000000+0 2 1 2 150 419 3 28 2 + 8.164809-3 5.708242-7 419 3 28 3 + 2.931600+2 0.000000+0 2 1 2 151 419 3 28 4 + 3.774230-3 5.502646-6 419 3 28 5 + 2.931600+2 0.000000+0 2 1 2 152 419 3 28 6 + 1.015748-2 1.456933-5 419 3 28 7 + 2.931600+2 0.000000+0 2 1 2 153 419 3 28 8 + 8.535930-3 2.896546-5 419 3 28 9 + 2.931600+2 0.000000+0 2 1 2 154 419 3 28 10 + 7.082486-3 4.409701-5 419 3 28 11 + 2.931600+2 0.000000+0 2 1 2 155 419 3 28 12 + 5.799093-3 6.000246-5 419 3 28 13 + 2.931600+2 0.000000+0 2 1 2 156 419 3 28 14 + 4.681774-3 7.672238-5 419 3 28 15 + 2.931600+2 0.000000+0 2 1 2 157 419 3 28 16 + 3.723745-3 9.429739-5 419 3 28 17 + 2.931600+2 0.000000+0 2 1 2 158 419 3 28 18 + 2.916072-3 1.127699-4 419 3 28 19 + 2.931600+2 0.000000+0 2 1 2 159 419 3 28 20 + 2.246747-3 1.321864-4 419 3 28 21 + 2.931600+2 0.000000+0 2 1 2 160 419 3 28 22 + 1.955091-3 1.531423-4 419 3 28 23 + 2.931600+2 0.000000+0 2 1 2 161 419 3 28 24 + 1.953971-3 1.746651-4 419 3 28 25 + 2.931600+2 0.000000+0 2 1 2 162 419 3 28 26 + 1.951837-3 1.972723-4 419 3 28 27 + 2.931600+2 0.000000+0 2 1 2 163 419 3 28 28 + 1.955080-3 2.210452-4 419 3 28 29 + 2.931600+2 0.000000+0 2 1 2 164 419 3 28 30 + 9.766681-4 2.396428-4 419 3 28 31 + 2.931600+2 0.000000+0 2 1 2 165 419 3 28 32 + 9.893008-3 2.560310-4 419 3 28 33 + 2.931600+2 0.000000+0 2 1 2 166 419 3 28 34 + 1.537615+0 2.801715-4 419 3 28 35 + 2.931600+2 0.000000+0 2 1 2 167 419 3 28 36 + 5.083622+0 2.941464-4 419 3 28 37 + 2.931600+2 0.000000+0 2 1 2 168 419 3 28 38 + 8.848080+0 3.072420-4 419 3 28 39 + 2.931600+2 0.000000+0 2 1 2 169 419 3 28 40 + 6.806521+0 3.207117-4 419 3 28 41 + 2.931600+2 0.000000+0 2 1 2 170 419 3 28 42 + 2.304996+0 3.340562-4 419 3 28 43 + 2.931600+2 0.000000+0 2 1 2 171 419 3 28 44 + 3.559738-1 3.487103-4 419 3 28 45 + 2.931600+2 0.000000+0 2 1 2 172 419 3 28 46 + 3.382293-3 4.471892-4 419 3 28 47 + 2.931600+2 0.000000+0 2 1 2 173 419 3 28 48 + 1.693836-3 6.827298-4 419 3 28 49 + 2.931600+2 0.000000+0 2 1 2 174 419 3 28 50 + 1.691503-3 8.990832-4 419 3 28 51 + 2.931600+2 0.000000+0 2 1 2 175 419 3 28 52 + 8.453622-3 2.094565-3 419 3 28 53 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 32 1 + 2.931600+2 0.000000+0 2 1 2 160 419 3 32 2 + 1.955087-3 8.76952-11 419 3 32 3 + 2.931600+2 0.000000+0 2 1 2 161 419 3 32 4 + 1.953966-3 1.498588-9 419 3 32 5 + 2.931600+2 0.000000+0 2 1 2 162 419 3 32 6 + 1.951836-3 1.305451-8 419 3 32 7 + 2.931600+2 0.000000+0 2 1 2 163 419 3 32 8 + 1.955078-3 4.471684-8 419 3 32 9 + 2.931600+2 0.000000+0 2 1 2 164 419 3 32 10 + 9.765916-4 8.008548-8 419 3 32 11 + 2.931600+2 0.000000+0 2 1 2 165 419 3 32 12 + 9.893008-3 1.161620-7 419 3 32 13 + 2.931600+2 0.000000+0 2 1 2 166 419 3 32 14 + 1.531876+0 1.729228-7 419 3 32 15 + 2.931600+2 0.000000+0 2 1 2 167 419 3 32 16 + 5.083488+0 2.071307-7 419 3 32 17 + 2.931600+2 0.000000+0 2 1 2 168 419 3 32 18 + 8.848180+0 2.390756-7 419 3 32 19 + 2.931600+2 0.000000+0 2 1 2 169 419 3 32 20 + 6.806517+0 2.715446-7 419 3 32 21 + 2.931600+2 0.000000+0 2 1 2 170 419 3 32 22 + 2.304996+0 3.031165-7 419 3 32 23 + 2.931600+2 0.000000+0 2 1 2 171 419 3 32 24 + 3.504250-1 3.374804-7 419 3 32 25 + 2.931600+2 0.000000+0 2 1 2 172 419 3 32 26 + 3.382293-3 1.364895-3 419 3 32 27 + 2.931600+2 0.000000+0 2 1 2 173 419 3 32 28 + 1.693836-3 6.532987-3 419 3 32 29 + 2.931600+2 0.000000+0 2 1 2 174 419 3 32 30 + 1.691503-3 9.313345-3 419 3 32 31 + 2.931600+2 0.000000+0 2 1 2 175 419 3 32 32 + 8.453622-3 1.023964-2 419 3 32 33 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 34 1 + 2.931600+2 0.000000+0 2 1 2 125 419 3 34 2 + 5.002055-2 4.32577-10 419 3 34 3 + 2.931600+2 0.000000+0 2 1 2 126 419 3 34 4 + 5.001758-2 1.730759-6 419 3 34 5 + 2.931600+2 0.000000+0 2 1 2 127 419 3 34 6 + 4.999307-2 5.200677-6 419 3 34 7 + 2.931600+2 0.000000+0 2 1 2 128 419 3 34 8 + 4.995837-2 8.846757-6 419 3 34 9 + 2.931600+2 0.000000+0 2 1 2 129 419 3 34 10 + 3.320467-2 1.202318-5 419 3 34 11 + 2.931600+2 0.000000+0 2 1 2 130 419 3 34 12 + 1.657101-2 1.399464-5 419 3 34 13 + 2.931600+2 0.000000+0 2 1 2 131 419 3 34 14 + 8.251205-3 1.499960-5 419 3 34 15 + 2.931600+2 0.000000+0 2 1 2 132 419 3 34 16 + 8.295947-3 1.567821-5 419 3 34 17 + 2.931600+2 0.000000+0 2 1 2 133 419 3 34 18 + 3.285067-2 1.739931-5 419 3 34 19 + 2.931600+2 0.000000+0 2 1 2 134 419 3 34 20 + 4.877513-2 2.094504-5 419 3 34 21 + 2.931600+2 0.000000+0 2 1 2 135 419 3 34 22 + 4.797899-2 2.539698-5 419 3 34 23 + 2.931600+2 0.000000+0 2 1 2 136 419 3 34 24 + 4.696325-2 3.007709-5 419 3 34 25 + 2.931600+2 0.000000+0 2 1 2 137 419 3 34 26 + 4.575866-2 3.499731-5 419 3 34 27 + 2.931600+2 0.000000+0 2 1 2 138 419 3 34 28 + 4.436130-2 4.017136-5 419 3 34 29 + 2.931600+2 0.000000+0 2 1 2 139 419 3 34 30 + 4.272235-2 4.560959-5 419 3 34 31 + 2.931600+2 0.000000+0 2 1 2 140 419 3 34 32 + 7.996096-2 5.425661-5 419 3 34 33 + 2.931600+2 0.000000+0 2 1 2 141 419 3 34 34 + 7.163098-2 6.686873-5 419 3 34 35 + 2.931600+2 0.000000+0 2 1 2 142 419 3 34 36 + 6.244718-2 8.080060-5 419 3 34 37 + 2.931600+2 0.000000+0 2 1 2 143 419 3 34 38 + 2.762671-2 9.232235-5 419 3 34 39 + 2.931600+2 0.000000+0 2 1 2 144 419 3 34 40 + 2.519994-2 1.004310-4 419 3 34 41 + 2.931600+2 0.000000+0 2 1 2 145 419 3 34 42 + 2.279047-2 1.089542-4 419 3 34 43 + 2.931600+2 0.000000+0 2 1 2 146 419 3 34 44 + 2.042476-2 1.179125-4 419 3 34 45 + 2.931600+2 0.000000+0 2 1 2 147 419 3 34 46 + 1.814118-2 1.273296-4 419 3 34 47 + 2.931600+2 0.000000+0 2 1 2 148 419 3 34 48 + 1.594743-2 1.372296-4 419 3 34 49 + 2.931600+2 0.000000+0 2 1 2 149 419 3 34 50 + 1.387617-2 1.476364-4 419 3 34 51 + 2.931600+2 0.000000+0 2 1 2 150 419 3 34 52 + 8.164822-3 1.567817-4 419 3 34 53 + 2.931600+2 0.000000+0 2 1 2 151 419 3 34 54 + 3.774230-3 1.624614-4 419 3 34 55 + 2.931600+2 0.000000+0 2 1 2 152 419 3 34 56 + 1.015748-2 1.700740-4 419 3 34 57 + 2.931600+2 0.000000+0 2 1 2 153 419 3 34 58 + 8.535930-3 1.821611-4 419 3 34 59 + 2.931600+2 0.000000+0 2 1 2 154 419 3 34 60 + 7.082486-3 1.948657-4 419 3 34 61 + 2.931600+2 0.000000+0 2 1 2 155 419 3 34 62 + 5.799093-3 2.082201-4 419 3 34 63 + 2.931600+2 0.000000+0 2 1 2 156 419 3 34 64 + 4.681774-3 2.222583-4 419 3 34 65 + 2.931600+2 0.000000+0 2 1 2 157 419 3 34 66 + 3.723745-3 2.370145-4 419 3 34 67 + 2.931600+2 0.000000+0 2 1 2 158 419 3 34 68 + 2.916072-3 2.525243-4 419 3 34 69 + 2.931600+2 0.000000+0 2 1 2 159 419 3 34 70 + 2.246747-3 2.688266-4 419 3 34 71 + 2.931600+2 0.000000+0 2 1 2 160 419 3 34 72 + 1.955091-3 2.864214-4 419 3 34 73 + 2.931600+2 0.000000+0 2 1 2 161 419 3 34 74 + 1.953971-3 3.044921-4 419 3 34 75 + 2.931600+2 0.000000+0 2 1 2 162 419 3 34 76 + 1.951837-3 3.234734-4 419 3 34 77 + 2.931600+2 0.000000+0 2 1 2 163 419 3 34 78 + 1.955080-3 3.434334-4 419 3 34 79 + 2.931600+2 0.000000+0 2 1 2 164 419 3 34 80 + 9.766681-4 3.590481-4 419 3 34 81 + 2.931600+2 0.000000+0 2 1 2 165 419 3 34 82 + 9.893008-3 3.728079-4 419 3 34 83 + 2.931600+2 0.000000+0 2 1 2 166 419 3 34 84 + 1.537615+0 3.930765-4 419 3 34 85 + 2.931600+2 0.000000+0 2 1 2 167 419 3 34 86 + 5.083622+0 4.048100-4 419 3 34 87 + 2.931600+2 0.000000+0 2 1 2 168 419 3 34 88 + 8.848080+0 4.158052-4 419 3 34 89 + 2.931600+2 0.000000+0 2 1 2 169 419 3 34 90 + 6.806521+0 4.271146-4 419 3 34 91 + 2.931600+2 0.000000+0 2 1 2 170 419 3 34 92 + 2.304996+0 4.383187-4 419 3 34 93 + 2.931600+2 0.000000+0 2 1 2 171 419 3 34 94 + 3.559738-1 4.506225-4 419 3 34 95 + 2.931600+2 0.000000+0 2 1 2 172 419 3 34 96 + 3.382293-3 4.866591-4 419 3 34 97 + 2.931600+2 0.000000+0 2 1 2 173 419 3 34 98 + 1.693836-3 5.077408-4 419 3 34 99 + 2.931600+2 0.000000+0 2 1 2 174 419 3 34 100 + 1.691503-3 5.222754-4 419 3 34 101 + 2.931600+2 0.000000+0 2 1 2 175 419 3 34 102 + 8.453629-3 5.684697-4 419 3 34 103 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 41 1 + 2.931600+2 0.000000+0 2 1 2 166 419 3 41 2 + 1.530900+0 1.14125-10 419 3 41 3 + 2.931600+2 0.000000+0 2 1 2 167 419 3 41 4 + 5.083622+0 1.98707-10 419 3 41 5 + 2.931600+2 0.000000+0 2 1 2 168 419 3 41 6 + 8.848080+0 2.77274-10 419 3 41 7 + 2.931600+2 0.000000+0 2 1 2 169 419 3 41 8 + 6.806521+0 3.58085-10 419 3 41 9 + 2.931600+2 0.000000+0 2 1 2 170 419 3 41 10 + 2.304996+0 4.38145-10 419 3 41 11 + 2.931600+2 0.000000+0 2 1 2 171 419 3 41 12 + 3.559738-1 5.26062-10 419 3 41 13 + 2.931600+2 0.000000+0 2 1 2 172 419 3 41 14 + 3.382293-3 9.68193-10 419 3 41 15 + 2.931600+2 0.000000+0 2 1 2 173 419 3 41 16 + 1.693836-3 1.818134-9 419 3 41 17 + 2.931600+2 0.000000+0 2 1 2 174 419 3 41 18 + 1.691503-3 2.576072-9 419 3 41 19 + 2.931600+2 0.000000+0 2 1 2 175 419 3 41 20 + 8.453622-3 1.576165-5 419 3 41 21 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 44 1 + 2.931600+2 0.000000+0 2 1 2 162 419 3 44 2 + 1.951834-3 3.39510-12 419 3 44 3 + 2.931600+2 0.000000+0 2 1 2 163 419 3 44 4 + 1.955080-3 9.33690-11 419 3 44 5 + 2.931600+2 0.000000+0 2 1 2 164 419 3 44 6 + 9.766681-4 1.92057-10 419 3 44 7 + 2.931600+2 0.000000+0 2 1 2 165 419 3 44 8 + 9.893008-3 2.79020-10 419 3 44 9 + 2.931600+2 0.000000+0 2 1 2 166 419 3 44 10 + 1.537615+0 4.07121-10 419 3 44 11 + 2.931600+2 0.000000+0 2 1 2 167 419 3 44 12 + 5.083622+0 4.81278-10 419 3 44 13 + 2.931600+2 0.000000+0 2 1 2 168 419 3 44 14 + 8.848080+0 5.50769-10 419 3 44 15 + 2.931600+2 0.000000+0 2 1 2 169 419 3 44 16 + 6.806521+0 6.22246-10 419 3 44 17 + 2.931600+2 0.000000+0 2 1 2 170 419 3 44 18 + 2.304996+0 6.93058-10 419 3 44 19 + 2.931600+2 0.000000+0 2 1 2 171 419 3 44 20 + 3.559738-1 7.70819-10 419 3 44 21 + 2.931600+2 0.000000+0 2 1 2 172 419 3 44 22 + 3.382293-3 1.266507-9 419 3 44 23 + 2.931600+2 0.000000+0 2 1 2 173 419 3 44 24 + 1.693836-3 2.414559-9 419 3 44 25 + 2.931600+2 0.000000+0 2 1 2 174 419 3 44 26 + 1.691503-3 3.361506-9 419 3 44 27 + 2.931600+2 0.000000+0 2 1 2 175 419 3 44 28 + 8.453622-3 1.800649-5 419 3 44 29 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 45 1 + 2.931600+2 0.000000+0 2 1 2 155 419 3 45 2 + 5.799052-3 8.77229-15 419 3 45 3 + 2.931600+2 0.000000+0 2 1 2 156 419 3 45 4 + 4.681774-3 3.25138-11 419 3 45 5 + 2.931600+2 0.000000+0 2 1 2 157 419 3 45 6 + 3.723745-3 1.00026-10 419 3 45 7 + 2.931600+2 0.000000+0 2 1 2 158 419 3 45 8 + 2.916072-3 1.70985-10 419 3 45 9 + 2.931600+2 0.000000+0 2 1 2 159 419 3 45 10 + 2.246747-3 2.45570-10 419 3 45 11 + 2.931600+2 0.000000+0 2 1 2 160 419 3 45 12 + 1.955091-3 3.26069-10 419 3 45 13 + 2.931600+2 0.000000+0 2 1 2 161 419 3 45 14 + 1.953971-3 4.08745-10 419 3 45 15 + 2.931600+2 0.000000+0 2 1 2 162 419 3 45 16 + 1.951837-3 4.95587-10 419 3 45 17 + 2.931600+2 0.000000+0 2 1 2 163 419 3 45 18 + 1.955080-3 5.86907-10 419 3 45 19 + 2.931600+2 0.000000+0 2 1 2 164 419 3 45 20 + 9.766681-4 6.58347-10 419 3 45 21 + 2.931600+2 0.000000+0 2 1 2 165 419 3 45 22 + 9.893008-3 7.21300-10 419 3 45 23 + 2.931600+2 0.000000+0 2 1 2 166 419 3 45 24 + 1.537615+0 8.14032-10 419 3 45 25 + 2.931600+2 0.000000+0 2 1 2 167 419 3 45 26 + 5.083622+0 8.67714-10 419 3 45 27 + 2.931600+2 0.000000+0 2 1 2 168 419 3 45 28 + 8.848080+0 9.18019-10 419 3 45 29 + 2.931600+2 0.000000+0 2 1 2 169 419 3 45 30 + 6.806521+0 9.69760-10 419 3 45 31 + 2.931600+2 0.000000+0 2 1 2 170 419 3 45 32 + 2.304996+0 1.021021-9 419 3 45 33 + 2.931600+2 0.000000+0 2 1 2 171 419 3 45 34 + 3.559738-1 1.077312-9 419 3 45 35 + 2.931600+2 0.000000+0 2 1 2 172 419 3 45 36 + 3.382293-3 1.451680-9 419 3 45 37 + 2.931600+2 0.000000+0 2 1 2 173 419 3 45 38 + 1.693836-3 2.341613-9 419 3 45 39 + 2.931600+2 0.000000+0 2 1 2 174 419 3 45 40 + 1.691503-3 3.317428-9 419 3 45 41 + 2.931600+2 0.000000+0 2 1 2 175 419 3 45 42 + 8.453622-3 1.968286-5 419 3 45 43 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 51 1 + 2.931600+2 0.000000+0 2 1 2 100 419 3 51 2 + 5.000771-2 3.844929-3 419 3 51 3 + 2.931600+2 0.000000+0 2 1 2 101 419 3 51 4 + 4.999119-2 1.329464-2 419 3 51 5 + 2.931600+2 0.000000+0 2 1 2 102 419 3 51 6 + 4.999926-2 2.326306-2 419 3 51 7 + 2.931600+2 0.000000+0 2 1 2 103 419 3 51 8 + 5.000523-2 3.345910-2 419 3 51 9 + 2.931600+2 0.000000+0 2 1 2 104 419 3 51 10 + 5.000401-2 3.854945-2 419 3 51 11 + 2.931600+2 0.000000+0 2 1 2 105 419 3 51 12 + 5.000589-2 4.169765-2 419 3 51 13 + 2.931600+2 0.000000+0 2 1 2 106 419 3 51 14 + 4.999054-2 4.498967-2 419 3 51 15 + 2.931600+2 0.000000+0 2 1 2 107 419 3 51 16 + 5.000951-2 4.778601-2 419 3 51 17 + 2.931600+2 0.000000+0 2 1 2 108 419 3 51 18 + 4.999941-2 5.038104-2 419 3 51 19 + 2.931600+2 0.000000+0 2 1 2 109 419 3 51 20 + 4.999645-2 5.302597-2 419 3 51 21 + 2.931600+2 0.000000+0 2 1 2 110 419 3 51 22 + 5.000559-2 5.532846-2 419 3 51 23 + 2.931600+2 0.000000+0 2 1 2 111 419 3 51 24 + 4.999648-2 5.766610-2 419 3 51 25 + 2.931600+2 0.000000+0 2 1 2 112 419 3 51 26 + 5.830021-2 5.995121-2 419 3 51 27 + 2.931600+2 0.000000+0 2 1 2 113 419 3 51 28 + 4.171237-2 6.199099-2 419 3 51 29 + 2.931600+2 0.000000+0 2 1 2 114 419 3 51 30 + 9.996160-2 6.438433-2 419 3 51 31 + 2.931600+2 0.000000+0 2 1 2 115 419 3 51 32 + 4.999362-2 6.682240-2 419 3 51 33 + 2.931600+2 0.000000+0 2 1 2 116 419 3 51 34 + 5.006567-2 6.850253-2 419 3 51 35 + 2.931600+2 0.000000+0 2 1 2 117 419 3 51 36 + 4.993355-2 6.973241-2 419 3 51 37 + 2.931600+2 0.000000+0 2 1 2 118 419 3 51 38 + 5.007376-2 7.089521-2 419 3 51 39 + 2.931600+2 0.000000+0 2 1 2 119 419 3 51 40 + 4.993724-2 7.209103-2 419 3 51 41 + 2.931600+2 0.000000+0 2 1 2 120 419 3 51 42 + 5.003866-2 7.297060-2 419 3 51 43 + 2.931600+2 0.000000+0 2 1 2 121 419 3 51 44 + 5.000960-2 7.377330-2 419 3 51 45 + 2.931600+2 0.000000+0 2 1 2 122 419 3 51 46 + 4.998943-2 7.453764-2 419 3 51 47 + 2.931600+2 0.000000+0 2 1 2 123 419 3 51 48 + 4.997139-2 7.506525-2 419 3 51 49 + 2.931600+2 0.000000+0 2 1 2 124 419 3 51 50 + 5.000411-2 7.558360-2 419 3 51 51 + 2.931600+2 0.000000+0 2 1 2 125 419 3 51 52 + 5.002058-2 7.591371-2 419 3 51 53 + 2.931600+2 0.000000+0 2 1 2 126 419 3 51 54 + 5.001758-2 7.618006-2 419 3 51 55 + 2.931600+2 0.000000+0 2 1 2 127 419 3 51 56 + 4.999307-2 7.630825-2 419 3 51 57 + 2.931600+2 0.000000+0 2 1 2 128 419 3 51 58 + 4.995834-2 7.636035-2 419 3 51 59 + 2.931600+2 0.000000+0 2 1 2 129 419 3 51 60 + 3.320467-2 7.633833-2 419 3 51 61 + 2.931600+2 0.000000+0 2 1 2 130 419 3 51 62 + 1.657101-2 7.630535-2 419 3 51 63 + 2.931600+2 0.000000+0 2 1 2 131 419 3 51 64 + 8.251205-3 7.628852-2 419 3 51 65 + 2.931600+2 0.000000+0 2 1 2 132 419 3 51 66 + 8.295947-3 7.627717-2 419 3 51 67 + 2.931600+2 0.000000+0 2 1 2 133 419 3 51 68 + 3.285065-2 7.624063-2 419 3 51 69 + 2.931600+2 0.000000+0 2 1 2 134 419 3 51 70 + 4.877513-2 7.615177-2 419 3 51 71 + 2.931600+2 0.000000+0 2 1 2 135 419 3 51 72 + 4.797896-2 7.603350-2 419 3 51 73 + 2.931600+2 0.000000+0 2 1 2 136 419 3 51 74 + 4.696318-2 7.588188-2 419 3 51 75 + 2.931600+2 0.000000+0 2 1 2 137 419 3 51 76 + 4.575857-2 7.557957-2 419 3 51 77 + 2.931600+2 0.000000+0 2 1 2 138 419 3 51 78 + 4.436130-2 7.485308-2 419 3 51 79 + 2.931600+2 0.000000+0 2 1 2 139 419 3 51 80 + 4.272236-2 7.358350-2 419 3 51 81 + 2.931600+2 0.000000+0 2 1 2 140 419 3 51 82 + 7.996083-2 7.024813-2 419 3 51 83 + 2.931600+2 0.000000+0 2 1 2 141 419 3 51 84 + 7.163080-2 6.360938-2 419 3 51 85 + 2.931600+2 0.000000+0 2 1 2 142 419 3 51 86 + 6.244698-2 5.694404-2 419 3 51 87 + 2.931600+2 0.000000+0 2 1 2 143 419 3 51 88 + 2.762652-2 5.231108-2 419 3 51 89 + 2.931600+2 0.000000+0 2 1 2 144 419 3 51 90 + 2.519972-2 4.977471-2 419 3 51 91 + 2.931600+2 0.000000+0 2 1 2 145 419 3 51 92 + 2.279022-2 4.771624-2 419 3 51 93 + 2.931600+2 0.000000+0 2 1 2 146 419 3 51 94 + 2.042454-2 4.574673-2 419 3 51 95 + 2.931600+2 0.000000+0 2 1 2 147 419 3 51 96 + 1.814121-2 4.400525-2 419 3 51 97 + 2.931600+2 0.000000+0 2 1 2 148 419 3 51 98 + 1.594717-2 4.240973-2 419 3 51 99 + 2.931600+2 0.000000+0 2 1 2 149 419 3 51 100 + 1.387605-2 4.073283-2 419 3 51 101 + 2.931600+2 0.000000+0 2 1 2 150 419 3 51 102 + 8.164821-3 3.930350-2 419 3 51 103 + 2.931600+2 0.000000+0 2 1 2 151 419 3 51 104 + 3.774194-3 3.844729-2 419 3 51 105 + 2.931600+2 0.000000+0 2 1 2 152 419 3 51 106 + 1.015723-2 3.723614-2 419 3 51 107 + 2.931600+2 0.000000+0 2 1 2 153 419 3 51 108 + 8.535770-3 3.519117-2 419 3 51 109 + 2.931600+2 0.000000+0 2 1 2 154 419 3 51 110 + 7.082278-3 3.317851-2 419 3 51 111 + 2.931600+2 0.000000+0 2 1 2 155 419 3 51 112 + 5.798906-3 3.111686-2 419 3 51 113 + 2.931600+2 0.000000+0 2 1 2 156 419 3 51 114 + 4.681642-3 2.920246-2 419 3 51 115 + 2.931600+2 0.000000+0 2 1 2 157 419 3 51 116 + 3.723613-3 2.739311-2 419 3 51 117 + 2.931600+2 0.000000+0 2 1 2 158 419 3 51 118 + 2.916027-3 2.554031-2 419 3 51 119 + 2.931600+2 0.000000+0 2 1 2 159 419 3 51 120 + 2.246747-3 2.344563-2 419 3 51 121 + 2.931600+2 0.000000+0 2 1 2 160 419 3 51 122 + 1.955090-3 2.124583-2 419 3 51 123 + 2.931600+2 0.000000+0 2 1 2 161 419 3 51 124 + 1.953965-3 1.951035-2 419 3 51 125 + 2.931600+2 0.000000+0 2 1 2 162 419 3 51 126 + 1.951832-3 1.767980-2 419 3 51 127 + 2.931600+2 0.000000+0 2 1 2 163 419 3 51 128 + 1.955078-3 1.556317-2 419 3 51 129 + 2.931600+2 0.000000+0 2 1 2 164 419 3 51 130 + 9.765916-4 1.397516-2 419 3 51 131 + 2.931600+2 0.000000+0 2 1 2 165 419 3 51 132 + 1.016273-2 1.261826-2 419 3 51 133 + 2.931600+2 0.000000+0 2 1 2 166 419 3 51 134 + 1.531876+0 1.089114-2 419 3 51 135 + 2.931600+2 0.000000+0 2 1 2 167 419 3 51 136 + 5.083488+0 1.000150-2 419 3 51 137 + 2.931600+2 0.000000+0 2 1 2 168 419 3 51 138 + 8.848180+0 9.243592-3 419 3 51 139 + 2.931600+2 0.000000+0 2 1 2 169 419 3 51 140 + 6.806517+0 8.545514-3 419 3 51 141 + 2.931600+2 0.000000+0 2 1 2 170 419 3 51 142 + 2.304996+0 7.917147-3 419 3 51 143 + 2.931600+2 0.000000+0 2 1 2 171 419 3 51 144 + 3.504250-1 7.287117-3 419 3 51 145 + 2.931600+2 0.000000+0 2 1 2 172 419 3 51 146 + 3.382293-3 5.230878-3 419 3 51 147 + 2.931600+2 0.000000+0 2 1 2 173 419 3 51 148 + 1.693836-3 2.232461-3 419 3 51 149 + 2.931600+2 0.000000+0 2 1 2 174 419 3 51 150 + 1.691503-3 6.730060-4 419 3 51 151 + 2.931600+2 0.000000+0 2 1 2 175 419 3 51 152 + 8.453621-3 5.932945-4 419 3 51 153 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 52 1 + 2.931600+2 0.000000+0 2 1 2 146 419 3 52 2 + 2.042454-2 1.228396-2 419 3 52 3 + 2.931600+2 0.000000+0 2 1 2 147 419 3 52 4 + 1.814121-2 2.506023-2 419 3 52 5 + 2.931600+2 0.000000+0 2 1 2 148 419 3 52 6 + 1.594717-2 3.022548-2 419 3 52 7 + 2.931600+2 0.000000+0 2 1 2 149 419 3 52 8 + 1.387605-2 3.307854-2 419 3 52 9 + 2.931600+2 0.000000+0 2 1 2 150 419 3 52 10 + 8.164821-3 3.443947-2 419 3 52 11 + 2.931600+2 0.000000+0 2 1 2 151 419 3 52 12 + 3.774194-3 3.491665-2 419 3 52 13 + 2.931600+2 0.000000+0 2 1 2 152 419 3 52 14 + 1.015723-2 3.503150-2 419 3 52 15 + 2.931600+2 0.000000+0 2 1 2 153 419 3 52 16 + 8.535770-3 3.451393-2 419 3 52 17 + 2.931600+2 0.000000+0 2 1 2 154 419 3 52 18 + 7.082278-3 3.385272-2 419 3 52 19 + 2.931600+2 0.000000+0 2 1 2 155 419 3 52 20 + 5.798906-3 3.325021-2 419 3 52 21 + 2.931600+2 0.000000+0 2 1 2 156 419 3 52 22 + 4.681642-3 3.288070-2 419 3 52 23 + 2.931600+2 0.000000+0 2 1 2 157 419 3 52 24 + 3.723613-3 3.272367-2 419 3 52 25 + 2.931600+2 0.000000+0 2 1 2 158 419 3 52 26 + 2.916027-3 3.241981-2 419 3 52 27 + 2.931600+2 0.000000+0 2 1 2 159 419 3 52 28 + 2.246747-3 3.152466-2 419 3 52 29 + 2.931600+2 0.000000+0 2 1 2 160 419 3 52 30 + 1.955090-3 3.025704-2 419 3 52 31 + 2.931600+2 0.000000+0 2 1 2 161 419 3 52 32 + 1.953965-3 2.937405-2 419 3 52 33 + 2.931600+2 0.000000+0 2 1 2 162 419 3 52 34 + 1.951832-3 2.830580-2 419 3 52 35 + 2.931600+2 0.000000+0 2 1 2 163 419 3 52 36 + 1.955078-3 2.686359-2 419 3 52 37 + 2.931600+2 0.000000+0 2 1 2 164 419 3 52 38 + 9.765916-4 2.566526-2 419 3 52 39 + 2.931600+2 0.000000+0 2 1 2 165 419 3 52 40 + 1.016273-2 2.448379-2 419 3 52 41 + 2.931600+2 0.000000+0 2 1 2 166 419 3 52 42 + 1.531876+0 2.273575-2 419 3 52 43 + 2.931600+2 0.000000+0 2 1 2 167 419 3 52 44 + 5.083488+0 2.169664-2 419 3 52 45 + 2.931600+2 0.000000+0 2 1 2 168 419 3 52 46 + 8.848180+0 2.073918-2 419 3 52 47 + 2.931600+2 0.000000+0 2 1 2 169 419 3 52 48 + 6.806517+0 1.978026-2 419 3 52 49 + 2.931600+2 0.000000+0 2 1 2 170 419 3 52 50 + 2.304996+0 1.886133-2 419 3 52 51 + 2.931600+2 0.000000+0 2 1 2 171 419 3 52 52 + 3.504250-1 1.787507-2 419 3 52 53 + 2.931600+2 0.000000+0 2 1 2 172 419 3 52 54 + 3.382293-3 1.370703-2 419 3 52 55 + 2.931600+2 0.000000+0 2 1 2 173 419 3 52 56 + 1.693836-3 6.214962-3 419 3 52 57 + 2.931600+2 0.000000+0 2 1 2 174 419 3 52 58 + 1.691503-3 2.282660-3 419 3 52 59 + 2.931600+2 0.000000+0 2 1 2 175 419 3 52 60 + 8.453621-3 2.093314-3 419 3 52 61 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 53 1 + 2.931600+2 0.000000+0 2 1 2 154 419 3 53 2 + 7.082387-3 5.010237-4 419 3 53 3 + 2.931600+2 0.000000+0 2 1 2 155 419 3 53 4 + 5.798906-3 8.211127-3 419 3 53 5 + 2.931600+2 0.000000+0 2 1 2 156 419 3 53 6 + 4.681642-3 1.236707-2 419 3 53 7 + 2.931600+2 0.000000+0 2 1 2 157 419 3 53 8 + 3.723613-3 1.479851-2 419 3 53 9 + 2.931600+2 0.000000+0 2 1 2 158 419 3 53 10 + 2.916027-3 1.609068-2 419 3 53 11 + 2.931600+2 0.000000+0 2 1 2 159 419 3 53 12 + 2.246747-3 1.658129-2 419 3 53 13 + 2.931600+2 0.000000+0 2 1 2 160 419 3 53 14 + 1.955090-3 1.670948-2 419 3 53 15 + 2.931600+2 0.000000+0 2 1 2 161 419 3 53 16 + 1.953965-3 1.689004-2 419 3 53 17 + 2.931600+2 0.000000+0 2 1 2 162 419 3 53 18 + 1.951832-3 1.694926-2 419 3 53 19 + 2.931600+2 0.000000+0 2 1 2 163 419 3 53 20 + 1.955078-3 1.676662-2 419 3 53 21 + 2.931600+2 0.000000+0 2 1 2 164 419 3 53 22 + 9.765916-4 1.648137-2 419 3 53 23 + 2.931600+2 0.000000+0 2 1 2 165 419 3 53 24 + 1.016273-2 1.606436-2 419 3 53 25 + 2.931600+2 0.000000+0 2 1 2 166 419 3 53 26 + 1.531876+0 1.531369-2 419 3 53 27 + 2.931600+2 0.000000+0 2 1 2 167 419 3 53 28 + 5.083488+0 1.480791-2 419 3 53 29 + 2.931600+2 0.000000+0 2 1 2 168 419 3 53 30 + 8.848180+0 1.431070-2 419 3 53 31 + 2.931600+2 0.000000+0 2 1 2 169 419 3 53 32 + 6.806517+0 1.377769-2 419 3 53 33 + 2.931600+2 0.000000+0 2 1 2 170 419 3 53 34 + 2.304996+0 1.324424-2 419 3 53 35 + 2.931600+2 0.000000+0 2 1 2 171 419 3 53 36 + 3.504250-1 1.264683-2 419 3 53 37 + 2.931600+2 0.000000+0 2 1 2 172 419 3 53 38 + 3.382293-3 9.802931-3 419 3 53 39 + 2.931600+2 0.000000+0 2 1 2 173 419 3 53 40 + 1.693836-3 4.351126-3 419 3 53 41 + 2.931600+2 0.000000+0 2 1 2 174 419 3 53 42 + 1.691503-3 1.486942-3 419 3 53 43 + 2.931600+2 0.000000+0 2 1 2 175 419 3 53 44 + 8.453621-3 1.390039-3 419 3 53 45 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 54 1 + 2.931600+2 0.000000+0 2 1 2 156 419 3 54 2 + 4.681642-3 3.747521-3 419 3 54 3 + 2.931600+2 0.000000+0 2 1 2 157 419 3 54 4 + 3.723613-3 9.652723-3 419 3 54 5 + 2.931600+2 0.000000+0 2 1 2 158 419 3 54 6 + 2.916027-3 1.226139-2 419 3 54 7 + 2.931600+2 0.000000+0 2 1 2 159 419 3 54 8 + 2.246747-3 1.343202-2 419 3 54 9 + 2.931600+2 0.000000+0 2 1 2 160 419 3 54 10 + 1.955090-3 1.390033-2 419 3 54 11 + 2.931600+2 0.000000+0 2 1 2 161 419 3 54 12 + 1.953965-3 1.421738-2 419 3 54 13 + 2.931600+2 0.000000+0 2 1 2 162 419 3 54 14 + 1.951832-3 1.436280-2 419 3 54 15 + 2.931600+2 0.000000+0 2 1 2 163 419 3 54 16 + 1.955078-3 1.428869-2 419 3 54 17 + 2.931600+2 0.000000+0 2 1 2 164 419 3 54 18 + 9.765916-4 1.410942-2 419 3 54 19 + 2.931600+2 0.000000+0 2 1 2 165 419 3 54 20 + 1.016273-2 1.380761-2 419 3 54 21 + 2.931600+2 0.000000+0 2 1 2 166 419 3 54 22 + 1.531876+0 1.323341-2 419 3 54 23 + 2.931600+2 0.000000+0 2 1 2 167 419 3 54 24 + 5.083488+0 1.283293-2 419 3 54 25 + 2.931600+2 0.000000+0 2 1 2 168 419 3 54 26 + 8.848180+0 1.243189-2 419 3 54 27 + 2.931600+2 0.000000+0 2 1 2 169 419 3 54 28 + 6.806517+0 1.199220-2 419 3 54 29 + 2.931600+2 0.000000+0 2 1 2 170 419 3 54 30 + 2.304996+0 1.154478-2 419 3 54 31 + 2.931600+2 0.000000+0 2 1 2 171 419 3 54 32 + 3.504250-1 1.103505-2 419 3 54 33 + 2.931600+2 0.000000+0 2 1 2 172 419 3 54 34 + 3.382293-3 8.439823-3 419 3 54 35 + 2.931600+2 0.000000+0 2 1 2 173 419 3 54 36 + 1.693836-3 3.263029-3 419 3 54 37 + 2.931600+2 0.000000+0 2 1 2 174 419 3 54 38 + 1.691503-3 5.401287-4 419 3 54 39 + 2.931600+2 0.000000+0 2 1 2 175 419 3 54 40 + 8.453621-3 4.602049-4 419 3 54 41 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3 91 1 + 2.931600+2 0.000000+0 2 1 2 156 419 3 91 2 + 4.681645-3 2.875444-4 419 3 91 3 + 2.931600+2 0.000000+0 2 1 2 157 419 3 91 4 + 3.723745-3 1.127311-3 419 3 91 5 + 2.931600+2 0.000000+0 2 1 2 158 419 3 91 6 + 2.916072-3 2.020023-3 419 3 91 7 + 2.931600+2 0.000000+0 2 1 2 159 419 3 91 8 + 2.246747-3 2.958355-3 419 3 91 9 + 2.931600+2 0.000000+0 2 1 2 160 419 3 91 10 + 1.955091-3 3.971079-3 419 3 91 11 + 2.931600+2 0.000000+0 2 1 2 161 419 3 91 12 + 1.953966-3 5.027184-3 419 3 91 13 + 2.931600+2 0.000000+0 2 1 2 162 419 3 91 14 + 1.951836-3 8.239513-3 419 3 91 15 + 2.931600+2 0.000000+0 2 1 2 163 419 3 91 16 + 1.955078-3 1.197893-2 419 3 91 17 + 2.931600+2 0.000000+0 2 1 2 164 419 3 91 18 + 9.765916-4 1.357737-2 419 3 91 19 + 2.931600+2 0.000000+0 2 1 2 165 419 3 91 20 + 9.893008-3 1.537450-2 419 3 91 21 + 2.931600+2 0.000000+0 2 1 2 166 419 3 91 22 + 1.531876+0 1.732465-2 419 3 91 23 + 2.931600+2 0.000000+0 2 1 2 167 419 3 91 24 + 5.083488+0 1.774247-2 419 3 91 25 + 2.931600+2 0.000000+0 2 1 2 168 419 3 91 26 + 8.848180+0 1.791561-2 419 3 91 27 + 2.931600+2 0.000000+0 2 1 2 169 419 3 91 28 + 6.806517+0 1.793727-2 419 3 91 29 + 2.931600+2 0.000000+0 2 1 2 170 419 3 91 30 + 2.304996+0 1.787998-2 419 3 91 31 + 2.931600+2 0.000000+0 2 1 2 171 419 3 91 32 + 3.504250-1 1.773827-2 419 3 91 33 + 2.931600+2 0.000000+0 2 1 2 172 419 3 91 34 + 3.382293-3 1.486474-2 419 3 91 35 + 2.931600+2 0.000000+0 2 1 2 173 419 3 91 36 + 1.693836-3 6.145511-3 419 3 91 37 + 2.931600+2 0.000000+0 2 1 2 174 419 3 91 38 + 1.691503-3 1.511365-3 419 3 91 39 + 2.931600+2 0.000000+0 2 1 2 175 419 3 91 40 + 8.453622-3 1.469128-3 419 3 91 41 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3102 1 + 2.931600+2 0.000000+0 2 1 2 1 419 3102 2 + 4.319880+4 5.559799-3 419 3102 3 + 2.931600+2 0.000000+0 2 1 2 2 419 3102 4 + 4.541324+3 2.667973-3 419 3102 5 + 2.931600+2 0.000000+0 2 1 2 3 419 3102 6 + 2.500158-1 1.386211-3 419 3102 7 + 2.931600+2 0.000000+0 2 1 2 4 419 3102 8 + 2.500006-1 1.223431-3 419 3102 9 + 2.931600+2 0.000000+0 2 1 2 5 419 3102 10 + 2.499988-1 1.079815-3 419 3102 11 + 2.931600+2 0.000000+0 2 1 2 6 419 3102 12 + 2.500521-1 9.530753-4 419 3102 13 + 2.931600+2 0.000000+0 2 1 2 7 419 3102 14 + 2.499748-1 8.414267-4 419 3102 15 + 2.931600+2 0.000000+0 2 1 2 8 419 3102 16 + 2.499950-1 7.430034-4 419 3102 17 + 2.931600+2 0.000000+0 2 1 2 9 419 3102 18 + 2.500121-1 6.560962-4 419 3102 19 + 2.931600+2 0.000000+0 2 1 2 10 419 3102 20 + 2.499837-1 5.792031-4 419 3102 21 + 2.931600+2 0.000000+0 2 1 2 11 419 3102 22 + 2.500208-1 5.114080-4 419 3102 23 + 2.931600+2 0.000000+0 2 1 2 12 419 3102 24 + 2.499993-1 4.516741-4 419 3102 25 + 2.931600+2 0.000000+0 2 1 2 13 419 3102 26 + 2.500067-1 3.988470-4 419 3102 27 + 2.931600+2 0.000000+0 2 1 2 14 419 3102 28 + 2.499981-1 3.524727-4 419 3102 29 + 2.931600+2 0.000000+0 2 1 2 15 419 3102 30 + 2.499987-1 3.114407-4 419 3102 31 + 2.931600+2 0.000000+0 2 1 2 16 419 3102 32 + 2.500376-1 2.753293-4 419 3102 33 + 2.931600+2 0.000000+0 2 1 2 17 419 3102 34 + 2.499478-1 2.435796-4 419 3102 35 + 2.931600+2 0.000000+0 2 1 2 18 419 3102 36 + 2.500173-1 2.155963-4 419 3102 37 + 2.931600+2 0.000000+0 2 1 2 19 419 3102 38 + 2.500099-1 1.909647-4 419 3102 39 + 2.931600+2 0.000000+0 2 1 2 20 419 3102 40 + 2.500236-1 1.694185-4 419 3102 41 + 2.931600+2 0.000000+0 2 1 2 21 419 3102 42 + 2.499878-1 1.504254-4 419 3102 43 + 2.931600+2 0.000000+0 2 1 2 22 419 3102 44 + 2.500057-1 1.338843-4 419 3102 45 + 2.931600+2 0.000000+0 2 1 2 23 419 3102 46 + 2.500029-1 1.193889-4 419 3102 47 + 2.931600+2 0.000000+0 2 1 2 24 419 3102 48 + 2.499979-1 1.068082-4 419 3102 49 + 2.931600+2 0.000000+0 2 1 2 25 419 3102 50 + 2.499904-1 9.594970-5 419 3102 51 + 2.931600+2 0.000000+0 2 1 2 26 419 3102 52 + 2.500448-1 8.662352-5 419 3102 53 + 2.931600+2 0.000000+0 2 1 2 27 419 3102 54 + 2.499670-1 7.874235-5 419 3102 55 + 2.931600+2 0.000000+0 2 1 2 28 419 3102 56 + 2.500067-1 7.223479-5 419 3102 57 + 2.931600+2 0.000000+0 2 1 2 29 419 3102 58 + 2.500344-1 6.703054-5 419 3102 59 + 2.931600+2 0.000000+0 2 1 2 30 419 3102 60 + 2.499914-1 6.322128-5 419 3102 61 + 2.931600+2 0.000000+0 2 1 2 31 419 3102 62 + 2.500082-1 6.087713-5 419 3102 63 + 2.931600+2 0.000000+0 2 1 2 32 419 3102 64 + 2.500005-1 6.033844-5 419 3102 65 + 2.931600+2 0.000000+0 2 1 2 33 419 3102 66 + 2.500053-1 6.222224-5 419 3102 67 + 2.931600+2 0.000000+0 2 1 2 34 419 3102 68 + 2.500020-1 6.775239-5 419 3102 69 + 2.931600+2 0.000000+0 2 1 2 35 419 3102 70 + 2.499939-1 7.911220-5 419 3102 71 + 2.931600+2 0.000000+0 2 1 2 36 419 3102 72 + 2.500204-1 9.838894-5 419 3102 73 + 2.931600+2 0.000000+0 2 1 2 37 419 3102 74 + 1.000054-1 1.131895-4 419 3102 75 + 2.931600+2 0.000000+0 2 1 2 38 419 3102 76 + 1.000023-1 1.159749-4 419 3102 77 + 2.931600+2 0.000000+0 2 1 2 39 419 3102 78 + 4.999348-2 1.123052-4 419 3102 79 + 2.931600+2 0.000000+0 2 1 2 40 419 3102 80 + 4.998218-2 1.061792-4 419 3102 81 + 2.931600+2 0.000000+0 2 1 2 41 419 3102 82 + 1.000174-1 9.241893-5 419 3102 83 + 2.931600+2 0.000000+0 2 1 2 42 419 3102 84 + 9.999078-2 7.060306-5 419 3102 85 + 2.931600+2 0.000000+0 2 1 2 43 419 3102 86 + 9.999976-2 5.007675-5 419 3102 87 + 2.931600+2 0.000000+0 2 1 2 44 419 3102 88 + 1.500056-1 3.123347-5 419 3102 89 + 2.931600+2 0.000000+0 2 1 2 45 419 3102 90 + 2.500015-1 1.464919-5 419 3102 91 + 2.931600+2 0.000000+0 2 1 2 46 419 3102 92 + 2.500054-1 5.783281-6 419 3102 93 + 2.931600+2 0.000000+0 2 1 2 47 419 3102 94 + 2.500077-1 2.456422-6 419 3102 95 + 2.931600+2 0.000000+0 2 1 2 48 419 3102 96 + 1.500461-1 1.271331-6 419 3102 97 + 2.931600+2 0.000000+0 2 1 2 49 419 3102 98 + 9.997699-2 8.613439-7 419 3102 99 + 2.931600+2 0.000000+0 2 1 2 50 419 3102 100 + 2.499603-1 5.218256-7 419 3102 101 + 2.931600+2 0.000000+0 2 1 2 51 419 3102 102 + 2.500534-1 2.538282-7 419 3102 103 + 2.931600+2 0.000000+0 2 1 2 52 419 3102 104 + 1.249822-1 1.479126-7 419 3102 105 + 2.931600+2 0.000000+0 2 1 2 53 419 3102 106 + 7.501318-2 1.120364-7 419 3102 107 + 2.931600+2 0.000000+0 2 1 2 54 419 3102 108 + 2.500424-2 9.760940-8 419 3102 109 + 2.931600+2 0.000000+0 2 1 2 55 419 3102 110 + 2.499959-2 9.120327-8 419 3102 111 + 2.931600+2 0.000000+0 2 1 2 56 419 3102 112 + 4.996584-2 8.246060-8 419 3102 113 + 2.931600+2 0.000000+0 2 1 2 57 419 3102 114 + 3.551256-2 7.345751-8 419 3102 115 + 2.931600+2 0.000000+0 2 1 2 58 419 3102 116 + 5.406798-2 6.515437-8 419 3102 117 + 2.931600+2 0.000000+0 2 1 2 59 419 3102 118 + 1.104439-1 5.244083-8 419 3102 119 + 2.931600+2 0.000000+0 2 1 2 60 419 3102 120 + 7.500412-2 4.092245-8 419 3102 121 + 2.931600+2 0.000000+0 2 1 2 61 419 3102 122 + 1.750005-1 2.967624-8 419 3102 123 + 2.931600+2 0.000000+0 2 1 2 62 419 3102 124 + 1.249908-1 2.001835-8 419 3102 125 + 2.931600+2 0.000000+0 2 1 2 63 419 3102 126 + 1.250023-1 1.453981-8 419 3102 127 + 2.931600+2 0.000000+0 2 1 2 64 419 3102 128 + 7.500158-2 1.126726-8 419 3102 129 + 2.931600+2 0.000000+0 2 1 2 65 419 3102 130 + 1.749987-1 8.328067-9 419 3102 131 + 2.931600+2 0.000000+0 2 1 2 66 419 3102 132 + 6.633368-2 6.188910-9 419 3102 133 + 2.931600+2 0.000000+0 2 1 2 67 419 3102 134 + 9.909232-2 5.116626-9 419 3102 135 + 2.931600+2 0.000000+0 2 1 2 68 419 3102 136 + 3.704178-2 4.384672-9 419 3102 137 + 2.931600+2 0.000000+0 2 1 2 69 419 3102 138 + 4.754331-2 4.004030-9 419 3102 139 + 2.931600+2 0.000000+0 2 1 2 70 419 3102 140 + 1.250059-1 3.365236-9 419 3102 141 + 2.931600+2 0.000000+0 2 1 2 71 419 3102 142 + 1.249976-1 2.679930-9 419 3102 143 + 2.931600+2 0.000000+0 2 1 2 72 419 3102 144 + 5.003745-2 2.341627-9 419 3102 145 + 2.931600+2 0.000000+0 2 1 2 73 419 3102 146 + 4.993593-2 2.200233-9 419 3102 147 + 2.931600+2 0.000000+0 2 1 2 74 419 3102 148 + 5.004291-2 2.091297-9 419 3102 149 + 2.931600+2 0.000000+0 2 1 2 75 419 3102 150 + 5.001871-2 2.012098-9 419 3102 151 + 2.931600+2 0.000000+0 2 1 2 76 419 3102 152 + 4.995181-2 1.963836-9 419 3102 153 + 2.931600+2 0.000000+0 2 1 2 77 419 3102 154 + 5.004532-2 1.945475-9 419 3102 155 + 2.931600+2 0.000000+0 2 1 2 78 419 3102 156 + 4.994607-2 1.961334-9 419 3102 157 + 2.931600+2 0.000000+0 2 1 2 79 419 3102 158 + 5.004668-2 2.011862-9 419 3102 159 + 2.931600+2 0.000000+0 2 1 2 80 419 3102 160 + 4.995963-2 2.104756-9 419 3102 161 + 2.931600+2 0.000000+0 2 1 2 81 419 3102 162 + 5.004191-2 2.247177-9 419 3102 163 + 2.931600+2 0.000000+0 2 1 2 82 419 3102 164 + 4.999650-2 2.451449-9 419 3102 165 + 2.931600+2 0.000000+0 2 1 2 83 419 3102 166 + 4.998948-2 2.737743-9 419 3102 167 + 2.931600+2 0.000000+0 2 1 2 84 419 3102 168 + 5.000869-2 3.134724-9 419 3102 169 + 2.931600+2 0.000000+0 2 1 2 85 419 3102 170 + 4.999842-2 3.688508-9 419 3102 171 + 2.931600+2 0.000000+0 2 1 2 86 419 3102 172 + 5.000118-2 4.476653-9 419 3102 173 + 2.931600+2 0.000000+0 2 1 2 87 419 3102 174 + 5.000901-2 5.627361-9 419 3102 175 + 2.931600+2 0.000000+0 2 1 2 88 419 3102 176 + 9.999236-2 8.733101-9 419 3102 177 + 2.931600+2 0.000000+0 2 1 2 89 419 3102 178 + 5.000293-2 1.453476-8 419 3102 179 + 2.931600+2 0.000000+0 2 1 2 90 419 3102 180 + 2.499432-2 1.945856-8 419 3102 181 + 2.931600+2 0.000000+0 2 1 2 91 419 3102 182 + 9.058439-3 2.227564-8 419 3102 183 + 2.931600+2 0.000000+0 2 1 2 92 419 3102 184 + 4.364640-3 2.349691-8 419 3102 185 + 2.931600+2 0.000000+0 2 1 2 93 419 3102 186 + 1.155783-2 2.498128-8 419 3102 187 + 2.931600+2 0.000000+0 2 1 2 94 419 3102 188 + 1.000055-1 3.305484-8 419 3102 189 + 2.931600+2 0.000000+0 2 1 2 95 419 3102 190 + 1.000048-1 2.461860-8 419 3102 191 + 2.931600+2 0.000000+0 2 1 2 96 419 3102 192 + 4.999968-2 1.247747-8 419 3102 193 + 2.931600+2 0.000000+0 2 1 2 97 419 3102 194 + 5.000082-2 8.112800-9 419 3102 195 + 2.931600+2 0.000000+0 2 1 2 98 419 3102 196 + 1.000015-1 4.719623-9 419 3102 197 + 2.931600+2 0.000000+0 2 1 2 99 419 3102 198 + 1.000045-1 2.537400-9 419 3102 199 + 2.931600+2 0.000000+0 2 1 2 100 419 3102 200 + 5.000769-2 4.278919-5 419 3102 201 + 2.931600+2 0.000000+0 2 1 2 101 419 3102 202 + 4.999119-2 4.561170-5 419 3102 203 + 2.931600+2 0.000000+0 2 1 2 102 419 3102 204 + 4.999926-2 4.432727-5 419 3102 205 + 2.931600+2 0.000000+0 2 1 2 103 419 3102 206 + 5.000523-2 4.299366-5 419 3102 207 + 2.931600+2 0.000000+0 2 1 2 104 419 3102 208 + 5.000401-2 4.191654-5 419 3102 209 + 2.931600+2 0.000000+0 2 1 2 105 419 3102 210 + 5.000589-2 4.090961-5 419 3102 211 + 2.931600+2 0.000000+0 2 1 2 106 419 3102 212 + 4.999047-2 3.985148-5 419 3102 213 + 2.931600+2 0.000000+0 2 1 2 107 419 3102 214 + 5.000951-2 3.888786-5 419 3102 215 + 2.931600+2 0.000000+0 2 1 2 108 419 3102 216 + 4.999941-2 3.799974-5 419 3102 217 + 2.931600+2 0.000000+0 2 1 2 109 419 3102 218 + 4.999652-2 3.708075-5 419 3102 219 + 2.931600+2 0.000000+0 2 1 2 110 419 3102 220 + 5.000559-2 3.627025-5 419 3102 221 + 2.931600+2 0.000000+0 2 1 2 111 419 3102 222 + 4.999651-2 3.546048-5 419 3102 223 + 2.931600+2 0.000000+0 2 1 2 112 419 3102 224 + 5.830021-2 3.464260-5 419 3102 225 + 2.931600+2 0.000000+0 2 1 2 113 419 3102 226 + 4.171240-2 3.392867-5 419 3102 227 + 2.931600+2 0.000000+0 2 1 2 114 419 3102 228 + 9.996150-2 3.303041-5 419 3102 229 + 2.931600+2 0.000000+0 2 1 2 115 419 3102 230 + 4.999362-2 3.212528-5 419 3102 231 + 2.931600+2 0.000000+0 2 1 2 116 419 3102 232 + 5.006558-2 3.148759-5 419 3102 233 + 2.931600+2 0.000000+0 2 1 2 117 419 3102 234 + 4.993355-2 3.096868-5 419 3102 235 + 2.931600+2 0.000000+0 2 1 2 118 419 3102 236 + 5.007376-2 3.048296-5 419 3102 237 + 2.931600+2 0.000000+0 2 1 2 119 419 3102 238 + 4.993732-2 2.997499-5 419 3102 239 + 2.931600+2 0.000000+0 2 1 2 120 419 3102 240 + 5.003866-2 2.954847-5 419 3102 241 + 2.931600+2 0.000000+0 2 1 2 121 419 3102 242 + 5.000960-2 2.915616-5 419 3102 243 + 2.931600+2 0.000000+0 2 1 2 122 419 3102 244 + 4.998941-2 2.876151-5 419 3102 245 + 2.931600+2 0.000000+0 2 1 2 123 419 3102 246 + 4.997139-2 2.844955-5 419 3102 247 + 2.931600+2 0.000000+0 2 1 2 124 419 3102 248 + 5.000419-2 2.813820-5 419 3102 249 + 2.931600+2 0.000000+0 2 1 2 125 419 3102 250 + 5.002058-2 2.786331-5 419 3102 251 + 2.931600+2 0.000000+0 2 1 2 126 419 3102 252 + 5.001758-2 2.762464-5 419 3102 253 + 2.931600+2 0.000000+0 2 1 2 127 419 3102 254 + 4.999298-2 2.740845-5 419 3102 255 + 2.931600+2 0.000000+0 2 1 2 128 419 3102 256 + 4.995837-2 2.723108-5 419 3102 257 + 2.931600+2 0.000000+0 2 1 2 129 419 3102 258 + 3.320467-2 2.710565-5 419 3102 259 + 2.931600+2 0.000000+0 2 1 2 130 419 3102 260 + 1.657101-2 2.705365-5 419 3102 261 + 2.931600+2 0.000000+0 2 1 2 131 419 3102 262 + 8.251205-3 2.702714-5 419 3102 263 + 2.931600+2 0.000000+0 2 1 2 132 419 3102 264 + 8.295947-3 2.700924-5 419 3102 265 + 2.931600+2 0.000000+0 2 1 2 133 419 3102 266 + 3.285066-2 2.696794-5 419 3102 267 + 2.931600+2 0.000000+0 2 1 2 134 419 3102 268 + 4.877513-2 2.693196-5 419 3102 269 + 2.931600+2 0.000000+0 2 1 2 135 419 3102 270 + 4.797896-2 2.694637-5 419 3102 271 + 2.931600+2 0.000000+0 2 1 2 136 419 3102 272 + 4.696325-2 2.702234-5 419 3102 273 + 2.931600+2 0.000000+0 2 1 2 137 419 3102 274 + 4.575857-2 2.710156-5 419 3102 275 + 2.931600+2 0.000000+0 2 1 2 138 419 3102 276 + 4.436130-2 2.702697-5 419 3102 277 + 2.931600+2 0.000000+0 2 1 2 139 419 3102 278 + 4.272236-2 2.674186-5 419 3102 279 + 2.931600+2 0.000000+0 2 1 2 140 419 3102 280 + 7.996083-2 2.571488-5 419 3102 281 + 2.931600+2 0.000000+0 2 1 2 141 419 3102 282 + 7.163072-2 2.319171-5 419 3102 283 + 2.931600+2 0.000000+0 2 1 2 142 419 3102 284 + 6.244693-2 2.071339-5 419 3102 285 + 2.931600+2 0.000000+0 2 1 2 143 419 3102 286 + 2.762670-2 1.920547-5 419 3102 287 + 2.931600+2 0.000000+0 2 1 2 144 419 3102 288 + 2.519976-2 1.837994-5 419 3102 289 + 2.931600+2 0.000000+0 2 1 2 145 419 3102 290 + 2.279019-2 1.766170-5 419 3102 291 + 2.931600+2 0.000000+0 2 1 2 146 419 3102 292 + 2.042454-2 1.682127-5 419 3102 293 + 2.931600+2 0.000000+0 2 1 2 147 419 3102 294 + 1.814095-2 1.599499-5 419 3102 295 + 2.931600+2 0.000000+0 2 1 2 148 419 3102 296 + 1.594743-2 1.524760-5 419 3102 297 + 2.931600+2 0.000000+0 2 1 2 149 419 3102 298 + 1.387599-2 1.450518-5 419 3102 299 + 2.931600+2 0.000000+0 2 1 2 150 419 3102 300 + 8.164821-3 1.395858-5 419 3102 301 + 2.931600+2 0.000000+0 2 1 2 151 419 3102 302 + 3.774230-3 1.367373-5 419 3102 303 + 2.931600+2 0.000000+0 2 1 2 152 419 3102 304 + 1.015727-2 1.331085-5 419 3102 305 + 2.931600+2 0.000000+0 2 1 2 153 419 3102 306 + 8.535760-3 1.279112-5 419 3102 307 + 2.931600+2 0.000000+0 2 1 2 154 419 3102 308 + 7.082350-3 1.241548-5 419 3102 309 + 2.931600+2 0.000000+0 2 1 2 155 419 3102 310 + 5.798926-3 1.215555-5 419 3102 311 + 2.931600+2 0.000000+0 2 1 2 156 419 3102 312 + 4.681662-3 1.204491-5 419 3102 313 + 2.931600+2 0.000000+0 2 1 2 157 419 3102 314 + 3.723613-3 1.202214-5 419 3102 315 + 2.931600+2 0.000000+0 2 1 2 158 419 3102 316 + 2.916027-3 1.198462-5 419 3102 317 + 2.931600+2 0.000000+0 2 1 2 159 419 3102 318 + 2.246747-3 1.176263-5 419 3102 319 + 2.931600+2 0.000000+0 2 1 2 160 419 3102 320 + 1.955082-3 1.140934-5 419 3102 321 + 2.931600+2 0.000000+0 2 1 2 161 419 3102 322 + 1.953961-3 1.107346-5 419 3102 323 + 2.931600+2 0.000000+0 2 1 2 162 419 3102 324 + 1.951830-3 1.062202-5 419 3102 325 + 2.931600+2 0.000000+0 2 1 2 163 419 3102 326 + 1.955070-3 1.001410-5 419 3102 327 + 2.931600+2 0.000000+0 2 1 2 164 419 3102 328 + 9.765915-4 9.471959-6 419 3102 329 + 2.931600+2 0.000000+0 2 1 2 165 419 3102 330 + 9.917526-3 8.932691-6 419 3102 331 + 2.931600+2 0.000000+0 2 1 2 166 419 3102 332 + 1.527796+0 8.144689-6 419 3102 333 + 2.931600+2 0.000000+0 2 1 2 167 419 3102 334 + 5.083487+0 7.704643-6 419 3102 335 + 2.931600+2 0.000000+0 2 1 2 168 419 3102 336 + 8.848206+0 7.303548-6 419 3102 337 + 2.931600+2 0.000000+0 2 1 2 169 419 3102 338 + 6.806587+0 6.899015-6 419 3102 339 + 2.931600+2 0.000000+0 2 1 2 170 419 3102 340 + 2.298726+0 6.501875-6 419 3102 341 + 2.931600+2 0.000000+0 2 1 2 171 419 3102 342 + 3.480231-1 6.070664-6 419 3102 343 + 2.931600+2 0.000000+0 2 1 2 172 419 3102 344 + 3.382279-3 5.005774-5 419 3102 345 + 2.931600+2 0.000000+0 2 1 2 173 419 3102 346 + 1.693835-3 2.203428-4 419 3102 347 + 2.931600+2 0.000000+0 2 1 2 174 419 3102 348 + 1.691495-3 3.101944-4 419 3102 349 + 2.931600+2 0.000000+0 2 1 2 175 419 3102 350 + 8.453596-3 3.051077-4 419 3102 351 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3103 1 + 2.931600+2 0.000000+0 2 1 2 1 419 3103 2 + 4.319880+4 6.904489+1 419 3103 3 + 2.931600+2 0.000000+0 2 1 2 2 419 3103 4 + 4.541324+3 3.316063+1 419 3103 5 + 2.931600+2 0.000000+0 2 1 2 3 419 3103 6 + 2.500158-1 1.727535+1 419 3103 7 + 2.931600+2 0.000000+0 2 1 2 4 419 3103 8 + 2.500006-1 1.524841+1 419 3103 9 + 2.931600+2 0.000000+0 2 1 2 5 419 3103 10 + 2.499989-1 1.349429+1 419 3103 11 + 2.931600+2 0.000000+0 2 1 2 6 419 3103 12 + 2.500522-1 1.188172+1 419 3103 13 + 2.931600+2 0.000000+0 2 1 2 7 419 3103 14 + 2.499747-1 1.047572+1 419 3103 15 + 2.931600+2 0.000000+0 2 1 2 8 419 3103 16 + 2.499950-1 9.250367+0 419 3103 17 + 2.931600+2 0.000000+0 2 1 2 9 419 3103 18 + 2.500120-1 8.164587+0 419 3103 19 + 2.931600+2 0.000000+0 2 1 2 10 419 3103 20 + 2.499837-1 7.205663+0 419 3103 21 + 2.931600+2 0.000000+0 2 1 2 11 419 3103 22 + 2.500208-1 6.358434+0 419 3103 23 + 2.931600+2 0.000000+0 2 1 2 12 419 3103 24 + 2.499994-1 5.611641+0 419 3103 25 + 2.931600+2 0.000000+0 2 1 2 13 419 3103 26 + 2.500068-1 4.952689+0 419 3103 27 + 2.931600+2 0.000000+0 2 1 2 14 419 3103 28 + 2.499982-1 4.369804+0 419 3103 29 + 2.931600+2 0.000000+0 2 1 2 15 419 3103 30 + 2.499987-1 3.850423+0 419 3103 31 + 2.931600+2 0.000000+0 2 1 2 16 419 3103 32 + 2.500377-1 3.416671+0 419 3103 33 + 2.931600+2 0.000000+0 2 1 2 17 419 3103 34 + 2.499479-1 3.003208+0 419 3103 35 + 2.931600+2 0.000000+0 2 1 2 18 419 3103 36 + 2.500173-1 2.650171+0 419 3103 37 + 2.931600+2 0.000000+0 2 1 2 19 419 3103 38 + 2.500100-1 2.338889+0 419 3103 39 + 2.931600+2 0.000000+0 2 1 2 20 419 3103 40 + 2.500236-1 2.064171+0 419 3103 41 + 2.931600+2 0.000000+0 2 1 2 21 419 3103 42 + 2.499879-1 1.822050+0 419 3103 43 + 2.931600+2 0.000000+0 2 1 2 22 419 3103 44 + 2.500056-1 1.607848+0 419 3103 45 + 2.931600+2 0.000000+0 2 1 2 23 419 3103 46 + 2.500029-1 1.418570+0 419 3103 47 + 2.931600+2 0.000000+0 2 1 2 24 419 3103 48 + 2.499980-1 1.251593+0 419 3103 49 + 2.931600+2 0.000000+0 2 1 2 25 419 3103 50 + 2.499905-1 1.105516+0 419 3103 51 + 2.931600+2 0.000000+0 2 1 2 26 419 3103 52 + 2.500449-1 9.751836-1 419 3103 53 + 2.931600+2 0.000000+0 2 1 2 27 419 3103 54 + 2.499670-1 8.594060-1 419 3103 55 + 2.931600+2 0.000000+0 2 1 2 28 419 3103 56 + 2.500068-1 7.663201-1 419 3103 57 + 2.931600+2 0.000000+0 2 1 2 29 419 3103 58 + 2.500344-1 6.696563-1 419 3103 59 + 2.931600+2 0.000000+0 2 1 2 30 419 3103 60 + 2.499915-1 5.912056-1 419 3103 61 + 2.931600+2 0.000000+0 2 1 2 31 419 3103 62 + 2.500083-1 5.229616-1 419 3103 63 + 2.931600+2 0.000000+0 2 1 2 32 419 3103 64 + 2.500005-1 4.598166-1 419 3103 65 + 2.931600+2 0.000000+0 2 1 2 33 419 3103 66 + 2.500054-1 4.074061-1 419 3103 67 + 2.931600+2 0.000000+0 2 1 2 34 419 3103 68 + 2.500019-1 3.580367-1 419 3103 69 + 2.931600+2 0.000000+0 2 1 2 35 419 3103 70 + 2.499942-1 3.164161-1 419 3103 71 + 2.931600+2 0.000000+0 2 1 2 36 419 3103 72 + 2.500204-1 2.793087-1 419 3103 73 + 2.931600+2 0.000000+0 2 1 2 37 419 3103 74 + 1.000055-1 2.557752-1 419 3103 75 + 2.931600+2 0.000000+0 2 1 2 38 419 3103 76 + 1.000025-1 2.434383-1 419 3103 77 + 2.931600+2 0.000000+0 2 1 2 39 419 3103 78 + 4.999347-2 2.335837-1 419 3103 79 + 2.931600+2 0.000000+0 2 1 2 40 419 3103 80 + 4.998229-2 2.280400-1 419 3103 81 + 2.931600+2 0.000000+0 2 1 2 41 419 3103 82 + 1.000174-1 2.195947-1 419 3103 83 + 2.931600+2 0.000000+0 2 1 2 42 419 3103 84 + 9.999096-2 2.097277-1 419 3103 85 + 2.931600+2 0.000000+0 2 1 2 43 419 3103 86 + 9.999992-2 2.003985-1 419 3103 87 + 2.931600+2 0.000000+0 2 1 2 44 419 3103 88 + 1.500060-1 1.874017-1 419 3103 89 + 2.931600+2 0.000000+0 2 1 2 45 419 3103 90 + 2.500021-1 1.703471-1 419 3103 91 + 2.931600+2 0.000000+0 2 1 2 46 419 3103 92 + 2.500058-1 1.492751-1 419 3103 93 + 2.931600+2 0.000000+0 2 1 2 47 419 3103 94 + 2.500081-1 1.327747-1 419 3103 95 + 2.931600+2 0.000000+0 2 1 2 48 419 3103 96 + 1.500464-1 1.193243-1 419 3103 97 + 2.931600+2 0.000000+0 2 1 2 49 419 3103 98 + 9.997715-2 1.117928-1 419 3103 99 + 2.931600+2 0.000000+0 2 1 2 50 419 3103 100 + 2.499605-1 1.027287-1 419 3103 101 + 2.931600+2 0.000000+0 2 1 2 51 419 3103 102 + 2.500539-1 9.100167-2 419 3103 103 + 2.931600+2 0.000000+0 2 1 2 52 419 3103 104 + 1.249823-1 8.235573-2 419 3103 105 + 2.931600+2 0.000000+0 2 1 2 53 419 3103 106 + 7.501323-2 7.838619-2 419 3103 107 + 2.931600+2 0.000000+0 2 1 2 54 419 3103 108 + 2.500424-2 7.630528-2 419 3103 109 + 2.931600+2 0.000000+0 2 1 2 55 419 3103 110 + 2.499961-2 7.542662-2 419 3103 111 + 2.931600+2 0.000000+0 2 1 2 56 419 3103 112 + 4.996597-2 7.416678-2 419 3103 113 + 2.931600+2 0.000000+0 2 1 2 57 419 3103 114 + 3.551257-2 7.267621-2 419 3103 115 + 2.931600+2 0.000000+0 2 1 2 58 419 3103 116 + 5.406806-2 7.103978-2 419 3103 117 + 2.931600+2 0.000000+0 2 1 2 59 419 3103 118 + 1.104441-1 6.803712-2 419 3103 119 + 2.931600+2 0.000000+0 2 1 2 60 419 3103 120 + 7.500419-2 6.523156-2 419 3103 121 + 2.931600+2 0.000000+0 2 1 2 61 419 3103 122 + 1.750007-1 6.139485-2 419 3103 123 + 2.931600+2 0.000000+0 2 1 2 62 419 3103 124 + 1.249910-1 6.890700-2 419 3103 125 + 2.931600+2 0.000000+0 2 1 2 63 419 3103 126 + 1.250025-1 8.551467-2 419 3103 127 + 2.931600+2 0.000000+0 2 1 2 64 419 3103 128 + 7.500169-2 1.019720-1 419 3103 129 + 2.931600+2 0.000000+0 2 1 2 65 419 3103 130 + 1.749988-1 1.277692-1 419 3103 131 + 2.931600+2 0.000000+0 2 1 2 66 419 3103 132 + 6.633376-2 1.587712-1 419 3103 133 + 2.931600+2 0.000000+0 2 1 2 67 419 3103 134 + 9.909254-2 1.828775-1 419 3103 135 + 2.931600+2 0.000000+0 2 1 2 68 419 3103 136 + 3.704179-2 2.040993-1 419 3103 137 + 2.931600+2 0.000000+0 2 1 2 69 419 3103 138 + 4.754338-2 2.198461-1 419 3103 139 + 2.931600+2 0.000000+0 2 1 2 70 419 3103 140 + 1.250060-1 2.568611-1 419 3103 141 + 2.931600+2 0.000000+0 2 1 2 71 419 3103 142 + 1.249977-1 3.208237-1 419 3103 143 + 2.931600+2 0.000000+0 2 1 2 72 419 3103 144 + 5.003758-2 3.762253-1 419 3103 145 + 2.931600+2 0.000000+0 2 1 2 73 419 3103 146 + 4.993605-2 4.104159-1 419 3103 147 + 2.931600+2 0.000000+0 2 1 2 74 419 3103 148 + 5.004302-2 4.463615-1 419 3103 149 + 2.931600+2 0.000000+0 2 1 2 75 419 3103 150 + 5.001871-2 4.841940-1 419 3103 151 + 2.931600+2 0.000000+0 2 1 2 76 419 3103 152 + 4.995191-2 5.289718-1 419 3103 153 + 2.931600+2 0.000000+0 2 1 2 77 419 3103 154 + 5.004543-2 5.802984-1 419 3103 155 + 2.931600+2 0.000000+0 2 1 2 78 419 3103 156 + 4.994617-2 6.342524-1 419 3103 157 + 2.931600+2 0.000000+0 2 1 2 79 419 3103 158 + 5.004682-2 6.909742-1 419 3103 159 + 2.931600+2 0.000000+0 2 1 2 80 419 3103 160 + 4.995962-2 7.506490-1 419 3103 161 + 2.931600+2 0.000000+0 2 1 2 81 419 3103 162 + 5.004203-2 8.190487-1 419 3103 163 + 2.931600+2 0.000000+0 2 1 2 82 419 3103 164 + 4.999659-2 8.951566-1 419 3103 165 + 2.931600+2 0.000000+0 2 1 2 83 419 3103 166 + 4.998963-2 9.722820-1 419 3103 167 + 2.931600+2 0.000000+0 2 1 2 84 419 3103 168 + 5.000882-2 9.849424-1 419 3103 169 + 2.931600+2 0.000000+0 2 1 2 85 419 3103 170 + 4.999863-2 9.688431-1 419 3103 171 + 2.931600+2 0.000000+0 2 1 2 86 419 3103 172 + 5.000142-2 9.519199-1 419 3103 173 + 2.931600+2 0.000000+0 2 1 2 87 419 3103 174 + 5.000916-2 9.341269-1 419 3103 175 + 2.931600+2 0.000000+0 2 1 2 88 419 3103 176 + 9.999264-2 9.055922-1 419 3103 177 + 2.931600+2 0.000000+0 2 1 2 89 419 3103 178 + 5.000320-2 8.750916-1 419 3103 179 + 2.931600+2 0.000000+0 2 1 2 90 419 3103 180 + 2.499435-2 8.589304-1 419 3103 181 + 2.931600+2 0.000000+0 2 1 2 91 419 3103 182 + 9.058538-3 8.513854-1 419 3103 183 + 2.931600+2 0.000000+0 2 1 2 92 419 3103 184 + 4.364640-3 8.483682-1 419 3103 185 + 2.931600+2 0.000000+0 2 1 2 93 419 3103 186 + 1.155782-2 8.451224-1 419 3103 187 + 2.931600+2 0.000000+0 2 1 2 94 419 3103 188 + 1.000062-1 8.298085-1 419 3103 189 + 2.931600+2 0.000000+0 2 1 2 95 419 3103 190 + 1.000052-1 8.007294-1 419 3103 191 + 2.931600+2 0.000000+0 2 1 2 96 419 3103 192 + 4.999999-2 7.770341-1 419 3103 193 + 2.931600+2 0.000000+0 2 1 2 97 419 3103 194 + 5.000110-2 7.602789-1 419 3103 195 + 2.931600+2 0.000000+0 2 1 2 98 419 3103 196 + 1.000021-1 7.388494-1 419 3103 197 + 2.931600+2 0.000000+0 2 1 2 99 419 3103 198 + 1.000048-1 7.096554-1 419 3103 199 + 2.931600+2 0.000000+0 2 1 2 100 419 3103 200 + 5.000774-2 6.863979-1 419 3103 201 + 2.931600+2 0.000000+0 2 1 2 101 419 3103 202 + 4.999119-2 6.719854-1 419 3103 203 + 2.931600+2 0.000000+0 2 1 2 102 419 3103 204 + 4.999926-2 6.570182-1 419 3103 205 + 2.931600+2 0.000000+0 2 1 2 103 419 3103 206 + 5.000524-2 6.413155-1 419 3103 207 + 2.931600+2 0.000000+0 2 1 2 104 419 3103 208 + 5.000401-2 6.273198-1 419 3103 209 + 2.931600+2 0.000000+0 2 1 2 105 419 3103 210 + 5.000589-2 6.141754-1 419 3103 211 + 2.931600+2 0.000000+0 2 1 2 106 419 3103 212 + 4.999047-2 6.003617-1 419 3103 213 + 2.931600+2 0.000000+0 2 1 2 107 419 3103 214 + 5.000951-2 5.873500-1 419 3103 215 + 2.931600+2 0.000000+0 2 1 2 108 419 3103 216 + 4.999941-2 5.749389-1 419 3103 217 + 2.931600+2 0.000000+0 2 1 2 109 419 3103 218 + 4.999649-2 5.619517-1 419 3103 219 + 2.931600+2 0.000000+0 2 1 2 110 419 3103 220 + 5.000559-2 5.497829-1 419 3103 221 + 2.931600+2 0.000000+0 2 1 2 111 419 3103 222 + 4.999654-2 5.376417-1 419 3103 223 + 2.931600+2 0.000000+0 2 1 2 112 419 3103 224 + 5.830013-2 5.246443-1 419 3103 225 + 2.931600+2 0.000000+0 2 1 2 113 419 3103 226 + 4.171240-2 5.130789-1 419 3103 227 + 2.931600+2 0.000000+0 2 1 2 114 419 3103 228 + 9.996150-2 4.976780-1 419 3103 229 + 2.931600+2 0.000000+0 2 1 2 115 419 3103 230 + 4.999362-2 4.815437-1 419 3103 231 + 2.931600+2 0.000000+0 2 1 2 116 419 3103 232 + 5.006558-2 4.701354-1 419 3103 233 + 2.931600+2 0.000000+0 2 1 2 117 419 3103 234 + 4.993355-2 4.600434-1 419 3103 235 + 2.931600+2 0.000000+0 2 1 2 118 419 3103 236 + 5.007376-2 4.501831-1 419 3103 237 + 2.931600+2 0.000000+0 2 1 2 119 419 3103 238 + 4.993732-2 4.398537-1 419 3103 239 + 2.931600+2 0.000000+0 2 1 2 120 419 3103 240 + 5.003866-2 4.304696-1 419 3103 241 + 2.931600+2 0.000000+0 2 1 2 121 419 3103 242 + 5.000960-2 4.213704-1 419 3103 243 + 2.931600+2 0.000000+0 2 1 2 122 419 3103 244 + 4.998941-2 4.120665-1 419 3103 245 + 2.931600+2 0.000000+0 2 1 2 123 419 3103 246 + 4.997139-2 4.037949-1 419 3103 247 + 2.931600+2 0.000000+0 2 1 2 124 419 3103 248 + 5.000419-2 3.953416-1 419 3103 249 + 2.931600+2 0.000000+0 2 1 2 125 419 3103 250 + 5.002058-2 3.872500-1 419 3103 251 + 2.931600+2 0.000000+0 2 1 2 126 419 3103 252 + 5.001758-2 3.795079-1 419 3103 253 + 2.931600+2 0.000000+0 2 1 2 127 419 3103 254 + 4.999298-2 3.719062-1 419 3103 255 + 2.931600+2 0.000000+0 2 1 2 128 419 3103 256 + 4.995837-2 3.646884-1 419 3103 257 + 2.931600+2 0.000000+0 2 1 2 129 419 3103 258 + 3.320467-2 3.588046-1 419 3103 259 + 2.931600+2 0.000000+0 2 1 2 130 419 3103 260 + 1.657101-2 3.555116-1 419 3103 261 + 2.931600+2 0.000000+0 2 1 2 131 419 3103 262 + 8.251205-3 3.538330-1 419 3103 263 + 2.931600+2 0.000000+0 2 1 2 132 419 3103 264 + 8.295947-3 3.526995-1 419 3103 265 + 2.931600+2 0.000000+0 2 1 2 133 419 3103 266 + 3.285066-2 3.498846-1 419 3103 267 + 2.931600+2 0.000000+0 2 1 2 134 419 3103 268 + 4.877513-2 3.448039-1 419 3103 269 + 2.931600+2 0.000000+0 2 1 2 135 419 3103 270 + 4.797893-2 3.386927-1 419 3103 271 + 2.931600+2 0.000000+0 2 1 2 136 419 3103 272 + 4.696325-2 3.327820-1 419 3103 273 + 2.931600+2 0.000000+0 2 1 2 137 419 3103 274 + 4.575866-2 3.266485-1 419 3103 275 + 2.931600+2 0.000000+0 2 1 2 138 419 3103 276 + 4.436123-2 3.191403-1 419 3103 277 + 2.931600+2 0.000000+0 2 1 2 139 419 3103 278 + 4.272225-2 3.093862-1 419 3103 279 + 2.931600+2 0.000000+0 2 1 2 140 419 3103 280 + 7.996088-2 2.902395-1 419 3103 281 + 2.931600+2 0.000000+0 2 1 2 141 419 3103 282 + 7.163086-2 2.652236-1 419 3103 283 + 2.931600+2 0.000000+0 2 1 2 142 419 3103 284 + 6.244718-2 2.464839-1 419 3103 285 + 2.931600+2 0.000000+0 2 1 2 143 419 3103 286 + 2.762670-2 2.325051-1 419 3103 287 + 2.931600+2 0.000000+0 2 1 2 144 419 3103 288 + 2.519994-2 2.237884-1 419 3103 289 + 2.931600+2 0.000000+0 2 1 2 145 419 3103 290 + 2.279021-2 2.158115-1 419 3103 291 + 2.931600+2 0.000000+0 2 1 2 146 419 3103 292 + 2.042454-2 2.042773-1 419 3103 293 + 2.931600+2 0.000000+0 2 1 2 147 419 3103 294 + 1.814099-2 1.937302-1 419 3103 295 + 2.931600+2 0.000000+0 2 1 2 148 419 3103 296 + 1.594721-2 1.855133-1 419 3103 297 + 2.931600+2 0.000000+0 2 1 2 149 419 3103 298 + 1.387605-2 1.801845-1 419 3103 299 + 2.931600+2 0.000000+0 2 1 2 150 419 3103 300 + 8.164822-3 1.776060-1 419 3103 301 + 2.931600+2 0.000000+0 2 1 2 151 419 3103 302 + 3.774167-3 1.761289-1 419 3103 303 + 2.931600+2 0.000000+0 2 1 2 152 419 3103 304 + 1.015748-2 1.738336-1 419 3103 305 + 2.931600+2 0.000000+0 2 1 2 153 419 3103 306 + 8.535769-3 1.703703-1 419 3103 307 + 2.931600+2 0.000000+0 2 1 2 154 419 3103 308 + 7.082301-3 1.671042-1 419 3103 309 + 2.931600+2 0.000000+0 2 1 2 155 419 3103 310 + 5.798922-3 1.622348-1 419 3103 311 + 2.931600+2 0.000000+0 2 1 2 156 419 3103 312 + 4.681774-3 1.569681-1 419 3103 313 + 2.931600+2 0.000000+0 2 1 2 157 419 3103 314 + 3.723673-3 1.514941-1 419 3103 315 + 2.931600+2 0.000000+0 2 1 2 158 419 3103 316 + 2.915973-3 1.454517-1 419 3103 317 + 2.931600+2 0.000000+0 2 1 2 159 419 3103 318 + 2.246747-3 1.395043-1 419 3103 319 + 2.931600+2 0.000000+0 2 1 2 160 419 3103 320 + 1.955082-3 1.349286-1 419 3103 321 + 2.931600+2 0.000000+0 2 1 2 161 419 3103 322 + 1.953961-3 1.318031-1 419 3103 323 + 2.931600+2 0.000000+0 2 1 2 162 419 3103 324 + 1.951830-3 1.270859-1 419 3103 325 + 2.931600+2 0.000000+0 2 1 2 163 419 3103 326 + 1.955070-3 1.206073-1 419 3103 327 + 2.931600+2 0.000000+0 2 1 2 164 419 3103 328 + 9.765915-4 1.148968-1 419 3103 329 + 2.931600+2 0.000000+0 2 1 2 165 419 3103 330 + 9.917526-3 1.090412-1 419 3103 331 + 2.931600+2 0.000000+0 2 1 2 166 419 3103 332 + 1.527796+0 1.001303-1 419 3103 333 + 2.931600+2 0.000000+0 2 1 2 167 419 3103 334 + 5.083487+0 9.504584-2 419 3103 335 + 2.931600+2 0.000000+0 2 1 2 168 419 3103 336 + 8.848206+0 9.046482-2 419 3103 337 + 2.931600+2 0.000000+0 2 1 2 169 419 3103 338 + 6.806587+0 8.608077-2 419 3103 339 + 2.931600+2 0.000000+0 2 1 2 170 419 3103 340 + 2.298726+0 8.193143-2 419 3103 341 + 2.931600+2 0.000000+0 2 1 2 171 419 3103 342 + 3.480231-1 7.758452-2 419 3103 343 + 2.931600+2 0.000000+0 2 1 2 172 419 3103 344 + 3.382279-3 5.866909-2 419 3103 345 + 2.931600+2 0.000000+0 2 1 2 173 419 3103 346 + 1.693835-3 2.308989-2 419 3103 347 + 2.931600+2 0.000000+0 2 1 2 174 419 3103 348 + 1.691495-3 5.249118-3 419 3103 349 + 2.931600+2 0.000000+0 2 1 2 175 419 3103 350 + 8.453596-3 9.252973-3 419 3103 351 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3104 1 + 2.931600+2 0.000000+0 2 1 2 141 419 3104 2 + 7.163080-2 5.673577-5 419 3104 3 + 2.931600+2 0.000000+0 2 1 2 142 419 3104 4 + 6.244698-2 4.557150-3 419 3104 5 + 2.931600+2 0.000000+0 2 1 2 143 419 3104 6 + 2.762652-2 1.873943-2 419 3104 7 + 2.931600+2 0.000000+0 2 1 2 144 419 3104 8 + 2.519972-2 2.961996-2 419 3104 9 + 2.931600+2 0.000000+0 2 1 2 145 419 3104 10 + 2.279022-2 3.870557-2 419 3104 11 + 2.931600+2 0.000000+0 2 1 2 146 419 3104 12 + 2.042454-2 4.551245-2 419 3104 13 + 2.931600+2 0.000000+0 2 1 2 147 419 3104 14 + 1.814121-2 5.058599-2 419 3104 15 + 2.931600+2 0.000000+0 2 1 2 148 419 3104 16 + 1.594717-2 5.436773-2 419 3104 17 + 2.931600+2 0.000000+0 2 1 2 149 419 3104 18 + 1.387605-2 5.697614-2 419 3104 19 + 2.931600+2 0.000000+0 2 1 2 150 419 3104 20 + 8.164821-3 5.855794-2 419 3104 21 + 2.931600+2 0.000000+0 2 1 2 151 419 3104 22 + 3.774194-3 5.983551-2 419 3104 23 + 2.931600+2 0.000000+0 2 1 2 152 419 3104 24 + 1.015723-2 6.457484-2 419 3104 25 + 2.931600+2 0.000000+0 2 1 2 153 419 3104 26 + 8.535770-3 7.652275-2 419 3104 27 + 2.931600+2 0.000000+0 2 1 2 154 419 3104 28 + 7.082301-3 8.789297-2 419 3104 29 + 2.931600+2 0.000000+0 2 1 2 155 419 3104 30 + 5.798906-3 9.528198-2 419 3104 31 + 2.931600+2 0.000000+0 2 1 2 156 419 3104 32 + 4.681662-3 1.002148-1 419 3104 33 + 2.931600+2 0.000000+0 2 1 2 157 419 3104 34 + 3.723613-3 1.048067-1 419 3104 35 + 2.931600+2 0.000000+0 2 1 2 158 419 3104 36 + 2.916027-3 1.104528-1 419 3104 37 + 2.931600+2 0.000000+0 2 1 2 159 419 3104 38 + 2.246747-3 1.166681-1 419 3104 39 + 2.931600+2 0.000000+0 2 1 2 160 419 3104 40 + 1.955090-3 1.219345-1 419 3104 41 + 2.931600+2 0.000000+0 2 1 2 161 419 3104 42 + 1.953966-3 1.300803-1 419 3104 43 + 2.931600+2 0.000000+0 2 1 2 162 419 3104 44 + 1.951836-3 1.391234-1 419 3104 45 + 2.931600+2 0.000000+0 2 1 2 163 419 3104 46 + 1.955078-3 1.421043-1 419 3104 47 + 2.931600+2 0.000000+0 2 1 2 164 419 3104 48 + 9.765916-4 1.406444-1 419 3104 49 + 2.931600+2 0.000000+0 2 1 2 165 419 3104 50 + 9.893008-3 1.371106-1 419 3104 51 + 2.931600+2 0.000000+0 2 1 2 166 419 3104 52 + 1.531876+0 1.302377-1 419 3104 53 + 2.931600+2 0.000000+0 2 1 2 167 419 3104 54 + 5.083488+0 1.257694-1 419 3104 55 + 2.931600+2 0.000000+0 2 1 2 168 419 3104 56 + 8.848180+0 1.214479-1 419 3104 57 + 2.931600+2 0.000000+0 2 1 2 169 419 3104 58 + 6.806517+0 1.168898-1 419 3104 59 + 2.931600+2 0.000000+0 2 1 2 170 419 3104 60 + 2.304996+0 1.123697-1 419 3104 61 + 2.931600+2 0.000000+0 2 1 2 171 419 3104 62 + 3.504250-1 1.073413-1 419 3104 63 + 2.931600+2 0.000000+0 2 1 2 172 419 3104 64 + 3.382293-3 8.725609-2 419 3104 65 + 2.931600+2 0.000000+0 2 1 2 173 419 3104 66 + 1.693836-3 5.588126-2 419 3104 67 + 2.931600+2 0.000000+0 2 1 2 174 419 3104 68 + 1.691503-3 3.692739-2 419 3104 69 + 2.931600+2 0.000000+0 2 1 2 175 419 3104 70 + 8.453622-3 2.006072-2 419 3104 71 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3105 1 + 2.931600+2 0.000000+0 2 1 2 139 419 3105 2 + 4.272225-2 2.898384-4 419 3105 3 + 2.931600+2 0.000000+0 2 1 2 140 419 3105 4 + 7.996083-2 7.551274-3 419 3105 5 + 2.931600+2 0.000000+0 2 1 2 141 419 3105 6 + 7.163080-2 3.793809-2 419 3105 7 + 2.931600+2 0.000000+0 2 1 2 142 419 3105 8 + 6.244698-2 6.686153-2 419 3105 9 + 2.931600+2 0.000000+0 2 1 2 143 419 3105 10 + 2.762652-2 7.987701-2 419 3105 11 + 2.931600+2 0.000000+0 2 1 2 144 419 3105 12 + 2.519972-2 8.535889-2 419 3105 13 + 2.931600+2 0.000000+0 2 1 2 145 419 3105 14 + 2.279022-2 8.978729-2 419 3105 15 + 2.931600+2 0.000000+0 2 1 2 146 419 3105 16 + 2.042454-2 9.225704-2 419 3105 17 + 2.931600+2 0.000000+0 2 1 2 147 419 3105 18 + 1.814121-2 9.376213-2 419 3105 19 + 2.931600+2 0.000000+0 2 1 2 148 419 3105 20 + 1.594717-2 9.476983-2 419 3105 21 + 2.931600+2 0.000000+0 2 1 2 149 419 3105 22 + 1.387605-2 9.478580-2 419 3105 23 + 2.931600+2 0.000000+0 2 1 2 150 419 3105 24 + 8.164821-3 9.419604-2 419 3105 25 + 2.931600+2 0.000000+0 2 1 2 151 419 3105 26 + 3.774194-3 9.358306-2 419 3105 27 + 2.931600+2 0.000000+0 2 1 2 152 419 3105 28 + 1.015723-2 9.212766-2 419 3105 29 + 2.931600+2 0.000000+0 2 1 2 153 419 3105 30 + 8.535770-3 8.882881-2 419 3105 31 + 2.931600+2 0.000000+0 2 1 2 154 419 3105 32 + 7.082301-3 8.522456-2 419 3105 33 + 2.931600+2 0.000000+0 2 1 2 155 419 3105 34 + 5.798906-3 8.130717-2 419 3105 35 + 2.931600+2 0.000000+0 2 1 2 156 419 3105 36 + 4.681662-3 7.750251-2 419 3105 37 + 2.931600+2 0.000000+0 2 1 2 157 419 3105 38 + 3.723613-3 7.379289-2 419 3105 39 + 2.931600+2 0.000000+0 2 1 2 158 419 3105 40 + 2.916027-3 6.968426-2 419 3105 41 + 2.931600+2 0.000000+0 2 1 2 159 419 3105 42 + 2.246747-3 6.467014-2 419 3105 43 + 2.931600+2 0.000000+0 2 1 2 160 419 3105 44 + 1.955090-3 5.927550-2 419 3105 45 + 2.931600+2 0.000000+0 2 1 2 161 419 3105 46 + 1.953966-3 5.519576-2 419 3105 47 + 2.931600+2 0.000000+0 2 1 2 162 419 3105 48 + 1.951836-3 5.089391-2 419 3105 49 + 2.931600+2 0.000000+0 2 1 2 163 419 3105 50 + 1.955078-3 4.586892-2 419 3105 51 + 2.931600+2 0.000000+0 2 1 2 164 419 3105 52 + 9.765916-4 4.210516-2 419 3105 53 + 2.931600+2 0.000000+0 2 1 2 165 419 3105 54 + 9.893008-3 3.890596-2 419 3105 55 + 2.931600+2 0.000000+0 2 1 2 166 419 3105 56 + 1.531876+0 3.455406-2 419 3105 57 + 2.931600+2 0.000000+0 2 1 2 167 419 3105 58 + 5.083488+0 3.226313-2 419 3105 59 + 2.931600+2 0.000000+0 2 1 2 168 419 3105 60 + 8.848180+0 3.026778-2 419 3105 61 + 2.931600+2 0.000000+0 2 1 2 169 419 3105 62 + 6.806517+0 2.837910-2 419 3105 63 + 2.931600+2 0.000000+0 2 1 2 170 419 3105 64 + 2.304996+0 2.663804-2 419 3105 65 + 2.931600+2 0.000000+0 2 1 2 171 419 3105 66 + 3.504250-1 2.484186-2 419 3105 67 + 2.931600+2 0.000000+0 2 1 2 172 419 3105 68 + 3.382293-3 1.798008-2 419 3105 69 + 2.931600+2 0.000000+0 2 1 2 173 419 3105 70 + 1.693836-3 6.319831-3 419 3105 71 + 2.931600+2 0.000000+0 2 1 2 174 419 3105 72 + 1.691503-3 2.210569-4 419 3105 73 + 2.931600+2 0.000000+0 2 1 2 175 419 3105 74 + 8.453626-3 4.94236-10 419 3105 75 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3106 1 + 2.931600+2 0.000000+0 2 1 2 135 419 3106 2 + 4.797893-2 1.194876-4 419 3106 3 + 2.931600+2 0.000000+0 2 1 2 136 419 3106 4 + 4.696325-2 9.347052-4 419 3106 5 + 2.931600+2 0.000000+0 2 1 2 137 419 3106 6 + 4.575857-2 1.927648-3 419 3106 7 + 2.931600+2 0.000000+0 2 1 2 138 419 3106 8 + 4.436130-2 7.722535-3 419 3106 9 + 2.931600+2 0.000000+0 2 1 2 139 419 3106 10 + 4.272236-2 1.959157-2 419 3106 11 + 2.931600+2 0.000000+0 2 1 2 140 419 3106 12 + 7.996083-2 4.596909-2 419 3106 13 + 2.931600+2 0.000000+0 2 1 2 141 419 3106 14 + 7.163080-2 7.674193-2 419 3106 15 + 2.931600+2 0.000000+0 2 1 2 142 419 3106 16 + 6.244698-2 9.274271-2 419 3106 17 + 2.931600+2 0.000000+0 2 1 2 143 419 3106 18 + 2.762652-2 9.812575-2 419 3106 19 + 2.931600+2 0.000000+0 2 1 2 144 419 3106 20 + 2.519972-2 1.002879-1 419 3106 21 + 2.931600+2 0.000000+0 2 1 2 145 419 3106 22 + 2.279022-2 1.021933-1 419 3106 23 + 2.931600+2 0.000000+0 2 1 2 146 419 3106 24 + 2.042454-2 1.024447-1 419 3106 25 + 2.931600+2 0.000000+0 2 1 2 147 419 3106 26 + 1.814121-2 1.021314-1 419 3106 27 + 2.931600+2 0.000000+0 2 1 2 148 419 3106 28 + 1.594717-2 1.017035-1 419 3106 29 + 2.931600+2 0.000000+0 2 1 2 149 419 3106 30 + 1.387605-2 1.005327-1 419 3106 31 + 2.931600+2 0.000000+0 2 1 2 150 419 3106 32 + 8.164821-3 9.910704-2 419 3106 33 + 2.931600+2 0.000000+0 2 1 2 151 419 3106 34 + 3.774194-3 9.806045-2 419 3106 35 + 2.931600+2 0.000000+0 2 1 2 152 419 3106 36 + 1.015723-2 9.609246-2 419 3106 37 + 2.931600+2 0.000000+0 2 1 2 153 419 3106 38 + 8.535770-3 9.209888-2 419 3106 39 + 2.931600+2 0.000000+0 2 1 2 154 419 3106 40 + 7.082301-3 8.793807-2 419 3106 41 + 2.931600+2 0.000000+0 2 1 2 155 419 3106 42 + 5.798906-3 8.356444-2 419 3106 43 + 2.931600+2 0.000000+0 2 1 2 156 419 3106 44 + 4.681662-3 7.937905-2 419 3106 45 + 2.931600+2 0.000000+0 2 1 2 157 419 3106 46 + 3.723613-3 7.534122-2 419 3106 47 + 2.931600+2 0.000000+0 2 1 2 158 419 3106 48 + 2.916027-3 7.094799-2 419 3106 49 + 2.931600+2 0.000000+0 2 1 2 159 419 3106 50 + 2.246747-3 6.568234-2 419 3106 51 + 2.931600+2 0.000000+0 2 1 2 160 419 3106 52 + 1.955090-3 6.006896-2 419 3106 53 + 2.931600+2 0.000000+0 2 1 2 161 419 3106 54 + 1.953966-3 5.582925-2 419 3106 55 + 2.931600+2 0.000000+0 2 1 2 162 419 3106 56 + 1.951836-3 5.139321-2 419 3106 57 + 2.931600+2 0.000000+0 2 1 2 163 419 3106 58 + 1.955078-3 4.624970-2 419 3106 59 + 2.931600+2 0.000000+0 2 1 2 164 419 3106 60 + 9.765916-4 4.241216-2 419 3106 61 + 2.931600+2 0.000000+0 2 1 2 165 419 3106 62 + 9.893008-3 3.916019-2 419 3106 63 + 2.931600+2 0.000000+0 2 1 2 166 419 3106 64 + 1.531876+0 3.474551-2 419 3106 65 + 2.931600+2 0.000000+0 2 1 2 167 419 3106 66 + 5.083488+0 3.242537-2 419 3106 67 + 2.931600+2 0.000000+0 2 1 2 168 419 3106 68 + 8.848180+0 3.040659-2 419 3106 69 + 2.931600+2 0.000000+0 2 1 2 169 419 3106 70 + 6.806517+0 2.849782-2 419 3106 71 + 2.931600+2 0.000000+0 2 1 2 170 419 3106 72 + 2.304996+0 2.673960-2 419 3106 73 + 2.931600+2 0.000000+0 2 1 2 171 419 3106 74 + 3.504250-1 2.492728-2 419 3106 75 + 2.931600+2 0.000000+0 2 1 2 172 419 3106 76 + 3.382293-3 1.802847-2 419 3106 77 + 2.931600+2 0.000000+0 2 1 2 173 419 3106 78 + 1.693836-3 6.336368-3 419 3106 79 + 2.931600+2 0.000000+0 2 1 2 174 419 3106 80 + 1.691503-3 2.216354-4 419 3106 81 + 2.931600+2 0.000000+0 2 1 2 175 419 3106 82 + 8.453626-3 4.94952-10 419 3106 83 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3107 1 + 2.931600+2 0.000000+0 2 1 2 1 419 3107 2 + 4.319880+4 2.163883+1 419 3107 3 + 2.931600+2 0.000000+0 2 1 2 2 419 3107 4 + 4.541324+3 1.039262+1 419 3107 5 + 2.931600+2 0.000000+0 2 1 2 3 419 3107 6 + 2.500158-1 5.414142+0 419 3107 7 + 2.931600+2 0.000000+0 2 1 2 4 419 3107 8 + 2.500006-1 4.778891+0 419 3107 9 + 2.931600+2 0.000000+0 2 1 2 5 419 3107 10 + 2.499989-1 4.229147+0 419 3107 11 + 2.931600+2 0.000000+0 2 1 2 6 419 3107 12 + 2.500522-1 3.723762+0 419 3107 13 + 2.931600+2 0.000000+0 2 1 2 7 419 3107 14 + 2.499747-1 3.283119+0 419 3107 15 + 2.931600+2 0.000000+0 2 1 2 8 419 3107 16 + 2.499950-1 2.899091+0 419 3107 17 + 2.931600+2 0.000000+0 2 1 2 9 419 3107 18 + 2.500120-1 2.558805+0 419 3107 19 + 2.931600+2 0.000000+0 2 1 2 10 419 3107 20 + 2.499837-1 2.258276+0 419 3107 21 + 2.931600+2 0.000000+0 2 1 2 11 419 3107 22 + 2.500208-1 1.992751+0 419 3107 23 + 2.931600+2 0.000000+0 2 1 2 12 419 3107 24 + 2.499994-1 1.758704+0 419 3107 25 + 2.931600+2 0.000000+0 2 1 2 13 419 3107 26 + 2.500068-1 1.552187+0 419 3107 27 + 2.931600+2 0.000000+0 2 1 2 14 419 3107 28 + 2.499982-1 1.369509+0 419 3107 29 + 2.931600+2 0.000000+0 2 1 2 15 419 3107 30 + 2.499987-1 1.206734+0 419 3107 31 + 2.931600+2 0.000000+0 2 1 2 16 419 3107 32 + 2.500377-1 1.070794+0 419 3107 33 + 2.931600+2 0.000000+0 2 1 2 17 419 3107 34 + 2.499479-1 9.412138-1 419 3107 35 + 2.931600+2 0.000000+0 2 1 2 18 419 3107 36 + 2.500173-1 8.305711-1 419 3107 37 + 2.931600+2 0.000000+0 2 1 2 19 419 3107 38 + 2.500100-1 7.330143-1 419 3107 39 + 2.931600+2 0.000000+0 2 1 2 20 419 3107 40 + 2.500236-1 6.469169-1 419 3107 41 + 2.931600+2 0.000000+0 2 1 2 21 419 3107 42 + 2.499879-1 5.710353-1 419 3107 43 + 2.931600+2 0.000000+0 2 1 2 22 419 3107 44 + 2.500056-1 5.039040-1 419 3107 45 + 2.931600+2 0.000000+0 2 1 2 23 419 3107 46 + 2.500029-1 4.445837-1 419 3107 47 + 2.931600+2 0.000000+0 2 1 2 24 419 3107 48 + 2.499980-1 3.922526-1 419 3107 49 + 2.931600+2 0.000000+0 2 1 2 25 419 3107 50 + 2.499905-1 3.464715-1 419 3107 51 + 2.931600+2 0.000000+0 2 1 2 26 419 3107 52 + 2.500449-1 3.056252-1 419 3107 53 + 2.931600+2 0.000000+0 2 1 2 27 419 3107 54 + 2.499670-1 2.693402-1 419 3107 55 + 2.931600+2 0.000000+0 2 1 2 28 419 3107 56 + 2.500068-1 2.401666-1 419 3107 57 + 2.931600+2 0.000000+0 2 1 2 29 419 3107 58 + 2.500344-1 2.098717-1 419 3107 59 + 2.931600+2 0.000000+0 2 1 2 30 419 3107 60 + 2.499915-1 1.852854-1 419 3107 61 + 2.931600+2 0.000000+0 2 1 2 31 419 3107 62 + 2.500083-1 1.638977-1 419 3107 63 + 2.931600+2 0.000000+0 2 1 2 32 419 3107 64 + 2.500005-1 1.441080-1 419 3107 65 + 2.931600+2 0.000000+0 2 1 2 33 419 3107 66 + 2.500054-1 1.276823-1 419 3107 67 + 2.931600+2 0.000000+0 2 1 2 34 419 3107 68 + 2.500019-1 1.122097-1 419 3107 69 + 2.931600+2 0.000000+0 2 1 2 35 419 3107 70 + 2.499942-1 9.916556-2 419 3107 71 + 2.931600+2 0.000000+0 2 1 2 36 419 3107 72 + 2.500204-1 8.753595-2 419 3107 73 + 2.931600+2 0.000000+0 2 1 2 37 419 3107 74 + 1.000055-1 8.016050-2 419 3107 75 + 2.931600+2 0.000000+0 2 1 2 38 419 3107 76 + 1.000025-1 7.629418-2 419 3107 77 + 2.931600+2 0.000000+0 2 1 2 39 419 3107 78 + 4.999347-2 7.320577-2 419 3107 79 + 2.931600+2 0.000000+0 2 1 2 40 419 3107 80 + 4.998229-2 7.146837-2 419 3107 81 + 2.931600+2 0.000000+0 2 1 2 41 419 3107 82 + 1.000174-1 6.882165-2 419 3107 83 + 2.931600+2 0.000000+0 2 1 2 42 419 3107 84 + 9.999096-2 6.572932-2 419 3107 85 + 2.931600+2 0.000000+0 2 1 2 43 419 3107 86 + 9.999992-2 6.280552-2 419 3107 87 + 2.931600+2 0.000000+0 2 1 2 44 419 3107 88 + 1.500060-1 5.873229-2 419 3107 89 + 2.931600+2 0.000000+0 2 1 2 45 419 3107 90 + 2.500021-1 5.338728-2 419 3107 91 + 2.931600+2 0.000000+0 2 1 2 46 419 3107 92 + 2.500058-1 4.678325-2 419 3107 93 + 2.931600+2 0.000000+0 2 1 2 47 419 3107 94 + 2.500081-1 4.161199-2 419 3107 95 + 2.931600+2 0.000000+0 2 1 2 48 419 3107 96 + 1.500464-1 3.739656-2 419 3107 97 + 2.931600+2 0.000000+0 2 1 2 49 419 3107 98 + 9.997715-2 3.503615-2 419 3107 99 + 2.931600+2 0.000000+0 2 1 2 50 419 3107 100 + 2.499605-1 3.219545-2 419 3107 101 + 2.931600+2 0.000000+0 2 1 2 51 419 3107 102 + 2.500539-1 2.852017-2 419 3107 103 + 2.931600+2 0.000000+0 2 1 2 52 419 3107 104 + 1.249823-1 2.581050-2 419 3107 105 + 2.931600+2 0.000000+0 2 1 2 53 419 3107 106 + 7.501323-2 2.456643-2 419 3107 107 + 2.931600+2 0.000000+0 2 1 2 54 419 3107 108 + 2.500424-2 2.391426-2 419 3107 109 + 2.931600+2 0.000000+0 2 1 2 55 419 3107 110 + 2.499961-2 2.363888-2 419 3107 111 + 2.931600+2 0.000000+0 2 1 2 56 419 3107 112 + 4.996597-2 2.324404-2 419 3107 113 + 2.931600+2 0.000000+0 2 1 2 57 419 3107 114 + 3.551257-2 2.277689-2 419 3107 115 + 2.931600+2 0.000000+0 2 1 2 58 419 3107 116 + 5.406806-2 2.226402-2 419 3107 117 + 2.931600+2 0.000000+0 2 1 2 59 419 3107 118 + 1.104441-1 2.132297-2 419 3107 119 + 2.931600+2 0.000000+0 2 1 2 60 419 3107 120 + 7.500419-2 2.044370-2 419 3107 121 + 2.931600+2 0.000000+0 2 1 2 61 419 3107 122 + 1.750007-1 1.924126-2 419 3107 123 + 2.931600+2 0.000000+0 2 1 2 62 419 3107 124 + 1.249910-1 2.159559-2 419 3107 125 + 2.931600+2 0.000000+0 2 1 2 63 419 3107 126 + 1.250025-1 2.680049-2 419 3107 127 + 2.931600+2 0.000000+0 2 1 2 64 419 3107 128 + 7.500169-2 3.195826-2 419 3107 129 + 2.931600+2 0.000000+0 2 1 2 65 419 3107 130 + 1.749988-1 4.004319-2 419 3107 131 + 2.931600+2 0.000000+0 2 1 2 66 419 3107 132 + 6.633376-2 4.975929-2 419 3107 133 + 2.931600+2 0.000000+0 2 1 2 67 419 3107 134 + 9.909254-2 5.731427-2 419 3107 135 + 2.931600+2 0.000000+0 2 1 2 68 419 3107 136 + 3.704179-2 6.396524-2 419 3107 137 + 2.931600+2 0.000000+0 2 1 2 69 419 3107 138 + 4.754338-2 6.890033-2 419 3107 139 + 2.931600+2 0.000000+0 2 1 2 70 419 3107 140 + 1.250060-1 8.050093-2 419 3107 141 + 2.931600+2 0.000000+0 2 1 2 71 419 3107 142 + 1.249977-1 1.005470-1 419 3107 143 + 2.931600+2 0.000000+0 2 1 2 72 419 3107 144 + 5.003758-2 1.179100-1 419 3107 145 + 2.931600+2 0.000000+0 2 1 2 73 419 3107 146 + 4.993605-2 1.286254-1 419 3107 147 + 2.931600+2 0.000000+0 2 1 2 74 419 3107 148 + 5.004302-2 1.398908-1 419 3107 149 + 2.931600+2 0.000000+0 2 1 2 75 419 3107 150 + 5.001871-2 1.517476-1 419 3107 151 + 2.931600+2 0.000000+0 2 1 2 76 419 3107 152 + 4.995191-2 1.657811-1 419 3107 153 + 2.931600+2 0.000000+0 2 1 2 77 419 3107 154 + 5.004543-2 1.818670-1 419 3107 155 + 2.931600+2 0.000000+0 2 1 2 78 419 3107 156 + 4.994617-2 1.987763-1 419 3107 157 + 2.931600+2 0.000000+0 2 1 2 79 419 3107 158 + 5.004682-2 2.165530-1 419 3107 159 + 2.931600+2 0.000000+0 2 1 2 80 419 3107 160 + 4.995962-2 2.352553-1 419 3107 161 + 2.931600+2 0.000000+0 2 1 2 81 419 3107 162 + 5.004203-2 2.566919-1 419 3107 163 + 2.931600+2 0.000000+0 2 1 2 82 419 3107 164 + 4.999659-2 2.805445-1 419 3107 165 + 2.931600+2 0.000000+0 2 1 2 83 419 3107 166 + 4.998963-2 3.047181-1 419 3107 167 + 2.931600+2 0.000000+0 2 1 2 84 419 3107 168 + 5.000882-2 3.087409-1 419 3107 169 + 2.931600+2 0.000000+0 2 1 2 85 419 3107 170 + 4.999863-2 3.037757-1 419 3107 171 + 2.931600+2 0.000000+0 2 1 2 86 419 3107 172 + 5.000142-2 2.985565-1 419 3107 173 + 2.931600+2 0.000000+0 2 1 2 87 419 3107 174 + 5.000916-2 2.930690-1 419 3107 175 + 2.931600+2 0.000000+0 2 1 2 88 419 3107 176 + 9.999264-2 2.842687-1 419 3107 177 + 2.931600+2 0.000000+0 2 1 2 89 419 3107 178 + 5.000320-2 2.748620-1 419 3107 179 + 2.931600+2 0.000000+0 2 1 2 90 419 3107 180 + 2.499435-2 2.698778-1 419 3107 181 + 2.931600+2 0.000000+0 2 1 2 91 419 3107 182 + 9.058538-3 2.675508-1 419 3107 183 + 2.931600+2 0.000000+0 2 1 2 92 419 3107 184 + 4.364640-3 2.666203-1 419 3107 185 + 2.931600+2 0.000000+0 2 1 2 93 419 3107 186 + 1.155782-2 2.656102-1 419 3107 187 + 2.931600+2 0.000000+0 2 1 2 94 419 3107 188 + 1.000062-1 2.606075-1 419 3107 189 + 2.931600+2 0.000000+0 2 1 2 95 419 3107 190 + 1.000052-1 2.510906-1 419 3107 191 + 2.931600+2 0.000000+0 2 1 2 96 419 3107 192 + 4.999999-2 2.433357-1 419 3107 193 + 2.931600+2 0.000000+0 2 1 2 97 419 3107 194 + 5.000110-2 2.378360-1 419 3107 195 + 2.931600+2 0.000000+0 2 1 2 98 419 3107 196 + 1.000021-1 2.301029-1 419 3107 197 + 2.931600+2 0.000000+0 2 1 2 99 419 3107 198 + 1.000048-1 2.192660-1 419 3107 199 + 2.931600+2 0.000000+0 2 1 2 100 419 3107 200 + 5.000778-2 2.106826-1 419 3107 201 + 2.931600+2 0.000000+0 2 1 2 101 419 3107 202 + 4.999119-2 2.052202-1 419 3107 203 + 2.931600+2 0.000000+0 2 1 2 102 419 3107 204 + 4.999926-2 1.995001-1 419 3107 205 + 2.931600+2 0.000000+0 2 1 2 103 419 3107 206 + 5.000523-2 1.935577-1 419 3107 207 + 2.931600+2 0.000000+0 2 1 2 104 419 3107 208 + 5.000401-2 1.886953-1 419 3107 209 + 2.931600+2 0.000000+0 2 1 2 105 419 3107 210 + 5.000589-2 1.841180-1 419 3107 211 + 2.931600+2 0.000000+0 2 1 2 106 419 3107 212 + 4.999047-2 1.793078-1 419 3107 213 + 2.931600+2 0.000000+0 2 1 2 107 419 3107 214 + 5.000951-2 1.747923-1 419 3107 215 + 2.931600+2 0.000000+0 2 1 2 108 419 3107 216 + 4.999941-2 1.704998-1 419 3107 217 + 2.931600+2 0.000000+0 2 1 2 109 419 3107 218 + 4.999652-2 1.660403-1 419 3107 219 + 2.931600+2 0.000000+0 2 1 2 110 419 3107 220 + 5.000559-2 1.619131-1 419 3107 221 + 2.931600+2 0.000000+0 2 1 2 111 419 3107 222 + 4.999651-2 1.577267-1 419 3107 223 + 2.931600+2 0.000000+0 2 1 2 112 419 3107 224 + 5.830021-2 1.533510-1 419 3107 225 + 2.931600+2 0.000000+0 2 1 2 113 419 3107 226 + 4.171240-2 1.494061-1 419 3107 227 + 2.931600+2 0.000000+0 2 1 2 114 419 3107 228 + 9.996150-2 1.441722-1 419 3107 229 + 2.931600+2 0.000000+0 2 1 2 115 419 3107 230 + 4.999362-2 1.387053-1 419 3107 231 + 2.931600+2 0.000000+0 2 1 2 116 419 3107 232 + 5.006558-2 1.348410-1 419 3107 233 + 2.931600+2 0.000000+0 2 1 2 117 419 3107 234 + 4.993355-2 1.314462-1 419 3107 235 + 2.931600+2 0.000000+0 2 1 2 118 419 3107 236 + 5.007376-2 1.281405-1 419 3107 237 + 2.931600+2 0.000000+0 2 1 2 119 419 3107 238 + 4.993732-2 1.246780-1 419 3107 239 + 2.931600+2 0.000000+0 2 1 2 120 419 3107 240 + 5.003866-2 1.215500-1 419 3107 241 + 2.931600+2 0.000000+0 2 1 2 121 419 3107 242 + 5.000960-2 1.185276-1 419 3107 243 + 2.931600+2 0.000000+0 2 1 2 122 419 3107 244 + 4.998941-2 1.154342-1 419 3107 245 + 2.931600+2 0.000000+0 2 1 2 123 419 3107 246 + 4.997139-2 1.126654-1 419 3107 247 + 2.931600+2 0.000000+0 2 1 2 124 419 3107 248 + 5.000415-2 1.098378-1 419 3107 249 + 2.931600+2 0.000000+0 2 1 2 125 419 3107 250 + 5.002058-2 1.071672-1 419 3107 251 + 2.931600+2 0.000000+0 2 1 2 126 419 3107 252 + 5.001758-2 1.045340-1 419 3107 253 + 2.931600+2 0.000000+0 2 1 2 127 419 3107 254 + 4.999298-2 1.019134-1 419 3107 255 + 2.931600+2 0.000000+0 2 1 2 128 419 3107 256 + 4.995837-2 9.937123-2 419 3107 257 + 2.931600+2 0.000000+0 2 1 2 129 419 3107 258 + 3.320467-2 9.726936-2 419 3107 259 + 2.931600+2 0.000000+0 2 1 2 130 419 3107 260 + 1.657101-2 9.606505-2 419 3107 261 + 2.931600+2 0.000000+0 2 1 2 131 419 3107 262 + 8.251205-3 9.545113-2 419 3107 263 + 2.931600+2 0.000000+0 2 1 2 132 419 3107 264 + 8.295947-3 9.503658-2 419 3107 265 + 2.931600+2 0.000000+0 2 1 2 133 419 3107 266 + 3.285066-2 9.400211-2 419 3107 267 + 2.931600+2 0.000000+0 2 1 2 134 419 3107 268 + 4.877513-2 9.207376-2 419 3107 269 + 2.931600+2 0.000000+0 2 1 2 135 419 3107 270 + 4.797893-2 8.974197-2 419 3107 271 + 2.931600+2 0.000000+0 2 1 2 136 419 3107 272 + 4.696325-2 8.751364-2 419 3107 273 + 2.931600+2 0.000000+0 2 1 2 137 419 3107 274 + 4.575863-2 8.519599-2 419 3107 275 + 2.931600+2 0.000000+0 2 1 2 138 419 3107 276 + 4.436130-2 8.271997-2 419 3107 277 + 2.931600+2 0.000000+0 2 1 2 139 419 3107 278 + 4.272225-2 8.003359-2 419 3107 279 + 2.931600+2 0.000000+0 2 1 2 140 419 3107 280 + 7.996088-2 7.505752-2 419 3107 281 + 2.931600+2 0.000000+0 2 1 2 141 419 3107 282 + 7.163081-2 6.630119-2 419 3107 283 + 2.931600+2 0.000000+0 2 1 2 142 419 3107 284 + 6.244698-2 5.697820-2 419 3107 285 + 2.931600+2 0.000000+0 2 1 2 143 419 3107 286 + 2.762652-2 5.021172-2 419 3107 287 + 2.931600+2 0.000000+0 2 1 2 144 419 3107 288 + 2.519972-2 4.629638-2 419 3107 289 + 2.931600+2 0.000000+0 2 1 2 145 419 3107 290 + 2.279022-2 4.287990-2 419 3107 291 + 2.931600+2 0.000000+0 2 1 2 146 419 3107 292 + 2.042454-2 3.922315-2 419 3107 293 + 2.931600+2 0.000000+0 2 1 2 147 419 3107 294 + 1.814121-2 3.603083-2 419 3107 295 + 2.931600+2 0.000000+0 2 1 2 148 419 3107 296 + 1.594728-2 3.341140-2 419 3107 297 + 2.931600+2 0.000000+0 2 1 2 149 419 3107 298 + 1.387605-2 3.088952-2 419 3107 299 + 2.931600+2 0.000000+0 2 1 2 150 419 3107 300 + 8.164813-3 2.885211-2 419 3107 301 + 2.931600+2 0.000000+0 2 1 2 151 419 3107 302 + 3.774230-3 2.765749-2 419 3107 303 + 2.931600+2 0.000000+0 2 1 2 152 419 3107 304 + 1.015740-2 2.605291-2 419 3107 305 + 2.931600+2 0.000000+0 2 1 2 153 419 3107 306 + 8.535689-3 2.351895-2 419 3107 307 + 2.931600+2 0.000000+0 2 1 2 154 419 3107 308 + 7.082486-3 2.124451-2 419 3107 309 + 2.931600+2 0.000000+0 2 1 2 155 419 3107 310 + 5.798906-3 1.922550-2 419 3107 311 + 2.931600+2 0.000000+0 2 1 2 156 419 3107 312 + 4.681662-3 1.752297-2 419 3107 313 + 2.931600+2 0.000000+0 2 1 2 157 419 3107 314 + 3.723745-3 1.603232-2 419 3107 315 + 2.931600+2 0.000000+0 2 1 2 158 419 3107 316 + 2.916018-3 1.461776-2 419 3107 317 + 2.931600+2 0.000000+0 2 1 2 159 419 3107 318 + 2.246747-3 1.317924-2 419 3107 319 + 2.931600+2 0.000000+0 2 1 2 160 419 3107 320 + 1.955082-3 1.176129-2 419 3107 321 + 2.931600+2 0.000000+0 2 1 2 161 419 3107 322 + 1.953961-3 1.070562-2 419 3107 323 + 2.931600+2 0.000000+0 2 1 2 162 419 3107 324 + 1.951830-3 9.655523-3 419 3107 325 + 2.931600+2 0.000000+0 2 1 2 163 419 3107 326 + 1.955070-3 8.495056-3 419 3107 327 + 2.931600+2 0.000000+0 2 1 2 164 419 3107 328 + 9.765915-4 7.660377-3 419 3107 329 + 2.931600+2 0.000000+0 2 1 2 165 419 3107 330 + 9.917526-3 6.977616-3 419 3107 331 + 2.931600+2 0.000000+0 2 1 2 166 419 3107 332 + 1.527796+0 6.080662-3 419 3107 333 + 2.931600+2 0.000000+0 2 1 2 167 419 3107 334 + 5.083487+0 5.618693-3 419 3107 335 + 2.931600+2 0.000000+0 2 1 2 168 419 3107 336 + 8.848206+0 5.222056-3 419 3107 337 + 2.931600+2 0.000000+0 2 1 2 169 419 3107 338 + 6.806587+0 4.852965-3 419 3107 339 + 2.931600+2 0.000000+0 2 1 2 170 419 3107 340 + 2.298726+0 4.515102-3 419 3107 341 + 2.931600+2 0.000000+0 2 1 2 171 419 3107 342 + 3.480231-1 4.174763-3 419 3107 343 + 2.931600+2 0.000000+0 2 1 2 172 419 3107 344 + 3.382279-3 2.962610-3 419 3107 345 + 2.931600+2 0.000000+0 2 1 2 173 419 3107 346 + 1.693835-3 1.039260-3 419 3107 347 + 2.931600+2 0.000000+0 2 1 2 174 419 3107 348 + 1.691495-3 3.633380-5 419 3107 349 + 2.931600+2 0.000000+0 2 1 2 175 419 3107 350 + 8.453596-3 5.31679-11 419 3107 351 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3111 1 + 2.931600+2 0.000000+0 2 1 2 159 419 3111 2 + 2.246705-3 1.334007-6 419 3111 3 + 2.931600+2 0.000000+0 2 1 2 160 419 3111 4 + 1.955091-3 4.503113-6 419 3111 5 + 2.931600+2 0.000000+0 2 1 2 161 419 3111 6 + 1.953971-3 7.760024-6 419 3111 7 + 2.931600+2 0.000000+0 2 1 2 162 419 3111 8 + 1.951837-3 1.118104-5 419 3111 9 + 2.931600+2 0.000000+0 2 1 2 163 419 3111 10 + 1.955080-3 1.477844-5 419 3111 11 + 2.931600+2 0.000000+0 2 1 2 164 419 3111 12 + 9.766681-4 1.759271-5 419 3111 13 + 2.931600+2 0.000000+0 2 1 2 165 419 3111 14 + 9.893008-3 2.007264-5 419 3111 15 + 2.931600+2 0.000000+0 2 1 2 166 419 3111 16 + 1.537615+0 2.372567-5 419 3111 17 + 2.931600+2 0.000000+0 2 1 2 167 419 3111 18 + 5.083622+0 2.584041-5 419 3111 19 + 2.931600+2 0.000000+0 2 1 2 168 419 3111 20 + 8.848080+0 2.782209-5 419 3111 21 + 2.931600+2 0.000000+0 2 1 2 169 419 3111 22 + 6.806521+0 2.986038-5 419 3111 23 + 2.931600+2 0.000000+0 2 1 2 170 419 3111 24 + 2.304996+0 3.187972-5 419 3111 25 + 2.931600+2 0.000000+0 2 1 2 171 419 3111 26 + 3.559738-1 3.409723-5 419 3111 27 + 2.931600+2 0.000000+0 2 1 2 172 419 3111 28 + 3.382293-3 4.628666-5 419 3111 29 + 2.931600+2 0.000000+0 2 1 2 173 419 3111 30 + 1.693836-3 7.165468-5 419 3111 31 + 2.931600+2 0.000000+0 2 1 2 174 419 3111 32 + 1.691503-3 9.432979-5 419 3111 33 + 2.931600+2 0.000000+0 2 1 2 175 419 3111 34 + 8.453622-3 1.903537-4 419 3111 35 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3112 1 + 2.931600+2 0.000000+0 2 1 2 114 419 3112 2 + 9.996162-2 8.511888-8 419 3112 3 + 2.931600+2 0.000000+0 2 1 2 115 419 3112 4 + 4.999362-2 3.406009-7 419 3112 5 + 2.931600+2 0.000000+0 2 1 2 116 419 3112 6 + 5.006568-2 5.338958-7 419 3112 7 + 2.931600+2 0.000000+0 2 1 2 117 419 3112 8 + 4.993355-2 7.369784-7 419 3112 9 + 2.931600+2 0.000000+0 2 1 2 118 419 3112 10 + 5.007376-2 9.504956-7 419 3112 11 + 2.931600+2 0.000000+0 2 1 2 119 419 3112 12 + 4.993734-2 1.174964-6 419 3112 13 + 2.931600+2 0.000000+0 2 1 2 120 419 3112 14 + 5.003866-2 1.410863-6 419 3112 15 + 2.931600+2 0.000000+0 2 1 2 121 419 3112 16 + 5.000960-2 1.659034-6 419 3112 17 + 2.931600+2 0.000000+0 2 1 2 122 419 3112 18 + 4.998952-2 1.919803-6 419 3112 19 + 2.931600+2 0.000000+0 2 1 2 123 419 3112 20 + 4.997139-2 2.193836-6 419 3112 21 + 2.931600+2 0.000000+0 2 1 2 124 419 3112 22 + 5.000422-2 2.481956-6 419 3112 23 + 2.931600+2 0.000000+0 2 1 2 125 419 3112 24 + 5.002058-2 2.784998-6 419 3112 25 + 2.931600+2 0.000000+0 2 1 2 126 419 3112 26 + 5.001758-2 3.103624-6 419 3112 27 + 2.931600+2 0.000000+0 2 1 2 127 419 3112 28 + 4.999307-2 3.438502-6 419 3112 29 + 2.931600+2 0.000000+0 2 1 2 128 419 3112 30 + 4.995837-2 3.790382-6 419 3112 31 + 2.931600+2 0.000000+0 2 1 2 129 419 3112 32 + 3.320467-2 4.096935-6 419 3112 33 + 2.931600+2 0.000000+0 2 1 2 130 419 3112 34 + 1.657101-2 4.287199-6 419 3112 35 + 2.931600+2 0.000000+0 2 1 2 131 419 3112 36 + 8.251205-3 4.384187-6 419 3112 37 + 2.931600+2 0.000000+0 2 1 2 132 419 3112 38 + 8.295947-3 4.449678-6 419 3112 39 + 2.931600+2 0.000000+0 2 1 2 133 419 3112 40 + 3.285067-2 4.615780-6 419 3112 41 + 2.931600+2 0.000000+0 2 1 2 134 419 3112 42 + 4.877513-2 4.957975-6 419 3112 43 + 2.931600+2 0.000000+0 2 1 2 135 419 3112 44 + 4.797899-2 5.387629-6 419 3112 45 + 2.931600+2 0.000000+0 2 1 2 136 419 3112 46 + 4.696325-2 5.839301-6 419 3112 47 + 2.931600+2 0.000000+0 2 1 2 137 419 3112 48 + 4.575866-2 6.314148-6 419 3112 49 + 2.931600+2 0.000000+0 2 1 2 138 419 3112 50 + 4.436130-2 6.813489-6 419 3112 51 + 2.931600+2 0.000000+0 2 1 2 139 419 3112 52 + 4.272235-2 7.338328-6 419 3112 53 + 2.931600+2 0.000000+0 2 1 2 140 419 3112 54 + 7.996096-2 8.172844-6 419 3112 55 + 2.931600+2 0.000000+0 2 1 2 141 419 3112 56 + 7.163098-2 9.390028-6 419 3112 57 + 2.931600+2 0.000000+0 2 1 2 142 419 3112 58 + 6.244718-2 1.073458-5 419 3112 59 + 2.931600+2 0.000000+0 2 1 2 143 419 3112 60 + 2.762671-2 1.184653-5 419 3112 61 + 2.931600+2 0.000000+0 2 1 2 144 419 3112 62 + 2.519994-2 1.262909-5 419 3112 63 + 2.931600+2 0.000000+0 2 1 2 145 419 3112 64 + 2.279047-2 1.345166-5 419 3112 65 + 2.931600+2 0.000000+0 2 1 2 146 419 3112 66 + 2.042476-2 1.431621-5 419 3112 67 + 2.931600+2 0.000000+0 2 1 2 147 419 3112 68 + 1.814118-2 1.522505-5 419 3112 69 + 2.931600+2 0.000000+0 2 1 2 148 419 3112 70 + 1.594743-2 1.618049-5 419 3112 71 + 2.931600+2 0.000000+0 2 1 2 149 419 3112 72 + 1.387617-2 1.718484-5 419 3112 73 + 2.931600+2 0.000000+0 2 1 2 150 419 3112 74 + 8.164822-3 1.806745-5 419 3112 75 + 2.931600+2 0.000000+0 2 1 2 151 419 3112 76 + 3.774230-3 1.861559-5 419 3112 77 + 2.931600+2 0.000000+0 2 1 2 152 419 3112 78 + 1.015748-2 1.935027-5 419 3112 79 + 2.931600+2 0.000000+0 2 1 2 153 419 3112 80 + 8.535930-3 2.051679-5 419 3112 81 + 2.931600+2 0.000000+0 2 1 2 154 419 3112 82 + 7.082486-3 2.174290-5 419 3112 83 + 2.931600+2 0.000000+0 2 1 2 155 419 3112 84 + 5.799093-3 2.303172-5 419 3112 85 + 2.931600+2 0.000000+0 2 1 2 156 419 3112 86 + 4.681774-3 2.438653-5 419 3112 87 + 2.931600+2 0.000000+0 2 1 2 157 419 3112 88 + 3.723745-3 2.581064-5 419 3112 89 + 2.931600+2 0.000000+0 2 1 2 158 419 3112 90 + 2.916072-3 2.730747-5 419 3112 91 + 2.931600+2 0.000000+0 2 1 2 159 419 3112 92 + 2.246747-3 2.888080-5 419 3112 93 + 2.931600+2 0.000000+0 2 1 2 160 419 3112 94 + 1.955091-3 3.057885-5 419 3112 95 + 2.931600+2 0.000000+0 2 1 2 161 419 3112 96 + 1.953971-3 3.232284-5 419 3112 97 + 2.931600+2 0.000000+0 2 1 2 162 419 3112 98 + 1.951837-3 3.415470-5 419 3112 99 + 2.931600+2 0.000000+0 2 1 2 163 419 3112 100 + 1.955080-3 3.608103-5 419 3112 101 + 2.931600+2 0.000000+0 2 1 2 164 419 3112 102 + 9.766681-4 3.758799-5 419 3112 103 + 2.931600+2 0.000000+0 2 1 2 165 419 3112 104 + 9.893008-3 3.891593-5 419 3112 105 + 2.931600+2 0.000000+0 2 1 2 166 419 3112 106 + 1.537615+0 4.087204-5 419 3112 107 + 2.931600+2 0.000000+0 2 1 2 167 419 3112 108 + 5.083622+0 4.200443-5 419 3112 109 + 2.931600+2 0.000000+0 2 1 2 168 419 3112 110 + 8.848080+0 4.306556-5 419 3112 111 + 2.931600+2 0.000000+0 2 1 2 169 419 3112 112 + 6.806521+0 4.415702-5 419 3112 113 + 2.931600+2 0.000000+0 2 1 2 170 419 3112 114 + 2.304996+0 4.523832-5 419 3112 115 + 2.931600+2 0.000000+0 2 1 2 171 419 3112 116 + 3.559738-1 4.642574-5 419 3112 117 + 2.931600+2 0.000000+0 2 1 2 172 419 3112 118 + 3.382293-3 5.688273-5 419 3112 119 + 2.931600+2 0.000000+0 2 1 2 173 419 3112 120 + 1.693836-3 8.535135-5 419 3112 121 + 2.931600+2 0.000000+0 2 1 2 174 419 3112 122 + 1.691503-3 1.108590-4 419 3112 123 + 2.931600+2 0.000000+0 2 1 2 175 419 3112 124 + 8.453622-3 2.140371-4 419 3112 125 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3115 1 + 2.931600+2 0.000000+0 2 1 2 157 419 3115 2 + 3.723657-3 2.70273-11 419 3115 3 + 2.931600+2 0.000000+0 2 1 2 158 419 3115 4 + 2.916072-3 7.51965-10 419 3115 5 + 2.931600+2 0.000000+0 2 1 2 159 419 3115 6 + 2.246747-3 1.837382-9 419 3115 7 + 2.931600+2 0.000000+0 2 1 2 160 419 3115 8 + 1.955091-3 3.008854-9 419 3115 9 + 2.931600+2 0.000000+0 2 1 2 161 419 3115 10 + 1.953966-3 4.341738-9 419 3115 11 + 2.931600+2 0.000000+0 2 1 2 162 419 3115 12 + 1.951836-3 2.353887-8 419 3115 13 + 2.931600+2 0.000000+0 2 1 2 163 419 3115 14 + 1.955078-3 7.046266-8 419 3115 15 + 2.931600+2 0.000000+0 2 1 2 164 419 3115 16 + 9.765916-4 1.167447-7 419 3115 17 + 2.931600+2 0.000000+0 2 1 2 165 419 3115 18 + 9.893008-3 1.600313-7 419 3115 19 + 2.931600+2 0.000000+0 2 1 2 166 419 3115 20 + 1.531876+0 2.243485-7 419 3115 21 + 2.931600+2 0.000000+0 2 1 2 167 419 3115 22 + 5.083488+0 2.616202-7 419 3115 23 + 2.931600+2 0.000000+0 2 1 2 168 419 3115 24 + 8.848180+0 2.957677-7 419 3115 25 + 2.931600+2 0.000000+0 2 1 2 169 419 3115 26 + 6.806517+0 3.297941-7 419 3115 27 + 2.931600+2 0.000000+0 2 1 2 170 419 3115 28 + 2.304996+0 3.624189-7 419 3115 29 + 2.931600+2 0.000000+0 2 1 2 171 419 3115 30 + 3.504250-1 1.209237-5 419 3115 31 + 2.931600+2 0.000000+0 2 1 2 172 419 3115 32 + 3.382293-3 1.765331-3 419 3115 33 + 2.931600+2 0.000000+0 2 1 2 173 419 3115 34 + 1.693836-3 7.784335-3 419 3115 35 + 2.931600+2 0.000000+0 2 1 2 174 419 3115 36 + 1.691503-3 1.098886-2 419 3115 37 + 2.931600+2 0.000000+0 2 1 2 175 419 3115 38 + 8.453622-3 1.180474-2 419 3115 39 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3116 1 + 2.931600+2 0.000000+0 2 1 2 114 419 3116 2 + 9.996155-2 1.210493-7 419 3116 3 + 2.931600+2 0.000000+0 2 1 2 115 419 3116 4 + 4.999362-2 6.093208-7 419 3116 5 + 2.931600+2 0.000000+0 2 1 2 116 419 3116 6 + 5.006568-2 1.000649-6 419 3116 7 + 2.931600+2 0.000000+0 2 1 2 117 419 3116 8 + 4.993355-2 1.411793-6 419 3116 9 + 2.931600+2 0.000000+0 2 1 2 118 419 3116 10 + 5.007376-2 1.844063-6 419 3116 11 + 2.931600+2 0.000000+0 2 1 2 119 419 3116 12 + 4.993734-2 2.298503-6 419 3116 13 + 2.931600+2 0.000000+0 2 1 2 120 419 3116 14 + 5.003866-2 2.776083-6 419 3116 15 + 2.931600+2 0.000000+0 2 1 2 121 419 3116 16 + 5.000960-2 3.278509-6 419 3116 17 + 2.931600+2 0.000000+0 2 1 2 122 419 3116 18 + 4.998952-2 3.806441-6 419 3116 19 + 2.931600+2 0.000000+0 2 1 2 123 419 3116 20 + 4.997139-2 4.361224-6 419 3116 21 + 2.931600+2 0.000000+0 2 1 2 124 419 3116 22 + 5.000422-2 4.944529-6 419 3116 23 + 2.931600+2 0.000000+0 2 1 2 125 419 3116 24 + 5.002058-2 5.558042-6 419 3116 25 + 2.931600+2 0.000000+0 2 1 2 126 419 3116 26 + 5.001758-2 6.203105-6 419 3116 27 + 2.931600+2 0.000000+0 2 1 2 127 419 3116 28 + 4.999307-2 6.881071-6 419 3116 29 + 2.931600+2 0.000000+0 2 1 2 128 419 3116 30 + 4.995837-2 7.593458-6 419 3116 31 + 2.931600+2 0.000000+0 2 1 2 129 419 3116 32 + 3.320467-2 8.214080-6 419 3116 33 + 2.931600+2 0.000000+0 2 1 2 130 419 3116 34 + 1.657101-2 8.599273-6 419 3116 35 + 2.931600+2 0.000000+0 2 1 2 131 419 3116 36 + 8.251205-3 8.795626-6 419 3116 37 + 2.931600+2 0.000000+0 2 1 2 132 419 3116 38 + 8.295947-3 8.928215-6 419 3116 39 + 2.931600+2 0.000000+0 2 1 2 133 419 3116 40 + 3.285067-2 9.264490-6 419 3116 41 + 2.931600+2 0.000000+0 2 1 2 134 419 3116 42 + 4.877513-2 9.957270-6 419 3116 43 + 2.931600+2 0.000000+0 2 1 2 135 419 3116 44 + 4.797899-2 1.082711-5 419 3116 45 + 2.931600+2 0.000000+0 2 1 2 136 419 3116 46 + 4.696325-2 1.174153-5 419 3116 47 + 2.931600+2 0.000000+0 2 1 2 137 419 3116 48 + 4.575866-2 1.270286-5 419 3116 49 + 2.931600+2 0.000000+0 2 1 2 138 419 3116 50 + 4.436130-2 1.371379-5 419 3116 51 + 2.931600+2 0.000000+0 2 1 2 139 419 3116 52 + 4.272235-2 1.477633-5 419 3116 53 + 2.931600+2 0.000000+0 2 1 2 140 419 3116 54 + 7.996096-2 1.646582-5 419 3116 55 + 2.931600+2 0.000000+0 2 1 2 141 419 3116 56 + 7.163098-2 1.893003-5 419 3116 57 + 2.931600+2 0.000000+0 2 1 2 142 419 3116 58 + 6.244718-2 2.165210-5 419 3116 59 + 2.931600+2 0.000000+0 2 1 2 143 419 3116 60 + 2.762671-2 2.390327-5 419 3116 61 + 2.931600+2 0.000000+0 2 1 2 144 419 3116 62 + 2.519994-2 2.548757-5 419 3116 63 + 2.931600+2 0.000000+0 2 1 2 145 419 3116 64 + 2.279047-2 2.715287-5 419 3116 65 + 2.931600+2 0.000000+0 2 1 2 146 419 3116 66 + 2.042476-2 2.890317-5 419 3116 67 + 2.931600+2 0.000000+0 2 1 2 147 419 3116 68 + 1.814118-2 3.074313-5 419 3116 69 + 2.931600+2 0.000000+0 2 1 2 148 419 3116 70 + 1.594743-2 3.267743-5 419 3116 71 + 2.931600+2 0.000000+0 2 1 2 149 419 3116 72 + 1.387617-2 3.471075-5 419 3116 73 + 2.931600+2 0.000000+0 2 1 2 150 419 3116 74 + 8.164822-3 3.649761-5 419 3116 75 + 2.931600+2 0.000000+0 2 1 2 151 419 3116 76 + 3.774230-3 3.760734-5 419 3116 77 + 2.931600+2 0.000000+0 2 1 2 152 419 3116 78 + 1.015748-2 3.909470-5 419 3116 79 + 2.931600+2 0.000000+0 2 1 2 153 419 3116 80 + 8.535930-3 4.145633-5 419 3116 81 + 2.931600+2 0.000000+0 2 1 2 154 419 3116 82 + 7.082486-3 4.393861-5 419 3116 83 + 2.931600+2 0.000000+0 2 1 2 155 419 3116 84 + 5.799093-3 4.654786-5 419 3116 85 + 2.931600+2 0.000000+0 2 1 2 156 419 3116 86 + 4.681774-3 4.929070-5 419 3116 87 + 2.931600+2 0.000000+0 2 1 2 157 419 3116 88 + 3.723745-3 5.217382-5 419 3116 89 + 2.931600+2 0.000000+0 2 1 2 158 419 3116 90 + 2.916072-3 5.520419-5 419 3116 91 + 2.931600+2 0.000000+0 2 1 2 159 419 3116 92 + 2.246747-3 5.838941-5 419 3116 93 + 2.931600+2 0.000000+0 2 1 2 160 419 3116 94 + 1.955091-3 6.182715-5 419 3116 95 + 2.931600+2 0.000000+0 2 1 2 161 419 3116 96 + 1.953971-3 6.535788-5 419 3116 97 + 2.931600+2 0.000000+0 2 1 2 162 419 3116 98 + 1.951837-3 6.906651-5 419 3116 99 + 2.931600+2 0.000000+0 2 1 2 163 419 3116 100 + 1.955080-3 7.296640-5 419 3116 101 + 2.931600+2 0.000000+0 2 1 2 164 419 3116 102 + 9.766681-4 7.601726-5 419 3116 103 + 2.931600+2 0.000000+0 2 1 2 165 419 3116 104 + 9.893008-3 7.870570-5 419 3116 105 + 2.931600+2 0.000000+0 2 1 2 166 419 3116 106 + 1.537615+0 8.266587-5 419 3116 107 + 2.931600+2 0.000000+0 2 1 2 167 419 3116 108 + 5.083622+0 8.495841-5 419 3116 109 + 2.931600+2 0.000000+0 2 1 2 168 419 3116 110 + 8.848080+0 8.710670-5 419 3116 111 + 2.931600+2 0.000000+0 2 1 2 169 419 3116 112 + 6.806521+0 8.931636-5 419 3116 113 + 2.931600+2 0.000000+0 2 1 2 170 419 3116 114 + 2.304996+0 9.150547-5 419 3116 115 + 2.931600+2 0.000000+0 2 1 2 171 419 3116 116 + 3.559738-1 9.390944-5 419 3116 117 + 2.931600+2 0.000000+0 2 1 2 172 419 3116 118 + 3.382293-3 1.150159-4 419 3116 119 + 2.931600+2 0.000000+0 2 1 2 173 419 3116 120 + 1.693836-3 1.724094-4 419 3116 121 + 2.931600+2 0.000000+0 2 1 2 174 419 3116 122 + 1.691503-3 2.237834-4 419 3116 123 + 2.931600+2 0.000000+0 2 1 2 175 419 3116 124 + 8.453622-3 4.311041-4 419 3116 125 + 419 3 099999 + 4.007000+3 0.000000+0 1 1 0 175 419 3117 1 + 2.931600+2 0.000000+0 2 1 2 147 419 3117 2 + 1.814097-2 3.68689-11 419 3117 3 + 2.931600+2 0.000000+0 2 1 2 148 419 3117 4 + 1.594743-2 3.42744-10 419 3117 5 + 2.931600+2 0.000000+0 2 1 2 149 419 3117 6 + 1.387617-2 7.17865-10 419 3117 7 + 2.931600+2 0.000000+0 2 1 2 150 419 3117 8 + 8.164822-3 1.047521-9 419 3117 9 + 2.931600+2 0.000000+0 2 1 2 151 419 3117 10 + 3.774230-3 1.252253-9 419 3117 11 + 2.931600+2 0.000000+0 2 1 2 152 419 3117 12 + 1.015748-2 1.526654-9 419 3117 13 + 2.931600+2 0.000000+0 2 1 2 153 419 3117 14 + 8.535930-3 1.962348-9 419 3117 15 + 2.931600+2 0.000000+0 2 1 2 154 419 3117 16 + 7.082486-3 2.420301-9 419 3117 17 + 2.931600+2 0.000000+0 2 1 2 155 419 3117 18 + 5.799093-3 2.901675-9 419 3117 19 + 2.931600+2 0.000000+0 2 1 2 156 419 3117 20 + 4.681774-3 3.407698-9 419 3117 21 + 2.931600+2 0.000000+0 2 1 2 157 419 3117 22 + 3.723745-3 3.939601-9 419 3117 23 + 2.931600+2 0.000000+0 2 1 2 158 419 3117 24 + 2.916072-3 4.498667-9 419 3117 25 + 2.931600+2 0.000000+0 2 1 2 159 419 3117 26 + 2.246747-3 5.086303-9 419 3117 27 + 2.931600+2 0.000000+0 2 1 2 160 419 3117 28 + 1.955091-3 5.720527-9 419 3117 29 + 2.931600+2 0.000000+0 2 1 2 161 419 3117 30 + 1.953966-3 6.552699-9 419 3117 31 + 2.931600+2 0.000000+0 2 1 2 162 419 3117 32 + 1.951836-3 3.215895-8 419 3117 33 + 2.931600+2 0.000000+0 2 1 2 163 419 3117 34 + 1.955078-3 9.354937-8 419 3117 35 + 2.931600+2 0.000000+0 2 1 2 164 419 3117 36 + 9.765916-4 1.517276-7 419 3117 37 + 2.931600+2 0.000000+0 2 1 2 165 419 3117 38 + 9.893008-3 2.039064-7 419 3117 39 + 2.931600+2 0.000000+0 2 1 2 166 419 3117 40 + 1.531876+0 2.780390-7 419 3117 41 + 2.931600+2 0.000000+0 2 1 2 167 419 3117 42 + 5.083488+0 3.189335-7 419 3117 43 + 2.931600+2 0.000000+0 2 1 2 168 419 3117 44 + 8.848180+0 3.552196-7 419 3117 45 + 2.931600+2 0.000000+0 2 1 2 169 419 3117 46 + 6.806517+0 3.898507-7 419 3117 47 + 2.931600+2 0.000000+0 2 1 2 170 419 3117 48 + 2.304996+0 4.217656-7 419 3117 49 + 2.931600+2 0.000000+0 2 1 2 171 419 3117 50 + 3.504250-1 4.543129-7 419 3117 51 + 2.931600+2 0.000000+0 2 1 2 172 419 3117 52 + 3.382293-3 1.251311-3 419 3117 53 + 2.931600+2 0.000000+0 2 1 2 173 419 3117 54 + 1.693836-3 5.988800-3 419 3117 55 + 2.931600+2 0.000000+0 2 1 2 174 419 3117 56 + 1.691503-3 8.700235-3 419 3117 57 + 2.931600+2 0.000000+0 2 1 2 175 419 3117 58 + 8.453622-3 1.015458-2 419 3117 59 + 419 3 099999 + 0 0 0 0 + -1 0 0 0 diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index 2476685..80d3b5a 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -23,7 +23,7 @@ def load_csv(csv_path): This should be in the same repository. Returns: - data_dict (dict): Dictionary formatted data structure for mt_table.csv + mt_dict (dict): Dictionary formatted data structure for mt_table.csv """ mt_dict = {} From e0529dcc267492092ffc5821c2405aa43308ef36 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 9 Jul 2024 11:36:59 -0500 Subject: [PATCH 43/59] Removing specific example file from GENDF files. --- .../gendf_files/tendl_2017_Be007.gendf | 3688 ----------------- 1 file changed, 3688 deletions(-) delete mode 100644 src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf diff --git a/src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf b/src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf deleted file mode 100644 index 1e10731..0000000 --- a/src/DataLib/fendl32B_retrofit/gendf_files/tendl_2017_Be007.gendf +++ /dev/null @@ -1,3688 +0,0 @@ -04-Be-007 for TENDL 2017 0 0 0 0 - 4.007000+3 6.956650+0 0 1 -1 1 419 1451 1 - 2.931600+2 0.000000+0 175 0 179 0 419 1451 2 - 0.000000+0 1.00000+10 1.000000-5 1.000000-1 4.139900-1 5.315800-1 419 1451 3 - 6.825600-1 8.764200-1 1.125400+0 1.445000+0 1.855400+0 2.382400+0 419 1451 4 - 3.059000+0 3.927900+0 5.043500+0 6.476000+0 8.315300+0 1.067700+1 419 1451 5 - 1.371000+1 1.760300+1 2.260300+1 2.902300+1 3.726700+1 4.785100+1 419 1451 6 - 6.144200+1 7.889300+1 1.013000+2 1.300700+2 1.670200+2 2.144500+2 419 1451 7 - 2.753600+2 3.535800+2 4.540000+2 5.829500+2 7.485200+2 9.611200+2 419 1451 8 - 1.234100+3 1.584600+3 2.034700+3 2.248700+3 2.485200+3 2.612600+3 419 1451 9 - 2.746500+3 3.035400+3 3.354600+3 3.707400+3 4.307400+3 5.530800+3 419 1451 10 - 7.101700+3 9.118800+3 1.059500+4 1.170900+4 1.503400+4 1.930500+4 419 1451 11 - 2.187500+4 2.357900+4 2.417600+4 2.478800+4 2.605800+4 2.700000+4 419 1451 12 - 2.850000+4 3.182800+4 3.430700+4 4.086800+4 4.630900+4 5.247500+4 419 1451 13 - 5.656200+4 6.737900+4 7.200000+4 7.950000+4 8.250000+4 8.651700+4 419 1451 14 - 9.803700+4 1.110900+5 1.167900+5 1.227700+5 1.290700+5 1.356900+5 419 1451 15 - 1.426400+5 1.499600+5 1.576400+5 1.657300+5 1.742200+5 1.831600+5 419 1451 16 - 1.925500+5 2.024200+5 2.128000+5 2.237100+5 2.351800+5 2.472400+5 419 1451 17 - 2.732400+5 2.872500+5 2.945200+5 2.972000+5 2.985000+5 3.019700+5 419 1451 18 - 3.337300+5 3.688300+5 3.877400+5 4.076200+5 4.504900+5 4.978700+5 419 1451 19 - 5.234000+5 5.502300+5 5.784400+5 6.081000+5 6.392800+5 6.720600+5 419 1451 20 - 7.065100+5 7.427400+5 7.808200+5 8.208500+5 8.629400+5 9.071800+5 419 1451 21 - 9.616400+5 1.002600+6 1.108000+6 1.164800+6 1.224600+6 1.287300+6 419 1451 22 - 1.353400+6 1.422700+6 1.495700+6 1.572400+6 1.653000+6 1.737700+6 419 1451 23 - 1.826800+6 1.920500+6 2.019000+6 2.122500+6 2.231300+6 2.306900+6 419 1451 24 - 2.345700+6 2.365300+6 2.385200+6 2.466000+6 2.592400+6 2.725300+6 419 1451 25 - 2.865000+6 3.011900+6 3.166400+6 3.328700+6 3.678800+6 4.065700+6 419 1451 26 - 4.493300+6 4.723700+6 4.965900+6 5.220500+6 5.488100+6 5.769500+6 419 1451 27 - 6.065300+6 6.376300+6 6.592400+6 6.703200+6 7.046900+6 7.408200+6 419 1451 28 - 7.788000+6 8.187300+6 8.607100+6 9.048400+6 9.512300+6 1.000000+7 419 1451 29 - 1.051300+7 1.105200+7 1.161800+7 1.221400+7 1.252300+7 1.284000+7 419 1451 30 - 1.349900+7 1.384000+7 1.419100+7 1.455000+7 1.491800+7 1.568300+7 419 1451 31 - 1.648700+7 1.690500+7 1.733300+7 1.964000+7 0.000000+0 419 1451 32 - 419 0 0 0 - 4.007000+3 0.000000+0 1 1 0 175 419 3 1 1 - 2.931600+2 0.000000+0 2 1 2 1 419 3 1 2 - 4.319880+4 2.209759+2 419 3 1 3 - 2.931600+2 0.000000+0 2 1 2 2 419 3 1 4 - 4.541334+3 1.662589+2 419 3 1 5 - 2.931600+2 0.000000+0 2 1 2 3 419 3 1 6 - 2.500159-1 1.440149+2 419 3 1 7 - 2.931600+2 0.000000+0 2 1 2 4 419 3 1 8 - 2.500007-1 1.412604+2 419 3 1 9 - 2.931600+2 0.000000+0 2 1 2 5 419 3 1 10 - 2.499990-1 1.388903+2 419 3 1 11 - 2.931600+2 0.000000+0 2 1 2 6 419 3 1 12 - 2.500524-1 1.367319+2 419 3 1 13 - 2.931600+2 0.000000+0 2 1 2 7 419 3 1 14 - 2.499748-1 1.348765+2 419 3 1 15 - 2.931600+2 0.000000+0 2 1 2 8 419 3 1 16 - 2.499951-1 1.332959+2 419 3 1 17 - 2.931600+2 0.000000+0 2 1 2 9 419 3 1 18 - 2.500121-1 1.318853+2 419 3 1 19 - 2.931600+2 0.000000+0 2 1 2 10 419 3 1 20 - 2.499837-1 1.306557+2 419 3 1 21 - 2.931600+2 0.000000+0 2 1 2 11 419 3 1 22 - 2.500210-1 1.296260+2 419 3 1 23 - 2.931600+2 0.000000+0 2 1 2 12 419 3 1 24 - 2.499994-1 1.286732+2 419 3 1 25 - 2.931600+2 0.000000+0 2 1 2 13 419 3 1 26 - 2.500068-1 1.279213+2 419 3 1 27 - 2.931600+2 0.000000+0 2 1 2 14 419 3 1 28 - 2.499983-1 1.273033+2 419 3 1 29 - 2.931600+2 0.000000+0 2 1 2 15 419 3 1 30 - 2.499987-1 1.267857+2 419 3 1 31 - 2.931600+2 0.000000+0 2 1 2 16 419 3 1 32 - 2.500377-1 1.264454+2 419 3 1 33 - 2.931600+2 0.000000+0 2 1 2 17 419 3 1 34 - 2.499480-1 1.262157+2 419 3 1 35 - 2.931600+2 0.000000+0 2 1 2 18 419 3 1 36 - 2.500174-1 1.261090+2 419 3 1 37 - 2.931600+2 0.000000+0 2 1 2 19 419 3 1 38 - 2.500101-1 1.262809+2 419 3 1 39 - 2.931600+2 0.000000+0 2 1 2 20 419 3 1 40 - 2.500236-1 1.265096+2 419 3 1 41 - 2.931600+2 0.000000+0 2 1 2 21 419 3 1 42 - 2.499879-1 1.270566+2 419 3 1 43 - 2.931600+2 0.000000+0 2 1 2 22 419 3 1 44 - 2.500057-1 1.279199+2 419 3 1 45 - 2.931600+2 0.000000+0 2 1 2 23 419 3 1 46 - 2.500030-1 1.290357+2 419 3 1 47 - 2.931600+2 0.000000+0 2 1 2 24 419 3 1 48 - 2.499980-1 1.307254+2 419 3 1 49 - 2.931600+2 0.000000+0 2 1 2 25 419 3 1 50 - 2.499905-1 1.330286+2 419 3 1 51 - 2.931600+2 0.000000+0 2 1 2 26 419 3 1 52 - 2.500449-1 1.360430+2 419 3 1 53 - 2.931600+2 0.000000+0 2 1 2 27 419 3 1 54 - 2.499671-1 1.403063+2 419 3 1 55 - 2.931600+2 0.000000+0 2 1 2 28 419 3 1 56 - 2.500068-1 1.459872+2 419 3 1 57 - 2.931600+2 0.000000+0 2 1 2 29 419 3 1 58 - 2.500344-1 1.538958+2 419 3 1 59 - 2.931600+2 0.000000+0 2 1 2 30 419 3 1 60 - 2.499914-1 1.650051+2 419 3 1 61 - 2.931600+2 0.000000+0 2 1 2 31 419 3 1 62 - 2.500083-1 1.809264+2 419 3 1 63 - 2.931600+2 0.000000+0 2 1 2 32 419 3 1 64 - 2.500005-1 2.045087+2 419 3 1 65 - 2.931600+2 0.000000+0 2 1 2 33 419 3 1 66 - 2.500053-1 2.410394+2 419 3 1 67 - 2.931600+2 0.000000+0 2 1 2 34 419 3 1 68 - 2.500019-1 3.007212+2 419 3 1 69 - 2.931600+2 0.000000+0 2 1 2 35 419 3 1 70 - 2.499939-1 4.038737+2 419 3 1 71 - 2.931600+2 0.000000+0 2 1 2 36 419 3 1 72 - 2.500204-1 5.800627+2 419 3 1 73 - 2.931600+2 0.000000+0 2 1 2 37 419 3 1 74 - 1.000054-1 7.369107+2 419 3 1 75 - 2.931600+2 0.000000+0 2 1 2 38 419 3 1 76 - 1.000023-1 8.017371+2 419 3 1 77 - 2.931600+2 0.000000+0 2 1 2 39 419 3 1 78 - 4.999344-2 8.126551+2 419 3 1 79 - 2.931600+2 0.000000+0 2 1 2 40 419 3 1 80 - 4.998216-2 7.924756+2 419 3 1 81 - 2.931600+2 0.000000+0 2 1 2 41 419 3 1 82 - 1.000173-1 7.219841+2 419 3 1 83 - 2.931600+2 0.000000+0 2 1 2 42 419 3 1 84 - 9.999092-2 5.875572+2 419 3 1 85 - 2.931600+2 0.000000+0 2 1 2 43 419 3 1 86 - 9.999970-2 4.450680+2 419 3 1 87 - 2.931600+2 0.000000+0 2 1 2 44 419 3 1 88 - 1.500058-1 3.011295+2 419 3 1 89 - 2.931600+2 0.000000+0 2 1 2 45 419 3 1 90 - 2.500017-1 1.611893+2 419 3 1 91 - 2.931600+2 0.000000+0 2 1 2 46 419 3 1 92 - 2.500055-1 7.679518+1 419 3 1 93 - 2.931600+2 0.000000+0 2 1 2 47 419 3 1 94 - 2.500077-1 4.002805+1 419 3 1 95 - 2.931600+2 0.000000+0 2 1 2 48 419 3 1 96 - 1.500462-1 2.493297+1 419 3 1 97 - 2.931600+2 0.000000+0 2 1 2 49 419 3 1 98 - 9.997709-2 1.906184+1 419 3 1 99 - 2.931600+2 0.000000+0 2 1 2 50 419 3 1 100 - 2.499603-1 1.363613+1 419 3 1 101 - 2.931600+2 0.000000+0 2 1 2 51 419 3 1 102 - 2.500535-1 8.738475+0 419 3 1 103 - 2.931600+2 0.000000+0 2 1 2 52 419 3 1 104 - 1.249822-1 6.447770+0 419 3 1 105 - 2.931600+2 0.000000+0 2 1 2 53 419 3 1 106 - 7.501319-2 5.562577+0 419 3 1 107 - 2.931600+2 0.000000+0 2 1 2 54 419 3 1 108 - 2.500427-2 5.183034+0 419 3 1 109 - 2.931600+2 0.000000+0 2 1 2 55 419 3 1 110 - 2.499960-2 5.007668+0 419 3 1 111 - 2.931600+2 0.000000+0 2 1 2 56 419 3 1 112 - 4.996592-2 4.763287+0 419 3 1 113 - 2.931600+2 0.000000+0 2 1 2 57 419 3 1 114 - 3.551254-2 4.501778+0 419 3 1 115 - 2.931600+2 0.000000+0 2 1 2 58 419 3 1 116 - 5.406805-2 4.251739+0 419 3 1 117 - 2.931600+2 0.000000+0 2 1 2 59 419 3 1 118 - 1.104440-1 3.843965+0 419 3 1 119 - 2.931600+2 0.000000+0 2 1 2 60 419 3 1 120 - 7.500417-2 3.448034+0 419 3 1 121 - 2.931600+2 0.000000+0 2 1 2 61 419 3 1 122 - 1.750007-1 3.014620+0 419 3 1 123 - 2.931600+2 0.000000+0 2 1 2 62 419 3 1 124 - 1.249909-1 2.609918+0 419 3 1 125 - 2.931600+2 0.000000+0 2 1 2 63 419 3 1 126 - 1.250025-1 2.359766+0 419 3 1 127 - 2.931600+2 0.000000+0 2 1 2 64 419 3 1 128 - 7.500159-2 2.199393+0 419 3 1 129 - 2.931600+2 0.000000+0 2 1 2 65 419 3 1 130 - 1.749988-1 2.046840+0 419 3 1 131 - 2.931600+2 0.000000+0 2 1 2 66 419 3 1 132 - 6.633374-2 1.934818+0 419 3 1 133 - 2.931600+2 0.000000+0 2 1 2 67 419 3 1 134 - 9.909245-2 1.878715+0 419 3 1 135 - 2.931600+2 0.000000+0 2 1 2 68 419 3 1 136 - 3.704183-2 1.842288+0 419 3 1 137 - 2.931600+2 0.000000+0 2 1 2 69 419 3 1 138 - 4.754332-2 1.826234+0 419 3 1 139 - 2.931600+2 0.000000+0 2 1 2 70 419 3 1 140 - 1.250060-1 1.808307+0 419 3 1 141 - 2.931600+2 0.000000+0 2 1 2 71 419 3 1 142 - 1.249977-1 1.810968+0 419 3 1 143 - 2.931600+2 0.000000+0 2 1 2 72 419 3 1 144 - 5.003748-2 1.836724+0 419 3 1 145 - 2.931600+2 0.000000+0 2 1 2 73 419 3 1 146 - 4.993605-2 1.859668+0 419 3 1 147 - 2.931600+2 0.000000+0 2 1 2 74 419 3 1 148 - 5.004291-2 1.886518+0 419 3 1 149 - 2.931600+2 0.000000+0 2 1 2 75 419 3 1 150 - 5.001871-2 1.919864+0 419 3 1 151 - 2.931600+2 0.000000+0 2 1 2 76 419 3 1 152 - 4.995191-2 1.966325+0 419 3 1 153 - 2.931600+2 0.000000+0 2 1 2 77 419 3 1 154 - 5.004533-2 2.024105+0 419 3 1 155 - 2.931600+2 0.000000+0 2 1 2 78 419 3 1 156 - 4.994617-2 2.090359+0 419 3 1 157 - 2.931600+2 0.000000+0 2 1 2 79 419 3 1 158 - 5.004675-2 2.164534+0 419 3 1 159 - 2.931600+2 0.000000+0 2 1 2 80 419 3 1 160 - 4.995962-2 2.250039+0 419 3 1 161 - 2.931600+2 0.000000+0 2 1 2 81 419 3 1 162 - 5.004203-2 2.355560+0 419 3 1 163 - 2.931600+2 0.000000+0 2 1 2 82 419 3 1 164 - 4.999656-2 2.481443+0 419 3 1 165 - 2.931600+2 0.000000+0 2 1 2 83 419 3 1 166 - 4.998960-2 2.623553+0 419 3 1 167 - 2.931600+2 0.000000+0 2 1 2 84 419 3 1 168 - 5.000872-2 2.704370+0 419 3 1 169 - 2.931600+2 0.000000+0 2 1 2 85 419 3 1 170 - 4.999855-2 2.778313+0 419 3 1 171 - 2.931600+2 0.000000+0 2 1 2 86 419 3 1 172 - 5.000133-2 2.901323+0 419 3 1 173 - 2.931600+2 0.000000+0 2 1 2 87 419 3 1 174 - 5.000904-2 3.101899+0 419 3 1 175 - 2.931600+2 0.000000+0 2 1 2 88 419 3 1 176 - 9.999235-2 3.721857+0 419 3 1 177 - 2.931600+2 0.000000+0 2 1 2 89 419 3 1 178 - 5.000304-2 5.008751+0 419 3 1 179 - 2.931600+2 0.000000+0 2 1 2 90 419 3 1 180 - 2.499432-2 6.187462+0 419 3 1 181 - 2.931600+2 0.000000+0 2 1 2 91 419 3 1 182 - 9.058439-3 6.892441+0 419 3 1 183 - 2.931600+2 0.000000+0 2 1 2 92 419 3 1 184 - 4.364640-3 7.205932+0 419 3 1 185 - 2.931600+2 0.000000+0 2 1 2 93 419 3 1 186 - 1.155782-2 7.594364+0 419 3 1 187 - 2.931600+2 0.000000+0 2 1 2 94 419 3 1 188 - 1.000058-1 1.004787+1 419 3 1 189 - 2.931600+2 0.000000+0 2 1 2 95 419 3 1 190 - 1.000048-1 8.854462+0 419 3 1 191 - 2.931600+2 0.000000+0 2 1 2 96 419 3 1 192 - 4.999968-2 5.874304+0 419 3 1 193 - 2.931600+2 0.000000+0 2 1 2 97 419 3 1 194 - 5.000103-2 4.676143+0 419 3 1 195 - 2.931600+2 0.000000+0 2 1 2 98 419 3 1 196 - 1.000018-1 3.667679+0 419 3 1 197 - 2.931600+2 0.000000+0 2 1 2 99 419 3 1 198 - 1.000045-1 2.947287+0 419 3 1 199 - 2.931600+2 0.000000+0 2 1 2 100 419 3 1 200 - 5.000770-2 2.073263+0 419 3 1 201 - 2.931600+2 0.000000+0 2 1 2 101 419 3 1 202 - 4.999119-2 1.989307+0 419 3 1 203 - 2.931600+2 0.000000+0 2 1 2 102 419 3 1 204 - 4.999926-2 1.962238+0 419 3 1 205 - 2.931600+2 0.000000+0 2 1 2 103 419 3 1 206 - 5.000533-2 1.933776+0 419 3 1 207 - 2.931600+2 0.000000+0 2 1 2 104 419 3 1 208 - 5.000403-2 1.907281+0 419 3 1 209 - 2.931600+2 0.000000+0 2 1 2 105 419 3 1 210 - 5.000589-2 1.883085+0 419 3 1 211 - 2.931600+2 0.000000+0 2 1 2 106 419 3 1 212 - 4.999055-2 1.857652+0 419 3 1 213 - 2.931600+2 0.000000+0 2 1 2 107 419 3 1 214 - 5.000941-2 1.833146+0 419 3 1 215 - 2.931600+2 0.000000+0 2 1 2 108 419 3 1 216 - 4.999941-2 1.810634+0 419 3 1 217 - 2.931600+2 0.000000+0 2 1 2 109 419 3 1 218 - 4.999644-2 1.787013+0 419 3 1 219 - 2.931600+2 0.000000+0 2 1 2 110 419 3 1 220 - 5.000559-2 1.764782+0 419 3 1 221 - 2.931600+2 0.000000+0 2 1 2 111 419 3 1 222 - 4.999654-2 1.743269+0 419 3 1 223 - 2.931600+2 0.000000+0 2 1 2 112 419 3 1 224 - 5.830020-2 1.719691+0 419 3 1 225 - 2.931600+2 0.000000+0 2 1 2 113 419 3 1 226 - 4.171240-2 1.699586+0 419 3 1 227 - 2.931600+2 0.000000+0 2 1 2 114 419 3 1 228 - 9.996149-2 1.671582+0 419 3 1 229 - 2.931600+2 0.000000+0 2 1 2 115 419 3 1 230 - 4.999362-2 1.643146+0 419 3 1 231 - 2.931600+2 0.000000+0 2 1 2 116 419 3 1 232 - 5.006558-2 1.623070+0 419 3 1 233 - 2.931600+2 0.000000+0 2 1 2 117 419 3 1 234 - 4.993355-2 1.605047+0 419 3 1 235 - 2.931600+2 0.000000+0 2 1 2 118 419 3 1 236 - 5.007376-2 1.588060+0 419 3 1 237 - 2.931600+2 0.000000+0 2 1 2 119 419 3 1 238 - 4.993734-2 1.570202+0 419 3 1 239 - 2.931600+2 0.000000+0 2 1 2 120 419 3 1 240 - 5.003856-2 1.553125+0 419 3 1 241 - 2.931600+2 0.000000+0 2 1 2 121 419 3 1 242 - 5.000960-2 1.537660+0 419 3 1 243 - 2.931600+2 0.000000+0 2 1 2 122 419 3 1 244 - 4.998946-2 1.521526+0 419 3 1 245 - 2.931600+2 0.000000+0 2 1 2 123 419 3 1 246 - 4.997139-2 1.507077+0 419 3 1 247 - 2.931600+2 0.000000+0 2 1 2 124 419 3 1 248 - 5.000422-2 1.492997+0 419 3 1 249 - 2.931600+2 0.000000+0 2 1 2 125 419 3 1 250 - 5.002048-2 1.479018+0 419 3 1 251 - 2.931600+2 0.000000+0 2 1 2 126 419 3 1 252 - 5.001758-2 1.466639+0 419 3 1 253 - 2.931600+2 0.000000+0 2 1 2 127 419 3 1 254 - 4.999299-2 1.454121+0 419 3 1 255 - 2.931600+2 0.000000+0 2 1 2 128 419 3 1 256 - 4.995837-2 1.443262+0 419 3 1 257 - 2.931600+2 0.000000+0 2 1 2 129 419 3 1 258 - 3.320467-2 1.434147+0 419 3 1 259 - 2.931600+2 0.000000+0 2 1 2 130 419 3 1 260 - 1.657101-2 1.429130+0 419 3 1 261 - 2.931600+2 0.000000+0 2 1 2 131 419 3 1 262 - 8.251205-3 1.426972+0 419 3 1 263 - 2.931600+2 0.000000+0 2 1 2 132 419 3 1 264 - 8.295947-3 1.425515+0 419 3 1 265 - 2.931600+2 0.000000+0 2 1 2 133 419 3 1 266 - 3.285067-2 1.421818+0 419 3 1 267 - 2.931600+2 0.000000+0 2 1 2 134 419 3 1 268 - 4.877513-2 1.414204+0 419 3 1 269 - 2.931600+2 0.000000+0 2 1 2 135 419 3 1 270 - 4.797896-2 1.406340+0 419 3 1 271 - 2.931600+2 0.000000+0 2 1 2 136 419 3 1 272 - 4.696325-2 1.400253+0 419 3 1 273 - 2.931600+2 0.000000+0 2 1 2 137 419 3 1 274 - 4.575857-2 1.393870+0 419 3 1 275 - 2.931600+2 0.000000+0 2 1 2 138 419 3 1 276 - 4.436130-2 1.389301+0 419 3 1 277 - 2.931600+2 0.000000+0 2 1 2 139 419 3 1 278 - 4.272235-2 1.386127+0 419 3 1 279 - 2.931600+2 0.000000+0 2 1 2 140 419 3 1 280 - 7.996083-2 1.381826+0 419 3 1 281 - 2.931600+2 0.000000+0 2 1 2 141 419 3 1 282 - 7.163087-2 1.380532+0 419 3 1 283 - 2.931600+2 0.000000+0 2 1 2 142 419 3 1 284 - 6.244718-2 1.383353+0 419 3 1 285 - 2.931600+2 0.000000+0 2 1 2 143 419 3 1 286 - 2.762652-2 1.386115+0 419 3 1 287 - 2.931600+2 0.000000+0 2 1 2 144 419 3 1 288 - 2.519994-2 1.389340+0 419 3 1 289 - 2.931600+2 0.000000+0 2 1 2 145 419 3 1 290 - 2.279025-2 1.392847+0 419 3 1 291 - 2.931600+2 0.000000+0 2 1 2 146 419 3 1 292 - 2.042470-2 1.395061+0 419 3 1 293 - 2.931600+2 0.000000+0 2 1 2 147 419 3 1 294 - 1.814121-2 1.400354+0 419 3 1 295 - 2.931600+2 0.000000+0 2 1 2 148 419 3 1 296 - 1.594743-2 1.403540+0 419 3 1 297 - 2.931600+2 0.000000+0 2 1 2 149 419 3 1 298 - 1.387617-2 1.406610+0 419 3 1 299 - 2.931600+2 0.000000+0 2 1 2 150 419 3 1 300 - 8.164822-3 1.409308+0 419 3 1 301 - 2.931600+2 0.000000+0 2 1 2 151 419 3 1 302 - 3.774230-3 1.410983+0 419 3 1 303 - 2.931600+2 0.000000+0 2 1 2 152 419 3 1 304 - 1.015727-2 1.412617+0 419 3 1 305 - 2.931600+2 0.000000+0 2 1 2 153 419 3 1 306 - 8.535865-3 1.413705+0 419 3 1 307 - 2.931600+2 0.000000+0 2 1 2 154 419 3 1 308 - 7.082296-3 1.413012+0 419 3 1 309 - 2.931600+2 0.000000+0 2 1 2 155 419 3 1 310 - 5.799002-3 1.411721+0 419 3 1 311 - 2.931600+2 0.000000+0 2 1 2 156 419 3 1 312 - 4.681642-3 1.408733+0 419 3 1 313 - 2.931600+2 0.000000+0 2 1 2 157 419 3 1 314 - 3.723745-3 1.405742+0 419 3 1 315 - 2.931600+2 0.000000+0 2 1 2 158 419 3 1 316 - 2.916072-3 1.400209+0 419 3 1 317 - 2.931600+2 0.000000+0 2 1 2 159 419 3 1 318 - 2.246747-3 1.394393+0 419 3 1 319 - 2.931600+2 0.000000+0 2 1 2 160 419 3 1 320 - 1.955084-3 1.386998+0 419 3 1 321 - 2.931600+2 0.000000+0 2 1 2 161 419 3 1 322 - 1.953959-3 1.377931+0 419 3 1 323 - 2.931600+2 0.000000+0 2 1 2 162 419 3 1 324 - 1.951830-3 1.366447+0 419 3 1 325 - 2.931600+2 0.000000+0 2 1 2 163 419 3 1 326 - 1.955070-3 1.344881+0 419 3 1 327 - 2.931600+2 0.000000+0 2 1 2 164 419 3 1 328 - 9.765906-4 1.319837+0 419 3 1 329 - 2.931600+2 0.000000+0 2 1 2 165 419 3 1 330 - 9.651867-3 1.293306+0 419 3 1 331 - 2.931600+2 0.000000+0 2 1 2 166 419 3 1 332 - 1.527244+0 1.250093+0 419 3 1 333 - 2.931600+2 0.000000+0 2 1 2 167 419 3 1 334 - 5.083487+0 1.224253+0 419 3 1 335 - 2.931600+2 0.000000+0 2 1 2 168 419 3 1 336 - 8.848247+0 1.200281+0 419 3 1 337 - 2.931600+2 0.000000+0 2 1 2 169 419 3 1 338 - 6.806587+0 1.176073+0 419 3 1 339 - 2.931600+2 0.000000+0 2 1 2 170 419 3 1 340 - 2.298726+0 1.152504+0 419 3 1 341 - 2.931600+2 0.000000+0 2 1 2 171 419 3 1 342 - 3.462235-1 1.127090+0 419 3 1 343 - 2.931600+2 0.000000+0 2 1 2 172 419 3 1 344 - 3.382274-3 1.085441+0 419 3 1 345 - 2.931600+2 0.000000+0 2 1 2 173 419 3 1 346 - 1.693835-3 1.142670+0 419 3 1 347 - 2.931600+2 0.000000+0 2 1 2 174 419 3 1 348 - 1.691494-3 1.170512+0 419 3 1 349 - 2.931600+2 0.000000+0 2 1 2 175 419 3 1 350 - 8.453596-3 1.121927+0 419 3 1 351 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 2 1 - 2.931600+2 0.000000+0 2 1 2 1 419 3 2 2 - 4.319880+4 1.298938+2 419 3 2 3 - 2.931600+2 0.000000+0 2 1 2 2 419 3 2 4 - 4.541350+3 1.225765+2 419 3 2 5 - 2.931600+2 0.000000+0 2 1 2 3 419 3 2 6 - 2.500160-1 1.213254+2 419 3 2 7 - 2.931600+2 0.000000+0 2 1 2 4 419 3 2 8 - 2.500008-1 1.212308+2 419 3 2 9 - 2.931600+2 0.000000+0 2 1 2 5 419 3 2 10 - 2.499990-1 1.211653+2 419 3 2 11 - 2.931600+2 0.000000+0 2 1 2 6 419 3 2 12 - 2.500525-1 1.211253+2 419 3 2 13 - 2.931600+2 0.000000+0 2 1 2 7 419 3 2 14 - 2.499749-1 1.210970+2 419 3 2 15 - 2.931600+2 0.000000+0 2 1 2 8 419 3 2 16 - 2.499950-1 1.210905+2 419 3 2 17 - 2.931600+2 0.000000+0 2 1 2 9 419 3 2 18 - 2.500122-1 1.211288+2 419 3 2 19 - 2.931600+2 0.000000+0 2 1 2 10 419 3 2 20 - 2.499838-1 1.211814+2 419 3 2 21 - 2.931600+2 0.000000+0 2 1 2 11 419 3 2 22 - 2.500210-1 1.212490+2 419 3 2 23 - 2.931600+2 0.000000+0 2 1 2 12 419 3 2 24 - 2.499995-1 1.213358+2 419 3 2 25 - 2.931600+2 0.000000+0 2 1 2 13 419 3 2 26 - 2.500069-1 1.214473+2 419 3 2 27 - 2.931600+2 0.000000+0 2 1 2 14 419 3 2 28 - 2.499983-1 1.215904+2 419 3 2 29 - 2.931600+2 0.000000+0 2 1 2 15 419 3 2 30 - 2.499988-1 1.217741+2 419 3 2 31 - 2.931600+2 0.000000+0 2 1 2 16 419 3 2 32 - 2.500377-1 1.220101+2 419 3 2 33 - 2.931600+2 0.000000+0 2 1 2 17 419 3 2 34 - 2.499480-1 1.223130+2 419 3 2 35 - 2.931600+2 0.000000+0 2 1 2 18 419 3 2 36 - 2.500174-1 1.227020+2 419 3 2 37 - 2.931600+2 0.000000+0 2 1 2 19 419 3 2 38 - 2.500101-1 1.232015+2 419 3 2 39 - 2.931600+2 0.000000+0 2 1 2 20 419 3 2 40 - 2.500237-1 1.238429+2 419 3 2 41 - 2.931600+2 0.000000+0 2 1 2 21 419 3 2 42 - 2.499879-1 1.246664+2 419 3 2 43 - 2.931600+2 0.000000+0 2 1 2 22 419 3 2 44 - 2.500057-1 1.257238+2 419 3 2 45 - 2.931600+2 0.000000+0 2 1 2 23 419 3 2 46 - 2.500029-1 1.271554+2 419 3 2 47 - 2.931600+2 0.000000+0 2 1 2 24 419 3 2 48 - 2.499980-1 1.290936+2 419 3 2 49 - 2.931600+2 0.000000+0 2 1 2 25 419 3 2 50 - 2.499905-1 1.315826+2 419 3 2 51 - 2.931600+2 0.000000+0 2 1 2 26 419 3 2 52 - 2.500449-1 1.347794+2 419 3 2 53 - 2.931600+2 0.000000+0 2 1 2 27 419 3 2 54 - 2.499671-1 1.391451+2 419 3 2 55 - 2.931600+2 0.000000+0 2 1 2 28 419 3 2 56 - 2.500067-1 1.449937+2 419 3 2 57 - 2.931600+2 0.000000+0 2 1 2 29 419 3 2 58 - 2.500345-1 1.530291+2 419 3 2 59 - 2.931600+2 0.000000+0 2 1 2 30 419 3 2 60 - 2.499915-1 1.641948+2 419 3 2 61 - 2.931600+2 0.000000+0 2 1 2 31 419 3 2 62 - 2.500082-1 1.802002+2 419 3 2 63 - 2.931600+2 0.000000+0 2 1 2 32 419 3 2 64 - 2.500005-1 2.038745+2 419 3 2 65 - 2.931600+2 0.000000+0 2 1 2 33 419 3 2 66 - 2.500053-1 2.404900+2 419 3 2 67 - 2.931600+2 0.000000+0 2 1 2 34 419 3 2 68 - 2.500019-1 3.002681+2 419 3 2 69 - 2.931600+2 0.000000+0 2 1 2 35 419 3 2 70 - 2.499940-1 4.034129+2 419 3 2 71 - 2.931600+2 0.000000+0 2 1 2 36 419 3 2 72 - 2.500204-1 5.796318+2 419 3 2 73 - 2.931600+2 0.000000+0 2 1 2 37 419 3 2 74 - 1.000054-1 7.365786+2 419 3 2 75 - 2.931600+2 0.000000+0 2 1 2 38 419 3 2 76 - 1.000023-1 8.014007+2 419 3 2 77 - 2.931600+2 0.000000+0 2 1 2 39 419 3 2 78 - 4.999344-2 8.123385+2 419 3 2 79 - 2.931600+2 0.000000+0 2 1 2 40 419 3 2 80 - 4.998216-2 7.921760+2 419 3 2 81 - 2.931600+2 0.000000+0 2 1 2 41 419 3 2 82 - 1.000173-1 7.216956+2 419 3 2 83 - 2.931600+2 0.000000+0 2 1 2 42 419 3 2 84 - 9.999092-2 5.872816+2 419 3 2 85 - 2.931600+2 0.000000+0 2 1 2 43 419 3 2 86 - 9.999970-2 4.448048+2 419 3 2 87 - 2.931600+2 0.000000+0 2 1 2 44 419 3 2 88 - 1.500058-1 3.008833+2 419 3 2 89 - 2.931600+2 0.000000+0 2 1 2 45 419 3 2 90 - 2.500017-1 1.609656+2 419 3 2 91 - 2.931600+2 0.000000+0 2 1 2 46 419 3 2 92 - 2.500056-1 7.659960+1 419 3 2 93 - 2.931600+2 0.000000+0 2 1 2 47 419 3 2 94 - 2.500077-1 3.985085+1 419 3 2 95 - 2.931600+2 0.000000+0 2 1 2 48 419 3 2 96 - 1.500463-1 2.477638+1 419 3 2 97 - 2.931600+2 0.000000+0 2 1 2 49 419 3 2 98 - 9.997709-2 1.891487+1 419 3 2 99 - 2.931600+2 0.000000+0 2 1 2 50 419 3 2 100 - 2.499602-1 1.350124+1 419 3 2 101 - 2.931600+2 0.000000+0 2 1 2 51 419 3 2 102 - 2.500535-1 8.618856+0 419 3 2 103 - 2.931600+2 0.000000+0 2 1 2 52 419 3 2 104 - 1.249822-1 6.339729+0 419 3 2 105 - 2.931600+2 0.000000+0 2 1 2 53 419 3 2 106 - 7.501319-2 5.459695+0 419 3 2 107 - 2.931600+2 0.000000+0 2 1 2 54 419 3 2 108 - 2.500427-2 5.082779+0 419 3 2 109 - 2.931600+2 0.000000+0 2 1 2 55 419 3 2 110 - 2.499960-2 4.908599+0 419 3 2 111 - 2.931600+2 0.000000+0 2 1 2 56 419 3 2 112 - 4.996592-2 4.665877+0 419 3 2 113 - 2.931600+2 0.000000+0 2 1 2 57 419 3 2 114 - 3.551254-2 4.406326+0 419 3 2 115 - 2.931600+2 0.000000+0 2 1 2 58 419 3 2 116 - 5.406805-2 4.158437+0 419 3 2 117 - 2.931600+2 0.000000+0 2 1 2 59 419 3 2 118 - 1.104440-1 3.754591+0 419 3 2 119 - 2.931600+2 0.000000+0 2 1 2 60 419 3 2 120 - 7.500417-2 3.362371+0 419 3 2 121 - 2.931600+2 0.000000+0 2 1 2 61 419 3 2 122 - 1.750007-1 2.933962+0 419 3 2 123 - 2.931600+2 0.000000+0 2 1 2 62 419 3 2 124 - 1.249909-1 2.519273+0 419 3 2 125 - 2.931600+2 0.000000+0 2 1 2 63 419 3 2 126 - 1.250024-1 2.247347+0 419 3 2 127 - 2.931600+2 0.000000+0 2 1 2 64 419 3 2 128 - 7.500166-2 2.065500+0 419 3 2 129 - 2.931600+2 0.000000+0 2 1 2 65 419 3 2 130 - 1.749987-1 1.878880+0 419 3 2 131 - 2.931600+2 0.000000+0 2 1 2 66 419 3 2 132 - 6.633372-2 1.726290+0 419 3 2 133 - 2.931600+2 0.000000+0 2 1 2 67 419 3 2 134 - 9.909244-2 1.638692+0 419 3 2 135 - 2.931600+2 0.000000+0 2 1 2 68 419 3 2 136 - 3.704181-2 1.573531+0 419 3 2 137 - 2.931600+2 0.000000+0 2 1 2 69 419 3 2 138 - 4.754338-2 1.537651+0 419 3 2 139 - 2.931600+2 0.000000+0 2 1 2 70 419 3 2 140 - 1.250059-1 1.470691+0 419 3 2 141 - 2.931600+2 0.000000+0 2 1 2 71 419 3 2 142 - 1.249976-1 1.389372+0 419 3 2 143 - 2.931600+2 0.000000+0 2 1 2 72 419 3 2 144 - 5.003758-2 1.342621+0 419 3 2 145 - 2.931600+2 0.000000+0 2 1 2 73 419 3 2 146 - 4.993603-2 1.319913+0 419 3 2 147 - 2.931600+2 0.000000+0 2 1 2 74 419 3 2 148 - 5.004292-2 1.300570+0 419 3 2 149 - 2.931600+2 0.000000+0 2 1 2 75 419 3 2 150 - 5.001879-2 1.284066+0 419 3 2 151 - 2.931600+2 0.000000+0 2 1 2 76 419 3 2 152 - 4.995182-2 1.270704+0 419 3 2 153 - 2.931600+2 0.000000+0 2 1 2 77 419 3 2 154 - 5.004532-2 1.261413+0 419 3 2 155 - 2.931600+2 0.000000+0 2 1 2 78 419 3 2 156 - 4.994617-2 1.256684+0 419 3 2 157 - 2.931600+2 0.000000+0 2 1 2 79 419 3 2 158 - 5.004681-2 1.256987+0 419 3 2 159 - 2.931600+2 0.000000+0 2 1 2 80 419 3 2 160 - 4.995964-2 1.263599+0 419 3 2 161 - 2.931600+2 0.000000+0 2 1 2 81 419 3 2 162 - 5.004196-2 1.278884+0 419 3 2 163 - 2.931600+2 0.000000+0 2 1 2 82 419 3 2 164 - 4.999656-2 1.304902+0 419 3 2 165 - 2.931600+2 0.000000+0 2 1 2 83 419 3 2 166 - 4.998963-2 1.346342+0 419 3 2 167 - 2.931600+2 0.000000+0 2 1 2 84 419 3 2 168 - 5.000875-2 1.409586+0 419 3 2 169 - 2.931600+2 0.000000+0 2 1 2 85 419 3 2 170 - 4.999850-2 1.504648+0 419 3 2 171 - 2.931600+2 0.000000+0 2 1 2 86 419 3 2 172 - 5.000131-2 1.649445+0 419 3 2 173 - 2.931600+2 0.000000+0 2 1 2 87 419 3 2 174 - 5.000890-2 1.873790+0 419 3 2 175 - 2.931600+2 0.000000+0 2 1 2 88 419 3 2 176 - 9.999238-2 2.531522+0 419 3 2 177 - 2.931600+2 0.000000+0 2 1 2 89 419 3 2 178 - 5.000289-2 3.857723+0 419 3 2 179 - 2.931600+2 0.000000+0 2 1 2 90 419 3 2 180 - 2.499423-2 5.059027+0 419 3 2 181 - 2.931600+2 0.000000+0 2 1 2 91 419 3 2 182 - 9.058439-3 5.773122+0 419 3 2 183 - 2.931600+2 0.000000+0 2 1 2 92 419 3 2 184 - 4.364640-3 6.087790+0 419 3 2 185 - 2.931600+2 0.000000+0 2 1 2 93 419 3 2 186 - 1.155790-2 6.481800+0 419 3 2 187 - 2.931600+2 0.000000+0 2 1 2 94 419 3 2 188 - 1.000057-1 8.957675+0 419 3 2 189 - 2.931600+2 0.000000+0 2 1 2 95 419 3 2 190 - 1.000047-1 7.802117+0 419 3 2 191 - 2.931600+2 0.000000+0 2 1 2 96 419 3 2 192 - 4.999968-2 4.854294+0 419 3 2 193 - 2.931600+2 0.000000+0 2 1 2 97 419 3 2 194 - 5.000093-2 3.677059+0 419 3 2 195 - 2.931600+2 0.000000+0 2 1 2 98 419 3 2 196 - 1.000019-1 2.698657+0 419 3 2 197 - 2.931600+2 0.000000+0 2 1 2 99 419 3 2 198 - 1.000046-1 2.018558+0 419 3 2 199 - 2.931600+2 0.000000+0 2 1 2 100 419 3 2 200 - 5.000770-2 1.160719+0 419 3 2 201 - 2.931600+2 0.000000+0 2 1 2 101 419 3 2 202 - 4.999119-2 1.089395+0 419 3 2 203 - 2.931600+2 0.000000+0 2 1 2 102 419 3 2 204 - 4.999926-2 1.076843+0 419 3 2 205 - 2.931600+2 0.000000+0 2 1 2 103 419 3 2 206 - 5.000523-2 1.063683+0 419 3 2 207 - 2.931600+2 0.000000+0 2 1 2 104 419 3 2 208 - 5.000401-2 1.052770+0 419 3 2 209 - 2.931600+2 0.000000+0 2 1 2 105 419 3 2 210 - 5.000589-2 1.043148+0 419 3 2 211 - 2.931600+2 0.000000+0 2 1 2 106 419 3 2 212 - 4.999055-2 1.033033+0 419 3 2 213 - 2.931600+2 0.000000+0 2 1 2 107 419 3 2 214 - 5.000946-2 1.023219+0 419 3 2 215 - 2.931600+2 0.000000+0 2 1 2 108 419 3 2 216 - 4.999941-2 1.014843+0 419 3 2 217 - 2.931600+2 0.000000+0 2 1 2 109 419 3 2 218 - 4.999655-2 1.006118+0 419 3 2 219 - 2.931600+2 0.000000+0 2 1 2 110 419 3 2 220 - 5.000556-2 9.976508-1 419 3 2 221 - 2.931600+2 0.000000+0 2 1 2 111 419 3 2 222 - 4.999654-2 9.901614-1 419 3 2 223 - 2.931600+2 0.000000+0 2 1 2 112 419 3 2 224 - 5.830013-2 9.817024-1 419 3 2 225 - 2.931600+2 0.000000+0 2 1 2 113 419 3 2 226 - 4.171240-2 9.747053-1 419 3 2 227 - 2.931600+2 0.000000+0 2 1 2 114 419 3 2 228 - 9.996152-2 9.653432-1 419 3 2 229 - 2.931600+2 0.000000+0 2 1 2 115 419 3 2 230 - 4.999362-2 9.560016-1 419 3 2 231 - 2.931600+2 0.000000+0 2 1 2 116 419 3 2 232 - 5.006568-2 9.496818-1 419 3 2 233 - 2.931600+2 0.000000+0 2 1 2 117 419 3 2 234 - 4.993348-2 9.437232-1 419 3 2 235 - 2.931600+2 0.000000+0 2 1 2 118 419 3 2 236 - 5.007376-2 9.386860-1 419 3 2 237 - 2.931600+2 0.000000+0 2 1 2 119 419 3 2 238 - 4.993734-2 9.334141-1 419 3 2 239 - 2.931600+2 0.000000+0 2 1 2 120 419 3 2 240 - 5.003862-2 9.281934-1 419 3 2 241 - 2.931600+2 0.000000+0 2 1 2 121 419 3 2 242 - 5.000960-2 9.239429-1 419 3 2 243 - 2.931600+2 0.000000+0 2 1 2 122 419 3 2 244 - 4.998952-2 9.195999-1 419 3 2 245 - 2.931600+2 0.000000+0 2 1 2 123 419 3 2 246 - 4.997129-2 9.153568-1 419 3 2 247 - 2.931600+2 0.000000+0 2 1 2 124 419 3 2 248 - 5.000422-2 9.119440-1 419 3 2 249 - 2.931600+2 0.000000+0 2 1 2 125 419 3 2 250 - 5.002058-2 9.084348-1 419 3 2 251 - 2.931600+2 0.000000+0 2 1 2 126 419 3 2 252 - 5.001758-2 9.047757-1 419 3 2 253 - 2.931600+2 0.000000+0 2 1 2 127 419 3 2 254 - 4.999307-2 9.020635-1 419 3 2 255 - 2.931600+2 0.000000+0 2 1 2 128 419 3 2 256 - 4.995837-2 8.997945-1 419 3 2 257 - 2.931600+2 0.000000+0 2 1 2 129 419 3 2 258 - 3.320467-2 8.978178-1 419 3 2 259 - 2.931600+2 0.000000+0 2 1 2 130 419 3 2 260 - 1.657101-2 8.965910-1 419 3 2 261 - 2.931600+2 0.000000+0 2 1 2 131 419 3 2 262 - 8.251205-3 8.959656-1 419 3 2 263 - 2.931600+2 0.000000+0 2 1 2 132 419 3 2 264 - 8.295947-3 8.955433-1 419 3 2 265 - 2.931600+2 0.000000+0 2 1 2 133 419 3 2 266 - 3.285065-2 8.945561-1 419 3 2 267 - 2.931600+2 0.000000+0 2 1 2 134 419 3 2 268 - 4.877513-2 8.933370-1 419 3 2 269 - 2.931600+2 0.000000+0 2 1 2 135 419 3 2 270 - 4.797899-2 8.919836-1 419 3 2 271 - 2.931600+2 0.000000+0 2 1 2 136 419 3 2 272 - 4.696325-2 8.905606-1 419 3 2 273 - 2.931600+2 0.000000+0 2 1 2 137 419 3 2 274 - 4.575866-2 8.890647-1 419 3 2 275 - 2.931600+2 0.000000+0 2 1 2 138 419 3 2 276 - 4.436130-2 8.863402-1 419 3 2 277 - 2.931600+2 0.000000+0 2 1 2 139 419 3 2 278 - 4.272230-2 8.808360-1 419 3 2 279 - 2.931600+2 0.000000+0 2 1 2 140 419 3 2 280 - 7.996078-2 8.663313-1 419 3 2 281 - 2.931600+2 0.000000+0 2 1 2 141 419 3 2 282 - 7.163081-2 8.345714-1 419 3 2 283 - 2.931600+2 0.000000+0 2 1 2 142 419 3 2 284 - 6.244700-2 8.042607-1 419 3 2 285 - 2.931600+2 0.000000+0 2 1 2 143 419 3 2 286 - 2.762672-2 7.879591-1 419 3 2 287 - 2.931600+2 0.000000+0 2 1 2 144 419 3 2 288 - 2.519987-2 7.811752-1 419 3 2 289 - 2.931600+2 0.000000+0 2 1 2 145 419 3 2 290 - 2.279050-2 7.763286-1 419 3 2 291 - 2.931600+2 0.000000+0 2 1 2 146 419 3 2 292 - 2.042454-2 7.705842-1 419 3 2 293 - 2.931600+2 0.000000+0 2 1 2 147 419 3 2 294 - 1.814118-2 7.671233-1 419 3 2 295 - 2.931600+2 0.000000+0 2 1 2 148 419 3 2 296 - 1.594721-2 7.655073-1 419 3 2 297 - 2.931600+2 0.000000+0 2 1 2 149 419 3 2 298 - 1.387617-2 7.644701-1 419 3 2 299 - 2.931600+2 0.000000+0 2 1 2 150 419 3 2 300 - 8.164642-3 7.641350-1 419 3 2 301 - 2.931600+2 0.000000+0 2 1 2 151 419 3 2 302 - 3.774230-3 7.638559-1 419 3 2 303 - 2.931600+2 0.000000+0 2 1 2 152 419 3 2 304 - 1.015748-2 7.633221-1 419 3 2 305 - 2.931600+2 0.000000+0 2 1 2 153 419 3 2 306 - 8.535930-3 7.624742-1 419 3 2 307 - 2.931600+2 0.000000+0 2 1 2 154 419 3 2 308 - 7.082486-3 7.615830-1 419 3 2 309 - 2.931600+2 0.000000+0 2 1 2 155 419 3 2 310 - 5.799093-3 7.606464-1 419 3 2 311 - 2.931600+2 0.000000+0 2 1 2 156 419 3 2 312 - 4.681658-3 7.596905-1 419 3 2 313 - 2.931600+2 0.000000+0 2 1 2 157 419 3 2 314 - 3.723745-3 7.587659-1 419 3 2 315 - 2.931600+2 0.000000+0 2 1 2 158 419 3 2 316 - 2.916072-3 7.574418-1 419 3 2 317 - 2.931600+2 0.000000+0 2 1 2 159 419 3 2 318 - 2.246695-3 7.553534-1 419 3 2 319 - 2.931600+2 0.000000+0 2 1 2 160 419 3 2 320 - 1.955084-3 7.519533-1 419 3 2 321 - 2.931600+2 0.000000+0 2 1 2 161 419 3 2 322 - 1.953959-3 7.388554-1 419 3 2 323 - 2.931600+2 0.000000+0 2 1 2 162 419 3 2 324 - 1.951830-3 7.283726-1 419 3 2 325 - 2.931600+2 0.000000+0 2 1 2 163 419 3 2 326 - 1.955070-3 7.257681-1 419 3 2 327 - 2.931600+2 0.000000+0 2 1 2 164 419 3 2 328 - 9.765906-4 7.233629-1 419 3 2 329 - 2.931600+2 0.000000+0 2 1 2 165 419 3 2 330 - 9.651867-3 7.209409-1 419 3 2 331 - 2.931600+2 0.000000+0 2 1 2 166 419 3 2 332 - 1.527244+0 7.170074-1 419 3 2 333 - 2.931600+2 0.000000+0 2 1 2 167 419 3 2 334 - 5.083487+0 7.146891-1 419 3 2 335 - 2.931600+2 0.000000+0 2 1 2 168 419 3 2 336 - 8.848247+0 7.124288-1 419 3 2 337 - 2.931600+2 0.000000+0 2 1 2 169 419 3 2 338 - 6.806587+0 7.100661-1 419 3 2 339 - 2.931600+2 0.000000+0 2 1 2 170 419 3 2 340 - 2.298726+0 7.076876-1 419 3 2 341 - 2.931600+2 0.000000+0 2 1 2 171 419 3 2 342 - 3.462235-1 7.049925-1 419 3 2 343 - 2.931600+2 0.000000+0 2 1 2 172 419 3 2 344 - 3.382274-3 6.957872-1 419 3 2 345 - 2.931600+2 0.000000+0 2 1 2 173 419 3 2 346 - 1.693835-3 6.861877-1 419 3 2 347 - 2.931600+2 0.000000+0 2 1 2 174 419 3 2 348 - 1.691494-3 6.803872-1 419 3 2 349 - 2.931600+2 0.000000+0 2 1 2 175 419 3 2 350 - 8.453596-3 6.708329-1 419 3 2 351 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 3 1 - 2.931600+2 0.000000+0 2 1 2 1 419 3 3 2 - 4.319880+4 9.068374+1 419 3 3 3 - 2.931600+2 0.000000+0 2 1 2 2 419 3 3 4 - 4.541324+3 4.355326+1 419 3 3 5 - 2.931600+2 0.000000+0 2 1 2 3 419 3 3 6 - 2.500158-1 2.268949+1 419 3 3 7 - 2.931600+2 0.000000+0 2 1 2 4 419 3 3 8 - 2.500006-1 2.002730+1 419 3 3 9 - 2.931600+2 0.000000+0 2 1 2 5 419 3 3 10 - 2.499989-1 1.772343+1 419 3 3 11 - 2.931600+2 0.000000+0 2 1 2 6 419 3 3 12 - 2.500522-1 1.560547+1 419 3 3 13 - 2.931600+2 0.000000+0 2 1 2 7 419 3 3 14 - 2.499747-1 1.375883+1 419 3 3 15 - 2.931600+2 0.000000+0 2 1 2 8 419 3 3 16 - 2.499950-1 1.214945+1 419 3 3 17 - 2.931600+2 0.000000+0 2 1 2 9 419 3 3 18 - 2.500120-1 1.072339+1 419 3 3 19 - 2.931600+2 0.000000+0 2 1 2 10 419 3 3 20 - 2.499837-1 9.463937+0 419 3 3 21 - 2.931600+2 0.000000+0 2 1 2 11 419 3 3 22 - 2.500208-1 8.351183+0 419 3 3 23 - 2.931600+2 0.000000+0 2 1 2 12 419 3 3 24 - 2.499994-1 7.370344+0 419 3 3 25 - 2.931600+2 0.000000+0 2 1 2 13 419 3 3 26 - 2.500068-1 6.504874+0 419 3 3 27 - 2.931600+2 0.000000+0 2 1 2 14 419 3 3 28 - 2.499982-1 5.739312+0 419 3 3 29 - 2.931600+2 0.000000+0 2 1 2 15 419 3 3 30 - 2.499987-1 5.057156+0 419 3 3 31 - 2.931600+2 0.000000+0 2 1 2 16 419 3 3 32 - 2.500377-1 4.487465+0 419 3 3 33 - 2.931600+2 0.000000+0 2 1 2 17 419 3 3 34 - 2.499479-1 3.944423+0 419 3 3 35 - 2.931600+2 0.000000+0 2 1 2 18 419 3 3 36 - 2.500173-1 3.480743+0 419 3 3 37 - 2.931600+2 0.000000+0 2 1 2 19 419 3 3 38 - 2.500100-1 3.071904+0 419 3 3 39 - 2.931600+2 0.000000+0 2 1 2 20 419 3 3 40 - 2.500236-1 2.711088+0 419 3 3 41 - 2.931600+2 0.000000+0 2 1 2 21 419 3 3 42 - 2.499879-1 2.393085+0 419 3 3 43 - 2.931600+2 0.000000+0 2 1 2 22 419 3 3 44 - 2.500056-1 2.111752+0 419 3 3 45 - 2.931600+2 0.000000+0 2 1 2 23 419 3 3 46 - 2.500029-1 1.863154+0 419 3 3 47 - 2.931600+2 0.000000+0 2 1 2 24 419 3 3 48 - 2.499980-1 1.643846+0 419 3 3 49 - 2.931600+2 0.000000+0 2 1 2 25 419 3 3 50 - 2.499905-1 1.451987+0 419 3 3 51 - 2.931600+2 0.000000+0 2 1 2 26 419 3 3 52 - 2.500449-1 1.280809+0 419 3 3 53 - 2.931600+2 0.000000+0 2 1 2 27 419 3 3 54 - 2.499670-1 1.128747+0 419 3 3 55 - 2.931600+2 0.000000+0 2 1 2 28 419 3 3 56 - 2.500068-1 1.006487+0 419 3 3 57 - 2.931600+2 0.000000+0 2 1 2 29 419 3 3 58 - 2.500344-1 8.795281-1 419 3 3 59 - 2.931600+2 0.000000+0 2 1 2 30 419 3 3 60 - 2.499915-1 7.764909-1 419 3 3 61 - 2.931600+2 0.000000+0 2 1 2 31 419 3 3 62 - 2.500083-1 6.868591-1 419 3 3 63 - 2.931600+2 0.000000+0 2 1 2 32 419 3 3 64 - 2.500005-1 6.039246-1 419 3 3 65 - 2.931600+2 0.000000+0 2 1 2 33 419 3 3 66 - 2.500054-1 5.350884-1 419 3 3 67 - 2.931600+2 0.000000+0 2 1 2 34 419 3 3 68 - 2.500019-1 4.702463-1 419 3 3 69 - 2.931600+2 0.000000+0 2 1 2 35 419 3 3 70 - 2.499942-1 4.155816-1 419 3 3 71 - 2.931600+2 0.000000+0 2 1 2 36 419 3 3 72 - 2.500204-1 3.668446-1 419 3 3 73 - 2.931600+2 0.000000+0 2 1 2 37 419 3 3 74 - 1.000055-1 3.359357-1 419 3 3 75 - 2.931600+2 0.000000+0 2 1 2 38 419 3 3 76 - 1.000025-1 3.197325-1 419 3 3 77 - 2.931600+2 0.000000+0 2 1 2 39 419 3 3 78 - 4.999347-2 3.067895-1 419 3 3 79 - 2.931600+2 0.000000+0 2 1 2 40 419 3 3 80 - 4.998229-2 2.995084-1 419 3 3 81 - 2.931600+2 0.000000+0 2 1 2 41 419 3 3 82 - 1.000174-1 2.884164-1 419 3 3 83 - 2.931600+2 0.000000+0 2 1 2 42 419 3 3 84 - 9.999096-2 2.754570-1 419 3 3 85 - 2.931600+2 0.000000+0 2 1 2 43 419 3 3 86 - 9.999992-2 2.632040-1 419 3 3 87 - 2.931600+2 0.000000+0 2 1 2 44 419 3 3 88 - 1.500060-1 2.461341-1 419 3 3 89 - 2.931600+2 0.000000+0 2 1 2 45 419 3 3 90 - 2.500021-1 2.237344-1 419 3 3 91 - 2.931600+2 0.000000+0 2 1 2 46 419 3 3 92 - 2.500058-1 1.960584-1 419 3 3 93 - 2.931600+2 0.000000+0 2 1 2 47 419 3 3 94 - 2.500081-1 1.743868-1 419 3 3 95 - 2.931600+2 0.000000+0 2 1 2 48 419 3 3 96 - 1.500464-1 1.567208-1 419 3 3 97 - 2.931600+2 0.000000+0 2 1 2 49 419 3 3 98 - 9.997715-2 1.468289-1 419 3 3 99 - 2.931600+2 0.000000+0 2 1 2 50 419 3 3 100 - 2.499605-1 1.349241-1 419 3 3 101 - 2.931600+2 0.000000+0 2 1 2 51 419 3 3 102 - 2.500539-1 1.195218-1 419 3 3 103 - 2.931600+2 0.000000+0 2 1 2 52 419 3 3 104 - 1.249823-1 1.081662-1 419 3 3 105 - 2.931600+2 0.000000+0 2 1 2 53 419 3 3 106 - 7.501323-2 1.029526-1 419 3 3 107 - 2.931600+2 0.000000+0 2 1 2 54 419 3 3 108 - 2.500424-2 1.002195-1 419 3 3 109 - 2.931600+2 0.000000+0 2 1 2 55 419 3 3 110 - 2.499961-2 9.906551-2 419 3 3 111 - 2.931600+2 0.000000+0 2 1 2 56 419 3 3 112 - 4.996597-2 9.741083-2 419 3 3 113 - 2.931600+2 0.000000+0 2 1 2 57 419 3 3 114 - 3.551257-2 9.545310-2 419 3 3 115 - 2.931600+2 0.000000+0 2 1 2 58 419 3 3 116 - 5.406806-2 9.330380-2 419 3 3 117 - 2.931600+2 0.000000+0 2 1 2 59 419 3 3 118 - 1.104441-1 8.936008-2 419 3 3 119 - 2.931600+2 0.000000+0 2 1 2 60 419 3 3 120 - 7.500419-2 8.567524-2 419 3 3 121 - 2.931600+2 0.000000+0 2 1 2 61 419 3 3 122 - 1.750007-1 8.063610-2 419 3 3 123 - 2.931600+2 0.000000+0 2 1 2 62 419 3 3 124 - 1.249910-1 9.050259-2 419 3 3 125 - 2.931600+2 0.000000+0 2 1 2 63 419 3 3 126 - 1.250025-1 1.123152-1 419 3 3 127 - 2.931600+2 0.000000+0 2 1 2 64 419 3 3 128 - 7.500169-2 1.339302-1 419 3 3 129 - 2.931600+2 0.000000+0 2 1 2 65 419 3 3 130 - 1.749988-1 1.678124-1 419 3 3 131 - 2.931600+2 0.000000+0 2 1 2 66 419 3 3 132 - 6.633376-2 2.085305-1 419 3 3 133 - 2.931600+2 0.000000+0 2 1 2 67 419 3 3 134 - 9.909254-2 2.401918-1 419 3 3 135 - 2.931600+2 0.000000+0 2 1 2 68 419 3 3 136 - 3.704179-2 2.680646-1 419 3 3 137 - 2.931600+2 0.000000+0 2 1 2 69 419 3 3 138 - 4.754338-2 2.887465-1 419 3 3 139 - 2.931600+2 0.000000+0 2 1 2 70 419 3 3 140 - 1.250060-1 3.373621-1 419 3 3 141 - 2.931600+2 0.000000+0 2 1 2 71 419 3 3 142 - 1.249977-1 4.213706-1 419 3 3 143 - 2.931600+2 0.000000+0 2 1 2 72 419 3 3 144 - 5.003758-2 4.941353-1 419 3 3 145 - 2.931600+2 0.000000+0 2 1 2 73 419 3 3 146 - 4.993605-2 5.390412-1 419 3 3 147 - 2.931600+2 0.000000+0 2 1 2 74 419 3 3 148 - 5.004302-2 5.862524-1 419 3 3 149 - 2.931600+2 0.000000+0 2 1 2 75 419 3 3 150 - 5.001871-2 6.359416-1 419 3 3 151 - 2.931600+2 0.000000+0 2 1 2 76 419 3 3 152 - 4.995191-2 6.947528-1 419 3 3 153 - 2.931600+2 0.000000+0 2 1 2 77 419 3 3 154 - 5.004543-2 7.621653-1 419 3 3 155 - 2.931600+2 0.000000+0 2 1 2 78 419 3 3 156 - 4.994617-2 8.330287-1 419 3 3 157 - 2.931600+2 0.000000+0 2 1 2 79 419 3 3 158 - 5.004682-2 9.075272-1 419 3 3 159 - 2.931600+2 0.000000+0 2 1 2 80 419 3 3 160 - 4.995962-2 9.859042-1 419 3 3 161 - 2.931600+2 0.000000+0 2 1 2 81 419 3 3 162 - 5.004203-2 1.075741+0 419 3 3 163 - 2.931600+2 0.000000+0 2 1 2 82 419 3 3 164 - 4.999659-2 1.175701+0 419 3 3 165 - 2.931600+2 0.000000+0 2 1 2 83 419 3 3 166 - 4.998963-2 1.277000+0 419 3 3 167 - 2.931600+2 0.000000+0 2 1 2 84 419 3 3 168 - 5.000882-2 1.293683+0 419 3 3 169 - 2.931600+2 0.000000+0 2 1 2 85 419 3 3 170 - 4.999863-2 1.272619+0 419 3 3 171 - 2.931600+2 0.000000+0 2 1 2 86 419 3 3 172 - 5.000142-2 1.250476+0 419 3 3 173 - 2.931600+2 0.000000+0 2 1 2 87 419 3 3 174 - 5.000916-2 1.227196+0 419 3 3 175 - 2.931600+2 0.000000+0 2 1 2 88 419 3 3 176 - 9.999264-2 1.189861+0 419 3 3 177 - 2.931600+2 0.000000+0 2 1 2 89 419 3 3 178 - 5.000320-2 1.149954+0 419 3 3 179 - 2.931600+2 0.000000+0 2 1 2 90 419 3 3 180 - 2.499435-2 1.128808+0 419 3 3 181 - 2.931600+2 0.000000+0 2 1 2 91 419 3 3 182 - 9.058538-3 1.118936+0 419 3 3 183 - 2.931600+2 0.000000+0 2 1 2 92 419 3 3 184 - 4.364640-3 1.114988+0 419 3 3 185 - 2.931600+2 0.000000+0 2 1 2 93 419 3 3 186 - 1.155782-2 1.110733+0 419 3 3 187 - 2.931600+2 0.000000+0 2 1 2 94 419 3 3 188 - 1.000062-1 1.090416+0 419 3 3 189 - 2.931600+2 0.000000+0 2 1 2 95 419 3 3 190 - 1.000052-1 1.051820+0 419 3 3 191 - 2.931600+2 0.000000+0 2 1 2 96 419 3 3 192 - 4.999999-2 1.020370+0 419 3 3 193 - 2.931600+2 0.000000+0 2 1 2 97 419 3 3 194 - 5.000110-2 9.981101-1 419 3 3 195 - 2.931600+2 0.000000+0 2 1 2 98 419 3 3 196 - 1.000021-1 9.687396-1 419 3 3 197 - 2.931600+2 0.000000+0 2 1 2 99 419 3 3 198 - 1.000048-1 9.283382-1 419 3 3 199 - 2.931600+2 0.000000+0 2 1 2 100 419 3 3 200 - 5.000770-2 9.121833-1 419 3 3 201 - 2.931600+2 0.000000+0 2 1 2 101 419 3 3 202 - 4.999119-2 8.995571-1 419 3 3 203 - 2.931600+2 0.000000+0 2 1 2 102 419 3 3 204 - 4.999926-2 8.850576-1 419 3 3 205 - 2.931600+2 0.000000+0 2 1 2 103 419 3 3 206 - 5.000533-2 8.698124-1 419 3 3 207 - 2.931600+2 0.000000+0 2 1 2 104 419 3 3 208 - 5.000393-2 8.546089-1 419 3 3 209 - 2.931600+2 0.000000+0 2 1 2 105 419 3 3 210 - 5.000589-2 8.400978-1 419 3 3 211 - 2.931600+2 0.000000+0 2 1 2 106 419 3 3 212 - 4.999055-2 8.248720-1 419 3 3 213 - 2.931600+2 0.000000+0 2 1 2 107 419 3 3 214 - 5.000941-2 8.099380-1 419 3 3 215 - 2.931600+2 0.000000+0 2 1 2 108 419 3 3 216 - 4.999941-2 7.958023-1 419 3 3 217 - 2.931600+2 0.000000+0 2 1 2 109 419 3 3 218 - 4.999649-2 7.810195-1 419 3 3 219 - 2.931600+2 0.000000+0 2 1 2 110 419 3 3 220 - 5.000559-2 7.671085-1 419 3 3 221 - 2.931600+2 0.000000+0 2 1 2 111 419 3 3 222 - 4.999654-2 7.531994-1 419 3 3 223 - 2.931600+2 0.000000+0 2 1 2 112 419 3 3 224 - 5.830013-2 7.380330-1 419 3 3 225 - 2.931600+2 0.000000+0 2 1 2 113 419 3 3 226 - 4.171240-2 7.246462-1 419 3 3 227 - 2.931600+2 0.000000+0 2 1 2 114 419 3 3 228 - 9.996157-2 7.062560-1 419 3 3 229 - 2.931600+2 0.000000+0 2 1 2 115 419 3 3 230 - 4.999362-2 6.870344-1 419 3 3 231 - 2.931600+2 0.000000+0 2 1 2 116 419 3 3 232 - 5.006558-2 6.734532-1 419 3 3 233 - 2.931600+2 0.000000+0 2 1 2 117 419 3 3 234 - 4.993355-2 6.613014-1 419 3 3 235 - 2.931600+2 0.000000+0 2 1 2 118 419 3 3 236 - 5.007376-2 6.493637-1 419 3 3 237 - 2.931600+2 0.000000+0 2 1 2 119 419 3 3 238 - 4.993727-2 6.368157-1 419 3 3 239 - 2.931600+2 0.000000+0 2 1 2 120 419 3 3 240 - 5.003866-2 6.250200-1 419 3 3 241 - 2.931600+2 0.000000+0 2 1 2 121 419 3 3 242 - 5.000960-2 6.138135-1 419 3 3 243 - 2.931600+2 0.000000+0 2 1 2 122 419 3 3 244 - 4.998948-2 6.021907-1 419 3 3 245 - 2.931600+2 0.000000+0 2 1 2 123 419 3 3 246 - 4.997139-2 5.916306-1 419 3 3 247 - 2.931600+2 0.000000+0 2 1 2 124 419 3 3 248 - 5.000419-2 5.809805-1 419 3 3 249 - 2.931600+2 0.000000+0 2 1 2 125 419 3 3 250 - 5.002058-2 5.708686-1 419 3 3 251 - 2.931600+2 0.000000+0 2 1 2 126 419 3 3 252 - 5.001758-2 5.612802-1 419 3 3 253 - 2.931600+2 0.000000+0 2 1 2 127 419 3 3 254 - 4.999298-2 5.520176-1 419 3 3 255 - 2.931600+2 0.000000+0 2 1 2 128 419 3 3 256 - 4.995837-2 5.434564-1 419 3 3 257 - 2.931600+2 0.000000+0 2 1 2 129 419 3 3 258 - 3.320467-2 5.366008-1 419 3 3 259 - 2.931600+2 0.000000+0 2 1 2 130 419 3 3 260 - 1.657101-2 5.328809-1 419 3 3 261 - 2.931600+2 0.000000+0 2 1 2 131 419 3 3 262 - 8.251205-3 5.309846-1 419 3 3 263 - 2.931600+2 0.000000+0 2 1 2 132 419 3 3 264 - 8.295947-3 5.297041-1 419 3 3 265 - 2.931600+2 0.000000+0 2 1 2 133 419 3 3 266 - 3.285065-2 5.264842-1 419 3 3 267 - 2.931600+2 0.000000+0 2 1 2 134 419 3 3 268 - 4.877513-2 5.208617-1 419 3 3 269 - 2.931600+2 0.000000+0 2 1 2 135 419 3 3 270 - 4.797899-2 5.143134-1 419 3 3 271 - 2.931600+2 0.000000+0 2 1 2 136 419 3 3 272 - 4.696324-2 5.085092-1 419 3 3 273 - 2.931600+2 0.000000+0 2 1 2 137 419 3 3 274 - 4.575857-2 5.037720-1 419 3 3 275 - 2.931600+2 0.000000+0 2 1 2 138 419 3 3 276 - 4.436130-2 5.020756-1 419 3 3 277 - 2.931600+2 0.000000+0 2 1 2 139 419 3 3 278 - 4.272236-2 5.038208-1 419 3 3 279 - 2.931600+2 0.000000+0 2 1 2 140 419 3 3 280 - 7.996079-2 5.148792-1 419 3 3 281 - 2.931600+2 0.000000+0 2 1 2 141 419 3 3 282 - 7.163096-2 5.454951-1 419 3 3 283 - 2.931600+2 0.000000+0 2 1 2 142 419 3 3 284 - 6.244688-2 5.781706-1 419 3 3 285 - 2.931600+2 0.000000+0 2 1 2 143 419 3 3 286 - 2.762654-2 5.981618-1 419 3 3 287 - 2.931600+2 0.000000+0 2 1 2 144 419 3 3 288 - 2.519975-2 6.082843-1 419 3 3 289 - 2.931600+2 0.000000+0 2 1 2 145 419 3 3 290 - 2.279025-2 6.162393-1 419 3 3 291 - 2.931600+2 0.000000+0 2 1 2 146 419 3 3 292 - 2.042450-2 6.252570-1 419 3 3 293 - 2.931600+2 0.000000+0 2 1 2 147 419 3 3 294 - 1.814118-2 6.338314-1 419 3 3 295 - 2.931600+2 0.000000+0 2 1 2 148 419 3 3 296 - 1.594720-2 6.390602-1 419 3 3 297 - 2.931600+2 0.000000+0 2 1 2 149 419 3 3 298 - 1.387617-2 6.429871-1 419 3 3 299 - 2.931600+2 0.000000+0 2 1 2 150 419 3 3 300 - 8.164756-3 6.460945-1 419 3 3 301 - 2.931600+2 0.000000+0 2 1 2 151 419 3 3 302 - 3.774230-3 6.472964-1 419 3 3 303 - 2.931600+2 0.000000+0 2 1 2 152 419 3 3 304 - 1.015748-2 6.488416-1 419 3 3 305 - 2.931600+2 0.000000+0 2 1 2 153 419 3 3 306 - 8.535865-3 6.512946-1 419 3 3 307 - 2.931600+2 0.000000+0 2 1 2 154 419 3 3 308 - 7.082278-3 6.521798-1 419 3 3 309 - 2.931600+2 0.000000+0 2 1 2 155 419 3 3 310 - 5.798985-3 6.519525-1 419 3 3 311 - 2.931600+2 0.000000+0 2 1 2 156 419 3 3 312 - 4.681642-3 6.491419-1 419 3 3 313 - 2.931600+2 0.000000+0 2 1 2 157 419 3 3 314 - 3.723745-3 6.475475-1 419 3 3 315 - 2.931600+2 0.000000+0 2 1 2 158 419 3 3 316 - 2.916072-3 6.437175-1 419 3 3 317 - 2.931600+2 0.000000+0 2 1 2 159 419 3 3 318 - 2.246690-3 6.397165-1 419 3 3 319 - 2.931600+2 0.000000+0 2 1 2 160 419 3 3 320 - 1.955084-3 6.350453-1 419 3 3 321 - 2.931600+2 0.000000+0 2 1 2 161 419 3 3 322 - 1.953959-3 6.390763-1 419 3 3 323 - 2.931600+2 0.000000+0 2 1 2 162 419 3 3 324 - 1.951830-3 6.380741-1 419 3 3 325 - 2.931600+2 0.000000+0 2 1 2 163 419 3 3 326 - 1.955070-3 6.191132-1 419 3 3 327 - 2.931600+2 0.000000+0 2 1 2 164 419 3 3 328 - 9.765906-4 5.964746-1 419 3 3 329 - 2.931600+2 0.000000+0 2 1 2 165 419 3 3 330 - 9.651867-3 5.723650-1 419 3 3 331 - 2.931600+2 0.000000+0 2 1 2 166 419 3 3 332 - 1.527244+0 5.330860-1 419 3 3 333 - 2.931600+2 0.000000+0 2 1 2 167 419 3 3 334 - 5.083487+0 5.095638-1 419 3 3 335 - 2.931600+2 0.000000+0 2 1 2 168 419 3 3 336 - 8.848247+0 4.878518-1 419 3 3 337 - 2.931600+2 0.000000+0 2 1 2 169 419 3 3 338 - 6.806587+0 4.660063-1 419 3 3 339 - 2.931600+2 0.000000+0 2 1 2 170 419 3 3 340 - 2.298726+0 4.448162-1 419 3 3 341 - 2.931600+2 0.000000+0 2 1 2 171 419 3 3 342 - 3.462235-1 4.220972-1 419 3 3 343 - 2.931600+2 0.000000+0 2 1 2 172 419 3 3 344 - 3.382274-3 3.896537-1 419 3 3 345 - 2.931600+2 0.000000+0 2 1 2 173 419 3 3 346 - 1.693835-3 4.564828-1 419 3 3 347 - 2.931600+2 0.000000+0 2 1 2 174 419 3 3 348 - 1.691494-3 4.901247-1 419 3 3 349 - 2.931600+2 0.000000+0 2 1 2 175 419 3 3 350 - 8.453596-3 4.510943-1 419 3 3 351 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 4 1 - 2.931600+2 0.000000+0 2 1 2 100 419 3 4 2 - 5.000771-2 3.844929-3 419 3 4 3 - 2.931600+2 0.000000+0 2 1 2 101 419 3 4 4 - 4.999119-2 1.329464-2 419 3 4 5 - 2.931600+2 0.000000+0 2 1 2 102 419 3 4 6 - 4.999926-2 2.326306-2 419 3 4 7 - 2.931600+2 0.000000+0 2 1 2 103 419 3 4 8 - 5.000523-2 3.345910-2 419 3 4 9 - 2.931600+2 0.000000+0 2 1 2 104 419 3 4 10 - 5.000401-2 3.854945-2 419 3 4 11 - 2.931600+2 0.000000+0 2 1 2 105 419 3 4 12 - 5.000589-2 4.169765-2 419 3 4 13 - 2.931600+2 0.000000+0 2 1 2 106 419 3 4 14 - 4.999054-2 4.498967-2 419 3 4 15 - 2.931600+2 0.000000+0 2 1 2 107 419 3 4 16 - 5.000951-2 4.778601-2 419 3 4 17 - 2.931600+2 0.000000+0 2 1 2 108 419 3 4 18 - 4.999941-2 5.038104-2 419 3 4 19 - 2.931600+2 0.000000+0 2 1 2 109 419 3 4 20 - 4.999645-2 5.302597-2 419 3 4 21 - 2.931600+2 0.000000+0 2 1 2 110 419 3 4 22 - 5.000559-2 5.532846-2 419 3 4 23 - 2.931600+2 0.000000+0 2 1 2 111 419 3 4 24 - 4.999648-2 5.766610-2 419 3 4 25 - 2.931600+2 0.000000+0 2 1 2 112 419 3 4 26 - 5.830021-2 5.995121-2 419 3 4 27 - 2.931600+2 0.000000+0 2 1 2 113 419 3 4 28 - 4.171237-2 6.199099-2 419 3 4 29 - 2.931600+2 0.000000+0 2 1 2 114 419 3 4 30 - 9.996160-2 6.438433-2 419 3 4 31 - 2.931600+2 0.000000+0 2 1 2 115 419 3 4 32 - 4.999362-2 6.682240-2 419 3 4 33 - 2.931600+2 0.000000+0 2 1 2 116 419 3 4 34 - 5.006567-2 6.850253-2 419 3 4 35 - 2.931600+2 0.000000+0 2 1 2 117 419 3 4 36 - 4.993355-2 6.973241-2 419 3 4 37 - 2.931600+2 0.000000+0 2 1 2 118 419 3 4 38 - 5.007376-2 7.089521-2 419 3 4 39 - 2.931600+2 0.000000+0 2 1 2 119 419 3 4 40 - 4.993724-2 7.209103-2 419 3 4 41 - 2.931600+2 0.000000+0 2 1 2 120 419 3 4 42 - 5.003866-2 7.297060-2 419 3 4 43 - 2.931600+2 0.000000+0 2 1 2 121 419 3 4 44 - 5.000960-2 7.377330-2 419 3 4 45 - 2.931600+2 0.000000+0 2 1 2 122 419 3 4 46 - 4.998943-2 7.453764-2 419 3 4 47 - 2.931600+2 0.000000+0 2 1 2 123 419 3 4 48 - 4.997139-2 7.506525-2 419 3 4 49 - 2.931600+2 0.000000+0 2 1 2 124 419 3 4 50 - 5.000411-2 7.558360-2 419 3 4 51 - 2.931600+2 0.000000+0 2 1 2 125 419 3 4 52 - 5.002058-2 7.591371-2 419 3 4 53 - 2.931600+2 0.000000+0 2 1 2 126 419 3 4 54 - 5.001758-2 7.618006-2 419 3 4 55 - 2.931600+2 0.000000+0 2 1 2 127 419 3 4 56 - 4.999307-2 7.630825-2 419 3 4 57 - 2.931600+2 0.000000+0 2 1 2 128 419 3 4 58 - 4.995834-2 7.636035-2 419 3 4 59 - 2.931600+2 0.000000+0 2 1 2 129 419 3 4 60 - 3.320467-2 7.633833-2 419 3 4 61 - 2.931600+2 0.000000+0 2 1 2 130 419 3 4 62 - 1.657101-2 7.630535-2 419 3 4 63 - 2.931600+2 0.000000+0 2 1 2 131 419 3 4 64 - 8.251205-3 7.628852-2 419 3 4 65 - 2.931600+2 0.000000+0 2 1 2 132 419 3 4 66 - 8.295947-3 7.627717-2 419 3 4 67 - 2.931600+2 0.000000+0 2 1 2 133 419 3 4 68 - 3.285065-2 7.624063-2 419 3 4 69 - 2.931600+2 0.000000+0 2 1 2 134 419 3 4 70 - 4.877513-2 7.615177-2 419 3 4 71 - 2.931600+2 0.000000+0 2 1 2 135 419 3 4 72 - 4.797896-2 7.603350-2 419 3 4 73 - 2.931600+2 0.000000+0 2 1 2 136 419 3 4 74 - 4.696318-2 7.588188-2 419 3 4 75 - 2.931600+2 0.000000+0 2 1 2 137 419 3 4 76 - 4.575857-2 7.557957-2 419 3 4 77 - 2.931600+2 0.000000+0 2 1 2 138 419 3 4 78 - 4.436130-2 7.485308-2 419 3 4 79 - 2.931600+2 0.000000+0 2 1 2 139 419 3 4 80 - 4.272236-2 7.358350-2 419 3 4 81 - 2.931600+2 0.000000+0 2 1 2 140 419 3 4 82 - 7.996083-2 7.024813-2 419 3 4 83 - 2.931600+2 0.000000+0 2 1 2 141 419 3 4 84 - 7.163080-2 6.360938-2 419 3 4 85 - 2.931600+2 0.000000+0 2 1 2 142 419 3 4 86 - 6.244698-2 5.694404-2 419 3 4 87 - 2.931600+2 0.000000+0 2 1 2 143 419 3 4 88 - 2.762652-2 5.231108-2 419 3 4 89 - 2.931600+2 0.000000+0 2 1 2 144 419 3 4 90 - 2.519972-2 4.977471-2 419 3 4 91 - 2.931600+2 0.000000+0 2 1 2 145 419 3 4 92 - 2.279022-2 4.771624-2 419 3 4 93 - 2.931600+2 0.000000+0 2 1 2 146 419 3 4 94 - 2.042454-2 5.803069-2 419 3 4 95 - 2.931600+2 0.000000+0 2 1 2 147 419 3 4 96 - 1.814121-2 6.906549-2 419 3 4 97 - 2.931600+2 0.000000+0 2 1 2 148 419 3 4 98 - 1.594717-2 7.263521-2 419 3 4 99 - 2.931600+2 0.000000+0 2 1 2 149 419 3 4 100 - 1.387605-2 7.381137-2 419 3 4 101 - 2.931600+2 0.000000+0 2 1 2 150 419 3 4 102 - 8.164821-3 7.374298-2 419 3 4 103 - 2.931600+2 0.000000+0 2 1 2 151 419 3 4 104 - 3.774194-3 7.336395-2 419 3 4 105 - 2.931600+2 0.000000+0 2 1 2 152 419 3 4 106 - 1.015723-2 7.226763-2 419 3 4 107 - 2.931600+2 0.000000+0 2 1 2 153 419 3 4 108 - 8.535770-3 6.970510-2 419 3 4 109 - 2.931600+2 0.000000+0 2 1 2 154 419 3 4 110 - 7.082278-3 6.753227-2 419 3 4 111 - 2.931600+2 0.000000+0 2 1 2 155 419 3 4 112 - 5.798906-3 7.257820-2 419 3 4 113 - 2.931600+2 0.000000+0 2 1 2 156 419 3 4 114 - 4.681642-3 7.819775-2 419 3 4 115 - 2.931600+2 0.000000+0 2 1 2 157 419 3 4 116 - 3.723613-3 8.456803-2 419 3 4 117 - 2.931600+2 0.000000+0 2 1 2 158 419 3 4 118 - 2.916027-3 8.631221-2 419 3 4 119 - 2.931600+2 0.000000+0 2 1 2 159 419 3 4 120 - 2.246747-3 8.498361-2 419 3 4 121 - 2.931600+2 0.000000+0 2 1 2 160 419 3 4 122 - 1.955090-3 8.211442-2 419 3 4 123 - 2.931600+2 0.000000+0 2 1 2 161 419 3 4 124 - 1.953965-3 8.303702-2 419 3 4 125 - 2.931600+2 0.000000+0 2 1 2 162 419 3 4 126 - 1.951832-3 8.553741-2 419 3 4 127 - 2.931600+2 0.000000+0 2 1 2 163 419 3 4 128 - 1.955078-3 8.546101-2 419 3 4 129 - 2.931600+2 0.000000+0 2 1 2 164 419 3 4 130 - 9.765916-4 8.380858-2 419 3 4 131 - 2.931600+2 0.000000+0 2 1 2 165 419 3 4 132 - 1.016273-2 8.239368-2 419 3 4 133 - 2.931600+2 0.000000+0 2 1 2 166 419 3 4 134 - 1.531876+0 7.949865-2 419 3 4 135 - 2.931600+2 0.000000+0 2 1 2 167 419 3 4 136 - 5.083488+0 7.708143-2 419 3 4 137 - 2.931600+2 0.000000+0 2 1 2 168 419 3 4 138 - 8.848180+0 7.464097-2 419 3 4 139 - 2.931600+2 0.000000+0 2 1 2 169 419 3 4 140 - 6.806517+0 7.203295-2 419 3 4 141 - 2.931600+2 0.000000+0 2 1 2 170 419 3 4 142 - 2.304996+0 6.944747-2 419 3 4 143 - 2.931600+2 0.000000+0 2 1 2 171 419 3 4 144 - 3.504250-1 6.658233-2 419 3 4 145 - 2.931600+2 0.000000+0 2 1 2 172 419 3 4 146 - 3.382293-3 5.204540-2 419 3 4 147 - 2.931600+2 0.000000+0 2 1 2 173 419 3 4 148 - 1.693836-3 2.220709-2 419 3 4 149 - 2.931600+2 0.000000+0 2 1 2 174 419 3 4 150 - 1.691503-3 6.494102-3 419 3 4 151 - 2.931600+2 0.000000+0 2 1 2 175 419 3 4 152 - 8.453621-3 6.000976-3 419 3 4 153 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 16 1 - 2.931600+2 0.000000+0 2 1 2 163 419 3 16 2 - 1.955080-3 1.13726-10 419 3 16 3 - 2.931600+2 0.000000+0 2 1 2 164 419 3 16 4 - 9.766681-4 6.906002-6 419 3 16 5 - 2.931600+2 0.000000+0 2 1 2 165 419 3 16 6 - 9.893008-3 2.468578-5 419 3 16 7 - 2.931600+2 0.000000+0 2 1 2 166 419 3 16 8 - 1.537615+0 5.087607-5 419 3 16 9 - 2.931600+2 0.000000+0 2 1 2 167 419 3 16 10 - 5.083622+0 6.603765-5 419 3 16 11 - 2.931600+2 0.000000+0 2 1 2 168 419 3 16 12 - 8.848080+0 8.024520-5 419 3 16 13 - 2.931600+2 0.000000+0 2 1 2 169 419 3 16 14 - 6.806521+0 9.485868-5 419 3 16 15 - 2.931600+2 0.000000+0 2 1 2 170 419 3 16 16 - 2.304996+0 1.093362-4 419 3 16 17 - 2.931600+2 0.000000+0 2 1 2 171 419 3 16 18 - 3.559738-1 1.252346-4 419 3 16 19 - 2.931600+2 0.000000+0 2 1 2 172 419 3 16 20 - 3.382293-3 1.717998-4 419 3 16 21 - 2.931600+2 0.000000+0 2 1 2 173 419 3 16 22 - 1.693836-3 1.990406-4 419 3 16 23 - 2.931600+2 0.000000+0 2 1 2 174 419 3 16 24 - 1.691503-3 2.178215-4 419 3 16 25 - 2.931600+2 0.000000+0 2 1 2 175 419 3 16 26 - 8.453629-3 2.775120-4 419 3 16 27 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 22 1 - 2.931600+2 0.000000+0 2 1 2 125 419 3 22 2 - 5.002049-2 5.880741-7 419 3 22 3 - 2.931600+2 0.000000+0 2 1 2 126 419 3 22 4 - 5.001758-2 2.222485-6 419 3 22 5 - 2.931600+2 0.000000+0 2 1 2 127 419 3 22 6 - 4.999307-2 3.957407-6 419 3 22 7 - 2.931600+2 0.000000+0 2 1 2 128 419 3 22 8 - 4.995837-2 5.780408-6 419 3 22 9 - 2.931600+2 0.000000+0 2 1 2 129 419 3 22 10 - 3.320467-2 7.368585-6 419 3 22 11 - 2.931600+2 0.000000+0 2 1 2 130 419 3 22 12 - 1.657101-2 8.354294-6 419 3 22 13 - 2.931600+2 0.000000+0 2 1 2 131 419 3 22 14 - 8.251205-3 8.856765-6 419 3 22 15 - 2.931600+2 0.000000+0 2 1 2 132 419 3 22 16 - 8.295947-3 9.196060-6 419 3 22 17 - 2.931600+2 0.000000+0 2 1 2 133 419 3 22 18 - 3.285067-2 1.005659-5 419 3 22 19 - 2.931600+2 0.000000+0 2 1 2 134 419 3 22 20 - 4.877513-2 1.182942-5 419 3 22 21 - 2.931600+2 0.000000+0 2 1 2 135 419 3 22 22 - 4.797899-2 1.405535-5 419 3 22 23 - 2.931600+2 0.000000+0 2 1 2 136 419 3 22 24 - 4.696325-2 1.639535-5 419 3 22 25 - 2.931600+2 0.000000+0 2 1 2 137 419 3 22 26 - 4.575866-2 1.885541-5 419 3 22 27 - 2.931600+2 0.000000+0 2 1 2 138 419 3 22 28 - 4.436130-2 2.144237-5 419 3 22 29 - 2.931600+2 0.000000+0 2 1 2 139 419 3 22 30 - 4.272235-2 2.416143-5 419 3 22 31 - 2.931600+2 0.000000+0 2 1 2 140 419 3 22 32 - 7.996096-2 2.848485-5 419 3 22 33 - 2.931600+2 0.000000+0 2 1 2 141 419 3 22 34 - 7.163098-2 3.479077-5 419 3 22 35 - 2.931600+2 0.000000+0 2 1 2 142 419 3 22 36 - 6.244718-2 4.175656-5 419 3 22 37 - 2.931600+2 0.000000+0 2 1 2 143 419 3 22 38 - 2.762671-2 4.751731-5 419 3 22 39 - 2.931600+2 0.000000+0 2 1 2 144 419 3 22 40 - 2.519994-2 5.157155-5 419 3 22 41 - 2.931600+2 0.000000+0 2 1 2 145 419 3 22 42 - 2.279047-2 5.583306-5 419 3 22 43 - 2.931600+2 0.000000+0 2 1 2 146 419 3 22 44 - 2.042476-2 6.031209-5 419 3 22 45 - 2.931600+2 0.000000+0 2 1 2 147 419 3 22 46 - 1.814118-2 6.502056-5 419 3 22 47 - 2.931600+2 0.000000+0 2 1 2 148 419 3 22 48 - 1.594743-2 6.997046-5 419 3 22 49 - 2.931600+2 0.000000+0 2 1 2 149 419 3 22 50 - 1.387617-2 7.517373-5 419 3 22 51 - 2.931600+2 0.000000+0 2 1 2 150 419 3 22 52 - 8.164822-3 7.974631-5 419 3 22 53 - 2.931600+2 0.000000+0 2 1 2 151 419 3 22 54 - 3.774230-3 8.258612-5 419 3 22 55 - 2.931600+2 0.000000+0 2 1 2 152 419 3 22 56 - 1.015748-2 8.639229-5 419 3 22 57 - 2.931600+2 0.000000+0 2 1 2 153 419 3 22 58 - 8.535930-3 9.243573-5 419 3 22 59 - 2.931600+2 0.000000+0 2 1 2 154 419 3 22 60 - 7.082486-3 9.878790-5 419 3 22 61 - 2.931600+2 0.000000+0 2 1 2 155 419 3 22 62 - 5.799093-3 1.054650-4 419 3 22 63 - 2.931600+2 0.000000+0 2 1 2 156 419 3 22 64 - 4.681774-3 1.124839-4 419 3 22 65 - 2.931600+2 0.000000+0 2 1 2 157 419 3 22 66 - 3.723745-3 1.198618-4 419 3 22 67 - 2.931600+2 0.000000+0 2 1 2 158 419 3 22 68 - 2.916072-3 1.276166-4 419 3 22 69 - 2.931600+2 0.000000+0 2 1 2 159 419 3 22 70 - 2.246747-3 1.357676-4 419 3 22 71 - 2.931600+2 0.000000+0 2 1 2 160 419 3 22 72 - 1.955091-3 1.445648-4 419 3 22 73 - 2.931600+2 0.000000+0 2 1 2 161 419 3 22 74 - 1.953971-3 1.535999-4 419 3 22 75 - 2.931600+2 0.000000+0 2 1 2 162 419 3 22 76 - 1.951837-3 1.630904-4 419 3 22 77 - 2.931600+2 0.000000+0 2 1 2 163 419 3 22 78 - 1.955080-3 1.730702-4 419 3 22 79 - 2.931600+2 0.000000+0 2 1 2 164 419 3 22 80 - 9.766681-4 1.808774-4 419 3 22 81 - 2.931600+2 0.000000+0 2 1 2 165 419 3 22 82 - 9.893008-3 1.877571-4 419 3 22 83 - 2.931600+2 0.000000+0 2 1 2 166 419 3 22 84 - 1.537615+0 1.978912-4 419 3 22 85 - 2.931600+2 0.000000+0 2 1 2 167 419 3 22 86 - 5.083622+0 2.037578-4 419 3 22 87 - 2.931600+2 0.000000+0 2 1 2 168 419 3 22 88 - 8.848080+0 2.092553-4 419 3 22 89 - 2.931600+2 0.000000+0 2 1 2 169 419 3 22 90 - 6.806521+0 2.149099-4 419 3 22 91 - 2.931600+2 0.000000+0 2 1 2 170 419 3 22 92 - 2.304996+0 2.205118-4 419 3 22 93 - 2.931600+2 0.000000+0 2 1 2 171 419 3 22 94 - 3.559738-1 2.266636-4 419 3 22 95 - 2.931600+2 0.000000+0 2 1 2 172 419 3 22 96 - 3.382293-3 2.446815-4 419 3 22 97 - 2.931600+2 0.000000+0 2 1 2 173 419 3 22 98 - 1.693836-3 2.552221-4 419 3 22 99 - 2.931600+2 0.000000+0 2 1 2 174 419 3 22 100 - 1.691503-3 2.624892-4 419 3 22 101 - 2.931600+2 0.000000+0 2 1 2 175 419 3 22 102 - 8.453629-3 2.855859-4 419 3 22 103 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 28 1 - 2.931600+2 0.000000+0 2 1 2 150 419 3 28 2 - 8.164809-3 5.708242-7 419 3 28 3 - 2.931600+2 0.000000+0 2 1 2 151 419 3 28 4 - 3.774230-3 5.502646-6 419 3 28 5 - 2.931600+2 0.000000+0 2 1 2 152 419 3 28 6 - 1.015748-2 1.456933-5 419 3 28 7 - 2.931600+2 0.000000+0 2 1 2 153 419 3 28 8 - 8.535930-3 2.896546-5 419 3 28 9 - 2.931600+2 0.000000+0 2 1 2 154 419 3 28 10 - 7.082486-3 4.409701-5 419 3 28 11 - 2.931600+2 0.000000+0 2 1 2 155 419 3 28 12 - 5.799093-3 6.000246-5 419 3 28 13 - 2.931600+2 0.000000+0 2 1 2 156 419 3 28 14 - 4.681774-3 7.672238-5 419 3 28 15 - 2.931600+2 0.000000+0 2 1 2 157 419 3 28 16 - 3.723745-3 9.429739-5 419 3 28 17 - 2.931600+2 0.000000+0 2 1 2 158 419 3 28 18 - 2.916072-3 1.127699-4 419 3 28 19 - 2.931600+2 0.000000+0 2 1 2 159 419 3 28 20 - 2.246747-3 1.321864-4 419 3 28 21 - 2.931600+2 0.000000+0 2 1 2 160 419 3 28 22 - 1.955091-3 1.531423-4 419 3 28 23 - 2.931600+2 0.000000+0 2 1 2 161 419 3 28 24 - 1.953971-3 1.746651-4 419 3 28 25 - 2.931600+2 0.000000+0 2 1 2 162 419 3 28 26 - 1.951837-3 1.972723-4 419 3 28 27 - 2.931600+2 0.000000+0 2 1 2 163 419 3 28 28 - 1.955080-3 2.210452-4 419 3 28 29 - 2.931600+2 0.000000+0 2 1 2 164 419 3 28 30 - 9.766681-4 2.396428-4 419 3 28 31 - 2.931600+2 0.000000+0 2 1 2 165 419 3 28 32 - 9.893008-3 2.560310-4 419 3 28 33 - 2.931600+2 0.000000+0 2 1 2 166 419 3 28 34 - 1.537615+0 2.801715-4 419 3 28 35 - 2.931600+2 0.000000+0 2 1 2 167 419 3 28 36 - 5.083622+0 2.941464-4 419 3 28 37 - 2.931600+2 0.000000+0 2 1 2 168 419 3 28 38 - 8.848080+0 3.072420-4 419 3 28 39 - 2.931600+2 0.000000+0 2 1 2 169 419 3 28 40 - 6.806521+0 3.207117-4 419 3 28 41 - 2.931600+2 0.000000+0 2 1 2 170 419 3 28 42 - 2.304996+0 3.340562-4 419 3 28 43 - 2.931600+2 0.000000+0 2 1 2 171 419 3 28 44 - 3.559738-1 3.487103-4 419 3 28 45 - 2.931600+2 0.000000+0 2 1 2 172 419 3 28 46 - 3.382293-3 4.471892-4 419 3 28 47 - 2.931600+2 0.000000+0 2 1 2 173 419 3 28 48 - 1.693836-3 6.827298-4 419 3 28 49 - 2.931600+2 0.000000+0 2 1 2 174 419 3 28 50 - 1.691503-3 8.990832-4 419 3 28 51 - 2.931600+2 0.000000+0 2 1 2 175 419 3 28 52 - 8.453622-3 2.094565-3 419 3 28 53 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 32 1 - 2.931600+2 0.000000+0 2 1 2 160 419 3 32 2 - 1.955087-3 8.76952-11 419 3 32 3 - 2.931600+2 0.000000+0 2 1 2 161 419 3 32 4 - 1.953966-3 1.498588-9 419 3 32 5 - 2.931600+2 0.000000+0 2 1 2 162 419 3 32 6 - 1.951836-3 1.305451-8 419 3 32 7 - 2.931600+2 0.000000+0 2 1 2 163 419 3 32 8 - 1.955078-3 4.471684-8 419 3 32 9 - 2.931600+2 0.000000+0 2 1 2 164 419 3 32 10 - 9.765916-4 8.008548-8 419 3 32 11 - 2.931600+2 0.000000+0 2 1 2 165 419 3 32 12 - 9.893008-3 1.161620-7 419 3 32 13 - 2.931600+2 0.000000+0 2 1 2 166 419 3 32 14 - 1.531876+0 1.729228-7 419 3 32 15 - 2.931600+2 0.000000+0 2 1 2 167 419 3 32 16 - 5.083488+0 2.071307-7 419 3 32 17 - 2.931600+2 0.000000+0 2 1 2 168 419 3 32 18 - 8.848180+0 2.390756-7 419 3 32 19 - 2.931600+2 0.000000+0 2 1 2 169 419 3 32 20 - 6.806517+0 2.715446-7 419 3 32 21 - 2.931600+2 0.000000+0 2 1 2 170 419 3 32 22 - 2.304996+0 3.031165-7 419 3 32 23 - 2.931600+2 0.000000+0 2 1 2 171 419 3 32 24 - 3.504250-1 3.374804-7 419 3 32 25 - 2.931600+2 0.000000+0 2 1 2 172 419 3 32 26 - 3.382293-3 1.364895-3 419 3 32 27 - 2.931600+2 0.000000+0 2 1 2 173 419 3 32 28 - 1.693836-3 6.532987-3 419 3 32 29 - 2.931600+2 0.000000+0 2 1 2 174 419 3 32 30 - 1.691503-3 9.313345-3 419 3 32 31 - 2.931600+2 0.000000+0 2 1 2 175 419 3 32 32 - 8.453622-3 1.023964-2 419 3 32 33 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 34 1 - 2.931600+2 0.000000+0 2 1 2 125 419 3 34 2 - 5.002055-2 4.32577-10 419 3 34 3 - 2.931600+2 0.000000+0 2 1 2 126 419 3 34 4 - 5.001758-2 1.730759-6 419 3 34 5 - 2.931600+2 0.000000+0 2 1 2 127 419 3 34 6 - 4.999307-2 5.200677-6 419 3 34 7 - 2.931600+2 0.000000+0 2 1 2 128 419 3 34 8 - 4.995837-2 8.846757-6 419 3 34 9 - 2.931600+2 0.000000+0 2 1 2 129 419 3 34 10 - 3.320467-2 1.202318-5 419 3 34 11 - 2.931600+2 0.000000+0 2 1 2 130 419 3 34 12 - 1.657101-2 1.399464-5 419 3 34 13 - 2.931600+2 0.000000+0 2 1 2 131 419 3 34 14 - 8.251205-3 1.499960-5 419 3 34 15 - 2.931600+2 0.000000+0 2 1 2 132 419 3 34 16 - 8.295947-3 1.567821-5 419 3 34 17 - 2.931600+2 0.000000+0 2 1 2 133 419 3 34 18 - 3.285067-2 1.739931-5 419 3 34 19 - 2.931600+2 0.000000+0 2 1 2 134 419 3 34 20 - 4.877513-2 2.094504-5 419 3 34 21 - 2.931600+2 0.000000+0 2 1 2 135 419 3 34 22 - 4.797899-2 2.539698-5 419 3 34 23 - 2.931600+2 0.000000+0 2 1 2 136 419 3 34 24 - 4.696325-2 3.007709-5 419 3 34 25 - 2.931600+2 0.000000+0 2 1 2 137 419 3 34 26 - 4.575866-2 3.499731-5 419 3 34 27 - 2.931600+2 0.000000+0 2 1 2 138 419 3 34 28 - 4.436130-2 4.017136-5 419 3 34 29 - 2.931600+2 0.000000+0 2 1 2 139 419 3 34 30 - 4.272235-2 4.560959-5 419 3 34 31 - 2.931600+2 0.000000+0 2 1 2 140 419 3 34 32 - 7.996096-2 5.425661-5 419 3 34 33 - 2.931600+2 0.000000+0 2 1 2 141 419 3 34 34 - 7.163098-2 6.686873-5 419 3 34 35 - 2.931600+2 0.000000+0 2 1 2 142 419 3 34 36 - 6.244718-2 8.080060-5 419 3 34 37 - 2.931600+2 0.000000+0 2 1 2 143 419 3 34 38 - 2.762671-2 9.232235-5 419 3 34 39 - 2.931600+2 0.000000+0 2 1 2 144 419 3 34 40 - 2.519994-2 1.004310-4 419 3 34 41 - 2.931600+2 0.000000+0 2 1 2 145 419 3 34 42 - 2.279047-2 1.089542-4 419 3 34 43 - 2.931600+2 0.000000+0 2 1 2 146 419 3 34 44 - 2.042476-2 1.179125-4 419 3 34 45 - 2.931600+2 0.000000+0 2 1 2 147 419 3 34 46 - 1.814118-2 1.273296-4 419 3 34 47 - 2.931600+2 0.000000+0 2 1 2 148 419 3 34 48 - 1.594743-2 1.372296-4 419 3 34 49 - 2.931600+2 0.000000+0 2 1 2 149 419 3 34 50 - 1.387617-2 1.476364-4 419 3 34 51 - 2.931600+2 0.000000+0 2 1 2 150 419 3 34 52 - 8.164822-3 1.567817-4 419 3 34 53 - 2.931600+2 0.000000+0 2 1 2 151 419 3 34 54 - 3.774230-3 1.624614-4 419 3 34 55 - 2.931600+2 0.000000+0 2 1 2 152 419 3 34 56 - 1.015748-2 1.700740-4 419 3 34 57 - 2.931600+2 0.000000+0 2 1 2 153 419 3 34 58 - 8.535930-3 1.821611-4 419 3 34 59 - 2.931600+2 0.000000+0 2 1 2 154 419 3 34 60 - 7.082486-3 1.948657-4 419 3 34 61 - 2.931600+2 0.000000+0 2 1 2 155 419 3 34 62 - 5.799093-3 2.082201-4 419 3 34 63 - 2.931600+2 0.000000+0 2 1 2 156 419 3 34 64 - 4.681774-3 2.222583-4 419 3 34 65 - 2.931600+2 0.000000+0 2 1 2 157 419 3 34 66 - 3.723745-3 2.370145-4 419 3 34 67 - 2.931600+2 0.000000+0 2 1 2 158 419 3 34 68 - 2.916072-3 2.525243-4 419 3 34 69 - 2.931600+2 0.000000+0 2 1 2 159 419 3 34 70 - 2.246747-3 2.688266-4 419 3 34 71 - 2.931600+2 0.000000+0 2 1 2 160 419 3 34 72 - 1.955091-3 2.864214-4 419 3 34 73 - 2.931600+2 0.000000+0 2 1 2 161 419 3 34 74 - 1.953971-3 3.044921-4 419 3 34 75 - 2.931600+2 0.000000+0 2 1 2 162 419 3 34 76 - 1.951837-3 3.234734-4 419 3 34 77 - 2.931600+2 0.000000+0 2 1 2 163 419 3 34 78 - 1.955080-3 3.434334-4 419 3 34 79 - 2.931600+2 0.000000+0 2 1 2 164 419 3 34 80 - 9.766681-4 3.590481-4 419 3 34 81 - 2.931600+2 0.000000+0 2 1 2 165 419 3 34 82 - 9.893008-3 3.728079-4 419 3 34 83 - 2.931600+2 0.000000+0 2 1 2 166 419 3 34 84 - 1.537615+0 3.930765-4 419 3 34 85 - 2.931600+2 0.000000+0 2 1 2 167 419 3 34 86 - 5.083622+0 4.048100-4 419 3 34 87 - 2.931600+2 0.000000+0 2 1 2 168 419 3 34 88 - 8.848080+0 4.158052-4 419 3 34 89 - 2.931600+2 0.000000+0 2 1 2 169 419 3 34 90 - 6.806521+0 4.271146-4 419 3 34 91 - 2.931600+2 0.000000+0 2 1 2 170 419 3 34 92 - 2.304996+0 4.383187-4 419 3 34 93 - 2.931600+2 0.000000+0 2 1 2 171 419 3 34 94 - 3.559738-1 4.506225-4 419 3 34 95 - 2.931600+2 0.000000+0 2 1 2 172 419 3 34 96 - 3.382293-3 4.866591-4 419 3 34 97 - 2.931600+2 0.000000+0 2 1 2 173 419 3 34 98 - 1.693836-3 5.077408-4 419 3 34 99 - 2.931600+2 0.000000+0 2 1 2 174 419 3 34 100 - 1.691503-3 5.222754-4 419 3 34 101 - 2.931600+2 0.000000+0 2 1 2 175 419 3 34 102 - 8.453629-3 5.684697-4 419 3 34 103 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 41 1 - 2.931600+2 0.000000+0 2 1 2 166 419 3 41 2 - 1.530900+0 1.14125-10 419 3 41 3 - 2.931600+2 0.000000+0 2 1 2 167 419 3 41 4 - 5.083622+0 1.98707-10 419 3 41 5 - 2.931600+2 0.000000+0 2 1 2 168 419 3 41 6 - 8.848080+0 2.77274-10 419 3 41 7 - 2.931600+2 0.000000+0 2 1 2 169 419 3 41 8 - 6.806521+0 3.58085-10 419 3 41 9 - 2.931600+2 0.000000+0 2 1 2 170 419 3 41 10 - 2.304996+0 4.38145-10 419 3 41 11 - 2.931600+2 0.000000+0 2 1 2 171 419 3 41 12 - 3.559738-1 5.26062-10 419 3 41 13 - 2.931600+2 0.000000+0 2 1 2 172 419 3 41 14 - 3.382293-3 9.68193-10 419 3 41 15 - 2.931600+2 0.000000+0 2 1 2 173 419 3 41 16 - 1.693836-3 1.818134-9 419 3 41 17 - 2.931600+2 0.000000+0 2 1 2 174 419 3 41 18 - 1.691503-3 2.576072-9 419 3 41 19 - 2.931600+2 0.000000+0 2 1 2 175 419 3 41 20 - 8.453622-3 1.576165-5 419 3 41 21 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 44 1 - 2.931600+2 0.000000+0 2 1 2 162 419 3 44 2 - 1.951834-3 3.39510-12 419 3 44 3 - 2.931600+2 0.000000+0 2 1 2 163 419 3 44 4 - 1.955080-3 9.33690-11 419 3 44 5 - 2.931600+2 0.000000+0 2 1 2 164 419 3 44 6 - 9.766681-4 1.92057-10 419 3 44 7 - 2.931600+2 0.000000+0 2 1 2 165 419 3 44 8 - 9.893008-3 2.79020-10 419 3 44 9 - 2.931600+2 0.000000+0 2 1 2 166 419 3 44 10 - 1.537615+0 4.07121-10 419 3 44 11 - 2.931600+2 0.000000+0 2 1 2 167 419 3 44 12 - 5.083622+0 4.81278-10 419 3 44 13 - 2.931600+2 0.000000+0 2 1 2 168 419 3 44 14 - 8.848080+0 5.50769-10 419 3 44 15 - 2.931600+2 0.000000+0 2 1 2 169 419 3 44 16 - 6.806521+0 6.22246-10 419 3 44 17 - 2.931600+2 0.000000+0 2 1 2 170 419 3 44 18 - 2.304996+0 6.93058-10 419 3 44 19 - 2.931600+2 0.000000+0 2 1 2 171 419 3 44 20 - 3.559738-1 7.70819-10 419 3 44 21 - 2.931600+2 0.000000+0 2 1 2 172 419 3 44 22 - 3.382293-3 1.266507-9 419 3 44 23 - 2.931600+2 0.000000+0 2 1 2 173 419 3 44 24 - 1.693836-3 2.414559-9 419 3 44 25 - 2.931600+2 0.000000+0 2 1 2 174 419 3 44 26 - 1.691503-3 3.361506-9 419 3 44 27 - 2.931600+2 0.000000+0 2 1 2 175 419 3 44 28 - 8.453622-3 1.800649-5 419 3 44 29 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 45 1 - 2.931600+2 0.000000+0 2 1 2 155 419 3 45 2 - 5.799052-3 8.77229-15 419 3 45 3 - 2.931600+2 0.000000+0 2 1 2 156 419 3 45 4 - 4.681774-3 3.25138-11 419 3 45 5 - 2.931600+2 0.000000+0 2 1 2 157 419 3 45 6 - 3.723745-3 1.00026-10 419 3 45 7 - 2.931600+2 0.000000+0 2 1 2 158 419 3 45 8 - 2.916072-3 1.70985-10 419 3 45 9 - 2.931600+2 0.000000+0 2 1 2 159 419 3 45 10 - 2.246747-3 2.45570-10 419 3 45 11 - 2.931600+2 0.000000+0 2 1 2 160 419 3 45 12 - 1.955091-3 3.26069-10 419 3 45 13 - 2.931600+2 0.000000+0 2 1 2 161 419 3 45 14 - 1.953971-3 4.08745-10 419 3 45 15 - 2.931600+2 0.000000+0 2 1 2 162 419 3 45 16 - 1.951837-3 4.95587-10 419 3 45 17 - 2.931600+2 0.000000+0 2 1 2 163 419 3 45 18 - 1.955080-3 5.86907-10 419 3 45 19 - 2.931600+2 0.000000+0 2 1 2 164 419 3 45 20 - 9.766681-4 6.58347-10 419 3 45 21 - 2.931600+2 0.000000+0 2 1 2 165 419 3 45 22 - 9.893008-3 7.21300-10 419 3 45 23 - 2.931600+2 0.000000+0 2 1 2 166 419 3 45 24 - 1.537615+0 8.14032-10 419 3 45 25 - 2.931600+2 0.000000+0 2 1 2 167 419 3 45 26 - 5.083622+0 8.67714-10 419 3 45 27 - 2.931600+2 0.000000+0 2 1 2 168 419 3 45 28 - 8.848080+0 9.18019-10 419 3 45 29 - 2.931600+2 0.000000+0 2 1 2 169 419 3 45 30 - 6.806521+0 9.69760-10 419 3 45 31 - 2.931600+2 0.000000+0 2 1 2 170 419 3 45 32 - 2.304996+0 1.021021-9 419 3 45 33 - 2.931600+2 0.000000+0 2 1 2 171 419 3 45 34 - 3.559738-1 1.077312-9 419 3 45 35 - 2.931600+2 0.000000+0 2 1 2 172 419 3 45 36 - 3.382293-3 1.451680-9 419 3 45 37 - 2.931600+2 0.000000+0 2 1 2 173 419 3 45 38 - 1.693836-3 2.341613-9 419 3 45 39 - 2.931600+2 0.000000+0 2 1 2 174 419 3 45 40 - 1.691503-3 3.317428-9 419 3 45 41 - 2.931600+2 0.000000+0 2 1 2 175 419 3 45 42 - 8.453622-3 1.968286-5 419 3 45 43 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 51 1 - 2.931600+2 0.000000+0 2 1 2 100 419 3 51 2 - 5.000771-2 3.844929-3 419 3 51 3 - 2.931600+2 0.000000+0 2 1 2 101 419 3 51 4 - 4.999119-2 1.329464-2 419 3 51 5 - 2.931600+2 0.000000+0 2 1 2 102 419 3 51 6 - 4.999926-2 2.326306-2 419 3 51 7 - 2.931600+2 0.000000+0 2 1 2 103 419 3 51 8 - 5.000523-2 3.345910-2 419 3 51 9 - 2.931600+2 0.000000+0 2 1 2 104 419 3 51 10 - 5.000401-2 3.854945-2 419 3 51 11 - 2.931600+2 0.000000+0 2 1 2 105 419 3 51 12 - 5.000589-2 4.169765-2 419 3 51 13 - 2.931600+2 0.000000+0 2 1 2 106 419 3 51 14 - 4.999054-2 4.498967-2 419 3 51 15 - 2.931600+2 0.000000+0 2 1 2 107 419 3 51 16 - 5.000951-2 4.778601-2 419 3 51 17 - 2.931600+2 0.000000+0 2 1 2 108 419 3 51 18 - 4.999941-2 5.038104-2 419 3 51 19 - 2.931600+2 0.000000+0 2 1 2 109 419 3 51 20 - 4.999645-2 5.302597-2 419 3 51 21 - 2.931600+2 0.000000+0 2 1 2 110 419 3 51 22 - 5.000559-2 5.532846-2 419 3 51 23 - 2.931600+2 0.000000+0 2 1 2 111 419 3 51 24 - 4.999648-2 5.766610-2 419 3 51 25 - 2.931600+2 0.000000+0 2 1 2 112 419 3 51 26 - 5.830021-2 5.995121-2 419 3 51 27 - 2.931600+2 0.000000+0 2 1 2 113 419 3 51 28 - 4.171237-2 6.199099-2 419 3 51 29 - 2.931600+2 0.000000+0 2 1 2 114 419 3 51 30 - 9.996160-2 6.438433-2 419 3 51 31 - 2.931600+2 0.000000+0 2 1 2 115 419 3 51 32 - 4.999362-2 6.682240-2 419 3 51 33 - 2.931600+2 0.000000+0 2 1 2 116 419 3 51 34 - 5.006567-2 6.850253-2 419 3 51 35 - 2.931600+2 0.000000+0 2 1 2 117 419 3 51 36 - 4.993355-2 6.973241-2 419 3 51 37 - 2.931600+2 0.000000+0 2 1 2 118 419 3 51 38 - 5.007376-2 7.089521-2 419 3 51 39 - 2.931600+2 0.000000+0 2 1 2 119 419 3 51 40 - 4.993724-2 7.209103-2 419 3 51 41 - 2.931600+2 0.000000+0 2 1 2 120 419 3 51 42 - 5.003866-2 7.297060-2 419 3 51 43 - 2.931600+2 0.000000+0 2 1 2 121 419 3 51 44 - 5.000960-2 7.377330-2 419 3 51 45 - 2.931600+2 0.000000+0 2 1 2 122 419 3 51 46 - 4.998943-2 7.453764-2 419 3 51 47 - 2.931600+2 0.000000+0 2 1 2 123 419 3 51 48 - 4.997139-2 7.506525-2 419 3 51 49 - 2.931600+2 0.000000+0 2 1 2 124 419 3 51 50 - 5.000411-2 7.558360-2 419 3 51 51 - 2.931600+2 0.000000+0 2 1 2 125 419 3 51 52 - 5.002058-2 7.591371-2 419 3 51 53 - 2.931600+2 0.000000+0 2 1 2 126 419 3 51 54 - 5.001758-2 7.618006-2 419 3 51 55 - 2.931600+2 0.000000+0 2 1 2 127 419 3 51 56 - 4.999307-2 7.630825-2 419 3 51 57 - 2.931600+2 0.000000+0 2 1 2 128 419 3 51 58 - 4.995834-2 7.636035-2 419 3 51 59 - 2.931600+2 0.000000+0 2 1 2 129 419 3 51 60 - 3.320467-2 7.633833-2 419 3 51 61 - 2.931600+2 0.000000+0 2 1 2 130 419 3 51 62 - 1.657101-2 7.630535-2 419 3 51 63 - 2.931600+2 0.000000+0 2 1 2 131 419 3 51 64 - 8.251205-3 7.628852-2 419 3 51 65 - 2.931600+2 0.000000+0 2 1 2 132 419 3 51 66 - 8.295947-3 7.627717-2 419 3 51 67 - 2.931600+2 0.000000+0 2 1 2 133 419 3 51 68 - 3.285065-2 7.624063-2 419 3 51 69 - 2.931600+2 0.000000+0 2 1 2 134 419 3 51 70 - 4.877513-2 7.615177-2 419 3 51 71 - 2.931600+2 0.000000+0 2 1 2 135 419 3 51 72 - 4.797896-2 7.603350-2 419 3 51 73 - 2.931600+2 0.000000+0 2 1 2 136 419 3 51 74 - 4.696318-2 7.588188-2 419 3 51 75 - 2.931600+2 0.000000+0 2 1 2 137 419 3 51 76 - 4.575857-2 7.557957-2 419 3 51 77 - 2.931600+2 0.000000+0 2 1 2 138 419 3 51 78 - 4.436130-2 7.485308-2 419 3 51 79 - 2.931600+2 0.000000+0 2 1 2 139 419 3 51 80 - 4.272236-2 7.358350-2 419 3 51 81 - 2.931600+2 0.000000+0 2 1 2 140 419 3 51 82 - 7.996083-2 7.024813-2 419 3 51 83 - 2.931600+2 0.000000+0 2 1 2 141 419 3 51 84 - 7.163080-2 6.360938-2 419 3 51 85 - 2.931600+2 0.000000+0 2 1 2 142 419 3 51 86 - 6.244698-2 5.694404-2 419 3 51 87 - 2.931600+2 0.000000+0 2 1 2 143 419 3 51 88 - 2.762652-2 5.231108-2 419 3 51 89 - 2.931600+2 0.000000+0 2 1 2 144 419 3 51 90 - 2.519972-2 4.977471-2 419 3 51 91 - 2.931600+2 0.000000+0 2 1 2 145 419 3 51 92 - 2.279022-2 4.771624-2 419 3 51 93 - 2.931600+2 0.000000+0 2 1 2 146 419 3 51 94 - 2.042454-2 4.574673-2 419 3 51 95 - 2.931600+2 0.000000+0 2 1 2 147 419 3 51 96 - 1.814121-2 4.400525-2 419 3 51 97 - 2.931600+2 0.000000+0 2 1 2 148 419 3 51 98 - 1.594717-2 4.240973-2 419 3 51 99 - 2.931600+2 0.000000+0 2 1 2 149 419 3 51 100 - 1.387605-2 4.073283-2 419 3 51 101 - 2.931600+2 0.000000+0 2 1 2 150 419 3 51 102 - 8.164821-3 3.930350-2 419 3 51 103 - 2.931600+2 0.000000+0 2 1 2 151 419 3 51 104 - 3.774194-3 3.844729-2 419 3 51 105 - 2.931600+2 0.000000+0 2 1 2 152 419 3 51 106 - 1.015723-2 3.723614-2 419 3 51 107 - 2.931600+2 0.000000+0 2 1 2 153 419 3 51 108 - 8.535770-3 3.519117-2 419 3 51 109 - 2.931600+2 0.000000+0 2 1 2 154 419 3 51 110 - 7.082278-3 3.317851-2 419 3 51 111 - 2.931600+2 0.000000+0 2 1 2 155 419 3 51 112 - 5.798906-3 3.111686-2 419 3 51 113 - 2.931600+2 0.000000+0 2 1 2 156 419 3 51 114 - 4.681642-3 2.920246-2 419 3 51 115 - 2.931600+2 0.000000+0 2 1 2 157 419 3 51 116 - 3.723613-3 2.739311-2 419 3 51 117 - 2.931600+2 0.000000+0 2 1 2 158 419 3 51 118 - 2.916027-3 2.554031-2 419 3 51 119 - 2.931600+2 0.000000+0 2 1 2 159 419 3 51 120 - 2.246747-3 2.344563-2 419 3 51 121 - 2.931600+2 0.000000+0 2 1 2 160 419 3 51 122 - 1.955090-3 2.124583-2 419 3 51 123 - 2.931600+2 0.000000+0 2 1 2 161 419 3 51 124 - 1.953965-3 1.951035-2 419 3 51 125 - 2.931600+2 0.000000+0 2 1 2 162 419 3 51 126 - 1.951832-3 1.767980-2 419 3 51 127 - 2.931600+2 0.000000+0 2 1 2 163 419 3 51 128 - 1.955078-3 1.556317-2 419 3 51 129 - 2.931600+2 0.000000+0 2 1 2 164 419 3 51 130 - 9.765916-4 1.397516-2 419 3 51 131 - 2.931600+2 0.000000+0 2 1 2 165 419 3 51 132 - 1.016273-2 1.261826-2 419 3 51 133 - 2.931600+2 0.000000+0 2 1 2 166 419 3 51 134 - 1.531876+0 1.089114-2 419 3 51 135 - 2.931600+2 0.000000+0 2 1 2 167 419 3 51 136 - 5.083488+0 1.000150-2 419 3 51 137 - 2.931600+2 0.000000+0 2 1 2 168 419 3 51 138 - 8.848180+0 9.243592-3 419 3 51 139 - 2.931600+2 0.000000+0 2 1 2 169 419 3 51 140 - 6.806517+0 8.545514-3 419 3 51 141 - 2.931600+2 0.000000+0 2 1 2 170 419 3 51 142 - 2.304996+0 7.917147-3 419 3 51 143 - 2.931600+2 0.000000+0 2 1 2 171 419 3 51 144 - 3.504250-1 7.287117-3 419 3 51 145 - 2.931600+2 0.000000+0 2 1 2 172 419 3 51 146 - 3.382293-3 5.230878-3 419 3 51 147 - 2.931600+2 0.000000+0 2 1 2 173 419 3 51 148 - 1.693836-3 2.232461-3 419 3 51 149 - 2.931600+2 0.000000+0 2 1 2 174 419 3 51 150 - 1.691503-3 6.730060-4 419 3 51 151 - 2.931600+2 0.000000+0 2 1 2 175 419 3 51 152 - 8.453621-3 5.932945-4 419 3 51 153 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 52 1 - 2.931600+2 0.000000+0 2 1 2 146 419 3 52 2 - 2.042454-2 1.228396-2 419 3 52 3 - 2.931600+2 0.000000+0 2 1 2 147 419 3 52 4 - 1.814121-2 2.506023-2 419 3 52 5 - 2.931600+2 0.000000+0 2 1 2 148 419 3 52 6 - 1.594717-2 3.022548-2 419 3 52 7 - 2.931600+2 0.000000+0 2 1 2 149 419 3 52 8 - 1.387605-2 3.307854-2 419 3 52 9 - 2.931600+2 0.000000+0 2 1 2 150 419 3 52 10 - 8.164821-3 3.443947-2 419 3 52 11 - 2.931600+2 0.000000+0 2 1 2 151 419 3 52 12 - 3.774194-3 3.491665-2 419 3 52 13 - 2.931600+2 0.000000+0 2 1 2 152 419 3 52 14 - 1.015723-2 3.503150-2 419 3 52 15 - 2.931600+2 0.000000+0 2 1 2 153 419 3 52 16 - 8.535770-3 3.451393-2 419 3 52 17 - 2.931600+2 0.000000+0 2 1 2 154 419 3 52 18 - 7.082278-3 3.385272-2 419 3 52 19 - 2.931600+2 0.000000+0 2 1 2 155 419 3 52 20 - 5.798906-3 3.325021-2 419 3 52 21 - 2.931600+2 0.000000+0 2 1 2 156 419 3 52 22 - 4.681642-3 3.288070-2 419 3 52 23 - 2.931600+2 0.000000+0 2 1 2 157 419 3 52 24 - 3.723613-3 3.272367-2 419 3 52 25 - 2.931600+2 0.000000+0 2 1 2 158 419 3 52 26 - 2.916027-3 3.241981-2 419 3 52 27 - 2.931600+2 0.000000+0 2 1 2 159 419 3 52 28 - 2.246747-3 3.152466-2 419 3 52 29 - 2.931600+2 0.000000+0 2 1 2 160 419 3 52 30 - 1.955090-3 3.025704-2 419 3 52 31 - 2.931600+2 0.000000+0 2 1 2 161 419 3 52 32 - 1.953965-3 2.937405-2 419 3 52 33 - 2.931600+2 0.000000+0 2 1 2 162 419 3 52 34 - 1.951832-3 2.830580-2 419 3 52 35 - 2.931600+2 0.000000+0 2 1 2 163 419 3 52 36 - 1.955078-3 2.686359-2 419 3 52 37 - 2.931600+2 0.000000+0 2 1 2 164 419 3 52 38 - 9.765916-4 2.566526-2 419 3 52 39 - 2.931600+2 0.000000+0 2 1 2 165 419 3 52 40 - 1.016273-2 2.448379-2 419 3 52 41 - 2.931600+2 0.000000+0 2 1 2 166 419 3 52 42 - 1.531876+0 2.273575-2 419 3 52 43 - 2.931600+2 0.000000+0 2 1 2 167 419 3 52 44 - 5.083488+0 2.169664-2 419 3 52 45 - 2.931600+2 0.000000+0 2 1 2 168 419 3 52 46 - 8.848180+0 2.073918-2 419 3 52 47 - 2.931600+2 0.000000+0 2 1 2 169 419 3 52 48 - 6.806517+0 1.978026-2 419 3 52 49 - 2.931600+2 0.000000+0 2 1 2 170 419 3 52 50 - 2.304996+0 1.886133-2 419 3 52 51 - 2.931600+2 0.000000+0 2 1 2 171 419 3 52 52 - 3.504250-1 1.787507-2 419 3 52 53 - 2.931600+2 0.000000+0 2 1 2 172 419 3 52 54 - 3.382293-3 1.370703-2 419 3 52 55 - 2.931600+2 0.000000+0 2 1 2 173 419 3 52 56 - 1.693836-3 6.214962-3 419 3 52 57 - 2.931600+2 0.000000+0 2 1 2 174 419 3 52 58 - 1.691503-3 2.282660-3 419 3 52 59 - 2.931600+2 0.000000+0 2 1 2 175 419 3 52 60 - 8.453621-3 2.093314-3 419 3 52 61 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 53 1 - 2.931600+2 0.000000+0 2 1 2 154 419 3 53 2 - 7.082387-3 5.010237-4 419 3 53 3 - 2.931600+2 0.000000+0 2 1 2 155 419 3 53 4 - 5.798906-3 8.211127-3 419 3 53 5 - 2.931600+2 0.000000+0 2 1 2 156 419 3 53 6 - 4.681642-3 1.236707-2 419 3 53 7 - 2.931600+2 0.000000+0 2 1 2 157 419 3 53 8 - 3.723613-3 1.479851-2 419 3 53 9 - 2.931600+2 0.000000+0 2 1 2 158 419 3 53 10 - 2.916027-3 1.609068-2 419 3 53 11 - 2.931600+2 0.000000+0 2 1 2 159 419 3 53 12 - 2.246747-3 1.658129-2 419 3 53 13 - 2.931600+2 0.000000+0 2 1 2 160 419 3 53 14 - 1.955090-3 1.670948-2 419 3 53 15 - 2.931600+2 0.000000+0 2 1 2 161 419 3 53 16 - 1.953965-3 1.689004-2 419 3 53 17 - 2.931600+2 0.000000+0 2 1 2 162 419 3 53 18 - 1.951832-3 1.694926-2 419 3 53 19 - 2.931600+2 0.000000+0 2 1 2 163 419 3 53 20 - 1.955078-3 1.676662-2 419 3 53 21 - 2.931600+2 0.000000+0 2 1 2 164 419 3 53 22 - 9.765916-4 1.648137-2 419 3 53 23 - 2.931600+2 0.000000+0 2 1 2 165 419 3 53 24 - 1.016273-2 1.606436-2 419 3 53 25 - 2.931600+2 0.000000+0 2 1 2 166 419 3 53 26 - 1.531876+0 1.531369-2 419 3 53 27 - 2.931600+2 0.000000+0 2 1 2 167 419 3 53 28 - 5.083488+0 1.480791-2 419 3 53 29 - 2.931600+2 0.000000+0 2 1 2 168 419 3 53 30 - 8.848180+0 1.431070-2 419 3 53 31 - 2.931600+2 0.000000+0 2 1 2 169 419 3 53 32 - 6.806517+0 1.377769-2 419 3 53 33 - 2.931600+2 0.000000+0 2 1 2 170 419 3 53 34 - 2.304996+0 1.324424-2 419 3 53 35 - 2.931600+2 0.000000+0 2 1 2 171 419 3 53 36 - 3.504250-1 1.264683-2 419 3 53 37 - 2.931600+2 0.000000+0 2 1 2 172 419 3 53 38 - 3.382293-3 9.802931-3 419 3 53 39 - 2.931600+2 0.000000+0 2 1 2 173 419 3 53 40 - 1.693836-3 4.351126-3 419 3 53 41 - 2.931600+2 0.000000+0 2 1 2 174 419 3 53 42 - 1.691503-3 1.486942-3 419 3 53 43 - 2.931600+2 0.000000+0 2 1 2 175 419 3 53 44 - 8.453621-3 1.390039-3 419 3 53 45 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 54 1 - 2.931600+2 0.000000+0 2 1 2 156 419 3 54 2 - 4.681642-3 3.747521-3 419 3 54 3 - 2.931600+2 0.000000+0 2 1 2 157 419 3 54 4 - 3.723613-3 9.652723-3 419 3 54 5 - 2.931600+2 0.000000+0 2 1 2 158 419 3 54 6 - 2.916027-3 1.226139-2 419 3 54 7 - 2.931600+2 0.000000+0 2 1 2 159 419 3 54 8 - 2.246747-3 1.343202-2 419 3 54 9 - 2.931600+2 0.000000+0 2 1 2 160 419 3 54 10 - 1.955090-3 1.390033-2 419 3 54 11 - 2.931600+2 0.000000+0 2 1 2 161 419 3 54 12 - 1.953965-3 1.421738-2 419 3 54 13 - 2.931600+2 0.000000+0 2 1 2 162 419 3 54 14 - 1.951832-3 1.436280-2 419 3 54 15 - 2.931600+2 0.000000+0 2 1 2 163 419 3 54 16 - 1.955078-3 1.428869-2 419 3 54 17 - 2.931600+2 0.000000+0 2 1 2 164 419 3 54 18 - 9.765916-4 1.410942-2 419 3 54 19 - 2.931600+2 0.000000+0 2 1 2 165 419 3 54 20 - 1.016273-2 1.380761-2 419 3 54 21 - 2.931600+2 0.000000+0 2 1 2 166 419 3 54 22 - 1.531876+0 1.323341-2 419 3 54 23 - 2.931600+2 0.000000+0 2 1 2 167 419 3 54 24 - 5.083488+0 1.283293-2 419 3 54 25 - 2.931600+2 0.000000+0 2 1 2 168 419 3 54 26 - 8.848180+0 1.243189-2 419 3 54 27 - 2.931600+2 0.000000+0 2 1 2 169 419 3 54 28 - 6.806517+0 1.199220-2 419 3 54 29 - 2.931600+2 0.000000+0 2 1 2 170 419 3 54 30 - 2.304996+0 1.154478-2 419 3 54 31 - 2.931600+2 0.000000+0 2 1 2 171 419 3 54 32 - 3.504250-1 1.103505-2 419 3 54 33 - 2.931600+2 0.000000+0 2 1 2 172 419 3 54 34 - 3.382293-3 8.439823-3 419 3 54 35 - 2.931600+2 0.000000+0 2 1 2 173 419 3 54 36 - 1.693836-3 3.263029-3 419 3 54 37 - 2.931600+2 0.000000+0 2 1 2 174 419 3 54 38 - 1.691503-3 5.401287-4 419 3 54 39 - 2.931600+2 0.000000+0 2 1 2 175 419 3 54 40 - 8.453621-3 4.602049-4 419 3 54 41 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3 91 1 - 2.931600+2 0.000000+0 2 1 2 156 419 3 91 2 - 4.681645-3 2.875444-4 419 3 91 3 - 2.931600+2 0.000000+0 2 1 2 157 419 3 91 4 - 3.723745-3 1.127311-3 419 3 91 5 - 2.931600+2 0.000000+0 2 1 2 158 419 3 91 6 - 2.916072-3 2.020023-3 419 3 91 7 - 2.931600+2 0.000000+0 2 1 2 159 419 3 91 8 - 2.246747-3 2.958355-3 419 3 91 9 - 2.931600+2 0.000000+0 2 1 2 160 419 3 91 10 - 1.955091-3 3.971079-3 419 3 91 11 - 2.931600+2 0.000000+0 2 1 2 161 419 3 91 12 - 1.953966-3 5.027184-3 419 3 91 13 - 2.931600+2 0.000000+0 2 1 2 162 419 3 91 14 - 1.951836-3 8.239513-3 419 3 91 15 - 2.931600+2 0.000000+0 2 1 2 163 419 3 91 16 - 1.955078-3 1.197893-2 419 3 91 17 - 2.931600+2 0.000000+0 2 1 2 164 419 3 91 18 - 9.765916-4 1.357737-2 419 3 91 19 - 2.931600+2 0.000000+0 2 1 2 165 419 3 91 20 - 9.893008-3 1.537450-2 419 3 91 21 - 2.931600+2 0.000000+0 2 1 2 166 419 3 91 22 - 1.531876+0 1.732465-2 419 3 91 23 - 2.931600+2 0.000000+0 2 1 2 167 419 3 91 24 - 5.083488+0 1.774247-2 419 3 91 25 - 2.931600+2 0.000000+0 2 1 2 168 419 3 91 26 - 8.848180+0 1.791561-2 419 3 91 27 - 2.931600+2 0.000000+0 2 1 2 169 419 3 91 28 - 6.806517+0 1.793727-2 419 3 91 29 - 2.931600+2 0.000000+0 2 1 2 170 419 3 91 30 - 2.304996+0 1.787998-2 419 3 91 31 - 2.931600+2 0.000000+0 2 1 2 171 419 3 91 32 - 3.504250-1 1.773827-2 419 3 91 33 - 2.931600+2 0.000000+0 2 1 2 172 419 3 91 34 - 3.382293-3 1.486474-2 419 3 91 35 - 2.931600+2 0.000000+0 2 1 2 173 419 3 91 36 - 1.693836-3 6.145511-3 419 3 91 37 - 2.931600+2 0.000000+0 2 1 2 174 419 3 91 38 - 1.691503-3 1.511365-3 419 3 91 39 - 2.931600+2 0.000000+0 2 1 2 175 419 3 91 40 - 8.453622-3 1.469128-3 419 3 91 41 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3102 1 - 2.931600+2 0.000000+0 2 1 2 1 419 3102 2 - 4.319880+4 5.559799-3 419 3102 3 - 2.931600+2 0.000000+0 2 1 2 2 419 3102 4 - 4.541324+3 2.667973-3 419 3102 5 - 2.931600+2 0.000000+0 2 1 2 3 419 3102 6 - 2.500158-1 1.386211-3 419 3102 7 - 2.931600+2 0.000000+0 2 1 2 4 419 3102 8 - 2.500006-1 1.223431-3 419 3102 9 - 2.931600+2 0.000000+0 2 1 2 5 419 3102 10 - 2.499988-1 1.079815-3 419 3102 11 - 2.931600+2 0.000000+0 2 1 2 6 419 3102 12 - 2.500521-1 9.530753-4 419 3102 13 - 2.931600+2 0.000000+0 2 1 2 7 419 3102 14 - 2.499748-1 8.414267-4 419 3102 15 - 2.931600+2 0.000000+0 2 1 2 8 419 3102 16 - 2.499950-1 7.430034-4 419 3102 17 - 2.931600+2 0.000000+0 2 1 2 9 419 3102 18 - 2.500121-1 6.560962-4 419 3102 19 - 2.931600+2 0.000000+0 2 1 2 10 419 3102 20 - 2.499837-1 5.792031-4 419 3102 21 - 2.931600+2 0.000000+0 2 1 2 11 419 3102 22 - 2.500208-1 5.114080-4 419 3102 23 - 2.931600+2 0.000000+0 2 1 2 12 419 3102 24 - 2.499993-1 4.516741-4 419 3102 25 - 2.931600+2 0.000000+0 2 1 2 13 419 3102 26 - 2.500067-1 3.988470-4 419 3102 27 - 2.931600+2 0.000000+0 2 1 2 14 419 3102 28 - 2.499981-1 3.524727-4 419 3102 29 - 2.931600+2 0.000000+0 2 1 2 15 419 3102 30 - 2.499987-1 3.114407-4 419 3102 31 - 2.931600+2 0.000000+0 2 1 2 16 419 3102 32 - 2.500376-1 2.753293-4 419 3102 33 - 2.931600+2 0.000000+0 2 1 2 17 419 3102 34 - 2.499478-1 2.435796-4 419 3102 35 - 2.931600+2 0.000000+0 2 1 2 18 419 3102 36 - 2.500173-1 2.155963-4 419 3102 37 - 2.931600+2 0.000000+0 2 1 2 19 419 3102 38 - 2.500099-1 1.909647-4 419 3102 39 - 2.931600+2 0.000000+0 2 1 2 20 419 3102 40 - 2.500236-1 1.694185-4 419 3102 41 - 2.931600+2 0.000000+0 2 1 2 21 419 3102 42 - 2.499878-1 1.504254-4 419 3102 43 - 2.931600+2 0.000000+0 2 1 2 22 419 3102 44 - 2.500057-1 1.338843-4 419 3102 45 - 2.931600+2 0.000000+0 2 1 2 23 419 3102 46 - 2.500029-1 1.193889-4 419 3102 47 - 2.931600+2 0.000000+0 2 1 2 24 419 3102 48 - 2.499979-1 1.068082-4 419 3102 49 - 2.931600+2 0.000000+0 2 1 2 25 419 3102 50 - 2.499904-1 9.594970-5 419 3102 51 - 2.931600+2 0.000000+0 2 1 2 26 419 3102 52 - 2.500448-1 8.662352-5 419 3102 53 - 2.931600+2 0.000000+0 2 1 2 27 419 3102 54 - 2.499670-1 7.874235-5 419 3102 55 - 2.931600+2 0.000000+0 2 1 2 28 419 3102 56 - 2.500067-1 7.223479-5 419 3102 57 - 2.931600+2 0.000000+0 2 1 2 29 419 3102 58 - 2.500344-1 6.703054-5 419 3102 59 - 2.931600+2 0.000000+0 2 1 2 30 419 3102 60 - 2.499914-1 6.322128-5 419 3102 61 - 2.931600+2 0.000000+0 2 1 2 31 419 3102 62 - 2.500082-1 6.087713-5 419 3102 63 - 2.931600+2 0.000000+0 2 1 2 32 419 3102 64 - 2.500005-1 6.033844-5 419 3102 65 - 2.931600+2 0.000000+0 2 1 2 33 419 3102 66 - 2.500053-1 6.222224-5 419 3102 67 - 2.931600+2 0.000000+0 2 1 2 34 419 3102 68 - 2.500020-1 6.775239-5 419 3102 69 - 2.931600+2 0.000000+0 2 1 2 35 419 3102 70 - 2.499939-1 7.911220-5 419 3102 71 - 2.931600+2 0.000000+0 2 1 2 36 419 3102 72 - 2.500204-1 9.838894-5 419 3102 73 - 2.931600+2 0.000000+0 2 1 2 37 419 3102 74 - 1.000054-1 1.131895-4 419 3102 75 - 2.931600+2 0.000000+0 2 1 2 38 419 3102 76 - 1.000023-1 1.159749-4 419 3102 77 - 2.931600+2 0.000000+0 2 1 2 39 419 3102 78 - 4.999348-2 1.123052-4 419 3102 79 - 2.931600+2 0.000000+0 2 1 2 40 419 3102 80 - 4.998218-2 1.061792-4 419 3102 81 - 2.931600+2 0.000000+0 2 1 2 41 419 3102 82 - 1.000174-1 9.241893-5 419 3102 83 - 2.931600+2 0.000000+0 2 1 2 42 419 3102 84 - 9.999078-2 7.060306-5 419 3102 85 - 2.931600+2 0.000000+0 2 1 2 43 419 3102 86 - 9.999976-2 5.007675-5 419 3102 87 - 2.931600+2 0.000000+0 2 1 2 44 419 3102 88 - 1.500056-1 3.123347-5 419 3102 89 - 2.931600+2 0.000000+0 2 1 2 45 419 3102 90 - 2.500015-1 1.464919-5 419 3102 91 - 2.931600+2 0.000000+0 2 1 2 46 419 3102 92 - 2.500054-1 5.783281-6 419 3102 93 - 2.931600+2 0.000000+0 2 1 2 47 419 3102 94 - 2.500077-1 2.456422-6 419 3102 95 - 2.931600+2 0.000000+0 2 1 2 48 419 3102 96 - 1.500461-1 1.271331-6 419 3102 97 - 2.931600+2 0.000000+0 2 1 2 49 419 3102 98 - 9.997699-2 8.613439-7 419 3102 99 - 2.931600+2 0.000000+0 2 1 2 50 419 3102 100 - 2.499603-1 5.218256-7 419 3102 101 - 2.931600+2 0.000000+0 2 1 2 51 419 3102 102 - 2.500534-1 2.538282-7 419 3102 103 - 2.931600+2 0.000000+0 2 1 2 52 419 3102 104 - 1.249822-1 1.479126-7 419 3102 105 - 2.931600+2 0.000000+0 2 1 2 53 419 3102 106 - 7.501318-2 1.120364-7 419 3102 107 - 2.931600+2 0.000000+0 2 1 2 54 419 3102 108 - 2.500424-2 9.760940-8 419 3102 109 - 2.931600+2 0.000000+0 2 1 2 55 419 3102 110 - 2.499959-2 9.120327-8 419 3102 111 - 2.931600+2 0.000000+0 2 1 2 56 419 3102 112 - 4.996584-2 8.246060-8 419 3102 113 - 2.931600+2 0.000000+0 2 1 2 57 419 3102 114 - 3.551256-2 7.345751-8 419 3102 115 - 2.931600+2 0.000000+0 2 1 2 58 419 3102 116 - 5.406798-2 6.515437-8 419 3102 117 - 2.931600+2 0.000000+0 2 1 2 59 419 3102 118 - 1.104439-1 5.244083-8 419 3102 119 - 2.931600+2 0.000000+0 2 1 2 60 419 3102 120 - 7.500412-2 4.092245-8 419 3102 121 - 2.931600+2 0.000000+0 2 1 2 61 419 3102 122 - 1.750005-1 2.967624-8 419 3102 123 - 2.931600+2 0.000000+0 2 1 2 62 419 3102 124 - 1.249908-1 2.001835-8 419 3102 125 - 2.931600+2 0.000000+0 2 1 2 63 419 3102 126 - 1.250023-1 1.453981-8 419 3102 127 - 2.931600+2 0.000000+0 2 1 2 64 419 3102 128 - 7.500158-2 1.126726-8 419 3102 129 - 2.931600+2 0.000000+0 2 1 2 65 419 3102 130 - 1.749987-1 8.328067-9 419 3102 131 - 2.931600+2 0.000000+0 2 1 2 66 419 3102 132 - 6.633368-2 6.188910-9 419 3102 133 - 2.931600+2 0.000000+0 2 1 2 67 419 3102 134 - 9.909232-2 5.116626-9 419 3102 135 - 2.931600+2 0.000000+0 2 1 2 68 419 3102 136 - 3.704178-2 4.384672-9 419 3102 137 - 2.931600+2 0.000000+0 2 1 2 69 419 3102 138 - 4.754331-2 4.004030-9 419 3102 139 - 2.931600+2 0.000000+0 2 1 2 70 419 3102 140 - 1.250059-1 3.365236-9 419 3102 141 - 2.931600+2 0.000000+0 2 1 2 71 419 3102 142 - 1.249976-1 2.679930-9 419 3102 143 - 2.931600+2 0.000000+0 2 1 2 72 419 3102 144 - 5.003745-2 2.341627-9 419 3102 145 - 2.931600+2 0.000000+0 2 1 2 73 419 3102 146 - 4.993593-2 2.200233-9 419 3102 147 - 2.931600+2 0.000000+0 2 1 2 74 419 3102 148 - 5.004291-2 2.091297-9 419 3102 149 - 2.931600+2 0.000000+0 2 1 2 75 419 3102 150 - 5.001871-2 2.012098-9 419 3102 151 - 2.931600+2 0.000000+0 2 1 2 76 419 3102 152 - 4.995181-2 1.963836-9 419 3102 153 - 2.931600+2 0.000000+0 2 1 2 77 419 3102 154 - 5.004532-2 1.945475-9 419 3102 155 - 2.931600+2 0.000000+0 2 1 2 78 419 3102 156 - 4.994607-2 1.961334-9 419 3102 157 - 2.931600+2 0.000000+0 2 1 2 79 419 3102 158 - 5.004668-2 2.011862-9 419 3102 159 - 2.931600+2 0.000000+0 2 1 2 80 419 3102 160 - 4.995963-2 2.104756-9 419 3102 161 - 2.931600+2 0.000000+0 2 1 2 81 419 3102 162 - 5.004191-2 2.247177-9 419 3102 163 - 2.931600+2 0.000000+0 2 1 2 82 419 3102 164 - 4.999650-2 2.451449-9 419 3102 165 - 2.931600+2 0.000000+0 2 1 2 83 419 3102 166 - 4.998948-2 2.737743-9 419 3102 167 - 2.931600+2 0.000000+0 2 1 2 84 419 3102 168 - 5.000869-2 3.134724-9 419 3102 169 - 2.931600+2 0.000000+0 2 1 2 85 419 3102 170 - 4.999842-2 3.688508-9 419 3102 171 - 2.931600+2 0.000000+0 2 1 2 86 419 3102 172 - 5.000118-2 4.476653-9 419 3102 173 - 2.931600+2 0.000000+0 2 1 2 87 419 3102 174 - 5.000901-2 5.627361-9 419 3102 175 - 2.931600+2 0.000000+0 2 1 2 88 419 3102 176 - 9.999236-2 8.733101-9 419 3102 177 - 2.931600+2 0.000000+0 2 1 2 89 419 3102 178 - 5.000293-2 1.453476-8 419 3102 179 - 2.931600+2 0.000000+0 2 1 2 90 419 3102 180 - 2.499432-2 1.945856-8 419 3102 181 - 2.931600+2 0.000000+0 2 1 2 91 419 3102 182 - 9.058439-3 2.227564-8 419 3102 183 - 2.931600+2 0.000000+0 2 1 2 92 419 3102 184 - 4.364640-3 2.349691-8 419 3102 185 - 2.931600+2 0.000000+0 2 1 2 93 419 3102 186 - 1.155783-2 2.498128-8 419 3102 187 - 2.931600+2 0.000000+0 2 1 2 94 419 3102 188 - 1.000055-1 3.305484-8 419 3102 189 - 2.931600+2 0.000000+0 2 1 2 95 419 3102 190 - 1.000048-1 2.461860-8 419 3102 191 - 2.931600+2 0.000000+0 2 1 2 96 419 3102 192 - 4.999968-2 1.247747-8 419 3102 193 - 2.931600+2 0.000000+0 2 1 2 97 419 3102 194 - 5.000082-2 8.112800-9 419 3102 195 - 2.931600+2 0.000000+0 2 1 2 98 419 3102 196 - 1.000015-1 4.719623-9 419 3102 197 - 2.931600+2 0.000000+0 2 1 2 99 419 3102 198 - 1.000045-1 2.537400-9 419 3102 199 - 2.931600+2 0.000000+0 2 1 2 100 419 3102 200 - 5.000769-2 4.278919-5 419 3102 201 - 2.931600+2 0.000000+0 2 1 2 101 419 3102 202 - 4.999119-2 4.561170-5 419 3102 203 - 2.931600+2 0.000000+0 2 1 2 102 419 3102 204 - 4.999926-2 4.432727-5 419 3102 205 - 2.931600+2 0.000000+0 2 1 2 103 419 3102 206 - 5.000523-2 4.299366-5 419 3102 207 - 2.931600+2 0.000000+0 2 1 2 104 419 3102 208 - 5.000401-2 4.191654-5 419 3102 209 - 2.931600+2 0.000000+0 2 1 2 105 419 3102 210 - 5.000589-2 4.090961-5 419 3102 211 - 2.931600+2 0.000000+0 2 1 2 106 419 3102 212 - 4.999047-2 3.985148-5 419 3102 213 - 2.931600+2 0.000000+0 2 1 2 107 419 3102 214 - 5.000951-2 3.888786-5 419 3102 215 - 2.931600+2 0.000000+0 2 1 2 108 419 3102 216 - 4.999941-2 3.799974-5 419 3102 217 - 2.931600+2 0.000000+0 2 1 2 109 419 3102 218 - 4.999652-2 3.708075-5 419 3102 219 - 2.931600+2 0.000000+0 2 1 2 110 419 3102 220 - 5.000559-2 3.627025-5 419 3102 221 - 2.931600+2 0.000000+0 2 1 2 111 419 3102 222 - 4.999651-2 3.546048-5 419 3102 223 - 2.931600+2 0.000000+0 2 1 2 112 419 3102 224 - 5.830021-2 3.464260-5 419 3102 225 - 2.931600+2 0.000000+0 2 1 2 113 419 3102 226 - 4.171240-2 3.392867-5 419 3102 227 - 2.931600+2 0.000000+0 2 1 2 114 419 3102 228 - 9.996150-2 3.303041-5 419 3102 229 - 2.931600+2 0.000000+0 2 1 2 115 419 3102 230 - 4.999362-2 3.212528-5 419 3102 231 - 2.931600+2 0.000000+0 2 1 2 116 419 3102 232 - 5.006558-2 3.148759-5 419 3102 233 - 2.931600+2 0.000000+0 2 1 2 117 419 3102 234 - 4.993355-2 3.096868-5 419 3102 235 - 2.931600+2 0.000000+0 2 1 2 118 419 3102 236 - 5.007376-2 3.048296-5 419 3102 237 - 2.931600+2 0.000000+0 2 1 2 119 419 3102 238 - 4.993732-2 2.997499-5 419 3102 239 - 2.931600+2 0.000000+0 2 1 2 120 419 3102 240 - 5.003866-2 2.954847-5 419 3102 241 - 2.931600+2 0.000000+0 2 1 2 121 419 3102 242 - 5.000960-2 2.915616-5 419 3102 243 - 2.931600+2 0.000000+0 2 1 2 122 419 3102 244 - 4.998941-2 2.876151-5 419 3102 245 - 2.931600+2 0.000000+0 2 1 2 123 419 3102 246 - 4.997139-2 2.844955-5 419 3102 247 - 2.931600+2 0.000000+0 2 1 2 124 419 3102 248 - 5.000419-2 2.813820-5 419 3102 249 - 2.931600+2 0.000000+0 2 1 2 125 419 3102 250 - 5.002058-2 2.786331-5 419 3102 251 - 2.931600+2 0.000000+0 2 1 2 126 419 3102 252 - 5.001758-2 2.762464-5 419 3102 253 - 2.931600+2 0.000000+0 2 1 2 127 419 3102 254 - 4.999298-2 2.740845-5 419 3102 255 - 2.931600+2 0.000000+0 2 1 2 128 419 3102 256 - 4.995837-2 2.723108-5 419 3102 257 - 2.931600+2 0.000000+0 2 1 2 129 419 3102 258 - 3.320467-2 2.710565-5 419 3102 259 - 2.931600+2 0.000000+0 2 1 2 130 419 3102 260 - 1.657101-2 2.705365-5 419 3102 261 - 2.931600+2 0.000000+0 2 1 2 131 419 3102 262 - 8.251205-3 2.702714-5 419 3102 263 - 2.931600+2 0.000000+0 2 1 2 132 419 3102 264 - 8.295947-3 2.700924-5 419 3102 265 - 2.931600+2 0.000000+0 2 1 2 133 419 3102 266 - 3.285066-2 2.696794-5 419 3102 267 - 2.931600+2 0.000000+0 2 1 2 134 419 3102 268 - 4.877513-2 2.693196-5 419 3102 269 - 2.931600+2 0.000000+0 2 1 2 135 419 3102 270 - 4.797896-2 2.694637-5 419 3102 271 - 2.931600+2 0.000000+0 2 1 2 136 419 3102 272 - 4.696325-2 2.702234-5 419 3102 273 - 2.931600+2 0.000000+0 2 1 2 137 419 3102 274 - 4.575857-2 2.710156-5 419 3102 275 - 2.931600+2 0.000000+0 2 1 2 138 419 3102 276 - 4.436130-2 2.702697-5 419 3102 277 - 2.931600+2 0.000000+0 2 1 2 139 419 3102 278 - 4.272236-2 2.674186-5 419 3102 279 - 2.931600+2 0.000000+0 2 1 2 140 419 3102 280 - 7.996083-2 2.571488-5 419 3102 281 - 2.931600+2 0.000000+0 2 1 2 141 419 3102 282 - 7.163072-2 2.319171-5 419 3102 283 - 2.931600+2 0.000000+0 2 1 2 142 419 3102 284 - 6.244693-2 2.071339-5 419 3102 285 - 2.931600+2 0.000000+0 2 1 2 143 419 3102 286 - 2.762670-2 1.920547-5 419 3102 287 - 2.931600+2 0.000000+0 2 1 2 144 419 3102 288 - 2.519976-2 1.837994-5 419 3102 289 - 2.931600+2 0.000000+0 2 1 2 145 419 3102 290 - 2.279019-2 1.766170-5 419 3102 291 - 2.931600+2 0.000000+0 2 1 2 146 419 3102 292 - 2.042454-2 1.682127-5 419 3102 293 - 2.931600+2 0.000000+0 2 1 2 147 419 3102 294 - 1.814095-2 1.599499-5 419 3102 295 - 2.931600+2 0.000000+0 2 1 2 148 419 3102 296 - 1.594743-2 1.524760-5 419 3102 297 - 2.931600+2 0.000000+0 2 1 2 149 419 3102 298 - 1.387599-2 1.450518-5 419 3102 299 - 2.931600+2 0.000000+0 2 1 2 150 419 3102 300 - 8.164821-3 1.395858-5 419 3102 301 - 2.931600+2 0.000000+0 2 1 2 151 419 3102 302 - 3.774230-3 1.367373-5 419 3102 303 - 2.931600+2 0.000000+0 2 1 2 152 419 3102 304 - 1.015727-2 1.331085-5 419 3102 305 - 2.931600+2 0.000000+0 2 1 2 153 419 3102 306 - 8.535760-3 1.279112-5 419 3102 307 - 2.931600+2 0.000000+0 2 1 2 154 419 3102 308 - 7.082350-3 1.241548-5 419 3102 309 - 2.931600+2 0.000000+0 2 1 2 155 419 3102 310 - 5.798926-3 1.215555-5 419 3102 311 - 2.931600+2 0.000000+0 2 1 2 156 419 3102 312 - 4.681662-3 1.204491-5 419 3102 313 - 2.931600+2 0.000000+0 2 1 2 157 419 3102 314 - 3.723613-3 1.202214-5 419 3102 315 - 2.931600+2 0.000000+0 2 1 2 158 419 3102 316 - 2.916027-3 1.198462-5 419 3102 317 - 2.931600+2 0.000000+0 2 1 2 159 419 3102 318 - 2.246747-3 1.176263-5 419 3102 319 - 2.931600+2 0.000000+0 2 1 2 160 419 3102 320 - 1.955082-3 1.140934-5 419 3102 321 - 2.931600+2 0.000000+0 2 1 2 161 419 3102 322 - 1.953961-3 1.107346-5 419 3102 323 - 2.931600+2 0.000000+0 2 1 2 162 419 3102 324 - 1.951830-3 1.062202-5 419 3102 325 - 2.931600+2 0.000000+0 2 1 2 163 419 3102 326 - 1.955070-3 1.001410-5 419 3102 327 - 2.931600+2 0.000000+0 2 1 2 164 419 3102 328 - 9.765915-4 9.471959-6 419 3102 329 - 2.931600+2 0.000000+0 2 1 2 165 419 3102 330 - 9.917526-3 8.932691-6 419 3102 331 - 2.931600+2 0.000000+0 2 1 2 166 419 3102 332 - 1.527796+0 8.144689-6 419 3102 333 - 2.931600+2 0.000000+0 2 1 2 167 419 3102 334 - 5.083487+0 7.704643-6 419 3102 335 - 2.931600+2 0.000000+0 2 1 2 168 419 3102 336 - 8.848206+0 7.303548-6 419 3102 337 - 2.931600+2 0.000000+0 2 1 2 169 419 3102 338 - 6.806587+0 6.899015-6 419 3102 339 - 2.931600+2 0.000000+0 2 1 2 170 419 3102 340 - 2.298726+0 6.501875-6 419 3102 341 - 2.931600+2 0.000000+0 2 1 2 171 419 3102 342 - 3.480231-1 6.070664-6 419 3102 343 - 2.931600+2 0.000000+0 2 1 2 172 419 3102 344 - 3.382279-3 5.005774-5 419 3102 345 - 2.931600+2 0.000000+0 2 1 2 173 419 3102 346 - 1.693835-3 2.203428-4 419 3102 347 - 2.931600+2 0.000000+0 2 1 2 174 419 3102 348 - 1.691495-3 3.101944-4 419 3102 349 - 2.931600+2 0.000000+0 2 1 2 175 419 3102 350 - 8.453596-3 3.051077-4 419 3102 351 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3103 1 - 2.931600+2 0.000000+0 2 1 2 1 419 3103 2 - 4.319880+4 6.904489+1 419 3103 3 - 2.931600+2 0.000000+0 2 1 2 2 419 3103 4 - 4.541324+3 3.316063+1 419 3103 5 - 2.931600+2 0.000000+0 2 1 2 3 419 3103 6 - 2.500158-1 1.727535+1 419 3103 7 - 2.931600+2 0.000000+0 2 1 2 4 419 3103 8 - 2.500006-1 1.524841+1 419 3103 9 - 2.931600+2 0.000000+0 2 1 2 5 419 3103 10 - 2.499989-1 1.349429+1 419 3103 11 - 2.931600+2 0.000000+0 2 1 2 6 419 3103 12 - 2.500522-1 1.188172+1 419 3103 13 - 2.931600+2 0.000000+0 2 1 2 7 419 3103 14 - 2.499747-1 1.047572+1 419 3103 15 - 2.931600+2 0.000000+0 2 1 2 8 419 3103 16 - 2.499950-1 9.250367+0 419 3103 17 - 2.931600+2 0.000000+0 2 1 2 9 419 3103 18 - 2.500120-1 8.164587+0 419 3103 19 - 2.931600+2 0.000000+0 2 1 2 10 419 3103 20 - 2.499837-1 7.205663+0 419 3103 21 - 2.931600+2 0.000000+0 2 1 2 11 419 3103 22 - 2.500208-1 6.358434+0 419 3103 23 - 2.931600+2 0.000000+0 2 1 2 12 419 3103 24 - 2.499994-1 5.611641+0 419 3103 25 - 2.931600+2 0.000000+0 2 1 2 13 419 3103 26 - 2.500068-1 4.952689+0 419 3103 27 - 2.931600+2 0.000000+0 2 1 2 14 419 3103 28 - 2.499982-1 4.369804+0 419 3103 29 - 2.931600+2 0.000000+0 2 1 2 15 419 3103 30 - 2.499987-1 3.850423+0 419 3103 31 - 2.931600+2 0.000000+0 2 1 2 16 419 3103 32 - 2.500377-1 3.416671+0 419 3103 33 - 2.931600+2 0.000000+0 2 1 2 17 419 3103 34 - 2.499479-1 3.003208+0 419 3103 35 - 2.931600+2 0.000000+0 2 1 2 18 419 3103 36 - 2.500173-1 2.650171+0 419 3103 37 - 2.931600+2 0.000000+0 2 1 2 19 419 3103 38 - 2.500100-1 2.338889+0 419 3103 39 - 2.931600+2 0.000000+0 2 1 2 20 419 3103 40 - 2.500236-1 2.064171+0 419 3103 41 - 2.931600+2 0.000000+0 2 1 2 21 419 3103 42 - 2.499879-1 1.822050+0 419 3103 43 - 2.931600+2 0.000000+0 2 1 2 22 419 3103 44 - 2.500056-1 1.607848+0 419 3103 45 - 2.931600+2 0.000000+0 2 1 2 23 419 3103 46 - 2.500029-1 1.418570+0 419 3103 47 - 2.931600+2 0.000000+0 2 1 2 24 419 3103 48 - 2.499980-1 1.251593+0 419 3103 49 - 2.931600+2 0.000000+0 2 1 2 25 419 3103 50 - 2.499905-1 1.105516+0 419 3103 51 - 2.931600+2 0.000000+0 2 1 2 26 419 3103 52 - 2.500449-1 9.751836-1 419 3103 53 - 2.931600+2 0.000000+0 2 1 2 27 419 3103 54 - 2.499670-1 8.594060-1 419 3103 55 - 2.931600+2 0.000000+0 2 1 2 28 419 3103 56 - 2.500068-1 7.663201-1 419 3103 57 - 2.931600+2 0.000000+0 2 1 2 29 419 3103 58 - 2.500344-1 6.696563-1 419 3103 59 - 2.931600+2 0.000000+0 2 1 2 30 419 3103 60 - 2.499915-1 5.912056-1 419 3103 61 - 2.931600+2 0.000000+0 2 1 2 31 419 3103 62 - 2.500083-1 5.229616-1 419 3103 63 - 2.931600+2 0.000000+0 2 1 2 32 419 3103 64 - 2.500005-1 4.598166-1 419 3103 65 - 2.931600+2 0.000000+0 2 1 2 33 419 3103 66 - 2.500054-1 4.074061-1 419 3103 67 - 2.931600+2 0.000000+0 2 1 2 34 419 3103 68 - 2.500019-1 3.580367-1 419 3103 69 - 2.931600+2 0.000000+0 2 1 2 35 419 3103 70 - 2.499942-1 3.164161-1 419 3103 71 - 2.931600+2 0.000000+0 2 1 2 36 419 3103 72 - 2.500204-1 2.793087-1 419 3103 73 - 2.931600+2 0.000000+0 2 1 2 37 419 3103 74 - 1.000055-1 2.557752-1 419 3103 75 - 2.931600+2 0.000000+0 2 1 2 38 419 3103 76 - 1.000025-1 2.434383-1 419 3103 77 - 2.931600+2 0.000000+0 2 1 2 39 419 3103 78 - 4.999347-2 2.335837-1 419 3103 79 - 2.931600+2 0.000000+0 2 1 2 40 419 3103 80 - 4.998229-2 2.280400-1 419 3103 81 - 2.931600+2 0.000000+0 2 1 2 41 419 3103 82 - 1.000174-1 2.195947-1 419 3103 83 - 2.931600+2 0.000000+0 2 1 2 42 419 3103 84 - 9.999096-2 2.097277-1 419 3103 85 - 2.931600+2 0.000000+0 2 1 2 43 419 3103 86 - 9.999992-2 2.003985-1 419 3103 87 - 2.931600+2 0.000000+0 2 1 2 44 419 3103 88 - 1.500060-1 1.874017-1 419 3103 89 - 2.931600+2 0.000000+0 2 1 2 45 419 3103 90 - 2.500021-1 1.703471-1 419 3103 91 - 2.931600+2 0.000000+0 2 1 2 46 419 3103 92 - 2.500058-1 1.492751-1 419 3103 93 - 2.931600+2 0.000000+0 2 1 2 47 419 3103 94 - 2.500081-1 1.327747-1 419 3103 95 - 2.931600+2 0.000000+0 2 1 2 48 419 3103 96 - 1.500464-1 1.193243-1 419 3103 97 - 2.931600+2 0.000000+0 2 1 2 49 419 3103 98 - 9.997715-2 1.117928-1 419 3103 99 - 2.931600+2 0.000000+0 2 1 2 50 419 3103 100 - 2.499605-1 1.027287-1 419 3103 101 - 2.931600+2 0.000000+0 2 1 2 51 419 3103 102 - 2.500539-1 9.100167-2 419 3103 103 - 2.931600+2 0.000000+0 2 1 2 52 419 3103 104 - 1.249823-1 8.235573-2 419 3103 105 - 2.931600+2 0.000000+0 2 1 2 53 419 3103 106 - 7.501323-2 7.838619-2 419 3103 107 - 2.931600+2 0.000000+0 2 1 2 54 419 3103 108 - 2.500424-2 7.630528-2 419 3103 109 - 2.931600+2 0.000000+0 2 1 2 55 419 3103 110 - 2.499961-2 7.542662-2 419 3103 111 - 2.931600+2 0.000000+0 2 1 2 56 419 3103 112 - 4.996597-2 7.416678-2 419 3103 113 - 2.931600+2 0.000000+0 2 1 2 57 419 3103 114 - 3.551257-2 7.267621-2 419 3103 115 - 2.931600+2 0.000000+0 2 1 2 58 419 3103 116 - 5.406806-2 7.103978-2 419 3103 117 - 2.931600+2 0.000000+0 2 1 2 59 419 3103 118 - 1.104441-1 6.803712-2 419 3103 119 - 2.931600+2 0.000000+0 2 1 2 60 419 3103 120 - 7.500419-2 6.523156-2 419 3103 121 - 2.931600+2 0.000000+0 2 1 2 61 419 3103 122 - 1.750007-1 6.139485-2 419 3103 123 - 2.931600+2 0.000000+0 2 1 2 62 419 3103 124 - 1.249910-1 6.890700-2 419 3103 125 - 2.931600+2 0.000000+0 2 1 2 63 419 3103 126 - 1.250025-1 8.551467-2 419 3103 127 - 2.931600+2 0.000000+0 2 1 2 64 419 3103 128 - 7.500169-2 1.019720-1 419 3103 129 - 2.931600+2 0.000000+0 2 1 2 65 419 3103 130 - 1.749988-1 1.277692-1 419 3103 131 - 2.931600+2 0.000000+0 2 1 2 66 419 3103 132 - 6.633376-2 1.587712-1 419 3103 133 - 2.931600+2 0.000000+0 2 1 2 67 419 3103 134 - 9.909254-2 1.828775-1 419 3103 135 - 2.931600+2 0.000000+0 2 1 2 68 419 3103 136 - 3.704179-2 2.040993-1 419 3103 137 - 2.931600+2 0.000000+0 2 1 2 69 419 3103 138 - 4.754338-2 2.198461-1 419 3103 139 - 2.931600+2 0.000000+0 2 1 2 70 419 3103 140 - 1.250060-1 2.568611-1 419 3103 141 - 2.931600+2 0.000000+0 2 1 2 71 419 3103 142 - 1.249977-1 3.208237-1 419 3103 143 - 2.931600+2 0.000000+0 2 1 2 72 419 3103 144 - 5.003758-2 3.762253-1 419 3103 145 - 2.931600+2 0.000000+0 2 1 2 73 419 3103 146 - 4.993605-2 4.104159-1 419 3103 147 - 2.931600+2 0.000000+0 2 1 2 74 419 3103 148 - 5.004302-2 4.463615-1 419 3103 149 - 2.931600+2 0.000000+0 2 1 2 75 419 3103 150 - 5.001871-2 4.841940-1 419 3103 151 - 2.931600+2 0.000000+0 2 1 2 76 419 3103 152 - 4.995191-2 5.289718-1 419 3103 153 - 2.931600+2 0.000000+0 2 1 2 77 419 3103 154 - 5.004543-2 5.802984-1 419 3103 155 - 2.931600+2 0.000000+0 2 1 2 78 419 3103 156 - 4.994617-2 6.342524-1 419 3103 157 - 2.931600+2 0.000000+0 2 1 2 79 419 3103 158 - 5.004682-2 6.909742-1 419 3103 159 - 2.931600+2 0.000000+0 2 1 2 80 419 3103 160 - 4.995962-2 7.506490-1 419 3103 161 - 2.931600+2 0.000000+0 2 1 2 81 419 3103 162 - 5.004203-2 8.190487-1 419 3103 163 - 2.931600+2 0.000000+0 2 1 2 82 419 3103 164 - 4.999659-2 8.951566-1 419 3103 165 - 2.931600+2 0.000000+0 2 1 2 83 419 3103 166 - 4.998963-2 9.722820-1 419 3103 167 - 2.931600+2 0.000000+0 2 1 2 84 419 3103 168 - 5.000882-2 9.849424-1 419 3103 169 - 2.931600+2 0.000000+0 2 1 2 85 419 3103 170 - 4.999863-2 9.688431-1 419 3103 171 - 2.931600+2 0.000000+0 2 1 2 86 419 3103 172 - 5.000142-2 9.519199-1 419 3103 173 - 2.931600+2 0.000000+0 2 1 2 87 419 3103 174 - 5.000916-2 9.341269-1 419 3103 175 - 2.931600+2 0.000000+0 2 1 2 88 419 3103 176 - 9.999264-2 9.055922-1 419 3103 177 - 2.931600+2 0.000000+0 2 1 2 89 419 3103 178 - 5.000320-2 8.750916-1 419 3103 179 - 2.931600+2 0.000000+0 2 1 2 90 419 3103 180 - 2.499435-2 8.589304-1 419 3103 181 - 2.931600+2 0.000000+0 2 1 2 91 419 3103 182 - 9.058538-3 8.513854-1 419 3103 183 - 2.931600+2 0.000000+0 2 1 2 92 419 3103 184 - 4.364640-3 8.483682-1 419 3103 185 - 2.931600+2 0.000000+0 2 1 2 93 419 3103 186 - 1.155782-2 8.451224-1 419 3103 187 - 2.931600+2 0.000000+0 2 1 2 94 419 3103 188 - 1.000062-1 8.298085-1 419 3103 189 - 2.931600+2 0.000000+0 2 1 2 95 419 3103 190 - 1.000052-1 8.007294-1 419 3103 191 - 2.931600+2 0.000000+0 2 1 2 96 419 3103 192 - 4.999999-2 7.770341-1 419 3103 193 - 2.931600+2 0.000000+0 2 1 2 97 419 3103 194 - 5.000110-2 7.602789-1 419 3103 195 - 2.931600+2 0.000000+0 2 1 2 98 419 3103 196 - 1.000021-1 7.388494-1 419 3103 197 - 2.931600+2 0.000000+0 2 1 2 99 419 3103 198 - 1.000048-1 7.096554-1 419 3103 199 - 2.931600+2 0.000000+0 2 1 2 100 419 3103 200 - 5.000774-2 6.863979-1 419 3103 201 - 2.931600+2 0.000000+0 2 1 2 101 419 3103 202 - 4.999119-2 6.719854-1 419 3103 203 - 2.931600+2 0.000000+0 2 1 2 102 419 3103 204 - 4.999926-2 6.570182-1 419 3103 205 - 2.931600+2 0.000000+0 2 1 2 103 419 3103 206 - 5.000524-2 6.413155-1 419 3103 207 - 2.931600+2 0.000000+0 2 1 2 104 419 3103 208 - 5.000401-2 6.273198-1 419 3103 209 - 2.931600+2 0.000000+0 2 1 2 105 419 3103 210 - 5.000589-2 6.141754-1 419 3103 211 - 2.931600+2 0.000000+0 2 1 2 106 419 3103 212 - 4.999047-2 6.003617-1 419 3103 213 - 2.931600+2 0.000000+0 2 1 2 107 419 3103 214 - 5.000951-2 5.873500-1 419 3103 215 - 2.931600+2 0.000000+0 2 1 2 108 419 3103 216 - 4.999941-2 5.749389-1 419 3103 217 - 2.931600+2 0.000000+0 2 1 2 109 419 3103 218 - 4.999649-2 5.619517-1 419 3103 219 - 2.931600+2 0.000000+0 2 1 2 110 419 3103 220 - 5.000559-2 5.497829-1 419 3103 221 - 2.931600+2 0.000000+0 2 1 2 111 419 3103 222 - 4.999654-2 5.376417-1 419 3103 223 - 2.931600+2 0.000000+0 2 1 2 112 419 3103 224 - 5.830013-2 5.246443-1 419 3103 225 - 2.931600+2 0.000000+0 2 1 2 113 419 3103 226 - 4.171240-2 5.130789-1 419 3103 227 - 2.931600+2 0.000000+0 2 1 2 114 419 3103 228 - 9.996150-2 4.976780-1 419 3103 229 - 2.931600+2 0.000000+0 2 1 2 115 419 3103 230 - 4.999362-2 4.815437-1 419 3103 231 - 2.931600+2 0.000000+0 2 1 2 116 419 3103 232 - 5.006558-2 4.701354-1 419 3103 233 - 2.931600+2 0.000000+0 2 1 2 117 419 3103 234 - 4.993355-2 4.600434-1 419 3103 235 - 2.931600+2 0.000000+0 2 1 2 118 419 3103 236 - 5.007376-2 4.501831-1 419 3103 237 - 2.931600+2 0.000000+0 2 1 2 119 419 3103 238 - 4.993732-2 4.398537-1 419 3103 239 - 2.931600+2 0.000000+0 2 1 2 120 419 3103 240 - 5.003866-2 4.304696-1 419 3103 241 - 2.931600+2 0.000000+0 2 1 2 121 419 3103 242 - 5.000960-2 4.213704-1 419 3103 243 - 2.931600+2 0.000000+0 2 1 2 122 419 3103 244 - 4.998941-2 4.120665-1 419 3103 245 - 2.931600+2 0.000000+0 2 1 2 123 419 3103 246 - 4.997139-2 4.037949-1 419 3103 247 - 2.931600+2 0.000000+0 2 1 2 124 419 3103 248 - 5.000419-2 3.953416-1 419 3103 249 - 2.931600+2 0.000000+0 2 1 2 125 419 3103 250 - 5.002058-2 3.872500-1 419 3103 251 - 2.931600+2 0.000000+0 2 1 2 126 419 3103 252 - 5.001758-2 3.795079-1 419 3103 253 - 2.931600+2 0.000000+0 2 1 2 127 419 3103 254 - 4.999298-2 3.719062-1 419 3103 255 - 2.931600+2 0.000000+0 2 1 2 128 419 3103 256 - 4.995837-2 3.646884-1 419 3103 257 - 2.931600+2 0.000000+0 2 1 2 129 419 3103 258 - 3.320467-2 3.588046-1 419 3103 259 - 2.931600+2 0.000000+0 2 1 2 130 419 3103 260 - 1.657101-2 3.555116-1 419 3103 261 - 2.931600+2 0.000000+0 2 1 2 131 419 3103 262 - 8.251205-3 3.538330-1 419 3103 263 - 2.931600+2 0.000000+0 2 1 2 132 419 3103 264 - 8.295947-3 3.526995-1 419 3103 265 - 2.931600+2 0.000000+0 2 1 2 133 419 3103 266 - 3.285066-2 3.498846-1 419 3103 267 - 2.931600+2 0.000000+0 2 1 2 134 419 3103 268 - 4.877513-2 3.448039-1 419 3103 269 - 2.931600+2 0.000000+0 2 1 2 135 419 3103 270 - 4.797893-2 3.386927-1 419 3103 271 - 2.931600+2 0.000000+0 2 1 2 136 419 3103 272 - 4.696325-2 3.327820-1 419 3103 273 - 2.931600+2 0.000000+0 2 1 2 137 419 3103 274 - 4.575866-2 3.266485-1 419 3103 275 - 2.931600+2 0.000000+0 2 1 2 138 419 3103 276 - 4.436123-2 3.191403-1 419 3103 277 - 2.931600+2 0.000000+0 2 1 2 139 419 3103 278 - 4.272225-2 3.093862-1 419 3103 279 - 2.931600+2 0.000000+0 2 1 2 140 419 3103 280 - 7.996088-2 2.902395-1 419 3103 281 - 2.931600+2 0.000000+0 2 1 2 141 419 3103 282 - 7.163086-2 2.652236-1 419 3103 283 - 2.931600+2 0.000000+0 2 1 2 142 419 3103 284 - 6.244718-2 2.464839-1 419 3103 285 - 2.931600+2 0.000000+0 2 1 2 143 419 3103 286 - 2.762670-2 2.325051-1 419 3103 287 - 2.931600+2 0.000000+0 2 1 2 144 419 3103 288 - 2.519994-2 2.237884-1 419 3103 289 - 2.931600+2 0.000000+0 2 1 2 145 419 3103 290 - 2.279021-2 2.158115-1 419 3103 291 - 2.931600+2 0.000000+0 2 1 2 146 419 3103 292 - 2.042454-2 2.042773-1 419 3103 293 - 2.931600+2 0.000000+0 2 1 2 147 419 3103 294 - 1.814099-2 1.937302-1 419 3103 295 - 2.931600+2 0.000000+0 2 1 2 148 419 3103 296 - 1.594721-2 1.855133-1 419 3103 297 - 2.931600+2 0.000000+0 2 1 2 149 419 3103 298 - 1.387605-2 1.801845-1 419 3103 299 - 2.931600+2 0.000000+0 2 1 2 150 419 3103 300 - 8.164822-3 1.776060-1 419 3103 301 - 2.931600+2 0.000000+0 2 1 2 151 419 3103 302 - 3.774167-3 1.761289-1 419 3103 303 - 2.931600+2 0.000000+0 2 1 2 152 419 3103 304 - 1.015748-2 1.738336-1 419 3103 305 - 2.931600+2 0.000000+0 2 1 2 153 419 3103 306 - 8.535769-3 1.703703-1 419 3103 307 - 2.931600+2 0.000000+0 2 1 2 154 419 3103 308 - 7.082301-3 1.671042-1 419 3103 309 - 2.931600+2 0.000000+0 2 1 2 155 419 3103 310 - 5.798922-3 1.622348-1 419 3103 311 - 2.931600+2 0.000000+0 2 1 2 156 419 3103 312 - 4.681774-3 1.569681-1 419 3103 313 - 2.931600+2 0.000000+0 2 1 2 157 419 3103 314 - 3.723673-3 1.514941-1 419 3103 315 - 2.931600+2 0.000000+0 2 1 2 158 419 3103 316 - 2.915973-3 1.454517-1 419 3103 317 - 2.931600+2 0.000000+0 2 1 2 159 419 3103 318 - 2.246747-3 1.395043-1 419 3103 319 - 2.931600+2 0.000000+0 2 1 2 160 419 3103 320 - 1.955082-3 1.349286-1 419 3103 321 - 2.931600+2 0.000000+0 2 1 2 161 419 3103 322 - 1.953961-3 1.318031-1 419 3103 323 - 2.931600+2 0.000000+0 2 1 2 162 419 3103 324 - 1.951830-3 1.270859-1 419 3103 325 - 2.931600+2 0.000000+0 2 1 2 163 419 3103 326 - 1.955070-3 1.206073-1 419 3103 327 - 2.931600+2 0.000000+0 2 1 2 164 419 3103 328 - 9.765915-4 1.148968-1 419 3103 329 - 2.931600+2 0.000000+0 2 1 2 165 419 3103 330 - 9.917526-3 1.090412-1 419 3103 331 - 2.931600+2 0.000000+0 2 1 2 166 419 3103 332 - 1.527796+0 1.001303-1 419 3103 333 - 2.931600+2 0.000000+0 2 1 2 167 419 3103 334 - 5.083487+0 9.504584-2 419 3103 335 - 2.931600+2 0.000000+0 2 1 2 168 419 3103 336 - 8.848206+0 9.046482-2 419 3103 337 - 2.931600+2 0.000000+0 2 1 2 169 419 3103 338 - 6.806587+0 8.608077-2 419 3103 339 - 2.931600+2 0.000000+0 2 1 2 170 419 3103 340 - 2.298726+0 8.193143-2 419 3103 341 - 2.931600+2 0.000000+0 2 1 2 171 419 3103 342 - 3.480231-1 7.758452-2 419 3103 343 - 2.931600+2 0.000000+0 2 1 2 172 419 3103 344 - 3.382279-3 5.866909-2 419 3103 345 - 2.931600+2 0.000000+0 2 1 2 173 419 3103 346 - 1.693835-3 2.308989-2 419 3103 347 - 2.931600+2 0.000000+0 2 1 2 174 419 3103 348 - 1.691495-3 5.249118-3 419 3103 349 - 2.931600+2 0.000000+0 2 1 2 175 419 3103 350 - 8.453596-3 9.252973-3 419 3103 351 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3104 1 - 2.931600+2 0.000000+0 2 1 2 141 419 3104 2 - 7.163080-2 5.673577-5 419 3104 3 - 2.931600+2 0.000000+0 2 1 2 142 419 3104 4 - 6.244698-2 4.557150-3 419 3104 5 - 2.931600+2 0.000000+0 2 1 2 143 419 3104 6 - 2.762652-2 1.873943-2 419 3104 7 - 2.931600+2 0.000000+0 2 1 2 144 419 3104 8 - 2.519972-2 2.961996-2 419 3104 9 - 2.931600+2 0.000000+0 2 1 2 145 419 3104 10 - 2.279022-2 3.870557-2 419 3104 11 - 2.931600+2 0.000000+0 2 1 2 146 419 3104 12 - 2.042454-2 4.551245-2 419 3104 13 - 2.931600+2 0.000000+0 2 1 2 147 419 3104 14 - 1.814121-2 5.058599-2 419 3104 15 - 2.931600+2 0.000000+0 2 1 2 148 419 3104 16 - 1.594717-2 5.436773-2 419 3104 17 - 2.931600+2 0.000000+0 2 1 2 149 419 3104 18 - 1.387605-2 5.697614-2 419 3104 19 - 2.931600+2 0.000000+0 2 1 2 150 419 3104 20 - 8.164821-3 5.855794-2 419 3104 21 - 2.931600+2 0.000000+0 2 1 2 151 419 3104 22 - 3.774194-3 5.983551-2 419 3104 23 - 2.931600+2 0.000000+0 2 1 2 152 419 3104 24 - 1.015723-2 6.457484-2 419 3104 25 - 2.931600+2 0.000000+0 2 1 2 153 419 3104 26 - 8.535770-3 7.652275-2 419 3104 27 - 2.931600+2 0.000000+0 2 1 2 154 419 3104 28 - 7.082301-3 8.789297-2 419 3104 29 - 2.931600+2 0.000000+0 2 1 2 155 419 3104 30 - 5.798906-3 9.528198-2 419 3104 31 - 2.931600+2 0.000000+0 2 1 2 156 419 3104 32 - 4.681662-3 1.002148-1 419 3104 33 - 2.931600+2 0.000000+0 2 1 2 157 419 3104 34 - 3.723613-3 1.048067-1 419 3104 35 - 2.931600+2 0.000000+0 2 1 2 158 419 3104 36 - 2.916027-3 1.104528-1 419 3104 37 - 2.931600+2 0.000000+0 2 1 2 159 419 3104 38 - 2.246747-3 1.166681-1 419 3104 39 - 2.931600+2 0.000000+0 2 1 2 160 419 3104 40 - 1.955090-3 1.219345-1 419 3104 41 - 2.931600+2 0.000000+0 2 1 2 161 419 3104 42 - 1.953966-3 1.300803-1 419 3104 43 - 2.931600+2 0.000000+0 2 1 2 162 419 3104 44 - 1.951836-3 1.391234-1 419 3104 45 - 2.931600+2 0.000000+0 2 1 2 163 419 3104 46 - 1.955078-3 1.421043-1 419 3104 47 - 2.931600+2 0.000000+0 2 1 2 164 419 3104 48 - 9.765916-4 1.406444-1 419 3104 49 - 2.931600+2 0.000000+0 2 1 2 165 419 3104 50 - 9.893008-3 1.371106-1 419 3104 51 - 2.931600+2 0.000000+0 2 1 2 166 419 3104 52 - 1.531876+0 1.302377-1 419 3104 53 - 2.931600+2 0.000000+0 2 1 2 167 419 3104 54 - 5.083488+0 1.257694-1 419 3104 55 - 2.931600+2 0.000000+0 2 1 2 168 419 3104 56 - 8.848180+0 1.214479-1 419 3104 57 - 2.931600+2 0.000000+0 2 1 2 169 419 3104 58 - 6.806517+0 1.168898-1 419 3104 59 - 2.931600+2 0.000000+0 2 1 2 170 419 3104 60 - 2.304996+0 1.123697-1 419 3104 61 - 2.931600+2 0.000000+0 2 1 2 171 419 3104 62 - 3.504250-1 1.073413-1 419 3104 63 - 2.931600+2 0.000000+0 2 1 2 172 419 3104 64 - 3.382293-3 8.725609-2 419 3104 65 - 2.931600+2 0.000000+0 2 1 2 173 419 3104 66 - 1.693836-3 5.588126-2 419 3104 67 - 2.931600+2 0.000000+0 2 1 2 174 419 3104 68 - 1.691503-3 3.692739-2 419 3104 69 - 2.931600+2 0.000000+0 2 1 2 175 419 3104 70 - 8.453622-3 2.006072-2 419 3104 71 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3105 1 - 2.931600+2 0.000000+0 2 1 2 139 419 3105 2 - 4.272225-2 2.898384-4 419 3105 3 - 2.931600+2 0.000000+0 2 1 2 140 419 3105 4 - 7.996083-2 7.551274-3 419 3105 5 - 2.931600+2 0.000000+0 2 1 2 141 419 3105 6 - 7.163080-2 3.793809-2 419 3105 7 - 2.931600+2 0.000000+0 2 1 2 142 419 3105 8 - 6.244698-2 6.686153-2 419 3105 9 - 2.931600+2 0.000000+0 2 1 2 143 419 3105 10 - 2.762652-2 7.987701-2 419 3105 11 - 2.931600+2 0.000000+0 2 1 2 144 419 3105 12 - 2.519972-2 8.535889-2 419 3105 13 - 2.931600+2 0.000000+0 2 1 2 145 419 3105 14 - 2.279022-2 8.978729-2 419 3105 15 - 2.931600+2 0.000000+0 2 1 2 146 419 3105 16 - 2.042454-2 9.225704-2 419 3105 17 - 2.931600+2 0.000000+0 2 1 2 147 419 3105 18 - 1.814121-2 9.376213-2 419 3105 19 - 2.931600+2 0.000000+0 2 1 2 148 419 3105 20 - 1.594717-2 9.476983-2 419 3105 21 - 2.931600+2 0.000000+0 2 1 2 149 419 3105 22 - 1.387605-2 9.478580-2 419 3105 23 - 2.931600+2 0.000000+0 2 1 2 150 419 3105 24 - 8.164821-3 9.419604-2 419 3105 25 - 2.931600+2 0.000000+0 2 1 2 151 419 3105 26 - 3.774194-3 9.358306-2 419 3105 27 - 2.931600+2 0.000000+0 2 1 2 152 419 3105 28 - 1.015723-2 9.212766-2 419 3105 29 - 2.931600+2 0.000000+0 2 1 2 153 419 3105 30 - 8.535770-3 8.882881-2 419 3105 31 - 2.931600+2 0.000000+0 2 1 2 154 419 3105 32 - 7.082301-3 8.522456-2 419 3105 33 - 2.931600+2 0.000000+0 2 1 2 155 419 3105 34 - 5.798906-3 8.130717-2 419 3105 35 - 2.931600+2 0.000000+0 2 1 2 156 419 3105 36 - 4.681662-3 7.750251-2 419 3105 37 - 2.931600+2 0.000000+0 2 1 2 157 419 3105 38 - 3.723613-3 7.379289-2 419 3105 39 - 2.931600+2 0.000000+0 2 1 2 158 419 3105 40 - 2.916027-3 6.968426-2 419 3105 41 - 2.931600+2 0.000000+0 2 1 2 159 419 3105 42 - 2.246747-3 6.467014-2 419 3105 43 - 2.931600+2 0.000000+0 2 1 2 160 419 3105 44 - 1.955090-3 5.927550-2 419 3105 45 - 2.931600+2 0.000000+0 2 1 2 161 419 3105 46 - 1.953966-3 5.519576-2 419 3105 47 - 2.931600+2 0.000000+0 2 1 2 162 419 3105 48 - 1.951836-3 5.089391-2 419 3105 49 - 2.931600+2 0.000000+0 2 1 2 163 419 3105 50 - 1.955078-3 4.586892-2 419 3105 51 - 2.931600+2 0.000000+0 2 1 2 164 419 3105 52 - 9.765916-4 4.210516-2 419 3105 53 - 2.931600+2 0.000000+0 2 1 2 165 419 3105 54 - 9.893008-3 3.890596-2 419 3105 55 - 2.931600+2 0.000000+0 2 1 2 166 419 3105 56 - 1.531876+0 3.455406-2 419 3105 57 - 2.931600+2 0.000000+0 2 1 2 167 419 3105 58 - 5.083488+0 3.226313-2 419 3105 59 - 2.931600+2 0.000000+0 2 1 2 168 419 3105 60 - 8.848180+0 3.026778-2 419 3105 61 - 2.931600+2 0.000000+0 2 1 2 169 419 3105 62 - 6.806517+0 2.837910-2 419 3105 63 - 2.931600+2 0.000000+0 2 1 2 170 419 3105 64 - 2.304996+0 2.663804-2 419 3105 65 - 2.931600+2 0.000000+0 2 1 2 171 419 3105 66 - 3.504250-1 2.484186-2 419 3105 67 - 2.931600+2 0.000000+0 2 1 2 172 419 3105 68 - 3.382293-3 1.798008-2 419 3105 69 - 2.931600+2 0.000000+0 2 1 2 173 419 3105 70 - 1.693836-3 6.319831-3 419 3105 71 - 2.931600+2 0.000000+0 2 1 2 174 419 3105 72 - 1.691503-3 2.210569-4 419 3105 73 - 2.931600+2 0.000000+0 2 1 2 175 419 3105 74 - 8.453626-3 4.94236-10 419 3105 75 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3106 1 - 2.931600+2 0.000000+0 2 1 2 135 419 3106 2 - 4.797893-2 1.194876-4 419 3106 3 - 2.931600+2 0.000000+0 2 1 2 136 419 3106 4 - 4.696325-2 9.347052-4 419 3106 5 - 2.931600+2 0.000000+0 2 1 2 137 419 3106 6 - 4.575857-2 1.927648-3 419 3106 7 - 2.931600+2 0.000000+0 2 1 2 138 419 3106 8 - 4.436130-2 7.722535-3 419 3106 9 - 2.931600+2 0.000000+0 2 1 2 139 419 3106 10 - 4.272236-2 1.959157-2 419 3106 11 - 2.931600+2 0.000000+0 2 1 2 140 419 3106 12 - 7.996083-2 4.596909-2 419 3106 13 - 2.931600+2 0.000000+0 2 1 2 141 419 3106 14 - 7.163080-2 7.674193-2 419 3106 15 - 2.931600+2 0.000000+0 2 1 2 142 419 3106 16 - 6.244698-2 9.274271-2 419 3106 17 - 2.931600+2 0.000000+0 2 1 2 143 419 3106 18 - 2.762652-2 9.812575-2 419 3106 19 - 2.931600+2 0.000000+0 2 1 2 144 419 3106 20 - 2.519972-2 1.002879-1 419 3106 21 - 2.931600+2 0.000000+0 2 1 2 145 419 3106 22 - 2.279022-2 1.021933-1 419 3106 23 - 2.931600+2 0.000000+0 2 1 2 146 419 3106 24 - 2.042454-2 1.024447-1 419 3106 25 - 2.931600+2 0.000000+0 2 1 2 147 419 3106 26 - 1.814121-2 1.021314-1 419 3106 27 - 2.931600+2 0.000000+0 2 1 2 148 419 3106 28 - 1.594717-2 1.017035-1 419 3106 29 - 2.931600+2 0.000000+0 2 1 2 149 419 3106 30 - 1.387605-2 1.005327-1 419 3106 31 - 2.931600+2 0.000000+0 2 1 2 150 419 3106 32 - 8.164821-3 9.910704-2 419 3106 33 - 2.931600+2 0.000000+0 2 1 2 151 419 3106 34 - 3.774194-3 9.806045-2 419 3106 35 - 2.931600+2 0.000000+0 2 1 2 152 419 3106 36 - 1.015723-2 9.609246-2 419 3106 37 - 2.931600+2 0.000000+0 2 1 2 153 419 3106 38 - 8.535770-3 9.209888-2 419 3106 39 - 2.931600+2 0.000000+0 2 1 2 154 419 3106 40 - 7.082301-3 8.793807-2 419 3106 41 - 2.931600+2 0.000000+0 2 1 2 155 419 3106 42 - 5.798906-3 8.356444-2 419 3106 43 - 2.931600+2 0.000000+0 2 1 2 156 419 3106 44 - 4.681662-3 7.937905-2 419 3106 45 - 2.931600+2 0.000000+0 2 1 2 157 419 3106 46 - 3.723613-3 7.534122-2 419 3106 47 - 2.931600+2 0.000000+0 2 1 2 158 419 3106 48 - 2.916027-3 7.094799-2 419 3106 49 - 2.931600+2 0.000000+0 2 1 2 159 419 3106 50 - 2.246747-3 6.568234-2 419 3106 51 - 2.931600+2 0.000000+0 2 1 2 160 419 3106 52 - 1.955090-3 6.006896-2 419 3106 53 - 2.931600+2 0.000000+0 2 1 2 161 419 3106 54 - 1.953966-3 5.582925-2 419 3106 55 - 2.931600+2 0.000000+0 2 1 2 162 419 3106 56 - 1.951836-3 5.139321-2 419 3106 57 - 2.931600+2 0.000000+0 2 1 2 163 419 3106 58 - 1.955078-3 4.624970-2 419 3106 59 - 2.931600+2 0.000000+0 2 1 2 164 419 3106 60 - 9.765916-4 4.241216-2 419 3106 61 - 2.931600+2 0.000000+0 2 1 2 165 419 3106 62 - 9.893008-3 3.916019-2 419 3106 63 - 2.931600+2 0.000000+0 2 1 2 166 419 3106 64 - 1.531876+0 3.474551-2 419 3106 65 - 2.931600+2 0.000000+0 2 1 2 167 419 3106 66 - 5.083488+0 3.242537-2 419 3106 67 - 2.931600+2 0.000000+0 2 1 2 168 419 3106 68 - 8.848180+0 3.040659-2 419 3106 69 - 2.931600+2 0.000000+0 2 1 2 169 419 3106 70 - 6.806517+0 2.849782-2 419 3106 71 - 2.931600+2 0.000000+0 2 1 2 170 419 3106 72 - 2.304996+0 2.673960-2 419 3106 73 - 2.931600+2 0.000000+0 2 1 2 171 419 3106 74 - 3.504250-1 2.492728-2 419 3106 75 - 2.931600+2 0.000000+0 2 1 2 172 419 3106 76 - 3.382293-3 1.802847-2 419 3106 77 - 2.931600+2 0.000000+0 2 1 2 173 419 3106 78 - 1.693836-3 6.336368-3 419 3106 79 - 2.931600+2 0.000000+0 2 1 2 174 419 3106 80 - 1.691503-3 2.216354-4 419 3106 81 - 2.931600+2 0.000000+0 2 1 2 175 419 3106 82 - 8.453626-3 4.94952-10 419 3106 83 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3107 1 - 2.931600+2 0.000000+0 2 1 2 1 419 3107 2 - 4.319880+4 2.163883+1 419 3107 3 - 2.931600+2 0.000000+0 2 1 2 2 419 3107 4 - 4.541324+3 1.039262+1 419 3107 5 - 2.931600+2 0.000000+0 2 1 2 3 419 3107 6 - 2.500158-1 5.414142+0 419 3107 7 - 2.931600+2 0.000000+0 2 1 2 4 419 3107 8 - 2.500006-1 4.778891+0 419 3107 9 - 2.931600+2 0.000000+0 2 1 2 5 419 3107 10 - 2.499989-1 4.229147+0 419 3107 11 - 2.931600+2 0.000000+0 2 1 2 6 419 3107 12 - 2.500522-1 3.723762+0 419 3107 13 - 2.931600+2 0.000000+0 2 1 2 7 419 3107 14 - 2.499747-1 3.283119+0 419 3107 15 - 2.931600+2 0.000000+0 2 1 2 8 419 3107 16 - 2.499950-1 2.899091+0 419 3107 17 - 2.931600+2 0.000000+0 2 1 2 9 419 3107 18 - 2.500120-1 2.558805+0 419 3107 19 - 2.931600+2 0.000000+0 2 1 2 10 419 3107 20 - 2.499837-1 2.258276+0 419 3107 21 - 2.931600+2 0.000000+0 2 1 2 11 419 3107 22 - 2.500208-1 1.992751+0 419 3107 23 - 2.931600+2 0.000000+0 2 1 2 12 419 3107 24 - 2.499994-1 1.758704+0 419 3107 25 - 2.931600+2 0.000000+0 2 1 2 13 419 3107 26 - 2.500068-1 1.552187+0 419 3107 27 - 2.931600+2 0.000000+0 2 1 2 14 419 3107 28 - 2.499982-1 1.369509+0 419 3107 29 - 2.931600+2 0.000000+0 2 1 2 15 419 3107 30 - 2.499987-1 1.206734+0 419 3107 31 - 2.931600+2 0.000000+0 2 1 2 16 419 3107 32 - 2.500377-1 1.070794+0 419 3107 33 - 2.931600+2 0.000000+0 2 1 2 17 419 3107 34 - 2.499479-1 9.412138-1 419 3107 35 - 2.931600+2 0.000000+0 2 1 2 18 419 3107 36 - 2.500173-1 8.305711-1 419 3107 37 - 2.931600+2 0.000000+0 2 1 2 19 419 3107 38 - 2.500100-1 7.330143-1 419 3107 39 - 2.931600+2 0.000000+0 2 1 2 20 419 3107 40 - 2.500236-1 6.469169-1 419 3107 41 - 2.931600+2 0.000000+0 2 1 2 21 419 3107 42 - 2.499879-1 5.710353-1 419 3107 43 - 2.931600+2 0.000000+0 2 1 2 22 419 3107 44 - 2.500056-1 5.039040-1 419 3107 45 - 2.931600+2 0.000000+0 2 1 2 23 419 3107 46 - 2.500029-1 4.445837-1 419 3107 47 - 2.931600+2 0.000000+0 2 1 2 24 419 3107 48 - 2.499980-1 3.922526-1 419 3107 49 - 2.931600+2 0.000000+0 2 1 2 25 419 3107 50 - 2.499905-1 3.464715-1 419 3107 51 - 2.931600+2 0.000000+0 2 1 2 26 419 3107 52 - 2.500449-1 3.056252-1 419 3107 53 - 2.931600+2 0.000000+0 2 1 2 27 419 3107 54 - 2.499670-1 2.693402-1 419 3107 55 - 2.931600+2 0.000000+0 2 1 2 28 419 3107 56 - 2.500068-1 2.401666-1 419 3107 57 - 2.931600+2 0.000000+0 2 1 2 29 419 3107 58 - 2.500344-1 2.098717-1 419 3107 59 - 2.931600+2 0.000000+0 2 1 2 30 419 3107 60 - 2.499915-1 1.852854-1 419 3107 61 - 2.931600+2 0.000000+0 2 1 2 31 419 3107 62 - 2.500083-1 1.638977-1 419 3107 63 - 2.931600+2 0.000000+0 2 1 2 32 419 3107 64 - 2.500005-1 1.441080-1 419 3107 65 - 2.931600+2 0.000000+0 2 1 2 33 419 3107 66 - 2.500054-1 1.276823-1 419 3107 67 - 2.931600+2 0.000000+0 2 1 2 34 419 3107 68 - 2.500019-1 1.122097-1 419 3107 69 - 2.931600+2 0.000000+0 2 1 2 35 419 3107 70 - 2.499942-1 9.916556-2 419 3107 71 - 2.931600+2 0.000000+0 2 1 2 36 419 3107 72 - 2.500204-1 8.753595-2 419 3107 73 - 2.931600+2 0.000000+0 2 1 2 37 419 3107 74 - 1.000055-1 8.016050-2 419 3107 75 - 2.931600+2 0.000000+0 2 1 2 38 419 3107 76 - 1.000025-1 7.629418-2 419 3107 77 - 2.931600+2 0.000000+0 2 1 2 39 419 3107 78 - 4.999347-2 7.320577-2 419 3107 79 - 2.931600+2 0.000000+0 2 1 2 40 419 3107 80 - 4.998229-2 7.146837-2 419 3107 81 - 2.931600+2 0.000000+0 2 1 2 41 419 3107 82 - 1.000174-1 6.882165-2 419 3107 83 - 2.931600+2 0.000000+0 2 1 2 42 419 3107 84 - 9.999096-2 6.572932-2 419 3107 85 - 2.931600+2 0.000000+0 2 1 2 43 419 3107 86 - 9.999992-2 6.280552-2 419 3107 87 - 2.931600+2 0.000000+0 2 1 2 44 419 3107 88 - 1.500060-1 5.873229-2 419 3107 89 - 2.931600+2 0.000000+0 2 1 2 45 419 3107 90 - 2.500021-1 5.338728-2 419 3107 91 - 2.931600+2 0.000000+0 2 1 2 46 419 3107 92 - 2.500058-1 4.678325-2 419 3107 93 - 2.931600+2 0.000000+0 2 1 2 47 419 3107 94 - 2.500081-1 4.161199-2 419 3107 95 - 2.931600+2 0.000000+0 2 1 2 48 419 3107 96 - 1.500464-1 3.739656-2 419 3107 97 - 2.931600+2 0.000000+0 2 1 2 49 419 3107 98 - 9.997715-2 3.503615-2 419 3107 99 - 2.931600+2 0.000000+0 2 1 2 50 419 3107 100 - 2.499605-1 3.219545-2 419 3107 101 - 2.931600+2 0.000000+0 2 1 2 51 419 3107 102 - 2.500539-1 2.852017-2 419 3107 103 - 2.931600+2 0.000000+0 2 1 2 52 419 3107 104 - 1.249823-1 2.581050-2 419 3107 105 - 2.931600+2 0.000000+0 2 1 2 53 419 3107 106 - 7.501323-2 2.456643-2 419 3107 107 - 2.931600+2 0.000000+0 2 1 2 54 419 3107 108 - 2.500424-2 2.391426-2 419 3107 109 - 2.931600+2 0.000000+0 2 1 2 55 419 3107 110 - 2.499961-2 2.363888-2 419 3107 111 - 2.931600+2 0.000000+0 2 1 2 56 419 3107 112 - 4.996597-2 2.324404-2 419 3107 113 - 2.931600+2 0.000000+0 2 1 2 57 419 3107 114 - 3.551257-2 2.277689-2 419 3107 115 - 2.931600+2 0.000000+0 2 1 2 58 419 3107 116 - 5.406806-2 2.226402-2 419 3107 117 - 2.931600+2 0.000000+0 2 1 2 59 419 3107 118 - 1.104441-1 2.132297-2 419 3107 119 - 2.931600+2 0.000000+0 2 1 2 60 419 3107 120 - 7.500419-2 2.044370-2 419 3107 121 - 2.931600+2 0.000000+0 2 1 2 61 419 3107 122 - 1.750007-1 1.924126-2 419 3107 123 - 2.931600+2 0.000000+0 2 1 2 62 419 3107 124 - 1.249910-1 2.159559-2 419 3107 125 - 2.931600+2 0.000000+0 2 1 2 63 419 3107 126 - 1.250025-1 2.680049-2 419 3107 127 - 2.931600+2 0.000000+0 2 1 2 64 419 3107 128 - 7.500169-2 3.195826-2 419 3107 129 - 2.931600+2 0.000000+0 2 1 2 65 419 3107 130 - 1.749988-1 4.004319-2 419 3107 131 - 2.931600+2 0.000000+0 2 1 2 66 419 3107 132 - 6.633376-2 4.975929-2 419 3107 133 - 2.931600+2 0.000000+0 2 1 2 67 419 3107 134 - 9.909254-2 5.731427-2 419 3107 135 - 2.931600+2 0.000000+0 2 1 2 68 419 3107 136 - 3.704179-2 6.396524-2 419 3107 137 - 2.931600+2 0.000000+0 2 1 2 69 419 3107 138 - 4.754338-2 6.890033-2 419 3107 139 - 2.931600+2 0.000000+0 2 1 2 70 419 3107 140 - 1.250060-1 8.050093-2 419 3107 141 - 2.931600+2 0.000000+0 2 1 2 71 419 3107 142 - 1.249977-1 1.005470-1 419 3107 143 - 2.931600+2 0.000000+0 2 1 2 72 419 3107 144 - 5.003758-2 1.179100-1 419 3107 145 - 2.931600+2 0.000000+0 2 1 2 73 419 3107 146 - 4.993605-2 1.286254-1 419 3107 147 - 2.931600+2 0.000000+0 2 1 2 74 419 3107 148 - 5.004302-2 1.398908-1 419 3107 149 - 2.931600+2 0.000000+0 2 1 2 75 419 3107 150 - 5.001871-2 1.517476-1 419 3107 151 - 2.931600+2 0.000000+0 2 1 2 76 419 3107 152 - 4.995191-2 1.657811-1 419 3107 153 - 2.931600+2 0.000000+0 2 1 2 77 419 3107 154 - 5.004543-2 1.818670-1 419 3107 155 - 2.931600+2 0.000000+0 2 1 2 78 419 3107 156 - 4.994617-2 1.987763-1 419 3107 157 - 2.931600+2 0.000000+0 2 1 2 79 419 3107 158 - 5.004682-2 2.165530-1 419 3107 159 - 2.931600+2 0.000000+0 2 1 2 80 419 3107 160 - 4.995962-2 2.352553-1 419 3107 161 - 2.931600+2 0.000000+0 2 1 2 81 419 3107 162 - 5.004203-2 2.566919-1 419 3107 163 - 2.931600+2 0.000000+0 2 1 2 82 419 3107 164 - 4.999659-2 2.805445-1 419 3107 165 - 2.931600+2 0.000000+0 2 1 2 83 419 3107 166 - 4.998963-2 3.047181-1 419 3107 167 - 2.931600+2 0.000000+0 2 1 2 84 419 3107 168 - 5.000882-2 3.087409-1 419 3107 169 - 2.931600+2 0.000000+0 2 1 2 85 419 3107 170 - 4.999863-2 3.037757-1 419 3107 171 - 2.931600+2 0.000000+0 2 1 2 86 419 3107 172 - 5.000142-2 2.985565-1 419 3107 173 - 2.931600+2 0.000000+0 2 1 2 87 419 3107 174 - 5.000916-2 2.930690-1 419 3107 175 - 2.931600+2 0.000000+0 2 1 2 88 419 3107 176 - 9.999264-2 2.842687-1 419 3107 177 - 2.931600+2 0.000000+0 2 1 2 89 419 3107 178 - 5.000320-2 2.748620-1 419 3107 179 - 2.931600+2 0.000000+0 2 1 2 90 419 3107 180 - 2.499435-2 2.698778-1 419 3107 181 - 2.931600+2 0.000000+0 2 1 2 91 419 3107 182 - 9.058538-3 2.675508-1 419 3107 183 - 2.931600+2 0.000000+0 2 1 2 92 419 3107 184 - 4.364640-3 2.666203-1 419 3107 185 - 2.931600+2 0.000000+0 2 1 2 93 419 3107 186 - 1.155782-2 2.656102-1 419 3107 187 - 2.931600+2 0.000000+0 2 1 2 94 419 3107 188 - 1.000062-1 2.606075-1 419 3107 189 - 2.931600+2 0.000000+0 2 1 2 95 419 3107 190 - 1.000052-1 2.510906-1 419 3107 191 - 2.931600+2 0.000000+0 2 1 2 96 419 3107 192 - 4.999999-2 2.433357-1 419 3107 193 - 2.931600+2 0.000000+0 2 1 2 97 419 3107 194 - 5.000110-2 2.378360-1 419 3107 195 - 2.931600+2 0.000000+0 2 1 2 98 419 3107 196 - 1.000021-1 2.301029-1 419 3107 197 - 2.931600+2 0.000000+0 2 1 2 99 419 3107 198 - 1.000048-1 2.192660-1 419 3107 199 - 2.931600+2 0.000000+0 2 1 2 100 419 3107 200 - 5.000778-2 2.106826-1 419 3107 201 - 2.931600+2 0.000000+0 2 1 2 101 419 3107 202 - 4.999119-2 2.052202-1 419 3107 203 - 2.931600+2 0.000000+0 2 1 2 102 419 3107 204 - 4.999926-2 1.995001-1 419 3107 205 - 2.931600+2 0.000000+0 2 1 2 103 419 3107 206 - 5.000523-2 1.935577-1 419 3107 207 - 2.931600+2 0.000000+0 2 1 2 104 419 3107 208 - 5.000401-2 1.886953-1 419 3107 209 - 2.931600+2 0.000000+0 2 1 2 105 419 3107 210 - 5.000589-2 1.841180-1 419 3107 211 - 2.931600+2 0.000000+0 2 1 2 106 419 3107 212 - 4.999047-2 1.793078-1 419 3107 213 - 2.931600+2 0.000000+0 2 1 2 107 419 3107 214 - 5.000951-2 1.747923-1 419 3107 215 - 2.931600+2 0.000000+0 2 1 2 108 419 3107 216 - 4.999941-2 1.704998-1 419 3107 217 - 2.931600+2 0.000000+0 2 1 2 109 419 3107 218 - 4.999652-2 1.660403-1 419 3107 219 - 2.931600+2 0.000000+0 2 1 2 110 419 3107 220 - 5.000559-2 1.619131-1 419 3107 221 - 2.931600+2 0.000000+0 2 1 2 111 419 3107 222 - 4.999651-2 1.577267-1 419 3107 223 - 2.931600+2 0.000000+0 2 1 2 112 419 3107 224 - 5.830021-2 1.533510-1 419 3107 225 - 2.931600+2 0.000000+0 2 1 2 113 419 3107 226 - 4.171240-2 1.494061-1 419 3107 227 - 2.931600+2 0.000000+0 2 1 2 114 419 3107 228 - 9.996150-2 1.441722-1 419 3107 229 - 2.931600+2 0.000000+0 2 1 2 115 419 3107 230 - 4.999362-2 1.387053-1 419 3107 231 - 2.931600+2 0.000000+0 2 1 2 116 419 3107 232 - 5.006558-2 1.348410-1 419 3107 233 - 2.931600+2 0.000000+0 2 1 2 117 419 3107 234 - 4.993355-2 1.314462-1 419 3107 235 - 2.931600+2 0.000000+0 2 1 2 118 419 3107 236 - 5.007376-2 1.281405-1 419 3107 237 - 2.931600+2 0.000000+0 2 1 2 119 419 3107 238 - 4.993732-2 1.246780-1 419 3107 239 - 2.931600+2 0.000000+0 2 1 2 120 419 3107 240 - 5.003866-2 1.215500-1 419 3107 241 - 2.931600+2 0.000000+0 2 1 2 121 419 3107 242 - 5.000960-2 1.185276-1 419 3107 243 - 2.931600+2 0.000000+0 2 1 2 122 419 3107 244 - 4.998941-2 1.154342-1 419 3107 245 - 2.931600+2 0.000000+0 2 1 2 123 419 3107 246 - 4.997139-2 1.126654-1 419 3107 247 - 2.931600+2 0.000000+0 2 1 2 124 419 3107 248 - 5.000415-2 1.098378-1 419 3107 249 - 2.931600+2 0.000000+0 2 1 2 125 419 3107 250 - 5.002058-2 1.071672-1 419 3107 251 - 2.931600+2 0.000000+0 2 1 2 126 419 3107 252 - 5.001758-2 1.045340-1 419 3107 253 - 2.931600+2 0.000000+0 2 1 2 127 419 3107 254 - 4.999298-2 1.019134-1 419 3107 255 - 2.931600+2 0.000000+0 2 1 2 128 419 3107 256 - 4.995837-2 9.937123-2 419 3107 257 - 2.931600+2 0.000000+0 2 1 2 129 419 3107 258 - 3.320467-2 9.726936-2 419 3107 259 - 2.931600+2 0.000000+0 2 1 2 130 419 3107 260 - 1.657101-2 9.606505-2 419 3107 261 - 2.931600+2 0.000000+0 2 1 2 131 419 3107 262 - 8.251205-3 9.545113-2 419 3107 263 - 2.931600+2 0.000000+0 2 1 2 132 419 3107 264 - 8.295947-3 9.503658-2 419 3107 265 - 2.931600+2 0.000000+0 2 1 2 133 419 3107 266 - 3.285066-2 9.400211-2 419 3107 267 - 2.931600+2 0.000000+0 2 1 2 134 419 3107 268 - 4.877513-2 9.207376-2 419 3107 269 - 2.931600+2 0.000000+0 2 1 2 135 419 3107 270 - 4.797893-2 8.974197-2 419 3107 271 - 2.931600+2 0.000000+0 2 1 2 136 419 3107 272 - 4.696325-2 8.751364-2 419 3107 273 - 2.931600+2 0.000000+0 2 1 2 137 419 3107 274 - 4.575863-2 8.519599-2 419 3107 275 - 2.931600+2 0.000000+0 2 1 2 138 419 3107 276 - 4.436130-2 8.271997-2 419 3107 277 - 2.931600+2 0.000000+0 2 1 2 139 419 3107 278 - 4.272225-2 8.003359-2 419 3107 279 - 2.931600+2 0.000000+0 2 1 2 140 419 3107 280 - 7.996088-2 7.505752-2 419 3107 281 - 2.931600+2 0.000000+0 2 1 2 141 419 3107 282 - 7.163081-2 6.630119-2 419 3107 283 - 2.931600+2 0.000000+0 2 1 2 142 419 3107 284 - 6.244698-2 5.697820-2 419 3107 285 - 2.931600+2 0.000000+0 2 1 2 143 419 3107 286 - 2.762652-2 5.021172-2 419 3107 287 - 2.931600+2 0.000000+0 2 1 2 144 419 3107 288 - 2.519972-2 4.629638-2 419 3107 289 - 2.931600+2 0.000000+0 2 1 2 145 419 3107 290 - 2.279022-2 4.287990-2 419 3107 291 - 2.931600+2 0.000000+0 2 1 2 146 419 3107 292 - 2.042454-2 3.922315-2 419 3107 293 - 2.931600+2 0.000000+0 2 1 2 147 419 3107 294 - 1.814121-2 3.603083-2 419 3107 295 - 2.931600+2 0.000000+0 2 1 2 148 419 3107 296 - 1.594728-2 3.341140-2 419 3107 297 - 2.931600+2 0.000000+0 2 1 2 149 419 3107 298 - 1.387605-2 3.088952-2 419 3107 299 - 2.931600+2 0.000000+0 2 1 2 150 419 3107 300 - 8.164813-3 2.885211-2 419 3107 301 - 2.931600+2 0.000000+0 2 1 2 151 419 3107 302 - 3.774230-3 2.765749-2 419 3107 303 - 2.931600+2 0.000000+0 2 1 2 152 419 3107 304 - 1.015740-2 2.605291-2 419 3107 305 - 2.931600+2 0.000000+0 2 1 2 153 419 3107 306 - 8.535689-3 2.351895-2 419 3107 307 - 2.931600+2 0.000000+0 2 1 2 154 419 3107 308 - 7.082486-3 2.124451-2 419 3107 309 - 2.931600+2 0.000000+0 2 1 2 155 419 3107 310 - 5.798906-3 1.922550-2 419 3107 311 - 2.931600+2 0.000000+0 2 1 2 156 419 3107 312 - 4.681662-3 1.752297-2 419 3107 313 - 2.931600+2 0.000000+0 2 1 2 157 419 3107 314 - 3.723745-3 1.603232-2 419 3107 315 - 2.931600+2 0.000000+0 2 1 2 158 419 3107 316 - 2.916018-3 1.461776-2 419 3107 317 - 2.931600+2 0.000000+0 2 1 2 159 419 3107 318 - 2.246747-3 1.317924-2 419 3107 319 - 2.931600+2 0.000000+0 2 1 2 160 419 3107 320 - 1.955082-3 1.176129-2 419 3107 321 - 2.931600+2 0.000000+0 2 1 2 161 419 3107 322 - 1.953961-3 1.070562-2 419 3107 323 - 2.931600+2 0.000000+0 2 1 2 162 419 3107 324 - 1.951830-3 9.655523-3 419 3107 325 - 2.931600+2 0.000000+0 2 1 2 163 419 3107 326 - 1.955070-3 8.495056-3 419 3107 327 - 2.931600+2 0.000000+0 2 1 2 164 419 3107 328 - 9.765915-4 7.660377-3 419 3107 329 - 2.931600+2 0.000000+0 2 1 2 165 419 3107 330 - 9.917526-3 6.977616-3 419 3107 331 - 2.931600+2 0.000000+0 2 1 2 166 419 3107 332 - 1.527796+0 6.080662-3 419 3107 333 - 2.931600+2 0.000000+0 2 1 2 167 419 3107 334 - 5.083487+0 5.618693-3 419 3107 335 - 2.931600+2 0.000000+0 2 1 2 168 419 3107 336 - 8.848206+0 5.222056-3 419 3107 337 - 2.931600+2 0.000000+0 2 1 2 169 419 3107 338 - 6.806587+0 4.852965-3 419 3107 339 - 2.931600+2 0.000000+0 2 1 2 170 419 3107 340 - 2.298726+0 4.515102-3 419 3107 341 - 2.931600+2 0.000000+0 2 1 2 171 419 3107 342 - 3.480231-1 4.174763-3 419 3107 343 - 2.931600+2 0.000000+0 2 1 2 172 419 3107 344 - 3.382279-3 2.962610-3 419 3107 345 - 2.931600+2 0.000000+0 2 1 2 173 419 3107 346 - 1.693835-3 1.039260-3 419 3107 347 - 2.931600+2 0.000000+0 2 1 2 174 419 3107 348 - 1.691495-3 3.633380-5 419 3107 349 - 2.931600+2 0.000000+0 2 1 2 175 419 3107 350 - 8.453596-3 5.31679-11 419 3107 351 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3111 1 - 2.931600+2 0.000000+0 2 1 2 159 419 3111 2 - 2.246705-3 1.334007-6 419 3111 3 - 2.931600+2 0.000000+0 2 1 2 160 419 3111 4 - 1.955091-3 4.503113-6 419 3111 5 - 2.931600+2 0.000000+0 2 1 2 161 419 3111 6 - 1.953971-3 7.760024-6 419 3111 7 - 2.931600+2 0.000000+0 2 1 2 162 419 3111 8 - 1.951837-3 1.118104-5 419 3111 9 - 2.931600+2 0.000000+0 2 1 2 163 419 3111 10 - 1.955080-3 1.477844-5 419 3111 11 - 2.931600+2 0.000000+0 2 1 2 164 419 3111 12 - 9.766681-4 1.759271-5 419 3111 13 - 2.931600+2 0.000000+0 2 1 2 165 419 3111 14 - 9.893008-3 2.007264-5 419 3111 15 - 2.931600+2 0.000000+0 2 1 2 166 419 3111 16 - 1.537615+0 2.372567-5 419 3111 17 - 2.931600+2 0.000000+0 2 1 2 167 419 3111 18 - 5.083622+0 2.584041-5 419 3111 19 - 2.931600+2 0.000000+0 2 1 2 168 419 3111 20 - 8.848080+0 2.782209-5 419 3111 21 - 2.931600+2 0.000000+0 2 1 2 169 419 3111 22 - 6.806521+0 2.986038-5 419 3111 23 - 2.931600+2 0.000000+0 2 1 2 170 419 3111 24 - 2.304996+0 3.187972-5 419 3111 25 - 2.931600+2 0.000000+0 2 1 2 171 419 3111 26 - 3.559738-1 3.409723-5 419 3111 27 - 2.931600+2 0.000000+0 2 1 2 172 419 3111 28 - 3.382293-3 4.628666-5 419 3111 29 - 2.931600+2 0.000000+0 2 1 2 173 419 3111 30 - 1.693836-3 7.165468-5 419 3111 31 - 2.931600+2 0.000000+0 2 1 2 174 419 3111 32 - 1.691503-3 9.432979-5 419 3111 33 - 2.931600+2 0.000000+0 2 1 2 175 419 3111 34 - 8.453622-3 1.903537-4 419 3111 35 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3112 1 - 2.931600+2 0.000000+0 2 1 2 114 419 3112 2 - 9.996162-2 8.511888-8 419 3112 3 - 2.931600+2 0.000000+0 2 1 2 115 419 3112 4 - 4.999362-2 3.406009-7 419 3112 5 - 2.931600+2 0.000000+0 2 1 2 116 419 3112 6 - 5.006568-2 5.338958-7 419 3112 7 - 2.931600+2 0.000000+0 2 1 2 117 419 3112 8 - 4.993355-2 7.369784-7 419 3112 9 - 2.931600+2 0.000000+0 2 1 2 118 419 3112 10 - 5.007376-2 9.504956-7 419 3112 11 - 2.931600+2 0.000000+0 2 1 2 119 419 3112 12 - 4.993734-2 1.174964-6 419 3112 13 - 2.931600+2 0.000000+0 2 1 2 120 419 3112 14 - 5.003866-2 1.410863-6 419 3112 15 - 2.931600+2 0.000000+0 2 1 2 121 419 3112 16 - 5.000960-2 1.659034-6 419 3112 17 - 2.931600+2 0.000000+0 2 1 2 122 419 3112 18 - 4.998952-2 1.919803-6 419 3112 19 - 2.931600+2 0.000000+0 2 1 2 123 419 3112 20 - 4.997139-2 2.193836-6 419 3112 21 - 2.931600+2 0.000000+0 2 1 2 124 419 3112 22 - 5.000422-2 2.481956-6 419 3112 23 - 2.931600+2 0.000000+0 2 1 2 125 419 3112 24 - 5.002058-2 2.784998-6 419 3112 25 - 2.931600+2 0.000000+0 2 1 2 126 419 3112 26 - 5.001758-2 3.103624-6 419 3112 27 - 2.931600+2 0.000000+0 2 1 2 127 419 3112 28 - 4.999307-2 3.438502-6 419 3112 29 - 2.931600+2 0.000000+0 2 1 2 128 419 3112 30 - 4.995837-2 3.790382-6 419 3112 31 - 2.931600+2 0.000000+0 2 1 2 129 419 3112 32 - 3.320467-2 4.096935-6 419 3112 33 - 2.931600+2 0.000000+0 2 1 2 130 419 3112 34 - 1.657101-2 4.287199-6 419 3112 35 - 2.931600+2 0.000000+0 2 1 2 131 419 3112 36 - 8.251205-3 4.384187-6 419 3112 37 - 2.931600+2 0.000000+0 2 1 2 132 419 3112 38 - 8.295947-3 4.449678-6 419 3112 39 - 2.931600+2 0.000000+0 2 1 2 133 419 3112 40 - 3.285067-2 4.615780-6 419 3112 41 - 2.931600+2 0.000000+0 2 1 2 134 419 3112 42 - 4.877513-2 4.957975-6 419 3112 43 - 2.931600+2 0.000000+0 2 1 2 135 419 3112 44 - 4.797899-2 5.387629-6 419 3112 45 - 2.931600+2 0.000000+0 2 1 2 136 419 3112 46 - 4.696325-2 5.839301-6 419 3112 47 - 2.931600+2 0.000000+0 2 1 2 137 419 3112 48 - 4.575866-2 6.314148-6 419 3112 49 - 2.931600+2 0.000000+0 2 1 2 138 419 3112 50 - 4.436130-2 6.813489-6 419 3112 51 - 2.931600+2 0.000000+0 2 1 2 139 419 3112 52 - 4.272235-2 7.338328-6 419 3112 53 - 2.931600+2 0.000000+0 2 1 2 140 419 3112 54 - 7.996096-2 8.172844-6 419 3112 55 - 2.931600+2 0.000000+0 2 1 2 141 419 3112 56 - 7.163098-2 9.390028-6 419 3112 57 - 2.931600+2 0.000000+0 2 1 2 142 419 3112 58 - 6.244718-2 1.073458-5 419 3112 59 - 2.931600+2 0.000000+0 2 1 2 143 419 3112 60 - 2.762671-2 1.184653-5 419 3112 61 - 2.931600+2 0.000000+0 2 1 2 144 419 3112 62 - 2.519994-2 1.262909-5 419 3112 63 - 2.931600+2 0.000000+0 2 1 2 145 419 3112 64 - 2.279047-2 1.345166-5 419 3112 65 - 2.931600+2 0.000000+0 2 1 2 146 419 3112 66 - 2.042476-2 1.431621-5 419 3112 67 - 2.931600+2 0.000000+0 2 1 2 147 419 3112 68 - 1.814118-2 1.522505-5 419 3112 69 - 2.931600+2 0.000000+0 2 1 2 148 419 3112 70 - 1.594743-2 1.618049-5 419 3112 71 - 2.931600+2 0.000000+0 2 1 2 149 419 3112 72 - 1.387617-2 1.718484-5 419 3112 73 - 2.931600+2 0.000000+0 2 1 2 150 419 3112 74 - 8.164822-3 1.806745-5 419 3112 75 - 2.931600+2 0.000000+0 2 1 2 151 419 3112 76 - 3.774230-3 1.861559-5 419 3112 77 - 2.931600+2 0.000000+0 2 1 2 152 419 3112 78 - 1.015748-2 1.935027-5 419 3112 79 - 2.931600+2 0.000000+0 2 1 2 153 419 3112 80 - 8.535930-3 2.051679-5 419 3112 81 - 2.931600+2 0.000000+0 2 1 2 154 419 3112 82 - 7.082486-3 2.174290-5 419 3112 83 - 2.931600+2 0.000000+0 2 1 2 155 419 3112 84 - 5.799093-3 2.303172-5 419 3112 85 - 2.931600+2 0.000000+0 2 1 2 156 419 3112 86 - 4.681774-3 2.438653-5 419 3112 87 - 2.931600+2 0.000000+0 2 1 2 157 419 3112 88 - 3.723745-3 2.581064-5 419 3112 89 - 2.931600+2 0.000000+0 2 1 2 158 419 3112 90 - 2.916072-3 2.730747-5 419 3112 91 - 2.931600+2 0.000000+0 2 1 2 159 419 3112 92 - 2.246747-3 2.888080-5 419 3112 93 - 2.931600+2 0.000000+0 2 1 2 160 419 3112 94 - 1.955091-3 3.057885-5 419 3112 95 - 2.931600+2 0.000000+0 2 1 2 161 419 3112 96 - 1.953971-3 3.232284-5 419 3112 97 - 2.931600+2 0.000000+0 2 1 2 162 419 3112 98 - 1.951837-3 3.415470-5 419 3112 99 - 2.931600+2 0.000000+0 2 1 2 163 419 3112 100 - 1.955080-3 3.608103-5 419 3112 101 - 2.931600+2 0.000000+0 2 1 2 164 419 3112 102 - 9.766681-4 3.758799-5 419 3112 103 - 2.931600+2 0.000000+0 2 1 2 165 419 3112 104 - 9.893008-3 3.891593-5 419 3112 105 - 2.931600+2 0.000000+0 2 1 2 166 419 3112 106 - 1.537615+0 4.087204-5 419 3112 107 - 2.931600+2 0.000000+0 2 1 2 167 419 3112 108 - 5.083622+0 4.200443-5 419 3112 109 - 2.931600+2 0.000000+0 2 1 2 168 419 3112 110 - 8.848080+0 4.306556-5 419 3112 111 - 2.931600+2 0.000000+0 2 1 2 169 419 3112 112 - 6.806521+0 4.415702-5 419 3112 113 - 2.931600+2 0.000000+0 2 1 2 170 419 3112 114 - 2.304996+0 4.523832-5 419 3112 115 - 2.931600+2 0.000000+0 2 1 2 171 419 3112 116 - 3.559738-1 4.642574-5 419 3112 117 - 2.931600+2 0.000000+0 2 1 2 172 419 3112 118 - 3.382293-3 5.688273-5 419 3112 119 - 2.931600+2 0.000000+0 2 1 2 173 419 3112 120 - 1.693836-3 8.535135-5 419 3112 121 - 2.931600+2 0.000000+0 2 1 2 174 419 3112 122 - 1.691503-3 1.108590-4 419 3112 123 - 2.931600+2 0.000000+0 2 1 2 175 419 3112 124 - 8.453622-3 2.140371-4 419 3112 125 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3115 1 - 2.931600+2 0.000000+0 2 1 2 157 419 3115 2 - 3.723657-3 2.70273-11 419 3115 3 - 2.931600+2 0.000000+0 2 1 2 158 419 3115 4 - 2.916072-3 7.51965-10 419 3115 5 - 2.931600+2 0.000000+0 2 1 2 159 419 3115 6 - 2.246747-3 1.837382-9 419 3115 7 - 2.931600+2 0.000000+0 2 1 2 160 419 3115 8 - 1.955091-3 3.008854-9 419 3115 9 - 2.931600+2 0.000000+0 2 1 2 161 419 3115 10 - 1.953966-3 4.341738-9 419 3115 11 - 2.931600+2 0.000000+0 2 1 2 162 419 3115 12 - 1.951836-3 2.353887-8 419 3115 13 - 2.931600+2 0.000000+0 2 1 2 163 419 3115 14 - 1.955078-3 7.046266-8 419 3115 15 - 2.931600+2 0.000000+0 2 1 2 164 419 3115 16 - 9.765916-4 1.167447-7 419 3115 17 - 2.931600+2 0.000000+0 2 1 2 165 419 3115 18 - 9.893008-3 1.600313-7 419 3115 19 - 2.931600+2 0.000000+0 2 1 2 166 419 3115 20 - 1.531876+0 2.243485-7 419 3115 21 - 2.931600+2 0.000000+0 2 1 2 167 419 3115 22 - 5.083488+0 2.616202-7 419 3115 23 - 2.931600+2 0.000000+0 2 1 2 168 419 3115 24 - 8.848180+0 2.957677-7 419 3115 25 - 2.931600+2 0.000000+0 2 1 2 169 419 3115 26 - 6.806517+0 3.297941-7 419 3115 27 - 2.931600+2 0.000000+0 2 1 2 170 419 3115 28 - 2.304996+0 3.624189-7 419 3115 29 - 2.931600+2 0.000000+0 2 1 2 171 419 3115 30 - 3.504250-1 1.209237-5 419 3115 31 - 2.931600+2 0.000000+0 2 1 2 172 419 3115 32 - 3.382293-3 1.765331-3 419 3115 33 - 2.931600+2 0.000000+0 2 1 2 173 419 3115 34 - 1.693836-3 7.784335-3 419 3115 35 - 2.931600+2 0.000000+0 2 1 2 174 419 3115 36 - 1.691503-3 1.098886-2 419 3115 37 - 2.931600+2 0.000000+0 2 1 2 175 419 3115 38 - 8.453622-3 1.180474-2 419 3115 39 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3116 1 - 2.931600+2 0.000000+0 2 1 2 114 419 3116 2 - 9.996155-2 1.210493-7 419 3116 3 - 2.931600+2 0.000000+0 2 1 2 115 419 3116 4 - 4.999362-2 6.093208-7 419 3116 5 - 2.931600+2 0.000000+0 2 1 2 116 419 3116 6 - 5.006568-2 1.000649-6 419 3116 7 - 2.931600+2 0.000000+0 2 1 2 117 419 3116 8 - 4.993355-2 1.411793-6 419 3116 9 - 2.931600+2 0.000000+0 2 1 2 118 419 3116 10 - 5.007376-2 1.844063-6 419 3116 11 - 2.931600+2 0.000000+0 2 1 2 119 419 3116 12 - 4.993734-2 2.298503-6 419 3116 13 - 2.931600+2 0.000000+0 2 1 2 120 419 3116 14 - 5.003866-2 2.776083-6 419 3116 15 - 2.931600+2 0.000000+0 2 1 2 121 419 3116 16 - 5.000960-2 3.278509-6 419 3116 17 - 2.931600+2 0.000000+0 2 1 2 122 419 3116 18 - 4.998952-2 3.806441-6 419 3116 19 - 2.931600+2 0.000000+0 2 1 2 123 419 3116 20 - 4.997139-2 4.361224-6 419 3116 21 - 2.931600+2 0.000000+0 2 1 2 124 419 3116 22 - 5.000422-2 4.944529-6 419 3116 23 - 2.931600+2 0.000000+0 2 1 2 125 419 3116 24 - 5.002058-2 5.558042-6 419 3116 25 - 2.931600+2 0.000000+0 2 1 2 126 419 3116 26 - 5.001758-2 6.203105-6 419 3116 27 - 2.931600+2 0.000000+0 2 1 2 127 419 3116 28 - 4.999307-2 6.881071-6 419 3116 29 - 2.931600+2 0.000000+0 2 1 2 128 419 3116 30 - 4.995837-2 7.593458-6 419 3116 31 - 2.931600+2 0.000000+0 2 1 2 129 419 3116 32 - 3.320467-2 8.214080-6 419 3116 33 - 2.931600+2 0.000000+0 2 1 2 130 419 3116 34 - 1.657101-2 8.599273-6 419 3116 35 - 2.931600+2 0.000000+0 2 1 2 131 419 3116 36 - 8.251205-3 8.795626-6 419 3116 37 - 2.931600+2 0.000000+0 2 1 2 132 419 3116 38 - 8.295947-3 8.928215-6 419 3116 39 - 2.931600+2 0.000000+0 2 1 2 133 419 3116 40 - 3.285067-2 9.264490-6 419 3116 41 - 2.931600+2 0.000000+0 2 1 2 134 419 3116 42 - 4.877513-2 9.957270-6 419 3116 43 - 2.931600+2 0.000000+0 2 1 2 135 419 3116 44 - 4.797899-2 1.082711-5 419 3116 45 - 2.931600+2 0.000000+0 2 1 2 136 419 3116 46 - 4.696325-2 1.174153-5 419 3116 47 - 2.931600+2 0.000000+0 2 1 2 137 419 3116 48 - 4.575866-2 1.270286-5 419 3116 49 - 2.931600+2 0.000000+0 2 1 2 138 419 3116 50 - 4.436130-2 1.371379-5 419 3116 51 - 2.931600+2 0.000000+0 2 1 2 139 419 3116 52 - 4.272235-2 1.477633-5 419 3116 53 - 2.931600+2 0.000000+0 2 1 2 140 419 3116 54 - 7.996096-2 1.646582-5 419 3116 55 - 2.931600+2 0.000000+0 2 1 2 141 419 3116 56 - 7.163098-2 1.893003-5 419 3116 57 - 2.931600+2 0.000000+0 2 1 2 142 419 3116 58 - 6.244718-2 2.165210-5 419 3116 59 - 2.931600+2 0.000000+0 2 1 2 143 419 3116 60 - 2.762671-2 2.390327-5 419 3116 61 - 2.931600+2 0.000000+0 2 1 2 144 419 3116 62 - 2.519994-2 2.548757-5 419 3116 63 - 2.931600+2 0.000000+0 2 1 2 145 419 3116 64 - 2.279047-2 2.715287-5 419 3116 65 - 2.931600+2 0.000000+0 2 1 2 146 419 3116 66 - 2.042476-2 2.890317-5 419 3116 67 - 2.931600+2 0.000000+0 2 1 2 147 419 3116 68 - 1.814118-2 3.074313-5 419 3116 69 - 2.931600+2 0.000000+0 2 1 2 148 419 3116 70 - 1.594743-2 3.267743-5 419 3116 71 - 2.931600+2 0.000000+0 2 1 2 149 419 3116 72 - 1.387617-2 3.471075-5 419 3116 73 - 2.931600+2 0.000000+0 2 1 2 150 419 3116 74 - 8.164822-3 3.649761-5 419 3116 75 - 2.931600+2 0.000000+0 2 1 2 151 419 3116 76 - 3.774230-3 3.760734-5 419 3116 77 - 2.931600+2 0.000000+0 2 1 2 152 419 3116 78 - 1.015748-2 3.909470-5 419 3116 79 - 2.931600+2 0.000000+0 2 1 2 153 419 3116 80 - 8.535930-3 4.145633-5 419 3116 81 - 2.931600+2 0.000000+0 2 1 2 154 419 3116 82 - 7.082486-3 4.393861-5 419 3116 83 - 2.931600+2 0.000000+0 2 1 2 155 419 3116 84 - 5.799093-3 4.654786-5 419 3116 85 - 2.931600+2 0.000000+0 2 1 2 156 419 3116 86 - 4.681774-3 4.929070-5 419 3116 87 - 2.931600+2 0.000000+0 2 1 2 157 419 3116 88 - 3.723745-3 5.217382-5 419 3116 89 - 2.931600+2 0.000000+0 2 1 2 158 419 3116 90 - 2.916072-3 5.520419-5 419 3116 91 - 2.931600+2 0.000000+0 2 1 2 159 419 3116 92 - 2.246747-3 5.838941-5 419 3116 93 - 2.931600+2 0.000000+0 2 1 2 160 419 3116 94 - 1.955091-3 6.182715-5 419 3116 95 - 2.931600+2 0.000000+0 2 1 2 161 419 3116 96 - 1.953971-3 6.535788-5 419 3116 97 - 2.931600+2 0.000000+0 2 1 2 162 419 3116 98 - 1.951837-3 6.906651-5 419 3116 99 - 2.931600+2 0.000000+0 2 1 2 163 419 3116 100 - 1.955080-3 7.296640-5 419 3116 101 - 2.931600+2 0.000000+0 2 1 2 164 419 3116 102 - 9.766681-4 7.601726-5 419 3116 103 - 2.931600+2 0.000000+0 2 1 2 165 419 3116 104 - 9.893008-3 7.870570-5 419 3116 105 - 2.931600+2 0.000000+0 2 1 2 166 419 3116 106 - 1.537615+0 8.266587-5 419 3116 107 - 2.931600+2 0.000000+0 2 1 2 167 419 3116 108 - 5.083622+0 8.495841-5 419 3116 109 - 2.931600+2 0.000000+0 2 1 2 168 419 3116 110 - 8.848080+0 8.710670-5 419 3116 111 - 2.931600+2 0.000000+0 2 1 2 169 419 3116 112 - 6.806521+0 8.931636-5 419 3116 113 - 2.931600+2 0.000000+0 2 1 2 170 419 3116 114 - 2.304996+0 9.150547-5 419 3116 115 - 2.931600+2 0.000000+0 2 1 2 171 419 3116 116 - 3.559738-1 9.390944-5 419 3116 117 - 2.931600+2 0.000000+0 2 1 2 172 419 3116 118 - 3.382293-3 1.150159-4 419 3116 119 - 2.931600+2 0.000000+0 2 1 2 173 419 3116 120 - 1.693836-3 1.724094-4 419 3116 121 - 2.931600+2 0.000000+0 2 1 2 174 419 3116 122 - 1.691503-3 2.237834-4 419 3116 123 - 2.931600+2 0.000000+0 2 1 2 175 419 3116 124 - 8.453622-3 4.311041-4 419 3116 125 - 419 3 099999 - 4.007000+3 0.000000+0 1 1 0 175 419 3117 1 - 2.931600+2 0.000000+0 2 1 2 147 419 3117 2 - 1.814097-2 3.68689-11 419 3117 3 - 2.931600+2 0.000000+0 2 1 2 148 419 3117 4 - 1.594743-2 3.42744-10 419 3117 5 - 2.931600+2 0.000000+0 2 1 2 149 419 3117 6 - 1.387617-2 7.17865-10 419 3117 7 - 2.931600+2 0.000000+0 2 1 2 150 419 3117 8 - 8.164822-3 1.047521-9 419 3117 9 - 2.931600+2 0.000000+0 2 1 2 151 419 3117 10 - 3.774230-3 1.252253-9 419 3117 11 - 2.931600+2 0.000000+0 2 1 2 152 419 3117 12 - 1.015748-2 1.526654-9 419 3117 13 - 2.931600+2 0.000000+0 2 1 2 153 419 3117 14 - 8.535930-3 1.962348-9 419 3117 15 - 2.931600+2 0.000000+0 2 1 2 154 419 3117 16 - 7.082486-3 2.420301-9 419 3117 17 - 2.931600+2 0.000000+0 2 1 2 155 419 3117 18 - 5.799093-3 2.901675-9 419 3117 19 - 2.931600+2 0.000000+0 2 1 2 156 419 3117 20 - 4.681774-3 3.407698-9 419 3117 21 - 2.931600+2 0.000000+0 2 1 2 157 419 3117 22 - 3.723745-3 3.939601-9 419 3117 23 - 2.931600+2 0.000000+0 2 1 2 158 419 3117 24 - 2.916072-3 4.498667-9 419 3117 25 - 2.931600+2 0.000000+0 2 1 2 159 419 3117 26 - 2.246747-3 5.086303-9 419 3117 27 - 2.931600+2 0.000000+0 2 1 2 160 419 3117 28 - 1.955091-3 5.720527-9 419 3117 29 - 2.931600+2 0.000000+0 2 1 2 161 419 3117 30 - 1.953966-3 6.552699-9 419 3117 31 - 2.931600+2 0.000000+0 2 1 2 162 419 3117 32 - 1.951836-3 3.215895-8 419 3117 33 - 2.931600+2 0.000000+0 2 1 2 163 419 3117 34 - 1.955078-3 9.354937-8 419 3117 35 - 2.931600+2 0.000000+0 2 1 2 164 419 3117 36 - 9.765916-4 1.517276-7 419 3117 37 - 2.931600+2 0.000000+0 2 1 2 165 419 3117 38 - 9.893008-3 2.039064-7 419 3117 39 - 2.931600+2 0.000000+0 2 1 2 166 419 3117 40 - 1.531876+0 2.780390-7 419 3117 41 - 2.931600+2 0.000000+0 2 1 2 167 419 3117 42 - 5.083488+0 3.189335-7 419 3117 43 - 2.931600+2 0.000000+0 2 1 2 168 419 3117 44 - 8.848180+0 3.552196-7 419 3117 45 - 2.931600+2 0.000000+0 2 1 2 169 419 3117 46 - 6.806517+0 3.898507-7 419 3117 47 - 2.931600+2 0.000000+0 2 1 2 170 419 3117 48 - 2.304996+0 4.217656-7 419 3117 49 - 2.931600+2 0.000000+0 2 1 2 171 419 3117 50 - 3.504250-1 4.543129-7 419 3117 51 - 2.931600+2 0.000000+0 2 1 2 172 419 3117 52 - 3.382293-3 1.251311-3 419 3117 53 - 2.931600+2 0.000000+0 2 1 2 173 419 3117 54 - 1.693836-3 5.988800-3 419 3117 55 - 2.931600+2 0.000000+0 2 1 2 174 419 3117 56 - 1.691503-3 8.700235-3 419 3117 57 - 2.931600+2 0.000000+0 2 1 2 175 419 3117 58 - 8.453622-3 1.015458-2 419 3117 59 - 419 3 099999 - 0 0 0 0 - -1 0 0 0 From cc064b62413c84f00eeab545219c5092fbf1e0b3 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 9 Jul 2024 11:58:16 -0500 Subject: [PATCH 44/59] Making the file saving more versatile. --- src/DataLib/fendl32B_retrofit/groupr_tools.py | 24 ++++++++++++++++++- .../fendl32B_retrofit/tendl_preprocessing.py | 1 - 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 1ce63c5..c80befa 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -1,6 +1,7 @@ # Import packages import subprocess from logging_config import logger, LoggerWriter +import os # Define constants NENDF = 20 # unit for endf tape @@ -131,6 +132,26 @@ def groupr_input_file_writer(cards, MTs): f.write(format_card(card_num, card, MTs)) f.write(' 0/\nstop') +def set_gendf_saving(save_directory, element, A): + """ + Establish the save path for the GENDF file in the desired directory. + + Arguments: + save_directory (str): Folder in which to save the GENDF file. + element (str): Chemical symbol for element of interest. + A (str or int): Mass number for selected isotope. + + Returns: + gendf_path (str): File path to the newly created GENDF file. + """ + + # Create save_directory if it does not already exist + if not os.path.exists(save_directory): + os.makedirs(save_directory) + + gendf_path = f'{save_directory}/tendl_2017_{element}{A}.gendf' + return gendf_path + def run_njoy(cards, element, A): """ Use subprocess to run NJOY given a pre-written input card to convert a pair @@ -163,7 +184,8 @@ def run_njoy(cards, element, A): title_index = output.stdout.find(title) logger.info(f'\n{output.stdout[:title_index + len(title)]}\n') - gendf_path = f'./gendf_files/tendl_2017_{element}{A}.gendf' + save_directory = './gendf_files' + gendf_path = set_gendf_saving(save_directory, element, A) subprocess.run(['cp', 'tape31', gendf_path]) return gendf_path else: diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index 80d3b5a..b6e7f06 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -2,7 +2,6 @@ import csv import aiohttp import asyncio -import time import urllib.error import urllib.request import sys From 14c573012c0a1ed078372ad6d774aac66650d991 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Thu, 11 Jul 2024 16:54:15 -0500 Subject: [PATCH 45/59] Responding to a majority of the high-level comments from Tuesday's review. --- .../fendl32B_retrofit/activation_analysis.py | 195 +----------------- .../fendl32B_retrofit/fendl3_retrofit.py | 153 ++++++-------- src/DataLib/fendl32B_retrofit/groupr_tools.py | 53 ++++- .../fendl32B_retrofit/reaction_data.py | 179 ++++++++++++++++ .../fendl32B_retrofit/tendl_preprocessing.py | 159 ++++---------- 5 files changed, 347 insertions(+), 392 deletions(-) create mode 100644 src/DataLib/fendl32B_retrofit/reaction_data.py diff --git a/src/DataLib/fendl32B_retrofit/activation_analysis.py b/src/DataLib/fendl32B_retrofit/activation_analysis.py index 096aa58..bd8fa4e 100644 --- a/src/DataLib/fendl32B_retrofit/activation_analysis.py +++ b/src/DataLib/fendl32B_retrofit/activation_analysis.py @@ -3,177 +3,6 @@ import pandas as pd from tendl_preprocessing import extract_cross_sections -def count_emitted_particles(particle, emitted_particle_string): - """ - Count emitted particles from a reaction given a target particle - and the particles produced in a neutron activation reaction. - - Arguments: - particle (str): Name of the target particle produced in the reaction. - Options include n, p, alpha, d, t, and 3He, corresponding to - neutrons, protons, alpha particles, deuterons, tritons, and helium-3 nuclides. - emitted_particle_string (str): Particle product(s) of the neutron activation, - of the format 'p' for a single proton for example or '2n' for two neutrons etc. - - Returns: - number_str (int or None): Count of the target particle present in the product. - For particles not present, returns None rather than 0. - """ - - particle_index = emitted_particle_string.find(particle) - number_str = '' - for i in range(particle_index - 1, -1, -1): - if emitted_particle_string[i].isdigit(): - number_str = emitted_particle_string[i] + number_str - else: - break - - if number_str: - number_str = int(number_str) - elif particle in emitted_particle_string: - number_str = 1 - else: - number_str = None - - return number_str - -def isomer_check(emitted_particle_string): - """ - Check the isomeric status of a neutron-activated nucleus. - By the formatting conventions of ENDF reaction types, - if the string of a reaction product ends with a digit, - that signifies the excitation state of the nucleus, so - this function looks for and stores these values. - - Arguments: - emitted_particle_string (str): Particle product(s) of the neutron activation. - - Returns: - isomeric_state (int): Nuclear excitation level of the activated nucleus. - For a nucleus in the ground state, isomeric_state = 0. - """ - - last_digits_str = '' - for char in reversed(emitted_particle_string): - if char.isdigit(): - last_digits_str = char + last_digits_str - else: - break - isomeric_value = int(last_digits_str) if last_digits_str else 0 - return isomeric_value - -def nuclear_decay(A, nucleus_protons, emission_tuples): - """ - Reconfigure nucleus for nuclear decay during neutron activation - by adding in a single neutron and then subtracting the total number - of neutrons and protons (if any) emitted during the reaction from - the nucleus. - - Arguments: - A (int): Mass number for target isotope. - nucleus_protons (int): Atomic number for the target isotope, - namely the number of protons in the nucleus. - emission_tuples (list): List of all emitted particles for a given reaction, - in the form of tuples with the particle count as the first value - and the particle symbol as the second value. For example, a reaction that - emits one neutron and one proton will have - emission_tuples = [(1, 'n'), (1, 'p')]. - - Returns: - nucleus_neutrons (int): Updated count of neutrons in the residual nucleus. - nucleus_protons (int): Updated count of protons in the residual nucleus. - """ - - # Neutron capture - nucleus_neutrons = A - nucleus_protons + 1 - - for num_particle, particle in emission_tuples: - # Neutron emission - if particle == 'n': - nucleus_neutrons -= num_particle - # Proton emission - if particle == 'p': - nucleus_protons -= num_particle - # Deuteron (1 proton, 1 neutron) emission - if particle == 'd': - nucleus_neutrons -= num_particle - nucleus_protons -= num_particle - # Triton (1 proton, 2 neutrons) emission - if particle == 't': - nucleus_neutrons -= 2 * num_particle - nucleus_protons -= num_particle - # Helium-3 (2 protons, 1 neutron) emission - if particle == '3He': - nucleus_neutrons -= num_particle - nucleus_protons -= 2 * num_particle - # Alpha particle (2 protons, 2 neutrons) emission - if particle == 'α': - nucleus_neutrons -= 2 * num_particle - nucleus_protons -= 2 * num_particle - - return nucleus_neutrons, nucleus_protons - -def reaction_calculator(MT, mt_dict, pKZA): - """ - Calculate the products of a neutron activation reaction given - the parent nuclide's KZA and the selected reaction type (MT). - This calculation determines both the residual nucleus, as described by the - daughter KZA value (dKZA) and the emitted particle(s). - - Arguments: - MT (int): Unique identifier for the reaction type corresponding to a specific - reaction tabulated in the mt_table dictionary. - mt_dict (dict): Reference dictionary containing reaction information - for each MT number pre-defined in the ENDF manual. - (https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf) - pKZA (int or str): Parent KZA identifier of the format ZZAAAM, - where ZZ is the isotope's atomic number, AAA is the mass number, - and M is the isomeric state (0 if non-isomeric). - - Returns: - dKZA (str): KZA of the residual (daughter) nucleus. - emitted_particles (str): Name of the particles emitted from the reaction, - given as a single string. If multiple particles are emitted from the reaction, - then the emitted_particles would be written in the form "np", corresponding - to the emission of a neutorn and a proton. - """ - - try: - # Extract the parent nuclide properties from the pKZA - nucleus_protons = int(str(pKZA)[:2]) - A = int(str(pKZA)[2:5]) - - # Identify the particles emitted from the given reaction - reaction = mt_dict[str(MT)] - emitted_particles = reaction.split(',')[1][:-1] - - # Tally the counts of each emitted particle from the reaction - particle_types = ['n', 'd', 'α', 'p', 't', '3He', 'gamma'] - emission_tuples = [ - ( - count_emitted_particles(particle, emitted_particles), - particle - ) - for particle in particle_types - if count_emitted_particles(particle, emitted_particles) - ] - - # Reconfigure nucleus to account for changing nucleon counts - nucleus_neutrons, nucleus_protons = nuclear_decay(A, - nucleus_protons, - emission_tuples) - residual_A = str(nucleus_neutrons + nucleus_protons).zfill(3) - nucleus_protons = str(nucleus_protons).zfill(2) - M = isomer_check(emitted_particles) - if M != 0: - emitted_particles = emitted_particles[:-len(str(M))] - dKZA = f"{str(nucleus_protons)}{residual_A}{str(M)}" - return dKZA, emitted_particles - - except Exception as e: - logger.error(f"Error in reaction calculation for MT {MT}: {e}") - return None, None - def iterate_MTs(MTs, file_obj, mt_dict, pKZA): # Initialize lists cross_sections_by_MT = [] @@ -183,20 +12,18 @@ def iterate_MTs(MTs, file_obj, mt_dict, pKZA): # Extract data for each MT for MT in MTs: - try: - sigma_list = extract_cross_sections(file_obj, MT) - if not sigma_list: - continue - dKZA, emitted_particles = reaction_calculator(MT, mt_dict, pKZA) - if dKZA is None: - continue - cross_sections_by_MT.append(sigma_list) - dKZAs.append(dKZA) - emitted_particles_list.append(emitted_particles) - groups.append(len(sigma_list)) - except Exception as e: - logger.error(f"Error processing MT {MT}: {e}") + sigma_list = extract_cross_sections(file_obj, MT) + if not sigma_list: + continue + dKZA = pKZA - mt_dict[str(MT)]['delKZA'] + emitted_particles = mt_dict[str(MT)]['Emitted Particles'] + if dKZA is None: continue + cross_sections_by_MT.append(sigma_list) + dKZAs.append(dKZA) + emitted_particles_list.append(emitted_particles) + groups.append(len(sigma_list)) + # Store data in a Pandas DataFrame gendf_data = pd.DataFrame({ diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 6084a02..3983f0a 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -7,7 +7,7 @@ import argparse import asyncio import pandas as pd -import time +import reaction_data as rxd def fendl_args(): """ @@ -42,19 +42,17 @@ def fendl_args(): # Subparsers for 'I' and 'D' subparsers = parser.add_subparsers(dest='method', required=True) parser_I = subparsers.add_parser('I', help='''Local file input. - Note: This option should only be selected - if the user already has properly formatted - GENDF activation files that have been - processed using the NJOY GROUPR module for - a Vitmain-J group structure with a Vitamin-E - weight function.''') - parser_I.add_argument('--path', '-p', + Note: This option should only be + selected if the user already has + properly formatted GENDF activation + files that have been processed using + the NJOY GROUPR module for a + Vitmain-J group structure with a + Vitamin-E weight function.''') + parser_I.add_argument('--paths', '-p', required=True, + nargs= '+', help='Path to the local GENDF file.') - parser_I.add_argument('--isomer', '-m', - required=False, - default=None, - help = 'Isomeric state of the element.') parser_D = subparsers.add_parser('D', help='''Download TENDL/PENDF files from the TENDL 2017 neutron activation database.''') @@ -68,7 +66,8 @@ def fendl_args(): "m" after the mass number (i.e. 48m). To automatically iterate over all of the isotopes for the target element, - select "all" as the option for --A.''') + select "all" as the option for --A. + ''') args = parser.parse_args() return args @@ -78,26 +77,8 @@ def fendl_args(): sys.stdout = original_stdout sys.stderr = original_stderr -def initialize_dataframe(): - """ - Initialize an empty Pandas DataFrame in which to store extracted data from - TENDL 2017 files. - - Arguments: - None - - Returns: - None - """ - return pd.DataFrame({ - 'Parent KZA' : [], - 'Daughter KZA' : [], - 'Emitted Particles' : [], - 'Non-Zero Groups' : [], - 'Cross Sections' : [] - }) - -def handle_local_file_input(args, mt_dict): + +def handle_local_file_input(mt_dict, cumulative_data, gendf_paths = None, args = None): """ Method for extracting and analyzing data from preprocessed GENDF files that the user already has saved locally. Called when the argument @@ -109,23 +90,27 @@ def handle_local_file_input(args, mt_dict): mt_dict (dict): Dictionary formatted data structure for mt_table.csv """ - # Establish parameters from the user arguments - gendf_path = args.path - M = args.isomer.upper() if args.isomer else None + # Format gendf_paths parameter + if gendf_paths is None: + gendf_paths = args.paths + elif type(gendf_paths) is not list: + gendf_paths = [gendf_paths] - # Extract fundamental data from the GENDF file - pKZA = tpp.extract_gendf_pkza(gendf_path, M = M) - matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') + for gendf_path in gendf_paths: + # Extract fundamental data from the GENDF file + pKZA = tpp.extract_gendf_pkza(gendf_path) + matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') - logger.info(f"GENDF file path: {gendf_path}") - logger.info(f"Parent KZA (pKZA): {pKZA}") - logger.info(f'MTs: {MTs}') + logger.info(f"GENDF file path: {gendf_path}") + logger.info(f"Parent KZA (pKZA): {pKZA}") + logger.info(f'MTs: {MTs}') - # Extract and save specific data for each MT - gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) - return gendf_data + # Extract and save specific data for each MT + gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) + cumulative_data = pd.concat([cumulative_data, gendf_data], ignore_index= True) + return cumulative_data -def handle_download_file(args, mt_dict): +def handle_download_file(args, mt_dict, cumulative_df): """ Method for downloading ENDF/PENDF files from the TENDL 2017 database, using the NJOY GROUPR module to convert these to a group-wise file, @@ -149,39 +134,24 @@ def handle_download_file(args, mt_dict): A_vals = [A] # Iterate over all isotopes/isomers, as specified by arguments + gendf_paths = [] for A in A_vals: - try: - endf_path = tpp.download_tendl(element, A, 'endf') - pendf_path = tpp.download_tendl(element, A, 'pendf') - - material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') - - card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, - element, A, mt_dict) - groupr_tools.groupr_input_file_writer(card_deck, MTs) - - gendf_path = groupr_tools.run_njoy(card_deck, element, A) - - M = 'M' if 'm' in A else None - pKZA = tpp.extract_gendf_pkza(gendf_path, M = M) - - # Recalibrate MT list after GENDF conversion - matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') - - groupr_tools.njoy_file_cleanup() - - logger.info(f"GENDF file path: {gendf_path}") - logger.info(f"Parent KZA (pKZA): {pKZA}") - logger.info(f'MTs: {MTs}') - - # Extract and save specific data for each MT - gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) - - logger.info(f'Finished iterating for {element}-{A}') - except Exception as e: - logger.error(e) + endf_path = tpp.download_tendl(element, A, 'endf') + pendf_path = tpp.download_tendl(element, A, 'pendf') + + material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') + + card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, + element, A, mt_dict) + groupr_tools.groupr_input_file_writer(card_deck, MTs) + + gendf_path = groupr_tools.run_njoy(card_deck, element, A, material_id) + gendf_paths.append(gendf_path) + + groupr_tools.njoy_file_cleanup() + logger.info(f'Finished iterating for {element}-{A} \n \n') - return gendf_data + return gendf_paths def fendl3_2b_retrofit(): """ @@ -190,21 +160,22 @@ def fendl3_2b_retrofit(): # Initialize arguments, DataFrame to store data, and load in MT reference args = fendl_args() - cumulative_df = initialize_dataframe() - mt_dict = tpp.load_csv('mt_table.csv') - - # Set conditionals for local file input - if args.method == 'I': - gendf_data = handle_local_file_input(args, mt_dict) - cumulative_df = pd.concat([cumulative_df, gendf_data], ignore_index=True) - - # Set conditionals for file download - elif args.method == 'D': - gendf_data = handle_download_file(args, mt_dict) - cumulative_df = pd.concat([cumulative_df, gendf_data], ignore_index=True) - + gendf_paths = [] + cumulative_data = rxd.initialize_dataframe() + mt_dict = rxd.process_mt_table('mt_table.csv') + + # Execute file handling + if args.method == 'D': + gendf_paths = handle_download_file(args, mt_dict, cumulative_data) + print(gendf_paths) + args = None + cumulative_data = handle_local_file_input(mt_dict, + cumulative_data, + gendf_paths = gendf_paths, + args = args) + # Save to CSV - cumulative_df.to_csv(f'gendf_data.csv', index=False) + cumulative_data.to_csv('gendf_data.csv', index=False) logger.info("Saved gendf_data.csv") # Execute main() function based on arguments diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index c80befa..833f39c 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -106,7 +106,7 @@ def groupr_input_file_format(matb, MTs, element, A, mt_dict): mtd = MTs # sections to be processed cards[9] = [] for MT in MTs: - mtname = mt_dict[str(MT)] # description of section to be processed + mtname = mt_dict[str(MT)]['Reaction'] # description of section to be processed card9_line = f'{MFD} {MT} "{mtname}"' cards[9].append(card9_line) cards[10] = [MATD] @@ -151,8 +151,52 @@ def set_gendf_saving(save_directory, element, A): gendf_path = f'{save_directory}/tendl_2017_{element}{A}.gendf' return gendf_path - -def run_njoy(cards, element, A): + +def text_insertion(string, identifier, new_text, file_lines): + index = string.rfind(identifier) + line_number = string[:index].count('\n') + file_lines.insert(line_number + 1, new_text) + return file_lines + +def ensure_gendf_markers(gendf_path, matb): + """ + Edit the GENDF files produced from an NJOY GROUPR run to include file and + section records that are not automatically written out to the file by + NJOY. Missing these records will not cause errors, but will raise + messages when they are read by ENDFtk, which expects these markers, so + this method ensures that they are present. + """ + + # In ENDF-6 formatted files, there are 66 lines of whitespace before + # the values in record-keeping lines + whitespace = ' ' * 66 + + # Define identifiers and corresponding new lines + mf1_identifier = f'{matb} 1451 ' + mf3_identifier = f'{matb} 3 099999' + mf1_SEND_RECORD = f'{whitespace}{matb} 1 099999' + mf3_FEND_RECORD = f'{whitespace}{matb} 0 0 0' + + with open(gendf_path, 'r') as gendf_file: + file_str = gendf_file.read() + file_lines = file_str.splitlines() + + updates = [ + (mf3_identifier, mf3_FEND_RECORD), + (mf1_identifier, mf1_SEND_RECORD) + ] + + for identifier, new_line in updates: + last_line_index = file_str.rfind(identifier) + line_number = file_str[:last_line_index].count('\n') + file_lines.insert(line_number + 1, new_line) + + new_file_str = '\n'.join(file_lines) + '\n' + + with open(gendf_path, 'w') as gendf_file: + gendf_file.write(new_file_str) + +def run_njoy(cards, element, A, matb): """ Use subprocess to run NJOY given a pre-written input card to convert a pair of ENDF and PENDF files to a GENDF file and save it locally. @@ -163,6 +207,7 @@ def run_njoy(cards, element, A): A (str or int): Mass number for selected isotope. If the target is an isomer, "m" after the mass number, so A must be input as a string. + matb (int): Unique material ID for the material in the files. Returns: gendf_path (str): File path to the newly created GENDF file. @@ -187,6 +232,8 @@ def run_njoy(cards, element, A): save_directory = './gendf_files' gendf_path = set_gendf_saving(save_directory, element, A) subprocess.run(['cp', 'tape31', gendf_path]) + ensure_gendf_markers(gendf_path, matb) + return gendf_path else: logger.error(result.stderr) diff --git a/src/DataLib/fendl32B_retrofit/reaction_data.py b/src/DataLib/fendl32B_retrofit/reaction_data.py new file mode 100644 index 0000000..550d99c --- /dev/null +++ b/src/DataLib/fendl32B_retrofit/reaction_data.py @@ -0,0 +1,179 @@ +import csv +from numpy import array +import pandas as pd + +def initialize_dataframe(): + """ + Initialize an empty Pandas DataFrame in which to store extracted data from + TENDL 2017 files. + + Arguments: + None + + Returns: + None + """ + return pd.DataFrame({ + 'Parent KZA' : [], + 'Daughter KZA' : [], + 'Emitted Particles' : [], + 'Non-Zero Groups' : [], + 'Cross Sections' : [] + }) + +def count_emitted_particles(particle, emitted_particle_string): + """ + Count emitted particles from a reaction given a target particle + and the particles produced in a neutron activation reaction. + + Arguments: + particle (str): Name of the target particle produced in the reaction. + Options include n, p, alpha, d, t, and 3He, corresponding to + neutrons, protons, alpha particles, deuterons, tritons, and helium-3 nuclides. + emitted_particle_string (str): Particle product(s) of the neutron activation, + of the format 'p' for a single proton for example or '2n' for two neutrons etc. + + Returns: + number_str (int or None): Count of the target particle present in the product. + For particles not present, returns None rather than 0. + """ + + particle_index = emitted_particle_string.find(particle) + number_str = '' + for i in range(particle_index - 1, -1, -1): + if emitted_particle_string[i].isdigit(): + number_str = emitted_particle_string[i] + number_str + else: + break + + if number_str: + number_str = int(number_str) + elif particle in emitted_particle_string: + number_str = 1 + else: + number_str = None + + return number_str + +def isomer_check(emitted_particle_string): + """ + Check the isomeric status of a neutron-activated nucleus. + By the formatting conventions of ENDF reaction types, + if the string of a reaction product ends with a digit, + that signifies the excitation state of the nucleus, so + this function looks for and stores these values. + + Arguments: + emitted_particle_string (str): Particle product(s) of the neutron activation. + + Returns: + isomeric_state (int): Nuclear excitation level of the activated nucleus. + For a nucleus in the ground state, isomeric_state = 0. + """ + + last_digits_str = '' + for char in reversed(emitted_particle_string): + if char.isdigit(): + last_digits_str = char + last_digits_str + else: + break + isomeric_value = int(last_digits_str) if last_digits_str else 0 + return isomeric_value + +def emission_breakdown(emitted_particles): + """ + Identify the particles and their respective counts from a particular + nuclear decay in response to neutron activation. These tallies are + saved in a dictionary with the name of the particles as the keys. + + Arguments: + emitted_particles (str): Particle product(s) of a neutron activation + reaction formatted in a singular string (i.e. np for a + (neutron, proton) emission. + + Returns: + emission_dict (dict): Dictionary containing each individual particle + type and their respetive counts. For an np emission, this would + read out as {'n': 1, 'p': 1}. + """ + + particle_types = ['n', 'd', 'α', 'p', 't', '3He', 'gamma'] + emission_dict = { + particle : count_emitted_particles(particle, emitted_particles) + for particle in particle_types + if particle in emitted_particles + } + return emission_dict + +def nucleon_changes(emission_dict): + """ + Calculate the change in neutrons and protons in a nucleus in response to + neutron activation and given a particular set of emitted particles. + + Arguments: + emission_dict (dict): Dictionary containing each individual particle + type in an emission from a nuclear decay and their respective + counts. For an np emission, this would read out as + {'n': 1, 'p': 1}. + + Returns: + NP_change (numpy.array): A one-dimensional array indicating the net + change in neutrons and protons in a nucleus as a result of neutron + activation and subsequent decay. The array is in the format of + array([neutron_change, proton_change]). + """ + + # emitted delta N delta P + NP_change = array([ 1 , 0 ]) # neutron activation + NP_dict = {'n' : array([-1 , 0 ]), # neutron emission + 'p' : array([ 0 , -1 ]), # proton emission + 'd' : array([-1 , -1 ]), # deuteron emission + 't' : array([-2 , -1 ]), # triton emission + '3He' : array([-1 , -2 ]), # helium-3 emission + 'α' : array([-2 , -2 ]), # alpha emission + } + + for particle, count in emission_dict.items(): + NP_change += count * NP_dict[particle] + + return NP_change + +def process_mt_table(csv_path): + """ + Load in the mt_table.csv file which contains Table B.1 - + "Reaction Type Numbers MT" from the ENDF-6 manual which can be found + at https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf. + Given this, calculate the resultant change in KZA associated with each + MT value in the table and tally the particle emissions associated with + these reactions. Store all of this data in a dictionary of the format: + {'MT' : {'Reaction' : (z , emission), + 'delKZA' : change_in_KZA, + 'Emitted Particles' : string_of_particles + } + } + + Arguments: + csv_path (str): File path to mt_table.csv + This should be in the same repository. + + Returns: + mt_dict (dict): Dictionary formatted data structure for mt_table.csv, + along with changes in KZA and emitted_particles. + """ + + mt_dict = {} + + with open(csv_path, 'r') as f: + csv_reader = csv.DictReader(f) + for row in csv_reader: + emitted_particles = row['Reaction'].split(',')[1][:-1] + emission_dict = emission_breakdown(emitted_particles) + change_N, change_P = nucleon_changes(emission_dict) + M = isomer_check(emitted_particles) + mt_dict[row['MT']] = { + 'Reaction' : row['Reaction'], + 'delKZA' : (change_P * 1000 + change_P + change_N) * 10 + M, + 'Emitted Particles' : emitted_particles + } + + return mt_dict \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index b6e7f06..a070319 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -1,5 +1,4 @@ # Import packages -import csv import aiohttp import asyncio import urllib.error @@ -13,26 +12,6 @@ # Define constant(s) TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' -def load_csv(csv_path): - """ - Load in the mt_table.csv file and store it in a dictionary. - - Arguments: - csv_path (str): File path to mt_table.csv - This should be in the same repository. - - Returns: - mt_dict (dict): Dictionary formatted data structure for mt_table.csv - """ - mt_dict = {} - - with open(csv_path, 'r') as f: - csv_reader = csv.DictReader(f) - for row in csv_reader: - mt_dict[row['MT']] = row['Reaction'] - - return mt_dict - async def fetch(session, url): """ Asynchronously fetch the content from the URL using the provided session. @@ -108,9 +87,12 @@ async def identify_tendl_isotopes(element, concurrency_limit = 50): tendl_task = fetch_with_sem(semaphore, session, tendl_url) pendf_task = fetch_with_sem(semaphore, session, pendf_url) - tasks.append((tendl_task, pendf_task, tendl_url, pendf_url, A_str)) + tasks.append((tendl_task, pendf_task, + tendl_url, pendf_url, A_str)) - results = await asyncio.gather(*[asyncio.gather(tendl_task, pendf_task) for tendl_task, pendf_task, _, _, _ in tasks]) + results = await asyncio.gather(*[asyncio.gather(tendl_task, + pendf_task) + for tendl_task, pendf_task, _, _, _ in tasks]) for (tendl_result, pendf_result), (tendl_task, pendf_task, tendl_url, pendf_url, A_str) in zip(results, tasks): if tendl_result and pendf_result: @@ -159,7 +141,6 @@ def download_tendl(element, A, filetype, save_path = None): # Ensure that A is properly formatted A = A.zfill(4) if 'm' in A else str(A).zfill(3) - # Create a dictionary to generalize formatting for both ENDF and PENDF files file_handling = {'endf' : {'ext': 'tendl', 'tape_num': 20}, 'pendf' : {'ext': 'pendf', 'tape_num': 21}} @@ -169,11 +150,9 @@ def download_tendl(element, A, filetype, save_path = None): download_url = TENDL_GEN_URL + isotope_component + ext logger.info(f'{filetype.upper()} URL: {download_url}') - # Define a save path for the file if there is not one already specified if save_path is None: save_path = f'tape{file_handling[filetype.lower()]["tape_num"]}' - # Conditionally downloa temp_file = urllib_download(download_url, filetype) with open(save_path, 'w') as f: @@ -181,7 +160,7 @@ def download_tendl(element, A, filetype, save_path = None): return save_path -def extract_gendf_pkza(gendf_path, M=None): +def extract_gendf_pkza(gendf_path): """ Read in and parse the contents of a GENDF file to construct the parent KZA. KZA values are defined as ZZAAAM, where ZZ is the isotope's atomic number, @@ -201,52 +180,13 @@ def extract_gendf_pkza(gendf_path, M=None): first_line = f.readline() logger.info(f"First line of GENDF file: {first_line}") Z, element, A = first_line.split('-')[:3] - A = A.split(' ')[0] - if 'm' in A: - m_index = A.find('m') - A = A[:m_index] - M = str(str(M).count('M')) or '0' - pKZA = Z.zfill(2) + A.zfill(3) + M + + Z = int(Z) + M = 1 if 'm' in A.lower() else 0 + A = int(A.lower().split(' ')[0].split('m')[0]) + pKZA = (Z * 1000 + A) * 10 + M return pKZA -@contextlib.contextmanager -def redirect_ENDFtk_output(): - """ - Force ENDFtk-specific output to the logger instead of the terminal. - ENDFtk prompts a number of warnings, which would not otherwise redirect - to the logger without a more strong-armed method, and this function only - needs to be called when explicitly making use of the ENDFtk module. - - Arguments: - None - - Returns: - None - """ - - # Redirect stdout and stderr to logger - logger_stdout = LoggerWriter(logger.info) - logger_stderr = LoggerWriter(logger.error) - - with open(os.devnull, 'w') as fnull: - old_stdout = os.dup(1) - old_stderr = os.dup(2) - # Suppress terminal stdout readout - os.dup2(fnull.fileno(), 1) - - sys.stdout = logger_stdout - sys.stderr = logger_stderr - try: - yield - finally: - os.dup2(old_stdout, 1) - os.dup2(old_stderr, 2) - os.close(old_stdout) - os.close(old_stderr) - # Reset stdout and stderr to default - sys.stdout = sys.__stdout__ - sys.stderr = sys.__stderr__ - def extract_endf_specs(path, filetype): """ Extract the material ID and MT numbers from an ENDF or GENDF file. @@ -256,36 +196,27 @@ def extract_endf_specs(path, filetype): filetype (str): Either ENDF or GENDF (case insensitive) Returns: - matb (int): Unique material ID extracted from the file. - MTs (list): List of reaction types (MT's) present in the file. - file (ENDFtk.tree.File or None): ENDFtk file object containing the contents - for a specific material's cross-section data. - Only returns the file for GENDF filetypes. - """ - - with redirect_ENDFtk_output(): - # Read in ENDF tape using ENDFtk - tape = ENDFtk.tree.Tape.from_file(path) - - # Determine the material ID - mat_ids = tape.material_numbers - matb = mat_ids[0] - - # Set MF for cross sections - xs_MF = 3 - - # Extract out the file - file = tape.material(matb).file(xs_MF) - - # Extract the MT numbers that are present in the file - MTs = [MT.MT for MT in file.sections.to_list()] - - filetype = filetype.lower() - return_values = { - 'endf': (matb, MTs), - 'gendf': (matb, MTs, file) - } - return return_values.get(filetype) + endf_specs (list): List containing the following values from the file: + matb (int): Unique material ID extracted from the file. + MTs (list): List of reaction types (MT's) present in the file. + file (ENDFtk.tree.File or None): ENDFtk file object containing the + contents for a specific material's cross-section data. + Only returns the file for GENDF filetypes. + """ + + tape = ENDFtk.tree.Tape.from_file(path) + matb = tape.material_numbers[0] + # Set MF for cross sections + xs_MF = 3 + file = tape.material(matb).file(xs_MF) + # Extract the MT numbers that are present in the file + MTs = [MT.MT for MT in file.sections.to_list()] + + endf_specs = [matb, MTs] + if filetype.lower() == 'gendf': + endf_specs.append(file) + + return (endf_specs) def extract_cross_sections(file, MT): """ @@ -304,16 +235,16 @@ def extract_cross_sections(file, MT): the function will just return an empty list. """ - try: - section = file.section(MT).content - lines = section.split('\n')[2:-2:2] - sigma_list = [] - for line in lines: - sigma = line.split(' ')[2] - sign = 1 if '+' in sigma else -1 - mantissa, exponent = sigma.split('+') if sign == 1 else sigma.split('-') - sigma_list.append(float(mantissa) * (10 ** (sign * int(exponent)))) - return sigma_list - except Exception as e: - logger.error(f"Error extracting cross sections for MT {MT}: {e}") - return [] \ No newline at end of file + section = file.section(MT).content + + # Only every 2nd line starting at the 3rd line has cross-section data. + lines = section.split('\n')[2:-2:2] + + # Extract the 3rd token and convert to more conventional string + # representation of a float + sigma_list = [ + float(line.split(' ')[2].replace('+','E+').replace('-','E-')) + for line in lines + ] + + return sigma_list \ No newline at end of file From 95815b2f0403487b7a1d8d1f59623892baa2f399 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Thu, 11 Jul 2024 16:58:50 -0500 Subject: [PATCH 46/59] Fixing docstring for ensure_gendf_markers() function. --- src/DataLib/fendl32B_retrofit/groupr_tools.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 833f39c..ff00987 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -164,7 +164,17 @@ def ensure_gendf_markers(gendf_path, matb): section records that are not automatically written out to the file by NJOY. Missing these records will not cause errors, but will raise messages when they are read by ENDFtk, which expects these markers, so - this method ensures that they are present. + this method ensures that they are present. Edits will only be made if + the SEND record for MF1 or the FEND record for MF3 are not present. + The formatting for these records can be found at: + https://t2.lanl.gov/nis/endf/intro06.html + + Arguments: + gendf_path (str): File path to the newly created GENDF file. + matb (int): Unique material ID for the material in the GENDF file. + + Returns: + None """ # In ENDF-6 formatted files, there are 66 lines of whitespace before From a5997b5b4c7dacaeb7be35397122cc05ba20cff6 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 12 Jul 2024 11:37:09 -0500 Subject: [PATCH 47/59] Improving isotope identification methods. --- src/DataLib/fendl32B_retrofit/fendl3_retrofit.py | 4 ++-- src/DataLib/fendl32B_retrofit/groupr_tools.py | 1 + src/DataLib/fendl32B_retrofit/tendl_preprocessing.py | 3 --- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 3983f0a..921ed60 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -129,7 +129,7 @@ def handle_download_file(args, mt_dict, cumulative_df): A = args.A if A == 'all': A_vals = asyncio.run(tpp.identify_tendl_isotopes(element)) - logger.info(f'All isotopes of {element} (by mass number): {A_vals}') + logger.info(f'All isotopes of {element} (by mass number) in the TENDL database: {A_vals}') else: A_vals = [A] @@ -147,7 +147,7 @@ def handle_download_file(args, mt_dict, cumulative_df): gendf_path = groupr_tools.run_njoy(card_deck, element, A, material_id) gendf_paths.append(gendf_path) - + groupr_tools.njoy_file_cleanup() logger.info(f'Finished iterating for {element}-{A} \n \n') diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index ff00987..455d8bd 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -184,6 +184,7 @@ def ensure_gendf_markers(gendf_path, matb): # Define identifiers and corresponding new lines mf1_identifier = f'{matb} 1451 ' mf3_identifier = f'{matb} 3 099999' + matb = str(matb).zfill(4) mf1_SEND_RECORD = f'{whitespace}{matb} 1 099999' mf3_FEND_RECORD = f'{whitespace}{matb} 0 0 0' diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index a070319..c069c73 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -3,11 +3,8 @@ import asyncio import urllib.error import urllib.request -import sys from logging_config import logger, LoggerWriter import ENDFtk -import contextlib -import os # Define constant(s) TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' From f83a6461cec650e72d8e3c3eaecd77f694c0258c Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 12 Jul 2024 11:37:46 -0500 Subject: [PATCH 48/59] Improving isotope identification methods. --- .../fendl32B_retrofit/tendl_preprocessing.py | 77 +++++++------------ 1 file changed, 27 insertions(+), 50 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index c069c73..7889343 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -1,15 +1,17 @@ # Import packages import aiohttp import asyncio +from bs4 import BeautifulSoup import urllib.error import urllib.request from logging_config import logger, LoggerWriter import ENDFtk + # Define constant(s) -TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017/neutron_file/' +TENDL_GEN_URL = 'https://tendl.web.psi.ch/tendl_2017' -async def fetch(session, url): +async def fetch_and_parse_html(session, url): """ Asynchronously fetch the content from the URL using the provided session. @@ -23,37 +25,15 @@ async def fetch(session, url): signified by status code 200. Returns None if the request is unsuccessful or an error occurs. """ + async with session.get(url) as response: + if response.status == 200: + html = await response.text() + soup = BeautifulSoup(html, 'html.parser') + links = soup.find_all('a') + return [link.get('href') for link in links if link.get('href')] + return [] - try: - async with session.get(url) as response: - if response.status == 200: - return await response.text() - else: - return None - except aiohttp.ClientError: - return None - -async def fetch_with_sem(semaphore, session, url): - """ - Use an asyncio semaphore to call the fetch() function for a specific URL. - - Arguments: - semaphore (asyncio.locks.Semaphore): A semaphore to limit the number of - concurrent requests. - session (aiohttp.client.ClientSession): Aiohttp session to use for making - the request. - url (str): The URL from which to fetch content. - - Returns: - str or None: The content of the URL as a string if the request is successful, - signified by status code 200. Returns None if the request is unsuccessful - or an error occurs. - """ - - async with semaphore: - return await fetch(session, url) - -async def identify_tendl_isotopes(element, concurrency_limit = 50): +async def identify_tendl_isotopes(element): """ Use asyncio and aiohttp to iterate over all possible mass numbers for a given element to identify all of its isotopes and isomers in the TENDL database. @@ -62,38 +42,35 @@ async def identify_tendl_isotopes(element, concurrency_limit = 50): element (str): Chemical symbol for element of interest (i.e. Ti). concurrency_limit (int, optional): The maximum number of concurrent processes or sessions that can be handled at once. + + Returns: + A_vals (list): List of all of the mass numbers of isotopes that have + data stored in both ENDF (TENDL) and PENDF files in the TENDL 2017 + nuclear database. """ - A_vals = [] - semaphore = asyncio.Semaphore(concurrency_limit) - async with aiohttp.ClientSession() as session: tasks = [] - # Iterate over all mass numbers possible in the TENDL database for A in range(1, 292): - # Iterate over each number twice to check for isomers for i in range(2): A_str = str(A).zfill(3) if i == 1: A_str += 'm' - isotope_component = f'{element}/{element}{A_str}/lib/endf/n-{element}{A_str}.' + navigation_page_url = f'{TENDL_GEN_URL}/neutron_html/{element}/Neutron{element}{str(A).zfill(2)}.html' + isotope_component = f'/neutron_file/{element}/{element}{A_str}/lib/endf/n-{element}{A_str}.' tendl_url = TENDL_GEN_URL + isotope_component + 'tendl' pendf_url = TENDL_GEN_URL + isotope_component + 'pendf' - tendl_task = fetch_with_sem(semaphore, session, tendl_url) - pendf_task = fetch_with_sem(semaphore, session, pendf_url) - - tasks.append((tendl_task, pendf_task, - tendl_url, pendf_url, A_str)) + tasks.append((navigation_page_url, tendl_url, pendf_url, A_str)) - results = await asyncio.gather(*[asyncio.gather(tendl_task, - pendf_task) - for tendl_task, pendf_task, _, _, _ in tasks]) + # Execute tasks and gather results + for navigation_page_url, tendl_url, pendf_url, A_str in tasks: + nav_urls = await fetch_and_parse_html(session, navigation_page_url) - for (tendl_result, pendf_result), (tendl_task, pendf_task, tendl_url, pendf_url, A_str) in zip(results, tasks): - if tendl_result and pendf_result: + if tendl_url in nav_urls and pendf_url in nav_urls: A_vals.append(A_str) + print(A_str) return A_vals @@ -142,7 +119,7 @@ def download_tendl(element, A, filetype, save_path = None): 'pendf' : {'ext': 'pendf', 'tape_num': 21}} # Construct the filetype and isotope specific URL - isotope_component = f'{element}/{element}{A}/lib/endf/n-{element}{A}.' + isotope_component = f'/neutron_file/{element}/{element}{A}/lib/endf/n-{element}{A}.' ext = file_handling[filetype.lower()]['ext'] download_url = TENDL_GEN_URL + isotope_component + ext logger.info(f'{filetype.upper()} URL: {download_url}') @@ -170,7 +147,7 @@ def extract_gendf_pkza(gendf_path): Defaults to None and will be otherwise defined internally. Returns: - pKZA (str): Parent KZA identifier. + pKZA (int): Parent KZA identifier. """ with open(gendf_path, 'r') as f: From 98f23c3651acf9a59c2f7b93c82084a07a37e6fc Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 12 Jul 2024 11:52:33 -0500 Subject: [PATCH 49/59] Simplifying logging method and usage. --- .../fendl32B_retrofit/activation_analysis.py | 1 - .../fendl32B_retrofit/fendl3_retrofit.py | 93 ++++++++----------- src/DataLib/fendl32B_retrofit/groupr_tools.py | 2 +- .../fendl32B_retrofit/logging_config.py | 20 ++-- .../fendl32B_retrofit/tendl_preprocessing.py | 3 +- 5 files changed, 53 insertions(+), 66 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/activation_analysis.py b/src/DataLib/fendl32B_retrofit/activation_analysis.py index bd8fa4e..5cbe47c 100644 --- a/src/DataLib/fendl32B_retrofit/activation_analysis.py +++ b/src/DataLib/fendl32B_retrofit/activation_analysis.py @@ -1,5 +1,4 @@ # Import packages -from logging_config import logger, LoggerWriter import pandas as pd from tendl_preprocessing import extract_cross_sections diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 921ed60..488f418 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -28,55 +28,40 @@ def fendl_args(): specified arguments for executing the program. """ - # Temporarily reset stdout and stderr to the defaults - # so that arg messages (i.e. --help) print out to terminal - original_stdout = sys.stdout - original_stderr = sys.stderr - - try: - sys.stdout = sys.__stdout__ - sys.stderr = sys.__stderr__ - - parser = argparse.ArgumentParser() - - # Subparsers for 'I' and 'D' - subparsers = parser.add_subparsers(dest='method', required=True) - parser_I = subparsers.add_parser('I', help='''Local file input. - Note: This option should only be - selected if the user already has - properly formatted GENDF activation - files that have been processed using - the NJOY GROUPR module for a - Vitmain-J group structure with a - Vitamin-E weight function.''') - parser_I.add_argument('--paths', '-p', - required=True, - nargs= '+', - help='Path to the local GENDF file.') - parser_D = subparsers.add_parser('D', help='''Download TENDL/PENDF files - from the TENDL 2017 neutron activation - database.''') - parser_D.add_argument('--element', '-e', - required=True, - help= 'Chemical symbol for selected element (i.e. Ti).') - parser_D.add_argument('--A', '-a', - required=True, - help= '''Mass number for selected isotope (i.e. 48). - If the target is an isomer, type - "m" after the mass number (i.e. 48m). - To automatically iterate over all of - the isotopes for the target element, - select "all" as the option for --A. - ''') - - args = parser.parse_args() - return args - - finally: - # Restore stdout and stderr to the logger - sys.stdout = original_stdout - sys.stderr = original_stderr - + parser = argparse.ArgumentParser() + + # Subparsers for 'I' and 'D' + subparsers = parser.add_subparsers(dest='method', required=True) + parser_I = subparsers.add_parser('I', help='''Local file input. + Note: This option should only be + selected if the user already has + properly formatted GENDF activation + files that have been processed using + the NJOY GROUPR module for a + Vitmain-J group structure with a + Vitamin-E weight function.''') + parser_I.add_argument('--paths', '-p', + required=True, + nargs= '+', + help='Path to the local GENDF file.') + parser_D = subparsers.add_parser('D', help='''Download TENDL/PENDF files + from the TENDL 2017 neutron activation + database.''') + parser_D.add_argument('--element', '-e', + required=True, + help= 'Chemical symbol for selected element (i.e. Ti).') + parser_D.add_argument('--A', '-a', + required=True, + help= '''Mass number for selected isotope (i.e. 48). + If the target is an isomer, type + "m" after the mass number (i.e. 48m). + To automatically iterate over all of + the isotopes for the target element, + select "all" as the option for --A. + ''') + + args = parser.parse_args() + return args def handle_local_file_input(mt_dict, cumulative_data, gendf_paths = None, args = None): """ @@ -129,7 +114,9 @@ def handle_download_file(args, mt_dict, cumulative_df): A = args.A if A == 'all': A_vals = asyncio.run(tpp.identify_tendl_isotopes(element)) - logger.info(f'All isotopes of {element} (by mass number) in the TENDL database: {A_vals}') + logger.info( + f'All isotopes of {element} in the TENDL database: {A_vals}' + ) else: A_vals = [A] @@ -153,6 +140,8 @@ def handle_download_file(args, mt_dict, cumulative_df): return gendf_paths +############################################################################## + def fendl3_2b_retrofit(): """ Main method when run as a command line script. @@ -167,7 +156,6 @@ def fendl3_2b_retrofit(): # Execute file handling if args.method == 'D': gendf_paths = handle_download_file(args, mt_dict, cumulative_data) - print(gendf_paths) args = None cumulative_data = handle_local_file_input(mt_dict, cumulative_data, @@ -178,6 +166,7 @@ def fendl3_2b_retrofit(): cumulative_data.to_csv('gendf_data.csv', index=False) logger.info("Saved gendf_data.csv") -# Execute main() function based on arguments +############################################################################## + if __name__ == '__main__': fendl3_2b_retrofit() \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 455d8bd..247b925 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -1,6 +1,6 @@ # Import packages import subprocess -from logging_config import logger, LoggerWriter +from logging_config import logger import os # Define constants diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py index a62c1ed..de9e082 100644 --- a/src/DataLib/fendl32B_retrofit/logging_config.py +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -13,16 +13,16 @@ logger = logging.getLogger(__name__) # Redirect stdout and stderr to the logger -class LoggerWriter: - def __init__(self, level): - self.level = level +#class LoggerWriter: +# def __init__(self, level): +# self.level = level - def write(self, message): - if message.strip(): # Avoid logging empty messages - self.level(message.strip()) +# def write(self, message): +# if message.strip(): # Avoid logging empty messages +# self.level(message.strip()) - def flush(self): - pass # No need to flush, but method must be defined +# def flush(self): +# pass # No need to flush, but method must be defined -sys.stdout = LoggerWriter(logger.info) -sys.stderr = LoggerWriter(logger.error) \ No newline at end of file +#sys.stdout = LoggerWriter(logger.info) +#sys.stderr = LoggerWriter(logger.error) \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index 7889343..dfcaf99 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -4,7 +4,7 @@ from bs4 import BeautifulSoup import urllib.error import urllib.request -from logging_config import logger, LoggerWriter +from logging_config import logger import ENDFtk @@ -70,7 +70,6 @@ async def identify_tendl_isotopes(element): if tendl_url in nav_urls and pendf_url in nav_urls: A_vals.append(A_str) - print(A_str) return A_vals From 498c82459371a678d3aadae1f3ea5f6b3f4ae7aa Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Fri, 12 Jul 2024 11:53:19 -0500 Subject: [PATCH 50/59] One more logging fix. --- .../fendl32B_retrofit/logging_config.py | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py index de9e082..656bb78 100644 --- a/src/DataLib/fendl32B_retrofit/logging_config.py +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -1,6 +1,5 @@ # Import packages import logging -import sys # Configure logging logging.basicConfig( @@ -10,19 +9,4 @@ filemode= 'w' ) -logger = logging.getLogger(__name__) - -# Redirect stdout and stderr to the logger -#class LoggerWriter: -# def __init__(self, level): -# self.level = level - -# def write(self, message): -# if message.strip(): # Avoid logging empty messages -# self.level(message.strip()) - -# def flush(self): -# pass # No need to flush, but method must be defined - -#sys.stdout = LoggerWriter(logger.info) -#sys.stderr = LoggerWriter(logger.error) \ No newline at end of file +logger = logging.getLogger(__name__) \ No newline at end of file From a807f1e6fba361edad7d37cbfad142a52cfc4553 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 16 Jul 2024 11:34:45 -0500 Subject: [PATCH 51/59] Completing response to last review and making arg processing more modular. --- .../fendl32B_retrofit/activation_analysis.py | 36 -- .../fendl32B_retrofit/fendl3_retrofit.py | 405 ++++++++++++++---- src/DataLib/fendl32B_retrofit/groupr_tools.py | 27 +- .../fendl32B_retrofit/logging_config.py | 135 +++++- .../fendl32B_retrofit/reaction_data.py | 54 ++- .../fendl32B_retrofit/tendl_preprocessing.py | 18 +- 6 files changed, 512 insertions(+), 163 deletions(-) delete mode 100644 src/DataLib/fendl32B_retrofit/activation_analysis.py diff --git a/src/DataLib/fendl32B_retrofit/activation_analysis.py b/src/DataLib/fendl32B_retrofit/activation_analysis.py deleted file mode 100644 index 5cbe47c..0000000 --- a/src/DataLib/fendl32B_retrofit/activation_analysis.py +++ /dev/null @@ -1,36 +0,0 @@ -# Import packages -import pandas as pd -from tendl_preprocessing import extract_cross_sections - -def iterate_MTs(MTs, file_obj, mt_dict, pKZA): - # Initialize lists - cross_sections_by_MT = [] - emitted_particles_list = [] - dKZAs = [] - groups = [] - - # Extract data for each MT - for MT in MTs: - sigma_list = extract_cross_sections(file_obj, MT) - if not sigma_list: - continue - dKZA = pKZA - mt_dict[str(MT)]['delKZA'] - emitted_particles = mt_dict[str(MT)]['Emitted Particles'] - if dKZA is None: - continue - cross_sections_by_MT.append(sigma_list) - dKZAs.append(dKZA) - emitted_particles_list.append(emitted_particles) - groups.append(len(sigma_list)) - - - # Store data in a Pandas DataFrame - gendf_data = pd.DataFrame({ - 'Parent KZA': [pKZA] * len(dKZAs), - 'Daughter KZA': dKZAs, - 'Emitted Particles': emitted_particles_list, - 'Non-Zero Groups' : groups, - 'Cross Sections': cross_sections_by_MT - }) - - return gendf_data \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 488f418..d9dddf5 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -1,13 +1,13 @@ # Import packages import tendl_preprocessing as tpp -import activation_analysis from logging_config import logger import groupr_tools -import sys import argparse import asyncio import pandas as pd import reaction_data as rxd +import subprocess +from pathlib import Path def fendl_args(): """ @@ -30,136 +30,385 @@ def fendl_args(): parser = argparse.ArgumentParser() - # Subparsers for 'I' and 'D' - subparsers = parser.add_subparsers(dest='method', required=True) - parser_I = subparsers.add_parser('I', help='''Local file input. - Note: This option should only be - selected if the user already has - properly formatted GENDF activation - files that have been processed using - the NJOY GROUPR module for a - Vitmain-J group structure with a - Vitamin-E weight function.''') - parser_I.add_argument('--paths', '-p', - required=True, - nargs= '+', - help='Path to the local GENDF file.') - parser_D = subparsers.add_parser('D', help='''Download TENDL/PENDF files - from the TENDL 2017 neutron activation - database.''') - parser_D.add_argument('--element', '-e', - required=True, - help= 'Chemical symbol for selected element (i.e. Ti).') - parser_D.add_argument('--A', '-a', - required=True, - help= '''Mass number for selected isotope (i.e. 48). - If the target is an isomer, type - "m" after the mass number (i.e. 48m). - To automatically iterate over all of - the isotopes for the target element, - select "all" as the option for --A. - ''') + parser.add_argument( + '--paths', '-p', required = False, nargs='*', + help= '''Path to the local GENDF file(s) or the repository in which + they are located.''') + parser.add_argument( + '--element', '-e', required=False, nargs='+', + help= 'Chemical symbol for selected element (i.e. Ti).') + parser.add_argument( + '--mass_number', '-a', required= False, nargs = '*', + help= '''Mass number for selected isotope (i.e. 48). If the target is + an isomer, type "m" after the mass number (i.e. 48m). + To automatically iterate over all of the isotopes for the + target element, select "all" as the option for --mass_number. + ''') args = parser.parse_args() return args -def handle_local_file_input(mt_dict, cumulative_data, gendf_paths = None, args = None): +def prepare_ls_commands(args, gendf_dir, element): + """ + Create a list of commands to be run with a subprocess.run() executable to + be used to search for GENDF files in a given directory for a + particular element. This can either be targetted for individual files + specified by the mass number for an isotope, whose data is stored in + a GENDF file, or all files for the element in the directory. + + Arguments: + args (argparse.Namespace): Argparse object that contains user-declared + parameters, from which the only one accessed is mass_number, to + determine whether to prepare a search command for a pre-defined + list of files or to search for any and all files for the element. + gendf_dir (str): Path for the directory containing the relevant GENDF + file(s). + element (str): Chemical name of the target element. + + Returns: + commands (list of str): List of all "ls" search commands to be run + with the subprocess module, corresponding to the desired files to + be processed. + """ + + commands = [] + A_vals = args.mass_number + + if not A_vals or A_vals == ['all']: + ls_command = (f'ls {Path(gendf_dir) / f"*{element}*"}', None) + commands.append(ls_command) + else: + for A in A_vals: + A = A.zfill(3) + ls_command = (f'ls {Path(gendf_dir) / f"*{element}{A}*"}', A) + commands.append(ls_command) + + return commands + +def run_ls_command(command): + """ + Use subprocess.run() to execute an "ls" command to search for a particular + GENDF file or multiple GENDF files. This function streamlines usage of + subprocess by making it only necessary to input the searching command, + without having to specify the other run() parameters. + + Arguments: + command (str): Shell command to be used by subprocess.run() to search + for a GENDF file or GENDF files using "ls". + + Returns: + ls_output (list of str): List of the relative file paths to all of the + GENDF files found from the "ls" command. + """ + + ls_output = subprocess.run( + command, # Execute the ocmmand using subprocess.run + shell=True, # Run the command in the shell + check=True, # Raise exception if returns non-zero code + stdout=subprocess.PIPE, # Capture the standard output + stderr=subprocess.PIPE, # Capture the standard error + universal_newlines=True # Return the output as a string, not bytes + ).stdout.strip().split("\n") + + return ls_output + +def warn_missing_file(error, element, A): + """ + Identify and log a warning if the file for a partiular isotope is not + found when the run_ls_command() function is executed. Rather than + raise an error to the terminal, it will just be logged as a warning + so that if the user is searching for multiple elements and a suitable + isotope exists for one but not the other, it will not cause the + execution to fail, but rather just to make note of the case and warn + the user to double check whether or not that file was supposed to + exist. + + Arguments: + error (subprocess.CalledProcessError): A subprocess error object that + signifies that the execution of the command was unsuccessful and + returns a non-zero exit status. + element (str): Chemical name of the target element. + A (str): Mass number of the target isotope, including the letter "m" + at the end if the target is a nuclear isomer. + + Returns: + None + """ + + if error.returncode == 2: # Error code for CalledProcessError + + logger.warning(error.stderr.strip()) + specific_message = f'{element}{A or ""}' + + warning_message = ( + f'If there is a GENDF file for {element}' + f'{f" with mass number {A}" if A is not None else ""},' + ' then make sure it is properly named and ' + f'formatted with the string "{specific_message}" ' + 'included in the file\'s name.' + ) + logger.warning(warning_message) + else: + raise + +def search_gendf_files_for_element(args, gendf_dir, element): + """ + Generate and iterate through the GENDF file search commands produced from + prepare_ls_commands() to either store the file paths in a cumulative + list or to log missing files and tally the number of warnings from a + given run. + + Arguments: + args (argparse.Namespace): Argparse object that contains user-declared + parameters, which is read in the prepare_ls_commands() function. + gendf_dir (str): Path for the directory containing the relevant GENDF + file(s). + element (str): Chemical name of the target element. + + Returns: + element_gendf_paths (list of str): List containing all of the relative + file paths for the target element's GENDF files in the selected + directory. + warnings (int): Count of the number of isotopes searched for that do + not have findable GENDF files in the selected directory. + """ + + warnings = 0 + element_gendf_paths = [] + + commands = prepare_ls_commands(args, gendf_dir, element) + + for command, A in commands: + try: + ls_output = run_ls_command(command) + element_gendf_paths.extend(ls_output) + except subprocess.CalledProcessError as e: + warn_missing_file(e, element, A) + warnings += 1 + + return element_gendf_paths, warnings + +def search_gendf_directory(args, gendf_dir=None, gendf_paths_from_arg=None): + """ + Iterate through all of the user-selected elements from the argparser to + find and store all of the corresponding GENDF files that fit elements + and mass numbers specified. If none of the elements have GENDF files + that can be found, an Exception will be raised. + + Arguments: + args (argparse.Namespace): Argparse object that contains user-declared + parameters. + gendf_dir (str, optional): Path for the directory containing the + relevant GENDF file(s). Either this or gendf_paths_from_arg + must be defined. Defaults to None. + gendf_paths_from_arg (list of str, optional): List containing only the + path for the directory containing the relevant GENDF file(s). + Either this or gendf_dir must be defined. Defaults to None. + + Returns: + all_gendf_paths (list of str): List containing all of the file + paths to the GENDF files to be analyzed. + """ + + gendf_dir = gendf_dir or gendf_paths_from_arg[0] + elements = args.element + missing_elements = 0 + + all_gendf_paths = [] + + for element in elements: + element_gendf_paths, warnings = search_gendf_files_for_element(args, + gendf_dir, + element) + + if warnings == len(prepare_ls_commands(args, gendf_dir, element)): + logger.error(f'No GENDF files found for {element}.') + missing_elements += 1 + + all_gendf_paths.extend(element_gendf_paths) + + if missing_elements == len(elements): + raise Exception('No GENDF files found for any of the selected elements.') + else: + logger.info(f'All files: \n {", ".join(all_gendf_paths)}') + + return all_gendf_paths + +def iterate_MTs(MTs, file_obj, mt_dict, pKZA): + """ + Iterate through all of the MTs present in a given GENDF file to extract + the necessary data to be able to run ALARA. + + Arguments: + MTs (list of int): List of reaction types present in the GENDF file. + file_obj (ENDFtk.tree.File or None): ENDFtk file object containing the + contents for a specific material's cross-section data. + mt_dict (dict): Dictionary formatted data structure for mt_table.csv + pKZA (int): Parent KZA identifier. + + Returns: + gendf_data (pandas.core.frame.DataFrame): Pandas DataFrame containing + parent KZA values, daughter KZA values, emitted particles, + counts of the number of non-zero groups in the Vitamin-J groupwise + structure, and the cross-section values for those groups. + """ + + cross_sections_by_MT = [] + emitted_particles_list = [] + dKZAs = [] + groups = [] + + for MT in MTs: + sigma_list = tpp.extract_cross_sections(file_obj, MT) + dKZA = pKZA - mt_dict[str(MT)]['delKZA'] + emitted_particles = mt_dict[str(MT)]['Emitted Particles'] + cross_sections_by_MT.append(sigma_list) + dKZAs.append(dKZA) + emitted_particles_list.append(emitted_particles) + groups.append(len(sigma_list)) + + gendf_data = pd.DataFrame({ + 'Parent KZA': [pKZA] * len(dKZAs), + 'Daughter KZA': dKZAs, + 'Emitted Particles': emitted_particles_list, + 'Non-Zero Groups' : groups, + 'Cross Sections': cross_sections_by_MT + }) + + return gendf_data + + +def handle_local_file_input(mt_dict, cumulative_data, + gendf_paths, gendf_dir, args): """ Method for extracting and analyzing data from preprocessed GENDF files - that the user already has saved locally. Called when the argument - for the main function -- fendl3_2b_retrofit() -- is specified as 'I'. + that are saved locally. The data extracted is stored in a Pandas + DataFrame. Arguments: + mt_dict (dict): Dictionary formatted data structure for mt_table.csv, + along with changes in KZA and emitted_particles. + cumulative_data (pandas.core.frame.DataFrame): Empty Pandas DataFrame + in which to cumulatively store data extracted from GENDF files. + gendf_paths (list of str): List containing all of the file paths to + the GENDF files to be analyzed. + gendf_dir (str): Path for the directory containing the relevant GENDF + file(s). args (argparse.Namespace): Argparse object that contains the user specified arguments for executing the program. - mt_dict (dict): Dictionary formatted data structure for mt_table.csv + + Returns: + cumulative_data (pandas.core.frame.DataFrame): Cumulatively filled + Pandas DataFrame containing all of the data extracted from the + GENDF file(s). """ - # Format gendf_paths parameter - if gendf_paths is None: + if not gendf_paths: gendf_paths = args.paths - elif type(gendf_paths) is not list: + + if not isinstance(gendf_paths, list): gendf_paths = [gendf_paths] + # If the user inputs a path to a directory containing GENDF files for the + # local file option, then search for the GENDF files of the element(s) + if gendf_dir or Path(gendf_paths[0]).is_dir(): + gendf_paths = search_gendf_directory(args, gendf_dir, gendf_paths) + for gendf_path in gendf_paths: - # Extract fundamental data from the GENDF file - pKZA = tpp.extract_gendf_pkza(gendf_path) + + pKZA, A, element = tpp.extract_gendf_pkza(gendf_path) matb, MTs, file_obj = tpp.extract_endf_specs(gendf_path, 'gendf') logger.info(f"GENDF file path: {gendf_path}") logger.info(f"Parent KZA (pKZA): {pKZA}") logger.info(f'MTs: {MTs}') - # Extract and save specific data for each MT - gendf_data = activation_analysis.iterate_MTs(MTs, file_obj, mt_dict, pKZA) - cumulative_data = pd.concat([cumulative_data, gendf_data], ignore_index= True) + gendf_data = iterate_MTs(MTs, file_obj, mt_dict, pKZA) + cumulative_data = pd.concat([cumulative_data, gendf_data], + ignore_index= True) + + logger.info( + f'Finished iterating for {element}-{A} \n \n {"-"*50} \n \n' + ) + return cumulative_data -def handle_download_file(args, mt_dict, cumulative_df): +def handle_TENDL_downloads(args, mt_dict): """ Method for downloading ENDF/PENDF files from the TENDL 2017 database, using the NJOY GROUPR module to convert these to a group-wise file, - and then extracting and analyzing the resultant data. Called when - the argument for the main function -- fendl3_2b_retrofit() -- - is specified as 'D'. + and then extracting and analyzing the resultant data. Arguments: args (argparse.Namespace): Argparse object that contains the user specified arguments for executing the program. - mt_dict (dict): Dictionary formatted data structure for mt_table.csv + mt_dict (dict): Dictionary formatted data structure for mt_table.csv, + along with changes in KZA and emitted_particles. + + Returns: + gendf_paths (list of str): List containing all of the file paths to + the GENDF files that were processed from ENDF/PENDF files by NJOY. + gendf_dir (str): Path for the directory containing the GENDF file(s). + """ - # Establish parameters from the user arguments - element = args.element - A = args.A - if A == 'all': - A_vals = asyncio.run(tpp.identify_tendl_isotopes(element)) - logger.info( - f'All isotopes of {element} in the TENDL database: {A_vals}' - ) - else: - A_vals = [A] + elements = args.element + if elements == ['all']: + elements = groupr_tools.elements.keys() + A_vals = args.mass_number - # Iterate over all isotopes/isomers, as specified by arguments gendf_paths = [] - for A in A_vals: - endf_path = tpp.download_tendl(element, A, 'endf') - pendf_path = tpp.download_tendl(element, A, 'pendf') - material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') - - card_deck = groupr_tools.groupr_input_file_format(material_id, MTs, - element, A, mt_dict) - groupr_tools.groupr_input_file_writer(card_deck, MTs) + for element in elements: + if A_vals == ['all'] or not A_vals: + A_vals = asyncio.run(tpp.identify_tendl_isotopes(element)) + logger.info( + f'All isotopes of {element} in the TENDL database: {A_vals}' + ) + + for A in A_vals: + endf_path = tpp.download_tendl(element, A, 'endf') + pendf_path = tpp.download_tendl(element, A, 'pendf') + + material_id, MTs = tpp.extract_endf_specs(endf_path, 'endf') + + card_deck = groupr_tools.groupr_input_file_format(material_id, + MTs, + element, + A, + mt_dict) + groupr_tools.groupr_input_file_writer(card_deck, MTs) - gendf_path = groupr_tools.run_njoy(card_deck, element, A, material_id) - gendf_paths.append(gendf_path) + gendf_path, gendf_dir = groupr_tools.run_njoy(card_deck, element, + A, material_id) + gendf_paths.extend(gendf_path) - groupr_tools.njoy_file_cleanup() - logger.info(f'Finished iterating for {element}-{A} \n \n') + groupr_tools.njoy_file_cleanup() - return gendf_paths + return gendf_paths, gendf_dir ############################################################################## -def fendl3_2b_retrofit(): +def fendl3_2b_retrofit(gendf_paths = [], gendf_dir = None): """ Main method when run as a command line script. """ # Initialize arguments, DataFrame to store data, and load in MT reference args = fendl_args() - gendf_paths = [] cumulative_data = rxd.initialize_dataframe() mt_dict = rxd.process_mt_table('mt_table.csv') - # Execute file handling - if args.method == 'D': - gendf_paths = handle_download_file(args, mt_dict, cumulative_data) - args = None + # Conditionally download and process files from the TENDL 2017 database + if not args.paths: + gendf_paths, gendf_dir = handle_TENDL_downloads(args, mt_dict, + cumulative_data) + + # Extract and store data from GENDF files cumulative_data = handle_local_file_input(mt_dict, cumulative_data, gendf_paths = gendf_paths, + gendf_dir = gendf_dir, args = args) # Save to CSV diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 247b925..e23ed96 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -1,7 +1,7 @@ # Import packages import subprocess from logging_config import logger -import os +from pathlib import Path # Define constants NENDF = 20 # unit for endf tape @@ -47,7 +47,8 @@ def format_card(card_number, card_content, MTs): Arguments: card_number (int): Individual identifier of "card" in input "deck". card_content (list): Values to be written on each individual "card". - MTs (list): List of reaction types (MT's) present in the ENDF/PENDF files. + MTs (list of int): List of reaction types (MT's) present in the + ENDF/PENDF files. Returns: card_str (str): Concatenated string of an individual "card's" contents. @@ -146,10 +147,11 @@ def set_gendf_saving(save_directory, element, A): """ # Create save_directory if it does not already exist - if not os.path.exists(save_directory): - os.makedirs(save_directory) + save_directory = Path(save_directory) + if not save_directory.exists(): + save_directory.mkdir(parents = True) - gendf_path = f'{save_directory}/tendl_2017_{element}{A}.gendf' + gendf_path = f'{save_directory}/tendl_2017_{element}{A.zfill(3)}.gendf' return gendf_path def text_insertion(string, identifier, new_text, file_lines): @@ -177,8 +179,8 @@ def ensure_gendf_markers(gendf_path, matb): None """ - # In ENDF-6 formatted files, there are 66 lines of whitespace before - # the values in record-keeping lines + # In ENDF-6 formatted files, there are 66 characters/columns of whitespace + # before the values in record-keeping lines whitespace = ' ' * 66 # Define identifiers and corresponding new lines @@ -238,14 +240,17 @@ def run_njoy(cards, element, A, matb): output = subprocess.run(['cat', 'output'], capture_output=True, text = True) title = cards[3][0][1:-1] title_index = output.stdout.find(title) - logger.info(f'\n{output.stdout[:title_index + len(title)]}\n') + logger.info( + 'Selected output of the latest NJOY run: \n' + f'\n{output.stdout[:title_index + len(title)]}\n' + ) save_directory = './gendf_files' gendf_path = set_gendf_saving(save_directory, element, A) subprocess.run(['cp', 'tape31', gendf_path]) ensure_gendf_markers(gendf_path, matb) - return gendf_path + return gendf_path, save_directory else: logger.error(result.stderr) @@ -266,7 +271,9 @@ def njoy_file_cleanup(output_path = 'njoy_ouput'): if file == 'groupr.out': with open(file, 'r') as f: groupr_out = f.read() - logger.info(groupr_out) + logger.info( + f'GROUPR run-specific analytics: \n {groupr_out}' + ) subprocess.run(['rm', file]) subprocess.run(['mv', 'output', output_path]) diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py index 656bb78..4fffcd1 100644 --- a/src/DataLib/fendl32B_retrofit/logging_config.py +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -1,12 +1,129 @@ -# Import packages import logging -# Configure logging -logging.basicConfig( - level= 'INFO', - format= '%(asctime)s - %(levelname)s - %(message)s', - filename= 'fendl3_retrofit.log', - filemode= 'w' -) +class LineFormatter(logging.Formatter): + """ + Custom formatter to handle log messages and enforce character limits + in the log messages. + """ -logger = logging.getLogger(__name__) \ No newline at end of file + def format(self, record, max_length = 79): + """ + Format a log record, optionally applying custom line splitting. + + This method overrides the default log formatting to either use a + default format or apply custom line splitting based on the length + of the log message. If the log record has a `use_default_format` + attribute set to True, it returns the default formatted message + without line splitting. + + Arguments: + record (logging.LogRecord): The log record to be formatted. + max_length (int, optional): The maximum allowable length of + each line. Default is set to 79 characters, the standard + line length by PEP 8 standards. + + Returns: + str: The formatted log message, + potentially with custom line splitting. + """ + + # Format the timestamp and levelname + prefix = super().format(record) + + # Check if the log record has a special flag indicating different formatting + if hasattr(record, 'use_default_format') and record.use_default_format: + # Just return the default formatted message without line splitting + return f"{prefix} {record.msg}" + + # Apply the default line-splitting formatting + if len(prefix) + len(record.msg) > max_length: + message_lines = self._split_message(prefix, record.msg, max_length) + formatted_message = '\n'.join(message_lines) + return formatted_message + else: + return f"{prefix} {record.msg}" + + def _split_message(self, prefix, message, max_length): + """ + Split the message into lines that fit within max_length. + + Arguments: + prefix (str): The prefix to prepend the first line of the message. + message (str): The message to be split into lines. + max_length (int, optional): The maximum allowable length of + each line. Default is set to 79 characters, the standard + line length by PEP 8 standards. + + Returns: + lines (list of str): A list of lines, each fitting within + the specified length. + """ + + lines = [] + current_line = prefix + + # Split the message into lines that fit within max_length + for word in message.split(): + if len(current_line) + len(word) + 1 <= max_length: + current_line += ' ' + word + else: + lines.append(current_line) + # For subsequent lines, do not repeat the prefix + current_line = ' ' * len(prefix) + ' ' + word + + if current_line.strip(): + lines.append(current_line) + + return lines + +class CustomFilter(logging.Filter): + """ + Custom filter to apply different formatting based on a condition. + """ + + def filter(self, record): + """ + Determine if a log record should use default formatting based + on its content. + + This method checks if the log record's message contains a specific + NJOY flag, which is a string of 77 asterisks characteristic of the + output produced from running NJOY. If the flag is found, a custom + attribute `use_default_format` is set to True on the record, + indicating that the default formatting should be used. Otherwise, + the attribute is set to False. + + Arguments: + record (logging.LogRecord): The log record to be checked + and potentially modified. + + Returns: + bool: Always returns True, allowing the log record to be processed + by the file handler. + """ + + njoy_flag = ('*' * 77) + if njoy_flag in record.msg: + # Set a flag in the record to use default formatting + record.use_default_format = True + else: + # Ensure default formatting is applied for other messages + record.use_default_format = False + return True + + +# Configure logger +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) + +file_handler = logging.FileHandler('fendl3_retrofit.log', mode='w') +file_handler.setLevel(logging.INFO) + +formatter = LineFormatter('%(asctime)s - %(levelname)s') +file_handler.setFormatter(formatter) + +custom_filter = CustomFilter() +file_handler.addFilter(custom_filter) + +logger.addHandler(file_handler) +logger.propagate = False \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/reaction_data.py b/src/DataLib/fendl32B_retrofit/reaction_data.py index 550d99c..96e9134 100644 --- a/src/DataLib/fendl32B_retrofit/reaction_data.py +++ b/src/DataLib/fendl32B_retrofit/reaction_data.py @@ -2,6 +2,19 @@ from numpy import array import pandas as pd +# Define a dictionary containing all of the pathways for neutron and proton +# changes in a nucleus following neutron activation + +# emitted delta N delta P +NP_dict = {'n' : array([-1 , 0 ]), # neutron emission + 'p' : array([ 0 , -1 ]), # proton emission + 'd' : array([-1 , -1 ]), # deuteron emission + 't' : array([-2 , -1 ]), # triton emission + '3He' : array([-1 , -2 ]), # helium-3 emission + 'α' : array([-2 , -2 ]), # alpha emission + 'γ' : array([ 0 , 0 ]) # gamma emission +} + def initialize_dataframe(): """ Initialize an empty Pandas DataFrame in which to store extracted data from @@ -29,13 +42,15 @@ def count_emitted_particles(particle, emitted_particle_string): Arguments: particle (str): Name of the target particle produced in the reaction. Options include n, p, alpha, d, t, and 3He, corresponding to - neutrons, protons, alpha particles, deuterons, tritons, and helium-3 nuclides. - emitted_particle_string (str): Particle product(s) of the neutron activation, - of the format 'p' for a single proton for example or '2n' for two neutrons etc. + neutrons, protons, alpha particles, deuterons, tritons, + and helium-3 nuclides. + emitted_particle_string (str): Particle product(s) of the neutron + activation, of the format 'p' for a single proton for example or + '2n' for two neutrons etc. Returns: - number_str (int or None): Count of the target particle present in the product. - For particles not present, returns None rather than 0. + particle_count (int or None): Count of the target particle present in + the product. If particles not present, returns None rather than 0. """ particle_index = emitted_particle_string.find(particle) @@ -47,13 +62,13 @@ def count_emitted_particles(particle, emitted_particle_string): break if number_str: - number_str = int(number_str) + particle_count = int(number_str) elif particle in emitted_particle_string: - number_str = 1 + particle_count = 1 else: - number_str = None + particle_count = None - return number_str + return particle_count def isomer_check(emitted_particle_string): """ @@ -64,11 +79,12 @@ def isomer_check(emitted_particle_string): this function looks for and stores these values. Arguments: - emitted_particle_string (str): Particle product(s) of the neutron activation. + emitted_particle_string (str): Particle product(s) of the neutron + activation. Returns: - isomeric_state (int): Nuclear excitation level of the activated nucleus. - For a nucleus in the ground state, isomeric_state = 0. + isomeric_value (int): Nuclear excitation level of the activated + nucleus. For a nucleus in the ground state, isomeric_state = 0. """ last_digits_str = '' @@ -97,10 +113,9 @@ def emission_breakdown(emitted_particles): read out as {'n': 1, 'p': 1}. """ - particle_types = ['n', 'd', 'α', 'p', 't', '3He', 'gamma'] emission_dict = { particle : count_emitted_particles(particle, emitted_particles) - for particle in particle_types + for particle in NP_dict.keys() if particle in emitted_particles } return emission_dict @@ -123,15 +138,8 @@ def nucleon_changes(emission_dict): array([neutron_change, proton_change]). """ - # emitted delta N delta P - NP_change = array([ 1 , 0 ]) # neutron activation - NP_dict = {'n' : array([-1 , 0 ]), # neutron emission - 'p' : array([ 0 , -1 ]), # proton emission - 'd' : array([-1 , -1 ]), # deuteron emission - 't' : array([-2 , -1 ]), # triton emission - '3He' : array([-1 , -2 ]), # helium-3 emission - 'α' : array([-2 , -2 ]), # alpha emission - } + # delta N delta P + NP_change = array([1 , 0 ]) # neutron activation for particle, count in emission_dict.items(): NP_change += count * NP_dict[particle] diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index dfcaf99..f4f515e 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -1,6 +1,5 @@ # Import packages import aiohttp -import asyncio from bs4 import BeautifulSoup import urllib.error import urllib.request @@ -25,6 +24,7 @@ async def fetch_and_parse_html(session, url): signified by status code 200. Returns None if the request is unsuccessful or an error occurs. """ + async with session.get(url) as response: if response.status == 200: html = await response.text() @@ -48,6 +48,7 @@ async def identify_tendl_isotopes(element): data stored in both ENDF (TENDL) and PENDF files in the TENDL 2017 nuclear database. """ + A_vals = [] async with aiohttp.ClientSession() as session: tasks = [] @@ -91,6 +92,7 @@ def urllib_download(download_url, filetype): if e.code == 404: temp_file = None raise FileNotFoundError(f'{filetype.upper()} file does not exist at {download_url}') + return temp_file def download_tendl(element, A, filetype, save_path = None): @@ -147,6 +149,8 @@ def extract_gendf_pkza(gendf_path): Returns: pKZA (int): Parent KZA identifier. + A (int): Mass number of the parent nucleus. + element (str): Chemical name of the parent. """ with open(gendf_path, 'r') as f: @@ -158,7 +162,7 @@ def extract_gendf_pkza(gendf_path): M = 1 if 'm' in A.lower() else 0 A = int(A.lower().split(' ')[0].split('m')[0]) pKZA = (Z * 1000 + A) * 10 + M - return pKZA + return pKZA, A, element def extract_endf_specs(path, filetype): """ @@ -170,11 +174,11 @@ def extract_endf_specs(path, filetype): Returns: endf_specs (list): List containing the following values from the file: - matb (int): Unique material ID extracted from the file. - MTs (list): List of reaction types (MT's) present in the file. - file (ENDFtk.tree.File or None): ENDFtk file object containing the - contents for a specific material's cross-section data. - Only returns the file for GENDF filetypes. + matb (int): Unique material ID extracted from the file. + MTs (list): List of reaction types (MT's) present in the file. + file (ENDFtk.tree.File or None): ENDFtk file object containing the + contents for a specific material's cross-section data. + Only returns the file for GENDF filetypes. """ tape = ENDFtk.tree.Tape.from_file(path) From 76b9aa146f2cf9e8aae76fd5f495ced1dab8fcfd Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 16 Jul 2024 11:54:44 -0500 Subject: [PATCH 52/59] Improving ability to iterate over all elements. --- .../fendl32B_retrofit/fendl3_retrofit.py | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index d9dddf5..e4bbc45 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -32,17 +32,28 @@ def fendl_args(): parser.add_argument( '--paths', '-p', required = False, nargs='*', - help= '''Path to the local GENDF file(s) or the repository in which - they are located.''') + help= ''' + Path(s) to the local GENDF file(s) or the repository in which + they are located. + + If left empty, then corresponding ENDF and + PENDF files will be downloaded and processed into properly + formatted GENDF files. + ''') parser.add_argument( - '--element', '-e', required=False, nargs='+', - help= 'Chemical symbol for selected element (i.e. Ti).') + '--element', '-e', required=False, nargs='*', + help= ''' + Chemical symbol(s) for selected element(s) (i.e. Ti). + + To iterate over all elements, either type "all" or leave empty. + ''') parser.add_argument( '--mass_number', '-a', required= False, nargs = '*', help= '''Mass number for selected isotope (i.e. 48). If the target is an isomer, type "m" after the mass number (i.e. 48m). + To automatically iterate over all of the isotopes for the - target element, select "all" as the option for --mass_number. + target element, type "all" or leave empty. ''') args = parser.parse_args() @@ -211,7 +222,8 @@ def search_gendf_directory(args, gendf_dir=None, gendf_paths_from_arg=None): """ gendf_dir = gendf_dir or gendf_paths_from_arg[0] - elements = args.element + elements = groupr_tools.elements.keys( + ) if args.element == ['all'] or not args.element else args.element missing_elements = 0 all_gendf_paths = [] @@ -352,9 +364,9 @@ def handle_TENDL_downloads(args, mt_dict): """ - elements = args.element - if elements == ['all']: - elements = groupr_tools.elements.keys() + elements = groupr_tools.elements.keys( + ) if args.element == ['all'] or not args.element else args.element + A_vals = args.mass_number gendf_paths = [] From eebeea3aa24ae3771f25322e3ea73c15bc546c30 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 16 Jul 2024 12:33:54 -0500 Subject: [PATCH 53/59] Fixing minor bug in execution of handle_TENDL_downloads(). --- src/DataLib/fendl32B_retrofit/fendl3_retrofit.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index e4bbc45..8b9885d 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -413,8 +413,7 @@ def fendl3_2b_retrofit(gendf_paths = [], gendf_dir = None): # Conditionally download and process files from the TENDL 2017 database if not args.paths: - gendf_paths, gendf_dir = handle_TENDL_downloads(args, mt_dict, - cumulative_data) + gendf_paths, gendf_dir = handle_TENDL_downloads(args, mt_dict) # Extract and store data from GENDF files cumulative_data = handle_local_file_input(mt_dict, From 912530f9428ff48c763535a3b6b65ecbfa67ac65 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 16 Jul 2024 12:36:57 -0500 Subject: [PATCH 54/59] Small formatting change to fit in max line length. --- src/DataLib/fendl32B_retrofit/fendl3_retrofit.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 8b9885d..900a7c2 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -162,7 +162,7 @@ def warn_missing_file(error, element, A): else: raise -def search_gendf_files_for_element(args, gendf_dir, element): +def search_files_for_element(args, gendf_dir, element): """ Generate and iterate through the GENDF file search commands produced from prepare_ls_commands() to either store the file paths in a cumulative @@ -229,9 +229,9 @@ def search_gendf_directory(args, gendf_dir=None, gendf_paths_from_arg=None): all_gendf_paths = [] for element in elements: - element_gendf_paths, warnings = search_gendf_files_for_element(args, - gendf_dir, - element) + element_gendf_paths, warnings = search_files_for_element(args, + gendf_dir, + element) if warnings == len(prepare_ls_commands(args, gendf_dir, element)): logger.error(f'No GENDF files found for {element}.') @@ -240,7 +240,9 @@ def search_gendf_directory(args, gendf_dir=None, gendf_paths_from_arg=None): all_gendf_paths.extend(element_gendf_paths) if missing_elements == len(elements): - raise Exception('No GENDF files found for any of the selected elements.') + raise Exception( + 'No GENDF files found for any of the selected elements.' + ) else: logger.info(f'All files: \n {", ".join(all_gendf_paths)}') From c374494ad83a39a3296ddf999102ef8aa2debeee Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 16 Jul 2024 14:26:02 -0500 Subject: [PATCH 55/59] More minor formatting adjustments and simplifying the line length settings for the logger. --- .../fendl32B_retrofit/fendl3_retrofit.py | 4 +- src/DataLib/fendl32B_retrofit/groupr_tools.py | 50 ++++++---- .../fendl32B_retrofit/logging_config.py | 92 ++++--------------- .../fendl32B_retrofit/tendl_preprocessing.py | 74 +++++++++------ 4 files changed, 97 insertions(+), 123 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 900a7c2..135dbb6 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -342,7 +342,7 @@ def handle_local_file_input(mt_dict, cumulative_data, ignore_index= True) logger.info( - f'Finished iterating for {element}-{A} \n \n {"-"*50} \n \n' + f'Finished iterating for {element}-{A}{" "*20}{"-"*49}' ) return cumulative_data @@ -426,7 +426,7 @@ def fendl3_2b_retrofit(gendf_paths = [], gendf_dir = None): # Save to CSV cumulative_data.to_csv('gendf_data.csv', index=False) - logger.info("Saved gendf_data.csv") + logger.info('Saved extracted GENDF data to gendf_data.csv') ############################################################################## diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index e23ed96..57c8d24 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -51,7 +51,8 @@ def format_card(card_number, card_content, MTs): ENDF/PENDF files. Returns: - card_str (str): Concatenated string of an individual "card's" contents. + card_str (str): Concatenated string of an individual "card's" + contents. """ # Initialize string and concatenate contents of the card with it @@ -69,19 +70,20 @@ def groupr_input_file_format(matb, MTs, element, A, mt_dict): """" Format the input "deck" to run NJOY from individually formatted cards. - Most parameters are predefined as constants, as necessary for a GROUPR run - to write a group-wise file (GENDF) based on the ENDF and PENDF files - with a Vitamin-J 175 group structure and a Vitamin-E weighting function. - Other parameters are isotope specific, such as "matb", which corresponds - to the NJOY naming convention for the material ID, which are separately - extracted from the ENDF file to be referenced. + Most parameters are predefined as constants, as necessary for a GROUPR + run to write a group-wise file (GENDF) based on the ENDF and PENDF + files with a Vitamin-J 175 group structure and a Vitamin-E weighting + function. Other parameters are isotope specific, such as "matb", which + corresponds to the NJOY naming convention for the material ID, which + are separately extracted from the ENDF file to be referenced. Formatting and terminology based on the NJOY user manual: (https://github.com/njoy/NJOY2016-manual/raw/master/njoy16.pdf) Arguments: matb (int): Unique material ID extracted from the ENDF base file. - MTs (list): List of reaction types (MT's) present in the ENDF/PENDF files. + MTs (list of int): List of reaction types (MT's) present in the + ENDF/PENDF files. element (str): Chemical symbol for element of interest. A (str or int): Mass number for selected isotope. If the target is an isomer, "m" after the mass number, @@ -91,7 +93,8 @@ def groupr_input_file_format(matb, MTs, element, A, mt_dict): (https://www.oecd-nea.org/dbdata/data/manual-endf/endf102_MT.pdf) Returns: - cards (dict): Dictionary containing each "card" identified by its card number. + cards (dict): Dictionary containing each "card" identified by its card + number. """ cards = {} @@ -107,7 +110,8 @@ def groupr_input_file_format(matb, MTs, element, A, mt_dict): mtd = MTs # sections to be processed cards[9] = [] for MT in MTs: - mtname = mt_dict[str(MT)]['Reaction'] # description of section to be processed + # Description of section to be processed + mtname = mt_dict[str(MT)]['Reaction'] card9_line = f'{MFD} {MT} "{mtname}"' cards[9].append(card9_line) cards[10] = [MATD] @@ -119,8 +123,10 @@ def groupr_input_file_writer(cards, MTs): Write out the NJOY GROUPR input card by formatting each card line by line. Arguments: - cards (dict): Dictionary containing each "card" identified by its card number. - MTs (list): List of reaction types (MT's) present in the ENDF/PENDF files. + cards (dict): Dictionary containing each "card" identified by its card + number. + MTs (list of int): List of reaction types (MT's) present in the + ENDF/PENDF files. Returns: None @@ -211,11 +217,12 @@ def ensure_gendf_markers(gendf_path, matb): def run_njoy(cards, element, A, matb): """ - Use subprocess to run NJOY given a pre-written input card to convert a pair - of ENDF and PENDF files to a GENDF file and save it locally. + Use subprocess to run NJOY given a pre-written input card to convert a + pair of ENDF and PENDF files to a GENDF file and save it locally. Arguments: - cards (dict): Dictionary containing each "card" identified by its card number. + cards (dict): Dictionary containing each "card" + identified by its card number. element (str): Chemical symbol for element of interest. A (str or int): Mass number for selected isotope. If the target is an isomer, "m" after the mass number, @@ -231,13 +238,16 @@ def run_njoy(cards, element, A, matb): OUTPUT = 'groupr.out' # Run NJOY - result = subprocess.run(['njoy'], input=open(INPUT).read(), text= True, capture_output=True) + result = subprocess.run(['njoy'], input=open(INPUT).read(), + text= True, capture_output=True) with open(OUTPUT, 'w') as output_file: output_file.write(result.stdout) - # If the run is successful, log out the output and make a copy of the file as a .GENDF file + # If the run is successful, log out the output + # and make a copy of the file as a .GENDF file if result.stderr == '': - output = subprocess.run(['cat', 'output'], capture_output=True, text = True) + output = subprocess.run(['cat', 'output'], + capture_output=True, text = True) title = cards[3][0][1:-1] title_index = output.stdout.find(title) logger.info( @@ -259,7 +269,7 @@ def njoy_file_cleanup(output_path = 'njoy_ouput'): Clean up repository from unnecessary intermediate files from NJOY run. Arguments: - output_path (str): The path where the automated NJOY output will be saved. + output_path (str, optional): The save path for the NJOY output. Defaults to 'njoy_output'. Returns: @@ -277,4 +287,4 @@ def njoy_file_cleanup(output_path = 'njoy_ouput'): subprocess.run(['rm', file]) subprocess.run(['mv', 'output', output_path]) - logger.info(f'Full NJOY output file readout can be found at {output_path}') \ No newline at end of file + logger.info(f'Full NJOY output can be found at {output_path}') \ No newline at end of file diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py index 4fffcd1..4974b8d 100644 --- a/src/DataLib/fendl32B_retrofit/logging_config.py +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -1,80 +1,36 @@ +# Import packages import logging +import textwrap -class LineFormatter(logging.Formatter): +class CustomFormatter(logging.Formatter): """ - Custom formatter to handle log messages and enforce character limits - in the log messages. + Custom formatter to handle log messages and enforce character limits. """ - def format(self, record, max_length = 79): + def format(self, record): """ - Format a log record, optionally applying custom line splitting. - - This method overrides the default log formatting to either use a - default format or apply custom line splitting based on the length - of the log message. If the log record has a `use_default_format` - attribute set to True, it returns the default formatted message - without line splitting. + Format a log record, applying line splitting based on message length. Arguments: record (logging.LogRecord): The log record to be formatted. - max_length (int, optional): The maximum allowable length of - each line. Default is set to 79 characters, the standard - line length by PEP 8 standards. Returns: - str: The formatted log message, - potentially with custom line splitting. + str: The formatted log message. """ # Format the timestamp and levelname prefix = super().format(record) - # Check if the log record has a special flag indicating different formatting + # Check if the record has a special flag indicating different format if hasattr(record, 'use_default_format') and record.use_default_format: # Just return the default formatted message without line splitting - return f"{prefix} {record.msg}" - - # Apply the default line-splitting formatting - if len(prefix) + len(record.msg) > max_length: - message_lines = self._split_message(prefix, record.msg, max_length) - formatted_message = '\n'.join(message_lines) - return formatted_message - else: - return f"{prefix} {record.msg}" - - def _split_message(self, prefix, message, max_length): - """ - Split the message into lines that fit within max_length. - - Arguments: - prefix (str): The prefix to prepend the first line of the message. - message (str): The message to be split into lines. - max_length (int, optional): The maximum allowable length of - each line. Default is set to 79 characters, the standard - line length by PEP 8 standards. - - Returns: - lines (list of str): A list of lines, each fitting within - the specified length. - """ - - lines = [] - current_line = prefix + return f'{prefix} {record.msg}\n' - # Split the message into lines that fit within max_length - for word in message.split(): - if len(current_line) + len(word) + 1 <= max_length: - current_line += ' ' + word - else: - lines.append(current_line) - # For subsequent lines, do not repeat the prefix - current_line = ' ' * len(prefix) + ' ' + word + message_lines = textwrap.fill(record.msg, initial_indent=prefix + ' ', + subsequent_indent=' '*len(prefix) + ' ', + width=79, break_long_words=False) - if current_line.strip(): - lines.append(current_line) - - return lines + return f'{message_lines}\n' class CustomFilter(logging.Filter): """ @@ -83,26 +39,19 @@ class CustomFilter(logging.Filter): def filter(self, record): """ - Determine if a log record should use default formatting based - on its content. - - This method checks if the log record's message contains a specific - NJOY flag, which is a string of 77 asterisks characteristic of the - output produced from running NJOY. If the flag is found, a custom - attribute `use_default_format` is set to True on the record, - indicating that the default formatting should be used. Otherwise, - the attribute is set to False. + Determine if a log record should use default formatting based on its + content. Arguments: - record (logging.LogRecord): The log record to be checked - and potentially modified. - + record (logging.LogRecord): The log record to be checked and + potentially modified. + Returns: bool: Always returns True, allowing the log record to be processed by the file handler. """ - njoy_flag = ('*' * 77) + njoy_flag = '*' * 77 if njoy_flag in record.msg: # Set a flag in the record to use default formatting record.use_default_format = True @@ -111,7 +60,6 @@ def filter(self, record): record.use_default_format = False return True - # Configure logger logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) @@ -119,7 +67,7 @@ def filter(self, record): file_handler = logging.FileHandler('fendl3_retrofit.log', mode='w') file_handler.setLevel(logging.INFO) -formatter = LineFormatter('%(asctime)s - %(levelname)s') +formatter = CustomFormatter('%(asctime)s - %(levelname)s') file_handler.setFormatter(formatter) custom_filter = CustomFilter() diff --git a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py index f4f515e..5c03487 100644 --- a/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py +++ b/src/DataLib/fendl32B_retrofit/tendl_preprocessing.py @@ -15,14 +15,14 @@ async def fetch_and_parse_html(session, url): Asynchronously fetch the content from the URL using the provided session. Arguments: - session (aiohttp.client.ClientSession): Aiohttp session to use for making - the request. + session (aiohttp.client.ClientSession): Aiohttp session to use for + making the request. url (str): The URL from which to fetch content. Returns: - str or None: The content of the URL as a string if the request is successful, - signified by status code 200. Returns None if the request is unsuccessful - or an error occurs. + str or None: The content of the URL as a string if the request is + successful, signified by status code 200. Returns None if the + request is unsuccessful or an error occurs. """ async with session.get(url) as response: @@ -35,8 +35,9 @@ async def fetch_and_parse_html(session, url): async def identify_tendl_isotopes(element): """ - Use asyncio and aiohttp to iterate over all possible mass numbers for a given - element to identify all of its isotopes and isomers in the TENDL database. + Use asyncio and aiohttp to iterate over all possible mass numbers for a + given element to identify all of its isotopes and isomers in the TENDL + database. Arguments: element (str): Chemical symbol for element of interest (i.e. Ti). @@ -44,9 +45,9 @@ async def identify_tendl_isotopes(element): processes or sessions that can be handled at once. Returns: - A_vals (list): List of all of the mass numbers of isotopes that have - data stored in both ENDF (TENDL) and PENDF files in the TENDL 2017 - nuclear database. + A_vals (list of str): List of all of the mass numbers of isotopes that + have data stored in both ENDF (TENDL) and PENDF files in the TENDL + 2017 nuclear database. """ A_vals = [] @@ -58,16 +59,24 @@ async def identify_tendl_isotopes(element): if i == 1: A_str += 'm' - navigation_page_url = f'{TENDL_GEN_URL}/neutron_html/{element}/Neutron{element}{str(A).zfill(2)}.html' - isotope_component = f'/neutron_file/{element}/{element}{A_str}/lib/endf/n-{element}{A_str}.' + navigation_page_url = ( + f'{TENDL_GEN_URL}/neutron_html/{element}/' + f'Neutron{element}{str(A).zfill(2)}.html' + ) + isotope_component = ( + f'/neutron_file/{element}/{element}{A_str}/' + f'lib/endf/n-{element}{A_str}.' + ) tendl_url = TENDL_GEN_URL + isotope_component + 'tendl' pendf_url = TENDL_GEN_URL + isotope_component + 'pendf' - tasks.append((navigation_page_url, tendl_url, pendf_url, A_str)) + tasks.append((navigation_page_url, tendl_url, + pendf_url, A_str)) # Execute tasks and gather results for navigation_page_url, tendl_url, pendf_url, A_str in tasks: - nav_urls = await fetch_and_parse_html(session, navigation_page_url) + nav_urls = await fetch_and_parse_html(session, + navigation_page_url) if tendl_url in nav_urls and pendf_url in nav_urls: A_vals.append(A_str) @@ -91,7 +100,9 @@ def urllib_download(download_url, filetype): except urllib.error.URLError as e: if e.code == 404: temp_file = None - raise FileNotFoundError(f'{filetype.upper()} file does not exist at {download_url}') + raise FileNotFoundError( + f'{filetype.upper()} file does not exist at {download_url}' + ) return temp_file @@ -106,7 +117,9 @@ def download_tendl(element, A, filetype, save_path = None): so A must be input as a string. filetype (str): Either "ENDF" or "PENDF" filetypes to be downloaded (case insensitive). - save_path (str, optional): User-defined file path for the downloaded file. + save_path (str, optional): User-defined file path for the + downloaded file. + Defaults to None and will be otherwise defined internally. Returns: @@ -120,7 +133,9 @@ def download_tendl(element, A, filetype, save_path = None): 'pendf' : {'ext': 'pendf', 'tape_num': 21}} # Construct the filetype and isotope specific URL - isotope_component = f'/neutron_file/{element}/{element}{A}/lib/endf/n-{element}{A}.' + isotope_component = ( + f'/neutron_file/{element}/{element}{A}/lib/endf/n-{element}{A}.' + ) ext = file_handling[filetype.lower()]['ext'] download_url = TENDL_GEN_URL + isotope_component + ext logger.info(f'{filetype.upper()} URL: {download_url}') @@ -137,14 +152,16 @@ def download_tendl(element, A, filetype, save_path = None): def extract_gendf_pkza(gendf_path): """ - Read in and parse the contents of a GENDF file to construct the parent KZA. - KZA values are defined as ZZAAAM, where ZZ is the isotope's atomic number, - AAA is the mass number, and M is the isomeric state (0 if non-isomeric). + Read in and parse the contents of a GENDF file to construct the parent + KZA. KZA values are defined as ZZAAAM, where ZZ is the isotope's + atomic number, AAA is the mass number, and M is the isomeric state + (0 if non-isomeric). Arguments: gendf_path (str): File path to the GENDF file being analyzed. - M (str, optional): Identifier of isomer, signified by the letter "M" at the end - of the mass number string. + M (str, optional): Identifier of isomer, signified by the letter "M" + at the end of the mass number string. + Defaults to None and will be otherwise defined internally. Returns: @@ -155,7 +172,6 @@ def extract_gendf_pkza(gendf_path): with open(gendf_path, 'r') as f: first_line = f.readline() - logger.info(f"First line of GENDF file: {first_line}") Z, element, A = first_line.split('-')[:3] Z = int(Z) @@ -197,14 +213,14 @@ def extract_endf_specs(path, filetype): def extract_cross_sections(file, MT): """ - Parse through the contents of a GENDF file section to extract the cross-section - data for a specific reaction type (MT). + Parse through the contents of a GENDF file section to extract the + cross-section data for a specific reaction type (MT). Arguments: - file (ENDFtk.tree.File): ENDFtk file object containing a specific material's - cross-section data. - MT (int): Numerical identifier for the reaction type corresponding to the - file's sectional organization. + file (ENDFtk.tree.File): ENDFtk file object containing a specific + material's cross-section data. + MT (int): Numerical identifier for the reaction type corresponding to + the file's sectional organization. Returns: sigma_list (list): All of the cross-sections for a given reaction type From f50b61715acd237d1a2c856b235c5cf64676d56a Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Tue, 16 Jul 2024 16:53:06 -0500 Subject: [PATCH 56/59] Allowing for fendle_retrofit.py to be executed from DataLib. --- .../fendl32B_retrofit/fendl3_retrofit.py | 9 +++-- src/DataLib/fendl32B_retrofit/groupr_tools.py | 17 ++++++---- .../fendl32B_retrofit/logging_config.py | 5 ++- .../fendl32B_retrofit/reaction_data.py | 33 +++++++++++++++++-- 4 files changed, 51 insertions(+), 13 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 135dbb6..2d39cda 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -395,6 +395,7 @@ def handle_TENDL_downloads(args, mt_dict): gendf_path, gendf_dir = groupr_tools.run_njoy(card_deck, element, A, material_id) + print(type(gendf_dir)) gendf_paths.extend(gendf_path) groupr_tools.njoy_file_cleanup() @@ -403,7 +404,7 @@ def handle_TENDL_downloads(args, mt_dict): ############################################################################## -def fendl3_2b_retrofit(gendf_paths = [], gendf_dir = None): +def fendl3_2b_retrofit(): """ Main method when run as a command line script. """ @@ -411,7 +412,9 @@ def fendl3_2b_retrofit(gendf_paths = [], gendf_dir = None): # Initialize arguments, DataFrame to store data, and load in MT reference args = fendl_args() cumulative_data = rxd.initialize_dataframe() - mt_dict = rxd.process_mt_table('mt_table.csv') + gendf_paths = [] + gendf_dir = None + mt_dict, dir = rxd.process_mt_table('mt_table.csv') # Conditionally download and process files from the TENDL 2017 database if not args.paths: @@ -425,7 +428,7 @@ def fendl3_2b_retrofit(gendf_paths = [], gendf_dir = None): args = args) # Save to CSV - cumulative_data.to_csv('gendf_data.csv', index=False) + cumulative_data.to_csv(f'{dir}/gendf_data.csv', index=False) logger.info('Saved extracted GENDF data to gendf_data.csv') ############################################################################## diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 57c8d24..34adedf 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -2,6 +2,7 @@ import subprocess from logging_config import logger from pathlib import Path +from reaction_data import establish_directory # Define constants NENDF = 20 # unit for endf tape @@ -20,6 +21,7 @@ SIGZ = 0 # sigma zero values (including infinity) MFD = 3 # file to be processed MATD = 0 # next mat number to be processed +DIR = establish_directory() # Dictionary of elements in the Periodic Table elements = [ @@ -133,7 +135,7 @@ def groupr_input_file_writer(cards, MTs): """ # Write the input deck to the groupr.inp file - with open('groupr.inp', 'w') as f: + with open(f'{DIR}/groupr.inp', 'w') as f: f.write('groupr\n') for card_num, card in cards.items(): f.write(format_card(card_num, card, MTs)) @@ -234,8 +236,8 @@ def run_njoy(cards, element, A, matb): """ # Define the input files - INPUT = 'groupr.inp' - OUTPUT = 'groupr.out' + INPUT = f'{DIR}/groupr.inp' + OUTPUT = f'{DIR}/groupr.out' # Run NJOY result = subprocess.run(['njoy'], input=open(INPUT).read(), @@ -246,7 +248,7 @@ def run_njoy(cards, element, A, matb): # If the run is successful, log out the output # and make a copy of the file as a .GENDF file if result.stderr == '': - output = subprocess.run(['cat', 'output'], + output = subprocess.run(['cat', f'{DIR}/output'], capture_output=True, text = True) title = cards[3][0][1:-1] title_index = output.stdout.find(title) @@ -255,7 +257,7 @@ def run_njoy(cards, element, A, matb): f'\n{output.stdout[:title_index + len(title)]}\n' ) - save_directory = './gendf_files' + save_directory = f'{DIR}/gendf_files' gendf_path = set_gendf_saving(save_directory, element, A) subprocess.run(['cp', 'tape31', gendf_path]) ensure_gendf_markers(gendf_path, matb) @@ -276,9 +278,10 @@ def njoy_file_cleanup(output_path = 'njoy_ouput'): None """ - njoy_files = ['groupr.inp', 'groupr.out', 'tape20', 'tape21', 'tape31'] + njoy_files = [f'{DIR}/groupr.inp', f'{DIR}/groupr.out', + 'tape20', 'tape21', 'tape31'] for file in njoy_files: - if file == 'groupr.out': + if file == f'{DIR}/groupr.out': with open(file, 'r') as f: groupr_out = f.read() logger.info( diff --git a/src/DataLib/fendl32B_retrofit/logging_config.py b/src/DataLib/fendl32B_retrofit/logging_config.py index 4974b8d..9fee38a 100644 --- a/src/DataLib/fendl32B_retrofit/logging_config.py +++ b/src/DataLib/fendl32B_retrofit/logging_config.py @@ -1,6 +1,7 @@ # Import packages import logging import textwrap +from reaction_data import establish_directory class CustomFormatter(logging.Formatter): """ @@ -64,7 +65,9 @@ def filter(self, record): logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) -file_handler = logging.FileHandler('fendl3_retrofit.log', mode='w') +# Ensure that logger is saved in the same directory as the mt_table.csv file +dir = establish_directory() +file_handler = logging.FileHandler(f'{dir}/fendl3_retrofit.log', mode='w') file_handler.setLevel(logging.INFO) formatter = CustomFormatter('%(asctime)s - %(levelname)s') diff --git a/src/DataLib/fendl32B_retrofit/reaction_data.py b/src/DataLib/fendl32B_retrofit/reaction_data.py index 96e9134..d6bbe9b 100644 --- a/src/DataLib/fendl32B_retrofit/reaction_data.py +++ b/src/DataLib/fendl32B_retrofit/reaction_data.py @@ -1,6 +1,7 @@ import csv from numpy import array import pandas as pd +from pathlib import Path # Define a dictionary containing all of the pathways for neutron and proton # changes in a nucleus following neutron activation @@ -146,6 +147,33 @@ def nucleon_changes(emission_dict): return NP_change +def establish_directory(file_path = 'mt_table.csv'): + """ + Determine if the target file is in the current working directory or if it + is in a daughter directory. This is used to allow for + fendl3_retrofit.py to be executed either from its own directory or its + parent directory, while always ensuring the files it produces to be + saved in the directory fendl32B_retrofit. + + Arguments: + file_path (str, optional): Path to the target file. + Defaults to "mt_table.csv" so that files get saved in the same + directory as the input table necessary to run the main program. + + Returns: + dir (str): Directory signifier, either "." if the main program is run + in the same directory as the file associated with file_path or + "fendl32B_retrofit", where the reference file would otherwise be + located if this is being run from the parent directory. + """ + + if Path.exists(Path(file_path)): + dir = '.' + else: + dir = 'fendl32B_retrofit' + + return dir + def process_mt_table(csv_path): """ Load in the mt_table.csv file which contains Table B.1 - @@ -168,7 +196,8 @@ def process_mt_table(csv_path): mt_dict (dict): Dictionary formatted data structure for mt_table.csv, along with changes in KZA and emitted_particles. """ - + dir = establish_directory(csv_path) + csv_path = f'{dir}/{csv_path}' mt_dict = {} with open(csv_path, 'r') as f: @@ -184,4 +213,4 @@ def process_mt_table(csv_path): 'Emitted Particles' : emitted_particles } - return mt_dict \ No newline at end of file + return mt_dict, dir \ No newline at end of file From 4ba725ea1acc2d8ae452fa9cf7b915b754ef4292 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Wed, 17 Jul 2024 11:02:11 -0500 Subject: [PATCH 57/59] Removing unnecessary print statement. --- src/DataLib/fendl32B_retrofit/fendl3_retrofit.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index 2d39cda..d7006e3 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -244,7 +244,9 @@ def search_gendf_directory(args, gendf_dir=None, gendf_paths_from_arg=None): 'No GENDF files found for any of the selected elements.' ) else: - logger.info(f'All files: \n {", ".join(all_gendf_paths)}') + logger.info( + f'All files to be processed: {", ".join(all_gendf_paths)}' + ) return all_gendf_paths @@ -395,7 +397,7 @@ def handle_TENDL_downloads(args, mt_dict): gendf_path, gendf_dir = groupr_tools.run_njoy(card_deck, element, A, material_id) - print(type(gendf_dir)) + gendf_paths.extend(gendf_path) groupr_tools.njoy_file_cleanup() From 625703349da5f7836796fbe531dbcaa6fee03df9 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Wed, 17 Jul 2024 11:08:18 -0500 Subject: [PATCH 58/59] Ensuring that NJOY output is properly handled when program is executed from DataLib directory. --- src/DataLib/fendl32B_retrofit/groupr_tools.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 34adedf..692a638 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -248,7 +248,7 @@ def run_njoy(cards, element, A, matb): # If the run is successful, log out the output # and make a copy of the file as a .GENDF file if result.stderr == '': - output = subprocess.run(['cat', f'{DIR}/output'], + output = subprocess.run(['cat', 'output'], capture_output=True, text = True) title = cards[3][0][1:-1] title_index = output.stdout.find(title) @@ -266,13 +266,14 @@ def run_njoy(cards, element, A, matb): else: logger.error(result.stderr) -def njoy_file_cleanup(output_path = 'njoy_ouput'): +def njoy_file_cleanup(output_path = f'{DIR}/njoy_ouput'): """ Clean up repository from unnecessary intermediate files from NJOY run. Arguments: output_path (str, optional): The save path for the NJOY output. - Defaults to 'njoy_output'. + Defaults to f'{DIR}/njoy_output', which will save the file in the + same directory as all other saved files from the script run. Returns: None From 4921dbae7898e01be527e6f519c0b260ec201dc5 Mon Sep 17 00:00:00 2001 From: Eitan Weinstein Date: Thu, 18 Jul 2024 09:35:07 -0500 Subject: [PATCH 59/59] Small formatting changes before moving over to project individual PRs. --- .../fendl32B_retrofit/fendl3_retrofit.py | 18 +++++++++--------- src/DataLib/fendl32B_retrofit/groupr_tools.py | 4 ++++ src/DataLib/fendl32B_retrofit/reaction_data.py | 10 +++++----- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py index d7006e3..0b452e9 100644 --- a/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py +++ b/src/DataLib/fendl32B_retrofit/fendl3_retrofit.py @@ -269,10 +269,10 @@ def iterate_MTs(MTs, file_obj, mt_dict, pKZA): structure, and the cross-section values for those groups. """ - cross_sections_by_MT = [] - emitted_particles_list = [] - dKZAs = [] - groups = [] + cross_sections_by_MT = [] + emitted_particles_list = [] + dKZAs = [] + groups = [] for MT in MTs: sigma_list = tpp.extract_cross_sections(file_obj, MT) @@ -284,11 +284,11 @@ def iterate_MTs(MTs, file_obj, mt_dict, pKZA): groups.append(len(sigma_list)) gendf_data = pd.DataFrame({ - 'Parent KZA': [pKZA] * len(dKZAs), - 'Daughter KZA': dKZAs, - 'Emitted Particles': emitted_particles_list, - 'Non-Zero Groups' : groups, - 'Cross Sections': cross_sections_by_MT + 'Parent KZA' : [pKZA] * len(dKZAs), + 'Daughter KZA' : dKZAs, + 'Emitted Particles' : emitted_particles_list, + 'Non-Zero Groups' : groups, + 'Cross Sections' : cross_sections_by_MT }) return gendf_data diff --git a/src/DataLib/fendl32B_retrofit/groupr_tools.py b/src/DataLib/fendl32B_retrofit/groupr_tools.py index 692a638..ceb6b66 100644 --- a/src/DataLib/fendl32B_retrofit/groupr_tools.py +++ b/src/DataLib/fendl32B_retrofit/groupr_tools.py @@ -163,6 +163,10 @@ def set_gendf_saving(save_directory, element, A): return gendf_path def text_insertion(string, identifier, new_text, file_lines): + """ + (Add docstring) + """ + index = string.rfind(identifier) line_number = string[:index].count('\n') file_lines.insert(line_number + 1, new_text) diff --git a/src/DataLib/fendl32B_retrofit/reaction_data.py b/src/DataLib/fendl32B_retrofit/reaction_data.py index d6bbe9b..e9f3c9d 100644 --- a/src/DataLib/fendl32B_retrofit/reaction_data.py +++ b/src/DataLib/fendl32B_retrofit/reaction_data.py @@ -28,11 +28,11 @@ def initialize_dataframe(): None """ return pd.DataFrame({ - 'Parent KZA' : [], - 'Daughter KZA' : [], - 'Emitted Particles' : [], - 'Non-Zero Groups' : [], - 'Cross Sections' : [] + 'Parent KZA' : [], + 'Daughter KZA' : [], + 'Emitted Particles' : [], + 'Non-Zero Groups' : [], + 'Cross Sections' : [] }) def count_emitted_particles(particle, emitted_particle_string):