Capability to have multiple source distributions.

This commit is contained in:
Paul Romano 2015-12-21 11:24:22 -06:00
parent db9ac7ba2f
commit ba316dd98e
43 changed files with 340 additions and 279 deletions

View file

@ -1,3 +1,4 @@
from numbers import Real
import sys
from xml.etree import ElementTree as ET
@ -22,6 +23,8 @@ class Source(object):
Energy distribution of source sites
filename : str, optional
Source file from which sites should be sampled
strength : Real
Strength of the source
Attributes
----------
@ -33,14 +36,15 @@ class Source(object):
Energy distribution of source sites
file : str or None
Source file from which sites should be sampled
strength : Real
Strength of the source
"""
def __init__(self, space=None, angle=None, energy=None, filename=None):
def __init__(self, space=None, angle=None, energy=None, filename=None, strength=1.0):
self._space = None
self._angle = None
self._energy = None
self._probability = None
self._file = None
if space is not None:
@ -51,6 +55,7 @@ class Source(object):
self.energy = energy
if filename is not None:
self.file = filename
self.strength = strength
@property
def file(self):
@ -68,6 +73,10 @@ class Source(object):
def energy(self):
return self._energy
@property
def strength(self):
return self._strength
@file.setter
def file(self, filename):
cv.check_type('source file', filename, basestring)
@ -88,8 +97,15 @@ class Source(object):
cv.check_type('energy distribution', energy, Univariate)
self._energy = energy
@strength.setter
def strength(self, strength):
cv.check_type('source strength', strength, Real)
cv.check_greater_than('source strength', strength, 0.0, True)
self._strength = strength
def to_xml(self):
element = ET.Element("source")
element.set("strength", str(self.strength))
if self.file is not None:
element.set("file", self.file)
if self.space is not None:

View file

@ -12,7 +12,7 @@ module global
use plot_header, only: ObjectPlot
use set_header, only: SetInt
use surface_header, only: SurfaceContainer
use source_header, only: ExtSource
use source_header, only: SourceDistribution
use tally_header, only: TallyObject, TallyMap, TallyResult
use trigger_header, only: KTrigger
use timer_header, only: Timer
@ -182,7 +182,7 @@ module global
logical :: satisfy_triggers = .false. ! whether triggers are satisfied
! External source
type(ExtSource), target :: external_source
type(SourceDistribution), allocatable :: external_source(:)
! Source and fission bank
type(Bank), allocatable, target :: source_bank(:)
@ -450,9 +450,7 @@ contains
if (allocated(micro_xs)) deallocate(micro_xs)
! Deallocate external source
if (allocated(external_source % space)) deallocate(external_source % space)
if (allocated(external_source % angle)) deallocate(external_source % angle)
if (allocated(external_source % energy)) deallocate(external_source % energy)
if (allocated(external_source)) deallocate(external_source)
! Deallocate k and entropy
if (allocated(k_generation)) deallocate(k_generation)

View file

@ -84,6 +84,7 @@ contains
type(Node), pointer :: node_trigger => null()
type(Node), pointer :: node_keff_trigger => null()
type(NodeList), pointer :: node_scat_list => null()
type(NodeList), pointer :: node_source_list => null()
! Display output message
call write_message("Reading settings XML file...", 5)
@ -344,242 +345,256 @@ contains
! ==========================================================================
! EXTERNAL SOURCE
! Get pointer to source
if (check_for_node(doc, "source")) then
call get_node_ptr(doc, "source", node_source)
else
call fatal_error("No source specified in settings XML file.")
end if
! Get point to list of <source> elements and make sure there is at least one
call get_node_list(doc, "source", node_source_list)
n = get_list_size(node_source_list)
if (n == 0) call fatal_error("No source specified in settings XML file.")
! Check if we want to write out source
if (check_for_node(node_source, "write_initial")) then
call get_node_value(node_source, "write_initial", temp_str)
temp_str = to_lower(temp_str)
if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') &
write_initial_source = .true.
end if
! Allocate array for sources
allocate(external_source(n))
! Check for external source file
if (check_for_node(node_source, "file")) then
! Copy path of source file
call get_node_value(node_source, "file", path_source)
! Read each source
do i = 1, n
! Get pointer to source
call get_list_item(node_source_list, i, node_source)
! Check if source file exists
inquire(FILE=path_source, EXIST=file_exists)
if (.not. file_exists) then
call fatal_error("Binary source file '" // trim(path_source) &
&// "' does not exist!")
! Check if we want to write out source
if (check_for_node(node_source, "write_initial")) then
call get_node_value(node_source, "write_initial", temp_str)
temp_str = to_lower(temp_str)
if (trim(temp_str) == 'true' .or. trim(temp_str) == '1') &
write_initial_source = .true.
end if
else
! Check for source strength
if (check_for_node(node_source, "strength")) then
call get_node_value(node_source, "strength", external_source(i)%strength)
else
external_source(i)%strength = ONE
end if
! Spatial distribution for external source
if (check_for_node(node_source, "space")) then
! Check for external source file
if (check_for_node(node_source, "file")) then
! Copy path of source file
call get_node_value(node_source, "file", path_source)
! Get pointer to spatial distribution
call get_node_ptr(node_source, "space", node_space)
! Check if source file exists
inquire(FILE=path_source, EXIST=file_exists)
if (.not. file_exists) then
call fatal_error("Binary source file '" // trim(path_source) &
&// "' does not exist!")
end if
! Check for type of spatial distribution
type = ''
if (check_for_node(node_space, "type")) &
call get_node_value(node_space, "type", type)
select case (to_lower(type))
case ('independent')
allocate(SpatialIndependent :: external_source%space)
else
case ('box')
allocate(SpatialBox :: external_source%space)
! Spatial distribution for external source
if (check_for_node(node_source, "space")) then
case ('fission')
allocate(SpatialBox :: external_source%space)
select type(space => external_source%space)
type is (SpatialBox)
space%only_fissionable = .true.
! Get pointer to spatial distribution
call get_node_ptr(node_source, "space", node_space)
! Check for type of spatial distribution
type = ''
if (check_for_node(node_space, "type")) &
call get_node_value(node_space, "type", type)
select case (to_lower(type))
case ('independent')
allocate(SpatialIndependent :: external_source(i)%space)
case ('box')
allocate(SpatialBox :: external_source(i)%space)
case ('fission')
allocate(SpatialBox :: external_source(i)%space)
select type(space => external_source(i)%space)
type is (SpatialBox)
space%only_fissionable = .true.
end select
case ('point')
allocate(SpatialPoint :: external_source(i)%space)
case default
call fatal_error("Invalid spatial distribution for external source: "&
// trim(type))
end select
case ('point')
allocate(SpatialPoint :: external_source%space)
select type (space => external_source(i)%space)
type is (SpatialIndependent)
! Read distribution for x coordinate
if (check_for_node(node_space, "x")) then
call get_node_ptr(node_space, "x", node_dist)
call distribution_from_xml(space%x, node_dist)
else
allocate(Discrete :: space%x)
select type (dist => space%x)
type is (Discrete)
allocate(dist%x(1), dist%p(1))
dist%x(1) = ZERO
dist%p(1) = ONE
end select
end if
case default
call fatal_error("Invalid spatial distribution for external source: "&
// trim(type))
end select
! Read distribution for y coordinate
if (check_for_node(node_space, "y")) then
call get_node_ptr(node_space, "y", node_dist)
call distribution_from_xml(space%y, node_dist)
else
allocate(Discrete :: space%y)
select type (dist => space%y)
type is (Discrete)
allocate(dist%x(1), dist%p(1))
dist%x(1) = ZERO
dist%p(1) = ONE
end select
end if
select type (space => external_source%space)
type is (SpatialIndependent)
! Read distribution for x coordinate
if (check_for_node(node_space, "x")) then
call get_node_ptr(node_space, "x", node_dist)
call distribution_from_xml(space%x, node_dist)
else
allocate(Discrete :: space%x)
select type (dist => space%x)
type is (Discrete)
allocate(dist%x(1), dist%p(1))
dist%x(1) = ZERO
dist%p(1) = ONE
end select
end if
if (check_for_node(node_space, "z")) then
call get_node_ptr(node_space, "z", node_dist)
call distribution_from_xml(space%z, node_dist)
else
allocate(Discrete :: space%z)
select type (dist => space%z)
type is (Discrete)
allocate(dist%x(1), dist%p(1))
dist%x(1) = ZERO
dist%p(1) = ONE
end select
end if
! Read distribution for y coordinate
if (check_for_node(node_space, "y")) then
call get_node_ptr(node_space, "y", node_dist)
call distribution_from_xml(space%y, node_dist)
else
allocate(Discrete :: space%y)
select type (dist => space%y)
type is (Discrete)
allocate(dist%x(1), dist%p(1))
dist%x(1) = ZERO
dist%p(1) = ONE
end select
end if
type is (SpatialBox)
! Make sure correct number of parameters are given
if (get_arraysize_double(node_space, "parameters") /= 6) then
call fatal_error('Box/fission spatial source must have &
&six parameters specified.')
end if
if (check_for_node(node_space, "z")) then
call get_node_ptr(node_space, "z", node_dist)
call distribution_from_xml(space%z, node_dist)
else
allocate(Discrete :: space%z)
select type (dist => space%z)
type is (Discrete)
allocate(dist%x(1), dist%p(1))
dist%x(1) = ZERO
dist%p(1) = ONE
end select
end if
! Read lower-right/upper-left coordinates
allocate(temp_real(6))
call get_node_array(node_space, "parameters", temp_real)
space%lower_left(:) = temp_real(1:3)
space%upper_right(:) = temp_real(4:6)
deallocate(temp_real)
type is (SpatialBox)
! Make sure correct number of parameters are given
if (get_arraysize_double(node_space, "parameters") /= 6) then
call fatal_error('Box/fission spatial source must have &
&six parameters specified.')
end if
type is (SpatialPoint)
! Make sure correct number of parameters are given
if (get_arraysize_double(node_space, "parameters") /= 3) then
call fatal_error('Point spatial source must have &
&three parameters specified.')
end if
! Read lower-right/upper-left coordinates
allocate(temp_real(6))
call get_node_array(node_space, "parameters", temp_real)
space%lower_left(:) = temp_real(1:3)
space%upper_right(:) = temp_real(4:6)
deallocate(temp_real)
! Read location of point source
allocate(temp_real(3))
call get_node_array(node_space, "parameters", temp_real)
space%xyz(:) = temp_real
deallocate(temp_real)
type is (SpatialPoint)
! Make sure correct number of parameters are given
if (get_arraysize_double(node_space, "parameters") /= 3) then
call fatal_error('Point spatial source must have &
&three parameters specified.')
end if
end select
! Read location of point source
allocate(temp_real(3))
call get_node_array(node_space, "parameters", temp_real)
space%xyz(:) = temp_real
deallocate(temp_real)
end select
else
call fatal_error("No spatial distribution specified for external &
&source.")
end if
! Determine external source angular distribution
if (check_for_node(node_source, "angle")) then
! Get pointer to angular distribution
call get_node_ptr(node_source, "angle", node_angle)
! Determine number of parameters specified
if (check_for_node(node_angle, "parameters")) then
n = get_arraysize_double(node_angle, "parameters")
else
n = 0
call fatal_error("No spatial distribution specified for external &
&source.")
end if
! Check for type of angular distribution
type = ''
if (check_for_node(node_angle, "type")) &
call get_node_value(node_angle, "type", type)
select case (to_lower(type))
case ('isotropic')
allocate(Isotropic :: external_source%angle)
! Determine external source angular distribution
if (check_for_node(node_source, "angle")) then
case ('monodirectional')
allocate(Monodirectional :: external_source%angle)
! Get pointer to angular distribution
call get_node_ptr(node_source, "angle", node_angle)
case ('mu-phi')
allocate(PolarAzimuthal :: external_source%angle)
case default
call fatal_error("Invalid angular distribution for external source: "&
// trim(type))
end select
! Read reference directional unit vector
if (check_for_node(node_angle, "reference_uvw")) then
n = get_arraysize_double(node_angle, "reference_uvw")
if (n /= 3) then
call fatal_error('Angular distribution reference direction must have &
&three parameters specified.')
! Determine number of parameters specified
if (check_for_node(node_angle, "parameters")) then
n = get_arraysize_double(node_angle, "parameters")
else
n = 0
end if
call get_node_array(node_angle, "reference_uvw", &
external_source%angle%reference_uvw)
! Check for type of angular distribution
type = ''
if (check_for_node(node_angle, "type")) &
call get_node_value(node_angle, "type", type)
select case (to_lower(type))
case ('isotropic')
allocate(Isotropic :: external_source(i)%angle)
case ('monodirectional')
allocate(Monodirectional :: external_source(i)%angle)
case ('mu-phi')
allocate(PolarAzimuthal :: external_source(i)%angle)
case default
call fatal_error("Invalid angular distribution for external source: "&
// trim(type))
end select
! Read reference directional unit vector
if (check_for_node(node_angle, "reference_uvw")) then
n = get_arraysize_double(node_angle, "reference_uvw")
if (n /= 3) then
call fatal_error('Angular distribution reference direction must have &
&three parameters specified.')
end if
call get_node_array(node_angle, "reference_uvw", &
external_source(i)%angle%reference_uvw)
else
! By default, set reference unit vector to be positive z-direction
external_source(i)%angle%reference_uvw(:) = [ZERO, ZERO, ONE]
end if
! Read parameters for angle distribution
select type (angle => external_source(i)%angle)
type is (Monodirectional)
call get_node_array(node_angle, "reference_uvw", &
external_source(i)%angle%reference_uvw)
type is (PolarAzimuthal)
if (check_for_node(node_angle, "mu")) then
call get_node_ptr(node_angle, "mu", node_dist)
call distribution_from_xml(angle%mu, node_dist)
else
allocate(Uniform :: angle%mu)
select type (mu => angle%mu)
type is (Uniform)
mu%a = -ONE
mu%b = ONE
end select
end if
if (check_for_node(node_angle, "phi")) then
call get_node_ptr(node_angle, "phi", node_dist)
call distribution_from_xml(angle%phi, node_dist)
else
allocate(Uniform :: angle%phi)
select type (phi => angle%phi)
type is (Uniform)
phi%a = ZERO
phi%b = TWO*PI
end select
end if
end select
else
! By default, set reference unit vector to be positive z-direction
external_source%angle%reference_uvw(:) = [ZERO, ZERO, ONE]
! Set default angular distribution isotropic
allocate(Isotropic :: external_source(i)%angle)
external_source(i)%angle%reference_uvw(:) = [ZERO, ZERO, ONE]
end if
! Read parameters for angle distribution
select type (angle => external_source%angle)
type is (Monodirectional)
call get_node_array(node_angle, "reference_uvw", &
external_source%angle%reference_uvw)
type is (PolarAzimuthal)
if (check_for_node(node_angle, "mu")) then
call get_node_ptr(node_angle, "mu", node_dist)
call distribution_from_xml(angle%mu, node_dist)
else
allocate(Uniform :: angle%mu)
select type (mu => angle%mu)
type is (Uniform)
mu%a = -ONE
mu%b = ONE
end select
end if
if (check_for_node(node_angle, "phi")) then
call get_node_ptr(node_angle, "phi", node_dist)
call distribution_from_xml(angle%phi, node_dist)
else
allocate(Uniform :: angle%phi)
select type (phi => angle%phi)
type is (Uniform)
phi%a = ZERO
phi%b = TWO*PI
end select
end if
end select
else
! Set default angular distribution isotropic
allocate(Isotropic :: external_source%angle)
external_source%angle%reference_uvw(:) = [ZERO, ZERO, ONE]
! Determine external source energy distribution
if (check_for_node(node_source, "energy")) then
call get_node_ptr(node_source, "energy", node_dist)
call distribution_from_xml(external_source(i)%energy, node_dist)
else
! Default to a Watt spectrum with parameters 0.988 MeV and 2.249 MeV^-1
allocate(Watt :: external_source(i)%energy)
select type(energy => external_source(i)%energy)
type is (Watt)
energy%a = 0.988_8
energy%b = 2.249_8
end select
end if
end if
! Determine external source energy distribution
if (check_for_node(node_source, "energy")) then
call get_node_ptr(node_source, "energy", node_dist)
call distribution_from_xml(external_source%energy, node_dist)
else
! Default to a Watt spectrum with parameters 0.988 MeV and 2.249 MeV^-1
allocate(Watt :: external_source%energy)
select type(energy => external_source%energy)
type is (Watt)
energy%a = 0.988_8
energy%b = 2.249_8
end select
end if
end if
end do
! Survival biasing
if (check_for_node(doc, "survival_biasing")) then

View file

@ -64,24 +64,23 @@ element settings {
element seed { xsd:positiveInteger }? &
element source {
grammar {
start =
element file { xsd:string { maxLength = "255" } }? &
(element strength { xsd:double } | attribute strength { xsd:double })? &
(element file { xsd:string } | attribute file { xsd:string })? &
element space {
(element type { xsd:string } | attribute type { xsd:string }) &
(element parameters { xsd:double+ } |
attribute parameters { xsd:double+ })? &
(element parameters { list { xsd:double+ } } |
attribute parameters { list { xsd:double+ } })? &
element x { distribution }? &
element y { distribution }? &
element z { distribution }?
}? &
element angle {
(element type { xsd:string } | attribute type { xsd:string }) &
(element reference_uvw { xsd:double, xsd:double, xsd:double } |
attribute reference_uvw { xsd:double, xsd:double, xsd:double })? &
(element reference_uvw { list { xsd:double, xsd:double, xsd:double } } |
attribute reference_uvw { list { xsd:double, xsd:double, xsd:double } })? &
element mu { distribution }? &
element phi { distribution }?
}? &
@ -95,7 +94,7 @@ element settings {
(element parameters { list { xsd:double+ } } |
attribute parameters { list { xsd:double+ } })?
}
}? &
}* &
element state_point {
(

View file

@ -264,17 +264,30 @@
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<zeroOrMore>
<element name="source">
<grammar>
<start>
<interleave>
<optional>
<element name="file">
<data type="string">
<param name="maxLength">255</param>
</data>
</element>
<choice>
<element name="strength">
<data type="double"/>
</element>
<attribute name="strength">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="file">
<data type="string"/>
</element>
<attribute name="file">
<data type="string"/>
</attribute>
</choice>
</optional>
<optional>
<element name="space">
@ -290,14 +303,18 @@
<optional>
<choice>
<element name="parameters">
<oneOrMore>
<data type="double"/>
</oneOrMore>
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="parameters">
<oneOrMore>
<data type="double"/>
</oneOrMore>
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
@ -426,7 +443,7 @@
</define>
</grammar>
</element>
</optional>
</zeroOrMore>
<optional>
<element name="state_point">
<choice>

View file

@ -101,6 +101,8 @@ contains
type(Bank), intent(inout) :: site ! source site
integer :: i ! dummy loop index
integer :: n_source ! number of source distributions
real(8) :: c ! cumulative frequency
real(8) :: r(3) ! sampled coordinates
real(8) :: p_min(3) ! minimum coordinates of source
real(8) :: p_max(3) ! maximum coordinates of source
@ -117,11 +119,24 @@ contains
! Set particle defaults
call p%initialize()
! Sample from among multiple source distributions
n_source = size(external_source)
if (n_source > 1) then
r(1) = prn()*sum(external_source(:)%strength)
c = ZERO
do i = 1, n_source
c = c + external_source(i)%strength
if (r(1) < c) exit
end do
else
i = 1
end if
! Repeat sampling source location until a good site has been found
found = .false.
do while (.not.found)
! Sample spatial distribution
site%xyz(:) = external_source%space%sample()
site%xyz(:) = external_source(i)%space%sample()
! Fill p with needed data
p%coord(1)%xyz(:) = site%xyz
@ -138,7 +153,7 @@ contains
end if
! Check if spatial site is in fissionable material
select type (space => external_source%space)
select type (space => external_source(i)%space)
type is (SpatialBox)
if (space%only_fissionable) then
if (p%material == MATERIAL_VOID) then
@ -153,10 +168,10 @@ contains
call p%clear()
! Sample angle
site%uvw(:) = external_source%angle%sample()
site%uvw(:) = external_source(i)%angle%sample()
! Check for monoenergetic source above maximum neutron energy
select type (energy => external_source%energy)
select type (energy => external_source(i)%energy)
type is (Discrete)
if (any(energy%x >= energy_max_neutron)) then
call fatal_error("Source energy above range of energies of at least &
@ -166,7 +181,7 @@ contains
do
! Sample energy spectrum
site%E = external_source%energy%sample()
site%E = external_source(i)%energy%sample()
! resample if energy is greater than maximum neutron energy
if (site%E < energy_max_neutron) exit

View file

@ -6,14 +6,15 @@ module source_header
implicit none
!===============================================================================
! EXTSOURCE describes an external source of neutrons for a fixed-source problem
! or for the starting source in a k eigenvalue problem
! SOURCEDISTRIBUTION describes an external source of particles for a
! fixed-source problem or for the starting source in a k eigenvalue problem
!===============================================================================
type ExtSource
type SourceDistribution
real(8) :: strength ! source strength
class(SpatialDistribution), allocatable :: space ! spatial distribution
class(UnitSphereDistribution), allocatable :: angle ! angle distribution
class(Distribution), allocatable :: energy ! energy distribution
end type ExtSource
end type SourceDistribution
end module source_header

View file

@ -1 +1 @@
1d5f81d12f607f4a8436dfb65167e2a2be55dbf86fbc2cc465cec274671be5eaff517d781a4d40e264bb695e3c66c7ff61a650217c99de2ca8c15ca747fe6b80
57d6fd9cb5180c38efd2729a5dea0708cbd5fd0bf7dcf0c9d5c9cef5d818aeab5a926d03e70dedcf1b60d5740938fb3ba80e6ccdb09c661d159c0893da3bd593

View file

@ -1 +1 @@
caae173f01f7073d634a68a5c4ce97177423e13596a863976e1c40303dc8c05afed457d5a1aa0ae73627ec953143e4f9c1f45bdbd3b0cca76433062467d59777
f8359184c02fbab5dca5368689a84924066ab1fb09cae575588ceddd696d5461db577498df9959365d89fe933e9b338390e44e362c603c6f2aa5bcf4acc14b20

View file

@ -1 +1 @@
2f24eb86cda981982a8db5bb110c72e9cef542c06e15b748c1c7e459f96b0d8ba0978b51dffc006e813cd2e2ae1fa0357336f8322ae263189841afde01f0327b
8ae662f8881ce8cdec550069c6233c2c91e9a10f7200af6892cf6f2d77712ccfa17895dbd2eee02e6daf3d665c6ed84b29e17d89ff519e70c37b36d75a431d53

View file

@ -1 +1 @@
e771470681d3b4af57a70d148f5eb728df57f1fd7bdb5d6f76ac556b69f10bf0cdd5645fe488f1e17f07cbb72e9fb34af2fd7ede95c8e39c5ffa6ea9b6c5810e
a7c8ce7ffbc3a7b965d8a3077a4d9132130561afef19047b279b2d23198e248b09664856a092a32394894e19fef7708cebad99b3839d735c4e98ae0c9af58cb7

View file

@ -1 +1 @@
49835200052ee1a4c9583a7bb4e9430de7d01a6d7a8d4f63ae37be9bbac4fd8c7ed9135ecbc4ab4cb075fd4d77b322265783463dd07c127decceee8c9fe25bfd
51d3e2c43f36712a7b26c5fa26e0e2ca6fb9af205af04f0f8cd44c6b100e36382417c2c63d711e4677ce3c1958d15072727d5fd32424a3f6eb08d1f3b1c7db5a

View file

@ -1 +1 @@
183b4a06cbd0930cfa4f28d0c385cf3ae93ab97c171580c2ba9eec0e4b716102ad83f510d62258ef6769c446e72e1d5ba9f630b171ee239ec04c9bbd1e56742e
f0810606c5f947a9fe03bcfc87de3883ce46f59d8603e02ed30f853ebf301b2dc6bdcd109889801ada9e6e0b7be4932efeca97d4beea875af8c8e3ecb7511444

View file

@ -1 +1 @@
461a6a4ec3b0b6dc7199c09fa8f527e51cc7a1ea4281a708f8b7bcdbb12f7162027928dfcef68a24eaf6c06037a68e151df9aac9eac6ce56617466f2f5270b71
c4d4334d44956d6dc9abe854a5e9403d7f8a87ffb04a15a3d128e8d18eb4111f46ca277b751e1b0e836d69527502f9abba115a4b2fc64c38da63a9d57968d860

View file

@ -1 +1 @@
2fbd0986abff08126680925284929cf67bdad0cd564775197b78065ce3b0e6ad8094f5ca4d14ea69347db69a6cdcc9796a095178ae9b14a927b101f32f3cd0ec
7689b2c88391128377b7f9bfcda347a42f77d69d194186629fa965ecd3fc51be0bfd1ac92fb9d7551128d8b6ed5241ead4fb94b27ae29d80230863e78fbbcb68

View file

@ -1 +1 @@
cd2aeb24baafe9a904e697955990f6cffb5f25618fdf8c972775715bfe6e92bc259e36fd2b5addff8181439de58ad6f530972ec391e827f46146a2aaace34358
ecc649936e2cc364b079944f47e18fb81ec7290017b4bd5837e5aa1e24e1146df77897f44c7c2a88500e3f525566b51777cd9b84ec6a636f5883e411e4c1f75c

View file

@ -1 +1 @@
2de29e0a083af0722039ebc246469f26e260d604ab8b76314b2ac472bbd23004e031aec7afe3dbfc4c6112428846cd0cf0c1430e878832b9dab36463d026dee6
301824991a022884215609f39797a61933faf7ccacf81ad6bb883af08857563e8bd74ab946fc4fd072860168d77f76d0c76d1467375158072dce431fc6a1c449

View file

@ -1 +1 @@
51fcaf0aa527d1fd1022e5f312d4d25cd9bacc5fc9792d9f7702ee97cac43700a31f25be767a2cff769c37b5e1cdf3f922467977a9958fa34561e2a102bf8537
164804414f48a818c93e197f2901ce6ae375d88071a03e89c920dbc4462e7a2c8d2c85acf6560fcd6eb3d7c0c53d3b426ab1cc4b7721266fe8adec3e7231149e

View file

@ -1 +1 @@
35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77
53b1740921b71e4ead909ab9e4c25f7d43990fe7d7051fde6f66c39c0a6082177385640244010e1b9dbeaf5f34adf1627e9603088af729fadd6b589c19102edc

View file

@ -1 +1 @@
35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77
53b1740921b71e4ead909ab9e4c25f7d43990fe7d7051fde6f66c39c0a6082177385640244010e1b9dbeaf5f34adf1627e9603088af729fadd6b589c19102edc

View file

@ -1 +1 @@
35f99f1973b3bf3efcec6c2dddf56d6679a15dab8582ab5336e86e4fdf90967ce91036e5c30c345decb994ab9133a906b82dc8fad0cdd3398a612d9aa05c1c77
53b1740921b71e4ead909ab9e4c25f7d43990fe7d7051fde6f66c39c0a6082177385640244010e1b9dbeaf5f34adf1627e9603088af729fadd6b589c19102edc

View file

@ -1 +1 @@
7c1deb8a54fbe1a1ce6ef27cea4a11995210ad3e5ecf32bd83d7c80041edf0793378a7325ffe7ebf9c537e9c278fd4545642fec6c1e46b9c5418118f035d5e95
c6a2a1c707bc723fd38bafd18efcfb22beaac0bd5953d7524ced1d47866cc1e1ee4152e39234d32a06fe43aff446fb12f8c5b62a44075607f274778b49110762

View file

@ -1 +1 @@
7270299e4a4dde19d250825b0124fa36b60df847f046e058ccdfc74d4690beaaaaf387e050f596cb3445caf793d6a390ddb2d19650a3dccd4eb60056ae3b1477
0e8ecbc5afb7fb5e521913f239849febadbc969bbf99159b42d6d7e7930dcdb34f0e778e00a6e7c48170d4dd176b5776455ba96b722ad9cb6f2438e6ac3ce406

View file

@ -1 +1 @@
482760c362f56e453ce4b466083e77f84a461e636330d7cc2cb1cf7facced678a57a7c785ff9d039b3f575396cb435f99df05d6fa207f553c28ed3ce4f8151b3
df0089700d7ca25e997d9e6da4aa7132575298feb14398b2e806961fdb2e1d9bfbd23beb7bbc2a71b2ce18abe324702c2ab654af32e826bba5571a068b00a848

View file

@ -1 +1 @@
f3c246a1c83b1283163b22069f78231e3f6623fa3c2eb664ce400d0fff07105b6106d0fa8c6dfd49512a7eb676c80e4ee602e19063a9fc453394fe07a94a1bdd
2fb062798cab618153187fe3d8aaee4c6fb61132ab8215742e5939633ab321fb937d4d33a85856271bdf465257aca9cbba1b52716f233c22202ecfbbb9c15b1f

View file

@ -1 +1 @@
a97ae7049ac8c30b838987a3e87cbe5ff70b004ee0434e6204931def46c4c099bfef06e74658dab1114cc1035d3f404211a9bc94ef96e9cfb5b788da39d17bbd
1e43a3ef68b15aededc0466c913d2f784d237adc88827a980a3dcdcfd64e9bb73679cc3114d69caf389f9c478c439a8771602c397461b90ae0db58a81bfb739a

View file

@ -1 +1 @@
5a0461d03b0d9653ee35fded4be23e9b8316e3b7e21d352f822bc1f9763c03e9edab922bdc431f30d2a647c4216d45deba396bf56203027a328b7b28d970e0b8
dc94fe38751001e3950450f8f6e7a865a42e699be76372ac7846da863283b6bb963c32b477ace4217be60e1f7a473e946d27238b3faf17d3b7426dbd1a34f9e6

View file

@ -1 +1 @@
33b7b97f55a337d7001e7927517db6d36d512efec01fa5512c80bbc76b0b581f691a72a3810251aa97491b8cdf25a8ddcc9c9b3e3f54ccc6c315a84e715567d3
bd5362b44190406434cdaa086b7e7397e8f6841b86ad61eda2c3f604df03746832dbcff0e8e96e355f5ba5b4333d6a336358379f8ced51f7a1721ceacb620daa

View file

@ -1 +1 @@
b1a63345fc721f87c8fc25babb06741b585ee5dff5f29bb6debfbabb2ad57cb762d98c14e544df998a27bc725fb2704092fcdde54315ff832dff96c3641551d0
7909822f2ad84443506129719c664b71ac0eac875a7c234be42c553564435794b6028078b096b21e9fb5dad650495b84f2b53decf73e277c84a3ea52799c008e

View file

@ -1 +1 @@
ba1010f940c50314d61aae9f729b7bb476a6b35c5556fbc689ba3fde70ff50b0ba5dad0db3b38349a1562d67817047090ac450a64d895c8f3393163fe7914763
4eee301ac8b984041ded725f1b031602e823edec1dd0883481fba794d6301eb5b83a0e87cf77b1298901de518c783ee5a017a91b5ac962ab0db8b37bb9918053

View file

@ -1 +1 @@
57e4aa7550789aec0fcbc4a8917e9d28b1f1ae098a09cde95b757fd87d0dd3924c1bb9d4b23c59cd3793446fb6bbc8af4e1bb46323d70d5e5acd13db1167f545
32c8c6625dbeecd8ed670871234a0aa9878a29cd86d93328151d90eda209bf70ee83901418cb29f7e8ef66d6f9bdc74a350f2340b285abc64d772baf02ed6377

View file

@ -1 +1 @@
a42b2e165f59d3f499865d5db1e7db9b4cb25e48290f94080e569a9efc0b437d75cbb5773ac564f6cc95b19521fb7bc97a3eb641b491828c90cd086dc0c06a4b
ef1c9dc1906068cb48427ffc8776d8b95810ca1aca4534692ab7f788d8dac84c5f4545c7edbd884b55fb3e2b35aa1f28b9277d359427fe89bed012b38bf6342e

View file

@ -1 +1 @@
764d3ba6b1bc86b462d44151242bd18fa5f0200b831bb7537cf881b728622799eb95a457f88a503487bfd30095c1fa995818d50a6bc41dd182009772c010e82b
2ec83c8c9175d4fccd6421ef736cced51f90bf01f7e20992a0d1b49db04221132d483032467c9dcda5f562f10a67f5fde1967a025230e4ea2bf9668816881d21

View file

@ -1 +1 @@
17541e365f35ebd25134465a02d9a66e46536c4e3f5769da62137ec94ee7c8fb46ef38b9039aa6430261329a4e1b0ce677174323563e5be2f1368dc0c552e312
b304e586966abb31fbe625a7a48547e51ea563061928c61bc8bbec01df94b4a61b8c874dd4b5cac86a74508e81dd3f7dd8d801fcc4fe75ded5eeb3f73cf113a2

View file

@ -1 +1 @@
8ae1b048b90a049d9ed42336a0a2e8f7a250a14d889cc15e0c2831ed71617a78b92570480a15f936f2dd623c75f55693e38c69041c3cae24aba082409b51bc9f
9c3d305ad2c4ac642db896100805c32ce0cf0bbf89958718a30afde7e1dd1329fb7946c35fc628355d29270760e5f1c3700890dfba1afe8d31f4deab63de86ff

View file

@ -1 +1 @@
205e5cac8129797b815f0e79dad6c41a1876157ba69fcffecf67c3603dc36ded5f0168f9961d51fcb7dc7db6d732e7a3e8f82d04947aa0309df56bb8333d4bc9
c483f62afa60f7390bbd82d7372a1f629f6783f8fb85857c63a3912e8d980118eff38f356b53312d067daa0f190634ac89bebac19cfe15325fb2b440473addae

View file

@ -1 +1 @@
b5baba05419ce120bd22d935af9cdd6d206ad5dc5cae5991a9d160c70bb029f2d87040fa4e19f7190de64b908ac6a41a8b28db4a4f3883ec16e529b1449e983d
b3e7dc8968d814e455866532c05702196bab7dbdaca3c6cd3eb4f22243efb67755b373a7c54de7d767c6f3e0c4b5db612c345832c8f07cd1f50bc08fc841b3b8

View file

@ -1 +1 @@
a153add0502ff0fd4b0670f01679e104be1bb05941e73fb35e426c7f1e41a6144c7eb81fdba0d62ea3f39c7c6798028ff6d5df8c7a50b3e3f9e9bfe72fd48c2f
fae463e84fbb166a9ec03390824e359d162fae9f8556d44681c76907c22a0d48e69281dcce6ffd7f3d6e4b19dad3d705c516328d902878288300f87c4a72a671

View file

@ -1 +1 @@
fe56d58827d1803c1a49391711ad682be4a7cbc51519248812554f66e3e46266edc179f4254291a5f455751d3cdc13a17bbd103b9810c8818f36e4d283b503be
2d2e8de66740bbed327dd926f59d75120b04d30ffb9d7c96876ba21c7768c367c63e3624c3ee40553dc40d9a5379fa0052a932a6c5f45d1ad4327c4ac83cdff2

View file

@ -1 +1 @@
d80a9e8befab978bc84a231437a2b96c8f6dba81984c9e82a79360feb26bc9875b661131dbaa2deeb66b0aa50a39b2e738303bc40c5c65ee1995cf52f687ae46
8dd146ebd2008801a4c83470e8d9fcc8d39fe5e687c65f980eca209dd5f7fb8d17bfadf3bf3d452eaa564ee5f35a8fc97adc3dda44160d6ad574b784f2dd0030

View file

@ -1 +1 @@
8813917cab656135c4eebfdbe5f0d95e6a9409a2b36df1dfb483bdd193a3c0978727918a58399b259b82a7d51ae3f1801148bd978603fec11f27acdbf89520e2
7bf8aa36c31ca8b34f7c410901cb96e1ba7d389c33c850591519b15753c1322b75e5051c960dbc2e254cf46cc9720dd5e348aac0acbb70d10c71165e2f5ab9e4

View file

@ -1 +1 @@
4dbbd9cec921d2420e7567533c833afbe94335073aa760d1fd937adb695191b3ab7c070ec0d32721dddb4a46054e68322cf6a058420e20e439eb1d44f09f4be4
3c05a49f78866eda267c9f8eab2669a3a1aeb4eabfade9697d551b13f482d9076190c63a52a8aade59c20d917cebdd3e9bedabda6bc5bfd549db43cc61d7466f

View file

@ -1 +1 @@
df6318b76cd37a29ef9dd09da48a70c191ed07c1a2ceb75eb502ab35086c31250872406f22c2587edfcee16f67dd95c81db012ccd728710ed2509084438aea56
57384883e37964076aa82c19fa542434331cdb09735d710485b5aa0ca3445d543729e40cb9c7b6a70e7101ef186923eb1ff6315c73b01ff257052838add68fc7