########################################################
# Started Logging At: 2023-02-18 10:10:25
########################################################
########################################################
# # Started Logging At: 2023-02-18 10:10:25
########################################################
########################################################
# Started Logging At: 2023-02-18 19:51:56
########################################################
########################################################
# # Started Logging At: 2023-02-18 19:51:56
########################################################
print("test")
get_ipython().run_line_magic('matplotlib', 'inline')
import pylab as pl
pl.rcParams['figure.facecolor']='w'
import numpy as np
import os
from astropy.utils.data import download_file
from astropy.io import fits
from spectral_cube import SpectralCube
from astropy.visualization import simple_norm
import shutil
from reproject import reproject_from_healpix, reproject_to_healpix

import healpy
target_header = fits.Header.fromstring("""
NAXIS   =                    2
NAXIS1  =                  480
NAXIS2  =                  240
CTYPE1  = 'GLON-MOL'
CRPIX1  =                240.5
CRVAL1  =                  0.0
CDELT1  =               -0.675
CUNIT1  = 'deg     '
CTYPE2  = 'GLAT-MOL'
CRPIX2  =                120.5
CRVAL2  =                  0.0
CDELT2  =                0.675
CUNIT2  = 'deg     '
COORDSYS= 'icrs    '
""", sep='\n')
fn_lfi_30 = 'LFI_SkyMap_030_1024_R2.01_full.fits'
if not os.path.exists(fn_lfi_30):
    lfi_30 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_lfi_30}")
    shutil.move(lfi_30, fn_lfi_30)
lfi_30 = fits.open(fn_lfi_30)
m30 = healpy.read_map(lfi_30)
healpy.mollview(m30, norm=simple_norm(m30, stretch='log'), cbar=False, title='')
array, footprint = reproject_from_healpix(fn_lfi_30, target_header)
from astropy.wcs import WCS
import matplotlib.pyplot as plt
from astropy.visualization.wcsaxes.frame import EllipticalFrame
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(array, norm=simple_norm(array, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn = "HFI_SkyMap_143_2048_R2.02_full.fits"
if not os.path.exists(fn):
    hfi_143 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn}")
    shutil.move(hfi_143, fn)
hfi_143 = fits.open(fn)
m143 = healpy.read_map(lfi_143)
healpy.mollview(m143, norm=simple_norm(m143, stretch='log'), cbar=False, title='')
m143 = healpy.read_map(hfi_143)
healpy.mollview(m143, norm=simple_norm(m143, stretch='log'), cbar=False, title='')
fn = "HFI_SkyMap_857_2048_R2.02_full.fits"
if not os.path.exists(fn):
    hfi_857 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn}")
    shutil.move(hfi_857, fn)
hfi_857 = fits.open(fn)
m857 = healpy.read_map(hfi_857)
healpy.mollview(m857, norm=simple_norm(m857, stretch='log'), cbar=False, title='')
fn = "COM_CompMap_CO21-commander_2048_R2.00.fits"
if not os.path.exists(fn):
    planck_CO21 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn}")
    shutil.move(planck_CO21, fn)
planck_CO21 = fits.open(fn)
mCO21 = healpy.read_map(planck_CO21)
healpy.mollview(mCO21, norm=simple_norm(mCO21, stretch='log', min_cut=0, max_cut=1),
                min=np.percentile(mCO21, 1),
                bgcolor=pl.cm.viridis(0),
                cbar=False, title='')
fn = "COM_CompMap_ThermalDust-commander_2048_R2.00.fits"
if not os.path.exists(fn):
    planck_ThermalDust = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn}")
    shutil.move(planck_ThermalDust, fn)
planck_ThermalDust = fits.open(fn)
mThermalDust = healpy.read_map(planck_ThermalDust)
healpy.mollview(mThermalDust, norm=simple_norm(mThermalDust, stretch='log'), cbar=False, title='')
fn = 'LAB_fullvel.fits'
if not os.path.exists(fn):
    LAB_HI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI/{fn}")
    shutil.move(LAB_HI, fn)
LAB_HI = fits.open(fn)
mLAB_HI = healpy.read_map(LAB_HI)
healpy.mollview(mLAB_HI, norm=simple_norm(mLAB_HI, stretch='asinh'), cbar=False, title='')
fn = 'NHI_HPX.fits'
if not os.path.exists(fn):
    HI4PI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI4PI/{fn}")
    shutil.move(HI4PI, fn)
HI4PI = fits.open(fn)
HI4PI[1].data.s
import os
from astropy.utils.data import download_file
from astropy.io import fits
from spectral_cube import SpectralCube
from astropy.visualization import simple_norm
import shutil
from reproject import reproject_from_healpix, reproject_to_healpix

from astropy.wcs import WCS
import matplotlib.pyplot as plt
from astropy.visualization.wcsaxes.frame import EllipticalFrame

import healpy
img_hfi143, footprint = reproject_from_healpix(fn_hfi_143, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi143, norm=simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_hfi143, footprint = reproject_from_healpix(fn_hfi143, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi143, norm=simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_hfi143 = "HFI_SkyMap_143_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi143):
    hfi_143 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn}")
    shutil.move(hfi_143, fn)
hfi_143 = fits.open(fn)
img_hfi143, footprint = reproject_from_healpix(fn_hfi143, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi143, norm=simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_hfi857 = "HFI_SkyMap_857_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi857):
    hfi857 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn}")
    shutil.move(hfi857, fn)
hfi857 = fits.open(fn)
m857 = healpy.read_map(hfi857)
healpy.mollview(m857, norm=simple_norm(m857, stretch='log'), cbar=False, title='')
img_hfi857, footprint = reproject_from_healpix(fn_hfi857, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi857, norm=simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
m857 = healpy.read_map(hfi857)
healpy.mollview(m857, norm=simple_norm(m857, stretch='log'), cbar=False, title='')
fn_hfi857 = "HFI_SkyMap_857_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi857):
    hfi857 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn}")
    shutil.move(hfi857, fn_hfi857)
hfi857 = fits.open(fn_hfi857)
m857 = healpy.read_map(hfi857)
healpy.mollview(m857, norm=simple_norm(m857, stretch='log'), cbar=False, title='')
img_hfi857, footprint = reproject_from_healpix(fn_hfi857, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi857, norm=simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow([img_lfi30, img_hfi143, img_hfi857])
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow([img_lfi30, img_hfi143, img_hfi857])
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
rgb = np.array([img_lfi30, img_hfi143, img_hfi857])
rgb.shape
#[Out]# (3, 240, 480)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([img_lfi30, img_hfi143, img_hfi857]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='asinh')(img_lfi30),
                simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='asinh')(img_hfi143),
                simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='asinh')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
0.3375*2
#[Out]# 0.675
target_header = fits.Header.fromstring("""
NAXIS   =                    2
NAXIS1  =                  960
NAXIS2  =                  480
CTYPE1  = 'GLON-MOL'
CRPIX1  =                480.5
CRVAL1  =                  0.0
CDELT1  =              -0.3375
CUNIT1  = 'deg     '
CTYPE2  = 'GLAT-MOL'
CRPIX2  =                240.5
CRVAL2  =                  0.0
CDELT2  =               0.3375
CUNIT2  = 'deg     '
COORDSYS= 'icrs    '
""", sep='\n')
target_header = fits.Header.fromstring("""
NAXIS   =                    2
NAXIS1  =                  960
NAXIS2  =                  480
CTYPE1  = 'GLON-MOL'
CRPIX1  =                480.5
CRVAL1  =                  0.0
CDELT1  =              -0.3375
CUNIT1  = 'deg     '
CTYPE2  = 'GLAT-MOL'
CRPIX2  =                240.5
CRVAL2  =                  0.0
CDELT2  =               0.3375
CUNIT2  = 'deg     '
COORDSYS= 'icrs    '
""", sep='\n')
fn_lfi_30 = 'LFI_SkyMap_030_1024_R2.01_full.fits'
if not os.path.exists(fn_lfi_30):
    lfi_30 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_lfi_30}")
    shutil.move(lfi_30, fn_lfi_30)
lfi_30 = fits.open(fn_lfi_30)
m30 = healpy.read_map(lfi_30)
healpy.mollview(m30, norm=simple_norm(m30, stretch='log'), cbar=False, title='')
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_hfi143 = "HFI_SkyMap_143_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi143):
    hfi143 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn}")
    shutil.move(hfi143, fn_hfi143)
hfi143 = fits.open(fn_hfi143)
m143 = healpy.read_map(hfi143)
healpy.mollview(m143, norm=simple_norm(m143, stretch='log'), cbar=False, title='')
img_hfi143, footprint = reproject_from_healpix(fn_hfi143, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi143, norm=simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_hfi857 = "HFI_SkyMap_857_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi857):
    hfi857 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn}")
    shutil.move(hfi857, fn_hfi857)
hfi857 = fits.open(fn_hfi857)
m857 = healpy.read_map(hfi857)
healpy.mollview(m857, norm=simple_norm(m857, stretch='log'), cbar=False, title='')
img_hfi857, footprint = reproject_from_healpix(fn_hfi857, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi857, norm=simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='asinh')(img_lfi30),
                simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='asinh')(img_hfi143),
                simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='asinh')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn = "COM_CompMap_CO21-commander_2048_R2.00.fits"
if not os.path.exists(fn):
    planck_CO21 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn}")
    shutil.move(planck_CO21, fn)
planck_CO21 = fits.open(fn)
mCO21 = healpy.read_map(planck_CO21)
healpy.mollview(mCO21, norm=simple_norm(mCO21, stretch='log', min_cut=0, max_cut=1),
                min=np.percentile(mCO21, 1),
                bgcolor=pl.cm.viridis(0),
                cbar=False, title='')
fn = "COM_CompMap_ThermalDust-commander_2048_R2.00.fits"
if not os.path.exists(fn):
    planck_ThermalDust = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn}")
    shutil.move(planck_ThermalDust, fn)
planck_ThermalDust = fits.open(fn)
mThermalDust = healpy.read_map(planck_ThermalDust)
healpy.mollview(mThermalDust, norm=simple_norm(mThermalDust, stretch='log'), cbar=False, title='')
fn = 'LAB_fullvel.fits'
if not os.path.exists(fn):
    LAB_HI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI/{fn}")
    shutil.move(LAB_HI, fn)
LAB_HI = fits.open(fn)
mLAB_HI = healpy.read_map(LAB_HI)
healpy.mollview(mLAB_HI, norm=simple_norm(mLAB_HI, stretch='asinh'), cbar=False, title='')
fn = 'NHI_HPX.fits'
if not os.path.exists(fn):
    HI4PI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI4PI/{fn}")
    shutil.move(HI4PI, fn)
HI4PI = fits.open(fn)
fn_CO21 = "COM_CompMap_CO21-commander_2048_R2.00.fits"
if not os.path.exists(fn_CO21):
    planck_CO21 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn}")
    shutil.move(planck_CO21, fn_CO21)
planck_CO21 = fits.open(fn_CO21)
img_CO21, footprint = reproject_from_healpix(fn_CO21, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_CO21, norm=simple_norm(img_CO21, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=1, max_percent=99.9, stretch='asinh')(img_lfi30),
                simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='asinh')(img_hfi143),
                simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='asinh')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=1, max_percent=99.9, stretch='asinh')(img_lfi30),
                simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='asinh')(img_hfi143),
                simple_norm(img_hfi857, min_percent=1, max_percent=99.9, stretch='asinh')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=1, max_percent=99.9, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=1, max_percent=99.9, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=0.01, max_percent=99.9, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.9, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
get_ipython().run_line_magic('pinfo', 'simple_norm')
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=0.01, max_percent=99.9, log_a=1e4, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=1e4, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.9, log_a=1e4, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30, min_percent=0.01, max_percent=99.9, log_a=1e2, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=1e2, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.9, log_a=1e2, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=1e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=1e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_ThermalDust = "COM_CompMap_ThermalDust-commander_2048_R2.00.fits"
if not os.path.exists(fn_ThermalDust):
    planck_ThermalDust = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn}")
    shutil.move(planck_ThermalDust, fn_ThermalDust)
planck_ThermalDust = fits.open(fn_ThermalDust)
img_CO21, footprint = reproject_from_healpix(fn_CO21, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_CO21, norm=simple_norm(img_CO21, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_ThermalDust, footprint = reproject_from_healpix(fn_ThermalDust, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_ThermalDust, norm=simple_norm(img_ThermalDust, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_HI = 'LAB_fullvel.fits'
if not os.path.exists(fn_HI):
    LAB_HI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI/{fn_HI}")
    shutil.move(LAB_HI, fn_HI)
LAB_HI = fits.open(fn_HI)
fn_HI4PI = 'NHI_HPX.fits'
if not os.path.exists(fn_HI4PI):
    HI4PI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI4PI/{fn_HI4PI}")
    shutil.move(HI4PI, fn_HI4PI)
HI4PI = fits.open(fn_HI4PI)
mHI4PI = healpy.read_map(HI4PI, field=4)
healpy.mollview(mHI4PI, norm=simple_norm(mHI4PI, stretch='asinh'), cbar=False, title='')
healpy.cartview(mHI4PI, norm=simple_norm(mHI4PI, stretch='asinh'), cbar=False, title='',
                notext=True, lonra=[-20,20], latra=[-10,10])
from astropy import units as u
if os.path.exists("GC.hi.tb.allgal.fits.gz"):
    hi_cube_fh = fits.open("GC.hi.tb.allgal.fits.gz")
else:
    hi_cube_fh = download_file("http://www.atnf.csiro.au/research/HI/sgps/SGPS_1/GC.hi.tb.allgal.fits.gz")
hi_cube = SpectralCube.read(hi_cube_fh, use_dask=True)
import os
from astropy.utils.data import download_file
from astropy.io import fits
from spectral_cube import SpectralCube
from astropy.visualization import simple_norm
import shutil
from reproject import reproject_from_healpix, reproject_to_healpix

from astropy.wcs import WCS
import matplotlib.pyplot as plt
from astropy.visualization.wcsaxes.frame import EllipticalFrame

from matplotlib.colors import rgb_to_hsv, hsv_to_rgb 

import healpy
target_header = fits.Header.fromstring("""
NAXIS   =                    2
NAXIS1  =                  960
NAXIS2  =                  480
CTYPE1  = 'GLON-MOL'
CRPIX1  =                480.5
CRVAL1  =                  0.0
CDELT1  =              -0.3375
CUNIT1  = 'deg     '
CTYPE2  = 'GLAT-MOL'
CRPIX2  =                240.5
CRVAL2  =                  0.0
CDELT2  =               0.3375
CUNIT2  = 'deg     '
COORDSYS= 'icrs    '
""", sep='\n')
fn_lfi30 = 'LFI_SkyMap_030_1024_R2.01_full.fits'
if not os.path.exists(fn_lfi30):
    lfi30 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_lfi30}")
    shutil.move(lfi30, fn_lfi30)
lfi30 = fits.open(fn_lfi30)
m30 = healpy.read_map(lfi30)
healpy.mollview(m30, norm=simple_norm(m30, stretch='log'), cbar=False, title='')
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_hfi143 = "HFI_SkyMap_143_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi143):
    hfi143 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_hfi143}")
    shutil.move(hfi143, fn_hfi143)
hfi143 = fits.open(fn_hfi143)
m143 = healpy.read_map(hfi143)
healpy.mollview(m143, norm=simple_norm(m143, stretch='log'), cbar=False, title='')
img_hfi143, footprint = reproject_from_healpix(fn_hfi143, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi143, norm=simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_hfi857 = "HFI_SkyMap_857_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi857):
    hfi857 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_hfi857}")
    shutil.move(hfi857, fn_hfi857)
hfi857 = fits.open(fn_hfi857)
m857 = healpy.read_map(hfi857)
healpy.mollview(m857, norm=simple_norm(m857, stretch='log'), cbar=False, title='')
img_hfi857, footprint = reproject_from_healpix(fn_hfi857, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi857, norm=simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_CO21 = "COM_CompMap_CO21-commander_2048_R2.00.fits"
if not os.path.exists(fn_CO21):
    planck_CO21 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn_CO21}")
    shutil.move(planck_CO21, fn_CO21)
planck_CO21 = fits.open(fn_CO21)
mCO21 = healpy.read_map(planck_CO21)
healpy.mollview(mCO21, norm=simple_norm(mCO21, stretch='log', min_cut=0, max_cut=1),
                min=np.percentile(mCO21, 1),
                bgcolor=pl.cm.viridis(0),
                cbar=False, title='')
img_CO21, footprint = reproject_from_healpix(fn_CO21, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_CO21, norm=simple_norm(img_CO21, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_ThermalDust = "COM_CompMap_ThermalDust-commander_2048_R2.00.fits"
if not os.path.exists(fn_ThermalDust):
    planck_ThermalDust = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn_ThermalDust}")
    shutil.move(planck_ThermalDust, fn_ThermalDust)
planck_ThermalDust = fits.open(fn_ThermalDust)
mThermalDust = healpy.read_map(planck_ThermalDust)
healpy.mollview(mThermalDust, norm=simple_norm(mThermalDust, stretch='log'), cbar=False, title='')
img_ThermalDust, footprint = reproject_from_healpix(fn_ThermalDust, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_ThermalDust, norm=simple_norm(img_ThermalDust, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
fn_HI = 'LAB_fullvel.fits'
if not os.path.exists(fn_HI):
    LAB_HI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI/{fn_HI}")
    shutil.move(LAB_HI, fn_HI)
LAB_HI = fits.open(fn_HI)
mLAB_HI = healpy.read_map(LAB_HI)
healpy.mollview(mLAB_HI, norm=simple_norm(mLAB_HI, stretch='asinh'), cbar=False, title='')
fn_HI4PI = 'NHI_HPX.fits'
if not os.path.exists(fn_HI4PI):
    HI4PI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI4PI/{fn_HI4PI}")
    shutil.move(HI4PI, fn_HI4PI)
HI4PI = fits.open(fn_HI4PI)
mHI4PI = healpy.read_map(HI4PI, field=4)
healpy.mollview(mHI4PI, norm=simple_norm(mHI4PI, stretch='asinh'), cbar=False, title='')
healpy.cartview(mHI4PI, norm=simple_norm(mHI4PI, stretch='asinh'), cbar=False, title='',
                notext=True, lonra=[-20,20], latra=[-10,10])
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb_scaled)
hsv[:,:,0] += 0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, field=4, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, target_header, field=4, )
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, target_header, field=4)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, target_header, field=3)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, target_header, field=5)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb_scaled)
hsv[:,:,0] += 0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += 0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.15  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.99, log_a=5e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.99, log_a=1e2, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=1e3, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.99, log_a=1e2, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.95, log_a=1e2, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.95, log_a=5e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.95, log_a=5e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.15  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += 0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
pl.hist(img_CO21)
#[Out]# (array([[ 0., 26.,  0., ...,  0.,  0.,  0.],
#[Out]#         [ 0., 40.,  0., ...,  0.,  0.,  0.],
#[Out]#         [ 0., 50.,  0., ...,  0.,  0.,  0.],
#[Out]#         ...,
#[Out]#         [ 0., 50.,  0., ...,  0.,  0.,  0.],
#[Out]#         [ 0., 40.,  0., ...,  0.,  0.,  0.],
#[Out]#         [ 0., 26.,  0., ...,  0.,  0.,  0.]]),
#[Out]#  array([-127.75212994,  -32.64492164,   62.46228667,  157.56949498,
#[Out]#          252.67670328,  347.78391159,  442.8911199 ,  537.9983282 ,
#[Out]#          633.10553651,  728.21274481,  823.31995312]),
#[Out]#  <a list of 960 BarContainer objects>)
pl.hist(img_CO21.ravel())
#[Out]# (array([4.00000e+00, 3.61716e+05, 4.00000e+02, 1.70000e+01, 5.00000e+00,
#[Out]#         3.00000e+00, 3.00000e+00, 4.00000e+00, 1.00000e+00, 3.00000e+00]),
#[Out]#  array([-127.75212994,  -32.64492164,   62.46228667,  157.56949498,
#[Out]#          252.67670328,  347.78391159,  442.8911199 ,  537.9983282 ,
#[Out]#          633.10553651,  728.21274481,  823.31995312]),
#[Out]#  <BarContainer object of 10 artists>)
img_CO21.max()
#[Out]# nan
def fix_nans(img):
    from astropy.convolution import convolve_fft, Gaussian2DKernel
    kernel = Gaussian2DKernel(3)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img
img_lfi30, footprint = fix_nans(reproject_from_healpix(fn_lfi_30, target_header))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
def fix_nans(img):
    from astropy.convolution import convolve_fft, Gaussian2DKernel
    kernel = Gaussian2DKernel(3)
    print(kernel.shape, img.shape)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img
img_lfi30, footprint = fix_nans(reproject_from_healpix(fn_lfi_30, target_header))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
img_lfi30 = fix_nans(img_lfi30)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
def fix_nans(img):
    from astropy.convolution import convolve_fft, Gaussian2DKernel
    kernel = Gaussian2DKernel(3)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img
img_lfi30.max()
#[Out]# 0.18311390533020222
img_lfi30.shape
#[Out]# (480, 960)
img_lfi30[240, 480]
#[Out]# 0.08952149020673798
img_lfi30[240-2:240+2, 480-2:480+2]
#[Out]# array([[0.04775085, 0.06265866, 0.05720012, 0.04026645],
#[Out]#        [0.09307519, 0.14043916, 0.12252462, 0.06566105],
#[Out]#        [0.07767489, 0.11543623, 0.08952149, 0.05108677],
#[Out]#        [0.02620783, 0.03635891, 0.03243179, 0.02894827]])
img_lfi30[240-2:240+2, :5]
#[Out]# array([[0.0009288 , 0.0008832 , 0.00076149, 0.00077466, 0.00085711],
#[Out]#        [0.00077153, 0.00073054, 0.00057023, 0.00057254, 0.00074503],
#[Out]#        [0.00070947, 0.0007683 , 0.00065404, 0.00061427, 0.00066693],
#[Out]#        [0.0004135 , 0.00055419, 0.00055852, 0.00061204, 0.00069123]])
img_lfi30[240-2:240+2, -5:]
#[Out]# array([[0.00103351, 0.00089888, 0.00078025, 0.00085016, 0.00078458],
#[Out]#        [0.00088877, 0.00070945, 0.00056769, 0.00063693, 0.0006909 ],
#[Out]#        [0.00073597, 0.00059486, 0.0006377 , 0.00061823, 0.00052619],
#[Out]#        [0.00074094, 0.00060941, 0.00045995, 0.00046481, 0.00041411]])
np.where(np.isnan(img_lfi30))
#[Out]# (array([], dtype=int64), array([], dtype=int64))
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
print(np.where(np.isnan(img_lfi30)))
img_lfi30 = fix_nans(img_lfi30)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
print(img_lfi30[badinds])
img_lfi30 = fix_nans(img_lfi30)
print(img_lfi30[badinds])
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
import os
from astropy.utils.data import download_file
from astropy.io import fits
from spectral_cube import SpectralCube
from astropy.visualization import simple_norm
import shutil
from reproject import reproject_from_healpix, reproject_to_healpix

from astropy.wcs import WCS
import matplotlib.pyplot as plt
from astropy.visualization.wcsaxes.frame import EllipticalFrame

from matplotlib.colors import rgb_to_hsv, hsv_to_rgb 

from astropy.convolution import convolve_fft, Gaussian2DKernel
import healpy
def fix_nans(img):
    kernel = Gaussian2DKernel(5)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img
def fix_nans(img):
    kernel = Gaussian2DKernel(5)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
print(img_lfi30[badinds])
img_lfi30 = fix_nans(img_lfi30)
print(img_lfi30[badinds])
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
print(img_lfi30[badinds])
img_lfi30 = fix_nans(img_lfi30)
print(img_lfi30[badinds+1])
print(img_lfi30[badinds])
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
print(img_lfi30[badinds])
img_lfi30 = fix_nans(img_lfi30)
print(img_lfi30[badinds[0]-1, badinds[1]-1])
print(img_lfi30[badinds])
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
pl.imshow(img_lfi30)
#[Out]# <matplotlib.image.AxesImage at 0x2b6b85ecba90>
pl.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#[Out]# <matplotlib.image.AxesImage at 0x2b6b85f57af0>
pl.figure(figsize=(15,8))
pl.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#[Out]# <matplotlib.image.AxesImage at 0x2b6b85fbe6d0>
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
img_lfi30 = fix_nans(img_lfi30)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks(visible=False)
ax.coords['glon'].set_ticks(visible=False)
ax.coords['glat']
#[Out]# <astropy.visualization.wcsaxes.coordinate_helpers.CoordinateHelper at 0x2b6b86029a30>
axg = ax.coords['glat']
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
img_lfi30 = fix_nans(img_lfi30)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
img_hfi143, footprint = reproject_from_healpix(fn_hfi143, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi143, norm=simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
img_hfi857, footprint = reproject_from_healpix(fn_hfi857, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi857, norm=simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
img_CO21, footprint = reproject_from_healpix(fn_CO21, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_CO21, norm=simple_norm(img_CO21, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
img_ThermalDust, footprint = reproject_from_healpix(fn_ThermalDust, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_ThermalDust, norm=simple_norm(img_ThermalDust, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, target_header, field=5)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(-90, 90)
ax.set_ylim(-20, 20)
#[Out]# (-20.0, 20.0)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(-90, 90)
ax.set_ylim(-20, 20)
#[Out]# (-20.0, 20.0)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240:-240)
ax.set_ylim(120:-120)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240, 720)
ax.set_ylim(120, 360)
#[Out]# (120.0, 360.0)
960*2
#[Out]# 1920
0.16775*2
#[Out]# 0.3355
0.16875*2
#[Out]# 0.3375
target_header_medres = fits.Header.fromstring("""
NAXIS   =                    2
NAXIS1  =                  960
NAXIS2  =                  480
CTYPE1  = 'GLON-MOL'
CRPIX1  =                480.5
CRVAL1  =                  0.0
CDELT1  =              -0.3375
CUNIT1  = 'deg     '
CTYPE2  = 'GLAT-MOL'
CRPIX2  =                240.5
CRVAL2  =                  0.0
CDELT2  =               0.3375
CUNIT2  = 'deg     '
COORDSYS= 'icrs    '
""", sep='\n')
target_header = fits.Header.fromstring("""
NAXIS   =                    2
NAXIS1  =                 1920
NAXIS2  =                  960
CTYPE1  = 'GLON-MOL'
CRPIX1  =                960.5
CRVAL1  =                  0.0
CDELT1  =             -0.16875
CUNIT1  = 'deg     '
CTYPE2  = 'GLAT-MOL'
CRPIX2  =                480.5
CRVAL2  =                  0.0
CDELT2  =              0.16875
CUNIT2  = 'deg     '
COORDSYS= 'icrs    '
""", sep='\n')
def fix_nans(img):
    kernel = Gaussian2DKernel(5)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img
fn_lfi30 = 'LFI_SkyMap_030_1024_R2.01_full.fits'
if not os.path.exists(fn_lfi30):
    lfi30 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_lfi30}")
    shutil.move(lfi30, fn_lfi30)
lfi30 = fits.open(fn_lfi30)
m30 = healpy.read_map(lfi30)
healpy.mollview(m30, norm=simple_norm(m30, stretch='log'), cbar=False, title='')
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
img_lfi30 = fix_nans(img_lfi30)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_hfi143 = "HFI_SkyMap_143_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi143):
    hfi143 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_hfi143}")
    shutil.move(hfi143, fn_hfi143)
hfi143 = fits.open(fn_hfi143)
m143 = healpy.read_map(hfi143)
healpy.mollview(m143, norm=simple_norm(m143, stretch='log'), cbar=False, title='')
img_hfi143, footprint = reproject_from_healpix(fn_hfi143, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi143, norm=simple_norm(img_hfi143, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_hfi857 = "HFI_SkyMap_857_2048_R2.02_full.fits"
if not os.path.exists(fn_hfi857):
    hfi857 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/{fn_hfi857}")
    shutil.move(hfi857, fn_hfi857)
hfi857 = fits.open(fn_hfi857)
m857 = healpy.read_map(hfi857)
healpy.mollview(m857, norm=simple_norm(m857, stretch='log'), cbar=False, title='')
img_hfi857, footprint = reproject_from_healpix(fn_hfi857, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_hfi857, norm=simple_norm(img_hfi857, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_CO21 = "COM_CompMap_CO21-commander_2048_R2.00.fits"
if not os.path.exists(fn_CO21):
    planck_CO21 = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn_CO21}")
    shutil.move(planck_CO21, fn_CO21)
planck_CO21 = fits.open(fn_CO21)
mCO21 = healpy.read_map(planck_CO21)
healpy.mollview(mCO21, norm=simple_norm(mCO21, stretch='log', min_cut=0, max_cut=1),
                min=np.percentile(mCO21, 1),
                bgcolor=pl.cm.viridis(0),
                cbar=False, title='')
img_CO21, footprint = reproject_from_healpix(fn_CO21, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_CO21, norm=simple_norm(img_CO21, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_ThermalDust = "COM_CompMap_ThermalDust-commander_2048_R2.00.fits"
if not os.path.exists(fn_ThermalDust):
    planck_ThermalDust = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn_ThermalDust}")
    shutil.move(planck_ThermalDust, fn_ThermalDust)
planck_ThermalDust = fits.open(fn_ThermalDust)
mThermalDust = healpy.read_map(planck_ThermalDust)
healpy.mollview(mThermalDust, norm=simple_norm(mThermalDust, stretch='log'), cbar=False, title='')
img_ThermalDust, footprint = reproject_from_healpix(fn_ThermalDust, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_ThermalDust, norm=simple_norm(img_ThermalDust, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_HI = 'LAB_fullvel.fits'
if not os.path.exists(fn_HI):
    LAB_HI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI/{fn_HI}")
    shutil.move(LAB_HI, fn_HI)
LAB_HI = fits.open(fn_HI)
mLAB_HI = healpy.read_map(LAB_HI)
healpy.mollview(mLAB_HI, norm=simple_norm(mLAB_HI, stretch='asinh'), cbar=False, title='')
fn_HI4PI = 'NHI_HPX.fits'
if not os.path.exists(fn_HI4PI):
    HI4PI = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/HI4PI/{fn_HI4PI}")
    shutil.move(HI4PI, fn_HI4PI)
HI4PI = fits.open(fn_HI4PI)
mHI4PI = healpy.read_map(HI4PI, field=4)
healpy.mollview(mHI4PI, norm=simple_norm(mHI4PI, stretch='asinh'), cbar=False, title='')
healpy.cartview(mHI4PI, norm=simple_norm(mHI4PI, stretch='asinh'), cbar=False, title='',
                notext=True, lonra=[-20,20], latra=[-10,10])
img_HI4PI, footprint = reproject_from_healpix(fn_HI4PI, target_header, field=5)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_HI4PI, norm=simple_norm(img_HI4PI, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.25  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240, 720)
ax.set_ylim(120, 360)
#[Out]# (120.0, 360.0)
img_CO21, footprint = reproject_from_healpix(fn_CO21, target_header)
img_CO21 = fix_nans(img_CO21)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_CO21, norm=simple_norm(img_CO21, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
def fix_nans(img):
    kernel = Gaussian2DKernel(2)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img
img_CO21, footprint = reproject_from_healpix(fn_CO21, target_header)
img_CO21 = fix_nans(img_CO21)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_CO21, norm=simple_norm(img_CO21, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)
#[Out]# (240.0, 720.0)
img_HI4PI_cmz, footprint = reproject_from_healpix(fn_HI4PI, target_header_cmz, field=5)
img_ThermalDust_cmz, footprint = reproject_from_healpix(fn_ThermalDust, target_header_cmz)
img_CO21_cmz, footprint = reproject_from_healpix(fn_CO21, target_header_cmz)

rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
target_header_cmz = fits.Header.fromstring("""
NAXIS   =                    2
NAXIS1  =                 1920
NAXIS2  =                  960
CTYPE1  = 'GLON-MOL'
CRPIX1  =                960.5
CRVAL1  =                  0.0
CDELT1  =                -0.05
CUNIT1  = 'deg     '
CTYPE2  = 'GLAT-MOL'
CRPIX2  =                480.5
CRVAL2  =                  0.0
CDELT2  =                 0.05
CUNIT2  = 'deg     '
COORDSYS= 'icrs    '
""", sep='\n')
img_HI4PI_cmz, footprint = reproject_from_healpix(fn_HI4PI, target_header_cmz, field=5)
img_ThermalDust_cmz, footprint = reproject_from_healpix(fn_ThermalDust, target_header_cmz)
img_CO21_cmz, footprint = reproject_from_healpix(fn_CO21, target_header_cmz)

rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)
#[Out]# (240.0, 720.0)
img_HI4PI_cmz, footprint = reproject_from_healpix(fn_HI4PI, target_header_cmz, field=5)
img_ThermalDust_cmz, footprint = reproject_from_healpix(fn_ThermalDust, target_header_cmz)
img_CO21_cmz, footprint = reproject_from_healpix(fn_CO21, target_header_cmz)

rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
img_HI4PI_cmz, footprint = reproject_from_healpix(fn_HI4PI, target_header_cmz, field=5)
img_ThermalDust_cmz, footprint = reproject_from_healpix(fn_ThermalDust, target_header_cmz)
img_CO21_cmz, footprint = reproject_from_healpix(fn_CO21, target_header_cmz)

rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)
#[Out]# (240.0, 720.0)
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)
#[Out]# (240.0, 720.0)
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)
#[Out]# (240.0, 720.0)
os.path.exists("GC.hi.tb.allgal.fits.gz")
#[Out]# True
from astropy import units as u
os.path.exists("GC.hi.tb.allgal.fits.gz")
#[Out]# True
if os.path.exists("GC.hi.tb.allgal.fits.gz"):
    hi_cube_fh = fits.open("GC.hi.tb.allgal.fits.gz")
else:
    #hi_cube_fh = download_file("http://www.atnf.csiro.au/research/HI/sgps/SGPS_1/GC.hi.tb.allgal.fits.gz")
hi_cube = SpectralCube.read(hi_cube_fh, use_dask=True)
if os.path.exists("GC.hi.tb.allgal.fits.gz"):
    hi_cube_fh = fits.open("GC.hi.tb.allgal.fits.gz")
else:
    print("Not downloaded.")
    #hi_cube_fh = download_file("http://www.atnf.csiro.au/research/HI/sgps/SGPS_1/GC.hi.tb.allgal.fits.gz")
hi_cube = SpectralCube.read(hi_cube_fh, use_dask=True)
get_ipython().run_line_magic('ls', '-lhrt *fits *fits.gz')
get_ipython().run_line_magic('ls', '-lh /orange/adamginsburg/cmz/hi/mcluregriffiths/GC.hi.tb.allgal.fits.gz')
hi_cube_fn = '/orange/adamginsburg/cmz/hi/mcluregriffiths/GC.hi.tb.allgal.fits.gz'
if os.path.exists("GC.hi.tb.allgal.fits.gz"):
    hi_cube_fh = fits.open("GC.hi.tb.allgal.fits.gz")
else:
    print("Not downloaded.")
    #hi_cube_fh = download_file("http://www.atnf.csiro.au/research/HI/sgps/SGPS_1/GC.hi.tb.allgal.fits.gz")
hi_cube = SpectralCube.read(hi_cube_fn, use_dask=True)
hi_cube_fn = '/orange/adamginsburg/cmz/hi/mcluregriffiths/GC.hi.tb.allgal.fits'
if os.path.exists("GC.hi.tb.allgal.fits.gz"):
    hi_cube_fh = fits.open("GC.hi.tb.allgal.fits.gz")
else:
    print("Not downloaded.")
    #hi_cube_fh = download_file("http://www.atnf.csiro.au/research/HI/sgps/SGPS_1/GC.hi.tb.allgal.fits.gz")
hi_cube = SpectralCube.read(hi_cube_fn, use_dask=True)
fits.open(hi_cube_fn
fits.open(hi_cube_fn)
#[Out]# [<astropy.io.fits.hdu.image.PrimaryHDU object at 0x2b6b8148fc10>]
fits.open(hi_cube_fn)[0].data.shape
#[Out]# (1, 800, 1050, 1050)
hi_cube_fn = '/orange/adamginsburg/cmz/hi/mcluregriffiths/GC.hi.tb.allgal.fits'
#if os.path.exists("GC.hi.tb.allgal.fits.gz"):
#    hi_cube_fh = fits.open("GC.hi.tb.allgal.fits.gz")
#else:
#    print("Not downloaded.")
#    #hi_cube_fh = download_file("http://www.atnf.csiro.au/research/HI/sgps/SGPS_1/GC.hi.tb.allgal.fits.gz")
hi_cube = SpectralCube.read(hi_cube_fn, use_dask=True)
pl.imshow(hi_cube.max(axis=0))
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81852970>
pl.imshow(hi_cube.mean(axis=0))
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81a4e1c0>
peak_hi = hi_cube.max(axis=0)
pl.imshow(peak_hi.value)
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81a9eee0>
peak_hi = hi_cube.max(axis=0)
mean_hi = hi_cube.mean(axis=0)
pl.imshow(mean_hi)
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81b24940>
if os.path.exists("DHT02_Center_interp.fits"):
    cube_12co = SpectralCube.read('DHT02_Center_interp.fits', use_dask=True)
else:
    pass
pl.imshow(mean_hi.value)
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81b73460>
pl.imshow(mean_hi.value, vmin=0)
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81bdf550>
if os.path.exists("DHT02_Center_interp.fits"):
    cube_12co = SpectralCube.read('DHT02_Center_interp.fits', use_dask=True)
else:
    pass
peak_co = co_cube.max(axis=0)
mean_co = co_cube.mean(axis=0)
peak_co = cube_12co.max(axis=0)
mean_co = cube_12co.mean(axis=0)
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(mean_hi, vmin=0, transform=ax.get_transform(hi_cube.wcs.celestial))
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81c69370>
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(mean_hi.value, vmin=0, transform=ax.get_transform(hi_cube.wcs.celestial))
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81cc82b0>
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(mean_hi.value, vmin=0, transform=ax.get_transform(hi_cube.wcs.celestial),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81d20ac0>
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(mean_co.value, vmin=0, transform=ax.get_transform(cube_12co.wcs.celestial),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81d7db80>
if os.path.exists('GalacticCenterMosaic_downsampled4x_2kms.fits'):
    co_cube = SpectralCube.read('GalacticCenterMosaic_downsampled4x_2kms.fits', use_dask=True)
peak_co = co_cube.max(axis=0)
mean_co = co_cube.mean(axis=0)
if os.path.exists("DHT02_Center_interp.fits"):
    cube_dame12co = SpectralCube.read('DHT02_Center_interp.fits', use_dask=True)
else:
    pass
peak_dameco = cube_dame12co.max(axis=0)
mean_dameco = cube_dame12co.mean(axis=0)
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(mean_dameco.value, vmin=0, transform=ax.get_transform(cube_dame12co.wcs.celestial),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81df2d60>
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(mean_co.value, vmin=0, transform=ax.get_transform(co_cube.wcs.celestial),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81e50910>
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(max_co.value, vmin=0, transform=ax.get_transform(co_cube.wcs.celestial),
          cmap='gray')
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(peak_co.value, vmin=0, transform=ax.get_transform(co_cube.wcs.celestial),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81f0caf0>
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(peak_co.value,
          norm=simple_norm(peak_co.value, min_percent=0.1, max_percent=99.9, stretch='asinh'),
          vmin=0, transform=ax.get_transform(co_cube.wcs.celestial),
          cmap='gray')
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(peak_co.value,
          norm=simple_norm(peak_co.value, min_percent=0.1, max_percent=99.9, stretch='asinh'),
          transform=ax.get_transform(co_cube.wcs.celestial),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b81fde5e0>
atlasgal = fits.open('/orange/adamginsburg/galactic_plane_surveys/atlasgal/AG-Laboca-Planck.4.5.fits')
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(atlasgal[0].data,
          norm=simple_norm(peak_co.value, min_percent=0.1, max_percent=99.9, stretch='asinh'),
          transform=ax.get_transform(atlasgal[0].header),
          cmap='gray')
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(atlasgal[0].data,
          norm=simple_norm(atlasgal[0].data, min_percent=0.1, max_percent=99.9, stretch='asinh'),
          transform=ax.get_transform(WCS(atlasgal[0].header)),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b820cd490>
atlasgal = fits.open('/orange/adamginsburg/galactic_plane_surveys/atlasgal/MOSAICS/apex_planck.fits')
print(atlasgal[0].data.shape)
rgb = np.array([simple_norm(img_HI4PI_cmz,       min_percent=0.01, max_percent=99.99, log_a=1e1, stretch='log')(img_HI4PI_cmz),
                simple_norm(img_CO21_cmz,        min_percent=0.01, max_percent=99.99, log_a=3e1, stretch='log')(img_CO21_cmz),
                simple_norm(img_ThermalDust_cmz, min_percent=0.01, max_percent=99.99, log_a=5e2, stretch='log')(img_ThermalDust_cmz)]).T.swapaxes(0,1)
hsv = rgb_to_hsv(rgb)
hsv[:,:,0] += -0.35  # 0.25 = 90/360
hsv[:,:,0] = hsv[:,:,0] % 1 
rgb_scaled = hsv_to_rgb(hsv)

plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header_cmz),)
                 #frame_class=EllipticalFrame)
ax.imshow(rgb_scaled)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
ax.set_xlim(240*2, 720*2)
ax.set_ylim(120*2, 360*2)

ax.imshow(atlasgal[0].data,
          norm=simple_norm(atlasgal[0].data, min_percent=0.1, max_percent=99.9, stretch='asinh'),
          transform=ax.get_transform(WCS(atlasgal[0].header)),
          cmap='gray')
#[Out]# <matplotlib.image.AxesImage at 0x2b6b820ec580>
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)
ax.imshow(rgb)
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
pl.savefig('Planck_RGB_30-143-857.png', bbox_inches='tight')
def make_rgb(rgb, basename):
    plt.figure(figsize=(10,5), dpi=200)
    ax = plt.subplot(1,1,1, projection=WCS(target_header),
                     frame_class=EllipticalFrame)
    #ax.coords.grid(color='white')
    ax.coords['glat'].set_ticklabel(visible=False)
    ax.coords['glon'].set_ticklabel(visible=False)
    ax.coords['glat'].set_ticks_visible(False)
    ax.coords['glon'].set_ticks_visible(False)
    for ind, color in zip((0, 1, 2), ('RGB')):
        rgbc = np.zeros_like(rgb)
        rgbc[:, :, ind] = rgb[:, :, ind]
        ax.imshow(rgbc)
        pl.savefig(f'{basename}_{color}.png', bbox_inches='tight')
    ax.imshow(rgb)
    pl.savefig(f'{basename}_RGB.png', bbox_inches='tight')
make_rgb(rgb, 'Planck_RGB_30-143-857')
get_ipython().run_line_magic('pwd', '')
#[Out]# '/orange/adamginsburg/cmz/DataSetVisualizations'
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust')
get_ipython().run_line_magic('matplotlib', 'inline')
import pylab as pl
pl.rcParams['figure.facecolor']='none'
import numpy as np
img_lfi30, footprint = reproject_from_healpix(fn_lfi_30, target_header)
badinds = np.where(np.isnan(img_lfi30))
img_lfi30 = fix_nans(img_lfi30)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_lfi30, norm=simple_norm(img_lfi30, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
def make_rgb(rgb, basename):
    plt.figure(figsize=(10,5), dpi=200)
    ax = plt.subplot(1,1,1, projection=WCS(target_header),
                     frame_class=EllipticalFrame)
    #ax.coords.grid(color='white')
    ax.coords['glat'].set_ticklabel(visible=False)
    ax.coords['glon'].set_ticklabel(visible=False)
    ax.coords['glat'].set_ticks_visible(False)
    ax.coords['glon'].set_ticks_visible(False)
    for ind, color in zip((0, 1, 2), ('RGB')):
        rgbc = np.zeros_like(rgb)
        rgbc[:, :, ind] = rgb[:, :, ind]
        ax.imshow(rgbc)
        pl.savefig(f'{basename}_{color}.png', bbox_inches='tight', transparent=True)
    ax.imshow(rgb)
    pl.savefig(f'{basename}_RGB.png', bbox_inches='tight', transparent=True)
rgb = np.array([simple_norm(img_lfi30,  min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_lfi30),
                simple_norm(img_hfi143, min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_hfi143),
                simple_norm(img_hfi857, min_percent=0.01, max_percent=99.90, log_a=5e1, stretch='log')(img_hfi857)]).T.swapaxes(0,1)

make_rgb(rgb, 'Planck_RGB_30-143-857')
get_ipython().run_line_magic('matplotlib', 'inline')
import pylab as pl
import numpy as np
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust')
def h_rot(rgb, rot):
    hsv = rgb_to_hsv(rgb)
    hsv[:,:,0] += rot  # 0.25 = 90/360
    hsv[:,:,0] = hsv[:,:,0] % 1 
    rgb_scaled = hsv_to_rgb(hsv)
    return rgb_scaled

def make_rgb(rgb, basename, hsv_rotation=0):
    plt.figure(figsize=(10,5), dpi=200)
    ax = plt.subplot(1,1,1, projection=WCS(target_header),
                     frame_class=EllipticalFrame)
    #ax.coords.grid(color='white')
    ax.coords['glat'].set_ticklabel(visible=False)
    ax.coords['glon'].set_ticklabel(visible=False)
    ax.coords['glat'].set_ticks_visible(False)
    ax.coords['glon'].set_ticks_visible(False)
    for ind, color in zip((0, 1, 2), ('RGB')):
        rgbc = np.zeros_like(rgb)
        rgbc[:, :, ind] = rgb[:, :, ind]
        if hsv_rotation != 0:
            rgbc = h_rot(rgbc, hsv_rotation)
        ax.imshow(rgbc)
        pl.savefig(f'{basename}_{color}.png', bbox_inches='tight', transparent=True)
    if hsv_rotation != 0:
        rgb = h_rot(rgb, hsv_rotation)
    ax.imshow(rgb)
    pl.savefig(f'{basename}_RGB.png', bbox_inches='tight', transparent=True)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust')
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust', -0.25)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust', -0.25, layernames=('HI', 'CO', 'Dust'))
def h_rot(rgb, rot):
    hsv = rgb_to_hsv(rgb)
    hsv[:,:,0] += rot  # 0.25 = 90/360
    hsv[:,:,0] = hsv[:,:,0] % 1 
    rgb_scaled = hsv_to_rgb(hsv)
    return rgb_scaled

def make_rgb(rgb, basename, hsv_rotation=0, layernames='RGB'):
    plt.figure(figsize=(10,5), dpi=200)
    ax = plt.subplot(1,1,1, projection=WCS(target_header),
                     frame_class=EllipticalFrame)
    #ax.coords.grid(color='white')
    ax.coords['glat'].set_ticklabel(visible=False)
    ax.coords['glon'].set_ticklabel(visible=False)
    ax.coords['glat'].set_ticks_visible(False)
    ax.coords['glon'].set_ticks_visible(False)
    for ind, color in zip((0, 1, 2), (layernames)):
        rgbc = np.zeros_like(rgb)
        rgbc[:, :, ind] = rgb[:, :, ind]
        if hsv_rotation != 0:
            rgbc = h_rot(rgbc, hsv_rotation)
        ax.imshow(rgbc)
        pl.savefig(f'{basename}_{color}.png', bbox_inches='tight', transparent=True)
    if hsv_rotation != 0:
        rgb = h_rot(rgb, hsv_rotation)
    ax.imshow(rgb)
    pl.savefig(f'{basename}_RGB.png', bbox_inches='tight', transparent=True)
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust', -0.25, layernames=('HI', 'CO', 'Dust'))
# different colors, overwrites previous
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust', -0.35, layernames=('HI', 'CO', 'Dust'))
def h_rot(rgb, rot):
    hsv = rgb_to_hsv(rgb)
    hsv[:,:,0] += rot  # 0.25 = 90/360
    hsv[:,:,0] = hsv[:,:,0] % 1 
    rgb_scaled = hsv_to_rgb(hsv)
    return rgb_scaled

def make_rgb(rgb, basename, hsv_rotation=0, layernames='RGB',
             axlims=None):
    plt.figure(figsize=(10,5), dpi=200)
    ax = plt.subplot(1,1,1, projection=WCS(target_header),
                     frame_class=EllipticalFrame)
    #ax.coords.grid(color='white')
    ax.coords['glat'].set_ticklabel(visible=False)
    ax.coords['glon'].set_ticklabel(visible=False)
    ax.coords['glat'].set_ticks_visible(False)
    ax.coords['glon'].set_ticks_visible(False)
    for ind, color in zip((0, 1, 2), (layernames)):
        rgbc = np.zeros_like(rgb)
        rgbc[:, :, ind] = rgb[:, :, ind]
        if hsv_rotation != 0:
            rgbc = h_rot(rgbc, hsv_rotation)
        ax.imshow(rgbc)
        pl.savefig(f'{basename}_{color}.png', bbox_inches='tight', transparent=True)
    if hsv_rotation != 0:
        rgb = h_rot(rgb, hsv_rotation)
    ax.imshow(rgb)
    if axlims is not None:
        ax.axis(axlims)
    pl.savefig(f'{basename}_RGB.png', bbox_inches='tight', transparent=True)
# different colors, overwrites previous
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust', -0.35, layernames=('HI', 'CO', 'Dust'),
         axlims=(240, 720, 120, 360))
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust_m0.25', -0.25, layernames=('HI', 'CO', 'Dust'))
# different colors, overwrites previous
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust_m0.35', -0.35, layernames=('HI', 'CO', 'Dust'))
# different colors, overwrites previous
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust_m0.35_zoom', -0.35, layernames=('HI', 'CO', 'Dust'),
         axlims=(240, 720, 120, 360))
# different colors, overwrites previous
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust_m0.35_zoomCMZ', -0.35, layernames=('HI', 'CO', 'Dust'),
         axlims=(240*2, 720*2, 120*2, 360*2))
def h_rot(rgb, rot):
    hsv = rgb_to_hsv(rgb)
    hsv[:,:,0] += rot  # 0.25 = 90/360
    hsv[:,:,0] = hsv[:,:,0] % 1 
    rgb_scaled = hsv_to_rgb(hsv)
    return rgb_scaled

def make_rgb(rgb, basename, hsv_rotation=0, layernames='RGB',
             axlims=None, frame_class=EllipticalFrame):
    plt.figure(figsize=(10,5), dpi=200)
    ax = plt.subplot(1,1,1, projection=WCS(target_header),
                     frame_class=frame_class)
    #ax.coords.grid(color='white')
    ax.coords['glat'].set_ticklabel(visible=False)
    ax.coords['glon'].set_ticklabel(visible=False)
    ax.coords['glat'].set_ticks_visible(False)
    ax.coords['glon'].set_ticks_visible(False)
    for ind, color in zip((0, 1, 2), (layernames)):
        rgbc = np.zeros_like(rgb)
        rgbc[:, :, ind] = rgb[:, :, ind]
        if hsv_rotation != 0:
            rgbc = h_rot(rgbc, hsv_rotation)
        ax.imshow(rgbc)
        pl.savefig(f'{basename}_{color}.png', bbox_inches='tight', transparent=True)
    if hsv_rotation != 0:
        rgb = h_rot(rgb, hsv_rotation)
    ax.imshow(rgb)
    if axlims is not None:
        ax.axis(axlims)
    pl.savefig(f'{basename}_RGB.png', bbox_inches='tight', transparent=True)
# different colors, overwrites previous
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust_m0.35_zoom', -0.35, layernames=('HI', 'CO', 'Dust'),
         axlims=(240, 720, 120, 360), frame_class=None)
# different colors, overwrites previous
rgb = np.array([simple_norm(img_HI4PI,       min_percent=0.01, max_percent=99.99, log_a=2e1, stretch='log')(img_HI4PI),
                simple_norm(img_CO21,        min_percent=0.01, max_percent=99.90, log_a=2e1, stretch='log')(img_CO21),
                simple_norm(img_ThermalDust, min_percent=0.01, max_percent=99.90, log_a=5e2, stretch='log')(img_ThermalDust)]).T.swapaxes(0,1)
make_rgb(rgb, 'HI-CO-Dust_m0.35_zoomCMZ', -0.35, layernames=('HI', 'CO', 'Dust'),
         axlims=(240*2, 720*2, 120*2, 360*2), frame_class=None)
fn_chipass = "lambda_chipass_HPX_r10.fits"
if not os.path.exists(fn_chipass):
    chipass = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/chipass/{fn_chipass}")
    shutil.move(chipass, fn_chipass)
chipass = fits.open(fn_chipass)
img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_chipass = "lambda_chipass_HPX_r10.fits"
if not os.path.exists(fn_chipass):
    chipass = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/chipass/{fn_chipass}")
    shutil.move(chipass, fn_chipass)
chipass = fits.open(fn_chipass)
chipass
#[Out]# [<astropy.io.fits.hdu.image.PrimaryHDU object at 0x2b6b828c7490>]
fn_chipass = "lambda_chipass_HPX_r10.fits"
if not os.path.exists(fn_chipass):
    chipass = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/chipass/{fn_chipass}")
    shutil.move(chipass, fn_chipass)
chipass = fits.open(fn_chipass)
chipass[0].data
#[Out]# array([[ 4.0326079e+03,  4.0384629e+03,  4.0515142e+03, ...,
#[Out]#                    nan,            nan,            nan],
#[Out]#        [ 4.0275764e+03,  4.0395645e+03,  4.0547297e+03, ...,
#[Out]#                    nan,            nan,            nan],
#[Out]#        [ 4.0134336e+03,  4.0256304e+03,  4.0496831e+03, ...,
#[Out]#                    nan,            nan,            nan],
#[Out]#        ...,
#[Out]#        [           nan,            nan,            nan, ...,
#[Out]#         -1.0000000e+30, -1.0000000e+30, -1.0000000e+30],
#[Out]#        [           nan,            nan,            nan, ...,
#[Out]#         -1.0000000e+30, -1.0000000e+30, -1.0000000e+30],
#[Out]#        [           nan,            nan,            nan, ...,
#[Out]#         -1.0000000e+30, -1.0000000e+30, -1.0000000e+30]], dtype=float32)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[0].data
header = chipass[0].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 frame_class=EllipticalFrame)
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[0].data
header = chipass[0].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#fn_chipass = "lambda_chipass_HPX_r10.fits"
fn_chipass = "lambda_chipass_zea.fits"
if not os.path.exists(fn_chipass):
    chipass = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/chipass/{fn_chipass}")
    shutil.move(chipass, fn_chipass)
chipass = fits.open(fn_chipass)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[0].data
header = chipass[0].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_akari65 = "akari_mollweide_65_1_4096.fits"
if not os.path.exists(fn_akari65):
    akari65 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari65}")
    shutil.move(akari65, fn_akari65)
akari65 = fits.open(fn_akari65)
#img_akari65, footprint = reproject_from_healpix(fn_akari65, target_header)
img_akari65 = akari65[0].data
header = akari65[0].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari65, norm=simple_norm(img_akari65, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
chipass
#[Out]# [<astropy.io.fits.hdu.image.PrimaryHDU object at 0x2b6b829cee20>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b82a50970>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b82a507c0>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b815fdb50>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b815fd160>]
chipass[0].data
chipass[1].data
#[Out]# array([[0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        ...,
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.]], dtype=float32)
chipass[1].header
#[Out]# XTENSION= 'IMAGE   '           / IMAGE extension                                
#[Out]# BITPIX  =                  -32 / Number of bits per data pixel                  
#[Out]# NAXIS   =                    2 / Number of data axes                            
#[Out]# NAXIS1  =                 2048 /                                                
#[Out]# NAXIS2  =                 2048 /                                                
#[Out]# PCOUNT  =                    0 / No Group Parameters                            
#[Out]# GCOUNT  =                    1 / One Data Group                                 
#[Out]# EXTNAME = 'TEMPERATURE_NORTH'  /                                                
#[Out]# CTYPE1  = 'GLON-ZEA'           / Coordinate Type                                
#[Out]# CTYPE2  = 'GLAT-ZEA'           / Coordinate Type                                
#[Out]# EQUINOX =              2000.00 / Equinox of Ref. Coord.                         
#[Out]# CDELT1  =     -0.0791293606162 / Degrees / Pixel                                
#[Out]# CDELT2  =      0.0791293606162 / Degrees / Pixel                                
#[Out]# CROTA2  =              0.00000 / Rotation Angle (Degrees)                       
#[Out]# CRPIX1  =              1024.50 / Reference Pixel in X                           
#[Out]# CRPIX2  =              1024.50 / Reference Pixel in Y                           
#[Out]# CRVAL1  =       270.0000000000 / Galactic longitude of reference pixel          
#[Out]# CRVAL2  =        90.0000000000 / Galactic latitude of reference pixel           
#[Out]# LONPOLE =        0.00000000000 / Native longitude of Galactic pole              
#[Out]# LATPOLE =       90.00000000000 / Galactic latitude of native pole               
#[Out]# PV2_1   =        0.00000000000 /Projection parameter 1                          
#[Out]# HISTORY PUTAST: Apr  1 15:55:31 2014 World Coordinate System parameters written 
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[2].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[3].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[4].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[5].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
chipass
#[Out]# [<astropy.io.fits.hdu.image.PrimaryHDU object at 0x2b6b829cee20>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b82a50970>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b82a507c0>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b815fdb50>, <astropy.io.fits.hdu.image.ImageHDU object at 0x2b6b815fd160>]
chipass.fileinfo()
chipass.info()
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='linear'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
img_chipass[img_chipass == 0] = np.nan
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='linear'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
img_chipass[img_chipass == 0] = np.nan
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='asinh'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
pl.hist(img_chipass.ravel())
#[Out]# (array([1384040.,       0.,       0.,       0.,       0.,       0.,
#[Out]#               0.,       0.,       0., 1910053.]),
#[Out]#  array([-1.1000000e+30, -9.9000001e+29, -8.8000000e+29, -7.6999999e+29,
#[Out]#         -6.5999998e+29, -5.5000001e+29, -4.4000000e+29, -3.2999999e+29,
#[Out]#         -2.2000000e+29, -1.1000000e+29,  4.8841652e+04], dtype=float32),
#[Out]#  <BarContainer object of 10 artists>)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
img_chipass[img_chipass <= 0] = np.nan
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='asinh'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#fn_chipass = "lambda_chipass_HPX_r10.fits"
fn_chipass = "lambda_chipass_mollweide.fits"
if not os.path.exists(fn_chipass):
    chipass = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/chipass/{fn_chipass}")
    shutil.move(chipass, fn_chipass)
chipass = fits.open(fn_chipass)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
img_chipass[img_chipass <= 0] = np.nan
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='asinh'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
akari65.info()
#img_akari65, footprint = reproject_from_healpix(fn_akari65, target_header)
img_akari65 = akari65[1].data
header = akari65[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari65, norm=simple_norm(img_akari65, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data + chipass[2].data
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
img_chipass[img_chipass <= 0] = np.nan
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='asinh'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_chipass, footprint = reproject_from_healpix(fn_chipass, target_header)
img_chipass = chipass[1].data
img_chipass[img_chipass <= 0] = chipass[2].data[img_chipass <= 0]
img_chipass[img_chipass <= 0] = np.nan
header = chipass[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_chipass, norm=simple_norm(img_chipass, min_percent=1, max_percent=99.99, stretch='asinh'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_halpha = "Halpha_map.fits"
if not os.path.exists(fn_halpha):
    halpha = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/fink_halpha/{fn_halpha}")
    shutil.move(halpha, fn_halpha)
halpha = fits.open(fn_halpha)
halpha.info()
#img_halpha, footprint = reproject_from_healpix(fn_halpha, target_header)
img_halpha = halpha[0].data
header = halpha[0].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_halpha, norm=simple_norm(img_halpha, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_akari90 = "akari_mollweide_65_1_4096.fits"
if not os.path.exists(fn_akari90):
    akari90 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari90}")
    shutil.move(akari90, fn_akari90)
akari90 = fits.open(fn_akari90)
#img_akari90, footprint = reproject_from_healpix(fn_akari90, target_header)
img_akari90 = akari90[1].data
header = akari90[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari90, norm=simple_norm(img_akari90, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_akari140 = "akari_mollweide_65_1_4096.fits"
if not os.path.exists(fn_akari140):
    akari140 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari140}")
    shutil.move(akari140, fn_akari140)
akari140 = fits.open(fn_akari140)
#img_akari140, footprint = reproject_from_healpix(fn_akari140, target_header)
img_akari140 = akari140[1].data
header = akari140[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari140, norm=simple_norm(img_akari140, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_akari140 = "akari_mollweide_140_1_4096.fits"
if not os.path.exists(fn_akari140):
    akari140 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari140}")
    shutil.move(akari140, fn_akari140)
akari140 = fits.open(fn_akari140)
fn_akari140 = "akari_mollweide_WideL_1_4096.fits"
if not os.path.exists(fn_akari140):
    akari140 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari140}")
    shutil.move(akari140, fn_akari140)
akari140 = fits.open(fn_akari140)
fn_akari90 = "akari_mollweide_WideS_1_4096.fits"
if not os.path.exists(fn_akari90):
    akari90 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari90}")
    shutil.move(akari90, fn_akari90)
akari90 = fits.open(fn_akari90)
#img_akari90, footprint = reproject_from_healpix(fn_akari90, target_header)
img_akari90 = akari90[1].data
header = akari90[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari90, norm=simple_norm(img_akari90, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_akari140 = "akari_mollweide_WideL_1_4096.fits"
if not os.path.exists(fn_akari140):
    akari140 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari140}")
    shutil.move(akari140, fn_akari140)
akari140 = fits.open(fn_akari140)
#img_akari140, footprint = reproject_from_healpix(fn_akari140, target_header)
img_akari140 = akari140[1].data
header = akari140[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari140, norm=simple_norm(img_akari140, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_akari160 = "akari_mollweide_160_1_4096.fits"
if not os.path.exists(fn_akari160):
    akari160 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/akari/images/{fn_akari160}")
    shutil.move(akari160, fn_akari160)
akari160 = fits.open(fn_akari160)
#img_akari160, footprint = reproject_from_healpix(fn_akari160, target_header)
img_akari160 = akari160[1].data
header = akari160[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari160, norm=simple_norm(img_akari160, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_akari140, footprint = reproject_from_healpix(fn_akari140, target_header)
img_akari140 = fix_nans(akari140[1].data)
header = akari140[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari140, norm=simple_norm(img_akari140, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_akari160, footprint = reproject_from_healpix(fn_akari160, target_header)
img_akari160 = fix_nan(akari160[1].data)
header = akari160[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari160, norm=simple_norm(img_akari160, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_akari160, footprint = reproject_from_healpix(fn_akari160, target_header)
img_akari160 = fix_nans(akari160[1].data)
header = akari160[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari160, norm=simple_norm(img_akari160, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
np.where(0, np.nan, akari160[1].data)
#[Out]# array([[0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        ...,
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.],
#[Out]#        [0., 0., 0., ..., 0., 0., 0.]], dtype=float32)
np.where(akari160[1].data == 0, np.nan, akari160[1].data)
#[Out]# array([[nan, nan, nan, ..., nan, nan, nan],
#[Out]#        [nan, nan, nan, ..., nan, nan, nan],
#[Out]#        [nan, nan, nan, ..., nan, nan, nan],
#[Out]#        ...,
#[Out]#        [nan, nan, nan, ..., nan, nan, nan],
#[Out]#        [nan, nan, nan, ..., nan, nan, nan],
#[Out]#        [nan, nan, nan, ..., nan, nan, nan]], dtype=float32)
#img_akari160, footprint = reproject_from_healpix(fn_akari160, target_header)
img_akari160 = fix_nans(np.where(akari160[1].data == 0, np.nan, akari160[1].data))
header = akari160[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari160, norm=simple_norm(img_akari160, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_akari140, footprint = reproject_from_healpix(fn_akari140, target_header)
img_akari140 = fix_nans(np.where(akari140[1].data == 0, np.nan, akari140[1].data))
header = akari140[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari140, norm=simple_norm(img_akari140, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_akari90, footprint = reproject_from_healpix(fn_akari90, target_header)
img_akari90 = fix_nans(np.where(akari90[1].data == 0, np.nan, akari90[1].data))
header = akari90[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari90, norm=simple_norm(img_akari90, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_akari65, footprint = reproject_from_healpix(fn_akari65, target_header)
img_akari65 = fix_nans(np.where(akari65[1].data == 0, np.nan, akari65[1].data))
header = akari65[1].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_akari65, norm=simple_norm(img_akari65, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_sve1420 = "STOCKERT+VILLA-ELISA_1420MHz_1_256.fits"
if not os.path.exists(fn_sve1420):
    sve1420 = download_file(f"https://lambda.gsfc.nasa.gov/data/foregrounds/reich_reich/{fn_sve1420}")
    shutil.move(sve1420, fn_sve1420)
sve1420 = fits.open(fn_sve1420)
img_sve1420, footprint = reproject_from_healpix(fn_sve1420, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_sve1420, norm=simple_norm(img_sve1420, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_freefree = "COM_CompMap_freefree-commander_0256_R2.00.fits"
if not os.path.exists(fn_freefree):
    planck_freefree = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn_freefree}")
    shutil.move(planck_freefree, fn_freefree)
planck_freefree = fits.open(fn_freefree)
img_freefree, footprint = reproject_from_healpix(fn_freefree, target_header)
img_freefree = fix_nans(img_freefree)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_freefree, norm=simple_norm(img_freefree, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_synchrotron = "COM_CompMap_Synchrotron-commander_0256_R2.00.fits"
if not os.path.exists(fn_synchrotron):
    planck_synchrotron = download_file(f"https://irsa.ipac.caltech.edu/data/Planck/release_2/all-sky-maps/maps/component-maps/foregrounds/{fn_synchrotron}")
    shutil.move(planck_synchrotron, fn_synchrotron)
planck_synchrotron = fits.open(fn_synchrotron)
img_synchrotron, footprint = reproject_from_healpix(fn_synchrotron, target_header)
img_synchrotron = fix_nans(img_synchrotron)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame)
ax.imshow(img_synchrotron, norm=simple_norm(img_synchrotron, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
fn_rosat5 = "RASS_SXRB_R5.fits"
if not os.path.exists(fn_rosat5):
    rosat5 = download_file(f"https://www.jb.man.ac.uk/research/cosmos/rosat/{fn_rosat5}")
    shutil.move(rosat5, fn_rosat5)
rosat5 = fits.open(fn_rosat5)
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5 = rosat5[0].data
header = rosat5[0].header
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(header),
                 #frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5 = fix_nans(img_rosat5)
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5 = fix_nans(np.where(img_rosat5==0, np.nan, img_rosat5))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
rosat5
#[Out]# [<astropy.io.fits.hdu.image.PrimaryHDU object at 0x2b6b824c40d0>, <astropy.io.fits.hdu.table.BinTableHDU object at 0x2b6b8648c4c0>]
rosat5[1].data
#[Out]# FITS_rec([([1.49588661e+01, 4.50610781e+00, 3.18872452e+01, 2.26882534e+01, 3.05574856e+01, 3.63407288e+01, 2.73925896e+01, 2.68128586e+01, 4.95065765e+01, 3.38679466e+01, 6.54470673e+01, 5.83736153e+01, 2.70152435e+01, 3.39361801e+01, 3.92069817e+01, 3.30878220e+01, 2.37086945e+01, 3.43528328e+01, 1.19546394e+01, 2.23490562e+01, 4.15421638e+01, 2.45013199e+01, 6.50889130e+01, 4.76067047e+01, 2.20920601e+01, 3.59367142e+01, 2.13649063e+01, 1.97959137e+01, 6.02897568e+01, 5.40676384e+01, 4.78777390e+01, 4.83310699e+01, 8.77415848e+01, 8.22610474e+01, 9.46918030e+01, 9.71712112e+01, 6.78699951e+01, 7.34317627e+01, 9.92845993e+01, 8.70716248e+01, 7.44542389e+01, 1.18527954e+02, 4.41554413e+01, 8.35297241e+01, 1.18426956e+02, 7.23794403e+01, 8.66300659e+01, 7.10720825e+01, 4.78165932e+01, 5.31340179e+01, 5.29759750e+01, 6.05060883e+01, 6.61408463e+01, 5.55218811e+01, 6.64393692e+01, 4.08559608e+01, 4.10554924e+01, 4.14526978e+01, 6.16474876e+01, 6.58881836e+01, 4.93210106e+01, 4.02223969e+01, 4.93999100e+01, 2.66429482e+01, 1.01683121e+01, 4.34732590e+01, 3.32785606e+01, 5.42551765e+01, 5.88801575e+01, 4.48537445e+01, 7.50701294e+01, 7.53737793e+01, 3.71006241e+01, 6.22942581e+01, 5.82648087e+01, 1.35415787e+02, 1.41477325e+02, 1.21496887e+02, 1.61811630e+02, 1.12865784e+02, 3.67974243e+01, 3.25129242e+01, 5.19598007e+01, 1.04183289e+02, 5.55979538e+01, 6.09124527e+01, 8.13326416e+01, 7.10976486e+01, 1.30428696e+02, 1.91792007e+02, 1.10713409e+02, 1.45774063e+02, 1.29922577e+02, 9.38207703e+01, 6.32506638e+01, 6.69780273e+01, 8.68356934e+01, 1.20201210e+02, 5.63298264e+01, 5.79540939e+01, 1.21612923e+02, 9.59245529e+01, 7.75866928e+01, 1.01298035e+02, 3.10074100e+01, 3.11552391e+01, 1.68319778e+01, 2.85301819e+01, 4.16982574e+01, 5.21028252e+01, 4.17644577e+01, 4.41597061e+01, 8.94825974e+01, 6.10097809e+01, 8.48243408e+01, 7.02199631e+01, 5.56343689e+01, 7.62727585e+01, 4.68000870e+01, 6.65232544e+01, 7.75140533e+01, 7.70778198e+01, 7.86682892e+01, 9.13412933e+01, 4.33425751e+01, 4.70298309e+01, 7.09781189e+01, 6.40534286e+01, 3.48491554e+01, 4.28063583e+01, 5.19497757e+01, 4.83712540e+01, 5.04423447e+01, 6.22862244e+01, 4.32207031e+01, 3.11386185e+01, 6.89459000e+01, 5.36740570e+01, 8.09544296e+01, 3.93624573e+01, 4.78623199e+01, 4.12076149e+01, 4.27339897e+01, 2.87252121e+01, 8.91476974e+01, 8.68670959e+01, 4.98509979e+01, 7.19278717e+01, 4.15674057e+01, 1.31098824e+01, 4.30083961e+01, 2.51432533e+01, 3.47669754e+01, 5.58509026e+01, 3.05860062e+01, 3.74959221e+01, 5.21317520e+01, 2.05922108e+01, 2.69010544e+01, 1.95251427e+01, 6.17157249e+01, 5.29564323e+01, 4.86934433e+01, 4.87578545e+01, 2.86940231e+01, 1.37151632e+01, 4.47651291e+01, 3.35854301e+01, 3.99574738e+01, 4.11598282e+01, 6.26543655e+01, 5.61298370e+01, 5.18993568e+01, 7.49430161e+01, 9.43226776e+01, 9.38528214e+01, 2.51209488e+01, 3.30199356e+01, 6.46742172e+01, 5.70767212e+01, 2.50186920e+01, 5.76662636e+01, 5.76330109e+01, 6.85702438e+01, 6.95913925e+01, 5.91920967e+01, 4.66380157e+01, 3.11865177e+01, 6.54999084e+01, 6.64931183e+01, 4.51948090e+01, 3.81420174e+01, 2.04108467e+01, 4.07609711e+01, 3.95061874e+01, 5.10758858e+01, 3.96312332e+01, 6.11850739e+01, 2.26070251e+01, 3.15385666e+01, 2.53847980e+01, 1.84851475e+01, 4.06705360e+01, 1.77084427e+01, 9.89985466e+00, 1.11833076e+01, 1.48142366e+01, 3.51073990e+01, 9.25371857e+01, 8.39264221e+01, 6.29946594e+01, 3.09847736e+01, 5.66228065e+01, 6.18236732e+01, 4.07749023e+01, 7.34734650e+01, 1.13685913e+01, 2.01905975e+01, 1.33769703e+01, 4.88087540e+01, 5.14783707e+01, 7.50297852e+01, 6.29072647e+01, 5.31211014e+01, 7.46555634e+01, 6.49931107e+01, 7.91459198e+01, 1.07982346e+02, 6.76753082e+01, 5.63206253e+01, 1.04760330e+02, 5.81758690e+01, 7.57519684e+01, 8.99878693e+01, 6.37085495e+01, 7.28909683e+01, 6.62864990e+01, 4.66450157e+01, 6.48073425e+01, 4.87690964e+01, 5.46317978e+01, 6.95024796e+01, 6.06340332e+01, 4.90421600e+01, 5.30401611e+01, 2.47072296e+01, 1.29534702e+01, 1.76873093e+01, 5.01577377e+01, 3.89596710e+01, 4.81433487e+01, 4.43384399e+01, 2.56546288e+01, 8.16555023e+01, 5.72572289e+01, 7.59466324e+01, 7.58886719e+01, 7.63856964e+01, 1.23939209e+02, 1.16034454e+02, 3.89308357e+01, 3.14407806e+01, 4.11021347e+01, 2.13082466e+01, 1.14435989e+02, 7.01642075e+01, 9.18129730e+01, 8.25959702e+01, 2.64169407e+01, 3.94125519e+01, 7.26083221e+01, 1.18490288e+02, 5.28695679e+01, 6.82673645e+01, 2.84919434e+01, 4.35491028e+01, 4.50823555e+01, 4.29741592e+01, 4.93190689e+01, 6.30482101e+01, 4.59395638e+01, 4.12598343e+01, 8.97794647e+01, 6.42837982e+01, 6.39616966e+01, 6.16270142e+01, 8.06729279e+01, 7.02729874e+01, 8.72337036e+01, 8.95836029e+01, 8.20803757e+01, 8.39721832e+01, 1.08897217e+02, 1.22547249e+02, 9.99525833e+01, 6.60780869e+01, 7.12145691e+01, 7.68684540e+01, 6.59459991e+01, 4.89694366e+01, 5.10587387e+01, 4.27264633e+01, 4.40008659e+01, 4.48491707e+01, 7.70543671e+01, 5.27398224e+01, 6.49294052e+01, 7.02085800e+01, 7.24644165e+01, 6.61774597e+01, 8.50872192e+01, 6.82324753e+01, 5.89771652e+01, 9.96423111e+01, 7.18154144e+01, 8.11007080e+01, 9.92617569e+01, 6.79020538e+01, 5.23672867e+01, 5.16777191e+01, 5.92161102e+01, 4.48629074e+01, 6.87359314e+01, 6.70709305e+01, 4.80023003e+01, 3.55010567e+01, 6.92423553e+01, 5.87211380e+01, 6.36840744e+01, 7.80611572e+01, 4.45412254e+01, 5.49597626e+01, 8.36483383e+01, 5.86612320e+01, 9.47616425e+01, 8.89135284e+01, 1.20158482e+01, 3.87795639e+01, 4.61764107e+01, 4.06526794e+01, 7.68370667e+01, 7.11037827e+01, 3.68803787e+01, 5.66920471e+01, 5.32135086e+01, 4.54467773e+01, 6.03151474e+01, 5.13836823e+01, 2.55495071e+01, 3.77223854e+01, 4.29224510e+01, 7.54856033e+01, 5.20617828e+01, 9.14084778e+01, 6.59017792e+01, 9.96291809e+01, 1.12837341e+02, 9.04044647e+01, 1.37727371e+02, 1.20170395e+02, 6.34175949e+01, 6.07374802e+01, 6.17545395e+01, 4.48890457e+01, 1.17244690e+02, 1.32447632e+02, 4.85780563e+01, 7.21635208e+01, 6.94117584e+01, 5.42923737e+01, 7.37256699e+01, 9.44701996e+01, 4.57556877e+01, 5.80035400e+01, 5.53451347e+01, 4.68203354e+01, 8.80716553e+01, 1.07631577e+02, 6.95604858e+01, 7.52553558e+01, 9.28904114e+01, 7.07876434e+01, 6.49952621e+01, 5.50101395e+01, 5.97848358e+01, 4.84589005e+01, 7.22372589e+01, 5.73598366e+01, 4.48932266e+01, 4.46735687e+01, 6.24906425e+01, 5.38034668e+01, 7.38969421e+01, 5.81505203e+01, 5.86973190e+01, 6.02862549e+01, 6.21720963e+01, 7.79214783e+01, 7.93693314e+01, 8.56392670e+01, 4.85933952e+01, 4.15330696e+01, 5.19559479e+01, 5.11101303e+01, 2.45211220e+01, 4.53820724e+01, 3.17988644e+01, 3.86960068e+01, 6.51695862e+01, 4.75668373e+01, 8.06809769e+01, 4.40927086e+01, 2.30634651e+01, 3.41535263e+01, 1.89120674e+01, 2.65222816e+01, 3.45103226e+01, 7.25323029e+01, 5.32692146e+01, 5.34452515e+01, 9.12736816e+01, 7.65590134e+01, 5.98028870e+01, 3.32064171e+01, 8.94909286e+01, 4.97832565e+01, 9.77087555e+01, 8.48920441e+01, 3.34710655e+01, 2.97093925e+01, 4.01754608e+01, 3.35049820e+01, 7.38188400e+01, 7.47830429e+01, 4.26262589e+01, 4.59389801e+01, 3.80409698e+01, 3.82096558e+01, 3.28650093e+01, 4.55835648e+01, 3.29376831e+01, 3.54156647e+01, 3.15463829e+01, 4.62095642e+01, 4.53786850e+01, 6.58701706e+01, 6.66567841e+01, 6.84605331e+01, 7.05330658e+01, 5.57689934e+01, 5.68786163e+01, 1.47598896e+01, 5.30196533e+01, 5.72104263e+01, 2.08038254e+01, 3.30025864e+01, 1.84498119e+01, 6.00813198e+00, 1.22695503e+01, 1.73976974e+01, 3.65871544e+01, 6.05228958e+01, 6.75697784e+01, 8.05766602e+01, 5.67985039e+01, 6.30320091e+01, 1.36530542e+01, 5.48756104e+01, 6.32456856e+01, 1.61857681e+01, 9.14482422e+01, 6.70790939e+01, 1.57335701e+01, 2.42858696e+01, 4.07226105e+01, 1.84323463e+01, 7.62707062e+01, 1.16876572e+02, 2.75234146e+01, 1.18511772e+02, 3.85007668e+01, 3.06642036e+01, 7.12861938e+01, 5.65885963e+01, 3.68904076e+01, 4.42524338e+01, 3.73893471e+01, 3.25825577e+01, 6.67215271e+01, 2.89525146e+01, 1.00077438e+02, 5.25160065e+01, 2.30007668e+01, 3.62212830e+01, 2.70812683e+01, 3.24420395e+01, 3.24553986e+01, 2.29075108e+01, 2.80946426e+01, 1.37662783e+01, 3.68855324e+01, 3.73603745e+01, 2.30811005e+01, 8.71161270e+00, 4.62039680e+01, 2.47438660e+01, 4.55073776e+01, 3.98710632e+01, 3.54554977e+01, 3.13570213e+01, 4.04609795e+01, 4.72121696e+01, 5.69882050e+01, 6.08560944e+01, 5.11110992e+01, 4.48212585e+01, 8.95685730e+01, 1.08044846e+02, 8.76834259e+01, 1.16947220e+02, 5.61697388e+01, 6.27338104e+01, 4.76908035e+01, 4.21642265e+01, 8.71861572e+01, 1.19606339e+02, 8.25074921e+01, 1.47987701e+02, 7.25722961e+01, 3.69807281e+01, 1.10995682e+02, 6.98619003e+01, 3.05236626e+01, 2.87301712e+01, 4.24779434e+01, 8.68172760e+01, 1.50633514e+02, 1.31991180e+02, 1.69352539e+02, 9.52902832e+01, 7.42954712e+01, 1.01261536e+02, 5.24171600e+01, 8.14591217e+01, 7.68392868e+01, 5.03154030e+01, 9.42534256e+01, 7.43317566e+01, 7.52571945e+01, 1.14551620e+02, 7.44779510e+01, 1.07698517e+02, 7.85174103e+01, 8.21811371e+01, 6.65968475e+01, 7.67907257e+01, 9.25256729e+01, 1.00611588e+02, 1.00282272e+02, 9.69310455e+01, 1.98324875e+02, 1.59693130e+02, 1.91754944e+02, 1.90885590e+02, 7.66642151e+01, 1.13383911e+02, 1.11689285e+02, 1.22370285e+02, 1.18000107e+02, 1.25601822e+02, 1.12055450e+02, 1.15999573e+02, 1.16755638e+02, 1.35527679e+02, 1.01671936e+02, 1.13314453e+02, 6.41181946e+01, 6.45489273e+01, 9.02672501e+01, 6.19851074e+01, 8.18364868e+01, 8.85230789e+01, 8.71273193e+01, 1.09711784e+02, 8.95224609e+01, 2.03444366e+01, 7.11047516e+01, 4.51832657e+01, 2.43343315e+01, 6.74580841e+01, 4.36214066e+01, 5.40383759e+01, 5.28481903e+01, 9.80050125e+01, 9.27012939e+01, 1.26568146e+02, 6.80973053e+01, 5.18610725e+01, 1.09539001e+02, 5.14624176e+01, 6.16044846e+01, 8.77936096e+01, 5.56277542e+01, 5.82790985e+01, 9.81836243e+01, 9.52515945e+01, 7.31562271e+01, 1.03132156e+02, 8.21894684e+01, 5.32623711e+01, 1.46062897e+02, 7.56431732e+01, 4.96695404e+01, 5.65883713e+01, 4.61359482e+01, 4.51489105e+01, 1.61112976e+02, 1.39404800e+02, 1.28567657e+02, 1.16046959e+02, 5.61102333e+01, 3.93031311e+01, 1.06196274e+02, 5.60426941e+01, 5.45891418e+01, 6.01079102e+01, 5.23345184e+01, 6.39797821e+01, 8.09902725e+01, 9.39886932e+01, 8.07874146e+01, 9.19681854e+01, 5.47630844e+01, 6.72642670e+01, 5.52341957e+01, 7.77585144e+01, 6.54715271e+01, 9.46308517e+01, 5.59512825e+01, 6.03546066e+01, 5.35280151e+01, 5.22992859e+01, 4.28901405e+01, 6.71867523e+01, 8.11481247e+01, 9.63041077e+01, 1.04290649e+02, 9.60507355e+01, 6.35041046e+01, 1.24991608e+02, 9.70934296e+01, 1.37852081e+02, 1.07254356e+02, 7.22810745e+01, 9.19460144e+01, 5.41414757e+01, 1.00958527e+02, 8.61668091e+01, 8.85176086e+01, 8.35223389e+01, 7.42451782e+01, 9.63770599e+01, 7.93887787e+01, 9.07054214e+01, 8.00268250e+01, 9.59845963e+01, 4.62097168e+01, 8.31121063e+01, 1.00473473e+02, 9.38346329e+01, 1.00471893e+02, 1.09161026e+02, 4.49479713e+01, 7.32802124e+01, 4.43995514e+01, 4.68981552e+01, 7.38476410e+01, 5.02800140e+01, 4.56798134e+01, 3.97449951e+01, 1.70821209e+01, 4.37517776e+01, 1.10505180e+01, 1.11424274e+01, 4.78717041e+01, 4.61351166e+01, 4.84530373e+01, 7.89319534e+01, 4.39117355e+01, 4.82587509e+01, 4.35027847e+01, 6.13493576e+01, 9.63109131e+01, 1.14511612e+02, 6.87346497e+01, 8.90503387e+01, 6.60617676e+01, 7.29936676e+01, 7.88388977e+01, 6.58766861e+01, 7.93725357e+01, 1.01860596e+02, 5.87919083e+01, 9.44127655e+01, 1.08255310e+02, 1.14688858e+02, 1.08491425e+02, 1.60170227e+02, 9.01622772e+01, 7.67706146e+01, 1.47610641e+02, 8.28055649e+01, 1.07602890e+02, 1.54326416e+02, 1.11569321e+02, 9.62236328e+01, 1.54416367e+02, 1.09104752e+02, 9.92829514e+01, 1.10885284e+02, 8.05641327e+01, 1.32667801e+02, 8.04419708e+01, 1.16885056e+02, 1.01877121e+02, 7.70136948e+01, 1.00270622e+02, 8.92126465e+01, 7.96359558e+01, 6.38426170e+01, 8.53263245e+01, 5.32684135e+01, 8.66455841e+01, 1.02081894e+02, 6.42775040e+01, 1.06110199e+02, 9.04439850e+01, 5.49456139e+01, 4.12339096e+01, 5.11107407e+01, 5.42216492e+01, 9.12310486e+01, 6.64126740e+01, 6.80073700e+01, 6.70894470e+01, 1.21430397e+02, 5.98490524e+01, 1.12796478e+02, 1.25947144e+02, 9.24443817e+01, 1.06858566e+02, 7.19803543e+01, 1.01113388e+02, 7.15443726e+01, 7.82217331e+01, 4.19493713e+01, 8.59171906e+01, 8.89779663e+01, 5.50065155e+01, 7.11914825e+01, 1.15062378e+02, 6.54723282e+01, 1.06165443e+02, 4.08487511e+01, 6.90539093e+01, 7.12931519e+01, 6.11645584e+01, 5.79964676e+01, 6.96892624e+01, 9.32700043e+01, 3.98426056e+01, 5.50107040e+01, 2.99900208e+01, 3.16372547e+01, 9.34973717e+00, 2.86964302e+01, 9.05934143e+01, 1.00433517e+02, 1.05979660e+02, 9.17941132e+01, 5.72787209e+01, 5.61799545e+01, 7.71635132e+01, 6.32919960e+01, 3.19245300e+01, 4.83202438e+01, 3.19423084e+01, 3.02205620e+01, 6.70657501e+01, 6.75733337e+01, 5.42323341e+01, 5.61615143e+01, 5.03277817e+01, 4.53878784e+01, 2.61966896e+01, 2.48239822e+01, 5.46671982e+01, 4.15033188e+01, 3.41364059e+01, 5.81672573e+00, 7.79824448e+01, 3.91490135e+01, 6.92915192e+01, 3.71691818e+01, 6.92453690e+01, 4.07627144e+01, 7.68055420e+01, 4.27172356e+01, 1.00566551e+02, 8.46158371e+01, 8.64007721e+01, 8.35345154e+01, 9.51825714e+01, 9.49698105e+01, 9.61928406e+01, 1.05085205e+02, 2.42710285e+01, 3.19668350e+01, 5.78734665e+01, 7.59086609e+01, 4.55554886e+01, 1.59804993e+01, 5.23819542e+01, 4.91934090e+01, 1.01951736e+02, 9.92865677e+01, 1.01457436e+02, 7.86160583e+01, 6.45458832e+01, 4.13747025e+01, 8.27096558e+01, 6.91478729e+01, 1.02316383e+02, 6.76753922e+01, 4.73744812e+01, 3.45378799e+01, 3.09602757e+01, 2.96499348e+01, 3.68352051e+01, 4.48114357e+01, 2.41954308e+01, 3.22817688e+01, 2.32529202e+01, 6.09879837e+01, 4.58576508e+01, 4.46962128e+01, 6.30781937e+01, 4.33732719e+01, 4.43713112e+01, 4.27191696e+01, 4.84581642e+01, 6.56743469e+01, 5.70909119e+01, 6.02984314e+01, 7.42926102e+01, 7.04580841e+01, 5.73273888e+01, 8.22272415e+01, 4.06566887e+01, 6.66192780e+01, 8.29067841e+01, 6.41067734e+01, 9.11293335e+01, 8.48311615e+01, 6.54998016e+01, 7.03583527e+01, 7.54155426e+01, 7.67532959e+01, 5.47959137e+01, 4.38703651e+01, 5.66229401e+01, 4.83797798e+01, 5.40351715e+01, 7.52634277e+01, 6.30424652e+01, 6.57624588e+01, 7.00673294e+01, 4.95886383e+01, 3.82382431e+01, 3.04333076e+01, 4.00013123e+01, 4.74281616e+01, 5.73651848e+01, 4.91225204e+01, 7.26176147e+01, 9.42271576e+01, 5.74366989e+01, 7.85096970e+01, 6.23573227e+01, 7.31213989e+01, 5.54784279e+01, 9.44461365e+01, 6.43067932e+01, 6.71707764e+01, 7.75503998e+01, 8.05779724e+01, 8.08337555e+01, 9.09401321e+01, 7.33195190e+01, 6.88162994e+01, 1.11744377e+02, 1.02842056e+02, 9.93326263e+01, 8.32346725e+01, 9.38178406e+01, 7.16500168e+01, 1.14375458e+02, 1.33229736e+02, 1.02494919e+02, 8.28043365e+01, 1.13350113e+02, 9.29626160e+01, 4.40574532e+01, 3.57490463e+01, 5.53529205e+01, 2.85335388e+01, 8.03726501e+01, 9.73101120e+01, 3.89851685e+01, 7.57252960e+01, 5.20702362e+01, 2.61617012e+01, 3.54083443e+01, 3.26296806e+01, 3.33710480e+01, 4.68464737e+01, 6.81923981e+01, 5.41068878e+01, 1.21224075e+02, 1.53682037e+02, 6.25794754e+01, 1.12905655e+02, 1.18487488e+02, 8.22944489e+01, 8.88789368e+01, 8.45771179e+01, 7.67552414e+01, 9.78709717e+01, 5.83126678e+01, 9.17613678e+01, 9.04221725e+01, 7.46205292e+01, 8.37513733e+01, 7.79978485e+01, 7.76130371e+01, 8.23016205e+01, 9.82763214e+01, 9.88285370e+01, 8.89203415e+01, 4.43851662e+01, 5.47665710e+01, 1.72659664e+01, 8.89324951e+01, 5.93835602e+01, 8.73203735e+01, 5.06175957e+01, 1.81331749e+01, 2.50782776e+01, 3.63047638e+01, 1.02438354e+02, 7.75752029e+01, 5.15484924e+01, 3.08685265e+01, 3.18422012e+01, 4.55921173e+01, 3.14701118e+01, 6.07672234e+01, 5.91544189e+01, 2.51226845e+01, 1.13455639e+01, 2.82981033e+01, 3.84777713e+00, 4.24709473e+01, 6.55220032e+01, 1.42603378e+01, 4.97653046e+01, 2.59724216e+01, 6.01524010e+01, 2.68109703e+01, 1.81907959e+01, 2.74432793e+01, 4.96004372e+01, 7.07159948e+00, 5.06401291e+01, 4.37432709e+01, 2.89705906e+01, 4.65325584e+01, 5.38115692e+01, 4.03266754e+01, 7.83184509e+01, 5.12952347e+01, 5.29448013e+01, 1.09128036e+01, 1.53174639e+01, 1.89234123e+01, 6.34576721e+01, 4.88706589e+01, 4.65362015e+01, 6.83882599e+01, 5.61023788e+01, 5.47019577e+01, 6.20978317e+01, 8.09314270e+01, 6.84262848e+01, 6.16849403e+01, 4.56973953e+01, 7.76795654e+01, 5.31913605e+01, 7.23743286e+01, 7.96643906e+01, 7.58888779e+01, 8.22776947e+01, 6.03309326e+01, 4.44262314e+01, 6.37283020e+01, 5.49326057e+01, 6.11022797e+01, 8.85095520e+01, 6.45499573e+01, 8.01811066e+01, 7.34385605e+01, 4.66838608e+01, 7.26460419e+01, 5.84158478e+01], [ 19.011818 ,  12.696649 ,  24.889023 ,  22.50999  ,  24.329235 ,  26.44268  ,  23.982706 ,  23.409138 ,  29.888645 ,  25.56757  ,  33.647484 ,  31.60768  ,  23.759745 ,  25.868141 ,  26.619883 ,  25.208038 ,  22.151413 ,  25.200329 ,  18.48297  ,  21.734825 ,  27.467892 ,  22.025572 ,  34.22886  ,  29.281609 ,  22.07304  ,  27.044737 ,  21.825214 ,  22.195787 ,  33.85272  ,  31.850822 ,  30.582767 ,  31.433035 ,  37.94048  ,  36.922916 ,  39.112736 ,  39.644947 ,  33.51083  ,  34.603832 ,  39.84179  ,  37.73033  ,  34.742912 ,  42.996223 ,  27.661472 ,  36.248726 ,  43.046165 ,  34.23703  ,  37.006916 ,  34.2006   ,  28.270634 ,  29.931269 ,  30.207966 ,  32.106747 ,  34.356148 ,  32.402775 ,  33.45306  ,  27.606647 ,  27.502281 ,  28.2808   ,  32.14844  ,  34.865974 ,  30.602755 ,  27.366358 ,  32.164574 ,  24.052763 ,  17.924408 ,  27.139013 ,  25.196033 ,  30.45674  ,  31.558392 ,  28.3429   ,  34.582558 ,  35.21334  ,  26.95558  ,  31.199501 ,  32.13288  ,  44.84541  ,  45.93156  ,  43.042286 ,  48.939392 ,  43.70348  ,  26.180023 ,  24.650255 ,  30.445498 ,  38.986    ,  30.631124 ,  32.017365 ,  35.693607 ,  34.02715  ,  46.569664 ,  55.34532  ,  45.966934 ,  49.477245 ,  44.2278   ,  38.323303 ,  32.53318  ,  33.284927 ,  37.387604 ,  42.986057 ,  30.975592 ,  30.718235 ,  42.931725 ,  39.8787   ,  34.311947 ,  39.721966 ,  24.818491 ,  24.871521 ,  20.874146 ,  24.391373 ,  27.831772 ,  31.140644 ,  30.53987  ,  31.558495 ,  40.537224 ,  32.425392 ,  36.82036  ,  33.945076 ,  31.229935 ,  36.19655  ,  30.435017 ,  35.48371  ,  35.157116 ,  35.111877 ,  35.68637  ,  37.75683  ,  29.557755 ,  30.772705 ,  33.875305 ,  32.821922 ,  25.671848 ,  28.221008 ,  30.145065 ,  29.789545 ,  30.218346 ,  32.14194  ,  28.661556 ,  24.561157 ,  33.90238  ,  30.644691 ,  36.272926 ,  27.285242 ,  29.019138 ,  27.273153 ,  27.823542 ,  23.911154 ,  37.28757  ,  38.07277  ,  28.437801 ,  34.351135 ,  28.035625 ,  20.416159 ,  28.030931 ,  23.44807  ,  25.870743 ,  31.211102 ,  25.039915 ,  26.66016  ,  30.195732 ,  21.835344 ,  23.88324  ,  21.687435 ,  32.75674  ,  30.71951  ,  29.671282 ,  29.510004 ,  23.9571   ,  19.418701 ,  28.487082 ,  24.875786 ,  26.573627 ,  27.630028 ,  32.90088  ,  30.905819 ,  29.766224 ,  35.206882 ,  38.15056  ,  38.426598 ,  22.86324  ,  25.384192 ,  32.846283 ,  31.123814 ,  23.333004 ,  30.918915 ,  31.069561 ,  33.826454 ,  34.124863 ,  31.303356 ,  27.894337 ,  24.308605 ,  32.64119  ,  32.981308 ,  27.721115 ,  25.7856   ,  22.050257 ,  27.703747 ,  27.125942 ,  30.219074 ,  28.626467 ,  32.51028  ,  22.33165  ,  23.864033 ,  23.141567 ,  20.524025 ,  26.411196 ,  19.845951 ,  18.406845 ,  18.829374 ,  19.045044 ,  25.342175 ,  37.977493 ,  36.153435 ,  31.25093  ,  24.606937 ,  30.846275 ,  32.127357 ,  27.18861  ,  35.309113 ,  18.368351 ,  21.431953 ,  18.998207 ,  27.988853 ,  30.09478  ,  35.88306  ,  32.692364 ,  30.197815 ,  34.807964 ,  31.820526 ,  35.709602 ,  40.831047 ,  32.584965 ,  30.62021  ,  40.06925  ,  31.02382  ,  34.98595  ,  37.571346 ,  31.926472 ,  34.095825 ,  32.29374  ,  28.329117 ,  32.336258 ,  28.75673  ,  30.061502 ,  33.13521  ,  31.791504 ,  28.430208 ,  29.079243 ,  22.107147 ,  18.83064  ,  19.8448   ,  29.163124 ,  26.123886 ,  28.50066  ,  27.48858  ,  22.379667 ,  34.49884  ,  30.059654 ,  33.893044 ,  34.731926 ,  33.751453 ,  43.678307 ,  42.28353  ,  25.943008 ,  24.539543 ,  26.574566 ,  22.14529  ,  42.15364  ,  32.94816  ,  38.148224 ,  36.321514 ,  23.27378  ,  26.075563 ,  33.31559  ,  42.368782 ,  29.380692 ,  33.47887  ,  23.91465  ,  28.324371 ,  28.367718 ,  27.613579 ,  29.71556  ,  32.428104 ,  28.467506 ,  27.71632  ,  37.019733 ,  32.338524 ,  32.701286 ,  32.444775 ,  35.71327  ,  34.018192 ,  37.8272   ,  37.67301  ,  37.126404 ,  36.477978 ,  40.824528 ,  43.22012  ,  39.166885 ,  32.22664  ,  34.10302  ,  35.188835 ,  33.041695 ,  29.173946 ,  29.3827   ,  27.411343 ,  28.078535 ,  28.131046 ,  34.813255 ,  30.03557  ,  32.577644 ,  33.281643 ,  34.129322 ,  33.211166 ,  36.425537 ,  33.568203 ,  31.011753 ,  38.744286 ,  33.94134  ,  35.654945 ,  38.618088 ,  32.897118 ,  29.264095 ,  29.539959 ,  31.400023 ,  28.246834 ,  33.54144  ,  33.793503 ,  31.349926 ,  29.437748 ,  40.45792  ,  38.931293 ,  32.8702   ,  36.7444   ,  29.405354 ,  31.763958 ,  38.680557 ,  32.586914 ,  39.161674 ,  37.487564 ,  18.677393 ,  26.19796  ,  29.583794 ,  27.205032 ,  34.829792 ,  33.76532  ,  25.825262 ,  30.686508 ,  30.200119 ,  28.006948 ,  31.506172 ,  29.628895 ,  22.91215  ,  25.736675 ,  27.318089 ,  34.016594 ,  30.74686  ,  38.786797 ,  32.91461  ,  40.24551  ,  42.433258 ,  37.64373  ,  45.868416 ,  41.94645  ,  32.05309  ,  31.40858  ,  31.651047 ,  28.103926 ,  40.839775 ,  43.78701  ,  28.688545 ,  33.52865  ,  33.186    ,  30.135387 ,  33.965836 ,  37.618446 ,  28.173374 ,  30.556616 ,  29.891022 ,  28.263414 ,  36.53898  ,  40.11506  ,  33.31122  ,  34.21124  ,  37.238808 ,  32.867367 ,  31.919146 ,  29.414455 ,  31.71416  ,  29.098166 ,  35.04759  ,  31.153278 ,  28.355463 ,  28.223942 ,  32.043076 ,  30.249338 ,  35.393867 ,  31.227535 ,  31.040787 ,  31.65686  ,  31.943443 ,  35.0007   ,  35.1038   ,  36.469814 ,  28.98268  ,  26.955242 ,  29.645073 ,  29.385319 ,  23.098982 ,  27.896091 ,  24.825172 ,  26.537018 ,  32.386726 ,  28.389647 ,  35.473034 ,  27.026424 ,  22.0702   ,  25.292728 ,  20.982992 ,  22.777847 ,  24.819914 ,  33.658813 ,  29.03347  ,  29.475746 ,  37.355335 ,  34.093185 ,  30.428143 ,  24.302868 ,  36.461    ,  28.40985  ,  37.96086  ,  35.16236  ,  24.597584 ,  23.475655 ,  26.032356 ,  24.086359 ,  33.79891  ,  34.04821  ,  26.52081  ,  27.54243  ,  25.712015 ,  26.024796 ,  24.475536 ,  27.370943 ,  24.141727 ,  24.905846 ,  23.589142 ,  27.159084 ,  27.175844 ,  31.5873   ,  31.842857 ,  32.056118 ,  33.28839  ,  29.97015  ,  30.124031 ,  18.60231  ,  29.844488 ,  30.88138  ,  20.533936 ,  23.87876  ,  20.473392 ,  16.330349 ,  18.579458 ,  19.860325 ,  24.219248 ,  29.897062 ,  32.065834 ,  35.13887  ,  30.290245 ,  31.848892 ,  18.507439 ,  29.342773 ,  31.551325 ,  19.153316 ,  37.060303 ,  31.06099  ,  19.092922 ,  21.780281 ,  26.08268  ,  20.32272  ,  33.481834 ,  42.495087 ,  22.701735 ,  42.95932  ,  25.561234 ,  23.372444 ,  33.116302 ,  29.5191   ,  24.94841  ,  26.843529 ,  24.879791 ,  23.542763 ,  31.74635  ,  22.397541 ,  37.64588  ,  27.167082 ,  20.930153 ,  24.569687 ,  21.922798 ,  23.207752 ,  24.377548 ,  21.333239 ,  22.578491 ,  18.219969 ,  25.30695  ,  24.125063 ,  21.007816 ,  12.049815 ,  27.327007 ,  21.292217 ,  27.124397 ,  25.37594  ,  24.46767  ,  22.2369   ,  25.765757 ,  27.373585 ,  31.181828 ,  31.432465 ,  29.05424  ,  27.65609  ,  37.080597 ,  39.924023 ,  36.06716  ,  41.207664 ,  30.227463 ,  30.93632  ,  27.772491 ,  26.366636 ,  35.797363 ,  40.927814 ,  34.562057 ,  45.36319  ,  32.79614  ,  25.486977 ,  39.979378 ,  31.833633 ,  23.695534 ,  23.4423   ,  26.195087 ,  35.018528 ,  45.541656 ,  42.551247 ,  48.183144 ,  35.330215 ,  32.753723 ,  38.084656 ,  28.179012 ,  35.1345   ,  33.596375 ,  28.11993  ,  37.447105 ,  33.343555 ,  33.67392  ,  40.364655 ,  33.502785 ,  39.153435 ,  34.64142  ,  34.97696  ,  32.468063 ,  33.407997 ,  36.44845  ,  38.081924 ,  37.75004  ,  37.162758 ,  52.072174 ,  45.160442 ,  51.294327 ,  50.798317 ,  34.313652 ,  46.447292 ,  42.16988  ,  48.160316 ,  40.71466  ,  42.14276  ,  39.83345  ,  40.518112 ,  40.660507 ,  44.69754  ,  37.35784  ,  39.166176 ,  31.064138 ,  31.917997 ,  35.96656  ,  29.89867  ,  35.110996 ,  35.68134  ,  34.55028  ,  39.487034 ,  35.628086 ,  19.650665 ,  32.593636 ,  26.184896 ,  20.606205 ,  31.314003 ,  25.817526 ,  28.600277 ,  29.324732 ,  37.42768  ,  36.076965 ,  42.22509  ,  32.25999  ,  28.598257 ,  39.22269  ,  27.580177 ,  30.293055 ,  35.126305 ,  29.173405 ,  29.9541   ,  37.186386 ,  36.430763 ,  32.793236 ,  38.352287 ,  36.3815   ,  28.292469 ,  48.41684  ,  32.69936  ,  27.272003 ,  29.050753 ,  26.530743 ,  26.07505  ,  49.44541  ,  45.306736 ,  42.60733  ,  40.5409   ,  28.039051 ,  24.457602 ,  38.51551  ,  28.621101 ,  28.763672 ,  30.211557 ,  28.19591  ,  30.64328  ,  34.27378  ,  36.75071  ,  34.103245 ,  36.28526  ,  28.489449 ,  31.400856 ,  28.644955 ,  33.10566  ,  30.927666 ,  36.583763 ,  28.854622 ,  29.799896 ,  28.95251  ,  28.430016 ,  26.143322 ,  31.543787 ,  34.188545 ,  37.203636 ,  39.00395  ,  37.36377  ,  30.131931 ,  42.578934 ,  35.97806  ,  44.73079  ,  39.527092 ,  31.66739  ,  35.55989  ,  27.364727 ,  37.920227 ,  34.905655 ,  36.13321  ,  35.151558 ,  32.50489  ,  36.45198  ,  33.694443 ,  35.96629  ,  34.07578  ,  37.566    ,  25.760891 ,  34.385307 ,  38.15161  ,  36.63092  ,  38.102547 ,  39.335133 ,  26.038465 ,  31.787155 ,  26.156952 ,  26.982391 ,  32.279205 ,  26.895348 ,  26.413797 ,  24.917976 ,  17.013742 ,  25.871151 ,  14.171135 ,  10.890448 ,  27.25677  ,  26.638391 ,  26.6754   ,  34.686928 ,  25.755219 ,  26.81755  ,  25.835392 ,  30.104631 ,  36.9972   ,  40.469467 ,  31.786358 ,  35.34474  ,  31.210655 ,  32.770294 ,  34.3377   ,  31.011587 ,  34.009148 ,  38.559692 ,  29.248251 ,  36.885128 ,  39.08718  ,  40.130604 ,  39.02332  ,  47.22293  ,  35.75123  ,  33.415123 ,  45.12329  ,  34.614716 ,  38.872192 ,  46.284218 ,  39.415287 ,  36.420662 ,  46.590378 ,  39.400326 ,  37.3892   ,  39.860607 ,  33.713722 ,  43.62419  ,  34.20691  ,  40.895668 ,  37.86274  ,  33.943253 ,  38.249397 ,  36.311043 ,  34.082474 ,  30.681355 ,  34.982193 ,  28.2369   ,  35.52314  ,  38.64225  ,  32.60869  ,  40.459686 ,  35.20875  ,  28.18288  ,  24.319304 ,  26.453743 ,  28.093655 ,  36.151543 ,  30.869728 ,  31.644327 ,  30.13961  ,  40.67678  ,  29.546675 ,  39.62651  ,  42.322563 ,  36.522377 ,  38.814644 ,  32.3284   ,  38.14427  ,  32.678368 ,  33.240593 ,  25.240137 ,  40.412296 ,  40.545265 ,  29.706936 ,  33.412674 ,  41.02718  ,  30.439114 ,  38.7328   ,  22.950447 ,  31.892025 ,  32.47372  ,  29.524052 ,  29.06694  ,  31.780876 ,  36.45971  ,  25.467306 ,  26.88754  ,  21.160965 ,  23.283646 ,  15.699625 ,  21.391445 ,  35.488922 ,  37.3904   ,  38.865852 ,  35.853416 ,  27.835087 ,  29.066952 ,  33.29846  ,  30.365135 ,  23.372128 ,  27.222857 ,  23.026367 ,  22.592903 ,  31.929781 ,  31.529076 ,  28.557653 ,  29.24382  ,  27.527794 ,  25.96122  ,  20.787361 ,  20.34868  ,  28.248566 ,  24.743454 ,  21.930096 ,  12.961282 ,  32.87997  ,  24.48806  ,  30.920874 ,  24.015795 ,  31.400772 ,  24.28895  ,  32.72995  ,  24.628387 ,  37.8099   ,  34.737392 ,  35.39427  ,  34.780735 ,  36.89071  ,  36.703953 ,  37.08577  ,  38.839493 ,  20.113998 ,  22.293482 ,  27.914492 ,  32.58568  ,  25.610472 ,  16.05915  ,  27.797459 ,  26.782398 ,  37.786987 ,  37.228004 ,  37.869507 ,  33.095726 ,  30.110214 ,  24.937267 ,  34.31414  ,  31.138195 ,  37.984135 ,  30.548225 ,  26.43287  ,  23.476044 ,  22.61266  ,  22.242727 ,  24.129929 ,  26.131592 ,  20.378878 ,  22.536182 ,  19.085213 ,  29.650642 ,  26.427227 ,  26.189789 ,  30.223675 ,  25.607838 ,  26.094318 ,  25.9766   ,  26.99926  ,  30.652008 ,  28.870785 ,  29.68288  ,  32.191635 ,  31.427397 ,  28.748127 ,  33.939262 ,  24.744377 ,  30.470966 ,  34.04739  ,  30.347282 ,  35.684982 ,  34.46531  ,  29.587696 ,  31.616047 ,  32.575832 ,  33.022068 ,  28.128242 ,  25.491093 ,  28.514847 ,  26.585169 ,  27.967106 ,  32.85154  ,  30.275421 ,  30.826794 ,  31.52895  ,  26.738964 ,  23.48787  ,  21.5061   ,  24.637518 ,  26.506836 ,  28.928392 ,  26.975529 ,  31.864376 ,  36.148884 ,  28.688847 ,  33.183334 ,  30.107544 ,  32.065563 ,  27.592297 ,  36.251785 ,  30.08259  ,  30.746304 ,  32.688652 ,  33.176785 ,  34.819256 ,  36.14096  ,  33.048218 ,  31.80347  ,  39.86151  ,  38.13183  ,  37.50847  ,  34.538017 ,  36.93834  ,  32.440018 ,  40.99939  ,  43.90097  ,  38.736565 ,  34.57145  ,  40.85742  ,  36.684334 ,  24.807293 ,  22.954166 ,  27.97349  ,  20.99634  ,  33.456284 ,  37.038174 ,  23.569359 ,  31.995184 ,  26.992641 ,  20.313509 ,  22.900627 ,  22.04102  ,  22.37645  ,  26.314726 ,  31.207314 ,  28.334372 ,  41.62744  ,  47.158966 ,  30.417156 ,  40.00956  ,  41.06637  ,  34.77752  ,  35.824383 ,  35.07154  ,  33.411987 ,  37.871628 ,  28.458202 ,  36.573505 ,  36.205544 ,  33.026794 ,  35.06837  ,  33.74895  ,  33.48199  ,  34.3749   ,  37.566383 ,  37.64296  ,  36.089993 ,  23.907742 ,  26.809551 ,  16.496006 ,  35.85222  ,  27.710567 ,  35.34931  ,  26.53658  ,  16.993149 ,  18.65205  ,  21.578272 ,  37.11535  ,  32.9024   ,  27.460573 ,  20.170977 ,  21.11214  ,  25.864803 ,  21.284515 ,  29.53004  ,  28.424744 ,  19.321526 ,  11.688431 ,  18.762558 ,   7.0662937,  22.370497 ,  30.542912 ,  11.687641 ,  27.033733 ,  19.125217 ,  27.34568  ,  19.247168 ,  15.729437 ,  15.36713  ,  23.450157 ,   8.469933 ,  22.13721  ,  25.30879  ,  20.447292 ,  26.235474 ,  27.479586 ,  22.855703 ,  33.309387 ,  26.973814 ,  27.270813 ,  14.024324 ,  13.8882885,  16.605886 ,  29.961683 ,  26.042583 ,  26.216532 ,  31.329113 ,  28.181591 ,  27.956982 ,  30.41185  ,  33.641495 ,  31.591434 ,  29.542198 ,  25.392529 ,  33.105286 ,  27.288593 ,  32.075645 ,  33.387585 ,  33.021347 ,  34.103065 ,  29.059418 ,  25.182047 ,  30.376392 ,  28.17287  ,  29.296612 ,  35.42507  ,  30.422083 ,  33.749615 ,  32.23085  ,  25.25539  ,  31.876808 ,  28.460255 ]),
#[Out]#           ([6.26730652e+01, 6.60264053e+01, 6.31725845e+01, 8.02179184e+01, 6.09493942e+01, 4.50752487e+01, 5.90650826e+01, 7.47189484e+01, 9.43130951e+01, 1.11540581e+02, 8.47921829e+01, 9.03817139e+01, 8.99770279e+01, 1.03465324e+02, 7.35420074e+01, 8.17170181e+01, 6.20851326e+01, 7.64620132e+01, 7.53066254e+01, 6.68291626e+01, 7.72236938e+01, 7.87551117e+01, 6.38254166e+01, 7.61398468e+01, 9.45793152e+01, 5.58662567e+01, 7.41508408e+01, 5.50093117e+01, 4.87336197e+01, 5.04557114e+01, 4.25552139e+01, 3.24191017e+01, 6.50163574e+01, 5.09621010e+01, 6.33293686e+01, 4.59563255e+01, 5.90539818e+01, 3.47024994e+01, 3.50676765e+01, 2.35162506e+01, 9.00979996e+01, 1.09507629e+02, 1.28978973e+02, 1.63390869e+02, 3.69121971e+01, 5.10178070e+01, 9.19382172e+01, 6.94658890e+01, 4.29004745e+01, 4.47034454e+01, 3.58699989e+01, 4.81442642e+01, 3.04646206e+01, 3.32533875e+01, 3.23802757e+01, 3.99914703e+01, 6.86720810e+01, 8.27021332e+01, 6.60167313e+01, 9.22200317e+01, 8.57976379e+01, 5.22598763e+01, 1.09543198e+02, 6.55122528e+01, 5.98670502e+01, 4.42892227e+01, 4.82882767e+01, 4.14278030e+01, 5.24063568e+01, 5.29650230e+01, 4.79279404e+01, 5.35046387e+01, 7.08778610e+01, 9.09435120e+01, 8.07619476e+01, 1.13632492e+02, 6.21960526e+01, 4.18375893e+01, 8.82787018e+01, 4.95012512e+01, 5.25959473e+01, 6.05467720e+01, 6.25269775e+01, 5.66249580e+01, 6.27963562e+01, 5.52599335e+01, 4.99357758e+01, 6.86460876e+01, 4.69029808e+01, 4.00426788e+01, 4.89567642e+01, 6.00015564e+01, 4.83598099e+01, 6.42852936e+01, 7.11798859e+01, 6.21442642e+01, 5.95274506e+01, 6.80004120e+01, 5.79438553e+01, 4.38059845e+01, 8.45175247e+01, 9.21888199e+01, 4.96687927e+01, 6.62081757e+01, 5.28665314e+01, 4.23909950e+01, 3.50820732e+01, 4.55312576e+01, 3.66078796e+01, 3.63786583e+01, 5.32047424e+01, 4.49316559e+01, 8.59263000e+01, 9.67315369e+01, 5.31899414e+01, 4.60850143e+01, 1.11647163e+02, 8.32649765e+01, 4.97542572e+01, 5.79186096e+01, 3.09262505e+01, 2.50832443e+01, 4.16943741e+01, 2.69828072e+01, 4.46404724e+01, 6.86079025e+01, 5.04898148e+01, 6.49071655e+01, 2.04729786e+01, 1.04281883e+02, 4.23077927e+01, 7.50556183e+01, 8.30686340e+01, 7.58972321e+01, 8.10583191e+01, 7.46827927e+01, 1.28775574e+02, 7.91262360e+01, 1.50249512e+02, 1.08235893e+02, 8.30508804e+01, 7.01640778e+01, 9.28053741e+01, 1.04856857e+02, 5.37909622e+01, 5.53016701e+01, 6.50939484e+01, 6.60735703e+01, 8.15478516e+01, 6.12607117e+01, 6.27022095e+01, 6.25837936e+01, 5.65463867e+01, 4.93856888e+01, 7.97976532e+01, 6.41420975e+01, 4.36906281e+01, 3.39563217e+01, 4.65693665e+01, 4.15553207e+01, 8.06768570e+01, 9.16808090e+01, 2.46443367e+00, 3.15938129e+01, 6.10672607e+01, 9.94968948e+01, 2.65582085e+00, 3.25309639e+01, 1.57205410e+01, 2.66753407e+01, 4.92670517e+01, 3.36156578e+01, 1.84831028e+01, 2.96268730e+01, 4.00673904e+01, 4.08273506e+01, 9.92531586e+01, 7.90552216e+01, 7.51129379e+01, 7.82350616e+01, 5.91672211e+01, 9.34969482e+01, 7.49024277e+01, 8.80155563e+01, 4.11940689e+01, 5.71847610e+01, 4.21867676e+01, 4.98145142e+01, 5.18795700e+01, 5.64436722e+01, 5.68754921e+01, 6.18207741e+01, 3.33352966e+01, 4.58976212e+01, 3.87149429e+01, 4.16056404e+01, 6.38260689e+01, 6.23578949e+01, 5.54933167e+01, 5.16312561e+01, 3.98768082e+01, 5.17493134e+01, 9.45165253e+01, 8.64358902e+01, 4.40412292e+01, 4.26884651e+01, 4.12869644e+01, 2.78220367e+01, 5.86332207e+01, 3.38847809e+01, 6.47411880e+01, 4.22895393e+01, 5.87269516e+01, 6.27861557e+01, 6.17071533e+01, 6.77328262e+01, 7.75986328e+01, 7.16858902e+01, 8.27469482e+01, 8.13806458e+01, 4.95711746e+01, 5.53078651e+01, 6.47283859e+01, 7.38474503e+01, 1.52632706e+02, 1.13361176e+02, 1.08994377e+02, 8.62007523e+01, 5.08254623e+01, 3.97057762e+01, 6.95749741e+01, 7.50454102e+01, 4.20871811e+01, 5.69681778e+01, 5.83421402e+01, 6.10866432e+01, 8.29655762e+01, 8.19023361e+01, 6.86234589e+01, 7.28592224e+01, 7.87409821e+01, 7.28915710e+01, 6.78613968e+01, 5.46415901e+01, 6.15324364e+01, 6.24357529e+01, 4.64569626e+01, 5.19142609e+01, 6.24463577e+01, 4.33884201e+01, 6.06787567e+01, 4.64966431e+01, 2.43051872e+01, 2.42103233e+01, 2.79087105e+01, 2.87251663e+01, 5.07238312e+01, 5.27484207e+01, 8.70594330e+01, 7.15883331e+01, 4.86472130e+01, 4.69125900e+01, 3.32853012e+01, 3.76050949e+01, 6.89114914e+01, 6.97807007e+01, 3.95621872e+01, 5.38649902e+01, 5.76610565e+01, 5.51193848e+01, 8.32110291e+01, 7.97207336e+01, 5.86054001e+01, 1.11519295e+02, 6.56857071e+01, 7.60063171e+01, 1.15936798e+02, 8.07646942e+01, 6.76062012e+01, 6.70485153e+01, 5.74469833e+01, 5.22785873e+01, 7.92711029e+01, 8.74811172e+01, 3.60151596e+01, 4.98076706e+01, 5.17884445e+01, 5.31597748e+01, 4.93682480e+01, 4.96142044e+01, 5.20391960e+01, 4.64225349e+01, 6.11460648e+01, 8.16301193e+01, 4.29676514e+01, 9.12627869e+01, 6.66522675e+01, 5.26617165e+01, 6.14487305e+01, 6.27429886e+01, 3.81434975e+01, 5.73878708e+01, 6.12266998e+01, 6.56241074e+01, 1.01022766e+02, 1.07158340e+02, 1.41748566e+02, 1.36715439e+02, 9.84893188e+01, 6.92156372e+01, 9.47900009e+01, 4.38981361e+01, 1.39346191e+02, 1.48155441e+02, 9.25281982e+01, 8.80410233e+01, 6.11878433e+01, 2.62538605e+01, 4.79289131e+01, 7.53380356e+01, 2.50330143e+01, 1.49225979e+01, 5.42575150e+01, 2.05725899e+01, 2.01899223e+01, 2.92340469e+01, 2.50862045e+01, 8.66453476e+01, 5.52694702e+01, 5.03556976e+01, 6.00607147e+01, 4.66366272e+01, 7.15974731e+01, 9.08470459e+01, 4.46598969e+01, 6.02872314e+01, 8.75727997e+01, 5.16628990e+01, 1.05440178e+02, 6.21281433e+01, 5.54971390e+01, 7.10503159e+01, 6.42805481e+01, 6.85805588e+01, 6.03831329e+01, 2.26886673e+01, 2.32262878e+01, 3.22241211e+01, 3.35690918e+01, 5.21385231e+01, 5.05662842e+01, 5.53731918e+01, 1.09925568e+02, 9.20303345e+01, 1.04183945e+02, 1.13839386e+02, 7.82724609e+01, 1.05988358e+02, 1.12568687e+02, 1.14612679e+02, 5.25557594e+01, 1.05895462e+02, 8.36659012e+01, 8.75313873e+01, 1.05843079e+02, 9.03561096e+01, 8.09995422e+01, 6.72746811e+01, 5.14844742e+01, 1.04508705e+02, 1.12514206e+02, 1.15955521e+02, 8.09972839e+01, 5.30860558e+01, 9.26045914e+01, 5.05643997e+01, 1.08980728e+02, 9.10309906e+01, 7.05391388e+01, 6.63577347e+01, 8.71698608e+01, 7.28454208e+01, 7.78793030e+01, 5.40804596e+01, 4.63980560e+01, 6.96174774e+01, 6.10459366e+01, 8.18549347e+01, 5.88740768e+01, 6.34582443e+01, 5.94574966e+01, 3.96528511e+01, 8.70725555e+01, 9.93224335e+01, 9.02683411e+01, 8.29103394e+01, 9.40063629e+01, 5.94865646e+01, 7.99458160e+01, 6.66619720e+01, 1.12794327e+02, 1.15471741e+02, 6.17013626e+01, 8.77656860e+01, 9.52039795e+01, 1.47629700e+02, 8.33083267e+01, 1.24414886e+02, 4.43611908e+01, 5.53232040e+01, 5.02346725e+01, 4.84544601e+01, 7.57518616e+01, 5.44694748e+01, 5.10551643e+01, 4.58110809e+01, 7.01930771e+01, 5.79164963e+01, 4.81352463e+01, 4.37587814e+01, 5.31515808e+01, 5.91518402e+01, 4.12525177e+01, 4.55103226e+01, 4.26221619e+01, 3.61158447e+01, 3.26134300e+01, 3.87545776e+01, 3.89563713e+01, 4.21816788e+01, 6.13258018e+01, 6.10868073e+01, 6.36808624e+01, 5.97751694e+01, 7.48540802e+01, 7.81114807e+01, 4.71230164e+01, 5.24009323e+01, 5.65370407e+01, 5.91408920e+01, 5.46581078e+01, 6.33704185e+01, 3.61444168e+01, 3.01780739e+01, 6.39081955e+01, 6.22075500e+01, 6.70614319e+01, 8.24598618e+01, 1.21722107e+02, 9.47117767e+01, 8.01126404e+01, 7.19981995e+01, 9.88788300e+01, 7.02632751e+01, 8.67624664e+01, 6.48525085e+01, 5.63442688e+01, 7.63588867e+01, 5.46669960e+01, 8.30496521e+01, 8.34064331e+01, 6.93030090e+01, 9.03396301e+01, 9.13013000e+01, 5.67070923e+01, 6.50857544e+01, 5.76197739e+01, 9.69202194e+01, 1.04621414e+02, 7.97815247e+01, 1.32344437e+02, 9.31433411e+01, 6.88245468e+01, 8.05038376e+01, 7.39418793e+01, 6.33601074e+01, 8.33053207e+01, 7.83754272e+01, 6.01718826e+01, 6.09904709e+01, 6.84285126e+01, 7.18147583e+01, 5.98928833e+01, 7.14365997e+01, 1.02390724e+02, 1.03835419e+02, 8.50790558e+01, 7.92181549e+01, 5.61103172e+01, 5.85196991e+01, 7.05206299e+01, 6.64616241e+01, 8.50371857e+01, 7.69128418e+01, 8.17642365e+01, 6.92286377e+01, 6.93846970e+01, 5.56322594e+01, 4.21821785e+01, 4.39613686e+01, 5.93951035e+01, 5.38050804e+01, 5.52329330e+01, 6.44615021e+01, 5.50958977e+01, 2.59684525e+01, 2.91423359e+01, 2.35696087e+01, 3.41755447e+01, 7.76094360e+01, 5.56913834e+01, 9.71838074e+01, 5.52444115e+01, 4.89079590e+01, 5.64349747e+01, 5.54018669e+01, 4.51247864e+01, 5.48196487e+01, 5.09613419e+01, 4.70453224e+01, 5.77897720e+01, 6.21051407e+01, 7.84962540e+01, 9.10983429e+01, 5.67438316e+01, 3.57054100e+01, 6.18446159e+01, 2.44234505e+01, 6.02432899e+01, 5.66116257e+01, 4.59126282e+01, 7.10322113e+01, 6.96144714e+01, 6.47144470e+01, 9.00430222e+01, 6.78337708e+01, 2.08799515e+01, 4.58430023e+01, 1.28007870e+01, 4.31311722e+01, 8.14319077e+01, 7.02495193e+01, 6.41901932e+01, 7.30220032e+01, 1.04643051e+02, 9.65069962e+01, 8.75841064e+01, 7.58044891e+01, 7.14279404e+01, 4.23630066e+01, 7.24356689e+01, 4.13663025e+01, 8.09357758e+01, 7.19503479e+01, 9.36932449e+01, 7.60813446e+01, 9.10646515e+01, 5.53926430e+01, 9.26226044e+01, 9.03364182e+01, 4.93665161e+01, 7.58469543e+01, 2.92567539e+01, 4.92900391e+01, 7.46267090e+01, 9.03510895e+01, 6.12809448e+01, 8.73777542e+01, 3.36919403e+01, 2.36737556e+01, 8.09161453e+01, 4.50812874e+01, 3.16553116e+01, 8.32592239e+01, 5.74249916e+01, 6.80937195e+01, 5.62063446e+01, 5.23196564e+01, 4.78313942e+01, 4.00501289e+01, 6.17698784e+01, 8.57794495e+01, 3.89402084e+01, 5.25417099e+01, 5.93721619e+01, 5.99907494e+01, 6.94759216e+01, 7.74625320e+01, 3.94376984e+01, 1.69660339e+01, 4.64204292e+01, 7.06067610e+00, 8.30887604e+01, 4.80441360e+01, 4.89477196e+01, 2.07009907e+01, 3.67977676e+01, 3.37348862e+01, 4.45849686e+01, 3.83776169e+01, 4.81995964e+00, 2.07409191e+01, 1.99469066e+00, 2.98817596e+01, 4.43276749e+01, 2.93127537e+01, 5.29717560e+01, 5.54497757e+01, 5.97289124e+01, 3.33546295e+01, 4.39614182e+01, 2.18297806e+01, 2.28451042e+01, 3.08832855e+01, 3.87557793e+01, 6.24767952e+01, 6.98055038e+01, 3.65082626e+01, 7.48737640e+01, 6.57743301e+01, 3.55244865e+01, 5.06353645e+01, 4.42797089e+01, 4.23518906e+01, 1.59309645e+01, 2.59302559e+01, 5.16491280e+01, 4.38972397e+01, 4.97538185e+01, 7.75921631e+01, 5.40723038e+01, 8.07598572e+01, 3.63418007e+01, 3.29159584e+01, 3.46330643e+01, 2.93470154e+01, 4.79928246e+01, 3.65471573e+01, 3.30136490e+01, 3.25709000e+01, 7.81522675e+01, 5.81307335e+01, 8.27499847e+01, 6.50027924e+01, 6.23676300e+01, 9.07083130e+01, 4.81330948e+01, 6.38351517e+01, 8.29499359e+01, 4.36432648e+01, 4.09412956e+01, 4.17767715e+01, 3.81164856e+01, 5.08883667e+01, 4.76645889e+01, 5.06895523e+01, 9.76270752e+01, 8.79184723e+01, 6.01100006e+01, 8.12071991e+01, 9.75260239e+01, 7.04853897e+01, 1.12966324e+02, 9.13646164e+01, 4.39191284e+01, 5.66743813e+01, 4.04459991e+01, 2.36990891e+01, 1.11711281e+02, 1.06288155e+02, 6.04196625e+01, 6.40823669e+01, 3.33048553e+01, 5.86828690e+01, 3.31467667e+01, 5.34993210e+01, 6.59013596e+01, 5.58151016e+01, 7.28618011e+01, 6.61502457e+01, 1.88962708e+01, 2.52994461e+01, 3.50310669e+01, 2.92055359e+01, 5.99336243e+01, 6.95114899e+01, 3.62390747e+01, 5.10425720e+01, 5.26614151e+01, 2.96294594e+01, 5.73330765e+01, 4.16352844e+01, 4.74842796e+01, 4.83692169e+01, 5.10431824e+01, 5.48722305e+01, 4.62306976e+01, 3.14519882e+01, 4.38627548e+01, 5.00321426e+01, 5.14258575e+01, 7.52210846e+01, 9.93036041e+01, 9.83990173e+01, 6.86606293e+01, 6.96107330e+01, 8.16544266e+01, 6.71366959e+01, 6.15632324e+01, 4.48549728e+01, 5.52420578e+01, 6.13875465e+01, 7.53445587e+01, 7.91760559e+01, 4.22256088e+01, 7.48897705e+01, 7.43165283e+01, 9.21590118e+01, 6.69716949e+01, 7.09105530e+01, 3.42971039e+01, 2.58971558e+01, 3.21113815e+01, 1.53584881e+01, 4.25020523e+01, 6.18098030e+01, 3.77826500e+01, 7.58517151e+01, 8.70597382e+01, 1.35169725e+01, 6.18471222e+01, 3.77953987e+01, 3.62759066e+00, 3.97379990e+01, 8.95052338e+00, 2.47725906e+01, 3.94081841e+01, 3.20778961e+01, 5.22129593e+01, 2.63582211e+01, 5.13999138e+01, 3.79224548e+01, 3.41955299e+01, 3.79302979e+01, 7.21106873e+01, 5.94059067e+01, 6.69247742e+01, 6.49676743e+01, 4.90059662e+01, 6.19664955e+01, 6.14885406e+01, 8.06680756e+01, 3.88650208e+01, 3.76808701e+01, 5.94846649e+01, 6.08274994e+01, 2.36492310e+01, 3.93492584e+01, 1.99042435e+01, 3.01137428e+01, 8.27740021e+01, 8.08344116e+01, 8.03734970e+01, 4.28485718e+01, 2.43272495e+01, 2.24668770e+01, 1.00488825e+01, 1.64122467e+01, 2.30133953e+01, 2.68300438e+01, 1.89439087e+01, 1.78952618e+01, 7.70651855e+01, 6.71737518e+01, 2.46215019e+01, 3.78301468e+01, 9.89481449e+00, 1.29511395e+01, 1.82136040e+01, 9.98437405e+00, 1.41208067e+01, 2.45774002e+01, 1.84004307e+01, 3.03383236e+01, 2.44733925e+01, 2.27678795e+01, 3.35277786e+01, 4.77097397e+01, 4.76495743e+01, 8.09546585e+01, 4.41440125e+01, 4.50886459e+01, 5.57026405e+01, 6.88283691e+01, 3.94292030e+01, 4.27143784e+01, 5.15915604e+01, 4.10331345e+01, 3.03575172e+01, 3.85093613e+01, 8.54534149e+01, 1.82903252e+01, 1.04282867e+02, 7.88972702e+01, 2.72346916e+01, 4.61641541e+01, 5.23743744e+01, 6.96793823e+01, 6.41394424e+01, 6.22485504e+01, 3.59788513e+01, 3.70508118e+01, 4.68329468e+01, 5.64138489e+01, 4.10661354e+01, 4.74247818e+01, 3.78972282e+01, 2.27739811e+01, 3.61505165e+01, 1.66801414e+01, 3.18956299e+01, 3.32854691e+01, 2.30715256e+01, 3.10616379e+01, 3.49883766e+01, 1.79573078e+01, 3.81130753e+01, 2.87622986e+01, 1.72270985e+01, 3.44397392e+01, 2.48976250e+01, 4.01711655e+01, 6.30475006e+01, 5.90212631e+01, 3.44787941e+01, 3.46454315e+01, 6.29037704e+01, 3.89581451e+01, 2.79019966e+01, 3.19637337e+01, 3.54322968e+01, 3.76200790e+01, 3.41355057e+01, 4.49463577e+01, 3.31107788e+01, 2.91377678e+01, 4.93132248e+01, 4.51498184e+01, 3.03318748e+01, 3.97342606e+01, 3.72017059e+01, 4.15993385e+01, 5.19969864e+01, 6.71822510e+01, 5.65003014e+01, 4.44550552e+01, 2.39358139e+01, 4.62904816e+01, 3.26808662e+01, 4.21276703e+01, 8.72986755e+01, 6.02299919e+01, 8.65874329e+01, 5.56642838e+01, 2.20434532e+01, 5.23647766e+01, 3.33812866e+01, 5.34391785e+01, 5.32422752e+01, 5.26640549e+01, 4.59929733e+01, 4.09790230e+01, 5.04886780e+01, 5.33687439e+01, 6.39874725e+01, 7.44400482e+01, 2.96683655e+01, 2.45419521e+01, 4.89773178e+01, 2.40827904e+01, 4.70198135e+01, 3.50818863e+01, 4.61852493e+01, 3.54219666e+01, 3.91417618e+01, 4.63603935e+01, 2.85882721e+01, 3.95496559e+01, 3.13470249e+01, 3.51202774e+01, 2.51435909e+01, 3.19846954e+01, 2.79036255e+01, 1.67696648e+01, 2.66791840e+01, 2.04787598e+01, 3.95463791e+01, 2.55227070e+01, 6.95914459e+01, 3.55811157e+01, 2.88160419e+01, 4.42701607e+01, 3.71893616e+01, 5.21489182e+01, 5.72022705e+01, 4.86805496e+01, 3.94599380e+01, 3.81778755e+01, 5.04706497e+01, 7.32970276e+01, 4.74354401e+01, 5.79540710e+01, 5.67594376e+01, 4.72340927e+01, 8.34274292e+01, 7.92867203e+01, 4.14546204e+01, 4.37521973e+01, 4.51743660e+01, 3.07288971e+01, 5.49268570e+01, 5.91990051e+01, 2.24992008e+01, 1.30819759e+01, 2.30261250e+01, 1.46034746e+01, 1.45853329e+01, 1.31315317e+01, 6.06584930e+01, 5.27865906e+01, 5.32591858e+01, 6.26164246e+01, 3.83576126e+01, 3.25969086e+01, 5.24085007e+01, 3.04832726e+01, 3.23986320e+01, 6.07783966e+01, 4.26327972e+01, 5.45540390e+01, 6.76084290e+01, 3.98849297e+01, 5.66887169e+01, 4.49331245e+01, 2.44231339e+01, 2.27552814e+01, 2.22614155e+01, 2.06429443e+01, 2.42310944e+01, 2.47624550e+01, 2.77301941e+01, 4.50447235e+01, 2.15722733e+01, 9.71197414e+00, 3.37857246e+01, 3.89490738e+01, 1.89400406e+01, 4.97877922e+01, 2.83484440e+01, 3.28586426e+01, 6.79795380e+01, 7.76674347e+01, 6.67743149e+01, 8.77417145e+01, 6.81982727e+01, 3.80689278e+01, 8.51772461e+01, 7.30438385e+01, 5.01093750e+01, 8.26511154e+01, 1.98839149e+01, 5.07462234e+01, 8.60978851e+01, 5.51329308e+01, 7.95915375e+01, 6.49784241e+01, 2.77090454e+01, 3.21165848e+01, 3.56620598e+01, 2.96661339e+01, 3.20693550e+01, 7.73141022e+01, 5.92100296e+01, 9.50216675e+01, 4.41532021e+01, 3.61459351e+01, 2.34503708e+01, 1.27423048e+01, 5.53728447e+01, 6.04971695e+01, 4.22055130e+01, 3.15968742e+01, 2.10703964e+01, 2.50564499e+01, 5.53196526e+01, 2.80173950e+01, 6.06046066e+01, 4.73864136e+01, 3.48854065e+01, 2.98434181e+01, 6.67010345e+01, 5.43882561e+01, 5.48091202e+01, 5.94734573e+01, 3.16403046e+01, 3.80832939e+01, 4.69233170e+01, 6.43544464e+01, 2.30150623e+01, 7.17482424e+00, 3.06857777e+01, 3.77862930e+01, 2.15229778e+01, 3.07556553e+01, 2.46708412e+01, 3.10616589e+01, 5.12789459e+01, 4.98560524e+01, 7.33730164e+01, 5.69891205e+01, 4.64849510e+01, 3.16197605e+01, 5.48608093e+01, 6.01864662e+01], [ 32.041504 ,  32.62062  ,  32.09438  ,  35.21991  ,  31.441135 ,  27.923073 ,  30.994862 ,  33.88342  ,  37.829086 ,  40.9934   ,  36.009174 ,  37.02353  ,  36.83801  ,  39.211052 ,  34.06037  ,  35.228233 ,  31.82322  ,  34.56089  ,  34.518932 ,  32.7827   ,  34.422558 ,  34.948414 ,  31.835129 ,  34.489326 ,  37.684143 ,  30.189693 ,  33.93796  ,  30.293901 ,  28.542986 ,  28.866463 ,  27.146326 ,  24.663385 ,  32.131027 ,  29.2584   ,  31.467562 ,  28.042591 ,  30.95779  ,  24.929844 ,  25.176239 ,  22.001993 ,  36.101334 ,  38.542763 ,  41.43709  ,  48.04184  ,  25.60641  ,  28.993465 ,  36.47927  ,  33.2571   ,  27.076157 ,  27.474438 ,  24.970173 ,  28.16261  ,  23.941261 ,  24.60705  ,  24.549063 ,  26.472809 ,  32.738483 ,  35.161987 ,  32.364853 ,  36.55821  ,  35.155426 ,  29.21318  ,  39.675476 ,  31.619287 ,  30.972359 ,  27.459751 ,  28.192242 ,  26.969475 ,  29.188435 ,  29.494629 ,  28.51514  ,  29.578985 ,  32.070206 ,  36.100616 ,  34.227295 ,  40.54937  ,  31.087677 ,  26.946041 ,  35.816906 ,  28.004318 ,  29.401573 ,  31.066006 ,  31.615969 ,  30.20552  ,  31.631985 ,  29.81072  ,  28.817314 ,  32.259262 ,  27.738338 ,  26.535236 ,  27.604214 ,  30.01052  ,  28.400032 ,  31.382374 ,  32.536526 ,  30.667841 ,  30.484379 ,  32.29772  ,  30.481853 ,  27.132559 ,  35.27458  ,  36.75621  ,  28.240849 ,  31.885693 ,  29.455221 ,  26.989834 ,  24.826221 ,  27.152836 ,  25.480099 ,  25.218052 ,  29.186014 ,  27.166153 ,  35.129242 ,  36.904373 ,  28.98399  ,  26.936657 ,  39.701057 ,  34.500313 ,  28.218454 ,  30.321796 ,  23.928497 ,  22.435358 ,  26.434994 ,  22.782135 ,  27.074905 ,  32.237907 ,  28.101112 ,  31.390488 ,  19.541077 ,  38.14193  ,  25.832302 ,  34.010742 ,  35.407967 ,  34.194675 ,  35.144775 ,  33.91826  ,  45.245586 ,  34.919426 ,  49.516155 ,  39.700638 ,  35.389557 ,  32.96889  ,  36.935104 ,  38.775005 ,  29.62946  ,  29.840553 ,  32.02002  ,  31.947838 ,  34.80481  ,  31.00555  ,  30.75697  ,  31.006676 ,  29.816765 ,  27.873562 ,  33.99046  ,  31.062796 ,  26.466751 ,  24.183756 ,  27.222122 ,  25.680397 ,  31.184822 ,  35.556683 ,   9.423678 ,  19.264412 ,  25.120762 ,  37.053185 ,   9.367201 ,  19.351948 ,  16.672174 ,  21.977516 ,  27.625051 ,  23.867172 ,  18.0242   ,  22.516634 ,  25.453789 ,  25.544392 ,  37.580215 ,  33.719036 ,  32.73318  ,  33.39272  ,  29.754951 ,  35.510796 ,  32.50903  ,  34.29851  ,  25.500134 ,  29.295898 ,  25.804043 ,  27.695526 ,  28.232956 ,  29.070547 ,  29.87188  ,  32.260666 ,  24.14877  ,  27.07193  ,  25.667303 ,  26.521366 ,  31.617897 ,  31.235996 ,  29.67944  ,  28.235657 ,  25.594418 ,  28.593386 ,  35.75529  ,  34.777473 ,  26.01102  ,  24.784195 ,  24.614609 ,  20.461033 ,  30.352413 ,  24.343489 ,  31.223286 ,  26.198708 ,  29.637074 ,  30.794174 ,  29.90619  ,  31.40023  ,  33.27024  ,  32.396267 ,  34.055126 ,  34.353775 ,  27.60606  ,  28.770174 ,  30.827715 ,  32.642414 ,  46.06804  ,  39.38286  ,  37.990807 ,  34.661835 ,  27.428152 ,  24.071865 ,  31.90525  ,  32.682266 ,  27.223402 ,  29.58242  ,  32.36787  ,  31.480795 ,  34.29551  ,  33.86084  ,  31.616549 ,  32.311577 ,  33.87892  ,  32.557796 ,  31.60767  ,  28.702461 ,  30.190525 ,  30.394875 ,  26.354038 ,  27.94419  ,  30.072727 ,  25.893253 ,  29.586433 ,  26.522776 ,  20.350286 ,  20.22033  ,  21.138723 ,  21.162327 ,  28.731167 ,  29.402206 ,  35.79528  ,  32.203857 ,  27.727879 ,  27.798717 ,  22.439747 ,  24.698463 ,  32.003918 ,  32.428802 ,  26.17079  ,  29.113358 ,  27.759987 ,  29.195127 ,  34.682144 ,  34.37001  ,  29.944984 ,  41.392498 ,  31.9081   ,  33.798088 ,  44.041    ,  35.062073 ,  32.09926  ,  32.193375 ,  30.298206 ,  28.7585   ,  34.113777 ,  35.209766 ,  25.329113 ,  28.515373 ,  28.711151 ,  29.233448 ,  28.336948 ,  28.526112 ,  29.042645 ,  28.404144 ,  30.922344 ,  35.41432  ,  28.59988  ,  38.651993 ,  31.934269 ,  29.343554 ,  30.726137 ,  31.20689  ,  27.241714 ,  30.506813 ,  30.78185  ,  31.682188 ,  38.788563 ,  39.715168 ,  46.096527 ,  44.69239  ,  39.922974 ,  32.50123  ,  39.47407  ,  27.687366 ,  43.879078 ,  44.817223 ,  36.09832  ,  34.65622  ,  30.155722 ,  23.179108 ,  27.667114 ,  32.359535 ,  21.70014  ,  19.334408 ,  29.29001  ,  20.749233 ,  20.693909 ,  22.617287 ,  21.579605 ,  35.140945 ,  29.877045 ,  28.591991 ,  30.570644 ,  27.75128  ,  32.184967 ,  36.246933 ,  27.146181 ,  29.396187 ,  35.41095  ,  28.986225 ,  38.975098 ,  30.230694 ,  31.41048  ,  35.128754 ,  34.483116 ,  35.662537 ,  29.542736 ,  21.612392 ,  21.54047  ,  23.711203 ,  24.492134 ,  29.219727 ,  27.95805  ,  29.158428 ,  39.041878 ,  35.74551  ,  37.862083 ,  40.034935 ,  33.18573  ,  38.14829  ,  39.742935 ,  39.94383  ,  28.305378 ,  38.698883 ,  34.71508  ,  35.46973  ,  38.601166 ,  35.76585  ,  34.017723 ,  31.649813 ,  27.098396 ,  37.643967 ,  39.596497 ,  39.869865 ,  33.486286 ,  28.673958 ,  35.89223  ,  28.263268 ,  39.053574 ,  35.724    ,  32.093857 ,  31.260616 ,  35.141632 ,  32.36699  ,  33.26957  ,  28.453302 ,  27.43524  ,  32.382866 ,  30.47837  ,  34.39582  ,  29.89028  ,  30.807364 ,  29.801413 ,  25.671703 ,  35.383266 ,  37.595726 ,  36.0337   ,  34.308815 ,  36.42907  ,  29.736546 ,  33.91374  ,  31.203583 ,  39.489746 ,  40.00434  ,  30.020512 ,  35.441864 ,  36.224586 ,  44.93316  ,  34.527245 ,  41.01586  ,  26.539185 ,  28.744932 ,  27.76781  ,  27.509098 ,  32.992195 ,  28.542841 ,  27.850307 ,  26.688717 ,  31.806225 ,  29.137554 ,  27.343971 ,  25.80621  ,  28.023655 ,  29.549465 ,  25.000397 ,  26.104498 ,  25.625538 ,  23.550472 ,  22.307663 ,  23.967186 ,  24.370071 ,  25.426731 ,  29.06797  ,  29.41956  ,  30.392784 ,  29.582943 ,  32.47029  ,  33.19976  ,  26.82975  ,  27.706936 ,  29.013231 ,  29.080343 ,  28.222298 ,  31.568327 ,  23.060009 ,  21.916218 ,  33.501034 ,  30.827053 ,  33.476425 ,  34.19923  ,  40.760597 ,  36.506004 ,  33.42723  ,  32.275993 ,  37.13642  ,  31.93391  ,  34.58616  ,  30.369919 ,  29.12272  ,  32.832558 ,  28.309805 ,  33.87977  ,  33.98897  ,  31.250858 ,  35.28738  ,  35.700665 ,  29.540676 ,  30.786043 ,  29.477695 ,  36.10295  ,  37.391655 ,  32.97894  ,  41.92148  ,  35.5941   ,  31.557411 ,  33.441643 ,  32.59577  ,  30.13086  ,  33.529007 ,  32.88732  ,  29.186947 ,  29.054499 ,  31.040882 ,  31.618309 ,  29.283752 ,  31.279434 ,  37.221893 ,  37.75808  ,  33.76192  ,  32.769608 ,  28.581688 ,  28.981766 ,  31.176254 ,  30.464653 ,  33.860397 ,  32.41677  ,  33.179695 ,  30.383774 ,  30.980577 ,  28.152561 ,  25.01329  ,  25.129063 ,  29.047935 ,  27.411324 ,  27.659775 ,  29.958988 ,  27.77753  ,  19.949303 ,  20.674862 ,  19.084082 ,  22.27512  ,  32.13817  ,  26.70242  ,  35.911995 ,  28.925303 ,  27.053267 ,  28.747978 ,  28.436558 ,  26.457533 ,  27.931494 ,  27.223995 ,  25.316128 ,  29.109318 ,  30.962671 ,  35.337242 ,  40.109795 ,  28.455505 ,  22.379456 ,  30.619362 ,  19.09278  ,  29.688187 ,  30.021545 ,  25.336227 ,  32.6915   ,  34.077736 ,  32.632896 ,  38.3839   ,  31.794407 ,  18.052563 ,  24.94643  ,  15.0219345,  23.671299 ,  34.534653 ,  31.361446 ,  30.086018 ,  31.854076 ,  39.83195  ,  39.94522  ,  34.834274 ,  32.958584 ,  32.02506  ,  24.527266 ,  31.694012 ,  23.06902  ,  33.857765 ,  32.011795 ,  36.172417 ,  32.48664  ,  35.373455 ,  26.471046 ,  35.480118 ,  35.95812  ,  25.673164 ,  32.356304 ,  20.223316 ,  26.02624  ,  32.19313  ,  34.98433  ,  28.201088 ,  33.89132  ,  21.403793 ,  19.019985 ,  34.07837  ,  24.088531 ,  21.158144 ,  33.452286 ,  27.122658 ,  30.366863 ,  29.639847 ,  28.007435 ,  26.3398   ,  24.500694 ,  29.80425  ,  34.5162   ,  23.944881 ,  26.5209   ,  28.622719 ,  28.554523 ,  30.790977 ,  32.44182  ,  23.48153  ,  15.781956 ,  24.267342 ,  10.5515585,  33.370224 ,  26.05754  ,  23.835556 ,  17.76865  ,  23.316483 ,  22.28291  ,  25.159649 ,  22.9796   ,   9.301375 ,  18.01677  ,   6.754136 ,  19.785484 ,  25.338863 ,  20.63488  ,  28.766262 ,  29.746529 ,  28.26635  ,  21.745989 ,  23.922657 ,  18.390469 ,  18.690712 ,  20.264473 ,  22.657143 ,  28.88271  ,  30.682621 ,  22.4939   ,  32.259407 ,  30.253628 ,  22.595888 ,  26.261375 ,  24.918854 ,  24.578934 ,  14.5678425,  19.505884 ,  26.215237 ,  25.140018 ,  27.808674 ,  34.373455 ,  27.654825 ,  33.286373 ,  22.628372 ,  21.794968 ,  22.357775 ,  20.72068  ,  25.943985 ,  22.70604  ,  21.635735 ,  21.471748 ,  32.78525  ,  28.750149 ,  34.036934 ,  30.181498 ,  29.512623 ,  38.889267 ,  26.968765 ,  32.25785  ,  33.994556 ,  24.920715 ,  23.809143 ,  24.32833  ,  23.727474 ,  27.534351 ,  25.965515 ,  26.845224 ,  39.09886  ,  34.265488 ,  30.270975 ,  32.010696 ,  36.004276 ,  30.617535 ,  38.74891  ,  35.252586 ,  25.147797 ,  26.99641  ,  23.663399 ,  18.21607  ,  38.927597 ,  38.036957 ,  27.274784 ,  29.260986 ,  21.958223 ,  28.492207 ,  21.44733  ,  27.078175 ,  30.409534 ,  28.002357 ,  32.085724 ,  30.36449  ,  16.914925 ,  19.026423 ,  21.833258 ,  20.7984   ,  28.665852 ,  30.99826  ,  22.744957 ,  26.707695 ,  26.963688 ,  19.95263  ,  28.432613 ,  24.150875 ,  25.405945 ,  26.288355 ,  26.50232  ,  28.068115 ,  25.467949 ,  21.438124 ,  24.922453 ,  26.12936  ,  25.805702 ,  32.769875 ,  36.598083 ,  36.46244  ,  30.83874  ,  31.196604 ,  33.802094 ,  31.664072 ,  29.064777 ,  25.285324 ,  27.49673  ,  28.790997 ,  34.35475  ,  36.820045 ,  25.5686   ,  34.1127   ,  32.905876 ,  35.519005 ,  30.51167  ,  30.834484 ,  22.177542 ,  19.110657 ,  20.161057 ,  15.326235 ,  24.026602 ,  28.927334 ,  20.995792 ,  32.373512 ,  34.10395  ,  12.55608  ,  28.658    ,  22.033173 ,   6.605649 ,  20.119057 ,   9.038687 ,  17.202738 ,  24.638199 ,  21.915745 ,  27.391033 ,  19.908056 ,  26.38755  ,  22.706028 ,  21.49236  ,  22.661915 ,  32.50398  ,  28.205404 ,  30.163654 ,  29.572273 ,  25.72143  ,  28.998259 ,  28.690598 ,  33.278397 ,  23.152466 ,  22.730152 ,  29.244186 ,  29.625816 ,  17.947243 ,  22.565346 ,  16.643196 ,  20.11536  ,  36.562546 ,  36.550278 ,  33.60376  ,  23.980505 ,  17.915045 ,  17.533714 ,  12.897597 ,  15.319627 ,  19.327538 ,  20.097485 ,  17.688461 ,  17.411356 ,  32.375805 ,  30.063797 ,  18.609716 ,  22.902323 ,  15.425663 ,  15.98507  ,  18.109657 ,  14.836698 ,  15.7685375,  19.294483 ,  17.143751 ,  21.268528 ,  19.510254 ,  18.953691 ,  21.854683 ,  25.371029 ,  25.42992  ,  32.911926 ,  24.995636 ,  25.291649 ,  27.288029 ,  30.336409 ,  23.565765 ,  22.9705   ,  26.38308  ,  24.46883  ,  20.162006 ,  23.388458 ,  33.831604 ,  16.490864 ,  37.846485 ,  32.109406 ,  19.147003 ,  25.112186 ,  26.32077  ,  30.678055 ,  28.897877 ,  28.934753 ,  22.418108 ,  22.56649  ,  25.089003 ,  27.16352  ,  23.47557  ,  25.253534 ,  23.020836 ,  17.622162 ,  21.847485 ,  15.52635  ,  20.732317 ,  21.205074 ,  17.933746 ,  20.472946 ,  21.625061 ,  16.36858  ,  22.745022 ,  20.146795 ,  16.22509  ,  21.826683 ,  19.16858  ,  23.398094 ,  28.805836 ,  28.331472 ,  22.468868 ,  22.502098 ,  28.8068   ,  23.262794 ,  20.319664 ,  21.32498  ,  22.827267 ,  23.237488 ,  21.82548  ,  24.804436 ,  22.012457 ,  20.471457 ,  25.943861 ,  24.68174  ,  21.16325  ,  23.580463 ,  23.005028 ,  24.172565 ,  26.702589 ,  29.511166 ,  27.610678 ,  24.578293 ,  18.946217 ,  24.542788 ,  21.289097 ,  23.336376 ,  33.82348  ,  28.022453 ,  33.698475 ,  27.182674 ,  17.656279 ,  26.59673  ,  20.864664 ,  26.972683 ,  26.95786  ,  26.818935 ,  24.976246 ,  23.542816 ,  26.299244 ,  26.761915 ,  29.634148 ,  31.60804  ,  20.454292 ,  18.856606 ,  25.314901 ,  18.268953 ,  25.335949 ,  21.907532 ,  25.041735 ,  22.12907  ,  22.885864 ,  25.267666 ,  20.160402 ,  22.68055  ,  20.782421 ,  22.14764  ,  18.557604 ,  21.083378 ,  19.780664 ,  15.71616  ,  19.32239  ,  16.828941 ,  23.215    ,  19.267326 ,  30.633049 ,  22.062735 ,  20.153648 ,  24.289246 ,  22.775928 ,  26.41094  ,  27.476982 ,  25.707052 ,  22.559212 ,  23.32061  ,  26.682302 ,  32.450123 ,  26.080257 ,  26.651482 ,  27.412529 ,  25.314775 ,  33.98665  ,  33.172825 ,  24.489943 ,  24.827627 ,  20.993893 ,  17.117477 ,  22.250023 ,  26.461414 ,  12.87428  ,  13.547203 ,  14.623699 ,  11.800981 ,  16.040493 ,  14.595538 ,  28.3834   ,  26.531172 ,  26.764427 ,  29.033672 ,  23.084557 ,  21.377968 ,  26.01033  ,  20.329554 ,  20.875969 ,  28.515282 ,  23.730326 ,  27.035362 ,  29.938225 ,  22.427002 ,  27.454248 ,  24.217472 ,  18.36692  ,  18.54825  ,  17.98693  ,  16.602705 ,  18.83355  ,  18.857124 ,  19.439442 ,  24.238083 ,  16.567204 ,   9.189389 ,  20.697195 ,  18.890408 ,  12.892166 ,  25.697475 ,  17.81088  ,  21.190575 ,  31.183792 ,  32.58018  ,  31.678751 ,  34.61908  ,  30.086304 ,  22.294651 ,  33.595074 ,  30.957836 ,  25.321587 ,  33.389446 ,  16.53453  ,  24.962336 ,  33.799126 ,  26.866816 ,  32.549362 ,  29.117447 ,  19.575272 ,  21.200905 ,  21.976173 ,  20.361715 ,  20.96595  ,  31.61687  ,  27.762508 ,  35.739212 ,  24.202457 ,  21.67074  ,  16.37992  ,  10.16321  ,  27.417524 ,  27.969784 ,  22.525188 ,  20.13332  ,  17.049679 ,  18.19125  ,  26.799513 ,  19.497055 ,  27.698143 ,  24.943592 ,  22.210983 ,  20.557323 ,  30.212303 ,  28.570118 ,  28.262636 ,  31.05624  ,  21.550522 ,  23.370636 ,  26.819376 ,  30.005999 ,  16.378685 ,   8.102564 ,  20.656567 ,  22.172321 ,  16.48072  ,  19.96349  ,  18.136627 ,  20.62584  ,  26.171207 ,  25.870667 ,  31.860851 ,  27.464878 ,  24.824669 ,  20.78352  ,  27.16539  ,  28.01587  ]),
#[Out]#           ([1.05905695e+01, 5.72780514e+00, 2.24631119e+01, 2.35538521e+01, 3.16681786e+01, 8.25342712e+01, 2.66231232e+01, 4.69538574e+01, 3.32156601e+01, 3.46106033e+01, 3.70292091e+00, 3.25333176e+01, 3.52183075e+01, 6.75712204e+01, 5.21020203e+01, 7.45791168e+01, 7.63459015e+01, 5.71247330e+01, 7.07398376e+01, 7.65303497e+01, 4.99401245e+01, 7.53001404e+01, 7.89982986e+01, 9.21498718e+01, 8.52752838e+01, 8.18266830e+01, 1.01827347e+02, 9.35716476e+01, 7.12036819e+01, 8.07980957e+01, 6.75595856e+01, 7.02192688e+01, 4.91381407e+00, 3.20225258e+01, 2.55693932e+01, 4.24078369e+01, 5.99497070e+01, 7.43641586e+01, 4.97453346e+01, 7.03785553e+01, 2.62824135e+01, 4.00187340e+01, 3.25862732e+01, 3.41650352e+01, 3.29412384e+01, 3.36739655e+01, 3.51977959e+01, 5.55597229e+01, 9.07799988e+01, 1.09274567e+02, 6.90320129e+01, 9.96066132e+01, 1.12027374e+02, 8.22724915e+01, 1.14176590e+02, 8.68280792e+01, 6.01980820e+01, 6.70120468e+01, 6.66565857e+01, 8.61206589e+01, 7.61030579e+01, 6.99429779e+01, 9.20632324e+01, 7.01541595e+01, 5.06461067e+01, 6.76760406e+01, 8.89979706e+01, 9.21104736e+01, 6.44436646e+01, 4.91840096e+01, 8.56581116e+01, 5.98613815e+01, 9.44529114e+01, 8.97148819e+01, 7.92287750e+01, 6.91373672e+01, 6.94397583e+01, 6.21045990e+01, 6.51476593e+01, 6.81073761e+01, 4.87607460e+01, 2.04789772e+01, 6.47904663e+01, 7.80114822e+01, 3.74973106e+01, 4.52030869e+01, 6.96434021e+01, 8.69016647e+01, 8.25690384e+01, 1.16148422e+02, 6.41589813e+01, 8.37512207e+01, 1.05385857e+02, 1.46097961e+02, 7.10261688e+01, 9.21934128e+01, 9.37327576e+01, 7.26683197e+01, 9.44606171e+01, 6.27882080e+01, 6.06903534e+01, 5.46565170e+01, 5.53632812e+01, 4.29356499e+01, 5.86635056e+01, 4.84965782e+01, 5.72181206e+01, 6.38857613e+01, 6.02241211e+01, 4.80703850e+01, 9.13890076e+01, 8.55613480e+01, 5.40790863e+01, 5.99738770e+01, 3.93315887e+01, 6.48152008e+01, 7.22667694e+01, 5.72996521e+01, 9.34392776e+01, 7.85462799e+01, 3.63471489e+01, 6.14014587e+01, 6.70832901e+01, 4.86128922e+01, 9.56879501e+01, 1.04533554e+02, 5.78895569e+01, 9.74583740e+01, 5.28876801e+01, 4.20404816e+01, 5.60337715e+01, 6.00042152e+01, 2.94689140e+01, 3.35219231e+01, 3.78068848e+01, 2.65370522e+01, 7.79508820e+01, 7.02268982e+01, 9.82598953e+01, 8.74011383e+01, 6.59640045e+01, 3.60022812e+01, 6.77307129e+01, 5.16843567e+01, 6.05268097e+01, 7.35391998e+01, 3.08054981e+01, 4.58776016e+01, 9.33387070e+01, 9.74019318e+01, 4.16097374e+01, 7.78518524e+01, 1.98178520e+01, 1.92537270e+01, 4.34224243e+01, 4.85690956e+01, 3.35418625e+01, 5.70822105e+01, 6.17120056e+01, 8.04435730e+01, 8.61128540e+01, 8.69755096e+01, 6.93643112e+01, 7.38237534e+01, 6.10748444e+01, 6.29904861e+01, 6.09845352e+01, 5.98533401e+01, 3.46910896e+01, 4.81609039e+01, 3.44435577e+01, 4.39459305e+01, 5.03276367e+01, 5.17000694e+01, 5.09270859e+01, 6.33667297e+01, 1.06785027e+02, 9.29587860e+01, 1.15034988e+02, 8.61783066e+01, 1.04912598e+02, 1.24030365e+02, 5.61203995e+01, 4.19681129e+01, 8.64155350e+01, 5.33844566e+01, 6.70336761e+01, 4.23967819e+01, 2.46047077e+01, 3.77801361e+01, 2.65896053e+01, 4.57837296e+01, 8.07489243e+01, 8.57462311e+01, 7.38348694e+01, 6.03194656e+01, 9.58814240e+01, 8.77910461e+01, 7.53178787e+01, 8.01992035e+01, 6.56545563e+01, 7.12316971e+01, 1.06800751e+02, 1.00503029e+02, 6.84641800e+01, 7.00844574e+01, 8.23297043e+01, 8.01718140e+01, 7.04753418e+01, 5.59065933e+01, 7.55958405e+01, 7.94496307e+01, 6.26326866e+01, 9.70336227e+01, 7.79397812e+01, 8.66405487e+01, 9.91972351e+01, 1.07374397e+02, 1.07380310e+02, 1.33099823e+02, 1.00000809e+02, 7.91674347e+01, 1.14665543e+02, 1.02281227e+02, 1.01661499e+02, 8.14684448e+01, 6.50738068e+01, 6.80861511e+01, 6.70698700e+01, 9.73040466e+01, 6.26511230e+01, 1.08925644e+02, 6.83811874e+01, 8.53332214e+01, 6.35266151e+01, 6.55444641e+01, 6.66235733e+01, 1.17544510e+02, 7.50347366e+01, 9.66547699e+01, 1.29239944e+02, 1.25603928e+02, 1.41861511e+02, 1.49057343e+02, 1.17295311e+02, 1.02109680e+02, 1.24481689e+02, 8.80338364e+01, 1.28420212e+02, 1.47344147e+02, 1.24400612e+02, 1.50102631e+02, 1.79791443e+02, 1.52345261e+02, 1.88700912e+02, 2.01547699e+02, 3.82806587e+01, 7.16236877e+01, 1.03324921e+02, 8.34517517e+01, 8.04319153e+01, 8.60729752e+01, 7.21085205e+01, 7.80385437e+01, 1.58282333e+02, 1.08366714e+02, 1.05442993e+02, 8.72816772e+01, 7.49944916e+01, 7.00357590e+01, 9.87312927e+01, 1.32734543e+02, 1.00414970e+02, 7.84890594e+01, 8.64600677e+01, 6.06987152e+01, 9.05844955e+01, 1.24976776e+02, 5.85554886e+01, 7.07135315e+01, 8.22924652e+01, 6.98528671e+01, 1.14893555e+02, 9.47694244e+01, 8.57178040e+01, 7.84767151e+01, 9.62020874e+01, 9.64526367e+01, 6.74116669e+01, 9.16383209e+01, 7.62790604e+01, 1.12071609e+02, 1.20787354e+02, 1.30568756e+02, 1.18149933e+02, 9.55237045e+01, 1.06468063e+02, 1.09651245e+02, 1.10861794e+02, 9.74644852e+01, 8.97001953e+01, 6.27518845e+01, 7.95873260e+01, 8.12014084e+01, 1.27072098e+02, 1.01815170e+02, 1.02199417e+02, 1.22056946e+02, 1.10978256e+02, 1.38434967e+02, 1.50504684e+02, 1.58621368e+02, 9.53385468e+01, 1.62406830e+02, 1.41047729e+02, 1.66882828e+02, 1.56126572e+02, 8.90431213e+01, 1.05579567e+02, 5.12799530e+01, 8.54153595e+01, 7.32412338e+01, 4.50103455e+01, 6.93251648e+01, 8.41065216e+01, 6.43856964e+01, 9.55442047e+01, 8.41096039e+01, 6.01445618e+01, 1.00357483e+02, 8.42891083e+01, 9.16880646e+01, 1.02467010e+02, 8.51976013e+01, 8.87488098e+01, 7.63102417e+01, 5.63208580e+01, 6.55149231e+01, 7.70530014e+01, 7.82669067e+01, 6.11257629e+01, 5.99971695e+01, 6.79502869e+01, 8.02324753e+01, 8.61011047e+01, 9.75565643e+01, 8.73561172e+01, 1.20191948e+02, 1.15294540e+02, 9.23665390e+01, 1.26037521e+02, 9.96310806e+01, 1.23897812e+02, 9.62879944e+01, 1.32183746e+02, 1.32782333e+02, 9.43558350e+01, 8.04163513e+01, 1.05216606e+02, 8.00879440e+01, 7.40217285e+01, 1.25513557e+02, 5.73856812e+01, 1.04245697e+02, 1.08622986e+02, 9.18162384e+01, 1.03605728e+02, 8.94998627e+01, 1.04510803e+02, 1.13295982e+02, 8.45056915e+01, 9.73417206e+01, 1.16259491e+02, 1.18132751e+02, 9.61072235e+01, 1.23887009e+02, 6.91702423e+01, 6.10006638e+01, 6.04636536e+01, 4.98375702e+01, 1.05321274e+02, 1.40008575e+02, 7.11524048e+01, 1.32431519e+02, 1.27594620e+02, 9.72345734e+01, 1.23141708e+02, 9.51585083e+01, 6.56091919e+01, 8.21301346e+01, 7.13411636e+01, 7.77858810e+01, 1.03839737e+02, 1.15730072e+02, 1.16628998e+02, 1.44364563e+02, 1.23040939e+02, 1.23625008e+02, 2.00184036e+02, 1.87575317e+02, 1.32488556e+02, 1.50504395e+02, 1.21681366e+02, 1.78312592e+02, 7.62846756e+01, 6.93789978e+01, 1.44456390e+02, 1.05990715e+02, 1.05284004e+02, 1.64896393e+02, 1.30099518e+02, 1.38178650e+02, 1.55945923e+02, 1.42286499e+02, 1.47452240e+02, 1.54737457e+02, 1.21018875e+02, 1.50735901e+02, 1.07875290e+02, 1.84462585e+02, 1.75892365e+02, 1.72279236e+02, 1.93646240e+02, 1.69036774e+02, 1.32441605e+02, 1.33329971e+02, 1.74850983e+02, 1.25187439e+02, 1.98115005e+02, 2.42902466e+02, 1.39795715e+02, 2.38696198e+02, 1.44240021e+02, 1.32314148e+02, 1.36980759e+02, 1.35025497e+02, 1.14043106e+02, 1.29800690e+02, 1.16450119e+02, 9.46413727e+01, 1.93863953e+02, 1.75965439e+02, 1.79063751e+02, 1.62209198e+02, 1.79399612e+02, 9.18970108e+01, 1.83406494e+02, 1.38984680e+02, 1.00075974e+02, 1.03229179e+02, 1.00572418e+02, 6.41448212e+01, 7.11934509e+01, 7.60390091e+01, 4.46352196e+01, 5.09030724e+01, 7.62648315e+01, 4.01713104e+01, 1.33698654e+02, 4.98094788e+01, 4.14700699e+01, 4.20843277e+01, 4.14666290e+01, 4.58082161e+01, 9.22106323e+01, 8.11129150e+01, 1.25164948e+02, 1.33063538e+02, 5.17617950e+01, 4.85879745e+01, 6.99845123e+01, 4.67407532e+01, 6.22812881e+01, 9.98706818e+01, 6.09735565e+01, 6.97204895e+01, 7.65897980e+01, 7.75231171e+01, 7.70398712e+01, 9.57449341e+01, 1.36562927e+02, 1.08026581e+02, 9.74623566e+01, 1.06049461e+02, 5.28821869e+01, 7.34495850e+01, 7.07943878e+01, 8.13733215e+01, 7.05406952e+01, 6.54832230e+01, 7.90468140e+01, 6.38501892e+01, 6.01882324e+01, 1.07972710e+02, 8.58577423e+01, 1.94181976e+02, 7.53665237e+01, 5.43613815e+01, 1.00305984e+02, 6.09069824e+01, 6.04153099e+01, 9.86207581e+01, 5.69692078e+01, 9.10328903e+01, 1.23052071e+02, 9.88599854e+01, 1.85078079e+02, 1.18134995e+02, 1.09224586e+02, 9.44299011e+01, 1.42693039e+02, 1.28023499e+02, 3.42769852e+01, 5.22953491e+01, 3.59229355e+01, 4.61277885e+01, 5.66823959e+01, 6.77368546e+01, 5.31294098e+01, 5.88231659e+01, 2.46292629e+01, 2.28085899e+01, 7.10989151e+01, 3.42222443e+01, 3.32727737e+01, 8.58076324e+01, 1.16689997e+01, 4.47144318e+01, 7.92008209e+01, 3.69888458e+01, 8.01001892e+01, 4.85991821e+01, 3.43974876e+01, 4.58158264e+01, 4.36828880e+01, 5.25815201e+01, 1.29925964e+02, 1.15731857e+02, 1.24658646e+02, 1.40443420e+02, 1.57051849e+02, 1.36891907e+02, 1.80037445e+02, 1.54842239e+02, 9.03443146e+01, 6.44198608e+01, 7.37600098e+01, 8.20638580e+01, 2.81821976e+01, 6.07846375e+01, 9.33751984e+01, 8.52287979e+01, 6.38594208e+01, 8.54742813e+01, 7.79499588e+01, 7.58072281e+01, 9.67481308e+01, 9.64605865e+01, 8.91695099e+01, 1.27624298e+02, 8.93890381e+01, 8.29513397e+01, 5.13860245e+01, 2.87804222e+01, 6.31261749e+01, 1.10677643e+02, 3.01746521e+01, 6.97220459e+01, 4.19117546e+01, 3.70574799e+01, 1.04708862e+02, 4.95803299e+01, 7.38505554e+01, 1.00400558e+02, 5.06039276e+01, 7.74591141e+01, 4.27937202e+01, 7.67253113e+01, 1.07561569e+02, 1.65028015e+02, 1.13175766e+02, 1.00865585e+02, 1.91176483e+02, 1.62392593e+02, 1.36552368e+02, 1.46647415e+02, 1.23553719e+02, 1.22835114e+02, 1.77110321e+02, 1.42292542e+02, 1.53986053e+02, 1.02807434e+02, 1.38145859e+02, 1.65515381e+02, 1.56510483e+02, 1.62879288e+02, 1.76665482e+02, 1.92956375e+02, 1.74617661e+02, 1.74909164e+02, 1.46005890e+02, 1.47045410e+02, 9.50476761e+01, 1.15157364e+02, 1.32287933e+02, 1.79690277e+02, 6.35754929e+01, 1.06141693e+02, 4.76409035e+01, 1.07282654e+02, 3.66658478e+01, 6.34851379e+01, 1.30899582e+02, 8.56778641e+01, 8.22543945e+01, 9.88421631e+01, 6.51176758e+01, 7.09884796e+01, 2.36969757e+01, 3.55909882e+01, 8.33515549e+01, 1.61133972e+02, 1.39216324e+02, 1.65853851e+02, 9.64942398e+01, 9.74293823e+01, 1.40075012e+02, 9.84079590e+01, 5.54431000e+01, 5.82271042e+01, 1.26890785e+02, 9.67427216e+01, 1.92625229e+02, 1.61405640e+02, 1.64185272e+02, 1.52469543e+02, 1.78298203e+02, 1.85643295e+02, 1.64064941e+02, 1.83074921e+02, 1.20511681e+02, 5.37857437e+01, 1.17627563e+02, 7.73998184e+01, 1.37103596e+01, 7.71696014e+01, 2.32282963e+01, 6.02893982e+01, 6.93144226e+01, 9.66285553e+01, 4.11072998e+01, 1.05188004e+02, 1.40143433e+02, 7.84704361e+01, 1.69411621e+02, 1.04402084e+02, 1.05584030e+02, 8.99127960e+01, 8.92377396e+01, 7.70732727e+01, 8.46246033e+01, 1.31805191e+02, 7.34322739e+01, 1.18087524e+02, 8.54272537e+01, 7.47657852e+01, 9.73604431e+01, 9.08077240e+01, 5.87273293e+01, 5.37492065e+01, 3.21209602e+01, 4.19195633e+01, 2.90639076e+01, 1.75896416e+01, 7.41392975e+01, 3.17767906e+01, 7.34046478e+01, 5.12092972e+01, 3.61967010e+01, 4.78014908e+01, 5.42096100e+01, 1.74851608e+01, 2.33363171e+01, 1.75127602e+01, 3.35368805e+01, 3.41947784e+01, 4.36767273e+01, 3.89575539e+01, 6.24575729e+01, 3.14583168e+01, 5.56030579e+01, 4.68530807e+01, 1.60666237e+01, 6.56348419e+01, 8.18593826e+01, 1.53932831e+02, 4.61363525e+01, 6.02861633e+01, 4.73833275e+01, 4.66597977e+01, 9.16367798e+01, 1.42089676e+02, 6.06309433e+01, 9.26171112e+01, 5.86889534e+01, 3.97589149e+01, 6.37759018e+01, 4.70448380e+01, 8.01076050e+01, 1.35441635e+02, 9.39907379e+01, 1.29025452e+02, 5.70061188e+01, 7.60487595e+01, 5.47841110e+01, 8.15303192e+01, 1.25574890e+02, 1.39242035e+02, 9.98683929e+01, 1.30639618e+02, 9.89527588e+01, 1.28945724e+02, 8.34491043e+01, 4.34674683e+01, 1.43249786e+02, 1.49197906e+02, 1.05528191e+02, 1.31636230e+02, 9.77326813e+01, 4.34813690e+01, 1.16240067e+02, 1.01714737e+02, 9.65043793e+01, 1.22116837e+02, 1.23467880e+02, 1.19173477e+02, 6.83492508e+01, 6.59579315e+01, 1.07370163e+02, 8.24373932e+01, 1.26458160e+02, 1.40992371e+02, 9.28985825e+01, 1.28021255e+02, 1.44612549e+02, 1.17607559e+02, 1.35915375e+02, 1.27130241e+02, 1.45813202e+02, 1.61009506e+02, 1.52739594e+02, 1.59468811e+02, 1.16409607e+02, 1.15671188e+02, 1.06754517e+02, 1.04931664e+02, 1.08421417e+02, 8.18007660e+01, 7.58479309e+01, 6.05869179e+01, 1.13247726e+02, 8.12687988e+01, 5.71093597e+01, 6.56106339e+01, 8.18355408e+01, 7.60288239e+01, 7.49558563e+01, 6.47572479e+01, 2.22984619e+02, 1.88620361e+02, 2.27286346e+02, 2.35952255e+02, 1.23076523e+02, 1.13886780e+02, 1.55293732e+02, 9.70033722e+01, 2.08864197e+02, 1.92406586e+02, 2.03308228e+02, 1.62016785e+02, 1.06985390e+02, 7.32508240e+01, 8.01317139e+01, 7.16552887e+01, 1.23890396e+02, 1.26187775e+02, 9.25468903e+01, 1.21516365e+02, 1.33701904e+02, 1.00896736e+02, 1.14204437e+02, 8.26626358e+01, 8.39706879e+01, 7.92390594e+01, 9.22249298e+01, 6.09584541e+01, 8.89954529e+01, 7.03904419e+01, 6.20984726e+01, 6.71559753e+01, 1.02350937e+02, 1.62209534e+02, 8.63003159e+01, 1.47159302e+02, 1.74841522e+02, 1.45055222e+02, 1.67289734e+02, 1.52905350e+02, 1.52144226e+02, 1.64466568e+02, 1.76279694e+02, 1.70468384e+02, 1.53741791e+02, 1.51980591e+02, 1.44305908e+02, 1.69870056e+02, 1.56688171e+02, 1.16958138e+02, 1.29560425e+02, 1.13949097e+02, 1.04416000e+02, 1.21148346e+02, 1.06267319e+02, 1.03487175e+02, 1.15062302e+02, 8.72239227e+01, 1.30180756e+02, 1.07295273e+02, 9.93442612e+01, 6.54309998e+01, 1.04833344e+02, 8.52102966e+01, 7.32221985e+01, 4.64078217e+01, 8.19077454e+01, 5.43819122e+01, 5.31736641e+01, 1.26696236e+02, 5.57817802e+01, 1.05843796e+02, 7.34571228e+01, 5.15491943e+01, 7.33783112e+01, 7.43659210e+01, 6.04992027e+01, 1.21018661e+02, 9.13148727e+01, 1.18034233e+02, 1.26364029e+02, 6.28394470e+01, 1.09646820e+02, 7.14806137e+01, 1.38649506e+02, 1.71538040e+02, 1.30256363e+02, 1.55665771e+02, 1.43194992e+02, 1.44565826e+02, 1.36343811e+02, 1.70904358e+02, 1.24617279e+02, 1.20411865e+02, 1.24257416e+02, 1.15298874e+02, 1.13468498e+02, 1.12554459e+02, 8.24360352e+01, 6.99409332e+01, 9.57218018e+01, 7.80298309e+01, 8.59423065e+01, 1.00028053e+02, 7.92774887e+01, 8.92358093e+01, 9.25905609e+01, 1.12983429e+02, 1.03431015e+02, 9.57465973e+01, 1.14275864e+02, 1.09452347e+02, 8.81998901e+01, 1.27550583e+02, 8.18950043e+01, 1.17908127e+02, 1.09977982e+02, 1.27605789e+02, 9.05104599e+01, 1.41398697e+02, 6.73310776e+01, 1.16384247e+02, 9.85829468e+01, 1.60409607e+02, 8.86485519e+01, 1.00797119e+02, 1.47675064e+02, 9.70704956e+01, 1.71156281e+02, 1.82725616e+02, 1.48574799e+02, 1.62723358e+02, 1.44942017e+02, 2.32826065e+02, 1.26278122e+02, 2.16482727e+02, 1.13121605e+02, 1.01330414e+02, 8.50049820e+01, 7.08878174e+01, 1.04412254e+02, 1.98137558e+02, 7.20997543e+01, 1.37124771e+02, 2.22852570e+02, 1.59519135e+02, 2.19939545e+02, 1.46576218e+02, 1.42830551e+02, 1.19426239e+02, 1.16650192e+02, 8.28302612e+01, 2.28746460e+02, 1.69501099e+02, 1.89452087e+02, 1.28073303e+02, 8.22733002e+01, 7.18986053e+01, 1.02452232e+02, 1.26793152e+02, 8.48235397e+01, 6.09111862e+01, 7.04358215e+01, 6.40308075e+01, 5.33950195e+01, 7.28875961e+01, 8.14374084e+01, 1.10214478e+02, 8.41413727e+01, 8.43260193e+01, 7.83113098e+01, 9.08727493e+01, 1.30574158e+02, 1.45513565e+02, 9.74463196e+01, 8.55362244e+01, 1.01816879e+02, 1.16887756e+02, 8.88199310e+01, 8.88322296e+01, 1.25443451e+02, 1.53689178e+02, 1.19792526e+02, 1.38559052e+02, 8.74746552e+01, 7.31816406e+01, 6.14034195e+01, 6.77274704e+01, 7.79515305e+01, 1.52808868e+02, 4.35714569e+01, 7.22555771e+01, 1.05034630e+02, 9.61181793e+01, 8.74025192e+01, 8.47680283e+01, 1.03476471e+02, 1.50635834e+02, 1.01009911e+02, 1.24871628e+02, 8.84416122e+01, 8.44167557e+01, 1.48318802e+02, 9.82771759e+01, 9.30369720e+01, 1.10826172e+02, 1.02534897e+02, 1.13647659e+02, 1.65886963e+02, 1.86152863e+02, 1.32623383e+02, 1.06994980e+02, 1.74739700e+02, 8.70741730e+01, 8.79600830e+01, 3.89444351e+01, 1.17408333e+02, 9.81690979e+01, 1.39559280e+02, 1.27680466e+02, 1.26619034e+02, 9.19862747e+01, 1.78727325e+02, 1.93938690e+02, 1.55535828e+02, 1.21229538e+02, 1.30326508e+02, 1.18519547e+02, 1.12835037e+02, 1.41307297e+02, 1.30085220e+02, 1.50204147e+02, 1.58331818e+02, 1.13753464e+02, 1.11851814e+02, 9.32003937e+01, 1.18531418e+02, 1.36638672e+02, 1.15898842e+02, 1.42457794e+02, 1.42752304e+02, 1.23612343e+02, 1.51371170e+02, 1.35692230e+02, 1.37209473e+02, 1.83619614e+02, 1.24358879e+02, 1.30833801e+02, 1.65897705e+02, 1.55950989e+02, 1.45613129e+02, 6.50555725e+01, 9.48496399e+01, 1.05269943e+02, 3.43376694e+01, 9.48037109e+01], [ 12.187382 ,   7.9254017,  19.17949  ,  17.764902 ,  20.077148 ,  35.46853  ,  20.896381 ,  26.77386  ,  22.724167 ,  23.570034 ,   4.2062173,  21.895515 ,  23.73624  ,  33.164658 ,  29.828743 ,  36.91385  ,  34.02588  ,  29.214909 ,  32.778236 ,  34.00677  ,  27.390205 ,  33.295036 ,  34.289898 ,  37.236664 ,  38.87606  ,  35.611115 ,  47.0251   ,  43.869453 ,  32.68348  ,  34.91323  ,  32.420937 ,  32.74061  ,   6.798739 ,  20.685467 ,  19.464954 ,  24.868725 ,  32.615894 ,  37.76622  ,  27.665741 ,  35.495728 ,  20.600857 ,  24.601507 ,  22.662968 ,  23.219944 ,  21.67321  ,  22.184336 ,  23.195732 ,  28.47368  ,  42.7767   ,  42.925278 ,  33.865547 ,  38.211967 ,  40.763786 ,  35.015797 ,  40.93217  ,  35.953785 ,  30.386955 ,  31.700857 ,  31.388027 ,  36.09708  ,  33.786087 ,  32.750614 ,  37.363754 ,  32.391506 ,  27.753574 ,  31.668549 ,  36.57663  ,  37.28385  ,  31.147047 ,  27.806126 ,  35.955734 ,  30.231792 ,  38.1226   ,  36.94481  ,  34.601265 ,  32.353027 ,  32.308952 ,  30.551893 ,  31.457367 ,  31.837109 ,  26.667736 ,  18.10874  ,  31.286861 ,  33.20232  ,  23.43265  ,  25.68792  ,  31.96851  ,  35.13583  ,  34.426758 ,  40.99852  ,  30.69716  ,  34.33908  ,  38.70861  ,  45.574    ,  31.991543 ,  35.50937  ,  37.156357 ,  32.948677 ,  37.309242 ,  29.902649 ,  30.507801 ,  28.7117   ,  28.980865 ,  25.71334  ,  29.70317  ,  26.648764 ,  29.535654 ,  30.899426 ,  29.585686 ,  26.553514 ,  37.08943  ,  35.779533 ,  28.286285 ,  29.28365  ,  24.471634 ,  30.278164 ,  32.28964  ,  29.01142  ,  36.690228 ,  33.41542  ,  23.675505 ,  29.606155 ,  31.628822 ,  26.551935 ,  36.822796 ,  38.93644  ,  28.201422 ,  37.115837 ,  28.583195 ,  25.518026 ,  29.345339 ,  30.286764 ,  21.285301 ,  22.271204 ,  23.686796 ,  20.15878  ,  34.090813 ,  32.927406 ,  38.68132  ,  36.715538 ,  31.875679 ,  22.991718 ,  32.206577 ,  27.567226 ,  29.924828 ,  33.02332  ,  21.142506 ,  24.756798 ,  37.61692  ,  38.424004 ,  23.952118 ,  33.980774 ,  18.045965 ,  17.825195 ,  24.68106  ,  26.410168 ,  22.724794 ,  29.327267 ,  30.045204 ,  34.97854  ,  36.237926 ,  36.81715  ,  32.374035 ,  33.821075 ,  30.086325 ,  29.315716 ,  30.023022 ,  28.8694   ,  22.880232 ,  27.998768 ,  23.63615  ,  27.91741  ,  28.669884 ,  28.723038 ,  30.138725 ,  33.54986  ,  39.392418 ,  37.162857 ,  41.807785 ,  36.469204 ,  39.34106  ,  43.56057  ,  27.680588 ,  24.009844 ,  36.81417  ,  29.419804 ,  34.216393 ,  27.665848 ,  20.227076 ,  24.332672 ,  22.317963 ,  27.826805 ,  34.847607 ,  36.115005 ,  33.197212 ,  29.763607 ,  38.143486 ,  36.672516 ,  33.543446 ,  34.839706 ,  31.057598 ,  31.383698 ,  40.25135  ,  38.503685 ,  31.914612 ,  32.523933 ,  35.22963  ,  34.78029  ,  32.726765 ,  29.001814 ,  33.729446 ,  34.34446  ,  30.069618 ,  37.33149  ,  33.911453 ,  35.648537 ,  38.259655 ,  39.914642 ,  39.900654 ,  44.98754  ,  38.55056  ,  34.666695 ,  41.763947 ,  39.449406 ,  39.29107  ,  35.530342 ,  31.284698 ,  33.181263 ,  32.646755 ,  38.864002 ,  31.897654 ,  41.6307   ,  33.72676  ,  38.40938  ,  33.171417 ,  33.218674 ,  33.987545 ,  44.821255 ,  37.52944  ,  42.767876 ,  45.254333 ,  44.59986  ,  48.535378 ,  49.95561  ,  42.962418 ,  39.92489  ,  44.879414 ,  37.449596 ,  47.612007 ,  50.819717 ,  48.08721  ,  53.79799  ,  56.68241  ,  50.95169  ,  59.510826 ,  61.773407 ,  23.7576   ,  32.30046  ,  38.332947 ,  35.119236 ,  34.437416 ,  35.431274 ,  32.582756 ,  33.70497  ,  47.732983 ,  39.255623 ,  37.90597  ,  35.104565 ,  32.877785 ,  31.777409 ,  37.535423 ,  43.21875  ,  37.83118  ,  33.09469  ,  35.189774 ,  29.368555 ,  35.44443  ,  42.17781  ,  28.951069 ,  30.99358  ,  34.298412 ,  31.686281 ,  40.042366 ,  36.643875 ,  34.695713 ,  32.976364 ,  36.95037  ,  36.797714 ,  31.241907 ,  36.427814 ,  33.161797 ,  40.946583 ,  43.674294 ,  44.772255 ,  43.56195  ,  38.504642 ,  39.22284  ,  39.720978 ,  39.80616  ,  37.106808 ,  35.799206 ,  30.612282 ,  33.711792 ,  33.897144 ,  42.42222  ,  37.745872 ,  37.738102 ,  40.95009  ,  39.24823  ,  43.504066 ,  45.66618  ,  46.725967 ,  36.21681  ,  47.20008  ,  44.319336 ,  48.151928 ,  46.348072 ,  33.903046 ,  37.294647 ,  26.910095 ,  34.114304 ,  32.77942  ,  25.333755 ,  31.451565 ,  34.77375  ,  30.71485  ,  36.843525 ,  34.737915 ,  28.627708 ,  37.482376 ,  34.27877  ,  35.65869  ,  38.079582 ,  34.98149  ,  35.2993   ,  33.140198 ,  28.873703 ,  30.792412 ,  33.21428  ,  33.59519  ,  29.75137  ,  28.976355 ,  31.319359 ,  33.701046 ,  35.05545  ,  36.978195 ,  35.15005  ,  40.85343  ,  40.212    ,  36.209362 ,  41.99363  ,  36.49491  ,  41.02598  ,  36.553833 ,  42.05154  ,  42.72997  ,  36.589546 ,  33.82237  ,  38.30346  ,  33.769047 ,  30.764297 ,  41.03737  ,  27.954124 ,  38.138138 ,  38.535946 ,  35.805584 ,  37.81029  ,  35.462997 ,  38.202553 ,  39.859463 ,  34.603107 ,  37.080276 ,  40.138535 ,  40.077557 ,  36.878067 ,  41.308506 ,  31.164785 ,  29.340523 ,  29.231255 ,  26.76088  ,  38.34341  ,  44.330757 ,  31.167576 ,  42.804253 ,  42.59588  ,  36.710644 ,  42.024914 ,  36.65645  ,  30.651604 ,  33.533653 ,  31.815168 ,  32.816666 ,  38.972248 ,  40.072624 ,  41.48566  ,  45.463745 ,  40.778717 ,  41.073235 ,  53.67833  ,  52.162674 ,  42.906776 ,  45.481003 ,  40.9273   ,  49.78353  ,  31.963734 ,  30.919212 ,  44.125763 ,  38.47706  ,  38.82346  ,  48.11255  ,  43.367874 ,  45.10886  ,  46.891445 ,  44.92198  ,  46.388123 ,  47.79432  ,  42.82175  ,  47.868237 ,  42.036877 ,  54.791046 ,  52.23976  ,  51.435997 ,  56.890915 ,  53.46409  ,  48.001663 ,  48.63768  ,  57.271694 ,  48.93358  ,  59.009224 ,  66.42522  ,  51.90504  ,  66.45836  ,  47.73746  ,  44.874416 ,  47.363457 ,  48.341602 ,  42.62494  ,  45.33686  ,  44.34687  ,  40.685257 ,  58.527138 ,  56.48569  ,  57.397797 ,  55.60843  ,  57.388596 ,  40.989822 ,  59.7784   ,  52.040146 ,  37.282913 ,  38.108353 ,  37.531296 ,  29.76403  ,  31.03698  ,  32.902004 ,  25.390335 ,  27.098843 ,  32.356598 ,  24.95269  ,  44.522476 ,  27.079351 ,  25.121826 ,  25.657406 ,  25.749535 ,  26.950644 ,  36.07959  ,  33.210575 ,  41.978043 ,  43.626392 ,  27.483343 ,  26.577229 ,  31.388733 ,  26.559782 ,  29.930794 ,  37.978962 ,  31.283096 ,  33.575745 ,  33.67383  ,  33.77295  ,  34.59646  ,  39.30764  ,  46.667007 ,  42.320988 ,  41.305664 ,  42.617027 ,  29.025383 ,  35.497627 ,  35.1194   ,  38.06901  ,  36.83495  ,  34.890068 ,  39.497463 ,  36.06426  ,  32.98829  ,  44.23307  ,  39.662895 ,  62.425896 ,  35.826473 ,  30.200039 ,  42.158195 ,  32.685753 ,  31.946392 ,  40.414276 ,  31.479452 ,  40.45034  ,  47.32644  ,  42.852684 ,  60.805176 ,  48.06771  ,  45.399956 ,  42.042633 ,  54.217743 ,  50.487293 ,  24.98508  ,  31.09599  ,  25.807985 ,  29.432812 ,  32.63799  ,  35.29769  ,  32.464973 ,  34.030083 ,  22.861538 ,  22.459435 ,  38.617493 ,  26.188545 ,  26.328346 ,  40.44648  ,  14.089257 ,  24.445444 ,  38.024185 ,  22.106926 ,  35.056644 ,  22.362577 ,  25.3972   ,  29.575684 ,  24.14526  ,  31.944206 ,  52.06814  ,  43.39447  ,  52.7426   ,  56.135117 ,  57.299942 ,  53.752747 ,  64.50697  ,  60.546318 ,  45.631535 ,  39.154823 ,  42.601494 ,  45.954117 ,  20.935032 ,  32.67497  ,  49.129425 ,  45.8338   ,  41.844345 ,  47.944885 ,  46.721733 ,  46.455803 ,  50.712692 ,  50.241684 ,  47.727768 ,  59.579414 ,  45.726276 ,  41.466637 ,  36.112846 ,  28.57812  ,  35.890884 ,  49.543243 ,  28.130573 ,  41.929867 ,  33.744213 ,  32.783978 ,  52.68322  ,  38.348507 ,  44.41705  ,  52.67771  ,  38.90439  ,  44.859276 ,  27.978506 ,  35.76689  ,  46.882313 ,  57.639847 ,  45.895332 ,  44.807915 ,  63.5366   ,  58.644684 ,  55.555744 ,  57.537804 ,  53.602264 ,  54.153217 ,  63.39586  ,  57.49225  ,  60.825245 ,  49.234753 ,  53.08748  ,  57.927116 ,  58.36693  ,  59.237453 ,  60.068718 ,  62.063705 ,  61.076225 ,  61.789104 ,  57.283745 ,  58.033836 ,  48.124523 ,  51.83014  ,  54.448967 ,  64.30736  ,  39.53923  ,  48.131233 ,  33.859116 ,  49.91944  ,  31.20823  ,  40.476074 ,  56.613914 ,  46.83833  ,  46.342545 ,  50.53655  ,  41.05227  ,  43.584602 ,  27.571226 ,  31.664982 ,  46.95998  ,  65.36113  ,  60.851227 ,  67.390724 ,  49.268524 ,  50.47746  ,  60.365562 ,  51.157864 ,  38.134617 ,  39.514954 ,  58.00928  ,  50.233345 ,  72.351585 ,  65.77011  ,  66.30011  ,  64.271675 ,  69.83084  ,  70.887985 ,  66.459    ,  69.723305 ,  58.58738  ,  33.285202 ,  57.919174 ,  44.602684 ,  15.992655 ,  41.36577  ,  21.14279  ,  40.46454  ,  43.925396 ,  51.586826 ,  34.52375  ,  49.35454  ,  60.23147  ,  46.70482  ,  66.50371  ,  51.0792   ,  54.129715 ,  49.96204  ,  49.897625 ,  46.03291  ,  47.195324 ,  59.066936 ,  44.47014  ,  55.569714 ,  51.229347 ,  47.163406 ,  55.94188  ,  53.2987   ,  40.604187 ,  37.71789  ,  29.488707 ,  33.20488  ,  28.327621 ,  24.32767  ,  42.029896 ,  28.877289 ,  40.84558  ,  36.522636 ,  30.47702  ,  34.77021  ,  34.665276 ,  22.069462 ,  24.922886 ,  21.782692 ,  29.153538 ,  28.824951 ,  30.58572  ,  29.972233 ,  40.75724  ,  28.756409 ,  36.27742  ,  33.126457 ,  22.917328 ,  36.867752 ,  39.44359  ,  57.177    ,  32.74975  ,  36.863884 ,  31.485256 ,  31.91536  ,  43.71254  ,  54.410954 ,  36.152157 ,  41.907646 ,  37.920166 ,  34.077396 ,  41.469498 ,  36.753784 ,  45.09169  ,  59.85518  ,  48.590515 ,  57.919388 ,  39.759502 ,  44.354546 ,  36.8866   ,  45.267647 ,  56.42363  ,  59.680965 ,  49.462967 ,  55.22364  ,  51.441734 ,  58.04792  ,  46.29431  ,  33.00701  ,  61.033703 ,  62.399715 ,  49.770943 ,  57.28119  ,  47.964676 ,  33.088593 ,  52.434235 ,  49.91403  ,  48.018326 ,  54.909035 ,  56.075684 ,  54.037254 ,  39.455456 ,  39.50379  ,  47.846542 ,  42.26751  ,  52.81694  ,  56.0077   ,  44.573826 ,  53.341347 ,  54.46084  ,  49.54827  ,  52.080498 ,  49.608826 ,  52.888794 ,  57.05905  ,  52.992443 ,  54.373314 ,  53.61929  ,  54.814445 ,  51.671318 ,  51.681545 ,  52.460854 ,  43.237534 ,  40.976578 ,  37.88118  ,  49.789074 ,  40.522667 ,  33.029594 ,  36.06604  ,  40.472298 ,  38.86165  ,  37.554585 ,  34.94426  ,  67.70851  ,  62.046516 ,  70.237305 ,  72.25696  ,  50.284748 ,  48.803444 ,  57.889893 ,  46.485413 ,  69.858955 ,  65.87125  ,  70.06928  ,  63.377983 ,  48.716152 ,  41.377342 ,  42.993416 ,  41.025665 ,  49.902428 ,  51.51841  ,  46.226    ,  51.811096 ,  52.526196 ,  44.890686 ,  51.204124 ,  43.09049  ,  45.05946  ,  43.963867 ,  47.977848 ,  39.27643  ,  45.53513  ,  40.76725  ,  39.6431   ,  40.66652  ,  50.90756  ,  63.930267 ,  47.823776 ,  62.142807 ,  66.431175 ,  60.1613   ,  65.626144 ,  64.13178  ,  63.15145  ,  66.48377  ,  68.3008   ,  66.98293  ,  63.9644   ,  64.37522  ,  60.773117 ,  66.59773  ,  68.848114 ,  59.87323  ,  64.033325 ,  59.410572 ,  52.192413 ,  56.78183  ,  53.553154 ,  52.64367  ,  55.593544 ,  48.841465 ,  56.05919  ,  50.814903 ,  51.061058 ,  42.113132 ,  50.891964 ,  45.71479  ,  39.595078 ,  30.871567 ,  43.35031  ,  34.545265 ,  33.004555 ,  50.86518  ,  34.328194 ,  49.66028  ,  42.321835 ,  34.64703  ,  43.47606  ,  43.507042 ,  37.244892 ,  54.080696 ,  48.132187 ,  54.937237 ,  49.820957 ,  35.544674 ,  49.88517  ,  38.96106  ,  52.87275  ,  61.2582   ,  54.075165 ,  59.525322 ,  58.94964  ,  59.185535 ,  57.425793 ,  65.71449  ,  54.89431  ,  54.246243 ,  55.7467   ,  53.97814  ,  54.829666 ,  54.548317 ,  47.13563  ,  43.125687 ,  50.435448 ,  45.703976 ,  47.33744  ,  51.283558 ,  46.198784 ,  47.807045 ,  48.840065 ,  53.62964  ,  51.294487 ,  49.361977 ,  53.668945 ,  50.90499  ,  46.821686 ,  57.021263 ,  45.94294  ,  55.23462  ,  53.527596 ,  56.639072 ,  48.282784 ,  58.203903 ,  39.63808  ,  52.64604  ,  44.733353 ,  59.984993 ,  47.24561  ,  49.46444  ,  58.586792 ,  48.445713 ,  66.63728  ,  68.200066 ,  60.56092  ,  63.763542 ,  60.772003 ,  80.25334  ,  57.202667 ,  78.6693   ,  52.454277 ,  48.388893 ,  43.9063   ,  40.78228  ,  50.227028 ,  68.25748  ,  39.357204 ,  52.850906 ,  76.84736  ,  62.616344 ,  76.05886  ,  58.435913 ,  59.106438 ,  53.88984  ,  52.433075 ,  44.586388 ,  72.55124  ,  61.722473 ,  64.21951  ,  51.883514 ,  42.740944 ,  40.579834 ,  46.856606 ,  50.364853 ,  43.282463 ,  36.63039  ,  38.872185 ,  36.676384 ,  33.65264  ,  39.044506 ,  39.501167 ,  45.25119  ,  40.701244 ,  40.727272 ,  38.631905 ,  41.76432  ,  48.653687 ,  51.19609  ,  42.93406  ,  38.779545 ,  45.63378  ,  49.16076  ,  42.097504 ,  41.61503  ,  49.76445  ,  54.947525 ,  47.288338 ,  50.551758 ,  40.06952  ,  37.62026  ,  33.853355 ,  35.20854  ,  37.73738  ,  51.76217  ,  28.417953 ,  34.6037   ,  50.932564 ,  48.887596 ,  46.025352 ,  44.686714 ,  49.98152  ,  59.067146 ,  48.246567 ,  53.334206 ,  44.641586 ,  43.453392 ,  55.13184  ,  45.30704  ,  45.394787 ,  48.395218 ,  45.516705 ,  48.140293 ,  60.86036  ,  64.59659  ,  53.96479  ,  48.528282 ,  62.26709  ,  43.834953 ,  42.875168 ,  30.853642 ,  49.550465 ,  44.855003 ,  52.083366 ,  49.200905 ,  49.439766 ,  41.636696 ,  57.91143  ,  59.69025  ,  55.75111  ,  48.130325 ,  48.80931  ,  47.16519  ,  47.11664  ,  51.53155  ,  48.600002 ,  52.50083  ,  52.789734 ,  44.96386  ,  44.067204 ,  40.67299  ,  45.64911  ,  48.91915  ,  44.878036 ,  49.542168 ,  51.73947  ,  47.70337  ,  52.38744  ,  48.546646 ,  49.270912 ,  57.689735 ,  46.314075 ,  47.30235  ,  53.702496 ,  51.36316  ,  49.96165  ,  31.067654 ,  39.151215 ,  42.22709  ,  24.228226 ,  39.026306 ]),
#[Out]#           ...,
#[Out]#           ([1.55017242e+02, 2.16682220e+02, 8.05886841e+01, 1.47787415e+02, 2.04411758e+02, 1.73567825e+02, 1.47556091e+02, 1.39400116e+02, 1.36228699e+02, 1.78053680e+02, 1.48967239e+02, 1.85528259e+02, 1.86343445e+02, 1.21771362e+02, 2.60749512e+02, 2.37173767e+02, 1.86045898e+02, 1.54681274e+02, 1.28052383e+02, 1.01913521e+02, 2.09374069e+02, 1.89587311e+02, 1.44045593e+02, 1.45646713e+02, 1.06958496e+02, 1.14668304e+02, 9.17458954e+01, 4.72349663e+01, 1.41939697e+02, 1.44773010e+02, 1.27393906e+02, 2.07219543e+02, 1.33524567e+02, 1.30477005e+02, 2.02851532e+02, 1.54316376e+02, 2.57407501e+02, 2.65828339e+02, 1.38975311e+02, 1.64853546e+02, 2.16363770e+02, 1.94695496e+02, 2.24787659e+02, 2.24682861e+02, 7.99877090e+01, 6.58190765e+01, 1.66906464e+02, 7.56854477e+01, 1.52115326e+02, 6.33379440e+01, 1.97296448e+02, 2.23764694e+02, 1.89275757e+02, 2.38923508e+02, 2.72209595e+02, 2.30927155e+02, 1.98109833e+02, 2.60090698e+02, 1.41665756e+02, 2.39673462e+02, 2.30846069e+02, 1.82468857e+02, 2.15434845e+02, 1.62067688e+02, 1.96179398e+02, 2.08677322e+02, 1.54904236e+02, 2.19508194e+02, 1.98638000e+02, 1.32033676e+02, 2.62250244e+02, 1.71477325e+02, 1.38348114e+02, 1.36124435e+02, 1.89920593e+02, 1.34442780e+02, 1.84043060e+02, 7.61800613e+01, 1.57126450e+02, 1.31884644e+02, 1.13282753e+02, 1.08113419e+02, 8.48663940e+01, 9.34292755e+01, 1.13733047e+02, 1.41451355e+02, 1.29373016e+02, 1.69162079e+02, 7.12693481e+01, 9.28277435e+01, 1.22638664e+02, 1.02735878e+02, 1.01031372e+02, 1.36828613e+02, 1.20488876e+02, 1.60424957e+02, 1.82025330e+02, 1.33761703e+02, 1.45118317e+02, 1.31694321e+02, 1.66078918e+02, 1.74534164e+02, 1.70466064e+02, 1.67959595e+02, 1.65369736e+02, 1.39194885e+02, 1.46315033e+02, 1.29601288e+02, 1.55631973e+02, 1.67860382e+02, 1.76428741e+02, 1.84268707e+02, 1.48999969e+02, 1.16670647e+02, 1.31754318e+02, 9.73196640e+01, 1.44105026e+02, 1.62766632e+02, 1.25358047e+02, 1.74252258e+02, 1.12893753e+02, 9.16154404e+01, 1.47184296e+02, 1.45323547e+02, 1.23146805e+02, 1.76842133e+02, 1.28406662e+02, 9.93051910e+01, 2.26220810e+02, 2.07734741e+02, 2.29027420e+02, 2.57319519e+02, 1.97390808e+02, 1.37673126e+02, 2.59908173e+02, 2.10882965e+02, 2.01278320e+02, 3.15757050e+02, 1.57339355e+02, 1.68275726e+02, 2.94316071e+02, 2.38396622e+02, 1.70750854e+02, 1.54294708e+02, 2.33122162e+02, 2.82279663e+02, 2.62868988e+02, 2.72597809e+02, 2.32395309e+02, 1.51387909e+02, 2.19552399e+02, 1.66101288e+02, 2.00693726e+02, 2.00921768e+02, 1.16677505e+02, 1.43631470e+02, 2.14887421e+02, 1.72868042e+02, 2.13189148e+02, 2.05369781e+02, 2.06164185e+02, 1.91131622e+02, 1.79378464e+02, 1.74835693e+02, 1.24824356e+02, 1.21804413e+02, 1.14362755e+02, 1.00865265e+02, 1.51097153e+02, 1.70188919e+02, 1.37035446e+02, 1.70834778e+02, 9.05974045e+01, 8.36147461e+01, 9.93005371e+01, 6.40345306e+01, 1.08959442e+02, 1.15804993e+02, 1.10287552e+02, 1.34378098e+02, 1.58404236e+02, 1.83568817e+02, 1.50247070e+02, 1.51725220e+02, 9.21666718e+01, 9.81259613e+01, 6.12496490e+01, 7.98445511e+01, 1.40762924e+02, 1.39558044e+02, 1.22214142e+02, 1.41113907e+02, 1.39658142e+02, 1.27256638e+02, 1.24646065e+02, 1.26516441e+02, 1.76200424e+02, 1.89900284e+02, 1.34309692e+02, 1.49901398e+02, 1.04653854e+02, 1.09544899e+02, 1.15795868e+02, 8.45783844e+01, 1.25898521e+02, 1.26065445e+02, 1.14453064e+02, 1.26356689e+02, 1.87057831e+02, 1.98388977e+02, 1.49840866e+02, 1.67614151e+02, 1.28117676e+02, 3.88814507e+01, 8.50054321e+01, 9.55968094e+01, 1.32884369e+02, 1.33481308e+02, 9.22761536e+01, 1.22479050e+02, 1.23855217e+02, 1.96811157e+02, 1.23172798e+02, 1.79648987e+02, 1.33946747e+02, 7.83654175e+01, 1.20431671e+02, 9.70076599e+01, 7.69598999e+01, 8.59395065e+01, 1.00583183e+02, 1.16941917e+02, 1.29317703e+02, 1.07290741e+02, 1.33545624e+02, 1.25408020e+02, 1.32918472e+02, 1.05997101e+02, 1.46741486e+02, 1.16567673e+02, 8.61221542e+01, 1.19922424e+02, 1.13988434e+02, 1.49182709e+02, 1.20917000e+02, 9.04194794e+01, 1.11950340e+02, 5.59980736e+01, 6.74158020e+01, 9.20408325e+01, 5.52650414e+01, 8.78406525e+01, 7.95189056e+01, 7.78370209e+01, 1.14289642e+02, 9.89006577e+01, 1.13440125e+02, 9.41781616e+01, 1.68395599e+02, 1.34102371e+02, 4.06586075e+01, 6.67116776e+01, 7.20796051e+01, 1.10831802e+02, 1.68962814e+02, 1.71625626e+02, 1.58648438e+02, 9.75664215e+01, 1.03146057e+02, 1.23866806e+02, 7.19817276e+01, 1.05354675e+02, 1.13643661e+02, 9.18281174e+01, 1.22350220e+02, 4.26769928e+02, 1.53190643e+02, 1.78414581e+02, 7.16448181e+02, 2.90428162e+02, 1.43296509e+02, 6.26222900e+02, 1.07293671e+02, 1.88798065e+02, 8.29142273e+02, 1.88230469e+02, 1.76573395e+02, 6.51726379e+01, 1.26615982e+02, 9.67130432e+01, 1.48799973e+02, 1.09769043e+02, 1.04653351e+02, 1.47403931e+02, 1.12435852e+02, 1.47271545e+02, 2.16926849e+02, 1.94218018e+02, 1.61971405e+02, 2.29254913e+02, 1.17381104e+02, 1.12672989e+02, 1.55923691e+02, 1.03945213e+02, 1.23390182e+02, 1.87670441e+02, 1.57836212e+02, 1.68583389e+02, 1.91421753e+02, 7.63256683e+01, 1.57946503e+02, 1.18743164e+02, 1.46971313e+02, 1.03750938e+02, 1.00678513e+02, 6.37180519e+01, 6.63851700e+01, 1.19499771e+02, 4.87128525e+01, 9.37678375e+01, 1.57543060e+02, 7.66748047e+01, 1.33434067e+02, 7.73071442e+01, 9.45326538e+01, 1.49691589e+02, 6.52241364e+01, 9.17992096e+01, 1.28259460e+02, 1.10369637e+02, 7.49223099e+01, 9.42983246e+01, 1.04007065e+02, 9.91317139e+01, 9.59215775e+01, 1.02787247e+02, 1.06628090e+02, 1.19057487e+02, 1.00501450e+02, 9.18528824e+01, 1.54648544e+02, 1.26019501e+02, 1.55327332e+02, 1.49391998e+02, 8.50200806e+01, 7.31456604e+01, 1.09487518e+02, 1.23823288e+02, 1.06115143e+02, 1.40481659e+02, 1.26475937e+02, 1.67392700e+02, 5.06799736e+01, 6.87354202e+01, 7.57594147e+01, 7.96743927e+01, 6.70061493e+01, 6.76107330e+01, 7.46362915e+01, 7.20319290e+01, 1.27666382e+02, 9.25596924e+01, 1.35331604e+02, 1.89998810e+02, 9.97153168e+01, 1.05065018e+02, 1.40786957e+02, 1.14565384e+02, 1.38067535e+02, 1.86351089e+02, 9.15251465e+01, 1.60038910e+02, 1.68176392e+02, 3.98937073e+02, 1.54370163e+02, 2.78053162e+02, 8.76214218e+01, 1.08167694e+02, 1.13454971e+02, 1.13054657e+02, 1.47329056e+02, 1.49622543e+02, 1.66150452e+02, 1.46926697e+02, 6.44176331e+01, 1.67732773e+02, 1.31880341e+02, 1.48299500e+02, 1.51706940e+02, 9.37166748e+01, 9.42841797e+01, 3.82991447e+01, 1.97282974e+02, 9.68803787e+01, 1.89302185e+02, 1.37038849e+02, 3.49235840e+01, 3.08440819e+01, 2.94048538e+01, 1.39034271e+01, 1.08023056e+02, 9.74604187e+01, 5.19582062e+01, 5.24054413e+01, 6.74187927e+01, 8.54275589e+01, 3.30249863e+01, 9.99591522e+01, 4.77894745e+01, 5.72248230e+01, 5.11063461e+01, 1.15151245e+02, 3.60354996e+01, 4.72520905e+01, 1.20420044e+02, 4.20584641e+01, 1.20955322e+02, 1.34202469e+02, 3.65194664e+01, 7.28409119e+01, 6.66204834e+01, 2.60631657e+01, 6.76377411e+01, 6.05562744e+01, 2.51023788e+01, 3.09431458e+01, 5.35020943e+01, 3.88907776e+01, 3.71073227e+01, 7.66164780e+01, 3.26591606e+01, 6.31506805e+01, 6.41652679e+01, 1.32387024e+02, 8.85079498e+01, 8.95319672e+01, 1.35039322e+02, 6.52547073e+01, 1.06228897e+02, 7.48894653e+01, 1.07771545e+02, 1.05943726e+02, 8.32398300e+01, 6.60532227e+01, 1.23132141e+02, 6.06373596e+01, 1.05180588e+02, 6.57215652e+01, 1.49044647e+02, 2.39793213e+02, 1.44734192e+02, 1.50788712e+02, 2.17984131e+02, 1.26587845e+02, 1.37981247e+02, 1.27948715e+02, 1.02767532e+02, 6.66238174e+01, 1.87472954e+01, 4.87310791e+01, 8.26298370e+01, 1.17927292e+02, 1.02824112e+02, 1.60213684e+02, 1.24987595e+02, 1.50697693e+02, 1.04924187e+02, 1.01798775e+02, 1.94656662e+02, 1.50796844e+02, 1.26684006e+02, 4.16597939e+01, 8.82210999e+01, 8.54005432e+01, 1.07085251e+02, 8.60164490e+01, 8.35569763e+01, 7.10653610e+01, 7.61329041e+01, 1.26756119e+02, 1.25487957e+01, 3.15210037e+01, 3.96488152e+01, 5.25506516e+01, 1.25666527e+02, 1.83855209e+02, 8.04749146e+01, 1.48572632e+02, 2.45506687e+01, 4.75395241e+01, 3.98724937e+01, 6.52193756e+01, 7.46904297e+01, 9.02827148e+01, 7.33697586e+01, 7.50078583e+01, 1.67308807e+02, 1.03784340e+02, 1.74438324e+02, 1.12528595e+02, 8.88210144e+01, 1.39785370e+02, 9.60544968e+01, 1.30962677e+02, 9.77651520e+01, 7.83567047e+01, 8.37641907e+01, 8.82945709e+01, 8.20904160e+01, 1.05228729e+02, 7.19284286e+01, 6.79340897e+01, 1.66012787e+02, 2.01405914e+02, 2.00903625e+02, 1.92745148e+02, 1.56179291e+02, 7.41636353e+01, 1.36781860e+02, 1.13467163e+02, 1.65824738e+02, 1.08440140e+02, 7.52280502e+01, 8.74782639e+01, 9.83667221e+01, 8.51233521e+01, 9.54303436e+01, 1.11042603e+02, 5.83578568e+01, 1.01394478e+02, 8.86588593e+01, 1.07896515e+02, 1.26204346e+02, 1.08939186e+02, 1.12931061e+02, 1.16141525e+02, 8.78439941e+01, 1.06308006e+02, 1.10877548e+02, 1.04122879e+02, 8.24912109e+01, 9.65417786e+01, 7.88639221e+01, 7.75138855e+01, 6.28345871e+01, 7.16241531e+01, 8.52621918e+01, 6.19250259e+01, 1.18650162e+02, 1.63512299e+02, 5.20706253e+01, 1.36629944e+02, 1.30744705e+02, 1.05173706e+02, 1.48501801e+02, 1.52609619e+02, 3.50540314e+01, 5.14889984e+01, 1.05699432e+02, 8.55800171e+01, 1.38570877e+02, 9.36186142e+01, 1.42093155e+02, 8.59135132e+01, 7.28657837e+01, 9.85608597e+01, 7.19996643e+01, 1.15106567e+02, 1.02487839e+02, 9.81246109e+01, 9.71195068e+01, 1.09846100e+02, 9.24935303e+01, 1.57942001e+02, 1.18419746e+02, 1.27207245e+02, 1.08578918e+02, 9.82504120e+01, 1.17300522e+02, 1.07652267e+02, 1.19844017e+02, 7.53025436e+01, 1.10105621e+02, 7.35173950e+01, 1.33746613e+02, 1.45838715e+02, 1.25899597e+02, 1.80515656e+02, 1.20463470e+02, 1.45425171e+02, 1.73298599e+02, 1.65488983e+02, 4.49321365e+01, 1.16665955e+02, 5.47365036e+01, 1.05560051e+02, 1.55506775e+02, 1.28582260e+02, 1.61441635e+02, 1.41868561e+02, 1.11395264e+02, 1.32283508e+02, 1.43867203e+02, 1.14541115e+02, 1.28051331e+02, 9.60628433e+01, 7.87554169e+01, 4.78685646e+01, 1.17398331e+02, 1.37737167e+02, 1.28357956e+02, 1.06898773e+02, 1.46577850e+02, 1.33216125e+02, 9.12746124e+01, 1.02541504e+02, 1.51527664e+02, 8.21388474e+01, 1.02399567e+02, 7.95137405e+01, 6.68688278e+01, 8.47910919e+01, 8.54114380e+01, 1.04665100e+02, 1.14585167e+02, 8.42136536e+01, 1.08747742e+02, 7.24662094e+01, 4.23050613e+01, 2.07446823e+01, 4.85114136e+01, 3.62439194e+01, 1.08501495e+02, 7.90156326e+01, 9.55374146e+01, 5.68265190e+01, 5.03288803e+01, 6.48871078e+01, 4.84021797e+01, 6.89121704e+01, 1.16889397e+02, 1.39794586e+02, 1.13096497e+02, 1.14381317e+02, 1.05004883e+02, 8.91761932e+01, 1.05418541e+02, 1.21782005e+02, 1.16873703e+02, 1.15138397e+02, 1.07546371e+02, 1.15170868e+02, 1.07539139e+02, 1.17107674e+02, 8.93386688e+01, 9.48031006e+01, 1.05593704e+02, 1.25505173e+02, 1.27128693e+02, 1.16265953e+02, 1.28867279e+02, 1.00678215e+02, 9.48317261e+01, 8.11547012e+01, 1.17590179e+02, 7.86837692e+01, 1.05038651e+02, 6.27211533e+01, 9.50043335e+01, 1.30429733e+02, 1.06615173e+02, 1.39357834e+02, 1.14475250e+02, 1.30909119e+02, 1.71825012e+02, 1.39976761e+02, 1.16431709e+02, 1.30014862e+02, 1.43941833e+02, 1.42058578e+02, 1.66031097e+02, 1.16370247e+02, 1.44394897e+02, 1.05238960e+02, 1.31592255e+02, 1.08666954e+02, 8.55633545e+01, 3.60062294e+01, 1.40334427e+02, 1.23723419e+02, 1.47371735e+02, 1.50031555e+02, 1.37574402e+02, 1.19155312e+02, 1.48879501e+02, 1.40700562e+02, 8.17643585e+01, 1.27904251e+02, 4.52627487e+01, 1.00372238e+02, 1.38211929e+02, 1.30492218e+02, 1.33310181e+02, 1.14150444e+02, 8.92435303e+01, 1.00071915e+02, 7.22283859e+01, 7.85113754e+01, 1.27470901e+02, 1.20727524e+02, 1.11350082e+02, 9.18115540e+01, 1.20176674e+02, 6.85333786e+01, 1.33348175e+02, 7.24061584e+01, 6.29891663e+01, 7.92826080e+01, 5.46131516e+01, 8.05611877e+01, 8.87927017e+01, 7.50908585e+01, 7.62137833e+01, 6.93585434e+01, 5.99507179e+01, 5.91720581e+01, 6.85568542e+01, 7.45842743e+01, 6.33633118e+01, 5.21702271e+01, 8.56772537e+01, 7.24819336e+01, 5.12282181e+01, 4.87337112e+01, 8.44644165e+01, 5.40542068e+01, 1.07727097e+02, 8.56186905e+01, 1.47918854e+02, 1.14024155e+02, 8.65976410e+01, 1.15074509e+02, 1.02012749e+02, 1.13524048e+02, 1.10599342e+02, 6.96049500e+01, 9.15679932e+01, 7.86402588e+01, 7.75317459e+01, 8.62204132e+01, 8.35398407e+01, 8.84199219e+01, 1.10813591e+02, 1.18519646e+02, 1.03672256e+02, 1.23831711e+02, 1.07130417e+02, 1.08820770e+02, 1.40102600e+02, 1.27470840e+02, 7.62881927e+01, 1.13836548e+02, 9.76188889e+01, 1.14778885e+02, 1.51140259e+02, 1.44381485e+02, 1.18522331e+02, 6.63579254e+01, 3.77169800e+01, 5.57453651e+01, 7.38250809e+01, 5.33193283e+01, 4.34654999e+01, 5.51540985e+01, 5.56407013e+01, 5.87578506e+01, 7.82968140e+01, 5.10225716e+01, 6.64186249e+01, 5.91309280e+01, 4.10572014e+01, 5.27889862e+01, 4.91151352e+01, 4.89401093e+01, 5.80214005e+01, 2.13818684e+01, 4.85615501e+01, 2.12066040e+01, 7.41012878e+01, 5.15020294e+01, 6.33010254e+01, 4.81622505e+01, 5.05964355e+01, 3.02640209e+01, 4.16804733e+01, 2.36869431e+01, 5.29540405e+01, 8.45283966e+01, 4.77964172e+01, 1.31004730e+02, 3.57962952e+01, 4.90909309e+01, 3.73958702e+01, 2.92619057e+01, 4.58444748e+01, 3.93428268e+01, 1.78256073e+01, 3.52949142e+01, 5.62430267e+01, 3.19932213e+01, 5.96690598e+01, 5.09237900e+01, 2.17728958e+01, 5.80076752e+01, 6.37222214e+01, 8.67695312e+01, 4.12830734e+01, 3.34628105e+01, 6.48606644e+01, 5.88114395e+01, 5.39404068e+01, 1.55294678e+02, 6.80138016e+01, 1.09976776e+02, 8.66520691e+01, 6.75218201e+01, 9.71297836e+01, 7.70040512e+01, 6.67865448e+01, 7.39806747e+01, 8.09271393e+01, 8.80028687e+01, 3.33256721e+01, 5.89355316e+01, 3.43198891e+01, 5.84910126e+01, 8.62876587e+01, 7.35571289e+01, 1.10715408e+02, 7.88890076e+01, 6.75490723e+01, 7.23319168e+01, 1.19269852e+02, 6.09808960e+01, 1.00336044e+02, 1.03127686e+02, 7.97836609e+01, 1.08884613e+02, 7.16726761e+01, 6.79058075e+01, 7.72987518e+01, 7.88671341e+01, 7.25700989e+01, 7.68289642e+01, 8.65996170e+01, 9.34479370e+01, 1.09356842e+02, 1.25242783e+02, 1.30906158e+02, 1.20336594e+02, 1.07612091e+02, 9.30458832e+01, 8.67417297e+01, 8.66888809e+01, 1.61986603e+02, 8.66761780e+01, 1.10798172e+02, 8.30571594e+01, 7.31133957e+01, 9.68057556e+01, 8.54956970e+01, 9.83457489e+01, 8.18240280e+01, 9.42197418e+01, 9.34875641e+01, 1.15997925e+02, 1.12415298e+02, 8.67935638e+01, 1.06310074e+02, 9.41179352e+01, 1.16273033e+02, 1.38783524e+02, 9.80618286e+01, 1.39988220e+02, 1.36595306e+02, 1.06566757e+02, 1.44445831e+02, 1.11551010e+02, 9.50851822e+01, 1.13000687e+02, 1.34392731e+02, 1.24791405e+02, 1.18816620e+02, 1.11604218e+02, 1.56396851e+02, 1.31749084e+02, 6.44780502e+01, 4.79684982e+01, 8.95121002e+01, 5.87209091e+01, 7.52049255e+01, 9.83283005e+01, 7.80793152e+01, 9.53401566e+01, 8.56253967e+01, 5.47908859e+01, 8.88745346e+01, 9.48437805e+01, 7.98683090e+01, 9.52274017e+01, 9.33893509e+01, 1.13379288e+02, 1.07860748e+02, 1.03042503e+02, 8.56913910e+01, 6.48197861e+01, 1.44654266e+02, 1.58222153e+02, 6.94981613e+01, 1.04139465e+02, 8.17084351e+01, 7.27705231e+01, 8.87648926e+01, 7.45912018e+01, 6.69461670e+01, 8.53759766e+01, 6.26671524e+01, 8.87337952e+01, 1.08199326e+02, 1.19991852e+02, 1.18177353e+02, 1.24581932e+02, 1.17063049e+02, 1.19603790e+02, 1.14029358e+02, 1.44463867e+02, 1.32571228e+02, 1.45115372e+02, 7.92736511e+01, 1.38270996e+02, 1.53450104e+02, 1.92895966e+02, 1.28446045e+02, 1.54959106e+02, 1.29860199e+02, 7.86025238e+01, 1.57813431e+02, 1.28779236e+02, 5.61808395e+01, 6.84867935e+01, 6.42312317e+01, 5.06553001e+01, 1.63630661e+02, 8.50526581e+01, 1.34733932e+02, 1.20034897e+02, 7.70946808e+01, 1.06417717e+02, 1.13002533e+02, 1.27031021e+02, 1.07975677e+02, 9.72635345e+01, 8.77869415e+01, 1.12152634e+02, 1.24543762e+02, 1.44891815e+02, 1.45651932e+02, 1.41272141e+02, 9.43613281e+01, 1.02233383e+02, 1.12604187e+02, 1.11912796e+02, 1.27108147e+02, 1.42381500e+02, 1.21635712e+02, 1.64742905e+02, 2.00528091e+02, 1.89656830e+02, 1.96509338e+02, 1.77091385e+02, 2.22285309e+02, 2.43046021e+02, 2.10448669e+02, 2.45043243e+02, 1.78376892e+02, 1.81438705e+02, 1.90604340e+02, 1.85088776e+02, 1.89111313e+02, 2.08256454e+02, 1.87418152e+02, 1.68678192e+02, 1.14824188e+02, 1.23739929e+02, 1.01730270e+02, 1.07907806e+02, 1.46542755e+02, 1.54581787e+02, 1.25558395e+02, 1.49825989e+02, 1.49223999e+02, 1.21310120e+02, 1.22927811e+02, 3.80388489e+01, 1.79997025e+02, 1.83387802e+02, 9.07515564e+01, 1.35058426e+02, 1.64045685e+02, 1.71648193e+02, 1.35966309e+02, 1.21268799e+02, 1.57587189e+02, 1.49240143e+02, 1.45457901e+02, 1.18823929e+02, 1.07717285e+02, 7.00704498e+01, 1.09851852e+02, 9.39574966e+01, 1.02508682e+02, 1.08199265e+02, 1.36413528e+02, 1.35897598e+02], [ 54.48588  ,  65.40045  ,  42.04921  ,  54.528717 ,  63.934322 ,  59.076363 ,  56.8515   ,  55.68833  ,  53.794495 ,  62.01567  ,  58.610016 ,  64.288925 ,  64.004074 ,  52.432495 ,  77.358246 ,  72.77428  ,  60.467304 ,  55.42814  ,  51.652725 ,  47.13633  ,  64.19866  ,  61.867146 ,  54.845036 ,  56.04536  ,  49.562553 ,  50.73977  ,  45.503326 ,  35.377518 ,  57.347824 ,  57.426678 ,  53.84827  ,  70.79654  ,  56.01007  ,  56.51676  ,  70.03118  ,  61.939728 ,  77.61223  ,  79.21929  ,  58.627304 ,  62.504375 ,  73.59001  ,  70.20424  ,  77.16578  ,  77.99582  ,  45.407074 ,  41.55607  ,  67.11387  ,  45.631325 ,  58.754066 ,  38.62023  ,  69.91559  ,  73.76892  ,  65.005844 ,  76.63042  ,  82.23216  ,  75.49954  ,  69.02948  ,  81.76666  ,  60.680244 ,  81.46194  ,  77.43645  ,  69.49927  ,  78.025604 ,  68.2689   ,  64.70308  ,  66.65169  ,  57.821594 ,  68.55149  ,  64.022675 ,  52.02574  ,  75.24521  ,  59.162228 ,  56.827744 ,  56.311226 ,  67.6712   ,  56.73499  ,  62.894577 ,  43.567574 ,  61.233017 ,  55.735455 ,  48.732117 ,  48.336685 ,  44.36721  ,  46.19641  ,  49.592632 ,  59.730103 ,  56.69027  ,  67.13315  ,  42.137993 ,  48.089134 ,  54.984177 ,  51.35408  ,  50.674236 ,  58.815117 ,  55.031593 ,  63.974266 ,  66.667755 ,  57.58332  ,  60.75348  ,  57.89504  ,  63.535046 ,  66.5721   ,  66.42213  ,  66.0806   ,  66.198715 ,  61.560062 ,  65.8385   ,  62.017845 ,  64.36362  ,  67.37894  ,  72.25108  ,  74.451614 ,  61.49875  ,  54.825897 ,  58.809868 ,  51.20719  ,  60.780148 ,  64.77932  ,  57.340836 ,  67.69539  ,  56.54768  ,  50.612038 ,  66.512115 ,  66.622955 ,  59.5342   ,  69.192474 ,  62.675884 ,  54.217766 ,  81.480896 ,  79.50685  ,  83.36859  ,  90.22647  ,  83.99853  ,  70.35754  ,  96.703545 ,  88.94497  ,  78.32309  , 100.00224  ,  68.59012  ,  70.10605  ,  96.7966   ,  88.79704  ,  71.0088   ,  68.36552  ,  82.247345 ,  92.52901  ,  91.52367  ,  92.061844 ,  83.98375  ,  69.62423  ,  83.22102  ,  73.31171  ,  80.084015 ,  78.861855 ,  58.74006  ,  64.83032  ,  81.84042  ,  72.770935 ,  79.624825 ,  77.45973  ,  77.49014  ,  73.920425 ,  69.799835 ,  67.88109  ,  60.59825  ,  59.96792  ,  56.551018 ,  53.81534  ,  61.63458  ,  65.33762  ,  57.07602  ,  62.58776  ,  48.77443  ,  47.345    ,  48.436974 ,  40.278458 ,  56.295822 ,  57.83699  ,  54.974846 ,  60.598305 ,  67.46509  ,  73.29036  ,  63.885197 ,  64.89936  ,  48.97915  ,  49.456795 ,  39.044792 ,  43.910873 ,  60.42209  ,  59.565727 ,  52.89274  ,  57.541588 ,  67.387794 ,  64.04689  ,  64.215385 ,  64.602066 ,  74.676575 ,  77.80129  ,  65.98723  ,  69.84058  ,  57.72155  ,  59.146553 ,  58.792572 ,  50.809784 ,  62.536835 ,  62.3807   ,  58.00745  ,  60.711754 ,  76.919876 ,  78.28917  ,  69.99162  ,  71.22055  ,  61.47834  ,  37.871117 ,  52.412308 ,  53.193916 ,  64.6486   ,  63.374184 ,  51.75553  ,  60.148563 ,  61.439323 ,  76.10987  ,  59.385563 ,  71.430374 ,  62.424366 ,  48.472527 ,  57.995964 ,  51.099735 ,  47.661655 ,  49.09144  ,  52.090942 ,  55.06147  ,  56.486313 ,  52.01152  ,  54.65769  ,  53.66877  ,  56.63946  ,  50.927055 ,  58.31243  ,  50.54562  ,  48.670082 ,  56.663662 ,  54.060707 ,  62.497196 ,  58.202866 ,  49.53055  ,  52.728157 ,  39.01953  ,  40.373886 ,  46.634735 ,  36.325623 ,  43.884975 ,  43.96479  ,  41.9541   ,  49.983643 ,  44.88621  ,  53.55477  ,  45.90206  ,  65.173485 ,  54.2071   ,  30.49503  ,  37.29487  ,  38.948025 ,  51.104103 ,  63.93253  ,  63.3051   ,  63.127487 ,  49.982323 ,  50.48828  ,  55.70533  ,  43.925316 ,  52.13882  ,  50.830196 ,  45.494698 ,  53.80059  , 100.163284 ,  56.770523 ,  64.861534 , 150.07184  ,  84.17897  ,  58.553432 , 132.98352  ,  52.94928  ,  66.009674 , 163.4928   ,  65.02495  ,  61.85125  ,  42.90322  ,  57.390533 ,  50.88035  ,  62.233883 ,  54.278076 ,  51.998844 ,  61.533623 ,  55.556686 ,  62.211235 ,  77.28934  ,  73.624176 ,  66.56787  ,  82.45688  ,  57.411568 ,  58.171867 ,  69.01012  ,  56.778606 ,  56.612877 ,  68.56909  ,  65.63815  ,  66.87378  ,  68.60048  ,  44.741264 ,  64.30799  ,  58.17818  ,  64.45725  ,  53.304993 ,  56.69347  ,  45.53753  ,  44.923904 ,  58.66384  ,  41.164673 ,  54.707115 ,  58.890896 ,  41.252884 ,  56.993103 ,  43.0727   ,  44.89433  ,  57.905785 ,  40.55892  ,  48.311737 ,  56.827904 ,  53.059242 ,  44.610626 ,  49.831207 ,  51.658478 ,  50.48604  ,  50.19727  ,  51.73038  ,  51.11721  ,  53.041702 ,  49.951393 ,  47.72483  ,  60.89299  ,  54.94551  ,  61.307663 ,  67.72233  ,  46.976566 ,  43.622074 ,  53.43358  ,  55.827    ,  53.157433 ,  69.852005 ,  58.466854 ,  71.40318  ,  38.44346  ,  43.437813 ,  46.040443 ,  48.53958  ,  43.36499  ,  43.38684  ,  46.694168 ,  46.12809  ,  62.35795  ,  52.486134 ,  64.584656 ,  75.85976  ,  54.79508  ,  56.718304 ,  65.16507  ,  59.997772 ,  59.452538 ,  69.511375 ,  52.254494 ,  65.09794  ,  67.45555  , 138.24243  ,  66.50896  , 103.037735 ,  52.15326  ,  58.24472  ,  60.45899  ,  59.73814  ,  65.82017  ,  67.30703  ,  70.92207  ,  67.830605 ,  44.062683 ,  72.07421  ,  62.6612   ,  67.92181  ,  69.75513  ,  54.269634 ,  53.49769  ,  36.704037 ,  76.178986 ,  52.394287 ,  72.59149  ,  59.83993  ,  33.583496 ,  32.50264  ,  27.46613  ,  17.403963 ,  59.856514 ,  56.50856  ,  41.000343 ,  41.212807 ,  47.550568 ,  53.42854  ,  34.350384 ,  54.290833 ,  38.453247 ,  41.59472  ,  37.22248  ,  55.325127 ,  34.73713  ,  38.279205 ,  55.90133  ,  35.855072 ,  55.706    ,  59.437984 ,  31.949148 ,  42.638123 ,  37.76611  ,  22.31628  ,  41.765034 ,  38.377678 ,  26.955458 ,  28.743948 ,  31.957048 ,  30.63866  ,  30.423595 ,  39.503265 ,  27.861015 ,  35.650486 ,  39.81108  ,  58.375145 ,  46.960556 ,  47.042343 ,  58.972546 ,  39.33187  ,  50.61725  ,  42.81182  ,  48.880505 ,  49.448555 ,  41.93476  ,  37.23082  ,  53.02417  ,  35.474716 ,  47.07007  ,  36.668118 ,  67.27888  ,  86.26674  ,  65.631676 ,  66.149216 ,  81.29758  ,  63.59603  ,  63.438263 ,  61.843323 ,  53.828724 ,  43.790512 ,  21.331676 ,  34.026573 ,  48.06317  ,  57.15143  ,  50.401863 ,  63.710808 ,  63.874798 ,  67.09266  ,  56.58899  ,  55.22784  ,  76.754524 ,  65.60211  ,  59.369232 ,  35.61979  ,  48.53997  ,  49.675682 ,  51.776638 ,  46.98799  ,  48.44578  ,  42.802116 ,  45.75721  ,  56.635895 ,  16.983578 ,  22.728233 ,  31.85284  ,  36.034836 ,  54.422913 ,  67.235985 ,  43.77272  ,  58.56486  ,  25.862814 ,  33.784134 ,  30.375902 ,  38.10006  ,  41.636894 ,  44.9973   ,  40.538578 ,  40.993332 ,  63.54593  ,  50.385593 ,  63.877495 ,  50.351116 ,  46.68857  ,  58.3348   ,  47.12053  ,  54.57564  ,  46.36703  ,  42.254356 ,  43.134956 ,  44.253624 ,  43.532494 ,  48.626434 ,  39.52732  ,  38.05873  ,  58.27894  ,  65.84401  ,  63.734447 ,  62.18619  ,  57.56172  ,  40.799995 ,  53.510498 ,  48.65039  ,  56.885517 ,  45.188904 ,  37.613636 ,  40.932137 ,  44.011734 ,  41.465675 ,  42.149162 ,  45.07164  ,  36.994034 ,  46.866173 ,  43.186203 ,  47.047348 ,  52.5119   ,  48.705643 ,  48.63659  ,  49.467567 ,  41.456917 ,  46.354073 ,  45.36133  ,  43.16082  ,  41.23806  ,  44.313408 ,  39.694046 ,  38.376747 ,  34.65755  ,  36.232414 ,  38.424217 ,  33.36148  ,  46.00161  ,  53.93038  ,  30.475735 ,  47.65796  ,  47.011543 ,  41.0169   ,  49.29191  ,  49.341957 ,  26.591476 ,  30.146381 ,  40.468323 ,  37.841484 ,  48.829777 ,  40.79648  ,  49.095528 ,  38.9497   ,  37.09337  ,  41.81827  ,  36.736053 ,  43.824657 ,  41.743725 ,  41.008408 ,  40.382572 ,  42.780045 ,  39.833305 ,  50.931732 ,  43.50152  ,  45.565243 ,  48.76152  ,  46.474445 ,  49.254448 ,  47.807735 ,  50.996754 ,  39.394547 ,  48.171104 ,  38.238274 ,  50.83624  ,  52.159256 ,  47.365    ,  57.092907 ,  48.65724  ,  52.213852 ,  55.6978   ,  55.102165 ,  31.392187 ,  49.5704   ,  33.425102 ,  45.31393  ,  57.439564 ,  49.651253 ,  57.288483 ,  52.87216  ,  46.06353  ,  50.950623 ,  50.819443 ,  46.14126  ,  49.793167 ,  43.181175 ,  38.313522 ,  30.096464 ,  45.4629   ,  49.33625  ,  47.200497 ,  43.687782 ,  50.872463 ,  48.48268  ,  40.288162 ,  42.65779  ,  50.04445  ,  38.068108 ,  41.159576 ,  36.73073  ,  34.591454 ,  38.772682 ,  37.97179  ,  42.13073  ,  45.040993 ,  38.81254  ,  43.512836 ,  35.741882 ,  28.071262 ,  21.63741  ,  30.264359 ,  26.302876 ,  42.759895 ,  36.06468  ,  40.00592  ,  30.90417  ,  30.462822 ,  34.401104 ,  29.402634 ,  35.071598 ,  43.260612 ,  47.13362  ,  42.72268  ,  43.52056  ,  41.373245 ,  38.742737 ,  41.7625   ,  44.564358 ,  44.222954 ,  43.88494  ,  42.82572  ,  44.686592 ,  42.56993  ,  43.906097 ,  39.88234  ,  40.685165 ,  41.700912 ,  44.99903  ,  45.5449   ,  43.58704  ,  45.13539  ,  40.586845 ,  39.968605 ,  37.471207 ,  43.62827  ,  36.156136 ,  41.692764 ,  33.24161  ,  39.870255 ,  45.599136 ,  42.02836  ,  47.303635 ,  44.68123  ,  49.578846 ,  53.66924  ,  49.86171  ,  46.361046 ,  47.072636 ,  49.434937 ,  48.842648 ,  52.6072   ,  44.89277  ,  50.249043 ,  43.482002 ,  46.871243 ,  42.011166 ,  39.31287  ,  28.193062 ,  48.87053  ,  45.341866 ,  49.71016  ,  49.67337  ,  48.545547 ,  45.048134 ,  49.92258  ,  48.71411  ,  38.412094 ,  46.416435 ,  30.3564   ,  42.383682 ,  49.439095 ,  48.113377 ,  48.530495 ,  45.322296 ,  38.78376  ,  40.712433 ,  35.394962 ,  36.553623 ,  46.151375 ,  45.069542 ,  43.143578 ,  39.741295 ,  43.638687 ,  34.7021   ,  46.200336 ,  36.051094 ,  33.54898  ,  37.391556 ,  31.977455 ,  37.767696 ,  38.936066 ,  36.0655   ,  36.595547 ,  35.101784 ,  32.81341  ,  32.88994  ,  35.065987 ,  36.099327 ,  34.06584  ,  31.41227  ,  38.93325  ,  35.722237 ,  30.82963  ,  30.18351  ,  38.207146 ,  31.593159 ,  42.785442 ,  39.068398 ,  49.61196  ,  44.142937 ,  39.14736  ,  45.019775 ,  42.200863 ,  44.574432 ,  44.09288  ,  37.08723  ,  41.12315  ,  38.79621  ,  38.204063 ,  40.435722 ,  39.819542 ,  41.082455 ,  44.30345  ,  45.254894 ,  42.92158  ,  46.31295  ,  43.21144  ,  44.014885 ,  49.52497  ,  47.863503 ,  38.505737 ,  44.910435 ,  42.7402   ,  45.89894  ,  51.63773  ,  50.47378  ,  46.07694  ,  36.35204  ,  28.87898  ,  34.95191  ,  38.68164  ,  33.708183 ,  30.595093 ,  34.170715 ,  34.313156 ,  35.419746 ,  38.915955 ,  31.941463 ,  35.466736 ,  33.649666 ,  29.809391 ,  33.104347 ,  31.525085 ,  31.568195 ,  33.75841  ,  17.032175 ,  30.689167 ,  16.961437 ,  35.726936 ,  32.25496  ,  33.357704 ,  31.022339 ,  31.993683 ,  25.589249 ,  28.54482  ,  22.990814 ,  32.680367 ,  39.735596 ,  29.730715 ,  47.263885 ,  26.37838  ,  30.845676 ,  27.140268 ,  23.959919 ,  30.10235  ,  28.271442 ,  20.389645 ,  25.85253  ,  32.191437 ,  24.40113  ,  32.946297 ,  30.480072 ,  21.107288 ,  31.055595 ,  33.862907 ,  38.61731  ,  28.717602 ,  25.943018 ,  34.259495 ,  32.8391   ,  31.434797 ,  50.44333  ,  34.809807 ,  42.599457 ,  38.68748  ,  34.97847  ,  40.37566  ,  36.752075 ,  34.579147 ,  35.878334 ,  36.705353 ,  38.121857 ,  27.591839 ,  35.49656  ,  27.411667 ,  33.931053 ,  42.50986  ,  39.660217 ,  46.607708 ,  40.06425  ,  36.093903 ,  36.76247  ,  45.61523  ,  34.314827 ,  43.25658  ,  44.31954  ,  38.29576  ,  44.487617 ,  39.25838  ,  38.14323  ,  39.095345 ,  39.25402  ,  39.01394  ,  39.28833  ,  41.360283 ,  43.09675  ,  45.58335  ,  49.00992  ,  48.679283 ,  46.878628 ,  45.229256 ,  42.000916 ,  40.143837 ,  39.48513  ,  52.198376 ,  39.169373 ,  42.98851  ,  38.282166 ,  36.604008 ,  41.431686 ,  38.73268  ,  41.53022  ,  37.494606 ,  40.132805 ,  39.725204 ,  44.521523 ,  43.262215 ,  38.80314  ,  42.131172 ,  39.78151  ,  45.306007 ,  48.8496   ,  41.319424 ,  48.65374  ,  48.397568 ,  43.155746 ,  49.310226 ,  43.830254 ,  40.634518 ,  44.032516 ,  46.564293 ,  46.23497  ,  44.786705 ,  43.395733 ,  51.085087 ,  46.699158 ,  33.689705 ,  29.880516 ,  38.14086  ,  31.23776  ,  36.506546 ,  41.48857  ,  36.475277 ,  40.989197 ,  38.185127 ,  31.313313 ,  39.473457 ,  40.491234 ,  37.301224 ,  40.857815 ,  40.202232 ,  44.701984 ,  43.184975 ,  42.055344 ,  38.93349  ,  34.5839   ,  48.717804 ,  51.341442 ,  35.289574 ,  42.22754  ,  38.326538 ,  36.284378 ,  39.800957 ,  37.109596 ,  35.414536 ,  39.10376  ,  34.782616 ,  39.774788 ,  43.853737 ,  45.83398  ,  46.151203 ,  47.408386 ,  45.624672 ,  46.023865 ,  45.26655  ,  49.97817  ,  48.683952 ,  51.235558 ,  38.808502 ,  50.621025 ,  52.004166 ,  58.306404 ,  49.162704 ,  52.687363 ,  47.46733  ,  37.94866  ,  52.36157  ,  47.43342  ,  33.766335 ,  35.818687 ,  35.5934   ,  32.374733 ,  53.66651  ,  40.21597  ,  49.89514  ,  47.075836 ,  38.9949   ,  43.590714 ,  46.106773 ,  49.0326   ,  43.11332  ,  41.574203 ,  39.61841  ,  43.882965 ,  45.91815  ,  48.63002  ,  49.417915 ,  48.872707 ,  40.970337 ,  42.754852 ,  44.485703 ,  44.579178 ,  46.620644 ,  49.22155  ,  46.044147 ,  52.975853 ,  57.200214 ,  56.07893  ,  57.149796 ,  54.816566 ,  60.130104 ,  62.770252 ,  58.838947 ,  63.522087 ,  54.827606 ,  55.35311  ,  56.84458  ,  56.296696 ,  56.40428  ,  58.988304 ,  56.287003 ,  53.64947  ,  44.918007 ,  47.204247 ,  42.421246 ,  45.06361  ,  50.440903 ,  51.89254  ,  47.8629   ,  51.913895 ,  51.660904 ,  46.453274 ,  46.711403 ,  29.471012 ,  56.911522 ,  57.620785 ,  39.700207 ,  52.03277  ,  53.647137 ,  54.59012  ,  49.96153  ,  47.272682 ,  52.6061   ,  51.092583 ,  51.133743 ,  46.778904 ,  45.77791  ,  38.983982 ,  49.795486 ,  43.990128 ,  44.488556 ,  45.49185  ,  50.9755   ,  50.81183  ]),
#[Out]#           ([1.00036606e+02, 6.77123566e+01, 1.41214462e+02, 1.16247772e+02, 9.96780090e+01, 5.48075409e+01, 1.18417282e+02, 9.56721649e+01, 1.48097168e+02, 1.76543854e+02, 1.46800415e+02, 1.81988525e+02, 1.35803360e+02, 1.02547531e+02, 2.17267258e+02, 1.49633942e+02, 6.27021713e+01, 1.15851349e+02, 1.12024559e+02, 1.40583069e+02, 8.14121399e+01, 1.04404800e+02, 1.07283554e+02, 9.18422165e+01, 1.19913361e+02, 1.52205505e+02, 1.25095047e+02, 1.44166870e+02, 1.56028534e+02, 1.06019775e+02, 1.41621994e+02, 1.31754974e+02, 1.39663452e+02, 1.07334778e+02, 7.36593170e+01, 4.71824951e+01, 2.11927505e+02, 1.85990585e+02, 8.02390976e+01, 1.05673706e+02, 6.79454575e+01, 4.49700127e+01, 6.70200195e+01, 5.21269722e+01, 5.66893959e+00, 2.65221176e+01, 2.31242752e+01, 6.43366699e+01, 1.35624481e+02, 1.54333679e+02, 9.03122940e+01, 1.13891220e+02, 1.72338440e+02, 1.76192413e+02, 1.25250229e+02, 1.62708405e+02, 6.42624283e+01, 6.22312546e+01, 8.10254059e+01, 7.24280548e+01, 8.16570358e+01, 1.52490875e+02, 7.34485931e+01, 1.28149994e+02, 1.76432678e+02, 1.84073166e+02, 1.49609406e+02, 1.72400757e+02, 1.19011559e+02, 1.01975052e+02, 9.81536102e+01, 8.88433685e+01, 8.61258392e+01, 8.12311554e+01, 9.46263199e+01, 6.66248932e+01, 9.09239197e+01, 1.17921211e+02, 7.12438202e+01, 1.06476768e+02, 1.49417572e+02, 1.44840103e+02, 1.11822754e+02, 1.20866608e+02, 1.62871658e+02, 1.82422119e+02, 1.58304871e+02, 1.79092209e+02, 1.52241730e+02, 1.38061829e+02, 1.42656845e+02, 1.48644241e+02, 1.52503952e+02, 1.52302124e+02, 1.31031754e+02, 1.41581787e+02, 1.64826340e+02, 1.32508118e+02, 1.66227631e+02, 1.65349731e+02, 1.16308220e+02, 1.22206070e+02, 1.80142181e+02, 1.76979401e+02, 1.58839294e+02, 1.72121063e+02, 1.21318413e+02, 1.34264496e+02, 1.91850845e+02, 1.69912170e+02, 1.31594681e+02, 1.04468803e+02, 1.49615967e+02, 1.35195312e+02, 2.09741074e+02, 2.40973236e+02, 1.27883255e+02, 1.50797272e+02, 1.54710175e+02, 1.20769440e+02, 1.86884186e+02, 2.50745117e+02, 7.99378433e+01, 1.46779922e+02, 2.18002319e+02, 1.08830399e+02, 2.06972519e+02, 1.98169861e+02, 7.65347519e+01, 5.63765182e+01, 8.14772644e+01, 7.31205292e+01, 7.42690125e+01, 7.69401245e+01, 8.45423431e+01, 8.58897095e+01, 9.76648712e+01, 6.63130798e+01, 1.33402145e+02, 8.76270752e+01, 7.19507751e+01, 6.45270767e+01, 8.65487213e+01, 6.92147522e+01, 9.28025818e+01, 9.70692444e+01, 1.06375244e+02, 1.11299179e+02, 7.00791016e+01, 9.69416733e+01, 7.30008698e+01, 9.28599854e+01, 7.38171844e+01, 7.10022583e+01, 8.06544800e+01, 7.63394318e+01, 5.43232803e+01, 9.30686646e+01, 5.80262451e+01, 9.18039246e+01, 1.04759987e+02, 4.76809387e+01, 4.86162109e+01, 4.24441681e+01, 8.51608276e+01, 1.24353539e+02, 8.65895844e+01, 1.33653320e+02, 5.81517792e+01, 7.50764160e+01, 1.10700073e+02, 9.03483887e+01, 8.63304749e+01, 1.04759552e+02, 9.05846863e+01, 1.17146042e+02, 1.15014748e+02, 1.02895096e+02, 1.42643326e+02, 1.31382996e+02, 8.56902618e+01, 8.08935852e+01, 1.11132309e+02, 7.63492050e+01, 1.32315796e+02, 1.38411621e+02, 1.26667534e+02, 1.17992752e+02, 9.40521393e+01, 7.80385056e+01, 9.52618027e+01, 6.75148010e+01, 7.87613068e+01, 7.00524750e+01, 1.09358917e+02, 8.77311249e+01, 7.37871704e+01, 8.84592896e+01, 6.69009476e+01, 1.08271263e+02, 1.26937057e+02, 1.03708099e+02, 1.08695328e+02, 9.12385559e+01, 6.98976593e+01, 1.08121666e+02, 8.91552124e+01, 9.92843781e+01, 9.05787048e+01, 1.24813255e+02, 1.09621506e+02, 1.29916534e+02, 1.77586334e+02, 2.02620331e+02, 1.09493721e+02, 1.31198029e+02, 1.04445435e+02, 9.86421890e+01, 9.44989166e+01, 9.46569061e+01, 8.81575012e+01, 8.51388474e+01, 9.04125671e+01, 9.47893524e+01, 7.36535492e+01, 7.94436264e+01, 7.67100830e+01, 1.15132187e+02, 1.27884720e+02, 1.12032585e+02, 1.85872650e+02, 1.82469299e+02, 9.71089783e+01, 1.17080383e+02, 6.17796326e+01, 9.41278992e+01, 1.32918961e+02, 1.52621582e+02, 8.59702225e+01, 1.05287872e+02, 8.82680969e+01, 9.90493622e+01, 1.11422462e+02, 1.24083603e+02, 7.87135162e+01, 5.39260254e+01, 9.60857315e+01, 6.78212128e+01, 1.29115692e+02, 1.23851295e+02, 1.18205826e+02, 1.28453949e+02, 1.26450142e+02, 1.47586349e+02, 1.45501831e+02, 1.75683502e+02, 1.63024155e+02, 1.26664047e+02, 1.24000534e+02, 1.02651009e+02, 1.33668625e+02, 1.08271812e+02, 1.28356506e+02, 1.16446045e+02, 1.18257805e+02, 9.19687042e+01, 1.59726440e+02, 1.12227219e+02, 1.27235847e+02, 9.64752960e+01, 1.71548645e+02, 1.25718414e+02, 9.36386566e+01, 1.25770332e+02, 7.16253662e+01, 6.87019043e+01, 1.66520691e+02, 1.48103027e+02, 1.45216293e+02, 1.36623779e+02, 5.84372559e+01, 1.11650742e+02, 9.88691711e+01, 1.84101532e+02, 1.94510651e+02, 1.70846161e+02, 2.11419662e+02, 2.17631714e+02, 1.98220184e+02, 1.77162140e+02, 1.42375168e+02, 1.60166306e+02, 2.05868576e+02, 1.94936279e+02, 1.72278290e+02, 1.56912262e+02, 8.34151917e+01, 1.50770203e+02, 1.43394928e+02, 1.97577087e+02, 2.11798584e+02, 2.24442871e+02, 2.17948212e+02, 2.85983521e+02, 1.69578033e+02, 1.95524933e+02, 1.43988953e+02, 1.75520386e+02, 1.98879578e+02, 2.14972900e+02, 2.01155334e+02, 1.90613434e+02, 1.73303040e+02, 1.73152252e+02, 2.77488403e+02, 1.62970673e+02, 1.68230530e+02, 1.41087952e+02, 1.16415276e+02, 1.30954712e+02, 2.58205139e+02, 2.69055206e+02, 1.67781067e+02, 2.47776886e+02, 1.41843979e+02, 1.06921478e+02, 2.19698486e+02, 1.69037445e+02, 2.43111511e+02, 2.77524872e+02, 2.51219818e+02, 2.33149567e+02, 2.16929932e+02, 1.99980957e+02, 1.82699219e+02, 2.06390778e+02, 1.39790726e+02, 1.68396164e+02, 2.20399887e+02, 2.02202850e+02, 1.52800201e+02, 1.33210388e+02, 1.41163483e+02, 1.18663467e+02, 2.29119141e+02, 2.50516602e+02, 2.79317017e+02, 2.99349487e+02, 2.15802917e+02, 1.63886627e+02, 2.57644531e+02, 2.33063507e+02, 2.09151642e+02, 1.73235626e+02, 1.92235718e+02, 1.88356659e+02, 1.83601028e+02, 2.06433228e+02, 1.82007385e+02, 1.75737183e+02, 1.53147644e+02, 1.65737549e+02, 1.72143372e+02, 1.78070679e+02, 1.58310883e+02, 1.29558640e+02, 1.34897125e+02, 8.07522736e+01, 2.67352264e+02, 3.16059662e+02, 1.80243256e+02, 2.79299347e+02, 2.72882996e+02, 2.31636322e+02, 2.80952087e+02, 1.39264771e+02, 1.19777344e+02, 1.83878540e+02, 7.82938538e+01, 1.05714699e+02, 1.82390137e+02, 1.50729996e+02, 1.59511688e+02, 1.36059113e+02, 1.83406769e+02, 1.89868744e+02, 1.58515289e+02, 1.33994995e+02, 1.64535889e+02, 2.26158600e+02, 1.55530701e+02, 1.60303482e+02, 1.07046265e+02, 1.31732941e+02, 8.92630692e+01, 1.56886551e+02, 2.06004120e+02, 1.86385757e+02, 2.93153900e+02, 2.68623932e+02, 2.61816711e+02, 1.79976440e+02, 1.86957031e+02, 1.85481766e+02, 1.28218491e+02, 1.85513657e+02, 1.89078506e+02, 2.09010971e+02, 1.74604630e+02, 1.78923096e+02, 1.87340424e+02, 1.67587433e+02, 1.88983948e+02, 1.77835266e+02, 1.67833771e+02, 1.78959137e+02, 7.97594299e+01, 1.18127823e+02, 1.27805687e+02, 1.56370102e+02, 2.03335846e+02, 1.96266541e+02, 1.51480804e+02, 1.30340851e+02, 1.68005661e+02, 1.56268646e+02, 1.57610352e+02, 1.06006760e+02, 1.17220139e+02, 1.01024826e+02, 8.99983978e+01, 1.20583603e+02, 1.46593872e+02, 1.72562210e+02, 1.20197998e+02, 1.28815994e+02, 2.23525375e+02, 2.37796509e+02, 1.86903229e+02, 2.17287613e+02, 1.30067825e+02, 1.24011940e+02, 1.72839676e+02, 1.87020325e+02, 1.51057678e+02, 1.78133026e+02, 1.76049408e+02, 1.59007797e+02, 1.85837616e+02, 1.64420013e+02, 1.73254150e+02, 1.59426544e+02, 1.35020645e+02, 1.04043839e+02, 1.34709564e+02, 1.07098541e+02, 1.59264496e+02, 1.68265076e+02, 1.89966843e+02, 2.03950165e+02, 1.04894539e+02, 5.71958160e+01, 1.75888214e+02, 1.86620255e+02, 1.08692642e+02, 7.57269287e+01, 1.24038559e+02, 1.40616730e+02, 1.19096695e+02, 1.03631996e+02, 1.76300842e+02, 1.26529846e+02, 1.47467804e+02, 2.08429169e+02, 2.44646729e+02, 1.95930557e+02, 1.87848236e+02, 1.09686127e+02, 9.27610016e+01, 8.51096268e+01, 2.54929581e+02, 2.26409302e+02, 2.34247101e+02, 2.23909088e+02, 2.56160400e+02, 3.07604919e+02, 3.03145813e+02, 2.71964386e+02, 1.42835297e+02, 1.67608917e+02, 1.00202705e+02, 1.20847313e+02, 2.38903976e+02, 1.19655998e+02, 1.33574707e+02, 1.19978653e+02, 2.77002289e+02, 1.49025543e+02, 1.45000992e+02, 1.32671631e+02, 7.74338531e+01, 8.32487564e+01, 1.24747009e+02, 9.73983154e+01, 6.95975800e+01, 1.18285339e+02, 1.02672493e+02, 1.23515099e+02, 1.37667480e+02, 1.27984314e+02, 1.38323608e+02, 1.24923576e+02, 1.45371368e+02, 9.91669922e+01, 1.08609962e+02, 5.98937759e+01, 8.85503922e+01, 1.09486008e+02, 6.93071518e+01, 7.82564774e+01, 8.65662384e+01, 7.15247574e+01, 8.66261902e+01, 4.77845612e+01, 6.57968063e+01, 6.10477219e+01, 5.11261520e+01, 5.98429565e+01, 1.18694717e+02, 1.15762238e+02, 1.05798187e+02, 9.31175385e+01, 7.93603210e+01, 5.43065643e+01, 5.42140121e+01, 4.33519516e+01, 6.06245041e+01, 6.24358444e+01, 4.71286011e+01, 5.90775299e+01, 6.42218323e+01, 5.24495773e+01, 1.24230110e+02, 1.51498199e+02, 4.21176453e+01, 2.94353523e+01, 5.52724152e+01, 4.59170227e+01, 5.65141525e+01, 8.12078705e+01, 6.82244949e+01, 8.50280151e+01, 6.47623444e+01, 6.06907349e+01, 7.55267181e+01, 6.09155197e+01, 6.71894379e+01, 8.57060852e+01, 6.43058624e+01, 7.44918213e+01, 6.08532486e+01, 3.94139252e+01, 9.99044495e+01, 6.05290680e+01, 7.00143738e+01, 1.56234039e+02, 7.88377838e+01, 1.26085861e+02, 1.05434128e+02, 9.05521622e+01, 1.00663971e+02, 7.42820129e+01, 1.04063217e+02, 1.33353363e+02, 7.57041855e+01, 1.37999283e+02, 5.96736069e+01, 7.30776825e+01, 3.98389015e+01, 7.40328979e+01, 8.33702850e+01, 1.08235970e+02, 7.01750031e+01, 1.02298874e+02, 1.49875412e+01, 3.78899155e+01, 6.72772369e+01, 3.80800591e+01, 7.64689331e+01, 9.19393539e+01, 6.66093521e+01, 1.16137497e+02, 1.16286789e+02, 1.10060379e+02, 9.48743286e+01, 8.07773438e+01, 6.64619293e+01, 1.24255699e+02, 3.67114830e+01, 4.88959961e+01, 9.81374588e+01, 1.05330978e+02, 1.25345734e+02, 1.56231705e+02, 1.22131363e+02, 8.46637802e+01, 1.86560303e+02, 1.28217545e+02, 1.29910370e+02, 7.13281250e+01, 1.26591156e+02, 1.09184860e+02, 1.16895981e+02, 1.31224945e+02, 1.33598923e+02, 1.12267395e+02, 1.53786346e+02, 9.85787659e+01, 1.66930176e+02, 1.13783859e+02, 6.44348373e+01, 5.95252151e+01, 4.86688843e+01, 3.98675919e+01, 1.46003372e+02, 1.58236008e+02, 9.11303558e+01, 1.32006012e+02, 1.46027374e+02, 8.73110352e+01, 1.32203873e+02, 9.08383179e+01, 8.52227936e+01, 1.35390656e+02, 5.98927460e+01, 1.04846970e+02, 1.58655151e+02, 1.47221207e+02, 1.38556412e+02, 1.41457916e+02, 1.17778824e+02, 6.96075745e+01, 9.47936096e+01, 7.77335205e+01, 6.38649597e+01, 1.09210175e+02, 1.12299690e+02, 1.68679749e+02, 1.10466476e+02, 9.57030945e+01, 1.08497574e+02, 1.07442917e+02, 1.30055328e+02, 1.50668869e+02, 1.23230690e+02, 1.12532990e+02, 1.30279892e+02, 1.08353546e+02, 1.43397003e+02, 8.37443542e+01, 8.29229279e+01, 8.26047821e+01, 7.99757233e+01, 7.22762833e+01, 8.02297821e+01, 7.38364868e+01, 7.14886627e+01, 6.42944794e+01, 8.24574127e+01, 8.30025787e+01, 7.55025024e+01, 1.00535774e+02, 8.91069489e+01, 8.44834137e+01, 9.67655334e+01, 8.84753876e+01, 1.07289078e+02, 1.23309265e+02, 9.18481750e+01, 1.05880707e+02, 7.02124481e+01, 7.15019760e+01, 8.57541809e+01, 1.23194733e+02, 1.40743637e+02, 1.91224152e+02, 1.66419250e+02, 1.88776215e+02, 7.94272690e+01, 5.90850487e+01, 4.30508614e+01, 6.19589806e+01, 7.95226212e+01, 1.54719330e+02, 1.50649277e+02, 1.62693207e+02, 1.10357628e+02, 1.55685333e+02, 2.10284515e+02, 1.93443146e+02, 1.73232788e+02, 1.46538483e+02, 1.97388672e+02, 1.87532166e+02, 1.07952744e+02, 1.07362183e+02, 7.57624893e+01, 1.01014847e+02, 8.89666290e+01, 3.45604172e+01, 1.14226227e+02, 9.94878693e+01, 9.09738312e+01, 1.24439270e+02, 1.49023468e+02, 1.31625122e+02, 1.24804169e+02, 1.40148560e+02, 1.44058212e+02, 1.69299927e+02, 4.08214035e+01, 1.14210510e+02, 1.06080368e+02, 1.57231598e+02, 1.45842178e+02, 2.01267593e+02, 1.94434631e+02, 2.75317444e+02, 1.50553024e+02, 1.71881165e+02, 1.78173462e+02, 1.78994568e+02, 2.11313843e+02, 2.51410522e+02, 2.10030121e+02, 2.20661743e+02, 1.68102264e+02, 1.98064178e+02, 1.66939041e+02, 2.20028839e+02, 1.60248047e+02, 1.36427521e+02, 1.92771225e+02, 9.01969986e+01, 1.16276131e+02, 1.60748718e+02, 1.29612503e+02, 1.45125961e+02, 1.78859024e+02, 1.45679291e+02, 1.62545807e+02, 2.29112320e+02, 1.46235886e+02, 1.72891876e+02, 8.12611923e+01, 1.45377686e+02, 1.90821808e+02, 1.85916641e+02, 2.16622009e+02, 1.97200714e+02, 1.15057907e+02, 1.25560204e+02, 2.20214813e+02, 1.73043488e+02, 2.26706680e+02, 2.28841019e+02, 2.28796936e+02, 2.37943909e+02, 1.04170517e+02, 1.10256363e+02, 1.26104149e+02, 1.69829788e+02, 1.21327728e+02, 1.50994125e+02, 1.59677856e+02, 1.96238983e+02, 1.16083038e+02, 1.43379639e+02, 1.12088104e+02, 1.16887360e+02, 1.38551514e+02, 1.82663666e+02, 1.34300201e+02, 1.41466309e+02, 2.26889999e+02, 2.55007324e+02, 2.16779663e+02, 1.95542603e+02, 1.96790070e+02, 1.37306259e+02, 1.41110718e+02, 1.18209808e+02, 1.72975769e+02, 1.63431458e+02, 1.18330475e+02, 1.30759323e+02, 1.46880676e+02, 1.01777145e+02, 1.19683441e+02, 9.70046158e+01, 8.82353210e+01, 1.28795242e+02, 1.05862534e+02, 1.26208237e+02, 1.36706375e+02, 1.06295868e+02, 1.10127304e+02, 8.88061676e+01, 1.30564545e+02, 1.28377258e+02, 1.55602524e+02, 1.54870758e+02, 1.10018768e+02, 8.73879547e+01, 1.29623810e+02, 1.20629120e+02, 1.04899734e+02, 7.73868179e+01, 1.12399200e+02, 1.01062546e+02, 8.09301910e+01, 1.11716599e+02, 1.05288589e+02, 1.44366211e+02, 1.12960373e+02, 1.08715042e+02, 1.60092102e+02, 1.44111328e+02, 1.26288704e+02, 1.44671631e+02, 1.50491028e+02, 1.48167664e+02, 1.17951797e+02, 1.58091125e+02, 1.10031105e+02, 1.53727600e+02, 1.42054901e+02, 1.58923645e+02, 1.27636810e+02, 1.57003662e+02, 8.75502777e+01, 9.19097366e+01, 9.11572266e+01, 5.98662834e+01, 9.36484375e+01, 1.12085434e+02, 7.79651031e+01, 1.52470093e+02, 1.70477905e+02, 1.34701447e+02, 1.62533691e+02, 8.12192993e+01, 1.52753616e+02, 1.33928268e+02, 1.41128159e+02, 1.35473404e+02, 1.04285461e+02, 4.23045654e+01, 1.76356110e+02, 1.27506874e+02, 1.01814316e+02, 1.26474396e+02, 1.24703278e+02, 1.06561462e+02, 1.30898132e+02, 8.69278183e+01, 1.46869141e+02, 1.52338196e+02, 1.06386734e+02, 1.37031708e+02, 1.38229584e+02, 1.10281448e+02, 1.32706848e+02, 1.61874268e+02, 1.13308838e+02, 1.19978615e+02, 1.94182648e+02, 1.43184128e+02, 1.81091782e+02, 1.74961945e+02, 1.87693100e+02, 1.71558960e+02, 1.04216003e+02, 1.32708145e+02, 1.16740067e+02, 3.25321503e+01, 6.29100037e+01, 3.10267830e+01, 9.44201508e+01, 9.88736115e+01, 1.27446571e+02, 1.20323135e+02, 5.52200394e+01, 9.39322205e+01, 1.21068359e+02, 1.31814178e+02, 2.29617584e+02, 2.05051178e+02, 2.78812256e+02, 2.21342773e+02, 1.63742783e+02, 1.26026207e+02, 1.89293701e+02, 1.35271637e+02, 2.18996460e+02, 1.87537415e+02, 2.24667267e+02, 1.89849579e+02, 1.77640045e+02, 1.55493561e+02, 1.47745422e+02, 1.50866196e+02, 1.71227417e+02, 1.63843689e+02, 1.47190735e+02, 1.48948273e+02, 1.63228180e+02, 1.60081543e+02, 1.50387695e+02, 1.38958313e+02, 1.71869843e+02, 1.52146210e+02, 1.94517654e+02, 1.94671448e+02, 1.47367706e+02, 1.44217529e+02, 1.55742279e+02, 1.61695648e+02, 2.07077728e+02, 1.95830322e+02, 2.09445679e+02, 1.85403381e+02, 1.55136108e+02, 1.73217438e+02, 1.25724754e+02, 1.51773544e+02, 2.06329590e+02, 1.67362518e+02, 1.90316467e+02, 1.44928955e+02, 1.14166122e+02, 1.33909149e+02, 1.40236221e+02, 1.63407913e+02, 2.14129761e+02, 1.79115753e+02, 1.99522766e+02, 1.89432098e+02, 1.50452759e+02, 1.58870636e+02, 1.58490692e+02, 1.41791901e+02, 1.74329163e+02, 1.83267029e+02, 1.77134491e+02, 1.68864731e+02, 1.69546875e+02, 1.22134338e+02, 1.57570023e+02, 1.81912308e+02, 1.13630005e+02, 1.23074341e+02, 9.05853271e+01, 1.30104553e+02, 1.31729584e+02, 1.52001251e+02, 1.11005264e+02, 1.15715012e+02, 1.08346954e+02, 1.26445816e+02, 1.69321228e+02, 1.43823425e+02, 1.14816162e+02, 1.17531433e+02, 1.39818893e+02, 1.44806030e+02, 1.59870697e+02, 1.51612152e+02, 1.75331268e+02, 1.92456360e+02, 1.33030289e+02, 1.36821106e+02, 1.54415100e+02, 1.43866135e+02, 1.51451996e+02, 1.80038895e+02, 1.37590912e+02, 1.02224503e+02, 1.34081436e+02, 1.32713074e+02, 1.18202911e+02, 9.78129730e+01, 1.85061646e+02, 1.53930115e+02, 1.30068893e+02, 1.36663208e+02, 1.43093719e+02, 1.23229691e+02, 1.32286438e+02, 1.06077217e+02, 9.05156479e+01, 1.41626038e+02, 1.55058060e+02, 2.23398651e+02, 1.25304771e+02, 1.23085869e+02, 1.80491409e+02, 1.42274292e+02, 9.51721878e+01, 7.68267593e+01, 9.87049179e+01, 1.05499207e+02, 9.86554642e+01, 9.88983002e+01, 1.32298599e+02, 1.39273254e+02, 1.14207268e+02, 9.96607285e+01, 1.54683167e+02, 9.48653870e+01, 1.31856964e+02, 1.61085693e+02, 9.37185822e+01, 1.24638199e+02], [ 39.600113 ,  34.115753 ,  49.205612 ,  43.940006 ,  40.595932 ,  31.83506  ,  45.0812   ,  40.722443 ,  50.99469  ,  56.111916 ,  51.212593 ,  56.985428 ,  48.63134  ,  43.789177 ,  61.51029  ,  51.45053  ,  33.4302   ,  44.125214 ,  43.540524 ,  49.04847  ,  38.658936 ,  42.778282 ,  43.422913 ,  41.395927 ,  46.89203  ,  51.22887  ,  48.296463 ,  51.256836 ,  52.297066 ,  44.000145 ,  50.714333 ,  49.589622 ,  49.93111  ,  42.870255 ,  36.9429   ,  31.808414 ,  60.07026  ,  56.570507 ,  35.190987 ,  42.767372 ,  35.747967 ,  28.95438  ,  35.531765 ,  31.813019 ,  12.125805 ,  19.768261 ,  18.061478 ,  30.847824 ,  49.48881  ,  52.878986 ,  40.270252 ,  44.558685 ,  54.9064   ,  56.21164  ,  46.03638  ,  53.763573 ,  35.444294 ,  35.46027  ,  38.18644  ,  37.09336  ,  38.875587 ,  52.53428  ,  36.768787 ,  47.34608  ,  53.213707 ,  54.664833 ,  50.074272 ,  53.603104 ,  45.18     ,  40.845665 ,  42.330383 ,  39.95923  ,  42.335068 ,  41.44416  ,  45.51548  ,  39.917812 ,  41.73907  ,  46.872276 ,  38.390972 ,  44.74856  ,  49.338394 ,  50.98213  ,  44.336414 ,  47.13157  ,  52.741806 ,  54.616634 ,  51.989395 ,  55.060226 ,  52.780342 ,  51.026432 ,  50.723267 ,  52.484024 ,  53.261444 ,  52.783447 ,  49.731922 ,  51.11194  ,  55.114212 ,  50.067215 ,  55.198166 ,  54.736214 ,  46.56356  ,  47.86422  ,  56.521873 ,  56.051296 ,  53.6846   ,  54.817818 ,  46.043533 ,  47.882996 ,  57.63363  ,  54.400005 ,  46.964935 ,  43.015007 ,  51.836014 ,  50.656525 ,  59.650856 ,  64.2784   ,  49.394672 ,  52.203636 ,  52.594273 ,  47.33091  ,  54.616714 ,  65.30365  ,  38.363403 ,  49.492386 ,  61.183167 ,  44.18319  ,  59.70475  ,  58.174156 ,  37.00782  ,  33.11968  ,  37.985634 ,  36.144722 ,  37.072617 ,  37.510345 ,  39.08399  ,  39.210976 ,  40.426224 ,  34.537987 ,  46.93489  ,  38.151596 ,  35.643322 ,  33.936417 ,  38.166862 ,  34.448547 ,  40.453026 ,  41.301155 ,  43.28703  ,  44.166107 ,  35.938713 ,  41.302258 ,  36.240433 ,  40.602882 ,  36.135384 ,  35.65779  ,  37.292366 ,  36.85453  ,  31.86967  ,  39.8209   ,  32.306007 ,  39.184875 ,  41.249985 ,  29.19918  ,  30.357042 ,  28.199543 ,  37.466286 ,  45.029503 ,  37.861076 ,  46.860023 ,  32.822372 ,  36.88949  ,  42.602055 ,  40.243015 ,  38.912052 ,  41.71572  ,  40.137993 ,  44.56858  ,  43.459152 ,  41.875294 ,  49.03323  ,  48.00168  ,  38.00525  ,  36.91469  ,  43.771343 ,  36.261917 ,  47.114624 ,  49.162838 ,  45.906006 ,  44.519714 ,  41.293278 ,  37.88945  ,  40.95965  ,  35.275913 ,  37.75231  ,  35.629425 ,  44.073982 ,  39.20184  ,  36.24233  ,  39.84602  ,  34.56199  ,  43.305664 ,  46.547256 ,  42.310795 ,  42.623055 ,  39.642723 ,  35.513947 ,  43.142952 ,  39.555145 ,  40.799103 ,  40.887856 ,  47.26938  ,  44.099754 ,  47.799908 ,  55.230637 ,  59.056953 ,  43.901047 ,  47.21929  ,  43.508873 ,  42.125534 ,  40.669724 ,  41.32223  ,  39.773224 ,  39.035038 ,  40.337036 ,  40.580536 ,  36.06993  ,  37.32773  ,  36.480682 ,  44.39705  ,  46.296574 ,  42.58808  ,  56.350887 ,  55.43982  ,  40.672497 ,  44.942127 ,  33.3712   ,  40.199345 ,  47.807236 ,  52.678333 ,  38.87961  ,  43.538296 ,  38.752846 ,  41.400238 ,  43.64467  ,  45.784332 ,  37.512016 ,  31.279247 ,  40.174416 ,  34.28066  ,  50.379192 ,  47.254616 ,  50.208424 ,  50.798435 ,  46.612213 ,  50.041092 ,  49.98995  ,  55.254646 ,  52.86864  ,  46.80642  ,  48.043945 ,  43.437813 ,  48.208374 ,  43.972595 ,  48.271053 ,  46.08654  ,  47.389107 ,  42.61188  ,  54.092293 ,  46.40136  ,  48.251656 ,  42.28579  ,  56.431057 ,  47.280083 ,  41.45569  ,  47.121742 ,  37.609955 ,  37.133408 ,  54.607544 ,  51.223736 ,  51.216965 ,  50.089546 ,  35.31578  ,  45.28907  ,  42.50227  ,  57.600235 ,  60.42031  ,  55.952923 ,  63.196297 ,  63.137966 ,  59.827175 ,  56.97486  ,  50.130188 ,  54.65467  ,  61.422905 ,  59.55719  ,  55.788475 ,  53.818787 ,  39.283577 ,  51.27026  ,  49.155445 ,  58.287437 ,  60.28756  ,  62.2904   ,  61.355553 ,  72.44823  ,  55.38272  ,  59.390144 ,  51.98902  ,  56.442383 ,  60.612648 ,  62.467247 ,  61.764473 ,  59.35045  ,  55.536453 ,  54.8234   ,  72.771484 ,  53.256676 ,  54.778717 ,  50.49047  ,  45.63069  ,  48.425377 ,  66.631615 ,  68.24047  ,  54.33111  ,  65.80953  ,  49.50348  ,  44.52483  ,  61.780983 ,  54.421875 ,  66.580086 ,  71.76628  ,  67.740425 ,  65.51198  ,  62.36565  ,  61.4048   ,  58.13578  ,  62.25197  ,  49.72145  ,  54.389427 ,  62.180428 ,  59.279034 ,  52.0757   ,  48.77656  ,  50.704536 ,  46.88581  ,  64.651825 ,  67.87706  ,  70.98048  ,  73.54561  ,  63.141098 ,  54.847027 ,  69.005615 ,  65.2261   ,  61.51838  ,  56.57202  ,  59.41649  ,  58.889793 ,  58.058094 ,  60.930573 ,  57.330853 ,  56.413116 ,  52.45577  ,  54.435017 ,  54.85692  ,  55.629185 ,  53.266716 ,  48.130737 ,  49.036827 ,  39.27632  ,  68.67363  ,  74.89502  ,  56.03431  ,  69.90184  ,  70.812    ,  64.71629  ,  70.91226  ,  49.689972 ,  45.95118  ,  55.603886 ,  38.439056 ,  43.331303 ,  56.613556 ,  51.479393 ,  53.43863  ,  49.708145 ,  56.343727 ,  57.490765 ,  52.550713 ,  48.754097 ,  53.63083  ,  63.674213 ,  52.152462 ,  53.008625 ,  43.219975 ,  48.467056 ,  38.88562  ,  49.42265  ,  58.653843 ,  56.473083 ,  69.34391  ,  66.48137  ,  70.330795 ,  56.49539  ,  57.25022  ,  57.274048 ,  47.643692 ,  56.836494 ,  57.427155 ,  60.36599  ,  54.821808 ,  55.86371  ,  55.938126 ,  53.76963  ,  57.060577 ,  54.910507 ,  53.89395  ,  54.70311  ,  36.914146 ,  44.287117 ,  45.61785  ,  51.16222  ,  57.559837 ,  56.90484  ,  51.33477  ,  47.977547 ,  53.058853 ,  50.886406 ,  51.95685  ,  42.601456 ,  45.609688 ,  43.092896 ,  39.862316 ,  45.654755 ,  49.416344 ,  53.990173 ,  45.45298  ,  46.87951  ,  61.724533 ,  63.144764 ,  56.11013  ,  60.86193  ,  47.719162 ,  46.559074 ,  53.962963 ,  56.307716 ,  51.493984 ,  56.283276 ,  55.813328 ,  53.157154 ,  57.489212 ,  53.604618 ,  55.620712 ,  53.347343 ,  49.1588   ,  43.44924  ,  48.53161  ,  43.2096   ,  52.835373 ,  54.568443 ,  56.062126 ,  58.609665 ,  40.896122 ,  32.867504 ,  53.47557  ,  53.361317 ,  43.814373 ,  37.80402  ,  46.96955  ,  49.18795  ,  46.50036  ,  44.524776 ,  55.341354 ,  47.855175 ,  49.98616  ,  60.512474 ,  63.92942  ,  58.1343   ,  56.55278  ,  44.519524 ,  40.95271  ,  40.098267 ,  64.23249  ,  61.308655 ,  61.612015 ,  61.871246 ,  64.777245 ,  70.4931   ,  72.22504  ,  66.149185 ,  49.54587  ,  53.16909  ,  42.57047  ,  45.58793  ,  64.24861  ,  44.05309  ,  48.851334 ,  45.92556  ,  66.938774 ,  51.50889  ,  48.699974 ,  49.164177 ,  39.48809  ,  40.469967 ,  48.275337 ,  42.681015 ,  36.214767 ,  46.535854 ,  42.341255 ,  47.180553 ,  49.51341  ,  47.94804  ,  49.52938  ,  47.462334 ,  48.27137  ,  40.02055  ,  41.60584  ,  32.16164  ,  39.082985 ,  43.23801  ,  34.36928  ,  35.86199  ,  38.35533  ,  34.85687  ,  38.3816   ,  29.11485  ,  33.93441  ,  32.58263  ,  30.364727 ,  32.579514 ,  44.406906 ,  43.918198 ,  41.671806 ,  39.34072  ,  36.571457 ,  31.615585 ,  31.087862 ,  27.811676 ,  32.41867  ,  33.238506 ,  30.006472 ,  32.490448 ,  33.34852  ,  27.807785 ,  44.61985  ,  49.450905 ,  27.627888 ,  24.239498 ,  31.156109 ,  28.671326 ,  31.260757 ,  37.18139  ,  34.32078  ,  37.930397 ,  33.693146 ,  32.485954 ,  35.87448  ,  32.890587 ,  33.976288 ,  37.907997 ,  33.25547  ,  35.52661  ,  32.742752 ,  27.6392   ,  40.839287 ,  32.190563 ,  33.714897 ,  50.53866  ,  36.507874 ,  46.128693 ,  42.059174 ,  38.839767 ,  41.196007 ,  35.23057  ,  42.05916  ,  46.943672 ,  35.70978  ,  46.505035 ,  32.983086 ,  35.802345 ,  26.23118  ,  35.95106  ,  38.08895  ,  42.76861  ,  35.017204 ,  41.494186 ,  19.096958 ,  26.707478 ,  32.11204  ,  27.432335 ,  36.410984 ,  39.72213  ,  33.79432  ,  44.84166  ,  45.846153 ,  44.881893 ,  40.304436 ,  37.192955 ,  33.515877 ,  45.691437 ,  26.408573 ,  29.193201 ,  41.18541  ,  42.369637 ,  46.461166 ,  51.72496  ,  44.09858  ,  37.87317  ,  57.707336 ,  47.122307 ,  46.272945 ,  34.675278 ,  46.430157 ,  44.129745 ,  43.661095 ,  46.993275 ,  47.650124 ,  43.052963 ,  49.49228  ,  41.656853 ,  51.140724 ,  42.56047  ,  33.752754 ,  32.657703 ,  30.001038 ,  27.215275 ,  49.892113 ,  52.194477 ,  39.282017 ,  47.8786   ,  50.44979  ,  39.071953 ,  47.783775 ,  40.322548 ,  37.590733 ,  47.046837 ,  30.736166 ,  41.377804 ,  51.81913  ,  50.64388  ,  47.397392 ,  49.732185 ,  43.795113 ,  35.38269  ,  38.833427 ,  36.45229  ,  34.26464  ,  42.31425  ,  42.06382  ,  51.38478  ,  41.42385  ,  39.53727  ,  41.72336  ,  42.072456 ,  46.320168 ,  48.380188 ,  45.94903  ,  45.179893 ,  47.73254  ,  42.89603  ,  48.833954 ,  38.43077  ,  37.692406 ,  37.642715 ,  37.575394 ,  35.321854 ,  36.108322 ,  35.983665 ,  34.97931  ,  33.438995 ,  38.01316  ,  37.865044 ,  36.179207 ,  41.27546  ,  38.470974 ,  37.643845 ,  39.72312  ,  38.709385 ,  44.01604  ,  48.34704  ,  39.503242 ,  41.425404 ,  34.199467 ,  34.64687  ,  37.03115  ,  43.54509  ,  47.298336 ,  55.49385  ,  51.29322  ,  55.544895 ,  36.98196  ,  32.276054 ,  27.70839  ,  31.703737 ,  35.848053 ,  50.034645 ,  48.590034 ,  50.847305 ,  40.542564 ,  49.20049  ,  61.02677  ,  56.972305 ,  52.450886 ,  48.567047 ,  56.172173 ,  54.84009  ,  41.80429  ,  42.59636  ,  35.876755 ,  41.3041   ,  38.702015 ,  25.043486 ,  44.31579  ,  40.676743 ,  38.76442  ,  45.006416 ,  49.948975 ,  46.517387 ,  45.459602 ,  47.793373 ,  48.4236   ,  52.42124  ,  26.382729 ,  43.776627 ,  41.91761  ,  52.78901  ,  49.255466 ,  57.03242  ,  57.69446  ,  67.377365 ,  49.422523 ,  54.105515 ,  53.70253  ,  53.835625 ,  59.938812 ,  64.977615 ,  59.34172  ,  61.061775 ,  52.896286 ,  56.662155 ,  51.762543 ,  59.89005  ,  50.69623  ,  47.071796 ,  55.9575   ,  38.417793 ,  43.928677 ,  50.89238  ,  45.798737 ,  47.971466 ,  54.43215  ,  47.774284 ,  50.94091  ,  61.10414  ,  48.732033 ,  52.880272 ,  36.72986  ,  47.821632 ,  56.292145 ,  55.69847  ,  59.64994  ,  57.307728 ,  41.934677 ,  44.837147 ,  59.902306 ,  52.600014 ,  60.04573  ,  62.064423 ,  60.504208 ,  62.516357 ,  42.762535 ,  43.297234 ,  44.65718  ,  52.60884  ,  45.783157 ,  50.296867 ,  51.516407 ,  56.817223 ,  44.528854 ,  48.983856 ,  44.49586  ,  45.246124 ,  48.35091  ,  54.9457   ,  48.24305  ,  49.43638  ,  61.674366 ,  65.00755  ,  59.98092  ,  56.833794 ,  56.98269  ,  48.86151  ,  48.677345 ,  45.23847  ,  54.022614 ,  52.44934  ,  45.771545 ,  47.138176 ,  49.730995 ,  42.664444 ,  45.15442  ,  41.896694 ,  39.29808  ,  47.361046 ,  42.368935 ,  46.311996 ,  49.026253 ,  43.313896 ,  43.725937 ,  39.466515 ,  47.701885 ,  46.871086 ,  51.869926 ,  51.377876 ,  43.83763  ,  39.250008 ,  47.05745  ,  45.11783  ,  43.61924  ,  38.263313 ,  44.156136 ,  42.71029  ,  38.639595 ,  44.709415 ,  43.80095  ,  50.85656  ,  44.020676 ,  43.50388  ,  51.79216  ,  49.58647  ,  47.04324  ,  50.592377 ,  51.01343  ,  50.708115 ,  45.475178 ,  51.606277 ,  43.555008 ,  50.455013 ,  50.014275 ,  52.56613  ,  46.53035  ,  51.539085 ,  39.930946 ,  39.790524 ,  40.84089  ,  33.9065   ,  40.792324 ,  44.319336 ,  37.804516 ,  51.900112 ,  54.091568 ,  48.980057 ,  51.60691  ,  36.9747   ,  51.88213  ,  48.814915 ,  49.22651  ,  48.435436 ,  41.553673 ,  28.881824 ,  56.263584 ,  48.233475 ,  41.713173 ,  46.68154  ,  47.748222 ,  43.167774 ,  48.314583 ,  39.45285  ,  51.3209   ,  51.52054  ,  44.208572 ,  49.878685 ,  50.007324 ,  45.38308  ,  48.041718 ,  52.543213 ,  44.72816  ,  46.924095 ,  57.114685 ,  49.272194 ,  55.526115 ,  54.67964  ,  60.704636 ,  60.997826 ,  44.74649  ,  52.14834  ,  46.861313 ,  25.923553 ,  35.16462  ,  25.876343 ,  41.753433 ,  42.16421  ,  47.683105 ,  45.66107  ,  33.197426 ,  40.857265 ,  46.202686 ,  48.207626 ,  62.093224 ,  59.35994  ,  68.57925  ,  62.57292  ,  53.082207 ,  46.514404 ,  57.98786  ,  49.351555 ,  61.848553 ,  58.807358 ,  64.23212  ,  59.831596 ,  57.23489  ,  53.65138  ,  51.7172   ,  51.4626   ,  53.66071  ,  53.210594 ,  50.44407  ,  50.975964 ,  53.735535 ,  53.596386 ,  51.791206 ,  50.03698  ,  55.90484  ,  51.706512 ,  58.39489  ,  58.293358 ,  50.67578  ,  50.31475  ,  52.14686  ,  53.419914 ,  59.467552 ,  58.018475 ,  58.943737 ,  55.157684 ,  51.53888  ,  53.32071  ,  46.338005 ,  49.903862 ,  59.11216  ,  53.097443 ,  56.86301  ,  50.156063 ,  44.48948  ,  48.277    ,  49.405464 ,  53.34503  ,  59.760212 ,  55.05504  ,  57.910603 ,  56.784542 ,  50.904724 ,  52.1821   ,  52.293663 ,  49.731655 ,  54.75312  ,  56.35084  ,  55.244198 ,  53.997215 ,  54.35442  ,  46.12195  ,  52.707245 ,  55.87017  ,  46.107002 ,  51.368065 ,  41.497375 ,  51.642143 ,  51.711292 ,  54.094208 ,  47.386898 ,  47.759964 ,  44.223488 ,  48.201096 ,  54.27108  ,  51.725296 ,  45.84382  ,  45.803623 ,  50.69555  ,  50.337822 ,  56.436592 ,  53.917854 ,  61.507385 ,  65.734764 ,  48.778236 ,  49.47152  ,  54.49456  ,  51.073097 ,  52.491795 ,  61.511055 ,  49.24833  ,  42.976906 ,  49.318863 ,  48.79513  ,  45.810593 ,  41.66442  ,  55.60153  ,  51.21885  ,  46.649826 ,  49.68866  ,  49.829227 ,  45.76551  ,  49.203888 ,  42.911953 ,  39.991814 ,  49.92663  ,  50.751396 ,  61.034245 ,  48.521187 ,  47.664818 ,  55.68911  ,  50.914368 ,  41.123848 ,  38.227005 ,  41.58669  ,  43.42802  ,  42.098038 ,  41.85641  ,  48.351162 ,  49.40252  ,  44.99216  ,  42.468636 ,  52.31246  ,  42.235844 ,  48.489166 ,  53.023155 ,  43.838486 ,  48.066788 ]),
#[Out]#           ([1.63321899e+02, 1.23849075e+02, 1.36856598e+02, 1.00523407e+02, 7.04658279e+01, 5.89655609e+01, 9.02912445e+01, 1.45687164e+02, 1.73854736e+02, 1.30350128e+02, 1.95888702e+02, 1.00082413e+02, 1.34232254e+02, 1.72801208e+02, 9.79795990e+01, 1.41769531e+02, 8.54766235e+01, 7.73034668e+01, 1.34800751e+02, 1.20705322e+02, 1.14133438e+02, 8.93163986e+01, 1.28852539e+02, 1.04974899e+02, 1.59808563e+02, 1.53769852e+02, 1.38829865e+02, 1.56427505e+02, 1.34952820e+02, 9.74581909e+01, 9.86716309e+01, 5.75395966e+01, 1.18196762e+02, 8.49360962e+01, 9.89945374e+01, 1.18900742e+02, 1.17276131e+02, 1.70299362e+02, 1.58251190e+02, 1.70049042e+02, 1.32530823e+02, 1.36521088e+02, 1.28723160e+02, 1.33326050e+02, 1.31837814e+02, 6.03348999e+01, 8.18924713e+01, 4.64911880e+01, 1.52403564e+02, 2.38434631e+02, 1.30409698e+02, 2.11505035e+02, 2.22273041e+02, 1.28724136e+02, 1.91643524e+02, 1.27943588e+02, 8.95409241e+01, 1.26922249e+02, 1.11712112e+02, 1.48879105e+02, 1.12635620e+02, 1.24750366e+02, 1.41661652e+02, 1.75470551e+02, 8.97613068e+01, 8.52171478e+01, 1.30611694e+02, 1.04471313e+02, 7.73301086e+01, 8.91856537e+01, 8.56941071e+01, 8.27513580e+01, 1.41226654e+02, 1.38631195e+02, 1.09249725e+02, 1.36088409e+02, 9.52265625e+01, 8.90096664e+01, 1.32037766e+02, 1.08398628e+02, 1.07477158e+02, 1.07396362e+02, 9.10610275e+01, 6.01363144e+01, 6.38076096e+01, 6.02444382e+01, 5.72799950e+01, 6.56947556e+01, 7.30769348e+01, 5.36058578e+01, 1.02199524e+02, 1.11132889e+02, 1.09920113e+02, 6.89616852e+01, 1.96380707e+02, 1.52083191e+02, 1.49297104e+02, 1.37883179e+02, 1.49848328e+02, 1.39470566e+02, 1.58486481e+02, 1.51014099e+02, 1.47286926e+02, 1.71909332e+02, 1.78483170e+02, 1.47132751e+02, 1.95182861e+02, 1.38973969e+02, 1.10760452e+02, 1.34844055e+02, 9.05567551e+01, 9.95169983e+01, 9.75864944e+01, 8.61697388e+01, 1.65594330e+02, 9.93956375e+01, 1.46762268e+02, 1.07700882e+02, 1.43690567e+02, 1.15347931e+02, 1.60626770e+02, 7.62113647e+01, 9.15451965e+01, 3.75286026e+01, 1.45726395e+02, 1.58964539e+02, 1.12691566e+02, 1.59128754e+02, 1.13376190e+02, 1.25311539e+02, 1.25059135e+02, 1.38133255e+02, 1.04475136e+02, 1.23593140e+02, 1.38854767e+02, 1.81624390e+02, 9.85937424e+01, 1.09824959e+02, 1.27028946e+02, 1.20398178e+02, 9.14170532e+01, 1.55755508e+02, 8.91719131e+01, 1.22213783e+02, 1.73818848e+02, 1.65778046e+02, 1.68785217e+02, 1.32643097e+02, 1.55588638e+02, 1.65816956e+02, 1.31897644e+02, 1.64637085e+02, 1.07535637e+02, 1.12159119e+02, 1.02390938e+02, 1.23666077e+02, 1.29883469e+02, 1.35057251e+02, 1.39766724e+02, 1.34402969e+02, 1.21630554e+02, 1.43997192e+02, 1.16256294e+02, 1.88745346e+02, 1.51178894e+02, 1.35226151e+02, 1.71271332e+02, 1.10653984e+02, 2.43993164e+02, 2.60868256e+02, 1.81984283e+02, 1.67777588e+02, 1.44192078e+02, 1.02639114e+02, 7.51274338e+01, 1.06249886e+02, 9.76503067e+01, 1.44307648e+02, 5.50690193e+01, 7.78076172e+01, 1.63105270e+02, 1.83133575e+02, 1.95809235e+02, 2.10841492e+02, 8.81127853e+01, 1.48838501e+02, 1.27952713e+02, 1.40777008e+02, 1.66581177e+02, 1.56630524e+02, 1.44867859e+02, 1.29260559e+02, 1.53894623e+02, 1.08045166e+02, 1.70849579e+02, 1.47458679e+02, 1.19514336e+02, 1.50209366e+02, 1.77647461e+02, 1.77406326e+02, 1.71371033e+02, 1.92929504e+02, 1.62395477e+02, 1.88872391e+02, 1.88143555e+02, 1.49804657e+02, 1.81298538e+02, 1.54835205e+02, 1.49442749e+02, 1.14516182e+02, 1.32357361e+02, 1.21194046e+02, 1.49747131e+02, 1.50977081e+02, 1.38570740e+02, 1.46515167e+02, 1.28302597e+02, 1.24232727e+02, 1.25663498e+02, 1.11345261e+02, 1.36558502e+02, 1.38781433e+02, 1.33851242e+02, 4.36533691e+02, 1.60766129e+02, 1.47300873e+02, 1.52311996e+02, 1.35420059e+02, 1.66662796e+02, 1.81373001e+02, 1.31382095e+02, 1.98444931e+02, 1.21735611e+02, 1.31698486e+02, 1.39558441e+02, 2.03324829e+02, 9.98084564e+01, 1.12343643e+02, 1.52322449e+02, 1.43158478e+02, 1.60474365e+02, 1.05507538e+02, 2.15763275e+02, 1.90023300e+02, 2.50789917e+02, 5.77180054e+02, 2.84182190e+02, 2.69911938e+03, 1.64390564e+02, 1.32781677e+02, 1.67035858e+02, 1.75042480e+02, 1.37593042e+03, 1.21378369e+04, 3.14607147e+02, 6.41333350e+03, 1.04510880e+02, 1.44105087e+02, 1.18132477e+02, 1.39432846e+02, 1.12839989e+02, 8.07982025e+01, 9.39188385e+01, 7.81486435e+01, 6.11017914e+01, 8.56433182e+01, 4.92427826e+01, 4.93706398e+01, 9.01956024e+01, 8.63579712e+01, 8.86141586e+01, 1.00118042e+02, 1.18094658e+02, 1.58623688e+02, 8.27085114e+01, 1.39498001e+02, 1.45606934e+02, 1.16038971e+02, 1.55587173e+02, 1.39715256e+02, 8.07902908e+01, 1.13536720e+02, 9.63504333e+01, 1.87229248e+02, 1.75225067e+02, 1.72704773e+02, 1.99604614e+02, 1.99807678e+02, 8.37941284e+01, 8.65559998e+01, 9.84862900e+01, 1.11924805e+02, 1.19211121e+02, 1.05434898e+02, 1.19899857e+02, 1.14389267e+02, 1.28809906e+02, 1.10414612e+02, 1.71009857e+02, 1.51983688e+02, 1.07962997e+02, 1.09855484e+02, 1.07627274e+02, 1.34556671e+02, 8.96818390e+01, 1.24424263e+02, 1.03463013e+02, 1.68269226e+02, 1.91269287e+02, 1.92638962e+02, 2.05899399e+02, 1.98203522e+02, 1.07040092e+02, 1.72967773e+02, 1.31582504e+02, 1.45056793e+02, 1.74313538e+02, 1.11914276e+02, 1.05949097e+02, 7.40420990e+01, 9.09415741e+01, 4.17864227e+01, 9.65617065e+01, 1.52160767e+02, 7.37026367e+01, 1.01223740e+02, 1.15171341e+02, 9.55671005e+01, 1.90932892e+02, 2.06388062e+02, 2.31836807e+02, 2.43447693e+02, 2.07398254e+02, 1.57582474e+02, 2.24917664e+02, 2.14039673e+02, 1.28917343e+02, 1.59043823e+02, 1.41965897e+02, 1.63975662e+02, 1.45040100e+02, 1.42897690e+02, 1.89004669e+02, 1.62680939e+02, 1.44459488e+02, 1.77998749e+02, 1.63131500e+02, 1.80904907e+02, 2.18061203e+02, 1.89853943e+02, 2.03083740e+02, 1.50506058e+02, 2.33511627e+02, 2.96069122e+02, 1.80458130e+02, 2.57293121e+02, 2.71588562e+02, 1.45698181e+02, 1.91488678e+02, 1.15282158e+02, 1.63896515e+02, 1.48599869e+02, 1.14334656e+02, 1.40834427e+02, 1.29392975e+02, 1.24342117e+02, 1.51723083e+02, 1.26974792e+02, 1.03054947e+02, 1.76043274e+02, 1.25719292e+02, 1.94743698e+02, 1.91609406e+02, 1.89840790e+02, 1.79248657e+02, 1.04102432e+02, 1.47283218e+02, 2.03606491e+02, 1.12337120e+02, 1.46890518e+02, 1.48509964e+02, 8.12699432e+01, 1.45582565e+02, 1.18163696e+02, 2.24810852e+02, 2.35065689e+02, 1.59602417e+02, 2.64188782e+02, 1.70960419e+02, 1.57137329e+02, 2.38887054e+02, 3.47749878e+02, 4.09010132e+02, 4.75494202e+02, 6.04282349e+02, 7.27999268e+02, 6.33531189e+02, 1.68242578e+03, 1.53173853e+03, 1.79330334e+03, 1.47463333e+02, 1.52247269e+02, 1.34757416e+02, 1.29630829e+02, 1.53514725e+02, 1.25415329e+02, 1.51621857e+02, 1.66046432e+02, 7.41034729e+02, 8.59889297e+01, 1.30487915e+03, 4.72643127e+02, 9.01676407e+01, 1.58846344e+02, 9.10835266e+01, 1.52814026e+02, 1.41057568e+03, 2.39160864e+03, 5.56262402e+03, 4.69520508e+03, 1.40018433e+03, 1.03857654e+03, 1.74416772e+03, 6.99249023e+02, 1.15313086e+04, 4.79852051e+03, 1.30251621e+04, 1.22863096e+04, 2.76766309e+03, 1.55757520e+03, 5.00721875e+03, 2.72319238e+03, 1.13150586e+03, 9.55395630e+02, 1.04344214e+03, 7.30198608e+02, 2.70886963e+02, 1.36625656e+02, 5.77000671e+02, 1.74329636e+02, 1.70717236e+03, 1.44770386e+03, 2.09977295e+03, 8.41483643e+02, 3.96579102e+02, 1.89136932e+02, 3.81937317e+02, 2.31842667e+02, 1.21593567e+02, 1.88618591e+02, 1.74842117e+02, 3.63019379e+02, 2.00072784e+02, 1.69485748e+02, 3.03682037e+02, 1.16903946e+02, 1.63949036e+02, 2.90265533e+02, 1.51875854e+02, 1.92294800e+02, 2.18182129e+02, 1.45246719e+02, 1.74556061e+02, 1.45908112e+02, 1.08020065e+02, 1.39889771e+02, 8.02738495e+01, 1.04482643e+02, 1.37170624e+02, 8.34105682e+01, 1.14448433e+02, 9.43872910e+01, 8.47906723e+01, 6.10958824e+01, 9.32362213e+01, 5.68227005e+01, 9.17218552e+01, 7.90166779e+01, 6.52407532e+01, 7.19255981e+01, 1.78306488e+02, 2.01246414e+02, 1.89165924e+02, 1.84239227e+02, 2.07079559e+02, 1.82596191e+02, 2.16483490e+02, 2.19789429e+02, 1.90892883e+02, 1.76119415e+02, 2.29606049e+02, 2.02425049e+02, 1.79352478e+02, 1.66323212e+02, 1.39941681e+02, 1.47116455e+02, 1.33379761e+02, 9.23386993e+01, 1.23230545e+02, 8.82733841e+01, 7.12321243e+01, 7.87749023e+01, 7.95977325e+01, 9.91821899e+01, 1.35418945e+02, 8.51656647e+01, 1.48181046e+02, 1.08701073e+02, 4.97626038e+01, 6.98044739e+01, 6.74774780e+01, 6.02463455e+01, 1.52386292e+02, 1.48379608e+02, 1.71778168e+02, 1.67897888e+02, 9.09585953e+01, 1.48888275e+02, 1.13540192e+02, 1.60283859e+02, 1.29947968e+02, 1.10111588e+02, 1.17170181e+02, 1.16495209e+02, 8.76297302e+01, 1.15893456e+02, 9.66603546e+01, 1.08776291e+02, 1.34190628e+02, 1.36159485e+02, 1.40605362e+02, 1.43510437e+02, 1.41247284e+02, 1.29979446e+02, 1.36824524e+02, 1.13527222e+02, 1.23456177e+02, 1.16494141e+02, 1.14438095e+02, 9.86174850e+01, 1.01574600e+02, 9.87458649e+01, 9.83455200e+01, 1.02409744e+02, 4.90257454e+01, 9.12617722e+01, 4.01542740e+01, 6.43169556e+01, 8.69450150e+01, 1.07864136e+02, 8.81079712e+01, 1.01357620e+02, 8.24931335e+01, 7.74427567e+01, 1.37784790e+02, 1.32985855e+02, 1.21664032e+02, 1.03132774e+02, 1.36796204e+02, 1.24015808e+02, 1.26511681e+02, 1.20371750e+02, 1.23626968e+02, 1.61868454e+02, 1.06693352e+02, 1.03409088e+02, 1.61461121e+02, 1.14614761e+02, 1.03238640e+02, 1.53230530e+02, 8.80737610e+01, 6.97480469e+01, 1.59355377e+02, 1.03893768e+02, 8.19519424e+01, 8.64255524e+01, 1.29520020e+02, 1.97425507e+02, 1.23842422e+02, 1.21248444e+02, 1.51179825e+02, 1.43037216e+02, 1.14246750e+02, 1.13910027e+02, 1.06284538e+02, 1.16304146e+02, 1.02286140e+02, 1.10715378e+02, 1.18126785e+02, 1.04398453e+02, 1.22224213e+02, 1.18976685e+02, 1.57713165e+02, 1.29239166e+02, 1.12659927e+02, 1.10283585e+02, 2.71555725e+02, 6.89853760e+02, 9.72740860e+01, 2.40975189e+02, 1.02330109e+02, 8.05303040e+01, 9.43799591e+01, 7.14855194e+01, 6.47420197e+01, 9.69301147e+01, 6.39445114e+01, 8.87976532e+01, 1.07293579e+02, 1.07539902e+02, 1.35855743e+02, 1.16556366e+02, 1.10323158e+02, 1.27069443e+02, 1.01116226e+02, 1.22646454e+02, 1.35976639e+02, 1.33359604e+02, 1.34033447e+02, 1.38383118e+02, 1.08720749e+02, 1.39048599e+02, 1.13037025e+02, 1.72973007e+02, 1.25072144e+02, 7.54819183e+01, 1.01255508e+02, 3.97085571e+01, 5.39840393e+01, 7.60668869e+01, 5.44043121e+01, 1.72046188e+02, 1.28744263e+02, 4.10639572e+01, 2.02777039e+02, 1.03843117e+02, 8.63329697e+01, 1.83525742e+02, 7.61656799e+01, 1.24580254e+02, 1.37503448e+02, 1.31615845e+02, 1.38547272e+02, 9.94767914e+01, 1.22706955e+02, 1.27470444e+02, 8.47599792e+01, 1.21298950e+02, 8.33268280e+01, 5.72386703e+01, 6.82852325e+01, 5.77239914e+01, 9.34681168e+01, 1.30193604e+02, 8.86374207e+01, 1.31209961e+02, 1.15768265e+02, 5.29412766e+01, 1.57413208e+02, 1.27874947e+02, 6.25118904e+01, 1.49159332e+02, 1.57518250e+02, 1.91749420e+02, 1.50028229e+02, 1.14188599e+02, 1.47805313e+02, 1.08664902e+02, 1.04944321e+02, 1.54756042e+02, 1.07717178e+02, 1.57399139e+02, 1.03331596e+02, 9.53497009e+01, 1.27245872e+02, 1.30437744e+02, 7.46658173e+01, 1.08020485e+02, 1.10136475e+02, 1.12596191e+02, 1.45715073e+02, 1.13172256e+02, 9.24772720e+01, 7.85012131e+01, 9.22006378e+01, 1.07709717e+02, 8.98006287e+01, 8.01373291e+01, 1.53642944e+02, 1.46737930e+02, 1.23794724e+02, 1.14465942e+02, 1.56460190e+02, 1.83535461e+02, 1.07133972e+02, 1.23661804e+02, 1.44521088e+02, 1.37222305e+02, 1.15925224e+02, 1.18200691e+02, 1.39209900e+02, 1.53160889e+02, 1.18693604e+02, 1.42502441e+02, 1.58565826e+02, 1.24493637e+02, 1.49481705e+02, 1.19030594e+02, 5.38631363e+01, 6.89164429e+01, 1.01378380e+02, 1.44232819e+02, 9.71245728e+01, 1.02235168e+02, 1.03710999e+02, 1.12026245e+02, 7.45845871e+01, 1.14932587e+02, 6.82655792e+01, 7.82612381e+01, 1.20665161e+02, 9.58500900e+01, 1.67190582e+02, 1.16360275e+02, 1.26809608e+02, 1.90176666e+02, 1.62207123e+02, 2.15500977e+02, 1.34954498e+02, 6.93294296e+01, 9.73545074e+01, 6.90704193e+01, 1.18098785e+02, 1.56024170e+02, 1.29371460e+02, 1.43771210e+02, 1.24724876e+02, 1.29823639e+02, 8.77209320e+01, 9.10416794e+01, 1.14307892e+02, 1.26145569e+02, 9.93747559e+01, 1.15711128e+02, 9.73723907e+01, 2.60953407e+01, 1.19931831e+02, 6.75076599e+01, 4.76704941e+01, 1.20734787e+02, 7.89809875e+01, 1.12186462e+02, 1.24699219e+02, 1.20168831e+02, 1.17388763e+02, 1.02653076e+02, 1.52070465e+02, 1.35851929e+02, 9.90100021e+01, 7.56201706e+01, 1.27239014e+02, 9.29485168e+01, 9.63846893e+01, 2.17268944e+01, 5.14788971e+01, 5.18363037e+01, 3.49819756e+01, 5.86417542e+01, 6.64013184e+03, 1.11602383e+04, 6.58816040e+02, 1.25846777e+03, 3.17102246e+03, 2.80595630e+03, 2.00036829e+03, 9.33625122e+02, 1.70928070e+02, 2.25274078e+02, 1.06047050e+02, 1.74758606e+02, 4.88243835e+02, 3.26688293e+02, 1.84260345e+02, 2.22171967e+02, 1.47619092e+03, 7.44734131e+02, 7.89312439e+02, 6.94746826e+02, 3.86938416e+02, 1.62812759e+02, 1.56434662e+02, 1.18005951e+02, 3.56519135e+02, 2.14598267e+02, 1.70619141e+02, 1.75573090e+02, 1.78649551e+02, 9.14519348e+01, 6.99706802e+01, 3.50201797e+01, 1.50203003e+02, 1.63627441e+02, 2.06144897e+02, 1.77574341e+02, 1.78058380e+02, 1.91010712e+02, 2.02972687e+02, 1.92226410e+02, 2.06403412e+02, 2.03560242e+02, 1.44689697e+02, 1.77312836e+02, 2.08508636e+02, 1.90910599e+02, 1.86720840e+02, 1.99809219e+02, 1.81720322e+02, 1.53204483e+02, 1.67004105e+02, 1.63704224e+02, 9.58230057e+01, 5.07565231e+01, 1.51610931e+02, 1.02920937e+02, 1.64408447e+02, 1.57172638e+02, 1.72333496e+02, 1.61795715e+02, 1.59068680e+02, 1.50884979e+02, 1.52942490e+02, 1.42476913e+02, 2.11095535e+02, 1.05624649e+02, 1.25615479e+02, 7.27885513e+01, 7.67679214e+01, 1.36115494e+02, 8.63783188e+01, 1.37730530e+02, 1.12841789e+02, 1.05961395e+02, 8.56788864e+01, 8.83774796e+01, 1.26366760e+02, 1.27757767e+02, 1.03469460e+02, 8.34668427e+01, 1.77709045e+02, 1.36867310e+02, 1.75820801e+02, 1.35199936e+02, 9.17372894e+01, 7.80835876e+01, 9.74882889e+01, 8.12812805e+01, 1.22899048e+02, 1.42297699e+02, 8.35268326e+01, 1.12921280e+02, 1.08927025e+02, 8.22613678e+01, 7.75047607e+01, 8.14736710e+01, 7.02786789e+01, 9.76880646e+01, 7.13385162e+01, 1.22165314e+02, 1.07724510e+02, 8.50767365e+01, 1.37313751e+02, 1.17321457e+02, 9.60578003e+01, 1.10105019e+02, 1.01727005e+02, 9.07403412e+01, 1.20551483e+02, 1.01038513e+02, 9.01914825e+01, 9.37259979e+01, 1.04451355e+02, 1.45147675e+02, 1.47250900e+02, 1.58018936e+02, 1.07029449e+02, 1.15880966e+02, 1.68002930e+02, 1.48541733e+02, 1.20137177e+02, 1.72090530e+02, 8.42802963e+01, 1.31749298e+02, 1.84965729e+02, 1.34390289e+02, 1.42837006e+02, 7.98141861e+01, 1.58156311e+02, 1.20187271e+02, 1.75586090e+02, 1.50414490e+02, 1.29008972e+02, 1.48650055e+02, 1.23649025e+02, 1.05225212e+02, 1.75424347e+02, 1.82013000e+02, 1.58657608e+02, 1.94418732e+02, 1.75761475e+02, 1.33420303e+02, 1.94391342e+02, 1.87162567e+02, 1.27860992e+02, 1.59185211e+02, 1.00808121e+02, 2.42850296e+02, 2.26065384e+02, 1.82428452e+02, 2.79647400e+02, 1.79052795e+02, 9.88032532e+01, 1.67424255e+02, 1.29480011e+02, 1.26841064e+02, 2.15578629e+02, 9.50531006e+01, 1.56615829e+02, 1.26518188e+02, 1.59787201e+02, 1.79867950e+02, 1.05600693e+02, 1.55829834e+02, 1.91652420e+02, 2.08219025e+02, 1.79798492e+02, 1.43466965e+02, 7.80932465e+01, 1.04646973e+02, 6.06238251e+01, 9.41674194e+01, 1.33485870e+02, 7.48348083e+01, 1.15081406e+02, 9.28452759e+01, 1.49708862e+02, 1.41582611e+02, 6.56321869e+01, 9.12034302e+01, 1.67946548e+02, 1.43512848e+02, 1.39853622e+02, 1.41311249e+02, 6.84657135e+01, 1.12764755e+02, 7.98818207e+01, 1.07739471e+02, 1.31074677e+02, 1.60267166e+02, 1.44541840e+02, 1.86539856e+02, 1.15801994e+02, 7.67050171e+01, 7.21959534e+01, 7.40878601e+01, 8.11678925e+01, 6.55911407e+01, 4.07947731e+01, 4.99778595e+01, 8.13416595e+01, 6.78363571e+01, 1.35121552e+02, 1.15664574e+02, 3.08417664e+01, 5.45832520e+01, 9.09923401e+01, 1.27852539e+02, 6.40670166e+01, 7.37997589e+01, 6.91541824e+01, 8.69935989e+01, 6.61091385e+01, 8.57897034e+01, 6.11762466e+01, 7.08228836e+01, 8.09609985e+01, 8.72749329e+01, 9.58134155e+01, 1.19082230e+02, 6.81726913e+01, 5.52680054e+01, 9.76528015e+01, 7.72633209e+01, 1.52907257e+02, 1.45171600e+02, 1.52469955e+02, 1.61265869e+02, 1.34536774e+02, 1.29384918e+02, 1.46105255e+02, 1.38837997e+02, 1.92042572e+02, 1.68491959e+02, 1.88231674e+02, 1.17907745e+02, 1.29761948e+02, 1.31905228e+02, 1.12115181e+02, 9.84485779e+01, 1.41550903e+02, 1.44813507e+02, 1.46210022e+02, 1.32234650e+02, 1.08557159e+02, 7.98370972e+01, 9.18252640e+01, 8.19964142e+01, 1.26154770e+02, 1.21402100e+02, 8.03031082e+01, 1.04368370e+02, 1.09690948e+02, 1.02295837e+02, 8.56711960e+01, 8.35293808e+01], [ 53.79322  ,  46.849487 ,  50.01658  ,  43.344162 ,  37.13716  ,  33.988342 ,  41.17118  ,  51.8153   ,  57.431892 ,  49.724934 ,  60.311897 ,  43.873753 ,  50.405937 ,  57.525963 ,  43.48944  ,  53.815712 ,  39.61669  ,  38.48754  ,  49.558693 ,  47.284912 ,  45.468113 ,  41.461746 ,  48.969166 ,  44.570007 ,  55.872307 ,  54.807774 ,  56.032215 ,  57.391075 ,  50.480785 ,  43.072464 ,  43.13672  ,  35.44591  ,  47.24111  ,  41.44185  ,  43.844254 ,  47.054054 ,  47.068672 ,  59.335052 ,  53.256325 ,  57.349052 ,  49.030437 ,  49.732384 ,  48.851303 ,  49.563766 ,  48.095512 ,  34.040337 ,  39.317825 ,  31.277916 ,  57.596573 ,  66.575516 ,  48.901474 ,  60.941788 ,  63.081627 ,  48.488552 ,  58.157257 ,  48.498497 ,  40.458836 ,  47.940414 ,  44.3099   ,  52.29272  ,  45.971573 ,  47.712204 ,  51.053764 ,  56.186707 ,  41.204697 ,  40.844856 ,  49.370224 ,  44.643784 ,  38.773582 ,  41.508614 ,  41.47114  ,  40.921818 ,  51.261414 ,  51.376316 ,  45.824074 ,  51.790344 ,  43.65367  ,  42.62951  ,  50.787285 ,  47.19716  ,  45.35726  ,  44.667793 ,  42.34649  ,  35.835907 ,  36.194397 ,  35.50933  ,  34.957653 ,  37.39141  ,  39.232407 ,  34.634415 ,  46.206818 ,  46.303413 ,  45.229683 ,  38.40838  ,  61.04354  ,  53.18453  ,  53.2053   ,  51.770752 ,  52.994987 ,  50.928894 ,  55.0879   ,  54.13632  ,  52.594315 ,  56.57493  ,  56.490345 ,  51.936504 ,  58.954193 ,  50.365692 ,  45.557835 ,  49.38737  ,  41.96984  ,  43.52678  ,  44.49981  ,  41.997566 ,  54.630013 ,  44.05124  ,  52.593494 ,  46.17785  ,  51.25158  ,  47.076397 ,  53.32626  ,  37.165565 ,  40.67991  ,  29.499283 ,  51.249733 ,  54.27092  ,  45.01728  ,  54.716805 ,  46.163223 ,  48.196964 ,  47.504265 ,  50.026264 ,  44.501804 ,  46.882027 ,  50.16785  ,  57.142212 ,  42.463005 ,  44.574097 ,  47.505165 ,  45.826744 ,  41.171753 ,  52.528427 ,  40.717842 ,  46.334373 ,  56.255405 ,  55.046333 ,  55.211777 ,  50.128548 ,  53.51498  ,  55.129745 ,  50.090378 ,  55.26931  ,  44.137024 ,  45.941147 ,  43.029114 ,  46.890312 ,  49.20128  ,  49.341778 ,  49.829998 ,  48.943413 ,  46.200356 ,  49.912323 ,  45.467293 ,  57.21977  ,  51.48329  ,  48.64233  ,  54.90779  ,  43.8172   ,  65.94937  ,  68.513405 ,  56.698936 ,  53.183144 ,  50.045353 ,  43.43188  ,  37.28363  ,  43.992676 ,  41.46794  ,  50.633522 ,  32.79781  ,  37.36766  ,  53.83909  ,  56.270607 ,  58.56482  ,  60.363037 ,  40.008827 ,  51.958893 ,  48.56843  ,  50.904312 ,  55.409363 ,  53.138485 ,  51.96415  ,  49.331993 ,  53.13286  ,  45.723286 ,  56.50865  ,  52.304974 ,  47.640343 ,  52.822094 ,  57.901497 ,  57.812103 ,  56.082092 ,  58.238754 ,  53.274597 ,  57.450584 ,  58.62554  ,  52.500114 ,  59.350883 ,  54.96337  ,  52.698822 ,  45.956432 ,  50.247074 ,  48.776455 ,  52.800385 ,  53.185677 ,  51.097054 ,  52.810432 ,  48.659515 ,  48.753937 ,  47.92504  ,  45.333458 ,  49.799637 ,  50.65174  ,  49.261284 ,  82.31967  ,  53.10555  ,  51.894943 ,  52.390335 ,  50.192993 ,  58.24281  ,  60.98826  ,  49.914375 ,  62.503708 ,  48.30171  ,  49.771893 ,  51.07125  ,  61.11911  ,  44.520187 ,  46.837715 ,  53.007362 ,  52.27726  ,  54.881714 ,  44.25425  ,  65.49191  ,  58.425365 ,  63.952217 ,  98.04581  ,  70.61662  , 151.59105  ,  56.3188   ,  50.746117 ,  56.547993 ,  56.715088 , 101.05864  , 455.24582  ,  75.62772  , 275.6851   ,  44.20446  ,  51.89764  ,  47.15928  ,  51.316597 ,  46.42728  ,  40.853798 ,  43.57679  ,  40.409004 ,  36.569    ,  41.682133 ,  33.50997  ,  33.415825 ,  43.270203 ,  42.36078  ,  42.622902 ,  45.269318 ,  47.254333 ,  54.642044 ,  41.323975 ,  51.696945 ,  52.660034 ,  47.217762 ,  54.719925 ,  51.886757 ,  41.06523  ,  47.079212 ,  44.25608  ,  60.142365 ,  58.327713 ,  57.902462 ,  62.307823 ,  61.58187  ,  41.54336  ,  41.64704  ,  43.99766  ,  46.04934  ,  48.855976 ,  46.015038 ,  48.566765 ,  46.65972  ,  48.942745 ,  45.541763 ,  56.354027 ,  52.285095 ,  45.44938  ,  45.628963 ,  45.43261  ,  49.69929  ,  42.519287 ,  48.564346 ,  44.76171  ,  54.77318  ,  60.20752  ,  59.803185 ,  60.7377   ,  60.46031  ,  44.438255 ,  55.06583  ,  48.26481  ,  51.678036 ,  55.666245 ,  45.84256  ,  45.162956 ,  38.71084  ,  42.55114  ,  30.913128 ,  43.817345 ,  53.532898 ,  38.39017  ,  46.12872  ,  47.056835 ,  43.836792 ,  59.843784 ,  62.657326 ,  66.11879  ,  67.52611  ,  62.865948 ,  54.938244 ,  65.99606  ,  64.421906 ,  53.095272 ,  56.465874 ,  52.84627  ,  56.98803  ,  52.692635 ,  52.141487 ,  60.415253 ,  55.523834 ,  52.908867 ,  58.721313 ,  55.911163 ,  59.31424  ,  65.210526 ,  60.337135 ,  62.55994  ,  53.51667  ,  66.034546 ,  73.8503   ,  58.045036 ,  68.3945   ,  70.94849  ,  52.261818 ,  58.245403 ,  46.881718 ,  55.64463  ,  53.099384 ,  46.44038  ,  51.73938  ,  49.257828 ,  48.131874 ,  53.251587 ,  48.517715 ,  44.85121  ,  57.698227 ,  48.364784 ,  59.053776 ,  59.5809   ,  59.486282 ,  57.366943 ,  44.96795  ,  51.35637  ,  60.13166  ,  46.089806 ,  51.912643 ,  51.572647 ,  40.57579  ,  51.510933 ,  46.451576 ,  63.75267  ,  65.17051  ,  54.7788   ,  68.617325 ,  55.85401  ,  53.87204  ,  66.48195  ,  70.31033  ,  80.942215 ,  89.16524  , 101.176315 , 108.48021  ,  94.304245 , 164.82643  , 158.97156  , 172.30182  ,  52.5933   ,  55.56299  ,  52.119083 ,  51.39293  ,  55.735252 ,  48.725212 ,  54.60831  ,  56.680107 ,  98.01707  ,  42.572414 , 144.45474  ,  76.48355  ,  43.040756 ,  54.79049  ,  42.14372  ,  51.315903 , 136.56488  , 191.87596  , 298.39288  , 280.70062  , 153.08032  , 130.22797  , 163.35162  , 109.4483   , 447.26794  , 276.22797  , 477.98056  , 461.1053   , 216.86646  , 158.10233  , 278.04956  , 220.47205  , 136.55031  , 123.1824   , 131.76938  , 109.72746  ,  63.20443  ,  48.377007 ,  97.58583  ,  57.27116  , 174.10382  , 158.04291  , 192.74997  , 116.32318  ,  79.741745 ,  59.624718 ,  82.479546 ,  64.61981  ,  47.677715 ,  57.11251  ,  55.653954 ,  79.82718  ,  59.857246 ,  55.43671  ,  72.610306 ,  45.218655 ,  53.36451  ,  70.191    ,  51.768326 ,  58.46965  ,  60.739517 ,  50.687622 ,  55.08368  ,  50.41079  ,  44.405193 ,  51.201263 ,  38.347706 ,  43.74931  ,  50.304573 ,  39.835693 ,  46.39686  ,  42.118706 ,  39.38154  ,  34.93445  ,  40.421623 ,  33.761993 ,  41.724056 ,  38.596527 ,  35.10811  ,  36.674614 ,  59.94216  ,  61.757812 ,  63.59916  ,  61.092255 ,  60.904037 ,  55.2894   ,  61.41423  ,  61.449062 ,  61.02941  ,  57.338284 ,  64.68581  ,  60.64344  ,  57.233307 ,  54.890785 ,  50.25947  ,  51.766106 ,  47.655178 ,  40.65134  ,  46.451008 ,  40.333084 ,  36.15358  ,  38.041092 ,  38.326904 ,  42.87996  ,  50.146675 ,  39.969963 ,  52.25777  ,  44.90947  ,  32.117683 ,  36.512913 ,  36.230545 ,  34.754166 ,  51.7108   ,  50.470665 ,  54.799877 ,  54.084618 ,  40.11604  ,  50.911552 ,  44.303078 ,  53.0718   ,  47.52716  ,  44.047108 ,  46.107613 ,  46.259693 ,  39.66311  ,  46.44976  ,  42.123672 ,  44.767723 ,  49.372505 ,  49.529694 ,  52.50072  ,  51.50872  ,  50.596752 ,  49.277397 ,  49.30625  ,  45.31045  ,  52.350838 ,  50.144547 ,  47.541428 ,  44.431995 ,  43.330055 ,  42.59046  ,  43.75717  ,  43.878323 ,  30.026398 ,  41.635956 ,  28.43983  ,  35.133553 ,  40.966778 ,  44.751564 ,  41.081097 ,  43.57897  ,  38.336365 ,  37.332893 ,  49.410694 ,  48.436646 ,  46.319416 ,  43.75589  ,  48.875343 ,  46.966198 ,  48.397686 ,  47.559597 ,  47.864143 ,  54.645645 ,  45.08435  ,  44.4388   ,  54.40019  ,  46.435802 ,  42.803085 ,  52.136    ,  38.982826 ,  35.160004 ,  53.568413 ,  43.579975 ,  39.481995 ,  39.98693  ,  48.292274 ,  59.95098  ,  47.23587  ,  46.89811  ,  52.030914 ,  51.540512 ,  45.700943 ,  45.666763 ,  44.36959  ,  46.165752 ,  43.93945  ,  45.59532  ,  46.798958 ,  44.366882 ,  48.2605   ,  47.559776 ,  54.632668 ,  48.38383  ,  45.908096 ,  45.359764 ,  69.26374  ,  86.93235  ,  41.855324 ,  63.904037 ,  44.02107  ,  39.076378 ,  42.83184  ,  37.744843 ,  35.442963 ,  41.849434 ,  35.923286 ,  42.42065  ,  45.067154 ,  45.603844 ,  50.182083 ,  47.02269  ,  46.247566 ,  49.842407 ,  44.17968  ,  48.665947 ,  50.122864 ,  48.894444 ,  48.84903  ,  49.442703 ,  45.105568 ,  50.34703  ,  44.183666 ,  55.011784 ,  49.832565 ,  38.6407   ,  44.02674  ,  29.709488 ,  33.830536 ,  39.31878  ,  33.547386 ,  56.04622  ,  46.498104 ,  29.771511 ,  62.300163 ,  58.084885 ,  39.51722  ,  58.119938 ,  40.043983 ,  48.084423 ,  49.76512  ,  48.72676  ,  50.052334 ,  42.662796 ,  47.027603 ,  48.447456 ,  39.856667 ,  47.00312  ,  38.795017 ,  33.7108   ,  35.761086 ,  33.904976 ,  41.567207 ,  48.597298 ,  40.247223 ,  48.730637 ,  45.398224 ,  33.49204  ,  53.441734 ,  47.503613 ,  36.329903 ,  51.64111  ,  53.93568  ,  59.37066  ,  52.04178  ,  44.98452  ,  51.40126  ,  43.877228 ,  43.09879  ,  52.890484 ,  43.15871  ,  52.040817 ,  42.632515 ,  41.181168 ,  47.04103  ,  47.697742 ,  37.271297 ,  43.64424  ,  44.24446  ,  44.513836 ,  50.21395  ,  44.818718 ,  40.555187 ,  38.150597 ,  41.25982  ,  43.87318  ,  40.81784  ,  38.904255 ,  52.256073 ,  50.936836 ,  46.450542 ,  44.62439  ,  51.57036  ,  56.10117  ,  43.202614 ,  46.195206 ,  50.33249  ,  48.939873 ,  45.155678 ,  45.97621  ,  49.38446  ,  51.970074 ,  46.1127   ,  50.30184  ,  52.964905 ,  46.639336 ,  51.750618 ,  46.857628 ,  32.14327  ,  35.442703 ,  42.354324 ,  58.265488 ,  43.099995 ,  43.89454  ,  44.032223 ,  44.950356 ,  39.895596 ,  50.98379  ,  37.645493 ,  41.133575 ,  73.90623  ,  81.330284 ,  72.34819  ,  71.01854  ,  62.839813 ,  63.686935 ,  60.30968  ,  69.640564 ,  57.405205 ,  37.731834 ,  42.252735 ,  36.592167 ,  49.50071  ,  55.256668 ,  49.049362 ,  52.043762 ,  46.45038  ,  47.835384 ,  39.69285  ,  39.628426 ,  44.85772  ,  47.424828 ,  41.164886 ,  44.86007  ,  40.781357 ,  24.218351 ,  46.31053  ,  33.94258  ,  29.359615 ,  47.922897 ,  37.713264 ,  46.4178   ,  47.593674 ,  46.14177  ,  45.99185  ,  42.41765  ,  52.92478  ,  49.715347 ,  41.485138 ,  36.48903  ,  49.91107  ,  40.71142  ,  41.97397  ,  22.152142 ,  32.058933 ,  31.874352 ,  26.748848 ,  33.83281  , 280.30722  , 426.14224  ,  82.43856  , 123.50722  , 223.78543  , 223.7387   , 181.96736  , 115.29849  ,  55.454414 ,  61.43376  ,  45.486343 ,  57.3091   ,  83.74479  ,  75.95681  ,  59.25836  ,  63.95688  , 154.7099   , 113.23793  , 114.825294 , 105.26855  ,  80.908844 ,  54.14392  ,  51.819397 ,  46.379555 ,  76.752    ,  61.026756 ,  57.023643 ,  57.33246  ,  55.599297 ,  40.508957 ,  33.939953 ,  26.94374  ,  53.635178 ,  56.092247 ,  63.16092  ,  58.36767  ,  58.356777 ,  60.650368 ,  62.205555 ,  60.650906 ,  62.697548 ,  62.175236 ,  52.280693 ,  57.559074 ,  63.03345  ,  60.03308  ,  57.45453  ,  60.316406 ,  59.204475 ,  54.63536  ,  56.45726  ,  55.93508  ,  41.38755  ,  31.176508 ,  54.227097 ,  43.605995 ,  56.54606  ,  54.543144 ,  56.52119  ,  54.419533 ,  54.814056 ,  53.55475  ,  53.433014 ,  51.24292  ,  61.727905 ,  42.49389  ,  47.36116  ,  37.07341  ,  37.965874 ,  49.12359  ,  39.597294 ,  49.291435 ,  45.373634 ,  44.08856  ,  40.35388  ,  41.81449  ,  47.604115 ,  47.724    ,  43.951973 ,  39.813423 ,  56.086548 ,  49.624733 ,  55.645477 ,  49.186577 ,  41.095078 ,  38.445877 ,  42.0204   ,  38.881218 ,  47.38359  ,  51.151726 ,  39.752544 ,  45.954906 ,  44.54148  ,  39.47713  ,  38.809563 ,  39.531406 ,  37.2416   ,  44.024403 ,  37.124756 ,  48.139854 ,  46.08344  ,  41.108494 ,  51.668304 ,  47.816833 ,  42.82386  ,  45.93914  ,  43.65377  ,  41.853447 ,  48.067047 ,  44.190784 ,  41.926807 ,  42.737915 ,  44.332146 ,  52.920097 ,  52.95943  ,  55.413383 ,  45.43018  ,  47.14216  ,  59.54947  ,  54.853333 ,  47.81308  ,  57.340446 ,  40.406273 ,  48.522156 ,  62.501328 ,  59.093586 ,  54.712067 ,  56.07914  ,  56.507385 ,  47.803917 ,  58.56971  ,  53.883286 ,  47.74604  ,  51.187836 ,  48.357758 ,  45.15863  ,  56.84028  ,  58.986748 ,  53.776432 ,  60.5478   ,  57.72293  ,  50.043343 ,  60.854836 ,  57.942856 ,  48.428253 ,  53.498703 ,  44.19846  ,  66.17857  ,  63.77753  ,  57.869743 ,  71.34563  ,  56.066357 ,  44.15204  ,  55.305855 ,  48.602066 ,  48.798546 ,  62.33149  ,  43.465393 ,  53.80806  ,  49.272427 ,  53.170036 ,  57.071243 ,  42.489517 ,  52.322006 ,  59.309322 ,  61.09706  ,  57.04164  ,  49.813866 ,  38.063293 ,  43.15879  ,  34.362144 ,  41.774498 ,  48.753975 ,  37.863743 ,  46.50918  ,  42.05266  ,  50.983223 ,  50.934372 ,  35.372616 ,  40.937317 ,  55.561977 ,  51.676643 ,  49.96461  ,  50.602806 ,  35.65706  ,  45.456856 ,  39.230488 ,  45.126087 ,  48.587185 ,  53.505005 ,  51.39447  ,  58.597996 ,  46.19631  ,  38.727913 ,  38.2628   ,  38.219017 ,  39.787354 ,  36.251648 ,  28.658325 ,  31.67987  ,  40.405277 ,  36.36742  ,  50.124084 ,  46.201843 ,  26.258986 ,  32.342113 ,  41.03243  ,  49.22628  ,  36.117622 ,  37.810814 ,  36.994724 ,  40.54229  ,  37.50735  ,  47.762295 ,  34.935104 ,  37.707928 ,  39.984375 ,  40.97791  ,  43.11862  ,  47.50637  ,  37.426598 ,  34.177353 ,  43.787964 ,  39.298416 ,  53.308075 ,  51.714035 ,  52.482834 ,  53.5535   ,  49.904175 ,  49.001213 ,  51.647076 ,  50.53378  ,  58.638657 ,  54.210533 ,  58.587265 ,  46.69799  ,  48.657646 ,  49.081306 ,  45.91445  ,  43.185314 ,  51.01272  ,  51.57059  ,  52.00461  ,  49.357574 ,  45.363262 ,  39.50448  ,  42.18577  ,  40.816193 ,  48.680428 ,  48.160034 ,  40.97574  ,  45.47532  ,  45.638443 ,  45.420006 ,  41.823357 ,  41.318665 ])],
#[Out]#          dtype=(numpy.record, [('COUNT_RATE', '>f4', (1024,)), ('UNCERTAINTY', '>f4', (1024,))]))
Table.read(rosat5[1])
from astropy.table import Table
Table.read(rosat5[1])
#[Out]# <Table length=3072>
#[Out]#        COUNT_RATE             UNCERTAINTY      
#[Out]#    1e-6cts/s/arcmin^2      1e-6cts/s/arcmin^2  
#[Out]#      float32[1024]           float32[1024]     
#[Out]# ----------------------- -----------------------
#[Out]#  14.958866 .. 58.415848  19.011818 .. 28.460255
#[Out]#  62.673065 .. 60.186466   32.041504 .. 28.01587
#[Out]#  10.5905695 .. 94.80371  12.187382 .. 39.026306
#[Out]#  32.967834 .. 56.428974    21.9021 .. 28.817657
#[Out]#    72.75197 .. 87.31131  33.346313 .. 33.238495
#[Out]#   36.20376 .. 26.717072    24.28534 .. 21.23656
#[Out]#    82.89493 .. 88.49844  32.796776 .. 47.470535
#[Out]#    60.6135 .. 60.351604  28.448719 .. 26.880974
#[Out]#  38.209084 .. 183.72794   31.345615 .. 56.02453
#[Out]#  101.79762 .. 142.78143   40.50649 .. 48.845844
#[Out]#    99.59178 .. 80.51065   42.924076 .. 49.80906
#[Out]#   98.79138 .. 129.61674   40.677322 .. 56.16407
#[Out]#  35.059433 .. 47.050846   24.11045 .. 27.760788
#[Out]# 114.304756 .. 38.494015  55.952724 .. 36.094067
#[Out]#  112.58261 .. 117.62329  43.007744 .. 50.137115
#[Out]#   32.144665 .. 72.97708  24.171602 .. 37.571392
#[Out]#   141.15579 .. 91.37555  45.766117 .. 37.673832
#[Out]#    77.14352 .. 65.63304  28.782593 .. 26.605944
#[Out]#  114.881836 .. 82.07925   43.532364 .. 31.18754
#[Out]#   108.87489 .. 83.95593   40.38899 .. 30.690243
#[Out]#   112.71868 .. 86.67385  33.312813 .. 27.705826
#[Out]#                     ...                     ...
#[Out]#   76.23253 .. 14.997907  51.840633 .. 13.496582
#[Out]# 116.460594 .. 60.498974    51.14092 .. 40.21457
#[Out]#   70.26988 .. 84.630486   75.66973 .. 37.617374
#[Out]#   84.46112 .. 108.07146   76.45401 .. 40.363525
#[Out]#  34.791843 .. 53.556923  25.840935 .. 34.178246
#[Out]#   76.062515 .. 44.18604   35.61315 .. 30.095467
#[Out]#  160.69247 .. 188.87988 100.324745 .. 128.20787
#[Out]#  184.60493 .. 143.00357  118.64194 .. 87.377075
#[Out]#   68.41747 .. 41.578835     66.96457 .. 35.2046
#[Out]#  188.50446 .. 127.42395 124.601494 .. 52.250854
#[Out]#  -9.584647 .. 197.63092         0.0 .. 83.57472
#[Out]#  38.556202 .. 170.70604   37.384476 .. 78.87565
#[Out]#   211.48671 .. 210.8453   103.01068 .. 63.52465
#[Out]#  189.54306 .. 98.107864   84.24194 .. 48.275185
#[Out]# -6.4734406 .. 156.17572  2.6622245 .. 48.880753
#[Out]#   10.24295 .. 148.95036   16.85659 .. 47.719643
#[Out]#      83.439 .. 72.40684   35.617798 .. 33.66597
#[Out]#  106.09712 .. 115.04104   40.513523 .. 42.47626
#[Out]#   83.612114 .. 99.19212   44.541756 .. 42.27456
#[Out]#   155.01724 .. 135.8976    54.48588 .. 50.81183
#[Out]#  100.036606 .. 124.6382  39.600113 .. 48.066788
#[Out]#    163.3219 .. 83.52938   53.79322 .. 41.318665
rosat5[1]['COUNT_RATE']
rosat5[1].data['COUNT_RATE']
#[Out]# array([[ 14.958866 ,   4.506108 ,  31.887245 , ...,  46.68386  ,
#[Out]#          72.64604  ,  58.415848 ],
#[Out]#        [ 62.673065 ,  66.026405 ,  63.172585 , ...,  31.61976  ,
#[Out]#          54.86081  ,  60.186466 ],
#[Out]#        [ 10.5905695,   5.727805 ,  22.463112 , ..., 105.26994  ,
#[Out]#          34.33767  ,  94.80371  ],
#[Out]#        ...,
#[Out]#        [155.01724  , 216.68222  ,  80.588684 , ..., 108.199265 ,
#[Out]#         136.41353  , 135.8976   ],
#[Out]#        [100.036606 ,  67.71236  , 141.21446  , ..., 161.0857   ,
#[Out]#          93.71858  , 124.6382   ],
#[Out]#        [163.3219   , 123.849075 , 136.8566   , ..., 102.29584  ,
#[Out]#          85.671196 ,  83.52938  ]], dtype=float32)
pl.imshow(rosat5[1].data['COUNT_RATE'])
#[Out]# <matplotlib.image.AxesImage at 0x2b6b8286ed30>
pl.imshow(rosat5[1].data['COUNT_RATE'],
          norm=simple_norm(rosat5[1].data['COUNT_RATE'], min_percent=1,
                          max_percent=99, stretch='asinh'))
#[Out]# <matplotlib.image.AxesImage at 0x2b6b82571040>
rosat5[0].data
np.isnan(rosat5[1].data['COUNT_RATE']).sum()
#[Out]# 0
(rosat5[1].data['COUNT_RATE'] == 0).sum()
#[Out]# 2633
import os
from astropy.utils.data import download_file
from astropy.io import fits
from spectral_cube import SpectralCube
from astropy.visualization import simple_norm
import shutil
from reproject import reproject_from_healpix, reproject_to_healpix

from astropy.wcs import WCS
import matplotlib.pyplot as plt
from astropy.visualization.wcsaxes.frame import EllipticalFrame

from matplotlib.colors import rgb_to_hsv, hsv_to_rgb 

from astropy.convolution import convolve_fft, Gaussian2DKernel, Gaussian1DKernel
import healpy
def fix_nans(img):
    kernel = Gaussian2DKernel(2)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img

def fix_rosat_nans(tb):
    kernel = Gaussian1DKernel(1)
    sm = convolve_fft(tb, kernel)
    tb[np.isnan(tb)] = sm[np.isnan(tb)]
    return tb
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5 = fix_rosat_nans(np.where(img_rosat5==0, np.nan, img_rosat5))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
def fix_nans(img):
    kernel = Gaussian2DKernel(2)
    sm = convolve_fft(img, kernel)
    img[np.isnan(img)] = sm[np.isnan(img)]
    return img

def fix_rosat_nans(tb):
    kernel = Gaussian1DKernel(1)
    # tb is a 2D array, but we want to convolve in 1D
    sm = convolve_fft(tb, kernel.array[None, :])
    tb[np.isnan(tb)] = sm[np.isnan(tb)]
    return tb
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
img_rosat5 = fix_rosat_nans(np.where(img_rosat5==0, np.nan, img_rosat5))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
data_rosat = rosat5[1].data['COUNT_RATE']
data_rosat = fix_rosat_nans(np.where(data_rosat5==0, np.nan, data_rosat5))
img_rosat5, footprint = reproject_from_healpix(data_rosat, target_header)
#img_rosat5 = fix_rosat_nans(np.where(img_rosat5==0, np.nan, img_rosat5))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
data_rosat5 = rosat5[1].data['COUNT_RATE']
data_rosat5 = fix_rosat_nans(np.where(data_rosat5==0, np.nan, data_rosat5))
img_rosat5, footprint = reproject_from_healpix(data_rosat5, target_header)
#img_rosat5 = fix_rosat_nans(np.where(img_rosat5==0, np.nan, img_rosat5))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
rosat5[1].header['COORDSYS']
#[Out]# 'G'
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
data_rosat5 = rosat5[1].data['COUNT_RATE']
data_rosat5 = fix_rosat_nans(np.where(data_rosat5==0, np.nan, data_rosat5))
img_rosat5, footprint = reproject_from_healpix((data_rosat5,
                                                rosat5[1].header["COORDSYS"]),
                                               target_header)
#img_rosat5 = fix_rosat_nans(np.where(img_rosat5==0, np.nan, img_rosat5))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
#img_rosat5, footprint = reproject_from_healpix(fn_rosat5, target_header)
data_rosat5 = rosat5[1].data['COUNT_RATE']
data_rosat5 = fix_rosat_nans(np.where(data_rosat5==0, np.nan, data_rosat5))
img_rosat5, footprint = reproject_from_healpix((data_rosat5,
                                                rosat5[1].header["COORDSYS"]),
                                               target_header,
                                               nested = rosat5[1].header["ORDERING"].lower() == "nested"
                                              )
#img_rosat5 = fix_rosat_nans(np.where(img_rosat5==0, np.nan, img_rosat5))
plt.figure(figsize=(10,5), dpi=200)
ax = plt.subplot(1,1,1, projection=WCS(target_header),
                 frame_class=EllipticalFrame,
                )
ax.imshow(img_rosat5, norm=simple_norm(img_rosat5, min_percent=1, max_percent=99.99, stretch='log'))
#ax.coords.grid(color='white')
ax.coords['glat'].set_ticklabel(visible=False)
ax.coords['glon'].set_ticklabel(visible=False)
ax.coords['glat'].set_ticks_visible(False)
ax.coords['glon'].set_ticks_visible(False)
