├── __init__.py ├── rc_simulator ├── examples │ ├── __init__.py │ ├── sunAngles.py │ ├── hourSimulation.py │ ├── multiWall.py │ ├── calculateRadiation.py │ ├── annualSimulation_importRadiation.py │ └── annualSimulation.py ├── auxiliary │ ├── __init__.py │ ├── sunPositionReader.py │ ├── epwreader.py │ └── schedules_el_OFFICE.csv ├── __init__.py ├── tests │ ├── testExamples.py │ ├── testRadiation.py │ └── testRCmodel.py ├── emission_system.py ├── supply_system.py ├── radiation.py └── building_physics.py ├── requirements.txt ├── Vagrantfile ├── .gitignore ├── README.md ├── LICENSE ├── .github └── workflows │ └── python-app.yml └── bootstrap.sh /__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rc_simulator/examples/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rc_simulator/auxiliary/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rc_simulator/__init__.py: -------------------------------------------------------------------------------- 1 | # naming of package isn't pep8 2 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy 2 | setuptools 3 | cython 4 | matplotlib 5 | pandas 6 | -------------------------------------------------------------------------------- /Vagrantfile: -------------------------------------------------------------------------------- 1 | # -*- mode: ruby -*- 2 | # vi: set ft=ruby : 3 | 4 | 5 | Vagrant.configure("2") do |config| 6 | config.vm.box = "ubuntu/trusty64" 7 | config.vm.provision :shell, path: "bootstrap.sh" 8 | # apt-get update 9 | # apt-get install -y apache2 10 | # SHELL 11 | end 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | 55 | # Sphinx documentation 56 | docs/_build/ 57 | 58 | # PyBuilder 59 | target/ 60 | 61 | #Ipython Notebook 62 | .ipynb_checkpoints 63 | 64 | latex/ 65 | 66 | .DS_Store 67 | .idea/* 68 | .vagrant/* 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 5R1C Building Simulation Model 2 | 3 | ![Python application](https://github.com/architecture-building-systems/RC_BuildingSimulator/workflows/Python%20application/badge.svg) 4 | 5 | ## 10min Guide to your first simulation 6 | 7 | See the [10min guide in the wiki page](https://github.com/architecture-building-systems/RC_BuildingSimulator/wiki/10min-guide-to-your-first-simulation) 8 | 9 | ## Developer Material 10 | 11 | Can be found in [the wiki](https://github.com/architecture-building-systems/RC_BuildingSimulator/wiki) 12 | 13 | ## Academic Citations 14 | 15 | If citing this simulator in research, please use the following reference 16 | 17 | Jayathissa, Prageeth, et al. "Optimising building net energy demand with dynamic BIPV shading." Applied Energy 202 (2017): 726-735. 18 | 19 | ## References 20 | 21 | Madsen, Henrik, and Jan Holst. "Estimation of continuous-time models for the heat dynamics of a building." Energy and Buildings 22.1 (1995): 67-79. 22 | 23 | Bacher, Peder, and Henrik Madsen. "Identifying suitable models for the heat dynamics of buildings." Energy and Buildings 43.7 (2011): 1511-1522. 24 | 25 | Sonderegger, Robert. "Diagnostic tests determining the thermal response of a house." Lawrence Berkeley National Laboratory (2010). 26 | 27 | -------------------------------------------------------------------------------- /rc_simulator/tests/testExamples.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import unittest 4 | 5 | # Set root folder one level up, just for this example 6 | sys.path.insert(0, os.path.abspath( 7 | os.path.join(os.path.dirname(__file__), '..'))) 8 | 9 | 10 | class TestBuildingSim(unittest.TestCase): 11 | 12 | def test_annualSimulation(self): 13 | runfile = open(os.path.join('examples', 'annualSimulation.py')) 14 | exec(runfile.read()) 15 | runfile.close() 16 | 17 | def test_annualSimulation_importRadiation(self): 18 | runfile = open(os.path.join('examples', 'annualSimulation_importRadiation.py')) 19 | exec(runfile.read()) 20 | runfile.close() 21 | 22 | def test_calculateRadiation(self): 23 | runfile = open(os.path.join('examples', 'calculateRadiation.py')) 24 | exec(runfile.read()) 25 | runfile.close() 26 | 27 | def test_hourSimulation(self): 28 | runfile = open(os.path.join('examples', 'hourSimulation.py')) 29 | exec(runfile.read()) 30 | runfile.close() 31 | 32 | def test_sunAngles(self): 33 | runfile = open(os.path.join('examples', 'sunAngles.py')) 34 | exec(runfile.read()) 35 | runfile.close() 36 | 37 | 38 | if __name__ == '__main__': 39 | unittest.main() 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) ammended 2 | 3 | Copyright (c) 2016 Architecture and Building Systems 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | Any use of this software in research requires a reference back to the department 24 | of Architecture and Building Systems of the ETH Zürich -------------------------------------------------------------------------------- /rc_simulator/auxiliary/sunPositionReader.py: -------------------------------------------------------------------------------- 1 | """ 2 | =========================== 3 | SunPosition CSV file reader 4 | =========================== 5 | 6 | """ 7 | import pandas as pd 8 | 9 | __author__ = "Clayton Miller" 10 | __copyright__ = "Copyright 2014, Architecture and Building Systems - ETH Zurich" 11 | __credits__ = ["Clayton Miller", "Jimeno A. Fonseca"] 12 | __license__ = "MIT" 13 | __version__ = "0.1" 14 | __maintainer__ = "Daren Thomas" 15 | __email__ = "thomas@arch.ethz.ch" 16 | __status__ = "Production" 17 | 18 | 19 | def sunPositionReader(SunPosition_path): 20 | 21 | sun_labels = ['altitude', 'azimuth'] # 'HOY', 22 | # 23 | # result = pd.read_csv(SunPosition_path, skiprows=1, header=None, names=epw_labels).drop('datasource', axis=1) 24 | # result['dayofyear'] = pd.date_range('1/1/2010', periods=8760, freq='H').dayofyear 25 | # result['ratio_diffhout'] = result['difhorrad_Whm2']/result['glohorrad_Whm2'] 26 | 27 | result = pd.read_csv(SunPosition_path, skiprows=1, names=sun_labels) 28 | 29 | return result 30 | 31 | # def test_reader(): 32 | # 33 | # locator = cea.inputlocator.InputLocator(r'C:\reference-case\baseline') 34 | # # for the interface, the user should pick a file out of of those in ...DB/Weather/... 35 | # weather_path = locator.get_default_weather() 36 | # epw_reader(weather_path=weather_path) 37 | # 38 | # if __name__ == '__main__': 39 | # #test_reader() 40 | # epw_reader(weather_path=weather_path) 41 | -------------------------------------------------------------------------------- /rc_simulator/examples/sunAngles.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import pandas as pd 4 | import matplotlib.pyplot as plt 5 | import matplotlib 6 | 7 | # Set root folder one level up, just for this example 8 | mainPath = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 9 | sys.path.insert(0, mainPath) 10 | 11 | from radiation import Location 12 | 13 | matplotlib.style.use('ggplot') 14 | 15 | Zurich = Location(epwfile_path=os.path.join( 16 | mainPath, 'auxiliary', 'Zurich-Kloten_2013.epw')) 17 | 18 | 19 | Zurich.calc_sun_position(latitude_deg=47.480, longitude_deg=8.536, year=2015, hoy=3708) 20 | 21 | 22 | Azimuth = [] 23 | Altitude = [] 24 | Sunnyhoy = [] 25 | 26 | for hoy in range(8760): 27 | sun = Zurich.calc_sun_position( 28 | latitude_deg=47.480, longitude_deg=8.536, year=2015, hoy=hoy) 29 | Altitude.append(sun[0]) 30 | Azimuth.append(sun[1]) 31 | Sunnyhoy.append(hoy + 1) 32 | 33 | sunPosition = pd.read_csv(os.path.join( 34 | mainPath, 'auxiliary', 'SunPosition.csv'), skiprows=1) 35 | 36 | transSunPos = sunPosition.transpose() 37 | hoy_check = transSunPos.index.tolist() 38 | hoy_check = [float(ii) for ii in hoy_check] 39 | Azimuth_check = (180 - transSunPos[1]).tolist() 40 | 41 | Altitude_check = transSunPos[0].tolist() 42 | 43 | plt.style.use('ggplot') 44 | 45 | plt.plot(Sunnyhoy, Azimuth, hoy_check, Azimuth_check, 46 | Sunnyhoy, Altitude, hoy_check, Altitude_check) 47 | plt.legend(['Azimuth', 'Azimuth Check', 'Altitude', 'Altitude_check']) 48 | 49 | plt.show() 50 | -------------------------------------------------------------------------------- /.github/workflows/python-app.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | 4 | name: Python application 5 | 6 | on: 7 | push: 8 | branches: [ master ] 9 | pull_request: 10 | branches: [ master ] 11 | 12 | jobs: 13 | build: 14 | 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up Python 3.8 20 | uses: actions/setup-python@v2 21 | with: 22 | python-version: 3.8 23 | - name: Install dependencies 24 | run: | 25 | python -m pip install --upgrade pip 26 | pip install flake8 27 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 28 | - name: Lint with flake8 29 | run: | 30 | # stop the build if there are Python syntax errors or undefined names 31 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics 32 | # stop the build for other style errors but ignore module placement E402 33 | flake8 . --count --max-complexity=10 --max-line-length=127 --statistics --extend-ignore=E402 34 | # using --exit-zero to show warnings of all errors 35 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics 36 | - name: Test with unittests 37 | run: | 38 | python3 rc_simulator/tests/testRCmodel.py 39 | python3 rc_simulator/tests/testRadiation.py 40 | -------------------------------------------------------------------------------- /rc_simulator/auxiliary/epwreader.py: -------------------------------------------------------------------------------- 1 | """ 2 | Energyplus file reader 3 | 4 | File history and credits: 5 | C. Miller script development 10.08.14 6 | J. A. Fonseca adaptation for CEA tool 18.05.16 7 | 8 | """ 9 | import pandas as pd 10 | 11 | __author__ = "Clayton Miller" 12 | __copyright__ = "Copyright 2014, Architecture and Building Systems - ETH Zurich" 13 | __credits__ = ["Clayton Miller", "Jimeno A. Fonseca"] 14 | __license__ = "MIT" 15 | __version__ = "0.1" 16 | __maintainer__ = "Daren Thomas" 17 | __email__ = "thomas@arch.ethz.ch" 18 | __status__ = "Production" 19 | 20 | 21 | def epwreader(weather_path): 22 | 23 | epw_labels = ['year', 'month', 'day', 'hour', 'minute', 'datasource', 'drybulb_C', 'dewpoint_C', 'relhum_percent', 24 | 'atmos_Pa', 'exthorrad_Whm2', 'extdirrad_Whm2', 'horirsky_Whm2', 'glohorrad_Whm2', 25 | 'dirnorrad_Whm2', 'difhorrad_Whm2', 'glohorillum_lux', 'dirnorillum_lux', 'difhorillum_lux', 26 | 'zenlum_lux', 'winddir_deg', 'windspd_ms', 'totskycvr_tenths', 'opaqskycvr_tenths', 'visibility_km', 27 | 'ceiling_hgt_m', 'presweathobs', 'presweathcodes', 'precip_wtr_mm', 'aerosol_opt_thousandths', 28 | 'snowdepth_cm', 'days_last_snow', 'Albedo', 'liq_precip_depth_mm', 'liq_precip_rate_Hour'] 29 | 30 | result = pd.read_csv(weather_path, skiprows=8, header=None, 31 | names=epw_labels).drop('datasource', axis=1) 32 | result['dayofyear'] = pd.date_range( 33 | '1/1/2010', periods=8760, freq='H').dayofyear 34 | result['ratio_diffhout'] = result[ 35 | 'difhorrad_Whm2'] / result['glohorrad_Whm2'] 36 | 37 | return result 38 | -------------------------------------------------------------------------------- /rc_simulator/examples/hourSimulation.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | 4 | # Set root folder one level up, just for this example 5 | sys.path.insert(0, os.path.abspath( 6 | os.path.join(os.path.dirname(__file__), '..'))) 7 | 8 | from building_physics import Zone # Importing Zone Class 9 | 10 | # Example Inputs 11 | t_air = 10 12 | t_m_prev = 22 13 | internal_gains = 10 # Internal heat gains, in Watts 14 | # Solar heat gains after transmitting through the winow [Watts] 15 | solar_gains = 2000 16 | ill = 44000 # Illuminance after transmitting through the window [Lumens] 17 | occupancy = 0.1 # Occupancy for the timestep [people/hour/square_meter] 18 | 19 | 20 | # Initialise an instance of the Zone. Empty brackets take on the 21 | # default parameters. See ZonePhysics.py to see the default values 22 | Office = Zone() 23 | 24 | # Solve for Zone energy 25 | Office.solve_energy(internal_gains, solar_gains, t_air, t_m_prev) 26 | 27 | # Solve for Zone lighting 28 | Office.solve_lighting(ill, occupancy) 29 | 30 | print(Office.t_m) # Printing Room Temperature of the medium 31 | 32 | print(Office.lighting_demand) # Print Lighting Demand 33 | print(Office.energy_demand) # Print heating/cooling loads 34 | 35 | # Example of how to change the set point temperature after running a simulation 36 | Office.theta_int_h_set = 20.0 37 | 38 | # Solve again for the new set point temperature 39 | Office.solve_energy(internal_gains, solar_gains, t_air, t_m_prev) 40 | 41 | print(Office.floor_area) 42 | print(Office.room_vol) 43 | print(Office.total_internal_area) 44 | 45 | print(Office.t_m) # Print the new internal temperature 46 | 47 | # Print a boolean of whether there is a heating demand 48 | print(Office.has_heating_demand) 49 | -------------------------------------------------------------------------------- /bootstrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Generating locale, can be an issue on fresh DO servers 4 | export LANGUAGE=en_US.UTF-8 5 | export LANG=en_US.UTF-8 6 | export LC_ALL=en_US.UTF-8 7 | sudo locale-gen en_US.UTF-8 8 | sudo dpkg-reconfigure locales 9 | 10 | # Update and upgrade without requiring manual GRUB configuration 11 | # To make GRUB headless https://askubuntu.com/questions/146921/how-do-i-apt-get-y-dist-upgrade-without-a-grub-config-prompt 12 | # To not mess up encoding https://stackoverflow.com/questions/18471764/vagrant-provisioning-switches-character-encoding 13 | unset UCF_FORCE_CONFFOLD 14 | export UCF_FORCE_CONFFNEW=YES 15 | ucf --purge /boot/grub/menu.lst 16 | 17 | export DEBIAN_FRONTEND=noninteractive 18 | apt-get update 19 | # sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-confold" --force-yes -fuy dist-upgrade 20 | 21 | # Create swap space for installation of lxml https://stackoverflow.com/a/26762938 22 | sudo dd if=/dev/zero of=/swapfile bs=1024 count=524288 23 | sudo chmod 600 /swapfile 24 | sudo mkswap /swapfile 25 | sudo swapon /swapfile 26 | 27 | # Installation of foodcampus-specific packages 28 | sudo apt-get install -y libpq-dev python3-dev libjpeg-dev libjpeg8 zlib1g libfreetype6 29 | 30 | # Insall everything 31 | echo Downloading Pip... 32 | wget https://bootstrap.pypa.io/get-pip.py >/dev/null 2>&1 33 | python3 get-pip.py 34 | pip3 install virtualenvwrapper 35 | echo $PWD 36 | pip3 install -r /vagrant/requirements.txt 37 | 38 | 39 | # Pandas Fails to install with Pip3!!! Installation being annoying 40 | echo Installing Pandas with sudo apt get 41 | sudo apt-get install python3-pandas -y 42 | 43 | 44 | # Echo virtualenvironment things into bashrc, also for python3 compatibility 45 | echo " 46 | VIRTUALENVWRAPPER_PYTHON='/usr/bin/python3' 47 | export WORKON_HOME=/rc-simulator/.virtualenvs 48 | export PROJECT_HOME=/rc-simulator/ 49 | source /usr/local/bin/virtualenvwrapper.sh 50 | cd /rc-simulator/ 51 | workon rc_simulator 52 | " >> /home/vagrant/.bashrc 53 | 54 | # Unmount swap 55 | sudo swapoff -a 56 | sudo locale-gen en_US.UTF-8 57 | -------------------------------------------------------------------------------- /rc_simulator/examples/multiWall.py: -------------------------------------------------------------------------------- 1 | """ 2 | Exmaple code to answer question in Issue #42 3 | Is it possible for a room to define more than one outer surface (wall) 4 | """ 5 | import sys 6 | import os 7 | import numpy as np 8 | 9 | # Set root folder one level up, just for this example 10 | sys.path.insert(0, os.path.abspath( 11 | os.path.join(os.path.dirname(__file__), '..'))) 12 | 13 | from building_physics import Zone # Importing Zone Class 14 | 15 | # Example Inputs 16 | t_air = 10 17 | t_m_prev = 20 18 | internal_gains = 10 # Internal heat gains, in Watts 19 | # Solar heat gains after transmitting through the winow [Watts] 20 | solar_gains = 200 21 | ill = 4400 # Illuminance after transmitting through the window [Lumens] 22 | occupancy = 0.1 # Occupancy for the timestep [people/hour/square_meter] 23 | 24 | """ 25 | Note, if you don't have the same outside temperature of the varying walls, 26 | such as one wall connecting to a basement, then this can be approximated 27 | by modifying the u-value of that particular wall proportionately to the 28 | percentage damping of the temperature that surface is exposed to relative 29 | to the outer temperature 30 | """ 31 | 32 | # Define the areas of the outer surfaces 33 | roof_area = 10 # m2 34 | outer_wall_area = 40 # m2 35 | # Define the u values of the outer surfaces 36 | roof_u_value = 0.2 37 | outer_wall_u_value = 0.3 38 | 39 | walls_area = roof_area + outer_wall_area 40 | 41 | u_walls = (outer_wall_area * outer_wall_u_value + roof_area * roof_u_value)/walls_area 42 | 43 | print(u_walls) 44 | 45 | # Initialise an instance of the Zone. See ZonePhysics.py to see the default values 46 | Office = Zone(window_area=4.0, 47 | walls_area=walls_area, 48 | floor_area=35.0, 49 | room_vol=105, 50 | total_internal_area=142.0, 51 | lighting_load=11.7, 52 | lighting_control=300.0, 53 | lighting_utilisation_factor=0.45, 54 | lighting_maintenance_factor=0.9, 55 | u_walls=u_walls, 56 | u_windows=1.1, 57 | ach_vent=1.5, 58 | ach_infl=0.5, 59 | ventilation_efficiency=0.6, 60 | thermal_capacitance_per_floor_area=165000, 61 | t_set_heating=20.0, 62 | t_set_cooling=26.0, 63 | max_cooling_energy_per_floor_area=-np.inf, 64 | max_heating_energy_per_floor_area=np.inf,) 65 | 66 | # Solve for Zone energy 67 | Office.solve_energy(internal_gains, solar_gains, t_air, t_m_prev) 68 | 69 | # Solve for Zone lighting 70 | Office.solve_lighting(ill, occupancy) 71 | 72 | print(Office.t_m) # Printing Room Temperature of the medium 73 | 74 | print(Office.lighting_demand) # Print Lighting Demand 75 | print(Office.energy_demand) # Print heating/cooling loads 76 | 77 | # Example of how to change the set point temperature after running a simulation 78 | Office.theta_int_h_set = 20.0 79 | 80 | # Solve again for the new set point temperature 81 | Office.solve_energy(internal_gains, solar_gains, t_air, t_m_prev) 82 | 83 | print(Office.t_m) # Print the new internal temperature 84 | 85 | # Print a boolean of whether there is a heating demand 86 | print(Office.has_heating_demand) 87 | -------------------------------------------------------------------------------- /rc_simulator/examples/calculateRadiation.py: -------------------------------------------------------------------------------- 1 | """ 2 | Example of a radiation calculation 3 | """ 4 | __author__ = "Prageeth Jayathissa" 5 | __copyright__ = "Copyright 2016, Architecture and Building Systems - ETH Zurich" 6 | __credits__ = [] 7 | __license__ = "MIT" 8 | __version__ = "0.1" 9 | __maintainer__ = "Prageeth Jayathissa" 10 | __email__ = "jayathissa@arch.ethz.ch" 11 | __status__ = "Production" 12 | 13 | 14 | import sys 15 | import os 16 | 17 | # Set root folder one level up, just for this example 18 | mainPath = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 19 | sys.path.insert(0, mainPath) 20 | 21 | 22 | from radiation import Location 23 | from radiation import Window 24 | 25 | 26 | # Initialise the Location with a weather file 27 | Zurich = Location(epwfile_path=os.path.join( 28 | mainPath, 'auxiliary', 'Zurich-Kloten_2013.epw')) 29 | 30 | # Set the hour of the year for determination of the solar angles 31 | # 9:00 am 16 June 32 | hoy = 3993 33 | 34 | # Determine the solar azimuth and altitude angle 35 | Altitude, Azimuth = Zurich.calc_sun_position( 36 | latitude_deg=47.480, longitude_deg=8.536, year=2015, hoy=hoy) 37 | 38 | # Define Windows 39 | SouthWindow = Window(azimuth_tilt=0, alititude_tilt=90, glass_solar_transmittance=0.7, 40 | glass_light_transmittance=0.8, area=1) 41 | EastWindow = Window(azimuth_tilt=90, alititude_tilt=90, glass_solar_transmittance=0.7, 42 | glass_light_transmittance=0.8, area=1) 43 | WestWindow = Window(azimuth_tilt=180, alititude_tilt=90, glass_solar_transmittance=0.7, 44 | glass_light_transmittance=0.8, area=1) 45 | NorthWindow = Window(azimuth_tilt=270, alititude_tilt=90, glass_solar_transmittance=0.7, 46 | glass_light_transmittance=0.8, area=1) 47 | RoofAtrium = Window(azimuth_tilt=0, alititude_tilt=0, glass_solar_transmittance=0.7, 48 | glass_light_transmittance=0.8, area=1) 49 | 50 | # Loop through all windows 51 | for selected_window in [SouthWindow, EastWindow, WestWindow, NorthWindow, RoofAtrium]: 52 | selected_window.calc_solar_gains(sun_altitude=Altitude, sun_azimuth=Azimuth, 53 | normal_direct_radiation=Zurich.weather_data[ 54 | 'dirnorrad_Whm2'][hoy], 55 | horizontal_diffuse_radiation=Zurich.weather_data['difhorrad_Whm2'][hoy]) 56 | selected_window.calc_illuminance(sun_altitude=Altitude, sun_azimuth=Azimuth, 57 | normal_direct_illuminance=Zurich.weather_data[ 58 | 'dirnorillum_lux'][hoy], 59 | horizontal_diffuse_illuminance=Zurich.weather_data['difhorillum_lux'][hoy]) 60 | 61 | print(SouthWindow.incident_solar) 62 | print(EastWindow.incident_solar) 63 | print(WestWindow.incident_solar) 64 | print(NorthWindow.incident_solar) 65 | print(RoofAtrium.incident_solar) 66 | 67 | print(SouthWindow.solar_gains) 68 | print(EastWindow.solar_gains) 69 | print(WestWindow.solar_gains) 70 | print(NorthWindow.solar_gains) 71 | print(RoofAtrium.solar_gains) 72 | 73 | print(SouthWindow.transmitted_illuminance) 74 | print(EastWindow.transmitted_illuminance) 75 | print(WestWindow.transmitted_illuminance) 76 | print(NorthWindow.transmitted_illuminance) 77 | print(RoofAtrium.transmitted_illuminance) 78 | -------------------------------------------------------------------------------- /rc_simulator/examples/annualSimulation_importRadiation.py: -------------------------------------------------------------------------------- 1 | """ 2 | Main file to calculate the Zone loads 3 | EN-13970 4 | """ 5 | __author__ = "Prageeth Jayathissa" 6 | __copyright__ = "Copyright 2016, Architecture and Building Systems - ETH Zurich" 7 | __credits__ = [""] 8 | __license__ = "MIT" 9 | __version__ = "0.1" 10 | __maintainer__ = "Prageeth Jayathissa" 11 | __email__ = "jayathissa@arch.ethz.ch" 12 | __status__ = "Production" 13 | 14 | 15 | import sys 16 | import os 17 | import numpy as np 18 | import pandas as pd 19 | import matplotlib.pyplot as plt 20 | import matplotlib 21 | 22 | # Set root folder one level up, just for this example 23 | mainPath = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 24 | sys.path.insert(0, mainPath) 25 | 26 | 27 | from building_physics import Zone # Importing Zone Class 28 | from auxiliary import epwreader 29 | 30 | matplotlib.style.use('ggplot') 31 | 32 | 33 | ElectricityOut = [] 34 | HeatingDemand = [] # Energy required by the zone 35 | HeatingEnergy = [] # Energy required by the supply system to provide HeatingDemand 36 | CoolingDemand = [] # Energy surplus of the zone 37 | CoolingEnergy = [] # Energy required by the supply system to get rid of CoolingDemand 38 | IndoorAir = [] 39 | OutsideTemp = [] 40 | SolarGains = [] 41 | COP = [] 42 | 43 | 44 | gain_per_person = 100 # W per person 45 | appliance_gains = 14 # W per sqm 46 | max_occupancy = 3.0 47 | 48 | # Initialise an instance of the Zone. Empty brackets take on the 49 | # default parameters. See ZonePhysics.py to see the default values 50 | Office = Zone() 51 | 52 | # Read Weather Data 53 | weatherData = epwreader.epwreader(os.path.join( 54 | mainPath, 'auxiliary', 'Zurich-Kloten_2013.epw')) 55 | 56 | 57 | # Read Sunposition and Extract Azimuth and Alitutude Angles 58 | sunPosition = pd.read_csv(os.path.join( 59 | mainPath, 'auxiliary', 'SunPosition.csv'), skiprows=1) 60 | 61 | altitude = sunPosition.loc[0] 62 | azimuth = 180 - sunPosition.loc[1] 63 | 64 | 65 | # Read Occupancy Profile 66 | occupancyProfile = pd.read_csv(os.path.join( 67 | mainPath, 'auxiliary', 'schedules_el_OFFICE.csv')) 68 | 69 | t_m_prev = 20 70 | 71 | for hour in range(8760): 72 | # Occupancy for the time step 73 | occupancy = occupancyProfile.loc[hour, 'People'] * max_occupancy 74 | # Gains from occupancy and appliances 75 | internal_gains = occupancy * gain_per_person + \ 76 | appliance_gains * Office.floor_area 77 | 78 | # Outdoor Temperature 79 | t_out = weatherData['drybulb_C'][hour] 80 | 81 | if str(float(hour)) in altitude.index: 82 | # if solar gains land in front of the south window. Assume that window 83 | # is fully shaded from the back by the Zone 84 | if altitude[str(float(hour))] < 90.0 and azimuth[str(float(hour))] > -90 and azimuth[str(float(hour))] < 90: 85 | dir_solar_gains = weatherData['dirnorrad_Whm2'][hour] * np.cos(altitude[str( 86 | float(hour))] * np.pi / 180.0) * np.cos(azimuth[str(float(hour))] * np.pi / 180.0) 87 | else: 88 | dir_solar_gains = 0 89 | 90 | diffuse_solar_gains = weatherData['difhorrad_Whm2'][hour] / 2.0 91 | 92 | solar_gains = (dir_solar_gains + diffuse_solar_gains) * \ 93 | Office.window_area * 0.7 94 | 95 | else: 96 | # Sun is below the horizon (night time) 97 | solar_gains = 0 98 | 99 | Office.solve_energy( 100 | internal_gains=internal_gains, solar_gains=solar_gains, t_out=t_out, t_m_prev=t_m_prev) 101 | 102 | t_m_prev = Office.t_m_next 103 | 104 | HeatingDemand.append(Office.heating_demand) 105 | HeatingEnergy.append(Office.heating_energy) 106 | CoolingDemand.append(Office.cooling_demand) 107 | CoolingEnergy.append(Office.cooling_energy) 108 | ElectricityOut.append(Office.electricity_out) 109 | IndoorAir.append(Office.t_air) 110 | OutsideTemp.append(t_out) 111 | SolarGains.append(solar_gains) 112 | COP.append(Office.cop) 113 | 114 | annualResults = pd.DataFrame({ 115 | 'HeatingDemand': HeatingDemand, 116 | 'HeatingEnergy': HeatingEnergy, 117 | 'CoolingDemand': CoolingDemand, 118 | 'CoolingEnergy': CoolingEnergy, 119 | 'IndoorAir': IndoorAir, 120 | 'OutsideTemp': OutsideTemp, 121 | 'SolarGains': SolarGains, 122 | 'COP': COP 123 | }) 124 | 125 | # Commented for now due to virtual environment 126 | annualResults[['HeatingEnergy', 'CoolingEnergy']].plot() 127 | plt.show() 128 | -------------------------------------------------------------------------------- /rc_simulator/tests/testRadiation.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import unittest 4 | import pandas as pd 5 | import math 6 | 7 | # Set root folder one level up, just for this example 8 | mainPath = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 9 | sys.path.insert(0, mainPath) 10 | 11 | from radiation import Location 12 | from radiation import Window 13 | 14 | 15 | class TestRadiation(unittest.TestCase): 16 | 17 | def test_sunPosition(self): 18 | 19 | Zurich = Location(epwfile_path=os.path.join( 20 | mainPath, 'auxiliary', 'Zurich-Kloten_2013.epw')) 21 | 22 | Azimuth = [] 23 | Altitude = [] 24 | Sunnyhoy = [] 25 | 26 | for hoy in range(8760): 27 | angles = Zurich.calc_sun_position( 28 | latitude_deg=47.480, longitude_deg=8.536, year=2015, hoy=hoy) 29 | 30 | Altitude.append(angles[0]) 31 | Azimuth.append(angles[1]) 32 | Sunnyhoy.append(hoy + 1) 33 | 34 | sunPosition = pd.read_csv(os.path.join( 35 | mainPath, 'auxiliary', 'SunPosition.csv'), skiprows=1) 36 | 37 | transSunPos = sunPosition.transpose() 38 | hoy_check = transSunPos.index.tolist() 39 | hoy_check = [float(ii) for ii in hoy_check] 40 | Azimuth_check = (180 - transSunPos[1]).tolist() 41 | 42 | Altitude_check = transSunPos[0].tolist() 43 | 44 | self.assertEqual(round(Altitude[9], 1), round(Altitude_check[1], 1)) 45 | self.assertEqual(round(Azimuth[9], 1), round(Azimuth_check[1], 1)) 46 | 47 | self.assertEqual(round(Altitude[3993], 1), 48 | round(Altitude_check[2023], 1)) 49 | self.assertEqual(round(Azimuth[3993], 1), 50 | round(Azimuth_check[2023], 1)) 51 | 52 | # Azimuth Angles go out of sync with data, however the sin and cosine 53 | # must still match 54 | self.assertEqual(round(Altitude[4000], 1), 55 | round(Altitude_check[2030], 1)) 56 | self.assertEqual(round(math.cos(math.radians(Azimuth[4000])), 1), round( 57 | math.cos(math.radians(Azimuth_check[2030])), 1)) 58 | self.assertEqual(round(math.sin(math.radians(Azimuth[4000])), 1), round( 59 | math.sin(math.radians(Azimuth_check[2030])), 1)) 60 | 61 | def test_windowSolarGains(self): 62 | 63 | hoy = 3993 64 | # 9:00 am 16 June 2015 65 | 66 | Zurich = Location(epwfile_path=os.path.join( 67 | mainPath, 'auxiliary', 'Zurich-Kloten_2013.epw')) 68 | Altitude, Azimuth = Zurich.calc_sun_position( 69 | latitude_deg=47.480, longitude_deg=8.536, year=2015, hoy=hoy) 70 | 71 | SouthWindow = Window(azimuth_tilt=0, alititude_tilt=90, glass_solar_transmittance=0.7, 72 | glass_light_transmittance=0.8, area=1) 73 | EastWindow = Window(azimuth_tilt=90, alititude_tilt=90, glass_solar_transmittance=0.7, 74 | glass_light_transmittance=0.8, area=1) 75 | WestWindow = Window(azimuth_tilt=180, alititude_tilt=90, glass_solar_transmittance=0.7, 76 | glass_light_transmittance=0.8, area=1) 77 | NorthWindow = Window(azimuth_tilt=270, alititude_tilt=90, glass_solar_transmittance=0.7, 78 | glass_light_transmittance=0.8, area=1) 79 | RoofAtrium = Window(azimuth_tilt=0, alititude_tilt=0, glass_solar_transmittance=0.7, 80 | glass_light_transmittance=0.8, area=1) 81 | 82 | for selected_window in [SouthWindow, EastWindow, WestWindow, NorthWindow, RoofAtrium]: 83 | 84 | selected_window.calc_solar_gains(sun_altitude=Altitude, sun_azimuth=Azimuth, 85 | normal_direct_radiation=Zurich.weather_data[ 86 | 'dirnorrad_Whm2'][hoy], 87 | horizontal_diffuse_radiation=Zurich.weather_data['difhorrad_Whm2'][hoy]) 88 | 89 | selected_window.calc_illuminance(sun_altitude=Altitude, sun_azimuth=Azimuth, 90 | normal_direct_illuminance=Zurich.weather_data[ 91 | 'dirnorillum_lux'][hoy], 92 | horizontal_diffuse_illuminance=Zurich.weather_data['difhorillum_lux'][hoy]) 93 | 94 | self.assertEqual(round(SouthWindow.incident_solar, 2), 315.85) 95 | self.assertEqual(round(EastWindow.incident_solar, 2), 570.06) 96 | self.assertEqual(round(WestWindow.incident_solar, 2), 58.0) 97 | self.assertEqual(round(NorthWindow.incident_solar, 2), 58.0) 98 | self.assertEqual(round(RoofAtrium.incident_solar, 2), 855.87) 99 | 100 | self.assertEqual(round(SouthWindow.solar_gains, 2), 221.1) 101 | self.assertEqual(round(EastWindow.solar_gains, 2), 399.04) 102 | self.assertEqual(round(WestWindow.solar_gains, 2), 40.6) 103 | self.assertEqual(round(NorthWindow.solar_gains, 2), 40.6) 104 | self.assertEqual(round(RoofAtrium.solar_gains, 2), 599.11) 105 | 106 | self.assertEqual( 107 | round(SouthWindow.transmitted_illuminance, 2), 27330.46) 108 | self.assertEqual( 109 | round(EastWindow.transmitted_illuminance, 2), 47989.19) 110 | self.assertEqual(round(WestWindow.transmitted_illuminance, 2), 6375.2) 111 | self.assertEqual(round(NorthWindow.transmitted_illuminance, 2), 6375.2) 112 | self.assertEqual( 113 | round(RoofAtrium.transmitted_illuminance, 2), 72878.36) 114 | 115 | 116 | if __name__ == '__main__': 117 | unittest.main() 118 | -------------------------------------------------------------------------------- /rc_simulator/examples/annualSimulation.py: -------------------------------------------------------------------------------- 1 | """ 2 | Example of an Annual Simulation 3 | """ 4 | __author__ = "Prageeth Jayathissa" 5 | __copyright__ = "Copyright 2016, Architecture and Building Systems - ETH Zurich" 6 | __credits__ = [] 7 | __license__ = "MIT" 8 | __version__ = "0.1" 9 | __maintainer__ = "Prageeth Jayathissa" 10 | __email__ = "jayathissa@arch.ethz.ch" 11 | __status__ = "Production" 12 | 13 | import sys 14 | import os 15 | import numpy as np 16 | import pandas as pd 17 | import matplotlib.pyplot as plt 18 | import matplotlib 19 | 20 | # Set root folder one level up, just for this example 21 | mainPath = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) 22 | sys.path.insert(0, mainPath) 23 | 24 | 25 | from building_physics import Zone # Importing Zone Class 26 | import supply_system 27 | import emission_system 28 | from radiation import Location 29 | from radiation import Window 30 | 31 | matplotlib.style.use('ggplot') 32 | 33 | # Empty Lists for Storing Data to Plot 34 | ElectricityOut = [] 35 | HeatingDemand = [] # Energy required by the zone 36 | HeatingEnergy = [] # Energy required by the supply system to provide HeatingDemand 37 | CoolingDemand = [] # Energy surplus of the zone 38 | CoolingEnergy = [] # Energy required by the supply system to get rid of CoolingDemand 39 | IndoorAir = [] 40 | OutsideTemp = [] 41 | SolarGains = [] 42 | COP = [] 43 | 44 | 45 | # Initialise the Location with a weather file 46 | Zurich = Location(epwfile_path=os.path.join( 47 | mainPath, 'auxiliary', 'Zurich-Kloten_2013.epw')) 48 | 49 | # Initialise an instance of the Zone. Empty spaces take on the default 50 | # parameters. See ZonePhysics.py to see the default values 51 | Office = Zone(window_area=4.0, 52 | walls_area=11.0, 53 | floor_area=35.0, 54 | room_vol=105, 55 | total_internal_area=142.0, 56 | lighting_load=11.7, 57 | lighting_control=300.0, 58 | lighting_utilisation_factor=0.45, 59 | lighting_maintenance_factor=0.9, 60 | u_walls=0.2, 61 | u_windows=1.1, 62 | ach_vent=1.5, 63 | ach_infl=0.5, 64 | ventilation_efficiency=0.6, 65 | thermal_capacitance_per_floor_area=165000, 66 | t_set_heating=20.0, 67 | t_set_cooling=26.0, 68 | max_cooling_energy_per_floor_area=-np.inf, 69 | max_heating_energy_per_floor_area=np.inf, 70 | heating_supply_system=supply_system.OilBoilerMed, 71 | cooling_supply_system=supply_system.HeatPumpAir, 72 | heating_emission_system=emission_system.NewRadiators, 73 | cooling_emission_system=emission_system.AirConditioning,) 74 | 75 | # Define Windows 76 | SouthWindow = Window(azimuth_tilt=0, alititude_tilt=90, glass_solar_transmittance=0.7, 77 | glass_light_transmittance=0.8, area=4) 78 | 79 | # A catch statement to prevent future coding bugs when modifying window area 80 | if SouthWindow.area != Office.window_area: 81 | raise ValueError('Window area defined in radiation file doesnt match area defined in zone') 82 | 83 | 84 | # Define constants for the Zone 85 | gain_per_person = 100 # W per person 86 | appliance_gains = 14 # W per sqm 87 | max_occupancy = 3.0 88 | 89 | 90 | # Read Occupancy Profile 91 | occupancyProfile = pd.read_csv(os.path.join( 92 | mainPath, 'auxiliary', 'schedules_el_OFFICE.csv')) 93 | 94 | # Starting temperature of the builidng 95 | t_m_prev = 20 96 | 97 | # Loop through all 8760 hours of the year 98 | for hour in range(8760): 99 | 100 | # Occupancy for the time step 101 | occupancy = occupancyProfile.loc[hour, 'People'] * max_occupancy 102 | # Gains from occupancy and appliances 103 | internal_gains = occupancy * gain_per_person + \ 104 | appliance_gains * Office.floor_area 105 | 106 | # Extract the outdoor temperature in Zurich for that hour 107 | t_out = Zurich.weather_data['drybulb_C'][hour] 108 | 109 | Altitude, Azimuth = Zurich.calc_sun_position( 110 | latitude_deg=47.480, longitude_deg=8.536, year=2015, hoy=hour) 111 | 112 | SouthWindow.calc_solar_gains(sun_altitude=Altitude, sun_azimuth=Azimuth, 113 | normal_direct_radiation=Zurich.weather_data[ 114 | 'dirnorrad_Whm2'][hour], 115 | horizontal_diffuse_radiation=Zurich.weather_data['difhorrad_Whm2'][hour]) 116 | 117 | SouthWindow.calc_illuminance(sun_altitude=Altitude, sun_azimuth=Azimuth, 118 | normal_direct_illuminance=Zurich.weather_data[ 119 | 'dirnorillum_lux'][hour], 120 | horizontal_diffuse_illuminance=Zurich.weather_data['difhorillum_lux'][hour]) 121 | 122 | Office.solve_energy(internal_gains=internal_gains, 123 | solar_gains=SouthWindow.solar_gains, 124 | t_out=t_out, 125 | t_m_prev=t_m_prev) 126 | 127 | Office.solve_lighting( 128 | illuminance=SouthWindow.transmitted_illuminance, occupancy=occupancy) 129 | 130 | # Set the previous temperature for the next time step 131 | t_m_prev = Office.t_m_next 132 | 133 | HeatingDemand.append(Office.heating_demand) 134 | HeatingEnergy.append(Office.heating_energy) 135 | CoolingDemand.append(Office.cooling_demand) 136 | CoolingEnergy.append(Office.cooling_energy) 137 | ElectricityOut.append(Office.electricity_out) 138 | IndoorAir.append(Office.t_air) 139 | OutsideTemp.append(t_out) 140 | SolarGains.append(SouthWindow.solar_gains) 141 | COP.append(Office.cop) 142 | 143 | annualResults = pd.DataFrame({ 144 | 'HeatingDemand': HeatingDemand, 145 | 'HeatingEnergy': HeatingEnergy, 146 | 'CoolingDemand': CoolingDemand, 147 | 'CoolingEnergy': CoolingEnergy, 148 | 'IndoorAir': IndoorAir, 149 | 'OutsideTemp': OutsideTemp, 150 | 'SolarGains': SolarGains, 151 | 'COP': COP 152 | }) 153 | 154 | # Plotting has been commented out as it can not be conducted in a virtual environment over ssh 155 | annualResults[['HeatingEnergy', 'CoolingEnergy']].plot() 156 | plt.show() 157 | -------------------------------------------------------------------------------- /rc_simulator/emission_system.py: -------------------------------------------------------------------------------- 1 | """ 2 | Emission System Parameters for Heating and Cooling 3 | 4 | Model of different Emission systems. New Emission Systems can be introduced by adding new classes 5 | 6 | Note that this is currently in a very basic form, and has been created to allow for more complex expansion 7 | 8 | Supply temperatures are taken from the CEA Toolbox 9 | https://github.com/architecture-building-systems/CEAforArcGIS/blob/master/cea/databases/CH/Systems/emission_systems.xls 10 | 11 | TODO: Validation is still required 12 | TODO: Need to double check supply temperatures, waiting on reply from the CEA team 13 | 14 | """ 15 | 16 | __author__ = "Prageeth Jayathissa, Michael Fehr" 17 | __copyright__ = "Copyright 2016, Architecture and Building Systems - ETH Zurich" 18 | __credits__ = ["CEA Toolbox"] 19 | __license__ = "MIT" 20 | __version__ = "0.1" 21 | __maintainer__ = "Prageeth Jayathissa" 22 | __email__ = "p.jayathissa@gmail.com" 23 | __status__ = "production" 24 | 25 | 26 | class EmissionDirector: 27 | 28 | """ 29 | The director sets what Emission system is being used, and runs that set Emission system 30 | """ 31 | 32 | builder = None 33 | 34 | # Sets what Emission system is used 35 | def set_builder(self, builder): 36 | # self.__builder = builder 37 | self.builder = builder 38 | # Calcs the energy load of that system. This is the main() fu 39 | 40 | def calc_flows(self): 41 | 42 | # Director asks the builder to produce the system body. self.builder 43 | # is an instance of the class 44 | 45 | body = self.builder.heat_flows() 46 | 47 | return body 48 | 49 | 50 | class EmissionSystemBase: 51 | 52 | """ 53 | The base class in which systems are built from 54 | """ 55 | 56 | def __init__(self, energy_demand): 57 | 58 | self.energy_demand = energy_demand 59 | 60 | def heat_flows(self): pass 61 | """ 62 | determines the node where the heating/cooling system is active based on the system used 63 | Also determines the return and supply temperatures for the heating/cooling system 64 | """ 65 | 66 | 67 | class OldRadiators(EmissionSystemBase): 68 | """ 69 | Old building with radiators and high supply temperature 70 | Heat is emitted to the air node 71 | """ 72 | 73 | def heat_flows(self): 74 | flows = Flows() 75 | flows.phi_ia_plus = self.energy_demand 76 | flows.phi_st_plus = 0 77 | flows.phi_m_plus = 0 78 | 79 | flows.heating_supply_temperature = 65 80 | flows.heating_return_temperature = 45 81 | flows.cooling_supply_temperature = 12 82 | flows.cooling_return_temperature = 21 83 | 84 | return flows 85 | 86 | 87 | class NewRadiators(EmissionSystemBase): 88 | """ 89 | Newer building with radiators and medium supply temperature 90 | Heat is emitted to the air node 91 | """ 92 | 93 | def heat_flows(self): 94 | flows = Flows() 95 | flows.phi_ia_plus = self.energy_demand 96 | flows.phi_st_plus = 0 97 | flows.phi_m_plus = 0 98 | 99 | flows.heating_supply_temperature = 50 100 | flows.heating_return_temperature = 35 101 | flows.cooling_supply_temperature = 12 102 | flows.cooling_return_temperature = 21 103 | 104 | return flows 105 | 106 | 107 | class ChilledBeams(EmissionSystemBase): 108 | """ 109 | Chilled beams: identical to newRadiators but used for cooling 110 | Heat is emitted to the air node 111 | """ 112 | 113 | def heat_flows(self): 114 | flows = Flows() 115 | flows.phi_ia_plus = self.energy_demand 116 | flows.phi_st_plus = 0 117 | flows.phi_m_plus = 0 118 | 119 | flows.heating_supply_temperature = 50 120 | flows.heating_return_temperature = 35 121 | flows.cooling_supply_temperature = 18 122 | flows.cooling_return_temperature = 21 123 | 124 | return flows 125 | 126 | 127 | class AirConditioning(EmissionSystemBase): 128 | """ 129 | All heat is given to the air via an AC-unit. HC input via the air node as in the ISO 13790 Annex C. 130 | supplyTemperature as with new radiators (assumption) 131 | Heat is emitted to the air node 132 | """ 133 | 134 | def heat_flows(self): 135 | flows = Flows() 136 | flows.phi_ia_plus = self.energy_demand 137 | flows.phi_st_plus = 0 138 | flows.phi_m_plus = 0 139 | 140 | flows.heating_supply_temperature = 40 141 | flows.heating_return_temperature = 20 142 | flows.cooling_supply_temperature = 6 143 | flows.cooling_return_temperature = 15 144 | 145 | return flows 146 | 147 | 148 | class FloorHeating(EmissionSystemBase): 149 | """ 150 | All HC energy goes into the surface node, supplyTemperature low 151 | Heat is emitted to the surface node 152 | """ 153 | 154 | def heat_flows(self): 155 | flows = Flows() 156 | flows.phi_ia_plus = 0 157 | flows.phi_st_plus = self.energy_demand 158 | flows.phi_m_plus = 0 159 | 160 | flows.heating_supply_temperature = 40 161 | flows.heating_return_temperature = 5 162 | flows.cooling_supply_temperature = 12 163 | flows.cooling_return_temperature = 21 164 | 165 | return flows 166 | 167 | 168 | class TABS(EmissionSystemBase): 169 | """ 170 | Thermally activated Building systems. HC energy input into bulk node. Supply Temperature low. 171 | Heat is emitted to the thermal mass node 172 | """ 173 | 174 | def heat_flows(self): 175 | flows = Flows() 176 | flows.phi_ia_plus = 0 177 | flows.phi_st_plus = 0 178 | flows.phi_m_plus = self.energy_demand 179 | 180 | flows.heating_supply_temperature = 50 181 | flows.heating_return_temperature = 35 182 | flows.cooling_supply_temperature = 12 183 | flows.cooling_return_temperature = 21 184 | 185 | return flows 186 | 187 | 188 | class Flows: 189 | """ 190 | A base object to store output variables 191 | """ 192 | 193 | phi_ia_plus = float("nan") 194 | phi_m_plus = float("nan") 195 | phi_st_plus = float("nan") 196 | 197 | heating_supply_temperature = float("nan") 198 | cooling_supply_temperature = float("nan") 199 | # return temperatures 200 | -------------------------------------------------------------------------------- /rc_simulator/supply_system.py: -------------------------------------------------------------------------------- 1 | """ 2 | Supply System Parameters for Heating and Cooling 3 | 4 | Model of different Supply systems. New Supply Systems can be introduced by adding new classes 5 | 6 | TODO: Have a look at CEA calculation methodology 7 | https://github.com/architecture-building-systems/CEAforArcGIS/blob/master/cea/technologies/heatpumps.py 8 | """ 9 | 10 | __author__ = "Prageeth Jayathissa, Michael Fehr" 11 | __copyright__ = "Copyright 2016, Architecture and Building Systems - ETH Zurich" 12 | __credits__ = [""] 13 | __license__ = "MIT" 14 | __version__ = "0.1" 15 | __maintainer__ = "Prageeth Jayathissa" 16 | __email__ = "jayathissa@arch.ethz.ch" 17 | __status__ = "production" 18 | 19 | 20 | # This is one layer of abstraction too many, however it is kept for future explansion of the supply system 21 | class SupplyDirector: 22 | 23 | """ 24 | The director sets what Supply system is being used, and runs that set Supply system 25 | """ 26 | 27 | builder = None 28 | 29 | # Sets what building system is used 30 | def set_builder(self, builder): 31 | self.builder = builder 32 | 33 | # Calcs the energy load of that system. This is the main() function 34 | def calc_system(self): 35 | 36 | # Director asks the builder to produce the system body. self.builder 37 | # is an instance of the class 38 | 39 | body = self.builder.calc_loads() 40 | 41 | return body 42 | 43 | 44 | class SupplySystemBase: 45 | 46 | """ 47 | The base class in which Supply systems are built from 48 | """ 49 | 50 | def __init__(self, 51 | load, 52 | t_out, 53 | heating_supply_temperature, 54 | cooling_supply_temperature, 55 | has_heating_demand, 56 | has_cooling_demand): 57 | self.load = load # Energy Demand of the building at that time step 58 | self.t_out = t_out # Outdoor Air Temperature 59 | # Temperature required by the emission system 60 | self.heating_supply_temperature = heating_supply_temperature 61 | self.cooling_supply_temperature = cooling_supply_temperature 62 | self.has_heating_demand = has_heating_demand 63 | self.has_cooling_demand = has_cooling_demand 64 | 65 | def calc_loads(self): pass 66 | """ 67 | Caculates the electricty / fossil fuel consumption of the set supply system 68 | If the system also generates electricity, then this is stored as electricity_out 69 | """ 70 | 71 | 72 | class OilBoilerOld(SupplySystemBase): 73 | """ 74 | Old oil boiler with fuel efficiency of 63 percent (medium of range in report of semester project M. Fehr) 75 | No condensation, pilot light 76 | """ 77 | 78 | def calc_loads(self): 79 | system = SupplyOut() 80 | system.fossils_in = self.load / 0.63 81 | system.electricity_in = 0 82 | system.electricity_out = 0 83 | return system 84 | 85 | 86 | class OilBoilerMed(SupplySystemBase): 87 | """ 88 | Classic oil boiler with fuel efficiency of 82 percent (medium of range in report of semester project M. Fehr) 89 | No condensation, but better nozzles etc. 90 | """ 91 | 92 | def calc_loads(self): 93 | system = SupplyOut() 94 | system.fossils_in = self.load / 0.82 95 | system.electricity_in = 0 96 | system.electricity_out = 0 97 | return system 98 | 99 | 100 | class OilBoilerNew(SupplySystemBase): 101 | """ 102 | New oil boiler with fuel efficiency of 98 percent (value from report of semester project M. Fehr) 103 | Condensation boiler, latest generation 104 | """ 105 | 106 | def calc_loads(self): 107 | system = SupplyOut() 108 | system.fossils_in = self.load / 0.98 109 | system.electricity_in = 0 110 | system.electricity_out = 0 111 | return system 112 | 113 | 114 | class HeatPumpAir(SupplySystemBase): 115 | """ 116 | BETA Version 117 | Air-Water heat pump. Outside Temperature as reservoir temperature. 118 | COP based off regression analysis of manufacturers data 119 | Source: "A review of domestic heat pumps, Iain Staffell, Dan Brett, Nigel Brandonc and Adam Hawkes" 120 | http://pubs.rsc.org/en/content/articlepdf/2012/ee/c2ee22653g 121 | 122 | TODO: Validate this methodology 123 | """ 124 | 125 | def calc_loads(self): 126 | system = SupplyOut() 127 | 128 | if self.has_heating_demand: 129 | # determine the temperature difference, if negative, set to 0 130 | deltaT = max(0, self.heating_supply_temperature - self.t_out) 131 | # Eq (4) in Staggell et al. 132 | system.cop = 6.81 - 0.121 * deltaT + 0.000630 * deltaT**2 133 | system.electricity_in = self.load / system.cop 134 | 135 | elif self.has_cooling_demand: 136 | # determine the temperature difference, if negative, set to 0 137 | deltaT = max(0, self.t_out - self.cooling_supply_temperature) 138 | # Eq (4) in Staggell et al. 139 | system.cop = 6.81 - 0.121 * deltaT + 0.000630 * deltaT**2 140 | system.electricity_in = self.load / system.cop 141 | 142 | else: 143 | raise ValueError( 144 | 'HeatPumpAir called although there is no heating/cooling demand') 145 | 146 | system.fossils_in = 0 147 | system.electricity_out = 0 148 | return system 149 | 150 | 151 | class HeatPumpWater(SupplySystemBase): 152 | """" 153 | BETA Version 154 | Reservoir temperatures 7 degC (winter) and 12 degC (summer). 155 | Ground-Water heat pump. Outside Temperature as reservoir temperature. 156 | COP based off regression analysis of manufacturers data 157 | Source: "A review of domestic heat pumps, Iain Staffell, Dan Brett, Nigel Brandonc and Adam Hawkes" 158 | http://pubs.rsc.org/en/content/articlepdf/2012/ee/c2ee22653g 159 | 160 | # TODO: Validate this methodology 161 | """ 162 | 163 | def calc_loads(self): 164 | system = SupplyOut() 165 | if self.has_heating_demand: 166 | deltaT = max(0, self.heating_supply_temperature - 7.0) 167 | # Eq (4) in Staggell et al. 168 | system.cop = 8.77 - 0.150 * deltaT + 0.000734 * deltaT**2 169 | system.electricity_in = self.load / system.cop 170 | 171 | elif self.has_cooling_demand: 172 | deltaT = max(0, 12.0 - self.cooling_supply_temperature) 173 | # Eq (4) in Staggell et al. 174 | system.cop = 8.77 - 0.150 * deltaT + 0.000734 * deltaT**2 175 | system.electricity_in = self.load / system.cop 176 | 177 | system.fossils_in = 0 178 | system.electricity_out = 0 179 | return system 180 | 181 | 182 | class ElectricHeating(SupplySystemBase): 183 | """ 184 | Straight forward electric heating. 100 percent conversion to heat. 185 | """ 186 | 187 | def calc_loads(self): 188 | system = SupplyOut() 189 | system.electricity_in = self.load 190 | system.fossils_in = 0 191 | system.electricity_out = 0 192 | return system 193 | 194 | 195 | class CHP(SupplySystemBase): 196 | """ 197 | Combined heat and power unit with 60 percent thermal and 33 percent 198 | electrical fuel conversion. 93 percent overall 199 | """ 200 | 201 | def calc_loads(self): 202 | system = SupplyOut() 203 | system.fossils_in = self.load / 0.6 204 | system.electricity_in = 0 205 | system.electricity_out = system.fossils_in * 0.33 206 | return system 207 | 208 | 209 | class DirectHeater(SupplySystemBase): 210 | """ 211 | Created by PJ to check accuracy against previous simulation 212 | """ 213 | 214 | def calc_loads(self): 215 | system = SupplyOut() 216 | system.electricity_in = self.load 217 | system.fossils_in = 0 218 | system.electricity_out = 0 219 | return system 220 | 221 | 222 | class DirectCooler(SupplySystemBase): 223 | """ 224 | Created by PJ to check accuracy against previous simulation 225 | """ 226 | 227 | def calc_loads(self): 228 | system = SupplyOut() 229 | system.electricity_in = self.load 230 | system.fossils_in = 0 231 | system.electricity_out = 0 232 | return system 233 | 234 | 235 | class SupplyOut: 236 | """ 237 | The System class which is used to output the final results 238 | """ 239 | fossils_in = float("nan") 240 | electricity_in = float("nan") 241 | electricity_out = float("nan") 242 | cop = float("nan") 243 | -------------------------------------------------------------------------------- /rc_simulator/radiation.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | Tool to Evaluate Radiation incident on a surface of a set angle 4 | 5 | """ 6 | 7 | import pandas as pd 8 | import math 9 | import datetime 10 | 11 | 12 | __authors__ = "Prageeth Jayathissa" 13 | __copyright__ = "Copyright 2016, Architecture and Building Systems - ETH Zurich" 14 | __credits__ = ["pysolar, Quaschning Volker, Rolf Hanitsch, Linus Walker"] 15 | __license__ = "MIT" 16 | __version__ = "0.1" 17 | __maintainer__ = "Prageeth Jayathissa" 18 | __email__ = "p.jayathissa@gmail.com" 19 | __status__ = "production" 20 | 21 | 22 | class Location(object): 23 | """Set the Location of the Simulation with an Energy Plus Weather File""" 24 | 25 | def __init__(self, epwfile_path): 26 | 27 | # Set EPW Labels and import epw file 28 | epw_labels = ['year', 'month', 'day', 'hour', 'minute', 'datasource', 'drybulb_C', 'dewpoint_C', 'relhum_percent', 29 | 'atmos_Pa', 'exthorrad_Whm2', 'extdirrad_Whm2', 'horirsky_Whm2', 'glohorrad_Whm2', 30 | 'dirnorrad_Whm2', 'difhorrad_Whm2', 'glohorillum_lux', 'dirnorillum_lux', 'difhorillum_lux', 31 | 'zenlum_lux', 'winddir_deg', 'windspd_ms', 'totskycvr_tenths', 'opaqskycvr_tenths', 'visibility_km', 32 | 'ceiling_hgt_m', 'presweathobs', 'presweathcodes', 'precip_wtr_mm', 'aerosol_opt_thousandths', 33 | 'snowdepth_cm', 'days_last_snow', 'Albedo', 'liq_precip_depth_mm', 'liq_precip_rate_Hour'] 34 | 35 | # Import EPW file 36 | self.weather_data = pd.read_csv( 37 | epwfile_path, skiprows=8, header=None, names=epw_labels).drop('datasource', axis=1) 38 | 39 | def calc_sun_position(self, latitude_deg, longitude_deg, year, hoy): 40 | """ 41 | Calculates the Sun Position for a specific hour and location 42 | 43 | :param latitude_deg: Geographical Latitude in Degrees 44 | :type latitude_deg: float 45 | :param longitude_deg: Geographical Longitude in Degrees 46 | :type longitude_deg: float 47 | :param year: year 48 | :type year: int 49 | :param hoy: Hour of the year from the start. The first hour of January is 1 50 | :type hoy: int 51 | :return: altitude, azimuth: Sun position in altitude and azimuth degrees [degrees] 52 | :rtype: tuple 53 | """ 54 | 55 | # Convert to Radians 56 | latitude_rad = math.radians(latitude_deg) 57 | # longitude_rad = math.radians(longitude_deg) # Note: this is never used 58 | 59 | # Set the date in UTC based off the hour of year and the year itself 60 | start_of_year = datetime.datetime(year, 1, 1, 0, 0, 0, 0) 61 | utc_datetime = start_of_year + datetime.timedelta(hours=hoy) 62 | 63 | # Angular distance of the sun north or south of the earths equator 64 | # Determine the day of the year. 65 | day_of_year = utc_datetime.timetuple().tm_yday 66 | 67 | # Calculate the declination angle: The variation due to the earths tilt 68 | # http://www.pveducation.org/pvcdrom/properties-of-sunlight/declination-angle 69 | declination_rad = math.radians( 70 | 23.45 * math.sin((2 * math.pi / 365.0) * (day_of_year - 81))) 71 | 72 | # Normalise the day to 2*pi 73 | # There is some reason as to why it is 364 and not 365.26 74 | angle_of_day = (day_of_year - 81) * (2 * math.pi / 364) 75 | 76 | # The deviation between local standard time and true solar time 77 | equation_of_time = (9.87 * math.sin(2 * angle_of_day)) - \ 78 | (7.53 * math.cos(angle_of_day)) - (1.5 * math.sin(angle_of_day)) 79 | 80 | # True Solar Time 81 | solar_time = ((utc_datetime.hour * 60) + utc_datetime.minute + 82 | (4 * longitude_deg) + equation_of_time) / 60.0 83 | 84 | # Angle between the local longitude and longitude where the sun is at 85 | # higher altitude 86 | hour_angle_rad = math.radians(15 * (12 - solar_time)) 87 | 88 | # Altitude Position of the Sun in Radians 89 | altitude_rad = math.asin(math.cos(latitude_rad) * math.cos(declination_rad) * math.cos(hour_angle_rad) + 90 | math.sin(latitude_rad) * math.sin(declination_rad)) 91 | 92 | # Azimuth Position fo the sun in radians 93 | azimuth_rad = math.asin( 94 | math.cos(declination_rad) * math.sin(hour_angle_rad) / math.cos(altitude_rad)) 95 | 96 | # I don't really know what this code does, it has been imported from 97 | # PySolar 98 | if(math.cos(hour_angle_rad) >= (math.tan(declination_rad) / math.tan(latitude_rad))): 99 | return math.degrees(altitude_rad), math.degrees(azimuth_rad) 100 | else: 101 | return math.degrees(altitude_rad), (180 - math.degrees(azimuth_rad)) 102 | 103 | 104 | class Window(object): 105 | """docstring for Window""" 106 | 107 | def __init__(self, azimuth_tilt, alititude_tilt=90, glass_solar_transmittance=0.7, 108 | glass_light_transmittance=0.8, area=1): 109 | 110 | self.alititude_tilt_rad = math.radians(alititude_tilt) 111 | self.azimuth_tilt_rad = math.radians(azimuth_tilt) 112 | self.glass_solar_transmittance = glass_solar_transmittance 113 | self.glass_light_transmittance = glass_light_transmittance 114 | self.area = area 115 | 116 | def calc_solar_gains(self, sun_altitude, sun_azimuth, normal_direct_radiation, horizontal_diffuse_radiation): 117 | """ 118 | Calculates the Solar Gains in the building zone through the set Window 119 | 120 | :param sun_altitude: Altitude Angle of the Sun in Degrees 121 | :type sun_altitude: float 122 | :param sun_azimuth: Azimuth angle of the sun in degrees 123 | :type sun_azimuth: float 124 | :param normal_direct_radiation: Normal Direct Radiation from weather file 125 | :type normal_direct_radiation: float 126 | :param horizontal_diffuse_radiation: Horizontal Diffuse Radiation from weather file 127 | :type horizontal_diffuse_radiation: float 128 | :return: self.incident_solar, Incident Solar Radiation on window 129 | :return: self.solar_gains - Solar gains in building after transmitting through the window 130 | :rtype: float 131 | """ 132 | 133 | direct_factor = self.calc_direct_solar_factor(sun_altitude, sun_azimuth,) 134 | diffuse_factor = self.calc_diffuse_solar_factor() 135 | 136 | direct_solar = direct_factor * normal_direct_radiation 137 | diffuse_solar = horizontal_diffuse_radiation * diffuse_factor 138 | self.incident_solar = (direct_solar + diffuse_solar) * self.area 139 | 140 | self.solar_gains = self.incident_solar * self.glass_solar_transmittance 141 | 142 | def calc_illuminance(self, sun_altitude, sun_azimuth, normal_direct_illuminance, horizontal_diffuse_illuminance): 143 | """ 144 | Calculates the Illuminance in the building zone through the set Window 145 | 146 | :param sun_altitude: Altitude Angle of the Sun in Degrees 147 | :type sun_altitude: float 148 | :param sun_azimuth: Azimuth angle of the sun in degrees 149 | :type sun_azimuth: float 150 | :param normal_direct_illuminance: Normal Direct Illuminance from weather file [Lx] 151 | :type normal_direct_illuminance: float 152 | :param horizontal_diffuse_illuminance: Horizontal Diffuse Illuminance from weather file [Lx] 153 | :type horizontal_diffuse_illuminance: float 154 | :return: self.incident_illuminance, Incident Illuminance on window [Lumens] 155 | :return: self.transmitted_illuminance - Illuminance in building after transmitting through the window [Lumens] 156 | :rtype: float 157 | """ 158 | 159 | direct_factor = self.calc_direct_solar_factor(sun_altitude, sun_azimuth,) 160 | diffuse_factor = self.calc_diffuse_solar_factor() 161 | 162 | direct_illuminance = direct_factor * normal_direct_illuminance 163 | diffuse_illuminance = diffuse_factor * horizontal_diffuse_illuminance 164 | 165 | self.incident_illuminance = ( 166 | direct_illuminance + diffuse_illuminance) * self.area 167 | self.transmitted_illuminance = self.incident_illuminance * \ 168 | self.glass_light_transmittance 169 | 170 | def calc_direct_solar_factor(self, sun_altitude, sun_azimuth): 171 | """ 172 | Calculates the cosine of the angle of incidence on the window 173 | """ 174 | sun_altitude_rad = math.radians(sun_altitude) 175 | sun_azimuth_rad = math.radians(sun_azimuth) 176 | 177 | """ 178 | Proportion of the radiation incident on the window (cos of the incident ray) 179 | ref:Quaschning, Volker, and Rolf Hanitsch. "Shade calculations in photovoltaic systems." 180 | ISES Solar World Conference, Harare. 1995. 181 | """ 182 | direct_factor = math.cos(sun_altitude_rad) * math.sin(self.alititude_tilt_rad) * \ 183 | math.cos(sun_azimuth_rad - self.azimuth_tilt_rad) + \ 184 | math.sin(sun_altitude_rad) * math.cos(self.alititude_tilt_rad) 185 | 186 | # If the sun is in front of the window surface 187 | if(math.degrees(math.acos(direct_factor)) > 90): 188 | direct_factor = 0 189 | 190 | else: 191 | pass 192 | 193 | return direct_factor 194 | 195 | def calc_diffuse_solar_factor(self): 196 | """Calculates the proportion of diffuse radiation""" 197 | # Proportion of incident light on the window surface 198 | return (1 + math.cos(self.alititude_tilt_rad)) / 2 199 | 200 | 201 | if __name__ == '__main__': 202 | pass 203 | -------------------------------------------------------------------------------- /rc_simulator/building_physics.py: -------------------------------------------------------------------------------- 1 | """ 2 | Physics Required to calculate sensible space heating and space cooling loads, and space lighting loads 3 | EN-13970 4 | 5 | The equations presented here is this code are derived from ISO 13790 Annex C, 6 | Methods are listed in order of apperance in the Annex 7 | 8 | Daylighting is based on methods in The Environmental Science Handbook, S V Szokolay 9 | 10 | HOW TO USE 11 | 12 | :: 13 | 14 | from buildingPhysics import Zone #Importing Zone Class 15 | office = Zone() #Set an instance of the class 16 | office.solve_energy(internal_gains, solar_gains, t_out, t_m_prev) #Solve for Heating 17 | office.solve_lighting(illumination, occupancy) #Solve for Lighting 18 | 19 | VARIABLE DEFINITION 20 | internal_gains: Internal Heat Gains [W] 21 | solar_gains: Solar Heat Gains after transmitting through the window [W] 22 | t_out: Outdoor air temperature [C] 23 | t_m_prev: Thermal mass temperature from the previous time step 24 | ill: Illuminance transmitting through the window [lumen] 25 | occupancy: Occupancy [people] 26 | 27 | t_m_next: Medium temperature of the next time step [C] 28 | t_m: Some weird average between the previous and current time-step of the medium [C] #TODO: Check this 29 | 30 | Inputs to the 5R1C model: 31 | c_m: Thermal Capacitance of the medium [J/K] 32 | h_tr_is: Heat transfer coefficient between the air and the inside surface [W/K] 33 | h_tr_w: Heat transfer from the outside through windows, doors [W/K] 34 | H_tr_ms: Heat transfer coefficient between the internal surface temperature and the medium [W/K] 35 | h_tr_em: Heat conductance from the outside through opaque elements [W/K] 36 | h_ve_adj: Ventilation heat transmission coefficient [W/K] 37 | 38 | phi_m_tot: see formula for the calculation, eq C.5 in standard [W] 39 | phi_m: Combination of internal and solar gains directly to the medium [W] 40 | phi_st: combination of internal and solar gains directly to the internal surface [W] 41 | phi_ia: combination of internal and solar gains to the air [W] 42 | energy_demand: Heating and Cooling of the Supply air [W] 43 | 44 | h_tr_1: combined heat conductance, see function for definition [W/K] 45 | h_tr_2: combined heat conductance, see function for definition [W/K] 46 | h_tr_3: combined heat conductance, see function for definition [W/K] 47 | 48 | INPUT PARAMETER DEFINITION 49 | window_area: Area of the Glazed Surface in contact with the outside [m2] 50 | walls_area: Area of all envelope surfaces, including windows in contact with the outside 51 | floor_area : floor area of zone [m2] 52 | room_vol: volume of interior zone [m3] 53 | total_internal_area: area of all surfaces facing the room. A_t [m2] 54 | lighting_load: Lighting Load [W/m2] 55 | lighting_control: Lux threshold at which the lights turn on [Lx] 56 | u_walls: U value of opaque surfaces [W/m2K] 57 | u_windows: U value of glazed surfaces [W/m2K] 58 | ach_vent: Air changes per hour through ventilation [Air Changes Per Hour] 59 | ach_infl: Air changes per hour through infiltration [Air Changes Per Hour] 60 | ventilation_efficiency: The efficiency of the heat recovery system for ventilation. Set to 0 if there is no heat 61 | recovery [] 62 | thermal_capacitance_per_floor_area: Thermal capacitance of the room per floor area [J/m2K] 63 | t_set_heating : Thermal heating set point [C] 64 | t_set_cooling: Thermal cooling set point [C] 65 | max_cooling_energy_per_floor_area: Maximum cooling load. Set to -np.inf for unrestricted cooling [C] 66 | max_heating_energy_per_floor_area: Maximum heating load per floor area. Set to no.inf for unrestricted heating [C] 67 | heating_supply_system: The type of heating system. Choices are DirectHeater, ResistiveHeater, HeatPumpHeater. 68 | Direct heater has no changes to the heating demand load, a resistive heater takes an efficiency into account, 69 | HeatPumpHeatercalculates a COP based on the outdoor and system supply temperature 70 | cooling_supply_system: The type of cooling system. Choices are DirectCooler HeatPumpCooler. 71 | DirectCooler has no changes to the cooling demand load, 72 | HeatPumpCooler calculates a COP based on the outdoor and system supply temperature 73 | heating_emission_system: How the heat is distributed to the building 74 | cooling_emission_system: How the cooling energy is distributed to the building 75 | 76 | """ 77 | 78 | import supply_system 79 | import emission_system 80 | 81 | __authors__ = "Prageeth Jayathissa" 82 | __copyright__ = "Copyright 2016, Architecture and Building Systems - ETH Zurich" 83 | __credits__ = ["Gabriel Happle, Justin Zarb, Michael Fehr"] 84 | __license__ = "MIT" 85 | __version__ = "0.1" 86 | __maintainer__ = "Prageeth Jayathissa" 87 | __email__ = "p.jayathissa@gmail.com" 88 | __status__ = "production" 89 | 90 | 91 | class Zone(object): 92 | '''Sets the parameters of the zone. ''' 93 | 94 | def __init__(self, 95 | window_area=4.0, 96 | walls_area=11.0, 97 | floor_area=35.0, 98 | room_vol=105, 99 | total_internal_area=142.0, 100 | lighting_load=11.7, 101 | lighting_control=300.0, 102 | lighting_utilisation_factor=0.45, 103 | lighting_maintenance_factor=0.9, 104 | u_walls=0.2, 105 | u_windows=1.1, 106 | ach_vent=1.5, 107 | ach_infl=0.5, 108 | ventilation_efficiency=0.6, 109 | thermal_capacitance_per_floor_area=165000, 110 | t_set_heating=20.0, 111 | t_set_cooling=26.0, 112 | max_cooling_energy_per_floor_area=-float("inf"), 113 | max_heating_energy_per_floor_area=float("inf"), 114 | heating_supply_system=supply_system.OilBoilerMed, 115 | cooling_supply_system=supply_system.HeatPumpAir, 116 | heating_emission_system=emission_system.NewRadiators, 117 | cooling_emission_system=emission_system.AirConditioning, 118 | ): 119 | 120 | # Zone Dimensions 121 | self.window_area = window_area # [m2] Window Area 122 | 123 | # Fenestration and Lighting Properties 124 | self.lighting_load = lighting_load # [kW/m2] lighting load 125 | self.lighting_control = lighting_control # [lux] Lighting set point 126 | # How the light entering the window is transmitted to the working plane 127 | self.lighting_utilisation_factor = lighting_utilisation_factor 128 | # How dirty the window is. Section 2.2.3.1 Environmental Science 129 | # Handbook 130 | self.lighting_maintenance_factor = lighting_maintenance_factor 131 | 132 | # Calculated Properties 133 | self.floor_area = floor_area # [m2] Floor Area 134 | # [m2] Effective Mass Area assuming a medium weight zone #12.3.1.2 135 | self.mass_area = self.floor_area * 2.5 136 | self.room_vol = room_vol # [m3] Room Volume 137 | self.total_internal_area = total_internal_area 138 | # A_t or At is defined as being the area of all surfaces facing the room. 139 | self.A_t = self.total_internal_area 140 | 141 | # Single Capacitance 5 conductance Model Parameters 142 | # [kWh/K] Room Capacitance. Default based on ISO standard 12.3.1.2 for medium heavy zones 143 | self.c_m = thermal_capacitance_per_floor_area * self.floor_area 144 | # Conductance of opaque surfaces to exterior [W/K] 145 | self.h_tr_em = u_walls * walls_area 146 | # Conductance to exterior through glazed surfaces [W/K], based on 147 | # U-wert of 1W/m2K 148 | self.h_tr_w = u_windows * window_area 149 | 150 | # Determine the ventilation conductance 151 | ach_tot = ach_infl + ach_vent # Total Air Changes Per Hour 152 | # temperature adjustment factor taking ventilation and infiltration 153 | # [ISO: E -27] 154 | b_ek = (1 - (ach_vent / (ach_tot)) * ventilation_efficiency) 155 | self.h_ve_adj = 1200 * b_ek * self.room_vol * \ 156 | (ach_tot / 3600) # Conductance through ventilation [W/M] 157 | # transmittance from the internal air to the thermal mass of the 158 | # zone 159 | self.h_tr_ms = 9.1 * self.mass_area 160 | # Conductance from the conditioned air to interior zone surface 161 | self.h_tr_is = self.total_internal_area * 3.45 162 | 163 | # Thermal set points 164 | self.t_set_heating = t_set_heating 165 | self.t_set_cooling = t_set_cooling 166 | 167 | # Thermal Properties 168 | self.has_heating_demand = False # Boolean for if heating is required 169 | self.has_cooling_demand = False # Boolean for if cooling is required 170 | self.max_cooling_energy = max_cooling_energy_per_floor_area * \ 171 | self.floor_area # max cooling load (W/m2) 172 | self.max_heating_energy = max_heating_energy_per_floor_area * \ 173 | self.floor_area # max heating load (W/m2) 174 | 175 | # Zone System Properties 176 | self.heating_supply_system = heating_supply_system 177 | self.cooling_supply_system = cooling_supply_system 178 | self.heating_emission_system = heating_emission_system 179 | self.cooling_emission_system = cooling_emission_system 180 | 181 | @property 182 | def h_tr_1(self): 183 | """ 184 | Definition to simplify calc_phi_m_tot 185 | # (C.6) in [C.3 ISO 13790] 186 | """ 187 | return 1.0 / (1.0 / self.h_ve_adj + 1.0 / self.h_tr_is) 188 | 189 | @property 190 | def h_tr_2(self): 191 | """ 192 | Definition to simplify calc_phi_m_tot 193 | # (C.7) in [C.3 ISO 13790] 194 | """ 195 | return self.h_tr_1 + self.h_tr_w 196 | 197 | @property 198 | def h_tr_3(self): 199 | """ 200 | Definition to simplify calc_phi_m_tot 201 | # (C.8) in [C.3 ISO 13790] 202 | """ 203 | return 1.0 / (1.0 / self.h_tr_2 + 1.0 / self.h_tr_ms) 204 | 205 | @property 206 | def t_opperative(self): 207 | """ 208 | The opperative temperature is a weighted average of the air and mean radiant temperatures. 209 | It is not used in any further calculation at this stage 210 | # (C.12) in [C.3 ISO 13790] 211 | """ 212 | return 0.3 * self.t_air + 0.7 * self.t_s 213 | 214 | def solve_lighting(self, illuminance, occupancy): 215 | """ 216 | Calculates the lighting demand for a set timestep 217 | 218 | :param illuminance: Illuminance transmitted through the window [Lumens] 219 | :type illuminance: float 220 | :param occupancy: Probability of full occupancy 221 | :type occupancy: float 222 | 223 | :return: self.lighting_demand, Lighting Energy Required for the timestep 224 | :rtype: float 225 | 226 | """ 227 | # Cite: Environmental Science Handbook, SV Szokolay, Section 2.2.1.3 228 | # also, this might be sped up by pre-calculating the constants, but idk. first check with profiler... 229 | lux = (illuminance * self.lighting_utilisation_factor * 230 | self.lighting_maintenance_factor) / self.floor_area # [Lux] 231 | 232 | if lux < self.lighting_control and occupancy > 0: 233 | # Lighting demand for the hour 234 | self.lighting_demand = self.lighting_load * self.floor_area 235 | else: 236 | self.lighting_demand = 0 237 | 238 | def solve_energy(self, internal_gains, solar_gains, t_out, t_m_prev): 239 | """ 240 | Calculates the heating and cooling consumption of a building for a set timestep 241 | 242 | :param internal_gains: internal heat gains from people and appliances [W] 243 | :type internal_gains: float 244 | :param solar_gains: solar heat gains [W] 245 | :type solar_gains: float 246 | :param t_out: Outdoor air temperature [C] 247 | :type t_out: float 248 | :param t_m_prev: Previous air temperature [C] 249 | :type t_m_prev: float 250 | 251 | :return: self.heating_demand, space heating demand of the building 252 | :return: self.heating_sys_electricity, heating electricity consumption 253 | :return: self.heating_sys_fossils, heating fossil fuel consumption 254 | :return: self.cooling_demand, space cooling demand of the building 255 | :return: self.cooling_sys_electricity, electricity consumption from cooling 256 | :return: self.cooling_sys_fossils, fossil fuel consumption from cooling 257 | :return: self.electricity_out, electricity produced from combined heat pump systems 258 | :return: self.sys_total_energy, total exergy consumed (electricity + fossils) for heating and cooling 259 | :return: self.heating_energy, total exergy consumed (electricity + fossils) for heating 260 | :return: self.cooling_energy, total exergy consumed (electricity + fossils) for cooling 261 | :return: self.cop, Coefficient of Performance of the heating or cooling system 262 | :rtype: float 263 | 264 | """ 265 | # Main File 266 | 267 | # check demand, and change state of self.has_heating_demand, and self._has_cooling_demand 268 | self.has_demand(internal_gains, solar_gains, t_out, t_m_prev) 269 | 270 | if not self.has_heating_demand and not self.has_cooling_demand: 271 | 272 | # no heating or cooling demand 273 | # calculate temperatures of building R-C-model and exit 274 | # --> rc_model_function_1(...) 275 | self.energy_demand = 0 276 | 277 | self.heating_demand = 0 # Energy required by the zone 278 | self.cooling_demand = 0 # Energy surplus of the zone 279 | # Energy (in electricity) required by the supply system to provide 280 | # HeatingDemand 281 | self.heating_sys_electricity = 0 282 | # Energy (in fossil fuel) required by the supply system to provide 283 | # HeatingDemand 284 | self.heating_sys_fossils = 0 285 | # Energy (in electricity) required by the supply system to get rid 286 | # of CoolingDemand 287 | self.cooling_sys_electricity = 0 288 | # Energy (in fossil fuel) required by the supply system to get rid 289 | # of CoolingDemand 290 | self.cooling_sys_fossils = 0 291 | # Electricity produced by the supply system (e.g. CHP) 292 | self.electricity_out = 0 293 | # Set COP to nan if no heating or cooling is required 294 | self.cop = float('nan') 295 | 296 | else: 297 | 298 | # has heating/cooling demand 299 | 300 | # Calculates energy_demand used below 301 | self.calc_energy_demand( 302 | internal_gains, solar_gains, t_out, t_m_prev) 303 | 304 | self.calc_temperatures_crank_nicolson( 305 | self.energy_demand, internal_gains, solar_gains, t_out, t_m_prev) 306 | # calculates the actual t_m resulting from the actual heating 307 | # demand (energy_demand) 308 | 309 | # Calculate the Heating/Cooling Input Energy Required 310 | 311 | supply_director = supply_system.SupplyDirector() # Initialise Heating System Manager 312 | 313 | if self.has_heating_demand: 314 | supply_director.set_builder(self.heating_supply_system(load=self.energy_demand, 315 | t_out=t_out, 316 | heating_supply_temperature=self.heating_supply_temperature, 317 | cooling_supply_temperature=self.cooling_supply_temperature, 318 | has_heating_demand=self.has_heating_demand, 319 | has_cooling_demand=self.has_cooling_demand)) 320 | supplyOut = supply_director.calc_system() 321 | # All Variables explained underneath line 467 322 | self.heating_demand = self.energy_demand 323 | self.heating_sys_electricity = supplyOut.electricity_in 324 | self.heating_sys_fossils = supplyOut.fossils_in 325 | self.cooling_demand = 0 326 | self.cooling_sys_electricity = 0 327 | self.cooling_sys_fossils = 0 328 | self.electricity_out = supplyOut.electricity_out 329 | 330 | elif self.has_cooling_demand: 331 | supply_director.set_builder(self.cooling_supply_system(load=self.energy_demand * (-1), 332 | t_out=t_out, 333 | heating_supply_temperature=self.heating_supply_temperature, 334 | cooling_supply_temperature=self.cooling_supply_temperature, 335 | has_heating_demand=self.has_heating_demand, 336 | has_cooling_demand=self.has_cooling_demand)) 337 | supplyOut = supply_director.calc_system() 338 | self.heating_demand = 0 339 | self.heating_sys_electricity = 0 340 | self.heating_sys_fossils = 0 341 | self.cooling_demand = self.energy_demand 342 | self.cooling_sys_electricity = supplyOut.electricity_in 343 | self.cooling_sys_fossils = supplyOut.fossils_in 344 | self.electricity_out = supplyOut.electricity_out 345 | 346 | self.cop = supplyOut.cop 347 | 348 | self.sys_total_energy = self.heating_sys_electricity + self.heating_sys_fossils + \ 349 | self.cooling_sys_electricity + self.cooling_sys_fossils 350 | self.heating_energy = self.heating_sys_electricity + self.heating_sys_fossils 351 | self.cooling_energy = self.cooling_sys_electricity + self.cooling_sys_fossils 352 | 353 | # TODO: rename. this is expected to return a boolean. instead, it changes state??? you don't want to change state... 354 | # why not just return has_heating_demand and has_cooling_demand?? then call the function "check_demand" 355 | # has_heating_demand, has_cooling_demand = self.check_demand(...) 356 | def has_demand(self, internal_gains, solar_gains, t_out, t_m_prev): 357 | """ 358 | Determines whether the building requires heating or cooling 359 | Used in: solve_energy() 360 | 361 | # step 1 in section C.4.2 in [C.3 ISO 13790] 362 | """ 363 | 364 | # set energy demand to 0 and see if temperatures are within the comfort 365 | # range 366 | energy_demand = 0 367 | # Solve for the internal temperature t_Air 368 | self.calc_temperatures_crank_nicolson( 369 | energy_demand, internal_gains, solar_gains, t_out, t_m_prev) 370 | 371 | # If the air temperature is less or greater than the set temperature, 372 | # there is a heating/cooling load 373 | if self.t_air < self.t_set_heating: 374 | self.has_heating_demand = True 375 | self.has_cooling_demand = False 376 | elif self.t_air > self.t_set_cooling: 377 | self.has_cooling_demand = True 378 | self.has_heating_demand = False 379 | else: 380 | self.has_heating_demand = False 381 | self.has_cooling_demand = False 382 | 383 | def calc_temperatures_crank_nicolson(self, energy_demand, internal_gains, solar_gains, t_out, t_m_prev): 384 | """ 385 | Determines node temperatures and computes derivation to determine the new node temperatures 386 | Used in: has_demand(), solve_energy(), calc_energy_demand() 387 | # section C.3 in [C.3 ISO 13790] 388 | """ 389 | 390 | self.calc_heat_flow(t_out, internal_gains, solar_gains, energy_demand) 391 | 392 | self.calc_phi_m_tot(t_out) 393 | 394 | # calculates the new bulk temperature POINT from the old one 395 | self.calc_t_m_next(t_m_prev) 396 | 397 | # calculates the AVERAGE bulk temperature used for the remaining 398 | # calculation 399 | self.calc_t_m(t_m_prev) 400 | 401 | self.calc_t_s(t_out) 402 | 403 | self.calc_t_air(t_out) 404 | 405 | return self.t_m, self.t_air, self.t_opperative 406 | 407 | def calc_energy_demand(self, internal_gains, solar_gains, t_out, t_m_prev): 408 | """ 409 | Calculates the energy demand of the space if heating/cooling is active 410 | Used in: solve_energy() 411 | # Step 1 - Step 4 in Section C.4.2 in [C.3 ISO 13790] 412 | """ 413 | 414 | # Step 1: Check if heating or cooling is needed 415 | # (Not needed, but doing so for readability when comparing with the standard) 416 | # Set heating/cooling to 0 417 | energy_demand_0 = 0 418 | # Calculate the air temperature with no heating/cooling 419 | t_air_0 = self.calc_temperatures_crank_nicolson( 420 | energy_demand_0, internal_gains, solar_gains, t_out, t_m_prev)[1] 421 | 422 | # Step 2: Calculate the unrestricted heating/cooling required 423 | 424 | # determine if we need heating or cooling based based on the condition 425 | # that no heating or cooling is required 426 | if self.has_heating_demand: 427 | t_air_set = self.t_set_heating 428 | elif self.has_cooling_demand: 429 | t_air_set = self.t_set_cooling 430 | else: 431 | raise NameError( 432 | 'heating function has been called even though no heating is required') 433 | 434 | # Set a heating case where the heating load is 10x the floor area (10 435 | # W/m2) 436 | energy_floorAx10 = 10 * self.floor_area 437 | 438 | # Calculate the air temperature obtained by having this 10 W/m2 439 | # setpoint 440 | t_air_10 = self.calc_temperatures_crank_nicolson( 441 | energy_floorAx10, internal_gains, solar_gains, t_out, t_m_prev)[1] 442 | 443 | # Determine the unrestricted heating/cooling off the building 444 | self.calc_energy_demand_unrestricted( 445 | energy_floorAx10, t_air_set, t_air_0, t_air_10) 446 | 447 | # Step 3: Check if available heating or cooling power is sufficient 448 | if self.max_cooling_energy <= self.energy_demand_unrestricted <= self.max_heating_energy: 449 | 450 | self.energy_demand = self.energy_demand_unrestricted 451 | self.t_air_ac = t_air_set # not sure what this is used for at this stage TODO 452 | 453 | # Step 4: if not sufficient then set the heating/cooling setting to the 454 | # maximum 455 | # necessary heating power exceeds maximum available power 456 | elif self.energy_demand_unrestricted > self.max_heating_energy: 457 | 458 | self.energy_demand = self.max_heating_energy 459 | 460 | # necessary cooling power exceeds maximum available power 461 | elif self.energy_demand_unrestricted < self.max_cooling_energy: 462 | 463 | self.energy_demand = self.max_cooling_energy 464 | 465 | else: 466 | self.energy_demand = 0 467 | raise ValueError('unknown radiative heating/cooling system status') 468 | 469 | # calculate system temperatures for Step 3/Step 4 470 | self.calc_temperatures_crank_nicolson( 471 | self.energy_demand, internal_gains, solar_gains, t_out, t_m_prev) 472 | 473 | def calc_energy_demand_unrestricted(self, energy_floorAx10, t_air_set, t_air_0, t_air_10): 474 | """ 475 | Calculates the energy demand of the system if it has no maximum output restrictions 476 | # (C.13) in [C.3 ISO 13790] 477 | 478 | 479 | Based on the Thales Intercept Theorem. 480 | Where we set a heating case that is 10x the floor area and determine the temperature as a result 481 | Assuming that the relation is linear, one can draw a right angle triangle. 482 | From this we can determine the heating level required to achieve the set point temperature 483 | This assumes a perfect HVAC control system 484 | """ 485 | self.energy_demand_unrestricted = energy_floorAx10 * \ 486 | (t_air_set - t_air_0) / (t_air_10 - t_air_0) 487 | 488 | def calc_heat_flow(self, t_out, internal_gains, solar_gains, energy_demand): 489 | """ 490 | Calculates the heat flow from the solar gains, heating/cooling system, and internal gains into the building 491 | 492 | The input of the building is split into the air node, surface node, and thermal mass node based on 493 | on the following equations 494 | 495 | #C.1 - C.3 in [C.3 ISO 13790] 496 | 497 | Note that this equation has diverged slightly from the standard 498 | as the heating/cooling node can enter any node depending on the 499 | emission system selected 500 | 501 | """ 502 | 503 | # Calculates the heat flows to various points of the building based on the breakdown in section C.2, formulas C.1-C.3 504 | # Heat flow to the air node 505 | self.phi_ia = 0.5 * internal_gains 506 | # Heat flow to the surface node 507 | self.phi_st = (1 - (self.mass_area / self.A_t) - 508 | (self.h_tr_w / (9.1 * self.A_t))) * (0.5 * internal_gains + solar_gains) 509 | # Heatflow to the thermal mass node 510 | self.phi_m = (self.mass_area / self.A_t) * \ 511 | (0.5 * internal_gains + solar_gains) 512 | 513 | # We call the EmissionDirector to modify these flows depending on the 514 | # system and the energy demand 515 | emDirector = emission_system.EmissionDirector() 516 | 517 | # Set the emission system to the type specified by the user 518 | if energy_demand > 0: 519 | emDirector.set_builder(self.heating_emission_system( 520 | energy_demand=energy_demand)) 521 | else: 522 | emDirector.set_builder(self.cooling_emission_system( 523 | energy_demand=energy_demand)) 524 | # Calculate the new flows to each node based on the heating/cooling system 525 | flows = emDirector.calc_flows() 526 | 527 | # Set modified flows to building object 528 | self.phi_ia += flows.phi_ia_plus 529 | self.phi_st += flows.phi_st_plus 530 | self.phi_m += flows.phi_m_plus 531 | 532 | # Set supply temperature to building object 533 | self.heating_supply_temperature = flows.heating_supply_temperature 534 | self.cooling_supply_temperature = flows.cooling_supply_temperature 535 | 536 | def calc_t_m_next(self, t_m_prev): 537 | """ 538 | Primary Equation, calculates the temperature of the next time step 539 | # (C.4) in [C.3 ISO 13790] 540 | """ 541 | 542 | self.t_m_next = ((t_m_prev * ((self.c_m / 3600.0) - 0.5 * (self.h_tr_3 + self.h_tr_em))) + 543 | self.phi_m_tot) / ((self.c_m / 3600.0) + 0.5 * (self.h_tr_3 + self.h_tr_em)) 544 | 545 | def calc_phi_m_tot(self, t_out): 546 | """ 547 | Calculates a global heat transfer. This is a definition used to simplify equation 548 | calc_t_m_next so it's not so long to write out 549 | # (C.5) in [C.3 ISO 13790] 550 | # h_ve = h_ve_adj and t_supply = t_out [9.3.2 ISO 13790] 551 | """ 552 | 553 | t_supply = t_out # ASSUMPTION: Supply air comes straight from the outside air 554 | 555 | self.phi_m_tot = self.phi_m + self.h_tr_em * t_out + \ 556 | self.h_tr_3 * (self.phi_st + self.h_tr_w * t_out + self.h_tr_1 * 557 | ((self.phi_ia / self.h_ve_adj) + t_supply)) / self.h_tr_2 558 | 559 | def calc_t_m(self, t_m_prev): 560 | """ 561 | Temperature used for the calculations, average between newly calculated and previous bulk temperature 562 | # (C.9) in [C.3 ISO 13790] 563 | """ 564 | self.t_m = (self.t_m_next + t_m_prev) / 2.0 565 | 566 | def calc_t_s(self, t_out): 567 | """ 568 | Calculate the temperature of the inside room surfaces 569 | # (C.10) in [C.3 ISO 13790] 570 | # h_ve = h_ve_adj and t_supply = t_out [9.3.2 ISO 13790] 571 | """ 572 | 573 | t_supply = t_out # ASSUMPTION: Supply air comes straight from the outside air 574 | 575 | self.t_s = (self.h_tr_ms * self.t_m + self.phi_st + self.h_tr_w * t_out + self.h_tr_1 * 576 | (t_supply + self.phi_ia / self.h_ve_adj)) / \ 577 | (self.h_tr_ms + self.h_tr_w + self.h_tr_1) 578 | 579 | def calc_t_air(self, t_out): 580 | """ 581 | Calculate the temperature of the air node 582 | # (C.11) in [C.3 ISO 13790] 583 | # h_ve = h_ve_adj and t_supply = t_out [9.3.2 ISO 13790] 584 | """ 585 | 586 | t_supply = t_out 587 | 588 | # Calculate the temperature of the inside air 589 | self.t_air = (self.h_tr_is * self.t_s + self.h_ve_adj * 590 | t_supply + self.phi_ia) / (self.h_tr_is + self.h_ve_adj) 591 | -------------------------------------------------------------------------------- /rc_simulator/tests/testRCmodel.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import unittest 4 | 5 | # Set root folder one level up, just for this example 6 | sys.path.insert(0, os.path.abspath( 7 | os.path.join(os.path.dirname(__file__), '..'))) 8 | 9 | from building_physics import Zone # Importing Zone Class 10 | import supply_system 11 | import emission_system 12 | 13 | 14 | class TestBuildingSim(unittest.TestCase): 15 | 16 | def test_NoHVACNoLight(self): 17 | t_out = 10 18 | t_m_prev = 22 19 | # Internal heat gains, in Watts 20 | internal_gains = 10 21 | 22 | # Solar heat gains after transmitting through the winow, in Watts 23 | solar_gains = 2000 24 | 25 | # Illuminance after transmitting through the window 26 | ill = 44000 # Lumens 27 | 28 | # Occupancy for the timestep [people/hour/square_meter] 29 | occupancy = 0.1 30 | 31 | # Set Zone Parameters 32 | Office = Zone(window_area=13.5, 33 | walls_area=15.19 - 13.5, 34 | floor_area=34.3, 35 | room_vol=106.33, 36 | total_internal_area=142.38, 37 | lighting_load=11.7, 38 | lighting_control=300, 39 | lighting_utilisation_factor=0.45, 40 | lighting_maintenance_factor=0.9, 41 | u_walls=0.2, 42 | u_windows=1.1, 43 | ach_vent=1.5, 44 | ach_infl=0.5, 45 | ventilation_efficiency=0, 46 | thermal_capacitance_per_floor_area=165000, 47 | t_set_heating=20, 48 | t_set_cooling=26, 49 | max_cooling_energy_per_floor_area=-12, 50 | max_heating_energy_per_floor_area=12, 51 | heating_supply_system=supply_system.DirectHeater, 52 | cooling_supply_system=supply_system.DirectCooler, 53 | heating_emission_system=emission_system.AirConditioning, 54 | cooling_emission_system=emission_system.AirConditioning, 55 | ) 56 | 57 | Office.solve_energy( 58 | internal_gains, solar_gains, t_out, t_m_prev) 59 | Office.solve_lighting(ill, occupancy) 60 | 61 | self.assertEqual(round(Office.t_m, 2), 22.33) 62 | self.assertEqual(Office.energy_demand, 0) 63 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 64 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 65 | self.assertEqual(Office.lighting_demand, 0) 66 | 67 | def test_CoolingRequired(self): 68 | t_out = 25 69 | t_m_prev = 24 70 | # Internal heat gains, in Watts 71 | internal_gains = 10 72 | 73 | # Solar heat gains after transmitting through the winow, in Watts 74 | solar_gains = 4000 75 | 76 | # Illuminance after transmitting through the window 77 | ill = 44000 # Lumens 78 | 79 | # Occupancy for the timestep [people/hour/square_meter] 80 | occupancy = 0.1 81 | 82 | # Set Zone Parameters 83 | Office = Zone(window_area=13.5, 84 | walls_area=15.19 - 13.5, 85 | floor_area=34.3, 86 | room_vol=106.33, 87 | total_internal_area=142.38, 88 | lighting_load=11.7, 89 | lighting_control=300, 90 | lighting_utilisation_factor=0.45, 91 | lighting_maintenance_factor=0.9, 92 | u_walls=0.2, 93 | u_windows=1.1, 94 | ach_vent=1.5, 95 | ach_infl=0.5, 96 | ventilation_efficiency=0, 97 | thermal_capacitance_per_floor_area=165000, 98 | t_set_heating=20, 99 | t_set_cooling=26, 100 | max_cooling_energy_per_floor_area=-12, 101 | max_heating_energy_per_floor_area=12, 102 | heating_supply_system=supply_system.DirectHeater, 103 | cooling_supply_system=supply_system.DirectCooler, 104 | heating_emission_system=emission_system.AirConditioning, 105 | cooling_emission_system=emission_system.AirConditioning, 106 | ) 107 | 108 | Office.solve_energy( 109 | internal_gains, solar_gains, t_out, t_m_prev) 110 | Office.solve_lighting(ill, occupancy) 111 | 112 | self.assertEqual(round(Office.energy_demand, 2), -264.75) 113 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 264.75) 114 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 115 | self.assertEqual(round(Office.t_m, 2), 25.15) 116 | self.assertTrue(Office.has_cooling_demand) 117 | 118 | self.assertEqual(Office.lighting_demand, 0) 119 | 120 | def test_HeatingRequired(self): 121 | 122 | t_out = 10 123 | t_m_prev = 20 124 | # Internal heat gains, in Watts 125 | internal_gains = 10 126 | 127 | # Solar heat gains after transmitting through the winow, in Watts 128 | solar_gains = 2000 129 | 130 | # Illuminance after transmitting through the window 131 | ill = 44000 # Lumens 132 | 133 | # Occupancy for the timestep [people/hour/square_meter] 134 | occupancy = 0.1 135 | 136 | # Set Zone Parameters 137 | Office = Zone(window_area=13.5, 138 | walls_area=15.19 - 13.5, 139 | floor_area=34.3, 140 | room_vol=106.33, 141 | total_internal_area=142.38, 142 | lighting_load=11.7, 143 | lighting_control=300, 144 | lighting_utilisation_factor=0.45, 145 | lighting_maintenance_factor=0.9, 146 | u_walls=0.2, 147 | u_windows=1.1, 148 | ach_vent=1.5, 149 | ach_infl=0.5, 150 | ventilation_efficiency=0, 151 | thermal_capacitance_per_floor_area=165000, 152 | t_set_heating=20, 153 | t_set_cooling=26, 154 | max_cooling_energy_per_floor_area=-12, 155 | max_heating_energy_per_floor_area=12, 156 | heating_supply_system=supply_system.DirectHeater, 157 | cooling_supply_system=supply_system.DirectCooler, 158 | heating_emission_system=emission_system.AirConditioning, 159 | cooling_emission_system=emission_system.AirConditioning, 160 | ) 161 | 162 | Office.solve_energy( 163 | internal_gains, solar_gains, t_out, t_m_prev) 164 | Office.solve_lighting(ill, occupancy) 165 | 166 | self.assertEqual(round(Office.t_m, 2), 20.46) 167 | self.assertTrue(Office.has_heating_demand) 168 | self.assertEqual(round(Office.energy_demand, 2), 328.09) 169 | self.assertEqual(round(Office.heating_sys_electricity, 2), 328.09) 170 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 171 | self.assertEqual(Office.lighting_demand, 0) 172 | 173 | def test_MaxCoolingRequired(self): 174 | t_out = 30 175 | t_m_prev = 25 176 | # Internal heat gains, in Watts 177 | internal_gains = 10 178 | 179 | # Solar heat gains after transmitting through the winow, in Watts 180 | solar_gains = 5000 181 | 182 | # Illuminance after transmitting through the window 183 | ill = 44000 # Lumens 184 | 185 | # Occupancy for the timestep [people/hour/square_meter] 186 | occupancy = 0.1 187 | 188 | # Set Zone Parameters 189 | Office = Zone(window_area=13.5, 190 | walls_area=15.19 - 13.5, 191 | floor_area=34.3, 192 | room_vol=106.33, 193 | total_internal_area=142.38, 194 | lighting_load=11.7, 195 | lighting_control=300, 196 | lighting_utilisation_factor=0.45, 197 | lighting_maintenance_factor=0.9, 198 | u_walls=0.2, 199 | u_windows=1.1, 200 | ach_vent=1.5, 201 | ach_infl=0.5, 202 | ventilation_efficiency=0, 203 | thermal_capacitance_per_floor_area=165000, 204 | t_set_heating=20, 205 | t_set_cooling=26, 206 | max_cooling_energy_per_floor_area=-12, 207 | max_heating_energy_per_floor_area=12, 208 | heating_supply_system=supply_system.DirectHeater, 209 | cooling_supply_system=supply_system.DirectCooler, 210 | heating_emission_system=emission_system.AirConditioning, 211 | cooling_emission_system=emission_system.AirConditioning, 212 | ) 213 | 214 | Office.solve_energy( 215 | internal_gains, solar_gains, t_out, t_m_prev) 216 | Office.solve_lighting(ill, occupancy) 217 | 218 | self.assertEqual(round(Office.t_m, 2), 26.49) 219 | self.assertTrue(Office.has_cooling_demand) 220 | self.assertEqual(round(Office.energy_demand, 2), -411.6) 221 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 411.6) 222 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 223 | self.assertEqual(Office.lighting_demand, 0) 224 | 225 | def test_MaxHeatingRequired(self): 226 | 227 | t_out = 5 228 | t_m_prev = 19 229 | # Internal heat gains, in Watts 230 | internal_gains = 10 231 | 232 | # Solar heat gains after transmitting through the winow, in Watts 233 | solar_gains = 2000 234 | 235 | # Illuminance after transmitting through the window 236 | ill = 44000 # Lumens 237 | 238 | # Occupancy for the timestep [people/hour/square_meter] 239 | occupancy = 0.1 240 | 241 | # Set Zone Parameters 242 | Office = Zone(window_area=13.5, 243 | walls_area=15.19 - 13.5, 244 | floor_area=34.3, 245 | room_vol=106.33, 246 | total_internal_area=142.38, 247 | lighting_load=11.7, 248 | lighting_control=300, 249 | lighting_utilisation_factor=0.45, 250 | lighting_maintenance_factor=0.9, 251 | u_walls=0.2, 252 | u_windows=1.1, 253 | ach_vent=1.5, 254 | ach_infl=0.5, 255 | ventilation_efficiency=0, 256 | thermal_capacitance_per_floor_area=165000, 257 | t_set_heating=20, 258 | t_set_cooling=26, 259 | max_cooling_energy_per_floor_area=-12, 260 | max_heating_energy_per_floor_area=12, 261 | heating_supply_system=supply_system.DirectHeater, 262 | cooling_supply_system=supply_system.DirectCooler, 263 | heating_emission_system=emission_system.AirConditioning, 264 | cooling_emission_system=emission_system.AirConditioning, 265 | ) 266 | 267 | Office.solve_energy( 268 | internal_gains, solar_gains, t_out, t_m_prev) 269 | Office.solve_lighting(ill, occupancy) 270 | 271 | self.assertEqual(round(Office.t_m, 2), 19.39) 272 | self.assertTrue(Office.has_heating_demand) 273 | self.assertEqual(round(Office.energy_demand, 2), 411.6) 274 | self.assertEqual(round(Office.heating_sys_electricity, 2), 411.6) 275 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 276 | self.assertEqual(Office.lighting_demand, 0) 277 | 278 | def test_lightingrequired(self): 279 | 280 | t_out = 10 281 | t_m_prev = 22 282 | # Internal heat gains, in Watts 283 | internal_gains = 10 284 | 285 | # Solar heat gains after transmitting through the winow, in Watts 286 | solar_gains = 2000 287 | 288 | # Illuminance after transmitting through the window 289 | ill = 4000 # Lumens 290 | 291 | # Occupancy for the timestep [people/hour/square_meter] 292 | occupancy = 0.1 293 | 294 | # Set Zone Parameters 295 | Office = Zone(window_area=13.5, 296 | walls_area=15.19 - 13.5, 297 | floor_area=34.3, 298 | room_vol=106.33, 299 | total_internal_area=142.38, 300 | lighting_load=11.7, 301 | lighting_control=300, 302 | lighting_utilisation_factor=0.45, 303 | lighting_maintenance_factor=0.9, 304 | u_walls=0.2, 305 | u_windows=1.1, 306 | ach_vent=1.5, 307 | ach_infl=0.5, 308 | ventilation_efficiency=0, 309 | thermal_capacitance_per_floor_area=165000, 310 | t_set_heating=20.0, 311 | t_set_cooling=26.0, 312 | max_cooling_energy_per_floor_area=-12.0, 313 | max_heating_energy_per_floor_area=12.0, 314 | heating_supply_system=supply_system.DirectHeater, 315 | cooling_supply_system=supply_system.DirectCooler, 316 | heating_emission_system=emission_system.AirConditioning, 317 | cooling_emission_system=emission_system.AirConditioning, 318 | ) 319 | 320 | Office.solve_energy( 321 | internal_gains, solar_gains, t_out, t_m_prev) 322 | Office.solve_lighting(ill, occupancy) 323 | 324 | self.assertEqual(round(Office.t_m, 2), 22.33) 325 | self.assertEqual(Office.energy_demand, 0) 326 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 327 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 328 | self.assertEqual(round(Office.lighting_demand, 2), 401.31) 329 | 330 | # ###############################Tests with infiltration variation#### 331 | 332 | def test_NoHVACNoLight_infl(self): 333 | t_out = 10 334 | t_m_prev = 22 335 | # Internal heat gains, in Watts 336 | internal_gains = 10 337 | 338 | # Solar heat gains after transmitting through the winow, in Watts 339 | solar_gains = 2000 340 | 341 | # Illuminance after transmitting through the window 342 | ill = 44000 # Lumens 343 | 344 | # Occupancy for the timestep [people/hour/square_meter] 345 | occupancy = 0.1 346 | 347 | # Set Zone Parameters 348 | Office = Zone(window_area=13.5, 349 | walls_area=15.19 - 13.5, 350 | floor_area=34.3, 351 | room_vol=106.33, 352 | total_internal_area=142.38, 353 | lighting_load=11.7, 354 | lighting_control=300, 355 | lighting_utilisation_factor=0.45, 356 | lighting_maintenance_factor=0.9, 357 | u_walls=0.2, 358 | u_windows=1.1, 359 | ach_vent=1.5, 360 | ach_infl=0.5, 361 | ventilation_efficiency=0.66, 362 | thermal_capacitance_per_floor_area=165000, 363 | t_set_heating=20, 364 | t_set_cooling=26, 365 | max_cooling_energy_per_floor_area=-12, 366 | max_heating_energy_per_floor_area=12, 367 | heating_supply_system=supply_system.DirectHeater, 368 | cooling_supply_system=supply_system.DirectCooler, 369 | heating_emission_system=emission_system.AirConditioning, 370 | cooling_emission_system=emission_system.AirConditioning, 371 | ) 372 | 373 | Office.solve_energy( 374 | internal_gains, solar_gains, t_out, t_m_prev) 375 | Office.solve_lighting(ill, occupancy) 376 | 377 | self.assertEqual(round(Office.t_m, 2), 22.44) 378 | self.assertEqual(Office.energy_demand, 0) 379 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 380 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 381 | self.assertEqual(Office.lighting_demand, 0) 382 | 383 | def test_CoolingRequired_infl(self): 384 | t_out = 25 385 | t_m_prev = 24 386 | # Internal heat gains, in Watts 387 | internal_gains = 10 388 | 389 | # Solar heat gains after transmitting through the winow, in Watts 390 | solar_gains = 4000 391 | 392 | # Illuminance after transmitting through the window 393 | ill = 44000 # Lumens 394 | 395 | # Occupancy for the timestep [people/hour/square_meter] 396 | occupancy = 0.1 397 | 398 | # Set Zone Parameters 399 | Office = Zone(window_area=13.5, 400 | walls_area=15.19 - 13.5, 401 | floor_area=34.3, 402 | room_vol=106.33, 403 | total_internal_area=142.38, 404 | lighting_load=11.7, 405 | lighting_control=300, 406 | lighting_utilisation_factor=0.45, 407 | lighting_maintenance_factor=0.9, 408 | u_walls=0.2, 409 | u_windows=1.1, 410 | ach_vent=1.5, 411 | ach_infl=0.5, 412 | ventilation_efficiency=0.6, 413 | thermal_capacitance_per_floor_area=165000, 414 | t_set_heating=20, 415 | t_set_cooling=26, 416 | max_cooling_energy_per_floor_area=-12, 417 | max_heating_energy_per_floor_area=12, 418 | heating_supply_system=supply_system.DirectHeater, 419 | cooling_supply_system=supply_system.DirectCooler, 420 | heating_emission_system=emission_system.AirConditioning, 421 | cooling_emission_system=emission_system.AirConditioning, 422 | ) 423 | 424 | Office.solve_energy( 425 | internal_gains, solar_gains, t_out, t_m_prev) 426 | Office.solve_lighting(ill, occupancy) 427 | 428 | self.assertEqual(round(Office.energy_demand, 2), -296.65) 429 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 296.65) 430 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 431 | self.assertEqual(round(Office.t_m, 2), 25.15) 432 | self.assertTrue(Office.has_cooling_demand) 433 | 434 | self.assertEqual(Office.lighting_demand, 0) 435 | 436 | def test_HeatingRequired_infl(self): 437 | 438 | t_out = 10 439 | t_m_prev = 20 440 | # Internal heat gains, in Watts 441 | internal_gains = 10 442 | 443 | # Solar heat gains after transmitting through the winow, in Watts 444 | solar_gains = 2000 445 | 446 | # Illuminance after transmitting through the window 447 | ill = 44000 # Lumens 448 | 449 | # Occupancy for the timestep [people/hour/square_meter] 450 | occupancy = 0.1 451 | 452 | # Set Zone Parameters 453 | Office = Zone(window_area=13.5, 454 | walls_area=15.19 - 13.5, 455 | floor_area=34.3, 456 | room_vol=106.33, 457 | total_internal_area=142.38, 458 | lighting_load=11.7, 459 | lighting_control=300, 460 | lighting_utilisation_factor=0.45, 461 | lighting_maintenance_factor=0.9, 462 | u_walls=0.2, 463 | u_windows=1.1, 464 | ach_vent=1.5, 465 | ach_infl=0.5, 466 | ventilation_efficiency=0.6, 467 | thermal_capacitance_per_floor_area=165000, 468 | t_set_heating=20, 469 | t_set_cooling=26, 470 | max_cooling_energy_per_floor_area=-12, 471 | max_heating_energy_per_floor_area=12, 472 | heating_supply_system=supply_system.DirectHeater, 473 | cooling_supply_system=supply_system.DirectCooler, 474 | heating_emission_system=emission_system.AirConditioning, 475 | cooling_emission_system=emission_system.AirConditioning, 476 | ) 477 | 478 | Office.solve_energy( 479 | internal_gains, solar_gains, t_out, t_m_prev) 480 | Office.solve_lighting(ill, occupancy) 481 | 482 | self.assertEqual(round(Office.t_m, 2), 20.46) 483 | self.assertTrue(Office.has_heating_demand) 484 | self.assertEqual(round(Office.energy_demand, 2), 9.1) 485 | self.assertEqual(round(Office.heating_sys_electricity, 2), 9.1) 486 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 487 | self.assertEqual(Office.lighting_demand, 0) 488 | 489 | def test_MaxCoolingRequired_infl(self): 490 | t_out = 30 491 | t_m_prev = 25 492 | # Internal heat gains, in Watts 493 | internal_gains = 10 494 | 495 | # Solar heat gains after transmitting through the winow, in Watts 496 | solar_gains = 5000 497 | 498 | # Illuminance after transmitting through the window 499 | ill = 44000 # Lumens 500 | 501 | # Occupancy for the timestep [people/hour/square_meter] 502 | occupancy = 0.1 503 | 504 | # Set Zone Parameters 505 | Office = Zone(window_area=13.5, 506 | walls_area=15.19 - 13.5, 507 | floor_area=34.3, 508 | room_vol=106.33, 509 | total_internal_area=142.38, 510 | lighting_load=11.7, 511 | lighting_control=300, 512 | lighting_utilisation_factor=0.45, 513 | lighting_maintenance_factor=0.9, 514 | u_walls=0.2, 515 | u_windows=1.1, 516 | ach_vent=1.5, 517 | ach_infl=0.5, 518 | ventilation_efficiency=0.6, 519 | thermal_capacitance_per_floor_area=165000, 520 | t_set_heating=20, 521 | t_set_cooling=26, 522 | max_cooling_energy_per_floor_area=-12, 523 | max_heating_energy_per_floor_area=12, 524 | heating_supply_system=supply_system.DirectHeater, 525 | cooling_supply_system=supply_system.DirectCooler, 526 | heating_emission_system=emission_system.AirConditioning, 527 | cooling_emission_system=emission_system.AirConditioning, 528 | ) 529 | 530 | Office.solve_energy( 531 | internal_gains, solar_gains, t_out, t_m_prev) 532 | Office.solve_lighting(ill, occupancy) 533 | 534 | self.assertEqual(round(Office.t_m, 2), 26.48) 535 | self.assertTrue(Office.has_cooling_demand) 536 | self.assertEqual(round(Office.energy_demand, 2), -411.6) 537 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 411.6) 538 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 539 | self.assertEqual(Office.lighting_demand, 0) 540 | 541 | def test_MaxHeatingRequired_infl(self): 542 | 543 | t_out = 5 544 | t_m_prev = 19 545 | # Internal heat gains, in Watts 546 | internal_gains = 10 547 | 548 | # Solar heat gains after transmitting through the winow, in Watts 549 | solar_gains = 2000 550 | 551 | # Illuminance after transmitting through the window 552 | ill = 44000 # Lumens 553 | 554 | # Occupancy for the timestep [people/hour/square_meter] 555 | occupancy = 0.1 556 | 557 | # Set Zone Parameters 558 | Office = Zone(window_area=13.5, 559 | walls_area=15.19 - 13.5, 560 | floor_area=34.3, 561 | room_vol=106.33, 562 | total_internal_area=142.38, 563 | lighting_load=11.7, 564 | lighting_control=300, 565 | lighting_utilisation_factor=0.45, 566 | lighting_maintenance_factor=0.9, 567 | u_walls=0.2, 568 | u_windows=1.1, 569 | ach_vent=1.5, 570 | ach_infl=0.5, 571 | ventilation_efficiency=0.6, 572 | thermal_capacitance_per_floor_area=165000, 573 | t_set_heating=20, 574 | t_set_cooling=26, 575 | max_cooling_energy_per_floor_area=-12, 576 | max_heating_energy_per_floor_area=12, 577 | heating_supply_system=supply_system.DirectHeater, 578 | cooling_supply_system=supply_system.DirectCooler, 579 | heating_emission_system=emission_system.AirConditioning, 580 | cooling_emission_system=emission_system.AirConditioning, 581 | ) 582 | 583 | Office.solve_energy( 584 | internal_gains, solar_gains, t_out, t_m_prev) 585 | Office.solve_lighting(ill, occupancy) 586 | 587 | self.assertEqual(round(Office.t_m, 2), 19.51) 588 | self.assertTrue(Office.has_heating_demand) 589 | self.assertEqual(round(Office.energy_demand, 2), 411.6) 590 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 591 | self.assertEqual(round(Office.heating_sys_electricity, 2), 411.6) 592 | self.assertEqual(Office.lighting_demand, 0) 593 | 594 | def test_lightingrequired_infl(self): 595 | 596 | t_out = 10 597 | t_m_prev = 22 598 | # Internal heat gains, in Watts 599 | internal_gains = 10 600 | 601 | # Solar heat gains after transmitting through the winow, in Watts 602 | solar_gains = 2000 603 | 604 | # Illuminance after transmitting through the window 605 | ill = 14000 # Lumens 606 | 607 | # Occupancy for the timestep [people/hour/square_meter] 608 | occupancy = 0.1 609 | 610 | # Set Zone Parameters 611 | Office = Zone(window_area=13.5, 612 | walls_area=15.19 - 13.5, 613 | floor_area=34.3, 614 | room_vol=106.33, 615 | total_internal_area=142.38, 616 | lighting_load=11.7, 617 | lighting_control=300, 618 | lighting_utilisation_factor=0.45, 619 | lighting_maintenance_factor=0.9, 620 | u_walls=0.2, 621 | u_windows=1.1, 622 | ach_vent=1.5, 623 | ach_infl=0.5, 624 | ventilation_efficiency=0.6, 625 | thermal_capacitance_per_floor_area=165000, 626 | t_set_heating=20.0, 627 | t_set_cooling=26.0, 628 | max_cooling_energy_per_floor_area=-12.0, 629 | max_heating_energy_per_floor_area=12.0, 630 | heating_supply_system=supply_system.DirectHeater, 631 | cooling_supply_system=supply_system.DirectCooler, 632 | heating_emission_system=emission_system.AirConditioning, 633 | cooling_emission_system=emission_system.AirConditioning, 634 | ) 635 | 636 | Office.solve_energy( 637 | internal_gains, solar_gains, t_out, t_m_prev) 638 | Office.solve_lighting(ill, occupancy) 639 | 640 | self.assertEqual(round(Office.t_m, 2), 22.43) 641 | self.assertEqual(Office.energy_demand, 0) 642 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 643 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 644 | self.assertEqual(round(Office.lighting_demand, 2), 401.31) 645 | 646 | # ############################ System Variations ######################## 647 | 648 | def test_HeatPumpCoolingRequiredHighCOP(self): 649 | """Warning! Not validated yet and may have errors""" 650 | t_out = 25 651 | t_m_prev = 24 652 | # Internal heat gains, in Watts 653 | internal_gains = 10 654 | 655 | # Solar heat gains after transmitting through the winow, in Watts 656 | solar_gains = 4000 657 | 658 | # Illuminance after transmitting through the window 659 | ill = 44000 # Lumens 660 | 661 | # Occupancy for the timestep [people/hour/square_meter] 662 | occupancy = 0.1 663 | 664 | # Set Zone Parameters 665 | Office = Zone(window_area=13.5, 666 | walls_area=15.19 - 13.5, 667 | floor_area=34.3, 668 | room_vol=106.33, 669 | total_internal_area=142.38, 670 | lighting_load=11.7, 671 | lighting_control=300, 672 | lighting_utilisation_factor=0.45, 673 | lighting_maintenance_factor=0.9, 674 | u_walls=0.2, 675 | u_windows=1.1, 676 | ach_vent=1.5, 677 | ach_infl=0.5, 678 | ventilation_efficiency=0, 679 | thermal_capacitance_per_floor_area=165000, 680 | t_set_heating=20, 681 | t_set_cooling=26, 682 | max_cooling_energy_per_floor_area=-12, 683 | max_heating_energy_per_floor_area=12, 684 | heating_supply_system=supply_system.DirectHeater, 685 | cooling_supply_system=supply_system.HeatPumpAir, 686 | heating_emission_system=emission_system.AirConditioning, 687 | cooling_emission_system=emission_system.AirConditioning, 688 | ) 689 | 690 | Office.solve_energy( 691 | internal_gains, solar_gains, t_out, t_m_prev) 692 | Office.solve_lighting(ill, occupancy) 693 | 694 | self.assertEqual(round(Office.energy_demand, 2), -264.75) 695 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 55.87) 696 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 697 | self.assertEqual(round(Office.t_m, 2), 25.15) 698 | self.assertEqual(round(Office.cop, 2), 4.74) 699 | self.assertTrue(Office.has_cooling_demand) 700 | 701 | self.assertEqual(Office.lighting_demand, 0) 702 | 703 | def test_HeatPumpCoolingRequired(self): 704 | """Warning! Not validated yet and may have errors""" 705 | t_out = 35 706 | t_m_prev = 24 707 | # Internal heat gains, in Watts 708 | internal_gains = 10 709 | 710 | # Solar heat gains after transmitting through the winow, in Watts 711 | solar_gains = 4000 712 | 713 | # Illuminance after transmitting through the window 714 | ill = 44000 # Lumens 715 | 716 | # Occupancy for the timestep [people/hour/square_meter] 717 | occupancy = 0.1 718 | 719 | # Set Zone Parameters 720 | Office = Zone(window_area=13.5, 721 | walls_area=15.19 - 13.5, 722 | floor_area=34.3, 723 | room_vol=106.33, 724 | total_internal_area=142.38, 725 | lighting_load=11.7, 726 | lighting_control=300, 727 | lighting_utilisation_factor=0.45, 728 | lighting_maintenance_factor=0.9, 729 | u_walls=0.2, 730 | u_windows=1.1, 731 | ach_vent=1.5, 732 | ach_infl=0.5, 733 | ventilation_efficiency=0, 734 | thermal_capacitance_per_floor_area=165000, 735 | t_set_heating=20, 736 | t_set_cooling=26, 737 | max_cooling_energy_per_floor_area=-12, 738 | max_heating_energy_per_floor_area=12, 739 | heating_supply_system=supply_system.DirectHeater, 740 | cooling_supply_system=supply_system.HeatPumpAir, 741 | heating_emission_system=emission_system.AirConditioning, 742 | cooling_emission_system=emission_system.AirConditioning, 743 | ) 744 | 745 | Office.solve_energy( 746 | internal_gains, solar_gains, t_out, t_m_prev) 747 | Office.solve_lighting(ill, occupancy) 748 | 749 | self.assertEqual(round(Office.energy_demand, 2), -411.6) 750 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 107.44) 751 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 752 | self.assertEqual(round(Office.t_m, 2), 25.33) 753 | self.assertEqual(round(Office.cop, 2), 3.83) 754 | self.assertTrue(Office.has_cooling_demand) 755 | 756 | self.assertEqual(Office.lighting_demand, 0) 757 | 758 | def test_WaterHeatPumpCoolingRequired(self): 759 | """Warning! Not validated yet and may have errors""" 760 | t_out = 35 761 | t_m_prev = 24 762 | # Internal heat gains, in Watts 763 | internal_gains = 10 764 | 765 | # Solar heat gains after transmitting through the winow, in Watts 766 | solar_gains = 4000 767 | 768 | # Illuminance after transmitting through the window 769 | ill = 44000 # Lumens 770 | 771 | # Occupancy for the timestep [people/hour/square_meter] 772 | occupancy = 0.1 773 | 774 | # Set Zone Parameters 775 | Office = Zone(window_area=13.5, 776 | walls_area=15.19 - 13.5, 777 | floor_area=34.3, 778 | room_vol=106.33, 779 | total_internal_area=142.38, 780 | lighting_load=11.7, 781 | lighting_control=300, 782 | lighting_utilisation_factor=0.45, 783 | lighting_maintenance_factor=0.9, 784 | u_walls=0.2, 785 | u_windows=1.1, 786 | ach_vent=1.5, 787 | ach_infl=0.5, 788 | ventilation_efficiency=0, 789 | thermal_capacitance_per_floor_area=165000, 790 | t_set_heating=20, 791 | t_set_cooling=26, 792 | max_cooling_energy_per_floor_area=-12, 793 | max_heating_energy_per_floor_area=12, 794 | heating_supply_system=supply_system.DirectHeater, 795 | cooling_supply_system=supply_system.HeatPumpWater, 796 | heating_emission_system=emission_system.AirConditioning, 797 | cooling_emission_system=emission_system.AirConditioning, 798 | ) 799 | 800 | Office.solve_energy( 801 | internal_gains, solar_gains, t_out, t_m_prev) 802 | Office.solve_lighting(ill, occupancy) 803 | 804 | self.assertEqual(round(Office.energy_demand, 2), -411.6) 805 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 52.12) 806 | self.assertEqual(round(Office.heating_sys_electricity, 2), 0) 807 | self.assertEqual(round(Office.t_m, 2), 25.33) 808 | self.assertEqual(round(Office.cop, 2), 7.9) 809 | self.assertTrue(Office.has_cooling_demand) 810 | 811 | self.assertEqual(Office.lighting_demand, 0) 812 | 813 | def test_AirHeatPump_HeatingRequired_infl(self): 814 | 815 | t_out = 10 816 | t_m_prev = 20 817 | # Internal heat gains, in Watts 818 | internal_gains = 10 819 | 820 | # Solar heat gains after transmitting through the winow, in Watts 821 | solar_gains = 2000 822 | 823 | # Illuminance after transmitting through the window 824 | ill = 44000 # Lumens 825 | 826 | # Occupancy for the timestep [people/hour/square_meter] 827 | occupancy = 0.1 828 | 829 | # Set Zone Parameters 830 | Office = Zone(window_area=13.5, 831 | walls_area=15.19 - 13.5, 832 | floor_area=34.3, 833 | room_vol=106.33, 834 | total_internal_area=142.38, 835 | lighting_load=11.7, 836 | lighting_control=300, 837 | lighting_utilisation_factor=0.45, 838 | lighting_maintenance_factor=0.9, 839 | u_walls=0.2, 840 | u_windows=1.1, 841 | ach_vent=1.5, 842 | ach_infl=0.5, 843 | ventilation_efficiency=0.6, 844 | thermal_capacitance_per_floor_area=165000, 845 | t_set_heating=20, 846 | t_set_cooling=26, 847 | max_cooling_energy_per_floor_area=-12, 848 | max_heating_energy_per_floor_area=12, 849 | heating_supply_system=supply_system.HeatPumpAir, 850 | cooling_supply_system=supply_system.DirectCooler, 851 | heating_emission_system=emission_system.AirConditioning, 852 | cooling_emission_system=emission_system.AirConditioning, 853 | ) 854 | 855 | Office.solve_energy( 856 | internal_gains, solar_gains, t_out, t_m_prev) 857 | Office.solve_lighting(ill, occupancy) 858 | 859 | self.assertEqual(round(Office.t_m, 2), 20.46) 860 | self.assertTrue(Office.has_heating_demand) 861 | self.assertEqual(round(Office.energy_demand, 2), 9.1) 862 | self.assertEqual(round(Office.heating_sys_electricity, 2), 2.43) 863 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 864 | self.assertEqual(round(Office.cop, 2), 3.75) 865 | self.assertEqual(Office.lighting_demand, 0) 866 | 867 | def test_WaterHeatPump_HeatingRequired_infl(self): 868 | 869 | t_out = 10 870 | t_m_prev = 20 871 | # Internal heat gains, in Watts 872 | internal_gains = 10 873 | 874 | # Solar heat gains after transmitting through the winow, in Watts 875 | solar_gains = 2000 876 | 877 | # Illuminance after transmitting through the window 878 | ill = 44000 # Lumens 879 | 880 | # Occupancy for the timestep [people/hour/square_meter] 881 | occupancy = 0.1 882 | 883 | # Set Zone Parameters 884 | Office = Zone(window_area=13.5, 885 | walls_area=15.19 - 13.5, 886 | floor_area=34.3, 887 | room_vol=106.33, 888 | total_internal_area=142.38, 889 | lighting_load=11.7, 890 | lighting_control=300, 891 | lighting_utilisation_factor=0.45, 892 | lighting_maintenance_factor=0.9, 893 | u_walls=0.2, 894 | u_windows=1.1, 895 | ach_vent=1.5, 896 | ach_infl=0.5, 897 | ventilation_efficiency=0.6, 898 | thermal_capacitance_per_floor_area=165000, 899 | t_set_heating=20, 900 | t_set_cooling=26, 901 | max_cooling_energy_per_floor_area=-12, 902 | max_heating_energy_per_floor_area=12, 903 | heating_supply_system=supply_system.HeatPumpWater, 904 | cooling_supply_system=supply_system.DirectCooler, 905 | heating_emission_system=emission_system.AirConditioning, 906 | cooling_emission_system=emission_system.AirConditioning, 907 | ) 908 | 909 | Office.solve_energy( 910 | internal_gains, solar_gains, t_out, t_m_prev) 911 | Office.solve_lighting(ill, occupancy) 912 | 913 | self.assertEqual(round(Office.t_m, 2), 20.46) 914 | self.assertTrue(Office.has_heating_demand) 915 | self.assertEqual(round(Office.energy_demand, 2), 9.1) 916 | self.assertEqual(round(Office.heating_sys_electricity, 2), 1.97) 917 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 918 | self.assertEqual(round(Office.cop, 2), 4.62) 919 | self.assertEqual(Office.lighting_demand, 0) 920 | 921 | def test_WaterHeatPump_mixedEmissions_infl(self): 922 | 923 | t_out = 10 924 | t_m_prev = 20 925 | # Internal heat gains, in Watts 926 | internal_gains = 10 927 | 928 | # Solar heat gains after transmitting through the winow, in Watts 929 | solar_gains = 2000 930 | 931 | # Illuminance after transmitting through the window 932 | ill = 44000 # Lumens 933 | 934 | # Occupancy for the timestep [people/hour/square_meter] 935 | occupancy = 0.1 936 | 937 | # Set Zone Parameters 938 | Office = Zone(window_area=13.5, 939 | walls_area=15.19 - 13.5, 940 | floor_area=34.3, 941 | room_vol=106.33, 942 | total_internal_area=142.38, 943 | lighting_load=11.7, 944 | lighting_control=300, 945 | lighting_utilisation_factor=0.45, 946 | lighting_maintenance_factor=0.9, 947 | u_walls=0.2, 948 | u_windows=1.1, 949 | ach_vent=1.5, 950 | ach_infl=0.5, 951 | ventilation_efficiency=0.6, 952 | thermal_capacitance_per_floor_area=165000, 953 | t_set_heating=20, 954 | t_set_cooling=26, 955 | max_cooling_energy_per_floor_area=-12, 956 | max_heating_energy_per_floor_area=12, 957 | heating_supply_system=supply_system.HeatPumpWater, 958 | cooling_supply_system=supply_system.HeatPumpAir, 959 | heating_emission_system=emission_system.FloorHeating, 960 | cooling_emission_system=emission_system.AirConditioning, 961 | ) 962 | 963 | Office.solve_energy( 964 | internal_gains, solar_gains, t_out, t_m_prev) 965 | Office.solve_lighting(ill, occupancy) 966 | 967 | self.assertEqual(round(Office.t_m, 2), 20.46) 968 | self.assertTrue(Office.has_heating_demand) 969 | self.assertEqual(round(Office.energy_demand, 2), 20.97) 970 | self.assertEqual(round(Office.heating_sys_electricity, 2), 4.54) 971 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 0) 972 | self.assertEqual(round(Office.cop, 2), 4.62) 973 | self.assertEqual(Office.lighting_demand, 0) 974 | 975 | t_out = 24 976 | t_m_prev = 25 977 | 978 | Office.solve_energy( 979 | internal_gains, solar_gains, t_out, t_m_prev) 980 | 981 | self.assertEqual(round(Office.energy_demand, 2), -191.55) 982 | self.assertEqual(round(Office.cooling_sys_electricity, 2), 39.61) 983 | 984 | 985 | if __name__ == '__main__': 986 | unittest.main() 987 | -------------------------------------------------------------------------------- /rc_simulator/auxiliary/schedules_el_OFFICE.csv: -------------------------------------------------------------------------------- 1 | People 2 | 0.08 3 | 0.08 4 | 0.08 5 | 0.08 6 | 0.08 7 | 0.08 8 | 0.08 9 | 0.16 10 | 0.32 11 | 0.64 12 | 0.64 13 | 0.32 14 | 0.16 15 | 0.32 16 | 0.64 17 | 0.64 18 | 0.16 19 | 0.08 20 | 0.08 21 | 0.08 22 | 0.08 23 | 0.08 24 | 0.08 25 | 0.08 26 | 0.08 27 | 0.08 28 | 0.08 29 | 0.08 30 | 0.08 31 | 0.08 32 | 0.08 33 | 0.16 34 | 0.32 35 | 0.64 36 | 0.64 37 | 0.32 38 | 0.16 39 | 0.32 40 | 0.64 41 | 0.64 42 | 0.16 43 | 0.08 44 | 0.08 45 | 0.08 46 | 0.08 47 | 0.08 48 | 0.08 49 | 0.08 50 | 0.08 51 | 0.08 52 | 0.08 53 | 0.08 54 | 0.08 55 | 0.08 56 | 0.08 57 | 0.16 58 | 0.32 59 | 0.64 60 | 0.64 61 | 0.32 62 | 0.16 63 | 0.32 64 | 0.64 65 | 0.64 66 | 0.16 67 | 0.08 68 | 0.08 69 | 0.08 70 | 0.08 71 | 0.08 72 | 0.08 73 | 0.08 74 | 0.08 75 | 0.08 76 | 0.08 77 | 0.08 78 | 0.08 79 | 0.08 80 | 0.08 81 | 0.16 82 | 0.32 83 | 0.64 84 | 0.64 85 | 0.32 86 | 0.16 87 | 0.32 88 | 0.64 89 | 0.64 90 | 0.16 91 | 0.08 92 | 0.08 93 | 0.08 94 | 0.08 95 | 0.08 96 | 0.08 97 | 0.08 98 | 0.08 99 | 0.08 100 | 0.08 101 | 0.08 102 | 0.08 103 | 0.08 104 | 0.08 105 | 0.08 106 | 0.08 107 | 0.08 108 | 0.08 109 | 0.08 110 | 0.08 111 | 0.08 112 | 0.08 113 | 0.08 114 | 0.08 115 | 0.08 116 | 0.08 117 | 0.08 118 | 0.08 119 | 0.08 120 | 0.08 121 | 0.08 122 | 0.08 123 | 0.08 124 | 0.08 125 | 0.08 126 | 0.08 127 | 0.08 128 | 0.08 129 | 0.08 130 | 0.08 131 | 0.08 132 | 0.08 133 | 0.08 134 | 0.08 135 | 0.08 136 | 0.08 137 | 0.08 138 | 0.08 139 | 0.08 140 | 0.08 141 | 0.08 142 | 0.08 143 | 0.08 144 | 0.08 145 | 0.08 146 | 0.08 147 | 0.08 148 | 0.08 149 | 0.08 150 | 0.08 151 | 0.08 152 | 0.08 153 | 0.16 154 | 0.32 155 | 0.64 156 | 0.64 157 | 0.32 158 | 0.16 159 | 0.32 160 | 0.64 161 | 0.64 162 | 0.16 163 | 0.08 164 | 0.08 165 | 0.08 166 | 0.08 167 | 0.08 168 | 0.08 169 | 0.08 170 | 0.08 171 | 0.08 172 | 0.08 173 | 0.08 174 | 0.08 175 | 0.08 176 | 0.08 177 | 0.16 178 | 0.32 179 | 0.64 180 | 0.64 181 | 0.32 182 | 0.16 183 | 0.32 184 | 0.64 185 | 0.64 186 | 0.16 187 | 0.08 188 | 0.08 189 | 0.08 190 | 0.08 191 | 0.08 192 | 0.08 193 | 0.08 194 | 0.08 195 | 0.08 196 | 0.08 197 | 0.08 198 | 0.08 199 | 0.08 200 | 0.08 201 | 0.16 202 | 0.32 203 | 0.64 204 | 0.64 205 | 0.32 206 | 0.16 207 | 0.32 208 | 0.64 209 | 0.64 210 | 0.16 211 | 0.08 212 | 0.08 213 | 0.08 214 | 0.08 215 | 0.08 216 | 0.08 217 | 0.08 218 | 0.08 219 | 0.08 220 | 0.08 221 | 0.08 222 | 0.08 223 | 0.08 224 | 0.08 225 | 0.16 226 | 0.32 227 | 0.64 228 | 0.64 229 | 0.32 230 | 0.16 231 | 0.32 232 | 0.64 233 | 0.64 234 | 0.16 235 | 0.08 236 | 0.08 237 | 0.08 238 | 0.08 239 | 0.08 240 | 0.08 241 | 0.08 242 | 0.08 243 | 0.08 244 | 0.08 245 | 0.08 246 | 0.08 247 | 0.08 248 | 0.08 249 | 0.16 250 | 0.32 251 | 0.64 252 | 0.64 253 | 0.32 254 | 0.16 255 | 0.32 256 | 0.64 257 | 0.64 258 | 0.16 259 | 0.08 260 | 0.08 261 | 0.08 262 | 0.08 263 | 0.08 264 | 0.08 265 | 0.08 266 | 0.08 267 | 0.08 268 | 0.08 269 | 0.08 270 | 0.08 271 | 0.08 272 | 0.08 273 | 0.08 274 | 0.08 275 | 0.08 276 | 0.08 277 | 0.08 278 | 0.08 279 | 0.08 280 | 0.08 281 | 0.08 282 | 0.08 283 | 0.08 284 | 0.08 285 | 0.08 286 | 0.08 287 | 0.08 288 | 0.08 289 | 0.08 290 | 0.08 291 | 0.08 292 | 0.08 293 | 0.08 294 | 0.08 295 | 0.08 296 | 0.08 297 | 0.08 298 | 0.08 299 | 0.08 300 | 0.08 301 | 0.08 302 | 0.08 303 | 0.08 304 | 0.08 305 | 0.08 306 | 0.08 307 | 0.08 308 | 0.08 309 | 0.08 310 | 0.08 311 | 0.08 312 | 0.08 313 | 0.08 314 | 0.08 315 | 0.08 316 | 0.08 317 | 0.08 318 | 0.08 319 | 0.08 320 | 0.08 321 | 0.16 322 | 0.32 323 | 0.64 324 | 0.64 325 | 0.32 326 | 0.16 327 | 0.32 328 | 0.64 329 | 0.64 330 | 0.16 331 | 0.08 332 | 0.08 333 | 0.08 334 | 0.08 335 | 0.08 336 | 0.08 337 | 0.08 338 | 0.08 339 | 0.08 340 | 0.08 341 | 0.08 342 | 0.08 343 | 0.08 344 | 0.08 345 | 0.16 346 | 0.32 347 | 0.64 348 | 0.64 349 | 0.32 350 | 0.16 351 | 0.32 352 | 0.64 353 | 0.64 354 | 0.16 355 | 0.08 356 | 0.08 357 | 0.08 358 | 0.08 359 | 0.08 360 | 0.08 361 | 0.08 362 | 0.08 363 | 0.08 364 | 0.08 365 | 0.08 366 | 0.08 367 | 0.08 368 | 0.08 369 | 0.16 370 | 0.32 371 | 0.64 372 | 0.64 373 | 0.32 374 | 0.16 375 | 0.32 376 | 0.64 377 | 0.64 378 | 0.16 379 | 0.08 380 | 0.08 381 | 0.08 382 | 0.08 383 | 0.08 384 | 0.08 385 | 0.08 386 | 0.08 387 | 0.08 388 | 0.08 389 | 0.08 390 | 0.08 391 | 0.08 392 | 0.08 393 | 0.16 394 | 0.32 395 | 0.64 396 | 0.64 397 | 0.32 398 | 0.16 399 | 0.32 400 | 0.64 401 | 0.64 402 | 0.16 403 | 0.08 404 | 0.08 405 | 0.08 406 | 0.08 407 | 0.08 408 | 0.08 409 | 0.08 410 | 0.08 411 | 0.08 412 | 0.08 413 | 0.08 414 | 0.08 415 | 0.08 416 | 0.08 417 | 0.16 418 | 0.32 419 | 0.64 420 | 0.64 421 | 0.32 422 | 0.16 423 | 0.32 424 | 0.64 425 | 0.64 426 | 0.16 427 | 0.08 428 | 0.08 429 | 0.08 430 | 0.08 431 | 0.08 432 | 0.08 433 | 0.08 434 | 0.08 435 | 0.08 436 | 0.08 437 | 0.08 438 | 0.08 439 | 0.08 440 | 0.08 441 | 0.08 442 | 0.08 443 | 0.08 444 | 0.08 445 | 0.08 446 | 0.08 447 | 0.08 448 | 0.08 449 | 0.08 450 | 0.08 451 | 0.08 452 | 0.08 453 | 0.08 454 | 0.08 455 | 0.08 456 | 0.08 457 | 0.08 458 | 0.08 459 | 0.08 460 | 0.08 461 | 0.08 462 | 0.08 463 | 0.08 464 | 0.08 465 | 0.08 466 | 0.08 467 | 0.08 468 | 0.08 469 | 0.08 470 | 0.08 471 | 0.08 472 | 0.08 473 | 0.08 474 | 0.08 475 | 0.08 476 | 0.08 477 | 0.08 478 | 0.08 479 | 0.08 480 | 0.08 481 | 0.08 482 | 0.08 483 | 0.08 484 | 0.08 485 | 0.08 486 | 0.08 487 | 0.08 488 | 0.08 489 | 0.16 490 | 0.32 491 | 0.64 492 | 0.64 493 | 0.32 494 | 0.16 495 | 0.32 496 | 0.64 497 | 0.64 498 | 0.16 499 | 0.08 500 | 0.08 501 | 0.08 502 | 0.08 503 | 0.08 504 | 0.08 505 | 0.08 506 | 0.08 507 | 0.08 508 | 0.08 509 | 0.08 510 | 0.08 511 | 0.08 512 | 0.08 513 | 0.16 514 | 0.32 515 | 0.64 516 | 0.64 517 | 0.32 518 | 0.16 519 | 0.32 520 | 0.64 521 | 0.64 522 | 0.16 523 | 0.08 524 | 0.08 525 | 0.08 526 | 0.08 527 | 0.08 528 | 0.08 529 | 0.08 530 | 0.08 531 | 0.08 532 | 0.08 533 | 0.08 534 | 0.08 535 | 0.08 536 | 0.08 537 | 0.16 538 | 0.32 539 | 0.64 540 | 0.64 541 | 0.32 542 | 0.16 543 | 0.32 544 | 0.64 545 | 0.64 546 | 0.16 547 | 0.08 548 | 0.08 549 | 0.08 550 | 0.08 551 | 0.08 552 | 0.08 553 | 0.08 554 | 0.08 555 | 0.08 556 | 0.08 557 | 0.08 558 | 0.08 559 | 0.08 560 | 0.08 561 | 0.16 562 | 0.32 563 | 0.64 564 | 0.64 565 | 0.32 566 | 0.16 567 | 0.32 568 | 0.64 569 | 0.64 570 | 0.16 571 | 0.08 572 | 0.08 573 | 0.08 574 | 0.08 575 | 0.08 576 | 0.08 577 | 0.08 578 | 0.08 579 | 0.08 580 | 0.08 581 | 0.08 582 | 0.08 583 | 0.08 584 | 0.08 585 | 0.16 586 | 0.32 587 | 0.64 588 | 0.64 589 | 0.32 590 | 0.16 591 | 0.32 592 | 0.64 593 | 0.64 594 | 0.16 595 | 0.08 596 | 0.08 597 | 0.08 598 | 0.08 599 | 0.08 600 | 0.08 601 | 0.08 602 | 0.08 603 | 0.08 604 | 0.08 605 | 0.08 606 | 0.08 607 | 0.08 608 | 0.08 609 | 0.08 610 | 0.08 611 | 0.08 612 | 0.08 613 | 0.08 614 | 0.08 615 | 0.08 616 | 0.08 617 | 0.08 618 | 0.08 619 | 0.08 620 | 0.08 621 | 0.08 622 | 0.08 623 | 0.08 624 | 0.08 625 | 0.08 626 | 0.08 627 | 0.08 628 | 0.08 629 | 0.08 630 | 0.08 631 | 0.08 632 | 0.08 633 | 0.08 634 | 0.08 635 | 0.08 636 | 0.08 637 | 0.08 638 | 0.08 639 | 0.08 640 | 0.08 641 | 0.08 642 | 0.08 643 | 0.08 644 | 0.08 645 | 0.08 646 | 0.08 647 | 0.08 648 | 0.08 649 | 0.08 650 | 0.08 651 | 0.08 652 | 0.08 653 | 0.08 654 | 0.08 655 | 0.08 656 | 0.08 657 | 0.16 658 | 0.32 659 | 0.64 660 | 0.64 661 | 0.32 662 | 0.16 663 | 0.32 664 | 0.64 665 | 0.64 666 | 0.16 667 | 0.08 668 | 0.08 669 | 0.08 670 | 0.08 671 | 0.08 672 | 0.08 673 | 0.08 674 | 0.08 675 | 0.08 676 | 0.08 677 | 0.08 678 | 0.08 679 | 0.08 680 | 0.08 681 | 0.16 682 | 0.32 683 | 0.64 684 | 0.64 685 | 0.32 686 | 0.16 687 | 0.32 688 | 0.64 689 | 0.64 690 | 0.16 691 | 0.08 692 | 0.08 693 | 0.08 694 | 0.08 695 | 0.08 696 | 0.08 697 | 0.08 698 | 0.08 699 | 0.08 700 | 0.08 701 | 0.08 702 | 0.08 703 | 0.08 704 | 0.08 705 | 0.16 706 | 0.32 707 | 0.64 708 | 0.64 709 | 0.32 710 | 0.16 711 | 0.32 712 | 0.64 713 | 0.64 714 | 0.16 715 | 0.08 716 | 0.08 717 | 0.08 718 | 0.08 719 | 0.08 720 | 0.08 721 | 0.08 722 | 0.08 723 | 0.08 724 | 0.08 725 | 0.08 726 | 0.08 727 | 0.08 728 | 0.08 729 | 0.16 730 | 0.32 731 | 0.64 732 | 0.64 733 | 0.32 734 | 0.16 735 | 0.32 736 | 0.64 737 | 0.64 738 | 0.16 739 | 0.08 740 | 0.08 741 | 0.08 742 | 0.08 743 | 0.08 744 | 0.08 745 | 0.08 746 | 0.06 747 | 0.06 748 | 0.06 749 | 0.06 750 | 0.06 751 | 0.06 752 | 0.06 753 | 0.12 754 | 0.24 755 | 0.48 756 | 0.48 757 | 0.24 758 | 0.12 759 | 0.24 760 | 0.48 761 | 0.48 762 | 0.12 763 | 0.06 764 | 0.06 765 | 0.06 766 | 0.06 767 | 0.06 768 | 0.06 769 | 0.06 770 | 0.06 771 | 0.06 772 | 0.06 773 | 0.06 774 | 0.06 775 | 0.06 776 | 0.06 777 | 0.06 778 | 0.06 779 | 0.06 780 | 0.06 781 | 0.06 782 | 0.06 783 | 0.06 784 | 0.06 785 | 0.06 786 | 0.06 787 | 0.06 788 | 0.06 789 | 0.06 790 | 0.06 791 | 0.06 792 | 0.06 793 | 0.06 794 | 0.06 795 | 0.06 796 | 0.06 797 | 0.06 798 | 0.06 799 | 0.06 800 | 0.06 801 | 0.06 802 | 0.06 803 | 0.06 804 | 0.06 805 | 0.06 806 | 0.06 807 | 0.06 808 | 0.06 809 | 0.06 810 | 0.06 811 | 0.06 812 | 0.06 813 | 0.06 814 | 0.06 815 | 0.06 816 | 0.06 817 | 0.06 818 | 0.06 819 | 0.06 820 | 0.06 821 | 0.06 822 | 0.06 823 | 0.06 824 | 0.06 825 | 0.12 826 | 0.24 827 | 0.48 828 | 0.48 829 | 0.24 830 | 0.12 831 | 0.24 832 | 0.48 833 | 0.48 834 | 0.12 835 | 0.06 836 | 0.06 837 | 0.06 838 | 0.06 839 | 0.06 840 | 0.06 841 | 0.06 842 | 0.06 843 | 0.06 844 | 0.06 845 | 0.06 846 | 0.06 847 | 0.06 848 | 0.06 849 | 0.12 850 | 0.24 851 | 0.48 852 | 0.48 853 | 0.24 854 | 0.12 855 | 0.24 856 | 0.48 857 | 0.48 858 | 0.12 859 | 0.06 860 | 0.06 861 | 0.06 862 | 0.06 863 | 0.06 864 | 0.06 865 | 0.06 866 | 0.06 867 | 0.06 868 | 0.06 869 | 0.06 870 | 0.06 871 | 0.06 872 | 0.06 873 | 0.12 874 | 0.24 875 | 0.48 876 | 0.48 877 | 0.24 878 | 0.12 879 | 0.24 880 | 0.48 881 | 0.48 882 | 0.12 883 | 0.06 884 | 0.06 885 | 0.06 886 | 0.06 887 | 0.06 888 | 0.06 889 | 0.06 890 | 0.06 891 | 0.06 892 | 0.06 893 | 0.06 894 | 0.06 895 | 0.06 896 | 0.06 897 | 0.12 898 | 0.24 899 | 0.48 900 | 0.48 901 | 0.24 902 | 0.12 903 | 0.24 904 | 0.48 905 | 0.48 906 | 0.12 907 | 0.06 908 | 0.06 909 | 0.06 910 | 0.06 911 | 0.06 912 | 0.06 913 | 0.06 914 | 0.06 915 | 0.06 916 | 0.06 917 | 0.06 918 | 0.06 919 | 0.06 920 | 0.06 921 | 0.12 922 | 0.24 923 | 0.48 924 | 0.48 925 | 0.24 926 | 0.12 927 | 0.24 928 | 0.48 929 | 0.48 930 | 0.12 931 | 0.06 932 | 0.06 933 | 0.06 934 | 0.06 935 | 0.06 936 | 0.06 937 | 0.06 938 | 0.06 939 | 0.06 940 | 0.06 941 | 0.06 942 | 0.06 943 | 0.06 944 | 0.06 945 | 0.06 946 | 0.06 947 | 0.06 948 | 0.06 949 | 0.06 950 | 0.06 951 | 0.06 952 | 0.06 953 | 0.06 954 | 0.06 955 | 0.06 956 | 0.06 957 | 0.06 958 | 0.06 959 | 0.06 960 | 0.06 961 | 0.06 962 | 0.06 963 | 0.06 964 | 0.06 965 | 0.06 966 | 0.06 967 | 0.06 968 | 0.06 969 | 0.06 970 | 0.06 971 | 0.06 972 | 0.06 973 | 0.06 974 | 0.06 975 | 0.06 976 | 0.06 977 | 0.06 978 | 0.06 979 | 0.06 980 | 0.06 981 | 0.06 982 | 0.06 983 | 0.06 984 | 0.06 985 | 0.06 986 | 0.06 987 | 0.06 988 | 0.06 989 | 0.06 990 | 0.06 991 | 0.06 992 | 0.06 993 | 0.12 994 | 0.24 995 | 0.48 996 | 0.48 997 | 0.24 998 | 0.12 999 | 0.24 1000 | 0.48 1001 | 0.48 1002 | 0.12 1003 | 0.06 1004 | 0.06 1005 | 0.06 1006 | 0.06 1007 | 0.06 1008 | 0.06 1009 | 0.06 1010 | 0.06 1011 | 0.06 1012 | 0.06 1013 | 0.06 1014 | 0.06 1015 | 0.06 1016 | 0.06 1017 | 0.12 1018 | 0.24 1019 | 0.48 1020 | 0.48 1021 | 0.24 1022 | 0.12 1023 | 0.24 1024 | 0.48 1025 | 0.48 1026 | 0.12 1027 | 0.06 1028 | 0.06 1029 | 0.06 1030 | 0.06 1031 | 0.06 1032 | 0.06 1033 | 0.06 1034 | 0.06 1035 | 0.06 1036 | 0.06 1037 | 0.06 1038 | 0.06 1039 | 0.06 1040 | 0.06 1041 | 0.12 1042 | 0.24 1043 | 0.48 1044 | 0.48 1045 | 0.24 1046 | 0.12 1047 | 0.24 1048 | 0.48 1049 | 0.48 1050 | 0.12 1051 | 0.06 1052 | 0.06 1053 | 0.06 1054 | 0.06 1055 | 0.06 1056 | 0.06 1057 | 0.06 1058 | 0.06 1059 | 0.06 1060 | 0.06 1061 | 0.06 1062 | 0.06 1063 | 0.06 1064 | 0.06 1065 | 0.12 1066 | 0.24 1067 | 0.48 1068 | 0.48 1069 | 0.24 1070 | 0.12 1071 | 0.24 1072 | 0.48 1073 | 0.48 1074 | 0.12 1075 | 0.06 1076 | 0.06 1077 | 0.06 1078 | 0.06 1079 | 0.06 1080 | 0.06 1081 | 0.06 1082 | 0.06 1083 | 0.06 1084 | 0.06 1085 | 0.06 1086 | 0.06 1087 | 0.06 1088 | 0.06 1089 | 0.12 1090 | 0.24 1091 | 0.48 1092 | 0.48 1093 | 0.24 1094 | 0.12 1095 | 0.24 1096 | 0.48 1097 | 0.48 1098 | 0.12 1099 | 0.06 1100 | 0.06 1101 | 0.06 1102 | 0.06 1103 | 0.06 1104 | 0.06 1105 | 0.06 1106 | 0.06 1107 | 0.06 1108 | 0.06 1109 | 0.06 1110 | 0.06 1111 | 0.06 1112 | 0.06 1113 | 0.06 1114 | 0.06 1115 | 0.06 1116 | 0.06 1117 | 0.06 1118 | 0.06 1119 | 0.06 1120 | 0.06 1121 | 0.06 1122 | 0.06 1123 | 0.06 1124 | 0.06 1125 | 0.06 1126 | 0.06 1127 | 0.06 1128 | 0.06 1129 | 0.06 1130 | 0.06 1131 | 0.06 1132 | 0.06 1133 | 0.06 1134 | 0.06 1135 | 0.06 1136 | 0.06 1137 | 0.06 1138 | 0.06 1139 | 0.06 1140 | 0.06 1141 | 0.06 1142 | 0.06 1143 | 0.06 1144 | 0.06 1145 | 0.06 1146 | 0.06 1147 | 0.06 1148 | 0.06 1149 | 0.06 1150 | 0.06 1151 | 0.06 1152 | 0.06 1153 | 0.06 1154 | 0.06 1155 | 0.06 1156 | 0.06 1157 | 0.06 1158 | 0.06 1159 | 0.06 1160 | 0.06 1161 | 0.12 1162 | 0.24 1163 | 0.48 1164 | 0.48 1165 | 0.24 1166 | 0.12 1167 | 0.24 1168 | 0.48 1169 | 0.48 1170 | 0.12 1171 | 0.06 1172 | 0.06 1173 | 0.06 1174 | 0.06 1175 | 0.06 1176 | 0.06 1177 | 0.06 1178 | 0.06 1179 | 0.06 1180 | 0.06 1181 | 0.06 1182 | 0.06 1183 | 0.06 1184 | 0.06 1185 | 0.12 1186 | 0.24 1187 | 0.48 1188 | 0.48 1189 | 0.24 1190 | 0.12 1191 | 0.24 1192 | 0.48 1193 | 0.48 1194 | 0.12 1195 | 0.06 1196 | 0.06 1197 | 0.06 1198 | 0.06 1199 | 0.06 1200 | 0.06 1201 | 0.06 1202 | 0.06 1203 | 0.06 1204 | 0.06 1205 | 0.06 1206 | 0.06 1207 | 0.06 1208 | 0.06 1209 | 0.12 1210 | 0.24 1211 | 0.48 1212 | 0.48 1213 | 0.24 1214 | 0.12 1215 | 0.24 1216 | 0.48 1217 | 0.48 1218 | 0.12 1219 | 0.06 1220 | 0.06 1221 | 0.06 1222 | 0.06 1223 | 0.06 1224 | 0.06 1225 | 0.06 1226 | 0.06 1227 | 0.06 1228 | 0.06 1229 | 0.06 1230 | 0.06 1231 | 0.06 1232 | 0.06 1233 | 0.12 1234 | 0.24 1235 | 0.48 1236 | 0.48 1237 | 0.24 1238 | 0.12 1239 | 0.24 1240 | 0.48 1241 | 0.48 1242 | 0.12 1243 | 0.06 1244 | 0.06 1245 | 0.06 1246 | 0.06 1247 | 0.06 1248 | 0.06 1249 | 0.06 1250 | 0.06 1251 | 0.06 1252 | 0.06 1253 | 0.06 1254 | 0.06 1255 | 0.06 1256 | 0.06 1257 | 0.12 1258 | 0.24 1259 | 0.48 1260 | 0.48 1261 | 0.24 1262 | 0.12 1263 | 0.24 1264 | 0.48 1265 | 0.48 1266 | 0.12 1267 | 0.06 1268 | 0.06 1269 | 0.06 1270 | 0.06 1271 | 0.06 1272 | 0.06 1273 | 0.06 1274 | 0.06 1275 | 0.06 1276 | 0.06 1277 | 0.06 1278 | 0.06 1279 | 0.06 1280 | 0.06 1281 | 0.06 1282 | 0.06 1283 | 0.06 1284 | 0.06 1285 | 0.06 1286 | 0.06 1287 | 0.06 1288 | 0.06 1289 | 0.06 1290 | 0.06 1291 | 0.06 1292 | 0.06 1293 | 0.06 1294 | 0.06 1295 | 0.06 1296 | 0.06 1297 | 0.06 1298 | 0.06 1299 | 0.06 1300 | 0.06 1301 | 0.06 1302 | 0.06 1303 | 0.06 1304 | 0.06 1305 | 0.06 1306 | 0.06 1307 | 0.06 1308 | 0.06 1309 | 0.06 1310 | 0.06 1311 | 0.06 1312 | 0.06 1313 | 0.06 1314 | 0.06 1315 | 0.06 1316 | 0.06 1317 | 0.06 1318 | 0.06 1319 | 0.06 1320 | 0.06 1321 | 0.06 1322 | 0.06 1323 | 0.06 1324 | 0.06 1325 | 0.06 1326 | 0.06 1327 | 0.06 1328 | 0.06 1329 | 0.12 1330 | 0.24 1331 | 0.48 1332 | 0.48 1333 | 0.24 1334 | 0.12 1335 | 0.24 1336 | 0.48 1337 | 0.48 1338 | 0.12 1339 | 0.06 1340 | 0.06 1341 | 0.06 1342 | 0.06 1343 | 0.06 1344 | 0.06 1345 | 0.06 1346 | 0.06 1347 | 0.06 1348 | 0.06 1349 | 0.06 1350 | 0.06 1351 | 0.06 1352 | 0.06 1353 | 0.12 1354 | 0.24 1355 | 0.48 1356 | 0.48 1357 | 0.24 1358 | 0.12 1359 | 0.24 1360 | 0.48 1361 | 0.48 1362 | 0.12 1363 | 0.06 1364 | 0.06 1365 | 0.06 1366 | 0.06 1367 | 0.06 1368 | 0.06 1369 | 0.06 1370 | 0.06 1371 | 0.06 1372 | 0.06 1373 | 0.06 1374 | 0.06 1375 | 0.06 1376 | 0.06 1377 | 0.12 1378 | 0.24 1379 | 0.48 1380 | 0.48 1381 | 0.24 1382 | 0.12 1383 | 0.24 1384 | 0.48 1385 | 0.48 1386 | 0.12 1387 | 0.06 1388 | 0.06 1389 | 0.06 1390 | 0.06 1391 | 0.06 1392 | 0.06 1393 | 0.06 1394 | 0.06 1395 | 0.06 1396 | 0.06 1397 | 0.06 1398 | 0.06 1399 | 0.06 1400 | 0.06 1401 | 0.12 1402 | 0.24 1403 | 0.48 1404 | 0.48 1405 | 0.24 1406 | 0.12 1407 | 0.24 1408 | 0.48 1409 | 0.48 1410 | 0.12 1411 | 0.06 1412 | 0.06 1413 | 0.06 1414 | 0.06 1415 | 0.06 1416 | 0.06 1417 | 0.06 1418 | 0.1 1419 | 0.1 1420 | 0.1 1421 | 0.1 1422 | 0.1 1423 | 0.1 1424 | 0.1 1425 | 0.2 1426 | 0.4 1427 | 0.8 1428 | 0.8 1429 | 0.4 1430 | 0.2 1431 | 0.4 1432 | 0.8 1433 | 0.8 1434 | 0.2 1435 | 0.1 1436 | 0.1 1437 | 0.1 1438 | 0.1 1439 | 0.1 1440 | 0.1 1441 | 0.1 1442 | 0.1 1443 | 0.1 1444 | 0.1 1445 | 0.1 1446 | 0.1 1447 | 0.1 1448 | 0.1 1449 | 0.1 1450 | 0.1 1451 | 0.1 1452 | 0.1 1453 | 0.1 1454 | 0.1 1455 | 0.1 1456 | 0.1 1457 | 0.1 1458 | 0.1 1459 | 0.1 1460 | 0.1 1461 | 0.1 1462 | 0.1 1463 | 0.1 1464 | 0.1 1465 | 0.1 1466 | 0.1 1467 | 0.1 1468 | 0.1 1469 | 0.1 1470 | 0.1 1471 | 0.1 1472 | 0.1 1473 | 0.1 1474 | 0.1 1475 | 0.1 1476 | 0.1 1477 | 0.1 1478 | 0.1 1479 | 0.1 1480 | 0.1 1481 | 0.1 1482 | 0.1 1483 | 0.1 1484 | 0.1 1485 | 0.1 1486 | 0.1 1487 | 0.1 1488 | 0.1 1489 | 0.1 1490 | 0.1 1491 | 0.1 1492 | 0.1 1493 | 0.1 1494 | 0.1 1495 | 0.1 1496 | 0.1 1497 | 0.2 1498 | 0.4 1499 | 0.8 1500 | 0.8 1501 | 0.4 1502 | 0.2 1503 | 0.4 1504 | 0.8 1505 | 0.8 1506 | 0.2 1507 | 0.1 1508 | 0.1 1509 | 0.1 1510 | 0.1 1511 | 0.1 1512 | 0.1 1513 | 0.1 1514 | 0.1 1515 | 0.1 1516 | 0.1 1517 | 0.1 1518 | 0.1 1519 | 0.1 1520 | 0.1 1521 | 0.2 1522 | 0.4 1523 | 0.8 1524 | 0.8 1525 | 0.4 1526 | 0.2 1527 | 0.4 1528 | 0.8 1529 | 0.8 1530 | 0.2 1531 | 0.1 1532 | 0.1 1533 | 0.1 1534 | 0.1 1535 | 0.1 1536 | 0.1 1537 | 0.1 1538 | 0.1 1539 | 0.1 1540 | 0.1 1541 | 0.1 1542 | 0.1 1543 | 0.1 1544 | 0.1 1545 | 0.2 1546 | 0.4 1547 | 0.8 1548 | 0.8 1549 | 0.4 1550 | 0.2 1551 | 0.4 1552 | 0.8 1553 | 0.8 1554 | 0.2 1555 | 0.1 1556 | 0.1 1557 | 0.1 1558 | 0.1 1559 | 0.1 1560 | 0.1 1561 | 0.1 1562 | 0.1 1563 | 0.1 1564 | 0.1 1565 | 0.1 1566 | 0.1 1567 | 0.1 1568 | 0.1 1569 | 0.2 1570 | 0.4 1571 | 0.8 1572 | 0.8 1573 | 0.4 1574 | 0.2 1575 | 0.4 1576 | 0.8 1577 | 0.8 1578 | 0.2 1579 | 0.1 1580 | 0.1 1581 | 0.1 1582 | 0.1 1583 | 0.1 1584 | 0.1 1585 | 0.1 1586 | 0.1 1587 | 0.1 1588 | 0.1 1589 | 0.1 1590 | 0.1 1591 | 0.1 1592 | 0.1 1593 | 0.2 1594 | 0.4 1595 | 0.8 1596 | 0.8 1597 | 0.4 1598 | 0.2 1599 | 0.4 1600 | 0.8 1601 | 0.8 1602 | 0.2 1603 | 0.1 1604 | 0.1 1605 | 0.1 1606 | 0.1 1607 | 0.1 1608 | 0.1 1609 | 0.1 1610 | 0.1 1611 | 0.1 1612 | 0.1 1613 | 0.1 1614 | 0.1 1615 | 0.1 1616 | 0.1 1617 | 0.1 1618 | 0.1 1619 | 0.1 1620 | 0.1 1621 | 0.1 1622 | 0.1 1623 | 0.1 1624 | 0.1 1625 | 0.1 1626 | 0.1 1627 | 0.1 1628 | 0.1 1629 | 0.1 1630 | 0.1 1631 | 0.1 1632 | 0.1 1633 | 0.1 1634 | 0.1 1635 | 0.1 1636 | 0.1 1637 | 0.1 1638 | 0.1 1639 | 0.1 1640 | 0.1 1641 | 0.1 1642 | 0.1 1643 | 0.1 1644 | 0.1 1645 | 0.1 1646 | 0.1 1647 | 0.1 1648 | 0.1 1649 | 0.1 1650 | 0.1 1651 | 0.1 1652 | 0.1 1653 | 0.1 1654 | 0.1 1655 | 0.1 1656 | 0.1 1657 | 0.1 1658 | 0.1 1659 | 0.1 1660 | 0.1 1661 | 0.1 1662 | 0.1 1663 | 0.1 1664 | 0.1 1665 | 0.2 1666 | 0.4 1667 | 0.8 1668 | 0.8 1669 | 0.4 1670 | 0.2 1671 | 0.4 1672 | 0.8 1673 | 0.8 1674 | 0.2 1675 | 0.1 1676 | 0.1 1677 | 0.1 1678 | 0.1 1679 | 0.1 1680 | 0.1 1681 | 0.1 1682 | 0.1 1683 | 0.1 1684 | 0.1 1685 | 0.1 1686 | 0.1 1687 | 0.1 1688 | 0.1 1689 | 0.2 1690 | 0.4 1691 | 0.8 1692 | 0.8 1693 | 0.4 1694 | 0.2 1695 | 0.4 1696 | 0.8 1697 | 0.8 1698 | 0.2 1699 | 0.1 1700 | 0.1 1701 | 0.1 1702 | 0.1 1703 | 0.1 1704 | 0.1 1705 | 0.1 1706 | 0.1 1707 | 0.1 1708 | 0.1 1709 | 0.1 1710 | 0.1 1711 | 0.1 1712 | 0.1 1713 | 0.2 1714 | 0.4 1715 | 0.8 1716 | 0.8 1717 | 0.4 1718 | 0.2 1719 | 0.4 1720 | 0.8 1721 | 0.8 1722 | 0.2 1723 | 0.1 1724 | 0.1 1725 | 0.1 1726 | 0.1 1727 | 0.1 1728 | 0.1 1729 | 0.1 1730 | 0.1 1731 | 0.1 1732 | 0.1 1733 | 0.1 1734 | 0.1 1735 | 0.1 1736 | 0.1 1737 | 0.2 1738 | 0.4 1739 | 0.8 1740 | 0.8 1741 | 0.4 1742 | 0.2 1743 | 0.4 1744 | 0.8 1745 | 0.8 1746 | 0.2 1747 | 0.1 1748 | 0.1 1749 | 0.1 1750 | 0.1 1751 | 0.1 1752 | 0.1 1753 | 0.1 1754 | 0.1 1755 | 0.1 1756 | 0.1 1757 | 0.1 1758 | 0.1 1759 | 0.1 1760 | 0.1 1761 | 0.2 1762 | 0.4 1763 | 0.8 1764 | 0.8 1765 | 0.4 1766 | 0.2 1767 | 0.4 1768 | 0.8 1769 | 0.8 1770 | 0.2 1771 | 0.1 1772 | 0.1 1773 | 0.1 1774 | 0.1 1775 | 0.1 1776 | 0.1 1777 | 0.1 1778 | 0.1 1779 | 0.1 1780 | 0.1 1781 | 0.1 1782 | 0.1 1783 | 0.1 1784 | 0.1 1785 | 0.1 1786 | 0.1 1787 | 0.1 1788 | 0.1 1789 | 0.1 1790 | 0.1 1791 | 0.1 1792 | 0.1 1793 | 0.1 1794 | 0.1 1795 | 0.1 1796 | 0.1 1797 | 0.1 1798 | 0.1 1799 | 0.1 1800 | 0.1 1801 | 0.1 1802 | 0.1 1803 | 0.1 1804 | 0.1 1805 | 0.1 1806 | 0.1 1807 | 0.1 1808 | 0.1 1809 | 0.1 1810 | 0.1 1811 | 0.1 1812 | 0.1 1813 | 0.1 1814 | 0.1 1815 | 0.1 1816 | 0.1 1817 | 0.1 1818 | 0.1 1819 | 0.1 1820 | 0.1 1821 | 0.1 1822 | 0.1 1823 | 0.1 1824 | 0.1 1825 | 0.1 1826 | 0.1 1827 | 0.1 1828 | 0.1 1829 | 0.1 1830 | 0.1 1831 | 0.1 1832 | 0.1 1833 | 0.2 1834 | 0.4 1835 | 0.8 1836 | 0.8 1837 | 0.4 1838 | 0.2 1839 | 0.4 1840 | 0.8 1841 | 0.8 1842 | 0.2 1843 | 0.1 1844 | 0.1 1845 | 0.1 1846 | 0.1 1847 | 0.1 1848 | 0.1 1849 | 0.1 1850 | 0.1 1851 | 0.1 1852 | 0.1 1853 | 0.1 1854 | 0.1 1855 | 0.1 1856 | 0.1 1857 | 0.2 1858 | 0.4 1859 | 0.8 1860 | 0.8 1861 | 0.4 1862 | 0.2 1863 | 0.4 1864 | 0.8 1865 | 0.8 1866 | 0.2 1867 | 0.1 1868 | 0.1 1869 | 0.1 1870 | 0.1 1871 | 0.1 1872 | 0.1 1873 | 0.1 1874 | 0.1 1875 | 0.1 1876 | 0.1 1877 | 0.1 1878 | 0.1 1879 | 0.1 1880 | 0.1 1881 | 0.2 1882 | 0.4 1883 | 0.8 1884 | 0.8 1885 | 0.4 1886 | 0.2 1887 | 0.4 1888 | 0.8 1889 | 0.8 1890 | 0.2 1891 | 0.1 1892 | 0.1 1893 | 0.1 1894 | 0.1 1895 | 0.1 1896 | 0.1 1897 | 0.1 1898 | 0.1 1899 | 0.1 1900 | 0.1 1901 | 0.1 1902 | 0.1 1903 | 0.1 1904 | 0.1 1905 | 0.2 1906 | 0.4 1907 | 0.8 1908 | 0.8 1909 | 0.4 1910 | 0.2 1911 | 0.4 1912 | 0.8 1913 | 0.8 1914 | 0.2 1915 | 0.1 1916 | 0.1 1917 | 0.1 1918 | 0.1 1919 | 0.1 1920 | 0.1 1921 | 0.1 1922 | 0.1 1923 | 0.1 1924 | 0.1 1925 | 0.1 1926 | 0.1 1927 | 0.1 1928 | 0.1 1929 | 0.2 1930 | 0.4 1931 | 0.8 1932 | 0.8 1933 | 0.4 1934 | 0.2 1935 | 0.4 1936 | 0.8 1937 | 0.8 1938 | 0.2 1939 | 0.1 1940 | 0.1 1941 | 0.1 1942 | 0.1 1943 | 0.1 1944 | 0.1 1945 | 0.1 1946 | 0.1 1947 | 0.1 1948 | 0.1 1949 | 0.1 1950 | 0.1 1951 | 0.1 1952 | 0.1 1953 | 0.1 1954 | 0.1 1955 | 0.1 1956 | 0.1 1957 | 0.1 1958 | 0.1 1959 | 0.1 1960 | 0.1 1961 | 0.1 1962 | 0.1 1963 | 0.1 1964 | 0.1 1965 | 0.1 1966 | 0.1 1967 | 0.1 1968 | 0.1 1969 | 0.1 1970 | 0.1 1971 | 0.1 1972 | 0.1 1973 | 0.1 1974 | 0.1 1975 | 0.1 1976 | 0.1 1977 | 0.1 1978 | 0.1 1979 | 0.1 1980 | 0.1 1981 | 0.1 1982 | 0.1 1983 | 0.1 1984 | 0.1 1985 | 0.1 1986 | 0.1 1987 | 0.1 1988 | 0.1 1989 | 0.1 1990 | 0.1 1991 | 0.1 1992 | 0.1 1993 | 0.1 1994 | 0.1 1995 | 0.1 1996 | 0.1 1997 | 0.1 1998 | 0.1 1999 | 0.1 2000 | 0.1 2001 | 0.2 2002 | 0.4 2003 | 0.8 2004 | 0.8 2005 | 0.4 2006 | 0.2 2007 | 0.4 2008 | 0.8 2009 | 0.8 2010 | 0.2 2011 | 0.1 2012 | 0.1 2013 | 0.1 2014 | 0.1 2015 | 0.1 2016 | 0.1 2017 | 0.1 2018 | 0.1 2019 | 0.1 2020 | 0.1 2021 | 0.1 2022 | 0.1 2023 | 0.1 2024 | 0.1 2025 | 0.2 2026 | 0.4 2027 | 0.8 2028 | 0.8 2029 | 0.4 2030 | 0.2 2031 | 0.4 2032 | 0.8 2033 | 0.8 2034 | 0.2 2035 | 0.1 2036 | 0.1 2037 | 0.1 2038 | 0.1 2039 | 0.1 2040 | 0.1 2041 | 0.1 2042 | 0.1 2043 | 0.1 2044 | 0.1 2045 | 0.1 2046 | 0.1 2047 | 0.1 2048 | 0.1 2049 | 0.2 2050 | 0.4 2051 | 0.8 2052 | 0.8 2053 | 0.4 2054 | 0.2 2055 | 0.4 2056 | 0.8 2057 | 0.8 2058 | 0.2 2059 | 0.1 2060 | 0.1 2061 | 0.1 2062 | 0.1 2063 | 0.1 2064 | 0.1 2065 | 0.1 2066 | 0.1 2067 | 0.1 2068 | 0.1 2069 | 0.1 2070 | 0.1 2071 | 0.1 2072 | 0.1 2073 | 0.2 2074 | 0.4 2075 | 0.8 2076 | 0.8 2077 | 0.4 2078 | 0.2 2079 | 0.4 2080 | 0.8 2081 | 0.8 2082 | 0.2 2083 | 0.1 2084 | 0.1 2085 | 0.1 2086 | 0.1 2087 | 0.1 2088 | 0.1 2089 | 0.1 2090 | 0.1 2091 | 0.1 2092 | 0.1 2093 | 0.1 2094 | 0.1 2095 | 0.1 2096 | 0.1 2097 | 0.2 2098 | 0.4 2099 | 0.8 2100 | 0.8 2101 | 0.4 2102 | 0.2 2103 | 0.4 2104 | 0.8 2105 | 0.8 2106 | 0.2 2107 | 0.1 2108 | 0.1 2109 | 0.1 2110 | 0.1 2111 | 0.1 2112 | 0.1 2113 | 0.1 2114 | 0.1 2115 | 0.1 2116 | 0.1 2117 | 0.1 2118 | 0.1 2119 | 0.1 2120 | 0.1 2121 | 0.1 2122 | 0.1 2123 | 0.1 2124 | 0.1 2125 | 0.1 2126 | 0.1 2127 | 0.1 2128 | 0.1 2129 | 0.1 2130 | 0.1 2131 | 0.1 2132 | 0.1 2133 | 0.1 2134 | 0.1 2135 | 0.1 2136 | 0.1 2137 | 0.1 2138 | 0.1 2139 | 0.1 2140 | 0.1 2141 | 0.1 2142 | 0.1 2143 | 0.1 2144 | 0.1 2145 | 0.1 2146 | 0.1 2147 | 0.1 2148 | 0.1 2149 | 0.1 2150 | 0.1 2151 | 0.1 2152 | 0.1 2153 | 0.1 2154 | 0.1 2155 | 0.1 2156 | 0.1 2157 | 0.1 2158 | 0.1 2159 | 0.1 2160 | 0.1 2161 | 0.1 2162 | 0.08 2163 | 0.08 2164 | 0.08 2165 | 0.08 2166 | 0.08 2167 | 0.08 2168 | 0.08 2169 | 0.16 2170 | 0.32 2171 | 0.64 2172 | 0.64 2173 | 0.32 2174 | 0.16 2175 | 0.32 2176 | 0.64 2177 | 0.64 2178 | 0.16 2179 | 0.08 2180 | 0.08 2181 | 0.08 2182 | 0.08 2183 | 0.08 2184 | 0.08 2185 | 0.08 2186 | 0.08 2187 | 0.08 2188 | 0.08 2189 | 0.08 2190 | 0.08 2191 | 0.08 2192 | 0.08 2193 | 0.16 2194 | 0.32 2195 | 0.64 2196 | 0.64 2197 | 0.32 2198 | 0.16 2199 | 0.32 2200 | 0.64 2201 | 0.64 2202 | 0.16 2203 | 0.08 2204 | 0.08 2205 | 0.08 2206 | 0.08 2207 | 0.08 2208 | 0.08 2209 | 0.08 2210 | 0.08 2211 | 0.08 2212 | 0.08 2213 | 0.08 2214 | 0.08 2215 | 0.08 2216 | 0.08 2217 | 0.16 2218 | 0.32 2219 | 0.64 2220 | 0.64 2221 | 0.32 2222 | 0.16 2223 | 0.32 2224 | 0.64 2225 | 0.64 2226 | 0.16 2227 | 0.08 2228 | 0.08 2229 | 0.08 2230 | 0.08 2231 | 0.08 2232 | 0.08 2233 | 0.08 2234 | 0.08 2235 | 0.08 2236 | 0.08 2237 | 0.08 2238 | 0.08 2239 | 0.08 2240 | 0.08 2241 | 0.16 2242 | 0.32 2243 | 0.64 2244 | 0.64 2245 | 0.32 2246 | 0.16 2247 | 0.32 2248 | 0.64 2249 | 0.64 2250 | 0.16 2251 | 0.08 2252 | 0.08 2253 | 0.08 2254 | 0.08 2255 | 0.08 2256 | 0.08 2257 | 0.08 2258 | 0.08 2259 | 0.08 2260 | 0.08 2261 | 0.08 2262 | 0.08 2263 | 0.08 2264 | 0.08 2265 | 0.16 2266 | 0.32 2267 | 0.64 2268 | 0.64 2269 | 0.32 2270 | 0.16 2271 | 0.32 2272 | 0.64 2273 | 0.64 2274 | 0.16 2275 | 0.08 2276 | 0.08 2277 | 0.08 2278 | 0.08 2279 | 0.08 2280 | 0.08 2281 | 0.08 2282 | 0.08 2283 | 0.08 2284 | 0.08 2285 | 0.08 2286 | 0.08 2287 | 0.08 2288 | 0.08 2289 | 0.08 2290 | 0.08 2291 | 0.08 2292 | 0.08 2293 | 0.08 2294 | 0.08 2295 | 0.08 2296 | 0.08 2297 | 0.08 2298 | 0.08 2299 | 0.08 2300 | 0.08 2301 | 0.08 2302 | 0.08 2303 | 0.08 2304 | 0.08 2305 | 0.08 2306 | 0.08 2307 | 0.08 2308 | 0.08 2309 | 0.08 2310 | 0.08 2311 | 0.08 2312 | 0.08 2313 | 0.08 2314 | 0.08 2315 | 0.08 2316 | 0.08 2317 | 0.08 2318 | 0.08 2319 | 0.08 2320 | 0.08 2321 | 0.08 2322 | 0.08 2323 | 0.08 2324 | 0.08 2325 | 0.08 2326 | 0.08 2327 | 0.08 2328 | 0.08 2329 | 0.08 2330 | 0.08 2331 | 0.08 2332 | 0.08 2333 | 0.08 2334 | 0.08 2335 | 0.08 2336 | 0.08 2337 | 0.16 2338 | 0.32 2339 | 0.64 2340 | 0.64 2341 | 0.32 2342 | 0.16 2343 | 0.32 2344 | 0.64 2345 | 0.64 2346 | 0.16 2347 | 0.08 2348 | 0.08 2349 | 0.08 2350 | 0.08 2351 | 0.08 2352 | 0.08 2353 | 0.08 2354 | 0.08 2355 | 0.08 2356 | 0.08 2357 | 0.08 2358 | 0.08 2359 | 0.08 2360 | 0.08 2361 | 0.16 2362 | 0.32 2363 | 0.64 2364 | 0.64 2365 | 0.32 2366 | 0.16 2367 | 0.32 2368 | 0.64 2369 | 0.64 2370 | 0.16 2371 | 0.08 2372 | 0.08 2373 | 0.08 2374 | 0.08 2375 | 0.08 2376 | 0.08 2377 | 0.08 2378 | 0.08 2379 | 0.08 2380 | 0.08 2381 | 0.08 2382 | 0.08 2383 | 0.08 2384 | 0.08 2385 | 0.16 2386 | 0.32 2387 | 0.64 2388 | 0.64 2389 | 0.32 2390 | 0.16 2391 | 0.32 2392 | 0.64 2393 | 0.64 2394 | 0.16 2395 | 0.08 2396 | 0.08 2397 | 0.08 2398 | 0.08 2399 | 0.08 2400 | 0.08 2401 | 0.08 2402 | 0.08 2403 | 0.08 2404 | 0.08 2405 | 0.08 2406 | 0.08 2407 | 0.08 2408 | 0.08 2409 | 0.16 2410 | 0.32 2411 | 0.64 2412 | 0.64 2413 | 0.32 2414 | 0.16 2415 | 0.32 2416 | 0.64 2417 | 0.64 2418 | 0.16 2419 | 0.08 2420 | 0.08 2421 | 0.08 2422 | 0.08 2423 | 0.08 2424 | 0.08 2425 | 0.08 2426 | 0.08 2427 | 0.08 2428 | 0.08 2429 | 0.08 2430 | 0.08 2431 | 0.08 2432 | 0.08 2433 | 0.16 2434 | 0.32 2435 | 0.64 2436 | 0.64 2437 | 0.32 2438 | 0.16 2439 | 0.32 2440 | 0.64 2441 | 0.64 2442 | 0.16 2443 | 0.08 2444 | 0.08 2445 | 0.08 2446 | 0.08 2447 | 0.08 2448 | 0.08 2449 | 0.08 2450 | 0.08 2451 | 0.08 2452 | 0.08 2453 | 0.08 2454 | 0.08 2455 | 0.08 2456 | 0.08 2457 | 0.08 2458 | 0.08 2459 | 0.08 2460 | 0.08 2461 | 0.08 2462 | 0.08 2463 | 0.08 2464 | 0.08 2465 | 0.08 2466 | 0.08 2467 | 0.08 2468 | 0.08 2469 | 0.08 2470 | 0.08 2471 | 0.08 2472 | 0.08 2473 | 0.08 2474 | 0.08 2475 | 0.08 2476 | 0.08 2477 | 0.08 2478 | 0.08 2479 | 0.08 2480 | 0.08 2481 | 0.08 2482 | 0.08 2483 | 0.08 2484 | 0.08 2485 | 0.08 2486 | 0.08 2487 | 0.08 2488 | 0.08 2489 | 0.08 2490 | 0.08 2491 | 0.08 2492 | 0.08 2493 | 0.08 2494 | 0.08 2495 | 0.08 2496 | 0.08 2497 | 0.08 2498 | 0.08 2499 | 0.08 2500 | 0.08 2501 | 0.08 2502 | 0.08 2503 | 0.08 2504 | 0.08 2505 | 0.16 2506 | 0.32 2507 | 0.64 2508 | 0.64 2509 | 0.32 2510 | 0.16 2511 | 0.32 2512 | 0.64 2513 | 0.64 2514 | 0.16 2515 | 0.08 2516 | 0.08 2517 | 0.08 2518 | 0.08 2519 | 0.08 2520 | 0.08 2521 | 0.08 2522 | 0.08 2523 | 0.08 2524 | 0.08 2525 | 0.08 2526 | 0.08 2527 | 0.08 2528 | 0.08 2529 | 0.16 2530 | 0.32 2531 | 0.64 2532 | 0.64 2533 | 0.32 2534 | 0.16 2535 | 0.32 2536 | 0.64 2537 | 0.64 2538 | 0.16 2539 | 0.08 2540 | 0.08 2541 | 0.08 2542 | 0.08 2543 | 0.08 2544 | 0.08 2545 | 0.08 2546 | 0.08 2547 | 0.08 2548 | 0.08 2549 | 0.08 2550 | 0.08 2551 | 0.08 2552 | 0.08 2553 | 0.16 2554 | 0.32 2555 | 0.64 2556 | 0.64 2557 | 0.32 2558 | 0.16 2559 | 0.32 2560 | 0.64 2561 | 0.64 2562 | 0.16 2563 | 0.08 2564 | 0.08 2565 | 0.08 2566 | 0.08 2567 | 0.08 2568 | 0.08 2569 | 0.08 2570 | 0.08 2571 | 0.08 2572 | 0.08 2573 | 0.08 2574 | 0.08 2575 | 0.08 2576 | 0.08 2577 | 0.16 2578 | 0.32 2579 | 0.64 2580 | 0.64 2581 | 0.32 2582 | 0.16 2583 | 0.32 2584 | 0.64 2585 | 0.64 2586 | 0.16 2587 | 0.08 2588 | 0.08 2589 | 0.08 2590 | 0.08 2591 | 0.08 2592 | 0.08 2593 | 0.08 2594 | 0.08 2595 | 0.08 2596 | 0.08 2597 | 0.08 2598 | 0.08 2599 | 0.08 2600 | 0.08 2601 | 0.16 2602 | 0.32 2603 | 0.64 2604 | 0.64 2605 | 0.32 2606 | 0.16 2607 | 0.32 2608 | 0.64 2609 | 0.64 2610 | 0.16 2611 | 0.08 2612 | 0.08 2613 | 0.08 2614 | 0.08 2615 | 0.08 2616 | 0.08 2617 | 0.08 2618 | 0.08 2619 | 0.08 2620 | 0.08 2621 | 0.08 2622 | 0.08 2623 | 0.08 2624 | 0.08 2625 | 0.08 2626 | 0.08 2627 | 0.08 2628 | 0.08 2629 | 0.08 2630 | 0.08 2631 | 0.08 2632 | 0.08 2633 | 0.08 2634 | 0.08 2635 | 0.08 2636 | 0.08 2637 | 0.08 2638 | 0.08 2639 | 0.08 2640 | 0.08 2641 | 0.08 2642 | 0.08 2643 | 0.08 2644 | 0.08 2645 | 0.08 2646 | 0.08 2647 | 0.08 2648 | 0.08 2649 | 0.08 2650 | 0.08 2651 | 0.08 2652 | 0.08 2653 | 0.08 2654 | 0.08 2655 | 0.08 2656 | 0.08 2657 | 0.08 2658 | 0.08 2659 | 0.08 2660 | 0.08 2661 | 0.08 2662 | 0.08 2663 | 0.08 2664 | 0.08 2665 | 0.08 2666 | 0.08 2667 | 0.08 2668 | 0.08 2669 | 0.08 2670 | 0.08 2671 | 0.08 2672 | 0.08 2673 | 0.16 2674 | 0.32 2675 | 0.64 2676 | 0.64 2677 | 0.32 2678 | 0.16 2679 | 0.32 2680 | 0.64 2681 | 0.64 2682 | 0.16 2683 | 0.08 2684 | 0.08 2685 | 0.08 2686 | 0.08 2687 | 0.08 2688 | 0.08 2689 | 0.08 2690 | 0.08 2691 | 0.08 2692 | 0.08 2693 | 0.08 2694 | 0.08 2695 | 0.08 2696 | 0.08 2697 | 0.16 2698 | 0.32 2699 | 0.64 2700 | 0.64 2701 | 0.32 2702 | 0.16 2703 | 0.32 2704 | 0.64 2705 | 0.64 2706 | 0.16 2707 | 0.08 2708 | 0.08 2709 | 0.08 2710 | 0.08 2711 | 0.08 2712 | 0.08 2713 | 0.08 2714 | 0.08 2715 | 0.08 2716 | 0.08 2717 | 0.08 2718 | 0.08 2719 | 0.08 2720 | 0.08 2721 | 0.16 2722 | 0.32 2723 | 0.64 2724 | 0.64 2725 | 0.32 2726 | 0.16 2727 | 0.32 2728 | 0.64 2729 | 0.64 2730 | 0.16 2731 | 0.08 2732 | 0.08 2733 | 0.08 2734 | 0.08 2735 | 0.08 2736 | 0.08 2737 | 0.08 2738 | 0.08 2739 | 0.08 2740 | 0.08 2741 | 0.08 2742 | 0.08 2743 | 0.08 2744 | 0.08 2745 | 0.16 2746 | 0.32 2747 | 0.64 2748 | 0.64 2749 | 0.32 2750 | 0.16 2751 | 0.32 2752 | 0.64 2753 | 0.64 2754 | 0.16 2755 | 0.08 2756 | 0.08 2757 | 0.08 2758 | 0.08 2759 | 0.08 2760 | 0.08 2761 | 0.08 2762 | 0.08 2763 | 0.08 2764 | 0.08 2765 | 0.08 2766 | 0.08 2767 | 0.08 2768 | 0.08 2769 | 0.16 2770 | 0.32 2771 | 0.64 2772 | 0.64 2773 | 0.32 2774 | 0.16 2775 | 0.32 2776 | 0.64 2777 | 0.64 2778 | 0.16 2779 | 0.08 2780 | 0.08 2781 | 0.08 2782 | 0.08 2783 | 0.08 2784 | 0.08 2785 | 0.08 2786 | 0.08 2787 | 0.08 2788 | 0.08 2789 | 0.08 2790 | 0.08 2791 | 0.08 2792 | 0.08 2793 | 0.08 2794 | 0.08 2795 | 0.08 2796 | 0.08 2797 | 0.08 2798 | 0.08 2799 | 0.08 2800 | 0.08 2801 | 0.08 2802 | 0.08 2803 | 0.08 2804 | 0.08 2805 | 0.08 2806 | 0.08 2807 | 0.08 2808 | 0.08 2809 | 0.08 2810 | 0.08 2811 | 0.08 2812 | 0.08 2813 | 0.08 2814 | 0.08 2815 | 0.08 2816 | 0.08 2817 | 0.08 2818 | 0.08 2819 | 0.08 2820 | 0.08 2821 | 0.08 2822 | 0.08 2823 | 0.08 2824 | 0.08 2825 | 0.08 2826 | 0.08 2827 | 0.08 2828 | 0.08 2829 | 0.08 2830 | 0.08 2831 | 0.08 2832 | 0.08 2833 | 0.08 2834 | 0.08 2835 | 0.08 2836 | 0.08 2837 | 0.08 2838 | 0.08 2839 | 0.08 2840 | 0.08 2841 | 0.16 2842 | 0.32 2843 | 0.64 2844 | 0.64 2845 | 0.32 2846 | 0.16 2847 | 0.32 2848 | 0.64 2849 | 0.64 2850 | 0.16 2851 | 0.08 2852 | 0.08 2853 | 0.08 2854 | 0.08 2855 | 0.08 2856 | 0.08 2857 | 0.08 2858 | 0.08 2859 | 0.08 2860 | 0.08 2861 | 0.08 2862 | 0.08 2863 | 0.08 2864 | 0.08 2865 | 0.16 2866 | 0.32 2867 | 0.64 2868 | 0.64 2869 | 0.32 2870 | 0.16 2871 | 0.32 2872 | 0.64 2873 | 0.64 2874 | 0.16 2875 | 0.08 2876 | 0.08 2877 | 0.08 2878 | 0.08 2879 | 0.08 2880 | 0.08 2881 | 0.08 2882 | 0.06 2883 | 0.06 2884 | 0.06 2885 | 0.06 2886 | 0.06 2887 | 0.06 2888 | 0.06 2889 | 0.12 2890 | 0.24 2891 | 0.48 2892 | 0.48 2893 | 0.24 2894 | 0.12 2895 | 0.24 2896 | 0.48 2897 | 0.48 2898 | 0.12 2899 | 0.06 2900 | 0.06 2901 | 0.06 2902 | 0.06 2903 | 0.06 2904 | 0.06 2905 | 0.06 2906 | 0.06 2907 | 0.06 2908 | 0.06 2909 | 0.06 2910 | 0.06 2911 | 0.06 2912 | 0.06 2913 | 0.12 2914 | 0.24 2915 | 0.48 2916 | 0.48 2917 | 0.24 2918 | 0.12 2919 | 0.24 2920 | 0.48 2921 | 0.48 2922 | 0.12 2923 | 0.06 2924 | 0.06 2925 | 0.06 2926 | 0.06 2927 | 0.06 2928 | 0.06 2929 | 0.06 2930 | 0.06 2931 | 0.06 2932 | 0.06 2933 | 0.06 2934 | 0.06 2935 | 0.06 2936 | 0.06 2937 | 0.12 2938 | 0.24 2939 | 0.48 2940 | 0.48 2941 | 0.24 2942 | 0.12 2943 | 0.24 2944 | 0.48 2945 | 0.48 2946 | 0.12 2947 | 0.06 2948 | 0.06 2949 | 0.06 2950 | 0.06 2951 | 0.06 2952 | 0.06 2953 | 0.06 2954 | 0.06 2955 | 0.06 2956 | 0.06 2957 | 0.06 2958 | 0.06 2959 | 0.06 2960 | 0.06 2961 | 0.06 2962 | 0.06 2963 | 0.06 2964 | 0.06 2965 | 0.06 2966 | 0.06 2967 | 0.06 2968 | 0.06 2969 | 0.06 2970 | 0.06 2971 | 0.06 2972 | 0.06 2973 | 0.06 2974 | 0.06 2975 | 0.06 2976 | 0.06 2977 | 0.06 2978 | 0.06 2979 | 0.06 2980 | 0.06 2981 | 0.06 2982 | 0.06 2983 | 0.06 2984 | 0.06 2985 | 0.06 2986 | 0.06 2987 | 0.06 2988 | 0.06 2989 | 0.06 2990 | 0.06 2991 | 0.06 2992 | 0.06 2993 | 0.06 2994 | 0.06 2995 | 0.06 2996 | 0.06 2997 | 0.06 2998 | 0.06 2999 | 0.06 3000 | 0.06 3001 | 0.06 3002 | 0.06 3003 | 0.06 3004 | 0.06 3005 | 0.06 3006 | 0.06 3007 | 0.06 3008 | 0.06 3009 | 0.12 3010 | 0.24 3011 | 0.48 3012 | 0.48 3013 | 0.24 3014 | 0.12 3015 | 0.24 3016 | 0.48 3017 | 0.48 3018 | 0.12 3019 | 0.06 3020 | 0.06 3021 | 0.06 3022 | 0.06 3023 | 0.06 3024 | 0.06 3025 | 0.06 3026 | 0.06 3027 | 0.06 3028 | 0.06 3029 | 0.06 3030 | 0.06 3031 | 0.06 3032 | 0.06 3033 | 0.12 3034 | 0.24 3035 | 0.48 3036 | 0.48 3037 | 0.24 3038 | 0.12 3039 | 0.24 3040 | 0.48 3041 | 0.48 3042 | 0.12 3043 | 0.06 3044 | 0.06 3045 | 0.06 3046 | 0.06 3047 | 0.06 3048 | 0.06 3049 | 0.06 3050 | 0.06 3051 | 0.06 3052 | 0.06 3053 | 0.06 3054 | 0.06 3055 | 0.06 3056 | 0.06 3057 | 0.12 3058 | 0.24 3059 | 0.48 3060 | 0.48 3061 | 0.24 3062 | 0.12 3063 | 0.24 3064 | 0.48 3065 | 0.48 3066 | 0.12 3067 | 0.06 3068 | 0.06 3069 | 0.06 3070 | 0.06 3071 | 0.06 3072 | 0.06 3073 | 0.06 3074 | 0.06 3075 | 0.06 3076 | 0.06 3077 | 0.06 3078 | 0.06 3079 | 0.06 3080 | 0.06 3081 | 0.12 3082 | 0.24 3083 | 0.48 3084 | 0.48 3085 | 0.24 3086 | 0.12 3087 | 0.24 3088 | 0.48 3089 | 0.48 3090 | 0.12 3091 | 0.06 3092 | 0.06 3093 | 0.06 3094 | 0.06 3095 | 0.06 3096 | 0.06 3097 | 0.06 3098 | 0.06 3099 | 0.06 3100 | 0.06 3101 | 0.06 3102 | 0.06 3103 | 0.06 3104 | 0.06 3105 | 0.12 3106 | 0.24 3107 | 0.48 3108 | 0.48 3109 | 0.24 3110 | 0.12 3111 | 0.24 3112 | 0.48 3113 | 0.48 3114 | 0.12 3115 | 0.06 3116 | 0.06 3117 | 0.06 3118 | 0.06 3119 | 0.06 3120 | 0.06 3121 | 0.06 3122 | 0.06 3123 | 0.06 3124 | 0.06 3125 | 0.06 3126 | 0.06 3127 | 0.06 3128 | 0.06 3129 | 0.06 3130 | 0.06 3131 | 0.06 3132 | 0.06 3133 | 0.06 3134 | 0.06 3135 | 0.06 3136 | 0.06 3137 | 0.06 3138 | 0.06 3139 | 0.06 3140 | 0.06 3141 | 0.06 3142 | 0.06 3143 | 0.06 3144 | 0.06 3145 | 0.06 3146 | 0.06 3147 | 0.06 3148 | 0.06 3149 | 0.06 3150 | 0.06 3151 | 0.06 3152 | 0.06 3153 | 0.06 3154 | 0.06 3155 | 0.06 3156 | 0.06 3157 | 0.06 3158 | 0.06 3159 | 0.06 3160 | 0.06 3161 | 0.06 3162 | 0.06 3163 | 0.06 3164 | 0.06 3165 | 0.06 3166 | 0.06 3167 | 0.06 3168 | 0.06 3169 | 0.06 3170 | 0.06 3171 | 0.06 3172 | 0.06 3173 | 0.06 3174 | 0.06 3175 | 0.06 3176 | 0.06 3177 | 0.12 3178 | 0.24 3179 | 0.48 3180 | 0.48 3181 | 0.24 3182 | 0.12 3183 | 0.24 3184 | 0.48 3185 | 0.48 3186 | 0.12 3187 | 0.06 3188 | 0.06 3189 | 0.06 3190 | 0.06 3191 | 0.06 3192 | 0.06 3193 | 0.06 3194 | 0.06 3195 | 0.06 3196 | 0.06 3197 | 0.06 3198 | 0.06 3199 | 0.06 3200 | 0.06 3201 | 0.12 3202 | 0.24 3203 | 0.48 3204 | 0.48 3205 | 0.24 3206 | 0.12 3207 | 0.24 3208 | 0.48 3209 | 0.48 3210 | 0.12 3211 | 0.06 3212 | 0.06 3213 | 0.06 3214 | 0.06 3215 | 0.06 3216 | 0.06 3217 | 0.06 3218 | 0.06 3219 | 0.06 3220 | 0.06 3221 | 0.06 3222 | 0.06 3223 | 0.06 3224 | 0.06 3225 | 0.12 3226 | 0.24 3227 | 0.48 3228 | 0.48 3229 | 0.24 3230 | 0.12 3231 | 0.24 3232 | 0.48 3233 | 0.48 3234 | 0.12 3235 | 0.06 3236 | 0.06 3237 | 0.06 3238 | 0.06 3239 | 0.06 3240 | 0.06 3241 | 0.06 3242 | 0.06 3243 | 0.06 3244 | 0.06 3245 | 0.06 3246 | 0.06 3247 | 0.06 3248 | 0.06 3249 | 0.12 3250 | 0.24 3251 | 0.48 3252 | 0.48 3253 | 0.24 3254 | 0.12 3255 | 0.24 3256 | 0.48 3257 | 0.48 3258 | 0.12 3259 | 0.06 3260 | 0.06 3261 | 0.06 3262 | 0.06 3263 | 0.06 3264 | 0.06 3265 | 0.06 3266 | 0.06 3267 | 0.06 3268 | 0.06 3269 | 0.06 3270 | 0.06 3271 | 0.06 3272 | 0.06 3273 | 0.12 3274 | 0.24 3275 | 0.48 3276 | 0.48 3277 | 0.24 3278 | 0.12 3279 | 0.24 3280 | 0.48 3281 | 0.48 3282 | 0.12 3283 | 0.06 3284 | 0.06 3285 | 0.06 3286 | 0.06 3287 | 0.06 3288 | 0.06 3289 | 0.06 3290 | 0.06 3291 | 0.06 3292 | 0.06 3293 | 0.06 3294 | 0.06 3295 | 0.06 3296 | 0.06 3297 | 0.06 3298 | 0.06 3299 | 0.06 3300 | 0.06 3301 | 0.06 3302 | 0.06 3303 | 0.06 3304 | 0.06 3305 | 0.06 3306 | 0.06 3307 | 0.06 3308 | 0.06 3309 | 0.06 3310 | 0.06 3311 | 0.06 3312 | 0.06 3313 | 0.06 3314 | 0.06 3315 | 0.06 3316 | 0.06 3317 | 0.06 3318 | 0.06 3319 | 0.06 3320 | 0.06 3321 | 0.06 3322 | 0.06 3323 | 0.06 3324 | 0.06 3325 | 0.06 3326 | 0.06 3327 | 0.06 3328 | 0.06 3329 | 0.06 3330 | 0.06 3331 | 0.06 3332 | 0.06 3333 | 0.06 3334 | 0.06 3335 | 0.06 3336 | 0.06 3337 | 0.06 3338 | 0.06 3339 | 0.06 3340 | 0.06 3341 | 0.06 3342 | 0.06 3343 | 0.06 3344 | 0.06 3345 | 0.12 3346 | 0.24 3347 | 0.48 3348 | 0.48 3349 | 0.24 3350 | 0.12 3351 | 0.24 3352 | 0.48 3353 | 0.48 3354 | 0.12 3355 | 0.06 3356 | 0.06 3357 | 0.06 3358 | 0.06 3359 | 0.06 3360 | 0.06 3361 | 0.06 3362 | 0.06 3363 | 0.06 3364 | 0.06 3365 | 0.06 3366 | 0.06 3367 | 0.06 3368 | 0.06 3369 | 0.12 3370 | 0.24 3371 | 0.48 3372 | 0.48 3373 | 0.24 3374 | 0.12 3375 | 0.24 3376 | 0.48 3377 | 0.48 3378 | 0.12 3379 | 0.06 3380 | 0.06 3381 | 0.06 3382 | 0.06 3383 | 0.06 3384 | 0.06 3385 | 0.06 3386 | 0.06 3387 | 0.06 3388 | 0.06 3389 | 0.06 3390 | 0.06 3391 | 0.06 3392 | 0.06 3393 | 0.12 3394 | 0.24 3395 | 0.48 3396 | 0.48 3397 | 0.24 3398 | 0.12 3399 | 0.24 3400 | 0.48 3401 | 0.48 3402 | 0.12 3403 | 0.06 3404 | 0.06 3405 | 0.06 3406 | 0.06 3407 | 0.06 3408 | 0.06 3409 | 0.06 3410 | 0.06 3411 | 0.06 3412 | 0.06 3413 | 0.06 3414 | 0.06 3415 | 0.06 3416 | 0.06 3417 | 0.12 3418 | 0.24 3419 | 0.48 3420 | 0.48 3421 | 0.24 3422 | 0.12 3423 | 0.24 3424 | 0.48 3425 | 0.48 3426 | 0.12 3427 | 0.06 3428 | 0.06 3429 | 0.06 3430 | 0.06 3431 | 0.06 3432 | 0.06 3433 | 0.06 3434 | 0.06 3435 | 0.06 3436 | 0.06 3437 | 0.06 3438 | 0.06 3439 | 0.06 3440 | 0.06 3441 | 0.12 3442 | 0.24 3443 | 0.48 3444 | 0.48 3445 | 0.24 3446 | 0.12 3447 | 0.24 3448 | 0.48 3449 | 0.48 3450 | 0.12 3451 | 0.06 3452 | 0.06 3453 | 0.06 3454 | 0.06 3455 | 0.06 3456 | 0.06 3457 | 0.06 3458 | 0.06 3459 | 0.06 3460 | 0.06 3461 | 0.06 3462 | 0.06 3463 | 0.06 3464 | 0.06 3465 | 0.06 3466 | 0.06 3467 | 0.06 3468 | 0.06 3469 | 0.06 3470 | 0.06 3471 | 0.06 3472 | 0.06 3473 | 0.06 3474 | 0.06 3475 | 0.06 3476 | 0.06 3477 | 0.06 3478 | 0.06 3479 | 0.06 3480 | 0.06 3481 | 0.06 3482 | 0.06 3483 | 0.06 3484 | 0.06 3485 | 0.06 3486 | 0.06 3487 | 0.06 3488 | 0.06 3489 | 0.06 3490 | 0.06 3491 | 0.06 3492 | 0.06 3493 | 0.06 3494 | 0.06 3495 | 0.06 3496 | 0.06 3497 | 0.06 3498 | 0.06 3499 | 0.06 3500 | 0.06 3501 | 0.06 3502 | 0.06 3503 | 0.06 3504 | 0.06 3505 | 0.06 3506 | 0.06 3507 | 0.06 3508 | 0.06 3509 | 0.06 3510 | 0.06 3511 | 0.06 3512 | 0.06 3513 | 0.12 3514 | 0.24 3515 | 0.48 3516 | 0.48 3517 | 0.24 3518 | 0.12 3519 | 0.24 3520 | 0.48 3521 | 0.48 3522 | 0.12 3523 | 0.06 3524 | 0.06 3525 | 0.06 3526 | 0.06 3527 | 0.06 3528 | 0.06 3529 | 0.06 3530 | 0.06 3531 | 0.06 3532 | 0.06 3533 | 0.06 3534 | 0.06 3535 | 0.06 3536 | 0.06 3537 | 0.12 3538 | 0.24 3539 | 0.48 3540 | 0.48 3541 | 0.24 3542 | 0.12 3543 | 0.24 3544 | 0.48 3545 | 0.48 3546 | 0.12 3547 | 0.06 3548 | 0.06 3549 | 0.06 3550 | 0.06 3551 | 0.06 3552 | 0.06 3553 | 0.06 3554 | 0.06 3555 | 0.06 3556 | 0.06 3557 | 0.06 3558 | 0.06 3559 | 0.06 3560 | 0.06 3561 | 0.12 3562 | 0.24 3563 | 0.48 3564 | 0.48 3565 | 0.24 3566 | 0.12 3567 | 0.24 3568 | 0.48 3569 | 0.48 3570 | 0.12 3571 | 0.06 3572 | 0.06 3573 | 0.06 3574 | 0.06 3575 | 0.06 3576 | 0.06 3577 | 0.06 3578 | 0.06 3579 | 0.06 3580 | 0.06 3581 | 0.06 3582 | 0.06 3583 | 0.06 3584 | 0.06 3585 | 0.12 3586 | 0.24 3587 | 0.48 3588 | 0.48 3589 | 0.24 3590 | 0.12 3591 | 0.24 3592 | 0.48 3593 | 0.48 3594 | 0.12 3595 | 0.06 3596 | 0.06 3597 | 0.06 3598 | 0.06 3599 | 0.06 3600 | 0.06 3601 | 0.06 3602 | 0.06 3603 | 0.06 3604 | 0.06 3605 | 0.06 3606 | 0.06 3607 | 0.06 3608 | 0.06 3609 | 0.12 3610 | 0.24 3611 | 0.48 3612 | 0.48 3613 | 0.24 3614 | 0.12 3615 | 0.24 3616 | 0.48 3617 | 0.48 3618 | 0.12 3619 | 0.06 3620 | 0.06 3621 | 0.06 3622 | 0.06 3623 | 0.06 3624 | 0.06 3625 | 0.06 3626 | 0.1 3627 | 0.1 3628 | 0.1 3629 | 0.1 3630 | 0.1 3631 | 0.1 3632 | 0.1 3633 | 0.1 3634 | 0.1 3635 | 0.1 3636 | 0.1 3637 | 0.1 3638 | 0.1 3639 | 0.1 3640 | 0.1 3641 | 0.1 3642 | 0.1 3643 | 0.1 3644 | 0.1 3645 | 0.1 3646 | 0.1 3647 | 0.1 3648 | 0.1 3649 | 0.1 3650 | 0.1 3651 | 0.1 3652 | 0.1 3653 | 0.1 3654 | 0.1 3655 | 0.1 3656 | 0.1 3657 | 0.1 3658 | 0.1 3659 | 0.1 3660 | 0.1 3661 | 0.1 3662 | 0.1 3663 | 0.1 3664 | 0.1 3665 | 0.1 3666 | 0.1 3667 | 0.1 3668 | 0.1 3669 | 0.1 3670 | 0.1 3671 | 0.1 3672 | 0.1 3673 | 0.1 3674 | 0.1 3675 | 0.1 3676 | 0.1 3677 | 0.1 3678 | 0.1 3679 | 0.1 3680 | 0.1 3681 | 0.2 3682 | 0.4 3683 | 0.8 3684 | 0.8 3685 | 0.4 3686 | 0.2 3687 | 0.4 3688 | 0.8 3689 | 0.8 3690 | 0.2 3691 | 0.1 3692 | 0.1 3693 | 0.1 3694 | 0.1 3695 | 0.1 3696 | 0.1 3697 | 0.1 3698 | 0.1 3699 | 0.1 3700 | 0.1 3701 | 0.1 3702 | 0.1 3703 | 0.1 3704 | 0.1 3705 | 0.2 3706 | 0.4 3707 | 0.8 3708 | 0.8 3709 | 0.4 3710 | 0.2 3711 | 0.4 3712 | 0.8 3713 | 0.8 3714 | 0.2 3715 | 0.1 3716 | 0.1 3717 | 0.1 3718 | 0.1 3719 | 0.1 3720 | 0.1 3721 | 0.1 3722 | 0.1 3723 | 0.1 3724 | 0.1 3725 | 0.1 3726 | 0.1 3727 | 0.1 3728 | 0.1 3729 | 0.2 3730 | 0.4 3731 | 0.8 3732 | 0.8 3733 | 0.4 3734 | 0.2 3735 | 0.4 3736 | 0.8 3737 | 0.8 3738 | 0.2 3739 | 0.1 3740 | 0.1 3741 | 0.1 3742 | 0.1 3743 | 0.1 3744 | 0.1 3745 | 0.1 3746 | 0.1 3747 | 0.1 3748 | 0.1 3749 | 0.1 3750 | 0.1 3751 | 0.1 3752 | 0.1 3753 | 0.2 3754 | 0.4 3755 | 0.8 3756 | 0.8 3757 | 0.4 3758 | 0.2 3759 | 0.4 3760 | 0.8 3761 | 0.8 3762 | 0.2 3763 | 0.1 3764 | 0.1 3765 | 0.1 3766 | 0.1 3767 | 0.1 3768 | 0.1 3769 | 0.1 3770 | 0.1 3771 | 0.1 3772 | 0.1 3773 | 0.1 3774 | 0.1 3775 | 0.1 3776 | 0.1 3777 | 0.2 3778 | 0.4 3779 | 0.8 3780 | 0.8 3781 | 0.4 3782 | 0.2 3783 | 0.4 3784 | 0.8 3785 | 0.8 3786 | 0.2 3787 | 0.1 3788 | 0.1 3789 | 0.1 3790 | 0.1 3791 | 0.1 3792 | 0.1 3793 | 0.1 3794 | 0.1 3795 | 0.1 3796 | 0.1 3797 | 0.1 3798 | 0.1 3799 | 0.1 3800 | 0.1 3801 | 0.1 3802 | 0.1 3803 | 0.1 3804 | 0.1 3805 | 0.1 3806 | 0.1 3807 | 0.1 3808 | 0.1 3809 | 0.1 3810 | 0.1 3811 | 0.1 3812 | 0.1 3813 | 0.1 3814 | 0.1 3815 | 0.1 3816 | 0.1 3817 | 0.1 3818 | 0.1 3819 | 0.1 3820 | 0.1 3821 | 0.1 3822 | 0.1 3823 | 0.1 3824 | 0.1 3825 | 0.1 3826 | 0.1 3827 | 0.1 3828 | 0.1 3829 | 0.1 3830 | 0.1 3831 | 0.1 3832 | 0.1 3833 | 0.1 3834 | 0.1 3835 | 0.1 3836 | 0.1 3837 | 0.1 3838 | 0.1 3839 | 0.1 3840 | 0.1 3841 | 0.1 3842 | 0.1 3843 | 0.1 3844 | 0.1 3845 | 0.1 3846 | 0.1 3847 | 0.1 3848 | 0.1 3849 | 0.2 3850 | 0.4 3851 | 0.8 3852 | 0.8 3853 | 0.4 3854 | 0.2 3855 | 0.4 3856 | 0.8 3857 | 0.8 3858 | 0.2 3859 | 0.1 3860 | 0.1 3861 | 0.1 3862 | 0.1 3863 | 0.1 3864 | 0.1 3865 | 0.1 3866 | 0.1 3867 | 0.1 3868 | 0.1 3869 | 0.1 3870 | 0.1 3871 | 0.1 3872 | 0.1 3873 | 0.2 3874 | 0.4 3875 | 0.8 3876 | 0.8 3877 | 0.4 3878 | 0.2 3879 | 0.4 3880 | 0.8 3881 | 0.8 3882 | 0.2 3883 | 0.1 3884 | 0.1 3885 | 0.1 3886 | 0.1 3887 | 0.1 3888 | 0.1 3889 | 0.1 3890 | 0.1 3891 | 0.1 3892 | 0.1 3893 | 0.1 3894 | 0.1 3895 | 0.1 3896 | 0.1 3897 | 0.2 3898 | 0.4 3899 | 0.8 3900 | 0.8 3901 | 0.4 3902 | 0.2 3903 | 0.4 3904 | 0.8 3905 | 0.8 3906 | 0.2 3907 | 0.1 3908 | 0.1 3909 | 0.1 3910 | 0.1 3911 | 0.1 3912 | 0.1 3913 | 0.1 3914 | 0.1 3915 | 0.1 3916 | 0.1 3917 | 0.1 3918 | 0.1 3919 | 0.1 3920 | 0.1 3921 | 0.2 3922 | 0.4 3923 | 0.8 3924 | 0.8 3925 | 0.4 3926 | 0.2 3927 | 0.4 3928 | 0.8 3929 | 0.8 3930 | 0.2 3931 | 0.1 3932 | 0.1 3933 | 0.1 3934 | 0.1 3935 | 0.1 3936 | 0.1 3937 | 0.1 3938 | 0.1 3939 | 0.1 3940 | 0.1 3941 | 0.1 3942 | 0.1 3943 | 0.1 3944 | 0.1 3945 | 0.2 3946 | 0.4 3947 | 0.8 3948 | 0.8 3949 | 0.4 3950 | 0.2 3951 | 0.4 3952 | 0.8 3953 | 0.8 3954 | 0.2 3955 | 0.1 3956 | 0.1 3957 | 0.1 3958 | 0.1 3959 | 0.1 3960 | 0.1 3961 | 0.1 3962 | 0.1 3963 | 0.1 3964 | 0.1 3965 | 0.1 3966 | 0.1 3967 | 0.1 3968 | 0.1 3969 | 0.1 3970 | 0.1 3971 | 0.1 3972 | 0.1 3973 | 0.1 3974 | 0.1 3975 | 0.1 3976 | 0.1 3977 | 0.1 3978 | 0.1 3979 | 0.1 3980 | 0.1 3981 | 0.1 3982 | 0.1 3983 | 0.1 3984 | 0.1 3985 | 0.1 3986 | 0.1 3987 | 0.1 3988 | 0.1 3989 | 0.1 3990 | 0.1 3991 | 0.1 3992 | 0.1 3993 | 0.1 3994 | 0.1 3995 | 0.1 3996 | 0.1 3997 | 0.1 3998 | 0.1 3999 | 0.1 4000 | 0.1 4001 | 0.1 4002 | 0.1 4003 | 0.1 4004 | 0.1 4005 | 0.1 4006 | 0.1 4007 | 0.1 4008 | 0.1 4009 | 0.1 4010 | 0.1 4011 | 0.1 4012 | 0.1 4013 | 0.1 4014 | 0.1 4015 | 0.1 4016 | 0.1 4017 | 0.2 4018 | 0.4 4019 | 0.8 4020 | 0.8 4021 | 0.4 4022 | 0.2 4023 | 0.4 4024 | 0.8 4025 | 0.8 4026 | 0.2 4027 | 0.1 4028 | 0.1 4029 | 0.1 4030 | 0.1 4031 | 0.1 4032 | 0.1 4033 | 0.1 4034 | 0.1 4035 | 0.1 4036 | 0.1 4037 | 0.1 4038 | 0.1 4039 | 0.1 4040 | 0.1 4041 | 0.2 4042 | 0.4 4043 | 0.8 4044 | 0.8 4045 | 0.4 4046 | 0.2 4047 | 0.4 4048 | 0.8 4049 | 0.8 4050 | 0.2 4051 | 0.1 4052 | 0.1 4053 | 0.1 4054 | 0.1 4055 | 0.1 4056 | 0.1 4057 | 0.1 4058 | 0.1 4059 | 0.1 4060 | 0.1 4061 | 0.1 4062 | 0.1 4063 | 0.1 4064 | 0.1 4065 | 0.2 4066 | 0.4 4067 | 0.8 4068 | 0.8 4069 | 0.4 4070 | 0.2 4071 | 0.4 4072 | 0.8 4073 | 0.8 4074 | 0.2 4075 | 0.1 4076 | 0.1 4077 | 0.1 4078 | 0.1 4079 | 0.1 4080 | 0.1 4081 | 0.1 4082 | 0.1 4083 | 0.1 4084 | 0.1 4085 | 0.1 4086 | 0.1 4087 | 0.1 4088 | 0.1 4089 | 0.2 4090 | 0.4 4091 | 0.8 4092 | 0.8 4093 | 0.4 4094 | 0.2 4095 | 0.4 4096 | 0.8 4097 | 0.8 4098 | 0.2 4099 | 0.1 4100 | 0.1 4101 | 0.1 4102 | 0.1 4103 | 0.1 4104 | 0.1 4105 | 0.1 4106 | 0.1 4107 | 0.1 4108 | 0.1 4109 | 0.1 4110 | 0.1 4111 | 0.1 4112 | 0.1 4113 | 0.2 4114 | 0.4 4115 | 0.8 4116 | 0.8 4117 | 0.4 4118 | 0.2 4119 | 0.4 4120 | 0.8 4121 | 0.8 4122 | 0.2 4123 | 0.1 4124 | 0.1 4125 | 0.1 4126 | 0.1 4127 | 0.1 4128 | 0.1 4129 | 0.1 4130 | 0.1 4131 | 0.1 4132 | 0.1 4133 | 0.1 4134 | 0.1 4135 | 0.1 4136 | 0.1 4137 | 0.1 4138 | 0.1 4139 | 0.1 4140 | 0.1 4141 | 0.1 4142 | 0.1 4143 | 0.1 4144 | 0.1 4145 | 0.1 4146 | 0.1 4147 | 0.1 4148 | 0.1 4149 | 0.1 4150 | 0.1 4151 | 0.1 4152 | 0.1 4153 | 0.1 4154 | 0.1 4155 | 0.1 4156 | 0.1 4157 | 0.1 4158 | 0.1 4159 | 0.1 4160 | 0.1 4161 | 0.1 4162 | 0.1 4163 | 0.1 4164 | 0.1 4165 | 0.1 4166 | 0.1 4167 | 0.1 4168 | 0.1 4169 | 0.1 4170 | 0.1 4171 | 0.1 4172 | 0.1 4173 | 0.1 4174 | 0.1 4175 | 0.1 4176 | 0.1 4177 | 0.1 4178 | 0.1 4179 | 0.1 4180 | 0.1 4181 | 0.1 4182 | 0.1 4183 | 0.1 4184 | 0.1 4185 | 0.2 4186 | 0.4 4187 | 0.8 4188 | 0.8 4189 | 0.4 4190 | 0.2 4191 | 0.4 4192 | 0.8 4193 | 0.8 4194 | 0.2 4195 | 0.1 4196 | 0.1 4197 | 0.1 4198 | 0.1 4199 | 0.1 4200 | 0.1 4201 | 0.1 4202 | 0.1 4203 | 0.1 4204 | 0.1 4205 | 0.1 4206 | 0.1 4207 | 0.1 4208 | 0.1 4209 | 0.2 4210 | 0.4 4211 | 0.8 4212 | 0.8 4213 | 0.4 4214 | 0.2 4215 | 0.4 4216 | 0.8 4217 | 0.8 4218 | 0.2 4219 | 0.1 4220 | 0.1 4221 | 0.1 4222 | 0.1 4223 | 0.1 4224 | 0.1 4225 | 0.1 4226 | 0.1 4227 | 0.1 4228 | 0.1 4229 | 0.1 4230 | 0.1 4231 | 0.1 4232 | 0.1 4233 | 0.2 4234 | 0.4 4235 | 0.8 4236 | 0.8 4237 | 0.4 4238 | 0.2 4239 | 0.4 4240 | 0.8 4241 | 0.8 4242 | 0.2 4243 | 0.1 4244 | 0.1 4245 | 0.1 4246 | 0.1 4247 | 0.1 4248 | 0.1 4249 | 0.1 4250 | 0.1 4251 | 0.1 4252 | 0.1 4253 | 0.1 4254 | 0.1 4255 | 0.1 4256 | 0.1 4257 | 0.2 4258 | 0.4 4259 | 0.8 4260 | 0.8 4261 | 0.4 4262 | 0.2 4263 | 0.4 4264 | 0.8 4265 | 0.8 4266 | 0.2 4267 | 0.1 4268 | 0.1 4269 | 0.1 4270 | 0.1 4271 | 0.1 4272 | 0.1 4273 | 0.1 4274 | 0.1 4275 | 0.1 4276 | 0.1 4277 | 0.1 4278 | 0.1 4279 | 0.1 4280 | 0.1 4281 | 0.2 4282 | 0.4 4283 | 0.8 4284 | 0.8 4285 | 0.4 4286 | 0.2 4287 | 0.4 4288 | 0.8 4289 | 0.8 4290 | 0.2 4291 | 0.1 4292 | 0.1 4293 | 0.1 4294 | 0.1 4295 | 0.1 4296 | 0.1 4297 | 0.1 4298 | 0.1 4299 | 0.1 4300 | 0.1 4301 | 0.1 4302 | 0.1 4303 | 0.1 4304 | 0.1 4305 | 0.1 4306 | 0.1 4307 | 0.1 4308 | 0.1 4309 | 0.1 4310 | 0.1 4311 | 0.1 4312 | 0.1 4313 | 0.1 4314 | 0.1 4315 | 0.1 4316 | 0.1 4317 | 0.1 4318 | 0.1 4319 | 0.1 4320 | 0.1 4321 | 0.1 4322 | 0.1 4323 | 0.1 4324 | 0.1 4325 | 0.1 4326 | 0.1 4327 | 0.1 4328 | 0.1 4329 | 0.1 4330 | 0.1 4331 | 0.1 4332 | 0.1 4333 | 0.1 4334 | 0.1 4335 | 0.1 4336 | 0.1 4337 | 0.1 4338 | 0.1 4339 | 0.1 4340 | 0.1 4341 | 0.1 4342 | 0.1 4343 | 0.1 4344 | 0.1 4345 | 0.1 4346 | 0.06 4347 | 0.06 4348 | 0.06 4349 | 0.06 4350 | 0.06 4351 | 0.06 4352 | 0.06 4353 | 0.12 4354 | 0.24 4355 | 0.48 4356 | 0.48 4357 | 0.24 4358 | 0.12 4359 | 0.24 4360 | 0.48 4361 | 0.48 4362 | 0.12 4363 | 0.06 4364 | 0.06 4365 | 0.06 4366 | 0.06 4367 | 0.06 4368 | 0.06 4369 | 0.06 4370 | 0.06 4371 | 0.06 4372 | 0.06 4373 | 0.06 4374 | 0.06 4375 | 0.06 4376 | 0.06 4377 | 0.12 4378 | 0.24 4379 | 0.48 4380 | 0.48 4381 | 0.24 4382 | 0.12 4383 | 0.24 4384 | 0.48 4385 | 0.48 4386 | 0.12 4387 | 0.06 4388 | 0.06 4389 | 0.06 4390 | 0.06 4391 | 0.06 4392 | 0.06 4393 | 0.06 4394 | 0.06 4395 | 0.06 4396 | 0.06 4397 | 0.06 4398 | 0.06 4399 | 0.06 4400 | 0.06 4401 | 0.12 4402 | 0.24 4403 | 0.48 4404 | 0.48 4405 | 0.24 4406 | 0.12 4407 | 0.24 4408 | 0.48 4409 | 0.48 4410 | 0.12 4411 | 0.06 4412 | 0.06 4413 | 0.06 4414 | 0.06 4415 | 0.06 4416 | 0.06 4417 | 0.06 4418 | 0.06 4419 | 0.06 4420 | 0.06 4421 | 0.06 4422 | 0.06 4423 | 0.06 4424 | 0.06 4425 | 0.12 4426 | 0.24 4427 | 0.48 4428 | 0.48 4429 | 0.24 4430 | 0.12 4431 | 0.24 4432 | 0.48 4433 | 0.48 4434 | 0.12 4435 | 0.06 4436 | 0.06 4437 | 0.06 4438 | 0.06 4439 | 0.06 4440 | 0.06 4441 | 0.06 4442 | 0.06 4443 | 0.06 4444 | 0.06 4445 | 0.06 4446 | 0.06 4447 | 0.06 4448 | 0.06 4449 | 0.12 4450 | 0.24 4451 | 0.48 4452 | 0.48 4453 | 0.24 4454 | 0.12 4455 | 0.24 4456 | 0.48 4457 | 0.48 4458 | 0.12 4459 | 0.06 4460 | 0.06 4461 | 0.06 4462 | 0.06 4463 | 0.06 4464 | 0.06 4465 | 0.06 4466 | 0.06 4467 | 0.06 4468 | 0.06 4469 | 0.06 4470 | 0.06 4471 | 0.06 4472 | 0.06 4473 | 0.06 4474 | 0.06 4475 | 0.06 4476 | 0.06 4477 | 0.06 4478 | 0.06 4479 | 0.06 4480 | 0.06 4481 | 0.06 4482 | 0.06 4483 | 0.06 4484 | 0.06 4485 | 0.06 4486 | 0.06 4487 | 0.06 4488 | 0.06 4489 | 0.06 4490 | 0.06 4491 | 0.06 4492 | 0.06 4493 | 0.06 4494 | 0.06 4495 | 0.06 4496 | 0.06 4497 | 0.06 4498 | 0.06 4499 | 0.06 4500 | 0.06 4501 | 0.06 4502 | 0.06 4503 | 0.06 4504 | 0.06 4505 | 0.06 4506 | 0.06 4507 | 0.06 4508 | 0.06 4509 | 0.06 4510 | 0.06 4511 | 0.06 4512 | 0.06 4513 | 0.06 4514 | 0.06 4515 | 0.06 4516 | 0.06 4517 | 0.06 4518 | 0.06 4519 | 0.06 4520 | 0.06 4521 | 0.12 4522 | 0.24 4523 | 0.48 4524 | 0.48 4525 | 0.24 4526 | 0.12 4527 | 0.24 4528 | 0.48 4529 | 0.48 4530 | 0.12 4531 | 0.06 4532 | 0.06 4533 | 0.06 4534 | 0.06 4535 | 0.06 4536 | 0.06 4537 | 0.06 4538 | 0.06 4539 | 0.06 4540 | 0.06 4541 | 0.06 4542 | 0.06 4543 | 0.06 4544 | 0.06 4545 | 0.12 4546 | 0.24 4547 | 0.48 4548 | 0.48 4549 | 0.24 4550 | 0.12 4551 | 0.24 4552 | 0.48 4553 | 0.48 4554 | 0.12 4555 | 0.06 4556 | 0.06 4557 | 0.06 4558 | 0.06 4559 | 0.06 4560 | 0.06 4561 | 0.06 4562 | 0.06 4563 | 0.06 4564 | 0.06 4565 | 0.06 4566 | 0.06 4567 | 0.06 4568 | 0.06 4569 | 0.12 4570 | 0.24 4571 | 0.48 4572 | 0.48 4573 | 0.24 4574 | 0.12 4575 | 0.24 4576 | 0.48 4577 | 0.48 4578 | 0.12 4579 | 0.06 4580 | 0.06 4581 | 0.06 4582 | 0.06 4583 | 0.06 4584 | 0.06 4585 | 0.06 4586 | 0.06 4587 | 0.06 4588 | 0.06 4589 | 0.06 4590 | 0.06 4591 | 0.06 4592 | 0.06 4593 | 0.12 4594 | 0.24 4595 | 0.48 4596 | 0.48 4597 | 0.24 4598 | 0.12 4599 | 0.24 4600 | 0.48 4601 | 0.48 4602 | 0.12 4603 | 0.06 4604 | 0.06 4605 | 0.06 4606 | 0.06 4607 | 0.06 4608 | 0.06 4609 | 0.06 4610 | 0.06 4611 | 0.06 4612 | 0.06 4613 | 0.06 4614 | 0.06 4615 | 0.06 4616 | 0.06 4617 | 0.12 4618 | 0.24 4619 | 0.48 4620 | 0.48 4621 | 0.24 4622 | 0.12 4623 | 0.24 4624 | 0.48 4625 | 0.48 4626 | 0.12 4627 | 0.06 4628 | 0.06 4629 | 0.06 4630 | 0.06 4631 | 0.06 4632 | 0.06 4633 | 0.06 4634 | 0.06 4635 | 0.06 4636 | 0.06 4637 | 0.06 4638 | 0.06 4639 | 0.06 4640 | 0.06 4641 | 0.06 4642 | 0.06 4643 | 0.06 4644 | 0.06 4645 | 0.06 4646 | 0.06 4647 | 0.06 4648 | 0.06 4649 | 0.06 4650 | 0.06 4651 | 0.06 4652 | 0.06 4653 | 0.06 4654 | 0.06 4655 | 0.06 4656 | 0.06 4657 | 0.06 4658 | 0.06 4659 | 0.06 4660 | 0.06 4661 | 0.06 4662 | 0.06 4663 | 0.06 4664 | 0.06 4665 | 0.06 4666 | 0.06 4667 | 0.06 4668 | 0.06 4669 | 0.06 4670 | 0.06 4671 | 0.06 4672 | 0.06 4673 | 0.06 4674 | 0.06 4675 | 0.06 4676 | 0.06 4677 | 0.06 4678 | 0.06 4679 | 0.06 4680 | 0.06 4681 | 0.06 4682 | 0.06 4683 | 0.06 4684 | 0.06 4685 | 0.06 4686 | 0.06 4687 | 0.06 4688 | 0.06 4689 | 0.12 4690 | 0.24 4691 | 0.48 4692 | 0.48 4693 | 0.24 4694 | 0.12 4695 | 0.24 4696 | 0.48 4697 | 0.48 4698 | 0.12 4699 | 0.06 4700 | 0.06 4701 | 0.06 4702 | 0.06 4703 | 0.06 4704 | 0.06 4705 | 0.06 4706 | 0.06 4707 | 0.06 4708 | 0.06 4709 | 0.06 4710 | 0.06 4711 | 0.06 4712 | 0.06 4713 | 0.12 4714 | 0.24 4715 | 0.48 4716 | 0.48 4717 | 0.24 4718 | 0.12 4719 | 0.24 4720 | 0.48 4721 | 0.48 4722 | 0.12 4723 | 0.06 4724 | 0.06 4725 | 0.06 4726 | 0.06 4727 | 0.06 4728 | 0.06 4729 | 0.06 4730 | 0.06 4731 | 0.06 4732 | 0.06 4733 | 0.06 4734 | 0.06 4735 | 0.06 4736 | 0.06 4737 | 0.12 4738 | 0.24 4739 | 0.48 4740 | 0.48 4741 | 0.24 4742 | 0.12 4743 | 0.24 4744 | 0.48 4745 | 0.48 4746 | 0.12 4747 | 0.06 4748 | 0.06 4749 | 0.06 4750 | 0.06 4751 | 0.06 4752 | 0.06 4753 | 0.06 4754 | 0.06 4755 | 0.06 4756 | 0.06 4757 | 0.06 4758 | 0.06 4759 | 0.06 4760 | 0.06 4761 | 0.12 4762 | 0.24 4763 | 0.48 4764 | 0.48 4765 | 0.24 4766 | 0.12 4767 | 0.24 4768 | 0.48 4769 | 0.48 4770 | 0.12 4771 | 0.06 4772 | 0.06 4773 | 0.06 4774 | 0.06 4775 | 0.06 4776 | 0.06 4777 | 0.06 4778 | 0.06 4779 | 0.06 4780 | 0.06 4781 | 0.06 4782 | 0.06 4783 | 0.06 4784 | 0.06 4785 | 0.12 4786 | 0.24 4787 | 0.48 4788 | 0.48 4789 | 0.24 4790 | 0.12 4791 | 0.24 4792 | 0.48 4793 | 0.48 4794 | 0.12 4795 | 0.06 4796 | 0.06 4797 | 0.06 4798 | 0.06 4799 | 0.06 4800 | 0.06 4801 | 0.06 4802 | 0.06 4803 | 0.06 4804 | 0.06 4805 | 0.06 4806 | 0.06 4807 | 0.06 4808 | 0.06 4809 | 0.06 4810 | 0.06 4811 | 0.06 4812 | 0.06 4813 | 0.06 4814 | 0.06 4815 | 0.06 4816 | 0.06 4817 | 0.06 4818 | 0.06 4819 | 0.06 4820 | 0.06 4821 | 0.06 4822 | 0.06 4823 | 0.06 4824 | 0.06 4825 | 0.06 4826 | 0.06 4827 | 0.06 4828 | 0.06 4829 | 0.06 4830 | 0.06 4831 | 0.06 4832 | 0.06 4833 | 0.06 4834 | 0.06 4835 | 0.06 4836 | 0.06 4837 | 0.06 4838 | 0.06 4839 | 0.06 4840 | 0.06 4841 | 0.06 4842 | 0.06 4843 | 0.06 4844 | 0.06 4845 | 0.06 4846 | 0.06 4847 | 0.06 4848 | 0.06 4849 | 0.06 4850 | 0.06 4851 | 0.06 4852 | 0.06 4853 | 0.06 4854 | 0.06 4855 | 0.06 4856 | 0.06 4857 | 0.12 4858 | 0.24 4859 | 0.48 4860 | 0.48 4861 | 0.24 4862 | 0.12 4863 | 0.24 4864 | 0.48 4865 | 0.48 4866 | 0.12 4867 | 0.06 4868 | 0.06 4869 | 0.06 4870 | 0.06 4871 | 0.06 4872 | 0.06 4873 | 0.06 4874 | 0.06 4875 | 0.06 4876 | 0.06 4877 | 0.06 4878 | 0.06 4879 | 0.06 4880 | 0.06 4881 | 0.12 4882 | 0.24 4883 | 0.48 4884 | 0.48 4885 | 0.24 4886 | 0.12 4887 | 0.24 4888 | 0.48 4889 | 0.48 4890 | 0.12 4891 | 0.06 4892 | 0.06 4893 | 0.06 4894 | 0.06 4895 | 0.06 4896 | 0.06 4897 | 0.06 4898 | 0.06 4899 | 0.06 4900 | 0.06 4901 | 0.06 4902 | 0.06 4903 | 0.06 4904 | 0.06 4905 | 0.12 4906 | 0.24 4907 | 0.48 4908 | 0.48 4909 | 0.24 4910 | 0.12 4911 | 0.24 4912 | 0.48 4913 | 0.48 4914 | 0.12 4915 | 0.06 4916 | 0.06 4917 | 0.06 4918 | 0.06 4919 | 0.06 4920 | 0.06 4921 | 0.06 4922 | 0.06 4923 | 0.06 4924 | 0.06 4925 | 0.06 4926 | 0.06 4927 | 0.06 4928 | 0.06 4929 | 0.12 4930 | 0.24 4931 | 0.48 4932 | 0.48 4933 | 0.24 4934 | 0.12 4935 | 0.24 4936 | 0.48 4937 | 0.48 4938 | 0.12 4939 | 0.06 4940 | 0.06 4941 | 0.06 4942 | 0.06 4943 | 0.06 4944 | 0.06 4945 | 0.06 4946 | 0.06 4947 | 0.06 4948 | 0.06 4949 | 0.06 4950 | 0.06 4951 | 0.06 4952 | 0.06 4953 | 0.12 4954 | 0.24 4955 | 0.48 4956 | 0.48 4957 | 0.24 4958 | 0.12 4959 | 0.24 4960 | 0.48 4961 | 0.48 4962 | 0.12 4963 | 0.06 4964 | 0.06 4965 | 0.06 4966 | 0.06 4967 | 0.06 4968 | 0.06 4969 | 0.06 4970 | 0.06 4971 | 0.06 4972 | 0.06 4973 | 0.06 4974 | 0.06 4975 | 0.06 4976 | 0.06 4977 | 0.06 4978 | 0.06 4979 | 0.06 4980 | 0.06 4981 | 0.06 4982 | 0.06 4983 | 0.06 4984 | 0.06 4985 | 0.06 4986 | 0.06 4987 | 0.06 4988 | 0.06 4989 | 0.06 4990 | 0.06 4991 | 0.06 4992 | 0.06 4993 | 0.06 4994 | 0.06 4995 | 0.06 4996 | 0.06 4997 | 0.06 4998 | 0.06 4999 | 0.06 5000 | 0.06 5001 | 0.06 5002 | 0.06 5003 | 0.06 5004 | 0.06 5005 | 0.06 5006 | 0.06 5007 | 0.06 5008 | 0.06 5009 | 0.06 5010 | 0.06 5011 | 0.06 5012 | 0.06 5013 | 0.06 5014 | 0.06 5015 | 0.06 5016 | 0.06 5017 | 0.06 5018 | 0.06 5019 | 0.06 5020 | 0.06 5021 | 0.06 5022 | 0.06 5023 | 0.06 5024 | 0.06 5025 | 0.12 5026 | 0.24 5027 | 0.48 5028 | 0.48 5029 | 0.24 5030 | 0.12 5031 | 0.24 5032 | 0.48 5033 | 0.48 5034 | 0.12 5035 | 0.06 5036 | 0.06 5037 | 0.06 5038 | 0.06 5039 | 0.06 5040 | 0.06 5041 | 0.06 5042 | 0.06 5043 | 0.06 5044 | 0.06 5045 | 0.06 5046 | 0.06 5047 | 0.06 5048 | 0.06 5049 | 0.12 5050 | 0.24 5051 | 0.48 5052 | 0.48 5053 | 0.24 5054 | 0.12 5055 | 0.24 5056 | 0.48 5057 | 0.48 5058 | 0.12 5059 | 0.06 5060 | 0.06 5061 | 0.06 5062 | 0.06 5063 | 0.06 5064 | 0.06 5065 | 0.06 5066 | 0.06 5067 | 0.06 5068 | 0.06 5069 | 0.06 5070 | 0.06 5071 | 0.06 5072 | 0.06 5073 | 0.12 5074 | 0.24 5075 | 0.48 5076 | 0.48 5077 | 0.24 5078 | 0.12 5079 | 0.24 5080 | 0.48 5081 | 0.48 5082 | 0.12 5083 | 0.06 5084 | 0.06 5085 | 0.06 5086 | 0.06 5087 | 0.06 5088 | 0.06 5089 | 0.06 5090 | 0.06 5091 | 0.06 5092 | 0.06 5093 | 0.06 5094 | 0.06 5095 | 0.06 5096 | 0.06 5097 | 0.12 5098 | 0.24 5099 | 0.48 5100 | 0.48 5101 | 0.24 5102 | 0.12 5103 | 0.24 5104 | 0.48 5105 | 0.48 5106 | 0.12 5107 | 0.06 5108 | 0.06 5109 | 0.06 5110 | 0.06 5111 | 0.06 5112 | 0.06 5113 | 0.06 5114 | 0.06 5115 | 0.06 5116 | 0.06 5117 | 0.06 5118 | 0.06 5119 | 0.06 5120 | 0.06 5121 | 0.12 5122 | 0.24 5123 | 0.48 5124 | 0.48 5125 | 0.24 5126 | 0.12 5127 | 0.24 5128 | 0.48 5129 | 0.48 5130 | 0.12 5131 | 0.06 5132 | 0.06 5133 | 0.06 5134 | 0.06 5135 | 0.06 5136 | 0.06 5137 | 0.06 5138 | 0.06 5139 | 0.06 5140 | 0.06 5141 | 0.06 5142 | 0.06 5143 | 0.06 5144 | 0.06 5145 | 0.06 5146 | 0.06 5147 | 0.06 5148 | 0.06 5149 | 0.06 5150 | 0.06 5151 | 0.06 5152 | 0.06 5153 | 0.06 5154 | 0.06 5155 | 0.06 5156 | 0.06 5157 | 0.06 5158 | 0.06 5159 | 0.06 5160 | 0.06 5161 | 0.06 5162 | 0.06 5163 | 0.06 5164 | 0.06 5165 | 0.06 5166 | 0.06 5167 | 0.06 5168 | 0.06 5169 | 0.06 5170 | 0.06 5171 | 0.06 5172 | 0.06 5173 | 0.06 5174 | 0.06 5175 | 0.06 5176 | 0.06 5177 | 0.06 5178 | 0.06 5179 | 0.06 5180 | 0.06 5181 | 0.06 5182 | 0.06 5183 | 0.06 5184 | 0.06 5185 | 0.06 5186 | 0.06 5187 | 0.06 5188 | 0.06 5189 | 0.06 5190 | 0.06 5191 | 0.06 5192 | 0.06 5193 | 0.12 5194 | 0.24 5195 | 0.48 5196 | 0.48 5197 | 0.24 5198 | 0.12 5199 | 0.24 5200 | 0.48 5201 | 0.48 5202 | 0.12 5203 | 0.06 5204 | 0.06 5205 | 0.06 5206 | 0.06 5207 | 0.06 5208 | 0.06 5209 | 0.06 5210 | 0.06 5211 | 0.06 5212 | 0.06 5213 | 0.06 5214 | 0.06 5215 | 0.06 5216 | 0.06 5217 | 0.12 5218 | 0.24 5219 | 0.48 5220 | 0.48 5221 | 0.24 5222 | 0.12 5223 | 0.24 5224 | 0.48 5225 | 0.48 5226 | 0.12 5227 | 0.06 5228 | 0.06 5229 | 0.06 5230 | 0.06 5231 | 0.06 5232 | 0.06 5233 | 0.06 5234 | 0.06 5235 | 0.06 5236 | 0.06 5237 | 0.06 5238 | 0.06 5239 | 0.06 5240 | 0.06 5241 | 0.12 5242 | 0.24 5243 | 0.48 5244 | 0.48 5245 | 0.24 5246 | 0.12 5247 | 0.24 5248 | 0.48 5249 | 0.48 5250 | 0.12 5251 | 0.06 5252 | 0.06 5253 | 0.06 5254 | 0.06 5255 | 0.06 5256 | 0.06 5257 | 0.06 5258 | 0.06 5259 | 0.06 5260 | 0.06 5261 | 0.06 5262 | 0.06 5263 | 0.06 5264 | 0.06 5265 | 0.12 5266 | 0.24 5267 | 0.48 5268 | 0.48 5269 | 0.24 5270 | 0.12 5271 | 0.24 5272 | 0.48 5273 | 0.48 5274 | 0.12 5275 | 0.06 5276 | 0.06 5277 | 0.06 5278 | 0.06 5279 | 0.06 5280 | 0.06 5281 | 0.06 5282 | 0.06 5283 | 0.06 5284 | 0.06 5285 | 0.06 5286 | 0.06 5287 | 0.06 5288 | 0.06 5289 | 0.12 5290 | 0.24 5291 | 0.48 5292 | 0.48 5293 | 0.24 5294 | 0.12 5295 | 0.24 5296 | 0.48 5297 | 0.48 5298 | 0.12 5299 | 0.06 5300 | 0.06 5301 | 0.06 5302 | 0.06 5303 | 0.06 5304 | 0.06 5305 | 0.06 5306 | 0.06 5307 | 0.06 5308 | 0.06 5309 | 0.06 5310 | 0.06 5311 | 0.06 5312 | 0.06 5313 | 0.06 5314 | 0.06 5315 | 0.06 5316 | 0.06 5317 | 0.06 5318 | 0.06 5319 | 0.06 5320 | 0.06 5321 | 0.06 5322 | 0.06 5323 | 0.06 5324 | 0.06 5325 | 0.06 5326 | 0.06 5327 | 0.06 5328 | 0.06 5329 | 0.06 5330 | 0.06 5331 | 0.06 5332 | 0.06 5333 | 0.06 5334 | 0.06 5335 | 0.06 5336 | 0.06 5337 | 0.06 5338 | 0.06 5339 | 0.06 5340 | 0.06 5341 | 0.06 5342 | 0.06 5343 | 0.06 5344 | 0.06 5345 | 0.06 5346 | 0.06 5347 | 0.06 5348 | 0.06 5349 | 0.06 5350 | 0.06 5351 | 0.06 5352 | 0.06 5353 | 0.06 5354 | 0.06 5355 | 0.06 5356 | 0.06 5357 | 0.06 5358 | 0.06 5359 | 0.06 5360 | 0.06 5361 | 0.12 5362 | 0.24 5363 | 0.48 5364 | 0.48 5365 | 0.24 5366 | 0.12 5367 | 0.24 5368 | 0.48 5369 | 0.48 5370 | 0.12 5371 | 0.06 5372 | 0.06 5373 | 0.06 5374 | 0.06 5375 | 0.06 5376 | 0.06 5377 | 0.06 5378 | 0.06 5379 | 0.06 5380 | 0.06 5381 | 0.06 5382 | 0.06 5383 | 0.06 5384 | 0.06 5385 | 0.12 5386 | 0.24 5387 | 0.48 5388 | 0.48 5389 | 0.24 5390 | 0.12 5391 | 0.24 5392 | 0.48 5393 | 0.48 5394 | 0.12 5395 | 0.06 5396 | 0.06 5397 | 0.06 5398 | 0.06 5399 | 0.06 5400 | 0.06 5401 | 0.06 5402 | 0.06 5403 | 0.06 5404 | 0.06 5405 | 0.06 5406 | 0.06 5407 | 0.06 5408 | 0.06 5409 | 0.12 5410 | 0.24 5411 | 0.48 5412 | 0.48 5413 | 0.24 5414 | 0.12 5415 | 0.24 5416 | 0.48 5417 | 0.48 5418 | 0.12 5419 | 0.06 5420 | 0.06 5421 | 0.06 5422 | 0.06 5423 | 0.06 5424 | 0.06 5425 | 0.06 5426 | 0.06 5427 | 0.06 5428 | 0.06 5429 | 0.06 5430 | 0.06 5431 | 0.06 5432 | 0.06 5433 | 0.12 5434 | 0.24 5435 | 0.48 5436 | 0.48 5437 | 0.24 5438 | 0.12 5439 | 0.24 5440 | 0.48 5441 | 0.48 5442 | 0.12 5443 | 0.06 5444 | 0.06 5445 | 0.06 5446 | 0.06 5447 | 0.06 5448 | 0.06 5449 | 0.06 5450 | 0.06 5451 | 0.06 5452 | 0.06 5453 | 0.06 5454 | 0.06 5455 | 0.06 5456 | 0.06 5457 | 0.12 5458 | 0.24 5459 | 0.48 5460 | 0.48 5461 | 0.24 5462 | 0.12 5463 | 0.24 5464 | 0.48 5465 | 0.48 5466 | 0.12 5467 | 0.06 5468 | 0.06 5469 | 0.06 5470 | 0.06 5471 | 0.06 5472 | 0.06 5473 | 0.06 5474 | 0.06 5475 | 0.06 5476 | 0.06 5477 | 0.06 5478 | 0.06 5479 | 0.06 5480 | 0.06 5481 | 0.06 5482 | 0.06 5483 | 0.06 5484 | 0.06 5485 | 0.06 5486 | 0.06 5487 | 0.06 5488 | 0.06 5489 | 0.06 5490 | 0.06 5491 | 0.06 5492 | 0.06 5493 | 0.06 5494 | 0.06 5495 | 0.06 5496 | 0.06 5497 | 0.06 5498 | 0.06 5499 | 0.06 5500 | 0.06 5501 | 0.06 5502 | 0.06 5503 | 0.06 5504 | 0.06 5505 | 0.06 5506 | 0.06 5507 | 0.06 5508 | 0.06 5509 | 0.06 5510 | 0.06 5511 | 0.06 5512 | 0.06 5513 | 0.06 5514 | 0.06 5515 | 0.06 5516 | 0.06 5517 | 0.06 5518 | 0.06 5519 | 0.06 5520 | 0.06 5521 | 0.06 5522 | 0.06 5523 | 0.06 5524 | 0.06 5525 | 0.06 5526 | 0.06 5527 | 0.06 5528 | 0.06 5529 | 0.12 5530 | 0.24 5531 | 0.48 5532 | 0.48 5533 | 0.24 5534 | 0.12 5535 | 0.24 5536 | 0.48 5537 | 0.48 5538 | 0.12 5539 | 0.06 5540 | 0.06 5541 | 0.06 5542 | 0.06 5543 | 0.06 5544 | 0.06 5545 | 0.06 5546 | 0.06 5547 | 0.06 5548 | 0.06 5549 | 0.06 5550 | 0.06 5551 | 0.06 5552 | 0.06 5553 | 0.12 5554 | 0.24 5555 | 0.48 5556 | 0.48 5557 | 0.24 5558 | 0.12 5559 | 0.24 5560 | 0.48 5561 | 0.48 5562 | 0.12 5563 | 0.06 5564 | 0.06 5565 | 0.06 5566 | 0.06 5567 | 0.06 5568 | 0.06 5569 | 0.06 5570 | 0.06 5571 | 0.06 5572 | 0.06 5573 | 0.06 5574 | 0.06 5575 | 0.06 5576 | 0.06 5577 | 0.12 5578 | 0.24 5579 | 0.48 5580 | 0.48 5581 | 0.24 5582 | 0.12 5583 | 0.24 5584 | 0.48 5585 | 0.48 5586 | 0.12 5587 | 0.06 5588 | 0.06 5589 | 0.06 5590 | 0.06 5591 | 0.06 5592 | 0.06 5593 | 0.06 5594 | 0.06 5595 | 0.06 5596 | 0.06 5597 | 0.06 5598 | 0.06 5599 | 0.06 5600 | 0.06 5601 | 0.12 5602 | 0.24 5603 | 0.48 5604 | 0.48 5605 | 0.24 5606 | 0.12 5607 | 0.24 5608 | 0.48 5609 | 0.48 5610 | 0.12 5611 | 0.06 5612 | 0.06 5613 | 0.06 5614 | 0.06 5615 | 0.06 5616 | 0.06 5617 | 0.06 5618 | 0.06 5619 | 0.06 5620 | 0.06 5621 | 0.06 5622 | 0.06 5623 | 0.06 5624 | 0.06 5625 | 0.12 5626 | 0.24 5627 | 0.48 5628 | 0.48 5629 | 0.24 5630 | 0.12 5631 | 0.24 5632 | 0.48 5633 | 0.48 5634 | 0.12 5635 | 0.06 5636 | 0.06 5637 | 0.06 5638 | 0.06 5639 | 0.06 5640 | 0.06 5641 | 0.06 5642 | 0.06 5643 | 0.06 5644 | 0.06 5645 | 0.06 5646 | 0.06 5647 | 0.06 5648 | 0.06 5649 | 0.06 5650 | 0.06 5651 | 0.06 5652 | 0.06 5653 | 0.06 5654 | 0.06 5655 | 0.06 5656 | 0.06 5657 | 0.06 5658 | 0.06 5659 | 0.06 5660 | 0.06 5661 | 0.06 5662 | 0.06 5663 | 0.06 5664 | 0.06 5665 | 0.06 5666 | 0.06 5667 | 0.06 5668 | 0.06 5669 | 0.06 5670 | 0.06 5671 | 0.06 5672 | 0.06 5673 | 0.06 5674 | 0.06 5675 | 0.06 5676 | 0.06 5677 | 0.06 5678 | 0.06 5679 | 0.06 5680 | 0.06 5681 | 0.06 5682 | 0.06 5683 | 0.06 5684 | 0.06 5685 | 0.06 5686 | 0.06 5687 | 0.06 5688 | 0.06 5689 | 0.06 5690 | 0.06 5691 | 0.06 5692 | 0.06 5693 | 0.06 5694 | 0.06 5695 | 0.06 5696 | 0.06 5697 | 0.12 5698 | 0.24 5699 | 0.48 5700 | 0.48 5701 | 0.24 5702 | 0.12 5703 | 0.24 5704 | 0.48 5705 | 0.48 5706 | 0.12 5707 | 0.06 5708 | 0.06 5709 | 0.06 5710 | 0.06 5711 | 0.06 5712 | 0.06 5713 | 0.06 5714 | 0.06 5715 | 0.06 5716 | 0.06 5717 | 0.06 5718 | 0.06 5719 | 0.06 5720 | 0.06 5721 | 0.12 5722 | 0.24 5723 | 0.48 5724 | 0.48 5725 | 0.24 5726 | 0.12 5727 | 0.24 5728 | 0.48 5729 | 0.48 5730 | 0.12 5731 | 0.06 5732 | 0.06 5733 | 0.06 5734 | 0.06 5735 | 0.06 5736 | 0.06 5737 | 0.06 5738 | 0.06 5739 | 0.06 5740 | 0.06 5741 | 0.06 5742 | 0.06 5743 | 0.06 5744 | 0.06 5745 | 0.12 5746 | 0.24 5747 | 0.48 5748 | 0.48 5749 | 0.24 5750 | 0.12 5751 | 0.24 5752 | 0.48 5753 | 0.48 5754 | 0.12 5755 | 0.06 5756 | 0.06 5757 | 0.06 5758 | 0.06 5759 | 0.06 5760 | 0.06 5761 | 0.06 5762 | 0.06 5763 | 0.06 5764 | 0.06 5765 | 0.06 5766 | 0.06 5767 | 0.06 5768 | 0.06 5769 | 0.12 5770 | 0.24 5771 | 0.48 5772 | 0.48 5773 | 0.24 5774 | 0.12 5775 | 0.24 5776 | 0.48 5777 | 0.48 5778 | 0.12 5779 | 0.06 5780 | 0.06 5781 | 0.06 5782 | 0.06 5783 | 0.06 5784 | 0.06 5785 | 0.06 5786 | 0.06 5787 | 0.06 5788 | 0.06 5789 | 0.06 5790 | 0.06 5791 | 0.06 5792 | 0.06 5793 | 0.12 5794 | 0.24 5795 | 0.48 5796 | 0.48 5797 | 0.24 5798 | 0.12 5799 | 0.24 5800 | 0.48 5801 | 0.48 5802 | 0.12 5803 | 0.06 5804 | 0.06 5805 | 0.06 5806 | 0.06 5807 | 0.06 5808 | 0.06 5809 | 0.06 5810 | 0.06 5811 | 0.06 5812 | 0.06 5813 | 0.06 5814 | 0.06 5815 | 0.06 5816 | 0.06 5817 | 0.06 5818 | 0.06 5819 | 0.06 5820 | 0.06 5821 | 0.06 5822 | 0.06 5823 | 0.06 5824 | 0.06 5825 | 0.06 5826 | 0.06 5827 | 0.06 5828 | 0.06 5829 | 0.06 5830 | 0.06 5831 | 0.06 5832 | 0.06 5833 | 0.06 5834 | 0.1 5835 | 0.1 5836 | 0.1 5837 | 0.1 5838 | 0.1 5839 | 0.1 5840 | 0.1 5841 | 0.1 5842 | 0.1 5843 | 0.1 5844 | 0.1 5845 | 0.1 5846 | 0.1 5847 | 0.1 5848 | 0.1 5849 | 0.1 5850 | 0.1 5851 | 0.1 5852 | 0.1 5853 | 0.1 5854 | 0.1 5855 | 0.1 5856 | 0.1 5857 | 0.1 5858 | 0.1 5859 | 0.1 5860 | 0.1 5861 | 0.1 5862 | 0.1 5863 | 0.1 5864 | 0.1 5865 | 0.2 5866 | 0.4 5867 | 0.8 5868 | 0.8 5869 | 0.4 5870 | 0.2 5871 | 0.4 5872 | 0.8 5873 | 0.8 5874 | 0.2 5875 | 0.1 5876 | 0.1 5877 | 0.1 5878 | 0.1 5879 | 0.1 5880 | 0.1 5881 | 0.1 5882 | 0.1 5883 | 0.1 5884 | 0.1 5885 | 0.1 5886 | 0.1 5887 | 0.1 5888 | 0.1 5889 | 0.2 5890 | 0.4 5891 | 0.8 5892 | 0.8 5893 | 0.4 5894 | 0.2 5895 | 0.4 5896 | 0.8 5897 | 0.8 5898 | 0.2 5899 | 0.1 5900 | 0.1 5901 | 0.1 5902 | 0.1 5903 | 0.1 5904 | 0.1 5905 | 0.1 5906 | 0.1 5907 | 0.1 5908 | 0.1 5909 | 0.1 5910 | 0.1 5911 | 0.1 5912 | 0.1 5913 | 0.2 5914 | 0.4 5915 | 0.8 5916 | 0.8 5917 | 0.4 5918 | 0.2 5919 | 0.4 5920 | 0.8 5921 | 0.8 5922 | 0.2 5923 | 0.1 5924 | 0.1 5925 | 0.1 5926 | 0.1 5927 | 0.1 5928 | 0.1 5929 | 0.1 5930 | 0.1 5931 | 0.1 5932 | 0.1 5933 | 0.1 5934 | 0.1 5935 | 0.1 5936 | 0.1 5937 | 0.2 5938 | 0.4 5939 | 0.8 5940 | 0.8 5941 | 0.4 5942 | 0.2 5943 | 0.4 5944 | 0.8 5945 | 0.8 5946 | 0.2 5947 | 0.1 5948 | 0.1 5949 | 0.1 5950 | 0.1 5951 | 0.1 5952 | 0.1 5953 | 0.1 5954 | 0.1 5955 | 0.1 5956 | 0.1 5957 | 0.1 5958 | 0.1 5959 | 0.1 5960 | 0.1 5961 | 0.2 5962 | 0.4 5963 | 0.8 5964 | 0.8 5965 | 0.4 5966 | 0.2 5967 | 0.4 5968 | 0.8 5969 | 0.8 5970 | 0.2 5971 | 0.1 5972 | 0.1 5973 | 0.1 5974 | 0.1 5975 | 0.1 5976 | 0.1 5977 | 0.1 5978 | 0.1 5979 | 0.1 5980 | 0.1 5981 | 0.1 5982 | 0.1 5983 | 0.1 5984 | 0.1 5985 | 0.1 5986 | 0.1 5987 | 0.1 5988 | 0.1 5989 | 0.1 5990 | 0.1 5991 | 0.1 5992 | 0.1 5993 | 0.1 5994 | 0.1 5995 | 0.1 5996 | 0.1 5997 | 0.1 5998 | 0.1 5999 | 0.1 6000 | 0.1 6001 | 0.1 6002 | 0.1 6003 | 0.1 6004 | 0.1 6005 | 0.1 6006 | 0.1 6007 | 0.1 6008 | 0.1 6009 | 0.1 6010 | 0.1 6011 | 0.1 6012 | 0.1 6013 | 0.1 6014 | 0.1 6015 | 0.1 6016 | 0.1 6017 | 0.1 6018 | 0.1 6019 | 0.1 6020 | 0.1 6021 | 0.1 6022 | 0.1 6023 | 0.1 6024 | 0.1 6025 | 0.1 6026 | 0.1 6027 | 0.1 6028 | 0.1 6029 | 0.1 6030 | 0.1 6031 | 0.1 6032 | 0.1 6033 | 0.2 6034 | 0.4 6035 | 0.8 6036 | 0.8 6037 | 0.4 6038 | 0.2 6039 | 0.4 6040 | 0.8 6041 | 0.8 6042 | 0.2 6043 | 0.1 6044 | 0.1 6045 | 0.1 6046 | 0.1 6047 | 0.1 6048 | 0.1 6049 | 0.1 6050 | 0.1 6051 | 0.1 6052 | 0.1 6053 | 0.1 6054 | 0.1 6055 | 0.1 6056 | 0.1 6057 | 0.2 6058 | 0.4 6059 | 0.8 6060 | 0.8 6061 | 0.4 6062 | 0.2 6063 | 0.4 6064 | 0.8 6065 | 0.8 6066 | 0.2 6067 | 0.1 6068 | 0.1 6069 | 0.1 6070 | 0.1 6071 | 0.1 6072 | 0.1 6073 | 0.1 6074 | 0.1 6075 | 0.1 6076 | 0.1 6077 | 0.1 6078 | 0.1 6079 | 0.1 6080 | 0.1 6081 | 0.2 6082 | 0.4 6083 | 0.8 6084 | 0.8 6085 | 0.4 6086 | 0.2 6087 | 0.4 6088 | 0.8 6089 | 0.8 6090 | 0.2 6091 | 0.1 6092 | 0.1 6093 | 0.1 6094 | 0.1 6095 | 0.1 6096 | 0.1 6097 | 0.1 6098 | 0.1 6099 | 0.1 6100 | 0.1 6101 | 0.1 6102 | 0.1 6103 | 0.1 6104 | 0.1 6105 | 0.2 6106 | 0.4 6107 | 0.8 6108 | 0.8 6109 | 0.4 6110 | 0.2 6111 | 0.4 6112 | 0.8 6113 | 0.8 6114 | 0.2 6115 | 0.1 6116 | 0.1 6117 | 0.1 6118 | 0.1 6119 | 0.1 6120 | 0.1 6121 | 0.1 6122 | 0.1 6123 | 0.1 6124 | 0.1 6125 | 0.1 6126 | 0.1 6127 | 0.1 6128 | 0.1 6129 | 0.2 6130 | 0.4 6131 | 0.8 6132 | 0.8 6133 | 0.4 6134 | 0.2 6135 | 0.4 6136 | 0.8 6137 | 0.8 6138 | 0.2 6139 | 0.1 6140 | 0.1 6141 | 0.1 6142 | 0.1 6143 | 0.1 6144 | 0.1 6145 | 0.1 6146 | 0.1 6147 | 0.1 6148 | 0.1 6149 | 0.1 6150 | 0.1 6151 | 0.1 6152 | 0.1 6153 | 0.1 6154 | 0.1 6155 | 0.1 6156 | 0.1 6157 | 0.1 6158 | 0.1 6159 | 0.1 6160 | 0.1 6161 | 0.1 6162 | 0.1 6163 | 0.1 6164 | 0.1 6165 | 0.1 6166 | 0.1 6167 | 0.1 6168 | 0.1 6169 | 0.1 6170 | 0.1 6171 | 0.1 6172 | 0.1 6173 | 0.1 6174 | 0.1 6175 | 0.1 6176 | 0.1 6177 | 0.1 6178 | 0.1 6179 | 0.1 6180 | 0.1 6181 | 0.1 6182 | 0.1 6183 | 0.1 6184 | 0.1 6185 | 0.1 6186 | 0.1 6187 | 0.1 6188 | 0.1 6189 | 0.1 6190 | 0.1 6191 | 0.1 6192 | 0.1 6193 | 0.1 6194 | 0.1 6195 | 0.1 6196 | 0.1 6197 | 0.1 6198 | 0.1 6199 | 0.1 6200 | 0.1 6201 | 0.2 6202 | 0.4 6203 | 0.8 6204 | 0.8 6205 | 0.4 6206 | 0.2 6207 | 0.4 6208 | 0.8 6209 | 0.8 6210 | 0.2 6211 | 0.1 6212 | 0.1 6213 | 0.1 6214 | 0.1 6215 | 0.1 6216 | 0.1 6217 | 0.1 6218 | 0.1 6219 | 0.1 6220 | 0.1 6221 | 0.1 6222 | 0.1 6223 | 0.1 6224 | 0.1 6225 | 0.2 6226 | 0.4 6227 | 0.8 6228 | 0.8 6229 | 0.4 6230 | 0.2 6231 | 0.4 6232 | 0.8 6233 | 0.8 6234 | 0.2 6235 | 0.1 6236 | 0.1 6237 | 0.1 6238 | 0.1 6239 | 0.1 6240 | 0.1 6241 | 0.1 6242 | 0.1 6243 | 0.1 6244 | 0.1 6245 | 0.1 6246 | 0.1 6247 | 0.1 6248 | 0.1 6249 | 0.2 6250 | 0.4 6251 | 0.8 6252 | 0.8 6253 | 0.4 6254 | 0.2 6255 | 0.4 6256 | 0.8 6257 | 0.8 6258 | 0.2 6259 | 0.1 6260 | 0.1 6261 | 0.1 6262 | 0.1 6263 | 0.1 6264 | 0.1 6265 | 0.1 6266 | 0.1 6267 | 0.1 6268 | 0.1 6269 | 0.1 6270 | 0.1 6271 | 0.1 6272 | 0.1 6273 | 0.2 6274 | 0.4 6275 | 0.8 6276 | 0.8 6277 | 0.4 6278 | 0.2 6279 | 0.4 6280 | 0.8 6281 | 0.8 6282 | 0.2 6283 | 0.1 6284 | 0.1 6285 | 0.1 6286 | 0.1 6287 | 0.1 6288 | 0.1 6289 | 0.1 6290 | 0.1 6291 | 0.1 6292 | 0.1 6293 | 0.1 6294 | 0.1 6295 | 0.1 6296 | 0.1 6297 | 0.2 6298 | 0.4 6299 | 0.8 6300 | 0.8 6301 | 0.4 6302 | 0.2 6303 | 0.4 6304 | 0.8 6305 | 0.8 6306 | 0.2 6307 | 0.1 6308 | 0.1 6309 | 0.1 6310 | 0.1 6311 | 0.1 6312 | 0.1 6313 | 0.1 6314 | 0.1 6315 | 0.1 6316 | 0.1 6317 | 0.1 6318 | 0.1 6319 | 0.1 6320 | 0.1 6321 | 0.1 6322 | 0.1 6323 | 0.1 6324 | 0.1 6325 | 0.1 6326 | 0.1 6327 | 0.1 6328 | 0.1 6329 | 0.1 6330 | 0.1 6331 | 0.1 6332 | 0.1 6333 | 0.1 6334 | 0.1 6335 | 0.1 6336 | 0.1 6337 | 0.1 6338 | 0.1 6339 | 0.1 6340 | 0.1 6341 | 0.1 6342 | 0.1 6343 | 0.1 6344 | 0.1 6345 | 0.1 6346 | 0.1 6347 | 0.1 6348 | 0.1 6349 | 0.1 6350 | 0.1 6351 | 0.1 6352 | 0.1 6353 | 0.1 6354 | 0.1 6355 | 0.1 6356 | 0.1 6357 | 0.1 6358 | 0.1 6359 | 0.1 6360 | 0.1 6361 | 0.1 6362 | 0.1 6363 | 0.1 6364 | 0.1 6365 | 0.1 6366 | 0.1 6367 | 0.1 6368 | 0.1 6369 | 0.2 6370 | 0.4 6371 | 0.8 6372 | 0.8 6373 | 0.4 6374 | 0.2 6375 | 0.4 6376 | 0.8 6377 | 0.8 6378 | 0.2 6379 | 0.1 6380 | 0.1 6381 | 0.1 6382 | 0.1 6383 | 0.1 6384 | 0.1 6385 | 0.1 6386 | 0.1 6387 | 0.1 6388 | 0.1 6389 | 0.1 6390 | 0.1 6391 | 0.1 6392 | 0.1 6393 | 0.2 6394 | 0.4 6395 | 0.8 6396 | 0.8 6397 | 0.4 6398 | 0.2 6399 | 0.4 6400 | 0.8 6401 | 0.8 6402 | 0.2 6403 | 0.1 6404 | 0.1 6405 | 0.1 6406 | 0.1 6407 | 0.1 6408 | 0.1 6409 | 0.1 6410 | 0.1 6411 | 0.1 6412 | 0.1 6413 | 0.1 6414 | 0.1 6415 | 0.1 6416 | 0.1 6417 | 0.2 6418 | 0.4 6419 | 0.8 6420 | 0.8 6421 | 0.4 6422 | 0.2 6423 | 0.4 6424 | 0.8 6425 | 0.8 6426 | 0.2 6427 | 0.1 6428 | 0.1 6429 | 0.1 6430 | 0.1 6431 | 0.1 6432 | 0.1 6433 | 0.1 6434 | 0.1 6435 | 0.1 6436 | 0.1 6437 | 0.1 6438 | 0.1 6439 | 0.1 6440 | 0.1 6441 | 0.2 6442 | 0.4 6443 | 0.8 6444 | 0.8 6445 | 0.4 6446 | 0.2 6447 | 0.4 6448 | 0.8 6449 | 0.8 6450 | 0.2 6451 | 0.1 6452 | 0.1 6453 | 0.1 6454 | 0.1 6455 | 0.1 6456 | 0.1 6457 | 0.1 6458 | 0.1 6459 | 0.1 6460 | 0.1 6461 | 0.1 6462 | 0.1 6463 | 0.1 6464 | 0.1 6465 | 0.2 6466 | 0.4 6467 | 0.8 6468 | 0.8 6469 | 0.4 6470 | 0.2 6471 | 0.4 6472 | 0.8 6473 | 0.8 6474 | 0.2 6475 | 0.1 6476 | 0.1 6477 | 0.1 6478 | 0.1 6479 | 0.1 6480 | 0.1 6481 | 0.1 6482 | 0.1 6483 | 0.1 6484 | 0.1 6485 | 0.1 6486 | 0.1 6487 | 0.1 6488 | 0.1 6489 | 0.1 6490 | 0.1 6491 | 0.1 6492 | 0.1 6493 | 0.1 6494 | 0.1 6495 | 0.1 6496 | 0.1 6497 | 0.1 6498 | 0.1 6499 | 0.1 6500 | 0.1 6501 | 0.1 6502 | 0.1 6503 | 0.1 6504 | 0.1 6505 | 0.1 6506 | 0.1 6507 | 0.1 6508 | 0.1 6509 | 0.1 6510 | 0.1 6511 | 0.1 6512 | 0.1 6513 | 0.1 6514 | 0.1 6515 | 0.1 6516 | 0.1 6517 | 0.1 6518 | 0.1 6519 | 0.1 6520 | 0.1 6521 | 0.1 6522 | 0.1 6523 | 0.1 6524 | 0.1 6525 | 0.1 6526 | 0.1 6527 | 0.1 6528 | 0.1 6529 | 0.1 6530 | 0.1 6531 | 0.1 6532 | 0.1 6533 | 0.1 6534 | 0.1 6535 | 0.1 6536 | 0.1 6537 | 0.2 6538 | 0.4 6539 | 0.8 6540 | 0.8 6541 | 0.4 6542 | 0.2 6543 | 0.4 6544 | 0.8 6545 | 0.8 6546 | 0.2 6547 | 0.1 6548 | 0.1 6549 | 0.1 6550 | 0.1 6551 | 0.1 6552 | 0.1 6553 | 0.1 6554 | 0.08 6555 | 0.08 6556 | 0.08 6557 | 0.08 6558 | 0.08 6559 | 0.08 6560 | 0.08 6561 | 0.16 6562 | 0.32 6563 | 0.64 6564 | 0.64 6565 | 0.32 6566 | 0.16 6567 | 0.32 6568 | 0.64 6569 | 0.64 6570 | 0.16 6571 | 0.08 6572 | 0.08 6573 | 0.08 6574 | 0.08 6575 | 0.08 6576 | 0.08 6577 | 0.08 6578 | 0.08 6579 | 0.08 6580 | 0.08 6581 | 0.08 6582 | 0.08 6583 | 0.08 6584 | 0.08 6585 | 0.16 6586 | 0.32 6587 | 0.64 6588 | 0.64 6589 | 0.32 6590 | 0.16 6591 | 0.32 6592 | 0.64 6593 | 0.64 6594 | 0.16 6595 | 0.08 6596 | 0.08 6597 | 0.08 6598 | 0.08 6599 | 0.08 6600 | 0.08 6601 | 0.08 6602 | 0.08 6603 | 0.08 6604 | 0.08 6605 | 0.08 6606 | 0.08 6607 | 0.08 6608 | 0.08 6609 | 0.16 6610 | 0.32 6611 | 0.64 6612 | 0.64 6613 | 0.32 6614 | 0.16 6615 | 0.32 6616 | 0.64 6617 | 0.64 6618 | 0.16 6619 | 0.08 6620 | 0.08 6621 | 0.08 6622 | 0.08 6623 | 0.08 6624 | 0.08 6625 | 0.08 6626 | 0.08 6627 | 0.08 6628 | 0.08 6629 | 0.08 6630 | 0.08 6631 | 0.08 6632 | 0.08 6633 | 0.16 6634 | 0.32 6635 | 0.64 6636 | 0.64 6637 | 0.32 6638 | 0.16 6639 | 0.32 6640 | 0.64 6641 | 0.64 6642 | 0.16 6643 | 0.08 6644 | 0.08 6645 | 0.08 6646 | 0.08 6647 | 0.08 6648 | 0.08 6649 | 0.08 6650 | 0.08 6651 | 0.08 6652 | 0.08 6653 | 0.08 6654 | 0.08 6655 | 0.08 6656 | 0.08 6657 | 0.08 6658 | 0.08 6659 | 0.08 6660 | 0.08 6661 | 0.08 6662 | 0.08 6663 | 0.08 6664 | 0.08 6665 | 0.08 6666 | 0.08 6667 | 0.08 6668 | 0.08 6669 | 0.08 6670 | 0.08 6671 | 0.08 6672 | 0.08 6673 | 0.08 6674 | 0.08 6675 | 0.08 6676 | 0.08 6677 | 0.08 6678 | 0.08 6679 | 0.08 6680 | 0.08 6681 | 0.08 6682 | 0.08 6683 | 0.08 6684 | 0.08 6685 | 0.08 6686 | 0.08 6687 | 0.08 6688 | 0.08 6689 | 0.08 6690 | 0.08 6691 | 0.08 6692 | 0.08 6693 | 0.08 6694 | 0.08 6695 | 0.08 6696 | 0.08 6697 | 0.08 6698 | 0.08 6699 | 0.08 6700 | 0.08 6701 | 0.08 6702 | 0.08 6703 | 0.08 6704 | 0.08 6705 | 0.16 6706 | 0.32 6707 | 0.64 6708 | 0.64 6709 | 0.32 6710 | 0.16 6711 | 0.32 6712 | 0.64 6713 | 0.64 6714 | 0.16 6715 | 0.08 6716 | 0.08 6717 | 0.08 6718 | 0.08 6719 | 0.08 6720 | 0.08 6721 | 0.08 6722 | 0.08 6723 | 0.08 6724 | 0.08 6725 | 0.08 6726 | 0.08 6727 | 0.08 6728 | 0.08 6729 | 0.16 6730 | 0.32 6731 | 0.64 6732 | 0.64 6733 | 0.32 6734 | 0.16 6735 | 0.32 6736 | 0.64 6737 | 0.64 6738 | 0.16 6739 | 0.08 6740 | 0.08 6741 | 0.08 6742 | 0.08 6743 | 0.08 6744 | 0.08 6745 | 0.08 6746 | 0.08 6747 | 0.08 6748 | 0.08 6749 | 0.08 6750 | 0.08 6751 | 0.08 6752 | 0.08 6753 | 0.16 6754 | 0.32 6755 | 0.64 6756 | 0.64 6757 | 0.32 6758 | 0.16 6759 | 0.32 6760 | 0.64 6761 | 0.64 6762 | 0.16 6763 | 0.08 6764 | 0.08 6765 | 0.08 6766 | 0.08 6767 | 0.08 6768 | 0.08 6769 | 0.08 6770 | 0.08 6771 | 0.08 6772 | 0.08 6773 | 0.08 6774 | 0.08 6775 | 0.08 6776 | 0.08 6777 | 0.16 6778 | 0.32 6779 | 0.64 6780 | 0.64 6781 | 0.32 6782 | 0.16 6783 | 0.32 6784 | 0.64 6785 | 0.64 6786 | 0.16 6787 | 0.08 6788 | 0.08 6789 | 0.08 6790 | 0.08 6791 | 0.08 6792 | 0.08 6793 | 0.08 6794 | 0.08 6795 | 0.08 6796 | 0.08 6797 | 0.08 6798 | 0.08 6799 | 0.08 6800 | 0.08 6801 | 0.16 6802 | 0.32 6803 | 0.64 6804 | 0.64 6805 | 0.32 6806 | 0.16 6807 | 0.32 6808 | 0.64 6809 | 0.64 6810 | 0.16 6811 | 0.08 6812 | 0.08 6813 | 0.08 6814 | 0.08 6815 | 0.08 6816 | 0.08 6817 | 0.08 6818 | 0.08 6819 | 0.08 6820 | 0.08 6821 | 0.08 6822 | 0.08 6823 | 0.08 6824 | 0.08 6825 | 0.08 6826 | 0.08 6827 | 0.08 6828 | 0.08 6829 | 0.08 6830 | 0.08 6831 | 0.08 6832 | 0.08 6833 | 0.08 6834 | 0.08 6835 | 0.08 6836 | 0.08 6837 | 0.08 6838 | 0.08 6839 | 0.08 6840 | 0.08 6841 | 0.08 6842 | 0.08 6843 | 0.08 6844 | 0.08 6845 | 0.08 6846 | 0.08 6847 | 0.08 6848 | 0.08 6849 | 0.08 6850 | 0.08 6851 | 0.08 6852 | 0.08 6853 | 0.08 6854 | 0.08 6855 | 0.08 6856 | 0.08 6857 | 0.08 6858 | 0.08 6859 | 0.08 6860 | 0.08 6861 | 0.08 6862 | 0.08 6863 | 0.08 6864 | 0.08 6865 | 0.08 6866 | 0.08 6867 | 0.08 6868 | 0.08 6869 | 0.08 6870 | 0.08 6871 | 0.08 6872 | 0.08 6873 | 0.16 6874 | 0.32 6875 | 0.64 6876 | 0.64 6877 | 0.32 6878 | 0.16 6879 | 0.32 6880 | 0.64 6881 | 0.64 6882 | 0.16 6883 | 0.08 6884 | 0.08 6885 | 0.08 6886 | 0.08 6887 | 0.08 6888 | 0.08 6889 | 0.08 6890 | 0.08 6891 | 0.08 6892 | 0.08 6893 | 0.08 6894 | 0.08 6895 | 0.08 6896 | 0.08 6897 | 0.16 6898 | 0.32 6899 | 0.64 6900 | 0.64 6901 | 0.32 6902 | 0.16 6903 | 0.32 6904 | 0.64 6905 | 0.64 6906 | 0.16 6907 | 0.08 6908 | 0.08 6909 | 0.08 6910 | 0.08 6911 | 0.08 6912 | 0.08 6913 | 0.08 6914 | 0.08 6915 | 0.08 6916 | 0.08 6917 | 0.08 6918 | 0.08 6919 | 0.08 6920 | 0.08 6921 | 0.16 6922 | 0.32 6923 | 0.64 6924 | 0.64 6925 | 0.32 6926 | 0.16 6927 | 0.32 6928 | 0.64 6929 | 0.64 6930 | 0.16 6931 | 0.08 6932 | 0.08 6933 | 0.08 6934 | 0.08 6935 | 0.08 6936 | 0.08 6937 | 0.08 6938 | 0.08 6939 | 0.08 6940 | 0.08 6941 | 0.08 6942 | 0.08 6943 | 0.08 6944 | 0.08 6945 | 0.16 6946 | 0.32 6947 | 0.64 6948 | 0.64 6949 | 0.32 6950 | 0.16 6951 | 0.32 6952 | 0.64 6953 | 0.64 6954 | 0.16 6955 | 0.08 6956 | 0.08 6957 | 0.08 6958 | 0.08 6959 | 0.08 6960 | 0.08 6961 | 0.08 6962 | 0.08 6963 | 0.08 6964 | 0.08 6965 | 0.08 6966 | 0.08 6967 | 0.08 6968 | 0.08 6969 | 0.16 6970 | 0.32 6971 | 0.64 6972 | 0.64 6973 | 0.32 6974 | 0.16 6975 | 0.32 6976 | 0.64 6977 | 0.64 6978 | 0.16 6979 | 0.08 6980 | 0.08 6981 | 0.08 6982 | 0.08 6983 | 0.08 6984 | 0.08 6985 | 0.08 6986 | 0.08 6987 | 0.08 6988 | 0.08 6989 | 0.08 6990 | 0.08 6991 | 0.08 6992 | 0.08 6993 | 0.08 6994 | 0.08 6995 | 0.08 6996 | 0.08 6997 | 0.08 6998 | 0.08 6999 | 0.08 7000 | 0.08 7001 | 0.08 7002 | 0.08 7003 | 0.08 7004 | 0.08 7005 | 0.08 7006 | 0.08 7007 | 0.08 7008 | 0.08 7009 | 0.08 7010 | 0.08 7011 | 0.08 7012 | 0.08 7013 | 0.08 7014 | 0.08 7015 | 0.08 7016 | 0.08 7017 | 0.08 7018 | 0.08 7019 | 0.08 7020 | 0.08 7021 | 0.08 7022 | 0.08 7023 | 0.08 7024 | 0.08 7025 | 0.08 7026 | 0.08 7027 | 0.08 7028 | 0.08 7029 | 0.08 7030 | 0.08 7031 | 0.08 7032 | 0.08 7033 | 0.08 7034 | 0.08 7035 | 0.08 7036 | 0.08 7037 | 0.08 7038 | 0.08 7039 | 0.08 7040 | 0.08 7041 | 0.16 7042 | 0.32 7043 | 0.64 7044 | 0.64 7045 | 0.32 7046 | 0.16 7047 | 0.32 7048 | 0.64 7049 | 0.64 7050 | 0.16 7051 | 0.08 7052 | 0.08 7053 | 0.08 7054 | 0.08 7055 | 0.08 7056 | 0.08 7057 | 0.08 7058 | 0.08 7059 | 0.08 7060 | 0.08 7061 | 0.08 7062 | 0.08 7063 | 0.08 7064 | 0.08 7065 | 0.16 7066 | 0.32 7067 | 0.64 7068 | 0.64 7069 | 0.32 7070 | 0.16 7071 | 0.32 7072 | 0.64 7073 | 0.64 7074 | 0.16 7075 | 0.08 7076 | 0.08 7077 | 0.08 7078 | 0.08 7079 | 0.08 7080 | 0.08 7081 | 0.08 7082 | 0.08 7083 | 0.08 7084 | 0.08 7085 | 0.08 7086 | 0.08 7087 | 0.08 7088 | 0.08 7089 | 0.16 7090 | 0.32 7091 | 0.64 7092 | 0.64 7093 | 0.32 7094 | 0.16 7095 | 0.32 7096 | 0.64 7097 | 0.64 7098 | 0.16 7099 | 0.08 7100 | 0.08 7101 | 0.08 7102 | 0.08 7103 | 0.08 7104 | 0.08 7105 | 0.08 7106 | 0.08 7107 | 0.08 7108 | 0.08 7109 | 0.08 7110 | 0.08 7111 | 0.08 7112 | 0.08 7113 | 0.16 7114 | 0.32 7115 | 0.64 7116 | 0.64 7117 | 0.32 7118 | 0.16 7119 | 0.32 7120 | 0.64 7121 | 0.64 7122 | 0.16 7123 | 0.08 7124 | 0.08 7125 | 0.08 7126 | 0.08 7127 | 0.08 7128 | 0.08 7129 | 0.08 7130 | 0.08 7131 | 0.08 7132 | 0.08 7133 | 0.08 7134 | 0.08 7135 | 0.08 7136 | 0.08 7137 | 0.16 7138 | 0.32 7139 | 0.64 7140 | 0.64 7141 | 0.32 7142 | 0.16 7143 | 0.32 7144 | 0.64 7145 | 0.64 7146 | 0.16 7147 | 0.08 7148 | 0.08 7149 | 0.08 7150 | 0.08 7151 | 0.08 7152 | 0.08 7153 | 0.08 7154 | 0.08 7155 | 0.08 7156 | 0.08 7157 | 0.08 7158 | 0.08 7159 | 0.08 7160 | 0.08 7161 | 0.08 7162 | 0.08 7163 | 0.08 7164 | 0.08 7165 | 0.08 7166 | 0.08 7167 | 0.08 7168 | 0.08 7169 | 0.08 7170 | 0.08 7171 | 0.08 7172 | 0.08 7173 | 0.08 7174 | 0.08 7175 | 0.08 7176 | 0.08 7177 | 0.08 7178 | 0.08 7179 | 0.08 7180 | 0.08 7181 | 0.08 7182 | 0.08 7183 | 0.08 7184 | 0.08 7185 | 0.08 7186 | 0.08 7187 | 0.08 7188 | 0.08 7189 | 0.08 7190 | 0.08 7191 | 0.08 7192 | 0.08 7193 | 0.08 7194 | 0.08 7195 | 0.08 7196 | 0.08 7197 | 0.08 7198 | 0.08 7199 | 0.08 7200 | 0.08 7201 | 0.08 7202 | 0.08 7203 | 0.08 7204 | 0.08 7205 | 0.08 7206 | 0.08 7207 | 0.08 7208 | 0.08 7209 | 0.16 7210 | 0.32 7211 | 0.64 7212 | 0.64 7213 | 0.32 7214 | 0.16 7215 | 0.32 7216 | 0.64 7217 | 0.64 7218 | 0.16 7219 | 0.08 7220 | 0.08 7221 | 0.08 7222 | 0.08 7223 | 0.08 7224 | 0.08 7225 | 0.08 7226 | 0.08 7227 | 0.08 7228 | 0.08 7229 | 0.08 7230 | 0.08 7231 | 0.08 7232 | 0.08 7233 | 0.16 7234 | 0.32 7235 | 0.64 7236 | 0.64 7237 | 0.32 7238 | 0.16 7239 | 0.32 7240 | 0.64 7241 | 0.64 7242 | 0.16 7243 | 0.08 7244 | 0.08 7245 | 0.08 7246 | 0.08 7247 | 0.08 7248 | 0.08 7249 | 0.08 7250 | 0.08 7251 | 0.08 7252 | 0.08 7253 | 0.08 7254 | 0.08 7255 | 0.08 7256 | 0.08 7257 | 0.16 7258 | 0.32 7259 | 0.64 7260 | 0.64 7261 | 0.32 7262 | 0.16 7263 | 0.32 7264 | 0.64 7265 | 0.64 7266 | 0.16 7267 | 0.08 7268 | 0.08 7269 | 0.08 7270 | 0.08 7271 | 0.08 7272 | 0.08 7273 | 0.08 7274 | 0.08 7275 | 0.08 7276 | 0.08 7277 | 0.08 7278 | 0.08 7279 | 0.08 7280 | 0.08 7281 | 0.16 7282 | 0.32 7283 | 0.64 7284 | 0.64 7285 | 0.32 7286 | 0.16 7287 | 0.32 7288 | 0.64 7289 | 0.64 7290 | 0.16 7291 | 0.08 7292 | 0.08 7293 | 0.08 7294 | 0.08 7295 | 0.08 7296 | 0.08 7297 | 0.08 7298 | 0.1 7299 | 0.1 7300 | 0.1 7301 | 0.1 7302 | 0.1 7303 | 0.1 7304 | 0.1 7305 | 0.2 7306 | 0.4 7307 | 0.8 7308 | 0.8 7309 | 0.4 7310 | 0.2 7311 | 0.4 7312 | 0.8 7313 | 0.8 7314 | 0.2 7315 | 0.1 7316 | 0.1 7317 | 0.1 7318 | 0.1 7319 | 0.1 7320 | 0.1 7321 | 0.1 7322 | 0.1 7323 | 0.1 7324 | 0.1 7325 | 0.1 7326 | 0.1 7327 | 0.1 7328 | 0.1 7329 | 0.1 7330 | 0.1 7331 | 0.1 7332 | 0.1 7333 | 0.1 7334 | 0.1 7335 | 0.1 7336 | 0.1 7337 | 0.1 7338 | 0.1 7339 | 0.1 7340 | 0.1 7341 | 0.1 7342 | 0.1 7343 | 0.1 7344 | 0.1 7345 | 0.1 7346 | 0.1 7347 | 0.1 7348 | 0.1 7349 | 0.1 7350 | 0.1 7351 | 0.1 7352 | 0.1 7353 | 0.1 7354 | 0.1 7355 | 0.1 7356 | 0.1 7357 | 0.1 7358 | 0.1 7359 | 0.1 7360 | 0.1 7361 | 0.1 7362 | 0.1 7363 | 0.1 7364 | 0.1 7365 | 0.1 7366 | 0.1 7367 | 0.1 7368 | 0.1 7369 | 0.1 7370 | 0.1 7371 | 0.1 7372 | 0.1 7373 | 0.1 7374 | 0.1 7375 | 0.1 7376 | 0.1 7377 | 0.2 7378 | 0.4 7379 | 0.8 7380 | 0.8 7381 | 0.4 7382 | 0.2 7383 | 0.4 7384 | 0.8 7385 | 0.8 7386 | 0.2 7387 | 0.1 7388 | 0.1 7389 | 0.1 7390 | 0.1 7391 | 0.1 7392 | 0.1 7393 | 0.1 7394 | 0.1 7395 | 0.1 7396 | 0.1 7397 | 0.1 7398 | 0.1 7399 | 0.1 7400 | 0.1 7401 | 0.2 7402 | 0.4 7403 | 0.8 7404 | 0.8 7405 | 0.4 7406 | 0.2 7407 | 0.4 7408 | 0.8 7409 | 0.8 7410 | 0.2 7411 | 0.1 7412 | 0.1 7413 | 0.1 7414 | 0.1 7415 | 0.1 7416 | 0.1 7417 | 0.1 7418 | 0.1 7419 | 0.1 7420 | 0.1 7421 | 0.1 7422 | 0.1 7423 | 0.1 7424 | 0.1 7425 | 0.2 7426 | 0.4 7427 | 0.8 7428 | 0.8 7429 | 0.4 7430 | 0.2 7431 | 0.4 7432 | 0.8 7433 | 0.8 7434 | 0.2 7435 | 0.1 7436 | 0.1 7437 | 0.1 7438 | 0.1 7439 | 0.1 7440 | 0.1 7441 | 0.1 7442 | 0.1 7443 | 0.1 7444 | 0.1 7445 | 0.1 7446 | 0.1 7447 | 0.1 7448 | 0.1 7449 | 0.2 7450 | 0.4 7451 | 0.8 7452 | 0.8 7453 | 0.4 7454 | 0.2 7455 | 0.4 7456 | 0.8 7457 | 0.8 7458 | 0.2 7459 | 0.1 7460 | 0.1 7461 | 0.1 7462 | 0.1 7463 | 0.1 7464 | 0.1 7465 | 0.1 7466 | 0.1 7467 | 0.1 7468 | 0.1 7469 | 0.1 7470 | 0.1 7471 | 0.1 7472 | 0.1 7473 | 0.2 7474 | 0.4 7475 | 0.8 7476 | 0.8 7477 | 0.4 7478 | 0.2 7479 | 0.4 7480 | 0.8 7481 | 0.8 7482 | 0.2 7483 | 0.1 7484 | 0.1 7485 | 0.1 7486 | 0.1 7487 | 0.1 7488 | 0.1 7489 | 0.1 7490 | 0.1 7491 | 0.1 7492 | 0.1 7493 | 0.1 7494 | 0.1 7495 | 0.1 7496 | 0.1 7497 | 0.1 7498 | 0.1 7499 | 0.1 7500 | 0.1 7501 | 0.1 7502 | 0.1 7503 | 0.1 7504 | 0.1 7505 | 0.1 7506 | 0.1 7507 | 0.1 7508 | 0.1 7509 | 0.1 7510 | 0.1 7511 | 0.1 7512 | 0.1 7513 | 0.1 7514 | 0.1 7515 | 0.1 7516 | 0.1 7517 | 0.1 7518 | 0.1 7519 | 0.1 7520 | 0.1 7521 | 0.1 7522 | 0.1 7523 | 0.1 7524 | 0.1 7525 | 0.1 7526 | 0.1 7527 | 0.1 7528 | 0.1 7529 | 0.1 7530 | 0.1 7531 | 0.1 7532 | 0.1 7533 | 0.1 7534 | 0.1 7535 | 0.1 7536 | 0.1 7537 | 0.1 7538 | 0.1 7539 | 0.1 7540 | 0.1 7541 | 0.1 7542 | 0.1 7543 | 0.1 7544 | 0.1 7545 | 0.2 7546 | 0.4 7547 | 0.8 7548 | 0.8 7549 | 0.4 7550 | 0.2 7551 | 0.4 7552 | 0.8 7553 | 0.8 7554 | 0.2 7555 | 0.1 7556 | 0.1 7557 | 0.1 7558 | 0.1 7559 | 0.1 7560 | 0.1 7561 | 0.1 7562 | 0.1 7563 | 0.1 7564 | 0.1 7565 | 0.1 7566 | 0.1 7567 | 0.1 7568 | 0.1 7569 | 0.2 7570 | 0.4 7571 | 0.8 7572 | 0.8 7573 | 0.4 7574 | 0.2 7575 | 0.4 7576 | 0.8 7577 | 0.8 7578 | 0.2 7579 | 0.1 7580 | 0.1 7581 | 0.1 7582 | 0.1 7583 | 0.1 7584 | 0.1 7585 | 0.1 7586 | 0.1 7587 | 0.1 7588 | 0.1 7589 | 0.1 7590 | 0.1 7591 | 0.1 7592 | 0.1 7593 | 0.2 7594 | 0.4 7595 | 0.8 7596 | 0.8 7597 | 0.4 7598 | 0.2 7599 | 0.4 7600 | 0.8 7601 | 0.8 7602 | 0.2 7603 | 0.1 7604 | 0.1 7605 | 0.1 7606 | 0.1 7607 | 0.1 7608 | 0.1 7609 | 0.1 7610 | 0.1 7611 | 0.1 7612 | 0.1 7613 | 0.1 7614 | 0.1 7615 | 0.1 7616 | 0.1 7617 | 0.2 7618 | 0.4 7619 | 0.8 7620 | 0.8 7621 | 0.4 7622 | 0.2 7623 | 0.4 7624 | 0.8 7625 | 0.8 7626 | 0.2 7627 | 0.1 7628 | 0.1 7629 | 0.1 7630 | 0.1 7631 | 0.1 7632 | 0.1 7633 | 0.1 7634 | 0.1 7635 | 0.1 7636 | 0.1 7637 | 0.1 7638 | 0.1 7639 | 0.1 7640 | 0.1 7641 | 0.2 7642 | 0.4 7643 | 0.8 7644 | 0.8 7645 | 0.4 7646 | 0.2 7647 | 0.4 7648 | 0.8 7649 | 0.8 7650 | 0.2 7651 | 0.1 7652 | 0.1 7653 | 0.1 7654 | 0.1 7655 | 0.1 7656 | 0.1 7657 | 0.1 7658 | 0.1 7659 | 0.1 7660 | 0.1 7661 | 0.1 7662 | 0.1 7663 | 0.1 7664 | 0.1 7665 | 0.1 7666 | 0.1 7667 | 0.1 7668 | 0.1 7669 | 0.1 7670 | 0.1 7671 | 0.1 7672 | 0.1 7673 | 0.1 7674 | 0.1 7675 | 0.1 7676 | 0.1 7677 | 0.1 7678 | 0.1 7679 | 0.1 7680 | 0.1 7681 | 0.1 7682 | 0.1 7683 | 0.1 7684 | 0.1 7685 | 0.1 7686 | 0.1 7687 | 0.1 7688 | 0.1 7689 | 0.1 7690 | 0.1 7691 | 0.1 7692 | 0.1 7693 | 0.1 7694 | 0.1 7695 | 0.1 7696 | 0.1 7697 | 0.1 7698 | 0.1 7699 | 0.1 7700 | 0.1 7701 | 0.1 7702 | 0.1 7703 | 0.1 7704 | 0.1 7705 | 0.1 7706 | 0.1 7707 | 0.1 7708 | 0.1 7709 | 0.1 7710 | 0.1 7711 | 0.1 7712 | 0.1 7713 | 0.2 7714 | 0.4 7715 | 0.8 7716 | 0.8 7717 | 0.4 7718 | 0.2 7719 | 0.4 7720 | 0.8 7721 | 0.8 7722 | 0.2 7723 | 0.1 7724 | 0.1 7725 | 0.1 7726 | 0.1 7727 | 0.1 7728 | 0.1 7729 | 0.1 7730 | 0.1 7731 | 0.1 7732 | 0.1 7733 | 0.1 7734 | 0.1 7735 | 0.1 7736 | 0.1 7737 | 0.2 7738 | 0.4 7739 | 0.8 7740 | 0.8 7741 | 0.4 7742 | 0.2 7743 | 0.4 7744 | 0.8 7745 | 0.8 7746 | 0.2 7747 | 0.1 7748 | 0.1 7749 | 0.1 7750 | 0.1 7751 | 0.1 7752 | 0.1 7753 | 0.1 7754 | 0.1 7755 | 0.1 7756 | 0.1 7757 | 0.1 7758 | 0.1 7759 | 0.1 7760 | 0.1 7761 | 0.2 7762 | 0.4 7763 | 0.8 7764 | 0.8 7765 | 0.4 7766 | 0.2 7767 | 0.4 7768 | 0.8 7769 | 0.8 7770 | 0.2 7771 | 0.1 7772 | 0.1 7773 | 0.1 7774 | 0.1 7775 | 0.1 7776 | 0.1 7777 | 0.1 7778 | 0.1 7779 | 0.1 7780 | 0.1 7781 | 0.1 7782 | 0.1 7783 | 0.1 7784 | 0.1 7785 | 0.2 7786 | 0.4 7787 | 0.8 7788 | 0.8 7789 | 0.4 7790 | 0.2 7791 | 0.4 7792 | 0.8 7793 | 0.8 7794 | 0.2 7795 | 0.1 7796 | 0.1 7797 | 0.1 7798 | 0.1 7799 | 0.1 7800 | 0.1 7801 | 0.1 7802 | 0.1 7803 | 0.1 7804 | 0.1 7805 | 0.1 7806 | 0.1 7807 | 0.1 7808 | 0.1 7809 | 0.2 7810 | 0.4 7811 | 0.8 7812 | 0.8 7813 | 0.4 7814 | 0.2 7815 | 0.4 7816 | 0.8 7817 | 0.8 7818 | 0.2 7819 | 0.1 7820 | 0.1 7821 | 0.1 7822 | 0.1 7823 | 0.1 7824 | 0.1 7825 | 0.1 7826 | 0.1 7827 | 0.1 7828 | 0.1 7829 | 0.1 7830 | 0.1 7831 | 0.1 7832 | 0.1 7833 | 0.1 7834 | 0.1 7835 | 0.1 7836 | 0.1 7837 | 0.1 7838 | 0.1 7839 | 0.1 7840 | 0.1 7841 | 0.1 7842 | 0.1 7843 | 0.1 7844 | 0.1 7845 | 0.1 7846 | 0.1 7847 | 0.1 7848 | 0.1 7849 | 0.1 7850 | 0.1 7851 | 0.1 7852 | 0.1 7853 | 0.1 7854 | 0.1 7855 | 0.1 7856 | 0.1 7857 | 0.1 7858 | 0.1 7859 | 0.1 7860 | 0.1 7861 | 0.1 7862 | 0.1 7863 | 0.1 7864 | 0.1 7865 | 0.1 7866 | 0.1 7867 | 0.1 7868 | 0.1 7869 | 0.1 7870 | 0.1 7871 | 0.1 7872 | 0.1 7873 | 0.1 7874 | 0.1 7875 | 0.1 7876 | 0.1 7877 | 0.1 7878 | 0.1 7879 | 0.1 7880 | 0.1 7881 | 0.2 7882 | 0.4 7883 | 0.8 7884 | 0.8 7885 | 0.4 7886 | 0.2 7887 | 0.4 7888 | 0.8 7889 | 0.8 7890 | 0.2 7891 | 0.1 7892 | 0.1 7893 | 0.1 7894 | 0.1 7895 | 0.1 7896 | 0.1 7897 | 0.1 7898 | 0.1 7899 | 0.1 7900 | 0.1 7901 | 0.1 7902 | 0.1 7903 | 0.1 7904 | 0.1 7905 | 0.2 7906 | 0.4 7907 | 0.8 7908 | 0.8 7909 | 0.4 7910 | 0.2 7911 | 0.4 7912 | 0.8 7913 | 0.8 7914 | 0.2 7915 | 0.1 7916 | 0.1 7917 | 0.1 7918 | 0.1 7919 | 0.1 7920 | 0.1 7921 | 0.1 7922 | 0.1 7923 | 0.1 7924 | 0.1 7925 | 0.1 7926 | 0.1 7927 | 0.1 7928 | 0.1 7929 | 0.2 7930 | 0.4 7931 | 0.8 7932 | 0.8 7933 | 0.4 7934 | 0.2 7935 | 0.4 7936 | 0.8 7937 | 0.8 7938 | 0.2 7939 | 0.1 7940 | 0.1 7941 | 0.1 7942 | 0.1 7943 | 0.1 7944 | 0.1 7945 | 0.1 7946 | 0.1 7947 | 0.1 7948 | 0.1 7949 | 0.1 7950 | 0.1 7951 | 0.1 7952 | 0.1 7953 | 0.2 7954 | 0.4 7955 | 0.8 7956 | 0.8 7957 | 0.4 7958 | 0.2 7959 | 0.4 7960 | 0.8 7961 | 0.8 7962 | 0.2 7963 | 0.1 7964 | 0.1 7965 | 0.1 7966 | 0.1 7967 | 0.1 7968 | 0.1 7969 | 0.1 7970 | 0.1 7971 | 0.1 7972 | 0.1 7973 | 0.1 7974 | 0.1 7975 | 0.1 7976 | 0.1 7977 | 0.2 7978 | 0.4 7979 | 0.8 7980 | 0.8 7981 | 0.4 7982 | 0.2 7983 | 0.4 7984 | 0.8 7985 | 0.8 7986 | 0.2 7987 | 0.1 7988 | 0.1 7989 | 0.1 7990 | 0.1 7991 | 0.1 7992 | 0.1 7993 | 0.1 7994 | 0.1 7995 | 0.1 7996 | 0.1 7997 | 0.1 7998 | 0.1 7999 | 0.1 8000 | 0.1 8001 | 0.1 8002 | 0.1 8003 | 0.1 8004 | 0.1 8005 | 0.1 8006 | 0.1 8007 | 0.1 8008 | 0.1 8009 | 0.1 8010 | 0.1 8011 | 0.1 8012 | 0.1 8013 | 0.1 8014 | 0.1 8015 | 0.1 8016 | 0.1 8017 | 0.1 8018 | 0.06 8019 | 0.06 8020 | 0.06 8021 | 0.06 8022 | 0.06 8023 | 0.06 8024 | 0.06 8025 | 0.06 8026 | 0.06 8027 | 0.06 8028 | 0.06 8029 | 0.06 8030 | 0.06 8031 | 0.06 8032 | 0.06 8033 | 0.06 8034 | 0.06 8035 | 0.06 8036 | 0.06 8037 | 0.06 8038 | 0.06 8039 | 0.06 8040 | 0.06 8041 | 0.06 8042 | 0.06 8043 | 0.06 8044 | 0.06 8045 | 0.06 8046 | 0.06 8047 | 0.06 8048 | 0.06 8049 | 0.12 8050 | 0.24 8051 | 0.48 8052 | 0.48 8053 | 0.24 8054 | 0.12 8055 | 0.24 8056 | 0.48 8057 | 0.48 8058 | 0.12 8059 | 0.06 8060 | 0.06 8061 | 0.06 8062 | 0.06 8063 | 0.06 8064 | 0.06 8065 | 0.06 8066 | 0.06 8067 | 0.06 8068 | 0.06 8069 | 0.06 8070 | 0.06 8071 | 0.06 8072 | 0.06 8073 | 0.12 8074 | 0.24 8075 | 0.48 8076 | 0.48 8077 | 0.24 8078 | 0.12 8079 | 0.24 8080 | 0.48 8081 | 0.48 8082 | 0.12 8083 | 0.06 8084 | 0.06 8085 | 0.06 8086 | 0.06 8087 | 0.06 8088 | 0.06 8089 | 0.06 8090 | 0.06 8091 | 0.06 8092 | 0.06 8093 | 0.06 8094 | 0.06 8095 | 0.06 8096 | 0.06 8097 | 0.12 8098 | 0.24 8099 | 0.48 8100 | 0.48 8101 | 0.24 8102 | 0.12 8103 | 0.24 8104 | 0.48 8105 | 0.48 8106 | 0.12 8107 | 0.06 8108 | 0.06 8109 | 0.06 8110 | 0.06 8111 | 0.06 8112 | 0.06 8113 | 0.06 8114 | 0.06 8115 | 0.06 8116 | 0.06 8117 | 0.06 8118 | 0.06 8119 | 0.06 8120 | 0.06 8121 | 0.12 8122 | 0.24 8123 | 0.48 8124 | 0.48 8125 | 0.24 8126 | 0.12 8127 | 0.24 8128 | 0.48 8129 | 0.48 8130 | 0.12 8131 | 0.06 8132 | 0.06 8133 | 0.06 8134 | 0.06 8135 | 0.06 8136 | 0.06 8137 | 0.06 8138 | 0.06 8139 | 0.06 8140 | 0.06 8141 | 0.06 8142 | 0.06 8143 | 0.06 8144 | 0.06 8145 | 0.12 8146 | 0.24 8147 | 0.48 8148 | 0.48 8149 | 0.24 8150 | 0.12 8151 | 0.24 8152 | 0.48 8153 | 0.48 8154 | 0.12 8155 | 0.06 8156 | 0.06 8157 | 0.06 8158 | 0.06 8159 | 0.06 8160 | 0.06 8161 | 0.06 8162 | 0.06 8163 | 0.06 8164 | 0.06 8165 | 0.06 8166 | 0.06 8167 | 0.06 8168 | 0.06 8169 | 0.06 8170 | 0.06 8171 | 0.06 8172 | 0.06 8173 | 0.06 8174 | 0.06 8175 | 0.06 8176 | 0.06 8177 | 0.06 8178 | 0.06 8179 | 0.06 8180 | 0.06 8181 | 0.06 8182 | 0.06 8183 | 0.06 8184 | 0.06 8185 | 0.06 8186 | 0.06 8187 | 0.06 8188 | 0.06 8189 | 0.06 8190 | 0.06 8191 | 0.06 8192 | 0.06 8193 | 0.06 8194 | 0.06 8195 | 0.06 8196 | 0.06 8197 | 0.06 8198 | 0.06 8199 | 0.06 8200 | 0.06 8201 | 0.06 8202 | 0.06 8203 | 0.06 8204 | 0.06 8205 | 0.06 8206 | 0.06 8207 | 0.06 8208 | 0.06 8209 | 0.06 8210 | 0.06 8211 | 0.06 8212 | 0.06 8213 | 0.06 8214 | 0.06 8215 | 0.06 8216 | 0.06 8217 | 0.12 8218 | 0.24 8219 | 0.48 8220 | 0.48 8221 | 0.24 8222 | 0.12 8223 | 0.24 8224 | 0.48 8225 | 0.48 8226 | 0.12 8227 | 0.06 8228 | 0.06 8229 | 0.06 8230 | 0.06 8231 | 0.06 8232 | 0.06 8233 | 0.06 8234 | 0.06 8235 | 0.06 8236 | 0.06 8237 | 0.06 8238 | 0.06 8239 | 0.06 8240 | 0.06 8241 | 0.12 8242 | 0.24 8243 | 0.48 8244 | 0.48 8245 | 0.24 8246 | 0.12 8247 | 0.24 8248 | 0.48 8249 | 0.48 8250 | 0.12 8251 | 0.06 8252 | 0.06 8253 | 0.06 8254 | 0.06 8255 | 0.06 8256 | 0.06 8257 | 0.06 8258 | 0.06 8259 | 0.06 8260 | 0.06 8261 | 0.06 8262 | 0.06 8263 | 0.06 8264 | 0.06 8265 | 0.12 8266 | 0.24 8267 | 0.48 8268 | 0.48 8269 | 0.24 8270 | 0.12 8271 | 0.24 8272 | 0.48 8273 | 0.48 8274 | 0.12 8275 | 0.06 8276 | 0.06 8277 | 0.06 8278 | 0.06 8279 | 0.06 8280 | 0.06 8281 | 0.06 8282 | 0.06 8283 | 0.06 8284 | 0.06 8285 | 0.06 8286 | 0.06 8287 | 0.06 8288 | 0.06 8289 | 0.12 8290 | 0.24 8291 | 0.48 8292 | 0.48 8293 | 0.24 8294 | 0.12 8295 | 0.24 8296 | 0.48 8297 | 0.48 8298 | 0.12 8299 | 0.06 8300 | 0.06 8301 | 0.06 8302 | 0.06 8303 | 0.06 8304 | 0.06 8305 | 0.06 8306 | 0.06 8307 | 0.06 8308 | 0.06 8309 | 0.06 8310 | 0.06 8311 | 0.06 8312 | 0.06 8313 | 0.12 8314 | 0.24 8315 | 0.48 8316 | 0.48 8317 | 0.24 8318 | 0.12 8319 | 0.24 8320 | 0.48 8321 | 0.48 8322 | 0.12 8323 | 0.06 8324 | 0.06 8325 | 0.06 8326 | 0.06 8327 | 0.06 8328 | 0.06 8329 | 0.06 8330 | 0.06 8331 | 0.06 8332 | 0.06 8333 | 0.06 8334 | 0.06 8335 | 0.06 8336 | 0.06 8337 | 0.06 8338 | 0.06 8339 | 0.06 8340 | 0.06 8341 | 0.06 8342 | 0.06 8343 | 0.06 8344 | 0.06 8345 | 0.06 8346 | 0.06 8347 | 0.06 8348 | 0.06 8349 | 0.06 8350 | 0.06 8351 | 0.06 8352 | 0.06 8353 | 0.06 8354 | 0.06 8355 | 0.06 8356 | 0.06 8357 | 0.06 8358 | 0.06 8359 | 0.06 8360 | 0.06 8361 | 0.06 8362 | 0.06 8363 | 0.06 8364 | 0.06 8365 | 0.06 8366 | 0.06 8367 | 0.06 8368 | 0.06 8369 | 0.06 8370 | 0.06 8371 | 0.06 8372 | 0.06 8373 | 0.06 8374 | 0.06 8375 | 0.06 8376 | 0.06 8377 | 0.06 8378 | 0.06 8379 | 0.06 8380 | 0.06 8381 | 0.06 8382 | 0.06 8383 | 0.06 8384 | 0.06 8385 | 0.12 8386 | 0.24 8387 | 0.48 8388 | 0.48 8389 | 0.24 8390 | 0.12 8391 | 0.24 8392 | 0.48 8393 | 0.48 8394 | 0.12 8395 | 0.06 8396 | 0.06 8397 | 0.06 8398 | 0.06 8399 | 0.06 8400 | 0.06 8401 | 0.06 8402 | 0.06 8403 | 0.06 8404 | 0.06 8405 | 0.06 8406 | 0.06 8407 | 0.06 8408 | 0.06 8409 | 0.12 8410 | 0.24 8411 | 0.48 8412 | 0.48 8413 | 0.24 8414 | 0.12 8415 | 0.24 8416 | 0.48 8417 | 0.48 8418 | 0.12 8419 | 0.06 8420 | 0.06 8421 | 0.06 8422 | 0.06 8423 | 0.06 8424 | 0.06 8425 | 0.06 8426 | 0.06 8427 | 0.06 8428 | 0.06 8429 | 0.06 8430 | 0.06 8431 | 0.06 8432 | 0.06 8433 | 0.12 8434 | 0.24 8435 | 0.48 8436 | 0.48 8437 | 0.24 8438 | 0.12 8439 | 0.24 8440 | 0.48 8441 | 0.48 8442 | 0.12 8443 | 0.06 8444 | 0.06 8445 | 0.06 8446 | 0.06 8447 | 0.06 8448 | 0.06 8449 | 0.06 8450 | 0.06 8451 | 0.06 8452 | 0.06 8453 | 0.06 8454 | 0.06 8455 | 0.06 8456 | 0.06 8457 | 0.12 8458 | 0.24 8459 | 0.48 8460 | 0.48 8461 | 0.24 8462 | 0.12 8463 | 0.24 8464 | 0.48 8465 | 0.48 8466 | 0.12 8467 | 0.06 8468 | 0.06 8469 | 0.06 8470 | 0.06 8471 | 0.06 8472 | 0.06 8473 | 0.06 8474 | 0.06 8475 | 0.06 8476 | 0.06 8477 | 0.06 8478 | 0.06 8479 | 0.06 8480 | 0.06 8481 | 0.12 8482 | 0.24 8483 | 0.48 8484 | 0.48 8485 | 0.24 8486 | 0.12 8487 | 0.24 8488 | 0.48 8489 | 0.48 8490 | 0.12 8491 | 0.06 8492 | 0.06 8493 | 0.06 8494 | 0.06 8495 | 0.06 8496 | 0.06 8497 | 0.06 8498 | 0.06 8499 | 0.06 8500 | 0.06 8501 | 0.06 8502 | 0.06 8503 | 0.06 8504 | 0.06 8505 | 0.06 8506 | 0.06 8507 | 0.06 8508 | 0.06 8509 | 0.06 8510 | 0.06 8511 | 0.06 8512 | 0.06 8513 | 0.06 8514 | 0.06 8515 | 0.06 8516 | 0.06 8517 | 0.06 8518 | 0.06 8519 | 0.06 8520 | 0.06 8521 | 0.06 8522 | 0.06 8523 | 0.06 8524 | 0.06 8525 | 0.06 8526 | 0.06 8527 | 0.06 8528 | 0.06 8529 | 0.06 8530 | 0.06 8531 | 0.06 8532 | 0.06 8533 | 0.06 8534 | 0.06 8535 | 0.06 8536 | 0.06 8537 | 0.06 8538 | 0.06 8539 | 0.06 8540 | 0.06 8541 | 0.06 8542 | 0.06 8543 | 0.06 8544 | 0.06 8545 | 0.06 8546 | 0.06 8547 | 0.06 8548 | 0.06 8549 | 0.06 8550 | 0.06 8551 | 0.06 8552 | 0.06 8553 | 0.12 8554 | 0.24 8555 | 0.48 8556 | 0.48 8557 | 0.24 8558 | 0.12 8559 | 0.24 8560 | 0.48 8561 | 0.48 8562 | 0.12 8563 | 0.06 8564 | 0.06 8565 | 0.06 8566 | 0.06 8567 | 0.06 8568 | 0.06 8569 | 0.06 8570 | 0.06 8571 | 0.06 8572 | 0.06 8573 | 0.06 8574 | 0.06 8575 | 0.06 8576 | 0.06 8577 | 0.12 8578 | 0.24 8579 | 0.48 8580 | 0.48 8581 | 0.24 8582 | 0.12 8583 | 0.24 8584 | 0.48 8585 | 0.48 8586 | 0.12 8587 | 0.06 8588 | 0.06 8589 | 0.06 8590 | 0.06 8591 | 0.06 8592 | 0.06 8593 | 0.06 8594 | 0.06 8595 | 0.06 8596 | 0.06 8597 | 0.06 8598 | 0.06 8599 | 0.06 8600 | 0.06 8601 | 0.12 8602 | 0.24 8603 | 0.48 8604 | 0.48 8605 | 0.24 8606 | 0.12 8607 | 0.24 8608 | 0.48 8609 | 0.48 8610 | 0.12 8611 | 0.06 8612 | 0.06 8613 | 0.06 8614 | 0.06 8615 | 0.06 8616 | 0.06 8617 | 0.06 8618 | 0.06 8619 | 0.06 8620 | 0.06 8621 | 0.06 8622 | 0.06 8623 | 0.06 8624 | 0.06 8625 | 0.12 8626 | 0.24 8627 | 0.48 8628 | 0.48 8629 | 0.24 8630 | 0.12 8631 | 0.24 8632 | 0.48 8633 | 0.48 8634 | 0.12 8635 | 0.06 8636 | 0.06 8637 | 0.06 8638 | 0.06 8639 | 0.06 8640 | 0.06 8641 | 0.06 8642 | 0.06 8643 | 0.06 8644 | 0.06 8645 | 0.06 8646 | 0.06 8647 | 0.06 8648 | 0.06 8649 | 0.12 8650 | 0.24 8651 | 0.48 8652 | 0.48 8653 | 0.24 8654 | 0.12 8655 | 0.24 8656 | 0.48 8657 | 0.48 8658 | 0.12 8659 | 0.06 8660 | 0.06 8661 | 0.06 8662 | 0.06 8663 | 0.06 8664 | 0.06 8665 | 0.06 8666 | 0.06 8667 | 0.06 8668 | 0.06 8669 | 0.06 8670 | 0.06 8671 | 0.06 8672 | 0.06 8673 | 0.06 8674 | 0.06 8675 | 0.06 8676 | 0.06 8677 | 0.06 8678 | 0.06 8679 | 0.06 8680 | 0.06 8681 | 0.06 8682 | 0.06 8683 | 0.06 8684 | 0.06 8685 | 0.06 8686 | 0.06 8687 | 0.06 8688 | 0.06 8689 | 0.06 8690 | 0.06 8691 | 0.06 8692 | 0.06 8693 | 0.06 8694 | 0.06 8695 | 0.06 8696 | 0.06 8697 | 0.06 8698 | 0.06 8699 | 0.06 8700 | 0.06 8701 | 0.06 8702 | 0.06 8703 | 0.06 8704 | 0.06 8705 | 0.06 8706 | 0.06 8707 | 0.06 8708 | 0.06 8709 | 0.06 8710 | 0.06 8711 | 0.06 8712 | 0.06 8713 | 0.06 8714 | 0.06 8715 | 0.06 8716 | 0.06 8717 | 0.06 8718 | 0.06 8719 | 0.06 8720 | 0.06 8721 | 0.12 8722 | 0.24 8723 | 0.48 8724 | 0.48 8725 | 0.24 8726 | 0.12 8727 | 0.24 8728 | 0.48 8729 | 0.48 8730 | 0.12 8731 | 0.06 8732 | 0.06 8733 | 0.06 8734 | 0.06 8735 | 0.06 8736 | 0.06 8737 | 0.06 8738 | 0.06 8739 | 0.06 8740 | 0.06 8741 | 0.06 8742 | 0.06 8743 | 0.06 8744 | 0.06 8745 | 0.12 8746 | 0.24 8747 | 0.48 8748 | 0.48 8749 | 0.24 8750 | 0.12 8751 | 0.24 8752 | 0.48 8753 | 0.48 8754 | 0.12 8755 | 0.06 8756 | 0.06 8757 | 0.06 8758 | 0.06 8759 | 0.06 8760 | 0.06 8761 | 0.06 8762 | --------------------------------------------------------------------------------