[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] valyuta/005 7454e60 4/6: Import various improvements
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] valyuta/005 7454e60 4/6: Import various improvements from 'master' |
Date: |
Mon, 25 Jan 2021 12:11:02 -0500 (EST) |
branch: valyuta/005
commit 7454e60867ca84c755bdec1c23bce3ebe93bc263
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Import various improvements from 'master'
This "merge" was done manually, without git-merge, because repeating
minor changes was a good way to make sure they're correct and complete.
---
Makefile.am | 2 -
antediluvian_stubs.cpp | 2 +-
any_member.hpp | 18 +-
cache_file_reads.hpp | 3 +-
cache_file_reads_test.cpp | 6 +-
database.cpp | 3 +-
dbdict.cpp | 1 -
dbdict.hpp | 2 +-
fund_data.cpp | 5 +-
fund_data.hpp | 6 +-
ihs_basicval.cpp | 8 +-
lingo.cpp | 1 -
objects.make | 2 -
product_data.cpp | 81 +-
product_data.hpp | 9 +-
product_file_test.cpp | 42 +-
rounding_rules.cpp | 3 +-
rounding_rules.hpp | 6 +-
skin_group_carveout3.xrc | 2103 +++++++++++++++++++++++++++++++++++++++++++++
stratified_charges.cpp | 2 +-
stratified_charges.hpp | 10 +-
verify_products.cpp | 3 +-
version.hpp | 2 +-
23 files changed, 2204 insertions(+), 116 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index 2d1ddc5..00772d8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1045,7 +1045,6 @@ test_path_utility_LDADD = \
test_premium_tax_SOURCES = \
$(common_test_objects) \
calendar_date.cpp \
- ce_product_name.cpp \
data_directory.cpp \
database.cpp \
datum_base.cpp \
@@ -1088,7 +1087,6 @@ test_print_matrix_LDADD = \
test_product_file_SOURCES = \
$(common_test_objects) \
calendar_date.cpp \
- ce_product_name.cpp \
data_directory.cpp \
database.cpp \
datum_base.cpp \
diff --git a/antediluvian_stubs.cpp b/antediluvian_stubs.cpp
index d794aba..966515a 100644
--- a/antediluvian_stubs.cpp
+++ b/antediluvian_stubs.cpp
@@ -151,7 +151,7 @@ product_data::product_data(product_data const&)
:MemberSymbolTable <product_data> {}
{}
-std::string product_data::actual_filename(std::string const&)
+std::string filename_from_product_name(std::string const&)
{
return empty_string;
}
diff --git a/any_member.hpp b/any_member.hpp
index 0bceddc..11ab6c2 100644
--- a/any_member.hpp
+++ b/any_member.hpp
@@ -105,6 +105,11 @@ class placeholder
inline placeholder::~placeholder() = default;
+// Forward declaration of class any_member.
+
+template<typename ClassType>
+class any_member;
+
// Definition of class holder.
template<typename ClassType, typename ValueType>
@@ -113,7 +118,7 @@ class holder final
{
// Friendship is extended to class any_member only to support its
// cast operations.
- template<typename> friend class any_member;
+ friend class any_member<ClassType>;
public:
holder(ClassType*, ValueType const&);
@@ -214,13 +219,6 @@ void* holder<ClassType,ValueType>::defraud() const
}
#endif // defined LMI_MSC
-// Definition of class any_member.
-
-// This class is necessarily Assignable, so that a std::map can hold it.
-
-template<typename ClassType>
-class any_member;
-
template<typename MemberType, typename ClassType>
MemberType* exact_cast(any_member<ClassType>&);
@@ -229,6 +227,10 @@ MemberType* member_cast(any_member<ClassType>&);
struct any_member_test;
+// Definition of class any_member.
+
+// This class is necessarily Assignable, so that a std::map can hold it.
+
template<typename ClassType>
class any_member final
:public any_entity
diff --git a/cache_file_reads.hpp b/cache_file_reads.hpp
index 4c29afd..5591730 100644
--- a/cache_file_reads.hpp
+++ b/cache_file_reads.hpp
@@ -42,8 +42,7 @@ namespace detail
/// Motivation: It is costly to deserialize objects from xml, so cache
/// them for reuse. The cache persists until the program terminates.
///
-/// Requires: T::T(fs::path const& filename).
-/// default ctor is not required
+/// Requires: T::T(fs::path const& filename), though not T::T().
///
/// For each filename, the cache stores one instance, which is
/// replaced by reloading the file if its write time has changed.
diff --git a/cache_file_reads_test.cpp b/cache_file_reads_test.cpp
index c20af49..9120a56 100644
--- a/cache_file_reads_test.cpp
+++ b/cache_file_reads_test.cpp
@@ -37,7 +37,6 @@ class X
:public cache_file_reads<X>
{
public:
-// X() = default;
X(fs::path const& filename)
{
std::ifstream ifs(filename.string(), ios_in_binary());
@@ -72,11 +71,8 @@ class cache_file_reads_test
void cache_file_reads_test::test_preconditions()
{
- // X() and X(filename) are required.
- // ...well, no, not actually:
-// X x0;
+ // X(fs::path const&) is required.
X x0("sample.ill");
- X x1("sample.ill");
// The cache is accessible with or without an object.
BOOST_TEST_EQUAL
diff --git a/database.cpp b/database.cpp
index 4595a4d..2837adc 100644
--- a/database.cpp
+++ b/database.cpp
@@ -192,8 +192,7 @@ void product_database::initialize(std::string const&
product_name)
}
else
{
-// product_data const p(product_name);
- std::string f = product_data::actual_filename(product_name);
+ std::string f = filename_from_product_name(product_name);
product_data const& p(*product_data::read_via_cache(f));
std::string const filename(p.datum("DatabaseFilename"));
LMI_ASSERT(!filename.empty());
diff --git a/dbdict.cpp b/dbdict.cpp
index a205984..6ce5cd4 100644
--- a/dbdict.cpp
+++ b/dbdict.cpp
@@ -45,7 +45,6 @@
#include <boost/filesystem/convenience.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/filesystem/operations.hpp>
-#include <boost/filesystem/path.hpp>
#include <vector>
diff --git a/dbdict.hpp b/dbdict.hpp
index c207d6d..699fbdf 100644
--- a/dbdict.hpp
+++ b/dbdict.hpp
@@ -47,7 +47,7 @@ class LMI_SO DBDictionary
public:
DBDictionary();
- DBDictionary(fs::path const& filename);
+ explicit DBDictionary(fs::path const& filename);
~DBDictionary() override = default;
diff --git a/fund_data.cpp b/fund_data.cpp
index ab424ab..702cd65 100644
--- a/fund_data.cpp
+++ b/fund_data.cpp
@@ -33,7 +33,6 @@
#include "xml_serialize.hpp"
#include <boost/filesystem/convenience.hpp> // basename()
-#include <boost/filesystem/path.hpp>
//============================================================================
FundInfo::FundInfo
@@ -77,9 +76,9 @@ template<> struct xml_io<FundInfo>
} // namespace xml_serialize
//============================================================================
-FundData::FundData(std::string const& a_Filename)
+FundData::FundData(fs::path const& a_Filename)
{
- Read(a_Filename);
+ Read(a_Filename.string());
}
int FundData::GetNumberOfFunds() const
diff --git a/fund_data.hpp b/fund_data.hpp
index 75e4757..08ad26b 100644
--- a/fund_data.hpp
+++ b/fund_data.hpp
@@ -24,8 +24,11 @@
#include "config.hpp"
+#include "cache_file_reads.hpp"
#include "so_attributes.hpp"
+#include <boost/filesystem/path.hpp>
+
#include <string>
#include <vector>
@@ -60,9 +63,10 @@ class LMI_SO FundInfo final
};
class LMI_SO FundData final
+ :public cache_file_reads<FundData>
{
public:
- FundData(std::string const& a_Filename);
+ explicit FundData(fs::path const& a_Filename);
~FundData() = default;
static void write_funds_files();
diff --git a/ihs_basicval.cpp b/ihs_basicval.cpp
index caf67b6..e256df6 100644
--- a/ihs_basicval.cpp
+++ b/ihs_basicval.cpp
@@ -69,9 +69,9 @@ BasicValues::BasicValues(Input const& input)
// ,product_ (yare_input_.ProductName)
// Safe to dereference?
// ,product_
(*product_data::read_via_cache(yare_input_.ProductName))
-// ,product_
(*product_data::read_via_cache(product_data::actual_filename(yare_input_.ProductName)))
+// ,product_
(*product_data::read_via_cache(filename_from_product_name(yare_input_.ProductName)))
// Throw if null?
- ,product_
(product_data::read_via_cache(product_data::actual_filename(yare_input_.ProductName)))
+ ,product_
(product_data::read_via_cache(filename_from_product_name(yare_input_.ProductName)))
,database_ (yare_input_)
,DefnLifeIns_ {mce_cvat}
,DefnMaterialChange_ {mce_unnecessary_premium}
@@ -105,9 +105,9 @@ BasicValues::BasicValues
:yare_input_ (Input{})
// ,product_ (a_ProductName)
// Safe to dereference?
-// ,product_
(*product_data::read_via_cache(product_data::actual_filename(a_ProductName)))
+// ,product_
(*product_data::read_via_cache(filename_from_product_name(a_ProductName)))
// Throw if null?
- ,product_
(product_data::read_via_cache(product_data::actual_filename(a_ProductName)))
+ ,product_
(product_data::read_via_cache(filename_from_product_name(a_ProductName)))
,database_
(a_ProductName
,a_Gender
diff --git a/lingo.cpp b/lingo.cpp
index c2a0469..79f9056 100644
--- a/lingo.cpp
+++ b/lingo.cpp
@@ -32,7 +32,6 @@
#include "xml_serialize.hpp"
#include <boost/filesystem/convenience.hpp>
-#include <boost/filesystem/path.hpp>
/// Construct from filename.
diff --git a/objects.make b/objects.make
index c5a8dfc..cb19e68 100644
--- a/objects.make
+++ b/objects.make
@@ -897,7 +897,6 @@ premium_tax_test$(EXEEXT): \
$(boost_filesystem_objects) \
$(common_test_objects) \
calendar_date.o \
- ce_product_name.o \
data_directory.o \
database.o \
datum_base.o \
@@ -935,7 +934,6 @@ product_file_test$(EXEEXT): \
$(boost_filesystem_objects) \
$(common_test_objects) \
calendar_date.o \
- ce_product_name.o \
data_directory.o \
database.o \
datum_base.o \
diff --git a/product_data.cpp b/product_data.cpp
index e747890..056ff5e 100644
--- a/product_data.cpp
+++ b/product_data.cpp
@@ -26,7 +26,6 @@
#include "alert.hpp"
#include "assert_lmi.hpp"
-////#include "ce_product_name.hpp"
#include "contains.hpp"
#include "data_directory.hpp" // AddDataDir()
#include "map_lookup.hpp"
@@ -34,7 +33,6 @@
#include "xml_serialize.hpp"
#include <boost/filesystem/convenience.hpp>
-#include <boost/filesystem/path.hpp>
#include <vector>
@@ -119,46 +117,24 @@ std::string const& glossed_string::gloss() const
}
/// Default ctor, used only by derived classes and friends.
+
product_data::product_data()
{
ascribe_members();
}
-product_data::product_data(fs::path const& filename)
+product_data::product_data(fs::path const& product_filename)
{
ascribe_members();
- load(filename.string());
+ load(product_filename);
}
-/// Construct from product name.
-///
-/// The argument is a string (typically Input::ProductName) such as
-/// 'sample'. The appropriate extension and path are added here to
-/// produce a filepath.
-///
-/// Somewhat arbitrarily, forbid '.' in product names. There's no real
-/// need to allow that, and it would complicate the code. A product
-/// name like "ul.with.variable.funds" could too easily be mistaken
-/// for a '.funds' file. The boost filesystem portability guidelines
-/// suggest "Do not use more that one period in a file name", and
-/// extensions are added to product names to create file names.
-
product_data::product_data(std::string const& product_name)
- :product_data(fs::path(actual_filename(product_name)))
+ :product_data(fs::path(filename_from_product_name(product_name)))
{
}
-#if 0
-// Either add 'ce_product_name.o' to unit-test targets in makefiles,
-// or abandon this idea.
-product_data::product_data(ce_product_name const& product_name)
- :product_data(fs::path(actual_filename(product_name.str())))
-{
-}
-#endif // 0
-
product_data::product_data(product_data const& z)
-// Is this initializer-list necessary?
:xml_serializable <product_data> {}
,MemberSymbolTable <product_data> {}
{
@@ -181,25 +157,6 @@ std::string const& product_data::datum(std::string const&
name) const
return member_cast<glossed_string>(operator[](name))->datum();
}
-std::string product_data::actual_filename(std::string const& product_name)
-{
- fs::path path(product_name);
-if(false) warning()
- << product_name << " product_name\n"
- << path.string() << " path.string()\n"
- << fs::basename(path) << " fs::basename(path)\n"
- << LMI_FLUSH
- ;
- LMI_ASSERT(product_name == fs::basename(path));
- path = fs::change_extension(path, ".policy");
-if(false) warning()
- << product_name << " product_name\n"
- << path.string() << " path.string()\n"
- << LMI_FLUSH
- ;
- return AddDataDir(path.string());
-}
-
/// Reference to named member.
glossed_string& product_data::item(std::string const& name)
@@ -968,6 +925,36 @@ void product_data::write_policy_files()
sample2xyz ().save(AddDataDir("sample2xyz.policy"));
}
+/// Convert a product name to the name of its '.product' file.
+///
+/// For example: 'sample' --> '/opt/lmi/data/sample.product'.
+///
+/// The argument is a string (typically Input::ProductName) such as
+/// 'sample'. The appropriate extension and path are added here to
+/// produce a filepath.
+///
+/// Somewhat arbitrarily, forbid '.' in product names. There's no real
+/// need to allow that, and it would complicate the code. A product
+/// name like "ul.with.variable.funds" could too easily be mistaken
+/// for a '.funds' file. The boost filesystem portability guidelines
+/// suggest "Do not use more that [sic] one period in a file name",
+/// and extensions are added to product names to create file names.
+///
+/// Rejected alternative: take a 'ce_product_name' argument instead.
+/// That would constrain the argument in a natural way, but would
+/// force coupling between class ce_product_name and client code
+/// that has no other need to know about it; furthermore, the range
+/// of 'ce_product_name' values is determined only at run time, and
+/// it would be strange to propagate a run-time dependency.
+
+std::string filename_from_product_name(std::string const& product_name)
+{
+ fs::path path(product_name);
+ LMI_ASSERT(product_name == fs::basename(path));
+ path = fs::change_extension(path, ".policy");
+ return AddDataDir(path.string());
+}
+
/// Load from file. This free function can be invoked across dll
/// boundaries, even though xml_serializable<> is instantiated only
/// in the present TU.
diff --git a/product_data.hpp b/product_data.hpp
index 0009116..c7bd1c4 100644
--- a/product_data.hpp
+++ b/product_data.hpp
@@ -33,8 +33,6 @@
#include <string>
-////class LMI_SO_FWD_DECL ce_product_name;
-
/// A single product datum: a string with an optional gloss.
///
/// For example, the principal string datum might be the full name of
@@ -93,15 +91,12 @@ class LMI_SO product_data
typedef deserialized<product_data>::value_type value_type;
public:
- explicit product_data(fs::path const& filename);
+ explicit product_data(fs::path const& product_filename);
explicit product_data(std::string const& product_name);
-//// explicit product_data(ce_product_name const& product_name);
~product_data() override;
std::string const& datum(std::string const& name) const;
- static std::string actual_filename(std::string const& product_name);
-
// Legacy functions to support creating product files programmatically.
static void write_policy_files();
static void write_proprietary_policy_files();
@@ -377,6 +372,8 @@ class LMI_SO product_data
glossed_string DefnSpecAmt;
};
+LMI_SO std::string filename_from_product_name(std::string const&);
+
LMI_SO void load(product_data &, fs::path const&);
LMI_SO void save(product_data const&, fs::path const&);
diff --git a/product_file_test.cpp b/product_file_test.cpp
index a0fd21f..ea047cb 100644
--- a/product_file_test.cpp
+++ b/product_file_test.cpp
@@ -37,6 +37,8 @@
#include "test_tools.hpp"
#include "timer.hpp" // TimeAnAliquot()
+#include <boost/filesystem/path.hpp>
+
#include <string>
#include <utility> // move()
@@ -62,25 +64,19 @@ class product_file_test
static void read_policy_file() ;
static void read_rounding_file() ;
static void read_stratified_file() ;
-
- static std::string database_filename_ ;
- static std::string fund_filename_ ;
- static std::string lingo_filename_ ;
- static std::string policy_filename_ ;
- static std::string rounding_filename_ ;
- static std::string stratified_filename_ ;
+ static void read_cached_files() ;
+
+ inline static fs::path database_filename_ ;
+ inline static fs::path fund_filename_ ;
+ inline static fs::path lingo_filename_ ;
+ inline static fs::path policy_filename_ ;
+ inline static fs::path rounding_filename_ ;
+ inline static fs::path stratified_filename_ ;
};
-std::string product_file_test::database_filename_ ;
-std::string product_file_test::fund_filename_ ;
-std::string product_file_test::lingo_filename_ ;
-std::string product_file_test::policy_filename_ ;
-std::string product_file_test::rounding_filename_ ;
-std::string product_file_test::stratified_filename_ ;
-
void product_file_test::get_filenames()
{
- policy_filename_ = "sample";
+ policy_filename_ = filename_from_product_name("sample");
product_data p(policy_filename_);
database_filename_ = AddDataDir(p.datum("DatabaseFilename"));
fund_filename_ = AddDataDir(p.datum("FundFilename" ));
@@ -138,11 +134,6 @@ void product_file_test::test_copying()
BOOST_TEST( 99 == g.query<int>(DB_MaxIncrAge));
}
-// This implementation:
-// auto z = DBDictionary::read_via_cache(database_filename_);
-// would cause assay_speed() to report a much faster run time,
-// yet such a timing would have little significance.
-
void product_file_test::read_database_file()
{
DBDictionary z(database_filename_);
@@ -173,6 +164,16 @@ void product_file_test::read_stratified_file()
stratified_charges z(stratified_filename_);
}
+void product_file_test::read_cached_files()
+{
+ DBDictionary ::read_via_cache(database_filename_);
+ FundData ::read_via_cache(fund_filename_);
+ lingo ::read_via_cache(lingo_filename_);
+ product_data ::read_via_cache(policy_filename_);
+ rounding_rules ::read_via_cache(rounding_filename_);
+ stratified_charges ::read_via_cache(stratified_filename_);
+}
+
void product_file_test::assay_speed()
{
std::cout
@@ -183,6 +184,7 @@ void product_file_test::assay_speed()
<< "\n Read 'policy' : " << TimeAnAliquot(read_policy_file )
<< "\n Read 'rounding' : " << TimeAnAliquot(read_rounding_file )
<< "\n Read 'stratified' : " << TimeAnAliquot(read_stratified_file)
+ << "\n Read all, cached' : " << TimeAnAliquot(read_cached_files )
<< '\n'
;
}
diff --git a/rounding_rules.cpp b/rounding_rules.cpp
index fa78497..a0dd519 100644
--- a/rounding_rules.cpp
+++ b/rounding_rules.cpp
@@ -31,7 +31,6 @@
#include "xml_serialize.hpp"
#include <boost/filesystem/convenience.hpp>
-#include <boost/filesystem/path.hpp>
template class xml_serializable<rounding_rules>;
@@ -167,7 +166,7 @@ rounding_rules::rounding_rules()
/// that violate this precondition, but this ctor prevents them from
/// being used to produce illustrations.
-rounding_rules::rounding_rules(std::string const& filename)
+rounding_rules::rounding_rules(fs::path const& filename)
{
ascribe_members();
diff --git a/rounding_rules.hpp b/rounding_rules.hpp
index 7b6328c..3f2070c 100644
--- a/rounding_rules.hpp
+++ b/rounding_rules.hpp
@@ -25,11 +25,14 @@
#include "config.hpp"
#include "any_member.hpp"
+#include "cache_file_reads.hpp"
#include "mc_enum.hpp"
#include "mc_enum_types.hpp"
#include "so_attributes.hpp"
#include "xml_serializable.hpp"
+#include <boost/filesystem/path.hpp>
+
#include <string>
/// Parameters of a rounding rule.
@@ -91,11 +94,12 @@ class LMI_SO rounding_parameters final
class LMI_SO rounding_rules final
:public xml_serializable <rounding_rules>
,public MemberSymbolTable <rounding_rules>
+ ,public cache_file_reads <rounding_rules>
{
friend class RoundingDocument;
public:
- explicit rounding_rules(std::string const& filename);
+ explicit rounding_rules(fs::path const& filename);
~rounding_rules() override = default;
rounding_parameters const& datum(std::string const& name) const;
diff --git a/skin_group_carveout3.xrc b/skin_group_carveout3.xrc
new file mode 100644
index 0000000..850bbdf
--- /dev/null
+++ b/skin_group_carveout3.xrc
@@ -0,0 +1,2103 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<resource xmlns="http://www.wxwidgets.org/wxxrc" version="2.5.3.0">
+
+<!--
+ Let me illustrate...: wxWindows xml input-notebook resources.
+
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Gregory W. Chicares.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License version 2 as
+ published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ https://savannah.nongnu.org/projects/lmi
+ email: <gchicares@sbcglobal.net>
+ snail: Chicares, 186 Belle Woods Drive, Glastonbury CT 06033, USA
+
+ This version is designed for group-carveout users in the field;
+ it omits the list-bill date and the inforce and reports panels.
+-->
+
+<object class="wxPanel" name="plan_panel">
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablerows>1</growablerows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>2</rows>
+ <growablecols>0</growablecols>
+ <growablerows>1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Policy</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxListBox" name="ProductName">
+ <help>Product</help>
+ <size>90,-1d</size>
+ <style>wxLB_SINGLE|wxLB_SORT</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablerows>0</growablerows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablerows>0,1</growablerows>
+ <growablecols>0</growablecols>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxRadioBox"
name="GroupUnderwritingType">
+ <help>Group underwriting</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>Group underwriting</label>
+ <content>
+ <item>Medical</item>
+ <item>Paramedical</item>
+ <item>Nonmedical</item>
+ <item>Simplified issue</item>
+ <item>Guaranteed issue</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxRadioBox" name="AvoidMecMethod">
+ <help>MEC avoidance</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>MEC avoidance</label>
+<!-- SOMEDAY !! This should become a checkbox. -->
+ <content>
+ <item helptext="Do not try to avoid a
MEC">Allow MEC</item>
+ <item helptext="Avoid a MEC by decreasing
premium">Reduce premium</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxRadioBox"
name="DefinitionOfLifeInsurance">
+ <help>Definition of life insurance</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>Definition of life insurance</label>
+ <dimension>1</dimension>
+ <selection>0</selection>
+ <content>
+ <item helptext="Definition of life
insurance is cash value accumulation test">CVAT</item>
+ <item helptext="Definition of life
insurance is guideline premium test">GPT</item>
+ <item helptext="Do not comply with US
definition of life insurance">Not 7702 compliant</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablerows>0,1,2,3,4,5,6</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Cell</label>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>0</cols>
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label># identical
lives</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="NumberOfIdenticalLives">
+ <help>Number of identical
lives represented by this cell</help>
+ <size>50,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxLEFT|wxTOP</flag>
+ <border>2</border>
+ <object class="wxCheckBox"
name="IncludeInComposite">
+ <help>Include this individual in any
group composite</help>
+ <label>Include in composite</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxCheckBox"
name="RetireesCanEnroll">
+ <help>Let individuals enroll after their
retirement</help>
+ <label>Retirees eligible to enroll</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxCheckBox"
name="EffectiveDateToday">
+ <help>Set effective date to current date</help>
+ <label>Effective today</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Effective date</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>2</border>
+ <object class="wxDatePickerCtrl"
name="EffectiveDate">
+ <help>Effective date</help>
+ <size>90,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Last COI reentry date</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>2</border>
+ <object class="wxDatePickerCtrl"
name="LastCoiReentryDate">
+ <help>Last COI reentry date</help>
+ <size>90,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>State of jurisdiction</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxComboBox"
name="StateOfJurisdiction">
+ <help>State that approves policy form
and rate filing, and governs everything else except premium tax</help>
+
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+
<content><item>MM</item><item>WW</item></content>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Premium tax state</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxComboBox"
name="PremiumTaxState">
+ <help>State to which premium tax is
paid--affects premium load if the tax is passed through</help>
+
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+
<content><item>MM</item><item>WW</item></content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <style>wxALIGN_LEFT</style>
+ <label>Comments</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>4</border>
+ <object class="wxTextCtrl" name="Comments">
+ <help>Freeform comments</help>
+ <size>180,20</size>
+ <style>wxTE_MULTILINE</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Extra policy fee</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>4</border>
+ <object class="InputSequenceEntry" name="ExtraMonthlyCustodialFee">
+ <title>Additional monthly policy fee</title>
+ <help>Additional monthly policy fee (e.g., for fund custodian
charges)</help>
+ <size>180,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Current COI multiplier</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>4</border>
+ <object class="InputSequenceEntry" name="CurrentCoiMultiplier">
+ <title>Multiplier for current COI rates</title>
+ <help>Multiplier for current COI rates</help>
+ <size>180,-1</size>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxPanel" name="participant_panel">
+ <object class="wxFlexGridSizer">
+ <rows>2</rows>
+ <growablecols>0</growablecols>
+ <growablerows>1</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <growablecols>0,1,2</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxRadioBox" name="Gender">
+ <help>Gender</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>Gender</label>
+ <dimension>1</dimension>
+ <selection>0</selection>
+ <content>
+ <item helptext="Female rates">Female</item>
+ <item helptext="Male rates">Male</item>
+ <item helptext="Rates not differentiated by
gender">Unisex</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxRadioBox" name="Smoking">
+ <help>Smoking</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>Smoker</label>
+ <dimension>1</dimension>
+ <selection>0</selection>
+ <content>
+ <item helptext="Smoker or tobacco user, as
applicable">Smoker</item>
+ <item helptext="Nonsmoker or non-tobacco-user, as
applicable">Nonsmoker</item>
+ <item helptext="Rates not differentiated by
smoking">Unismoke</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxRadioBox" name="UnderwritingClass">
+ <help>Underwriting class</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>Class</label>
+ <dimension>1</dimension>
+ <selection>0</selection>
+ <content>
+ <item helptext="Preferred class">Preferred</item>
+ <item helptext="Standard class">Standard</item>
+ <item helptext="Table rated">Rated</item>
+ <item helptext="Ultra-preferred class">Ultra</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablecols>0</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxCheckBox" name="UseDOB">
+ <help>Calculate issue age based on date of
birth and effective date, automatically reflecting changes in effective
date</help>
+ <label>Birthdate overrides issue age</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablecols>0</growablecols>
+ <growablerows>0,1,2</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <object class="wxStaticText">
+ <label>Birthdate </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <object class="wxDatePickerCtrl"
name="DateOfBirth">
+ <help>Date of birth</help>
+ <size>90,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <object class="wxStaticText">
+ <label>Issue age </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <object class="wxSpinCtrl" name="IssueAge">
+ <help>Insurance age on date of
issue</help>
+ <size>80,-1</size>
+ <style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <object class="wxStaticText">
+ <label>Retirement age </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <object class="wxSpinCtrl"
name="RetirementAge">
+ <help>Insurance age on date of
retirement</help>
+ <size>80,-1</size>
+ <style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablecols>0</growablecols>
+<!-- This control really should be here, but end users are not accustomed to
it.
+ <object class="sizeritem">
+ <flag>wxALIGN_BOTTOM|wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <object class="wxCheckBox"
name="OverrideCoiMultiplier">
+ <help>Override default country COI multiplier
for current COI rates</help>
+ <label>Override country COI multiplier </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <object class="wxTextCtrl"
name="CountryCoiMultiplier">
+ <help>Country multiplier for current COI
rates</help>
+ <size>10,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+-->
+ <object class="sizeritem">
+ <flag>wxALIGN_BOTTOM|wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <object class="wxStaticText">
+ <label>Substandard table </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <object class="wxComboBox" name="SubstandardTable">
+ <help>Substandard table rating</help>
+ <style>wxCB_DROPDOWN|wxCB_READONLY</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_BOTTOM|wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <object class="wxStaticText">
+ <label>Flat extra </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <object class="InputSequenceEntry"
name="FlatExtra">
+ <title>Annual flat extra per thousand</title>
+ <help>Annual flat extra per thousand</help>
+ <size>10,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxPanel" name="solve_panel">
+ <object class="wxFlexGridSizer">
+ <cols>3</cols>
+ <rows>0</rows>
+ <growablecols>0,1,2</growablecols>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxRadioBox" name="SolveType">
+ <help>What to solve for</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <label>Solve for</label>
+ <content>
+ <item>No solve</item>
+ <item>Specified amount</item>
+ <item>Employee premium</item>
+ <item>Employer premium</item>
+ <item>Loan</item>
+ <item>Withdrawal</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>During the period</label>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>2</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxRadioBox" name="SolveFromWhich">
+ <help>Beginning of solve period
(inclusive)</help>
+ <label>From</label>
+ <style>wxRA_SPECIFY_COLS</style>
+ <content>
+ <item>Issue</item>
+ <item>Year</item>
+ <item>Age</item>
+ <item>Retirement</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>2</rows>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxSpinCtrl"
name="SolveBeginYear">
+ <help>Solve beginning
duration</help>
+ <size>50,-1</size>
+ <style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Year</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_BOTTOM</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>4</border>
+ <object class="wxSpinCtrl"
name="SolveBeginAge">
+ <help>Solve beginning
age</help>
+ <size>50,-1</size>
+ <style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Age</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>2</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxRadioBox" name="SolveToWhich">
+ <help>End of solve period (exclusive)</help>
+ <label>To</label>
+ <style>wxRA_SPECIFY_COLS</style>
+ <content>
+ <item>Retirement</item>
+ <item>Year</item>
+ <item>Age</item>
+ <item>Maturity</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>2</rows>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxSpinCtrl"
name="SolveEndYear">
+ <help>Solve ending
duration</help>
+ <size>50,-1</size>
+ <style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Year</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_BOTTOM</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>4</border>
+ <object class="wxSpinCtrl"
name="SolveEndAge">
+ <help>Solve ending age</help>
+ <size>50,-1</size>
+ <style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Age</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>To achieve a goal of</label>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablecols>0</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxRadioBox" name="SolveTarget">
+ <help>Target to solve for</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <content>
+ <item>Endowment</item>
+ <item>Target CSV</item>
+ <item>Target NAAR</item>
+ <item>CSV = tax basis</item>
+ <item>Avoid MEC</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>2</rows>
+ <growablecols>0</growablecols>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>0</cols>
+ <rows>1</rows>
+ <growablecols>1</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Target amount</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxTOP</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="SolveTargetValue">
+ <help>Target amount</help>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>2</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxRadioBox"
name="SolveTgtAtWhich">
+ <help>When solve target is to
be achieved</help>
+ <label>At</label>
+
<style>wxRA_SPECIFY_COLS</style>
+ <content>
+ <item>Retirement</item>
+ <item>Year</item>
+ <item>Age</item>
+ <item>Maturity</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxTOP</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>2</rows>
+
<growablerows>0,1</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+ <border>2</border>
+ <object
class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <object
class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object
class="wxSpinCtrl" name="SolveTargetYear">
+ <help>Duration
to achieve target surrender value</help>
+
<size>50,-1</size>
+
<style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ <object
class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+ <border>2</border>
+ <object
class="wxStaticText">
+
<label>Year</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxBOTTOM</flag>
+ <border>2</border>
+ <object
class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <object
class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL</flag>
+ <border>2</border>
+ <object
class="wxSpinCtrl" name="SolveTargetAge">
+ <help>Attained
age to achieve target surrender value</help>
+
<size>50,-1</size>
+
<style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ <object
class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_BOTTOM|wxALL</flag>
+ <border>2</border>
+ <object
class="wxStaticText">
+
<label>Age</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <growablecols>0,1</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxRadioBox"
name="SolveExpenseGeneralAccountBasis">
+ <help>Expense and mortality basis for
solve</help>
+ <label>Basis</label>
+ <style>wxRA_SPECIFY_COLS</style>
+ <content>
+ <item>Current</item>
+ <item>Guaranteed</item>
+ <item>Midpoint</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxRadioBox"
name="SolveSeparateAccountBasis">
+ <help>Separate-account basis for solve</help>
+ <label>Sep acct rate</label>
+ <style>wxRA_SPECIFY_COLS</style>
+ <content>
+ <item>Hypothetical</item>
+ <item>Zero</item>
+ <item>Half of hypothetical</item>
+ </content>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxPanel" name="amounts_panel">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>2</rows>
+ <growablecols>0</growablecols>
+ <growablerows>1</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <growablerows>0</growablerows>
+ <growablecols>0,1</growablecols>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Table Y factors for payments made by</label>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>2</rows>
+ <growablecols>1</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Participant</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT|wxTOP</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="InsuredPremiumTableFactor">
+ <help>Multiple of table used as basis
for premium calculation</help>
+ <size>100,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Sponsor</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT|wxTOP</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="CorporationPremiumTableFactor">
+ <size>100,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Salary-based specified amount</label>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Salary multiple </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="SalarySpecifiedAmountFactor">
+ <help>Multiple of salary for
specified amount calculation</help>
+ <size>40,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>cap </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="SalarySpecifiedAmountCap">
+ <help>Limit on salary-based
specified amount</help>
+ <size>40,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>offset </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <object class="wxTextCtrl"
name="SalarySpecifiedAmountOffset">
+ <help>Amount subtracted from
salary-based specified amount for group insurance offset</help>
+ <size>40,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>First-year extra</label>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>3</cols>
+ <growablecols>1,2</growablecols>
+ <growablerows>0,1,2,3,4</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Dumpin </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT|wxTOP</flag>
+ <border>2</border>
+ <object class="wxTextCtrl" name="Dumpin">
+ <help>First-year lump-sum payment
other than 1035 exchange</help>
+ <size>10,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>1035</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>External </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxTOP</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Internal </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Amount </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="External1035ExchangeAmount">
+ <help>External 1035 exchange
amount</help>
+ <size>10,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxLEFT|wxRIGHT|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="Internal1035ExchangeAmount">
+ <help>Internal 1035 exchange
amount</help>
+ <size>10,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Tax basis </label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="External1035ExchangeTaxBasis">
+ <help>Tax basis for external 1035
exchange</help>
+ <size>10,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="Internal1035ExchangeTaxBasis">
+ <help>Tax basis for internal 1035
exchange</help>
+ <size>10,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+ <border>2</border>
+ <object class="wxCheckBox"
name="External1035ExchangeFromMec">
+ <help>External 1035 exchange is from a
MEC</help>
+ <label>From MEC</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+ <border>2</border>
+ <object class="wxCheckBox"
name="Internal1035ExchangeFromMec">
+ <help>Internal 1035 exchange is from a
MEC</help>
+ <label>From MEC</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Participant payment</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry" name="Payment">
+ <title>Individual payment amount</title>
+ <help>Individual payment amount, or corridor, glp,
gsp, minimum, sevenpay, table, target</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Participant mode</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry" name="PaymentMode">
+ <title>Individual payment mode</title>
+ <help>Individual payment mode: annual, semiannual,
quarterly, or monthly</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Sponsor payment</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry"
name="CorporationPayment">
+ <title>Corporation payment amount</title>
+ <help>Corporation payment amount, or corridor, glp,
gsp, minimum, sevenpay, table, target</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Sponsor mode</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry"
name="CorporationPaymentMode">
+ <title>Corporation payment mode</title>
+ <help>Corporation payment mode: annual, semiannual,
quarterly, or monthly</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Salary</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry" name="ProjectedSalary">
+ <title>Projected annual salary</title>
+ <help>Projected annual salary</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Specified amount</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry" name="SpecifiedAmount">
+ <title>Specified amount</title>
+ <help>Specified amount, or corridor, glp, gsp,
maximum, salary, sevenpay, target</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Supplemental amount</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry"
name="SupplementalAmount">
+ <title>Supplemental amount</title>
+ <help>Supplemental amount, or corridor, glp, gsp,
maximum, salary, sevenpay, target</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Death benefit option</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry"
name="DeathBenefitOption">
+ <title>Death benefit option</title>
+ <help>Death benefit option: a (level), b (increasing),
rop (return of premium), or mdb (minimum death benefit)</help>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxPanel" name="funds_panel">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>3</rows>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>0</cols>
+ <rows>1</rows>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticBoxSizer">
+ <orient>wxHORIZONTAL</orient>
+ <label>Funds</label>
+ <object class="sizeritem">
+ <flag>wxALIGN_TOP|wxLEFT|wxRIGHT|wxBOTTOM</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>0</cols>
+ <rows>1</rows>
+ <growablecols>0</growablecols>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT|wxBOTTOM</flag>
+ <border>4</border>
+ <object class="wxRadioBox"
name="FundChoiceType">
+ <help>Fund allocation: for 100%
general account, pick "Choose funds"; for 100% separate account, pick "Average
fund"</help>
+ <style>wxRA_SPECIFY_COLS</style>
+ <content>
+ <item>Average fund</item>
+ <item>Override fund</item>
+ <item>Choose funds</item>
+ </content>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>1</rows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="InputFundManagementFee">
+ <help>Investment management
fee for custom fund</help>
+ <size>50,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+<!--
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxListBox"
name="FundAllocations">
+ <size>200,-1</size>
+ <style>wxLB_SINGLE|wxLB_SORT</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>5</cols>
+ <rows>2</rows>
+ <growablecols>3</growablecols>
+ <growablerows>0,1</growablerows>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Change:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="SelectedFund">
+ <style>wxSUNKEN_BORDER</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="SelectedFundAllocation">
+ <size>50,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>%</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxRIGHT|wxTOP|wxBOTTOM</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Default:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="DefaultFund">
+ <style>wxSUNKEN_BORDER</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_TOP|wxLEFT|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="DefaultFundAllocation">
+ <size>50,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+-->
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablecols>0</growablecols>
+ <growablerows>1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Rates by account:</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxTOP|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxCheckBox" name="UseCurrentDeclaredRate">
+ <help>Use current general-account declared rate</help>
+ <label>Use current general-account declared
rate</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <growablecols>0</growablecols>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>General</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry"
name="GeneralAccountRate">
+ <title>General-account interest
rate</title>
+ <help>General-account (non-loaned)
interest rate</help>
+ <size>-1,22</size>
+ <style>wxTE_LEFT</style>
+ </object>
+ </object>
+ <object class="sizeritem">
+
<flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Separate</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxTOP|wxALL</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry"
name="SeparateAccountRate">
+ <title>Separate-account interest
rate</title>
+ <help>Separate-account interest
rate</help>
+ <size>-1,22</size>
+ <style>wxTE_LEFT</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxPanel" name="income_panel">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>2</rows>
+ <growablecols>0</growablecols>
+ <growablerows>1</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_TOP|wxALL</flag>
+ <border>4</border>
+ <object class="wxCheckBox" name="WithdrawToBasisThenLoan">
+ <help>Switch withdrawals to loans after tax basis has been
recovered</help>
+ <help>Switch withdrawals to loans after tax basis has been
recovered</help>
+ <label>Change withdrawals to loans after basis</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <rows>0</rows>
+ <growablecols>1</growablecols>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_TOP|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Withdrawal</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry" name="Withdrawal">
+ <title>Withdrawal amount</title>
+ <help>Withdrawal amount</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxRIGHT</flag>
+ <border>4</border>
+ <object class="wxStaticText">
+ <label>Loan</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <border>2</border>
+ <object class="InputSequenceEntry" name="NewLoan">
+ <title>Loan amount</title>
+ <help>Loan amount</help>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxPanel" name="riders_panel">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <growablerows>0,1,2,3</growablerows>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxCheckBox" name="AccidentalDeathBenefit">
+ <help>Accidental death benefit</help>
+ <label>Elect accidental death and dismemberment</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>4</border>
+ <object class="wxCheckBox" name="WaiverOfPremiumBenefit">
+ <help>Waiver</help>
+ <label>Elect waiver of premium</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxCheckBox" name="ChildRider">
+ <help>Child rider</help>
+ <label>Elect child rider</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Amount</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl" name="ChildRiderAmount">
+ <help>Child rider amount</help>
+ <size>100,-1</size>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <rows>1</rows>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxCheckBox" name="SpouseRider">
+ <help>Spouse rider</help>
+ <label>Elect spouse rider</label>
+ <checked>0</checked>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Amount</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxTextCtrl" name="SpouseRiderAmount">
+ <help>Spouse rider amount</help>
+ <size>100,-1</size>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM</flag>
+ <border>2</border>
+ <object class="wxStaticText">
+ <label>Age</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxALL</flag>
+ <border>2</border>
+ <object class="wxSpinCtrl" name="SpouseIssueAge">
+ <help>Spouse insurance age on date of issue</help>
+ <style>wxSP_ARROW_KEYS</style>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxPanel" name="names_panel">
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <growablecols>0</growablecols>
+ <growablerows>0,1,2</growablerows>
+ <!-- insured -->
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Participant</label>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablecols>1</growablecols>
+ <vgap>2</vgap>
+ <hgap>4</hgap>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>Name</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl" name="InsuredName">
+ <help>Insured full name</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>Address</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl" name="Address">
+ <help>Insured street address</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>City</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <object class="wxBoxSizer">
+ <orient>wxHORIZONTAL</orient>
+ <object class="sizeritem">
+ <option>1</option>
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl" name="City">
+ <help>Insured city</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>State</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxComboBox" name="State">
+ <help>Insured state</help>
+
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+
<content><item>MM</item><item>WW</item></content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>Zip</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxTextCtrl" name="ZipCode">
+ <help>Insured ZIP code</help>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>Employee Class</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl" name="EmployeeClass">
+ <help>Employee Class</help>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <!-- corporation -->
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Sponsor</label>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablecols>1</growablecols>
+ <vgap>2</vgap>
+ <hgap>4</hgap>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>Name</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl" name="CorporationName">
+ <help>Corporation name</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>Address</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl"
name="CorporationAddress">
+ <help>Corporation street address</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>City</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <object class="wxBoxSizer">
+ <orient>wxHORIZONTAL</orient>
+ <object class="sizeritem">
+ <option>1</option>
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl"
name="CorporationCity">
+ <help>Corporation city</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>State</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxComboBox"
name="CorporationState">
+ <help>Corporation state</help>
+
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+
<content><item>MM</item><item>WW</item></content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>Zip</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="CorporationZipCode">
+ <help>Corporation ZIP code</help>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <!-- agent -->
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <object class="wxStaticBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <label>Agent</label>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>2</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablecols>1</growablecols>
+ <vgap>2</vgap>
+ <hgap>4</hgap>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>Name</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl" name="AgentName">
+ <help>Agent full name</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>Address</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl" name="AgentAddress">
+ <help>Agent street address</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxStaticText">
+ <label>City</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW</flag>
+ <object class="wxBoxSizer">
+ <orient>wxHORIZONTAL</orient>
+ <object class="sizeritem">
+ <option>1</option>
+ <flag>wxALIGN_CENTER_VERTICAL</flag>
+ <object class="wxTextCtrl"
name="AgentCity">
+ <help>Agent city</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>State</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxComboBox"
name="AgentState">
+ <help>Agent state</help>
+
<style>wxCB_DROPDOWN|wxCB_READONLY</style>
+
<content><item>MM</item><item>WW</item></content>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>Zip</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="AgentZipCode">
+ <help>Agent ZIP code</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>Phone</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxTextCtrl"
name="AgentPhone">
+ <help>Agent telephone number</help>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>8</border>
+ <object class="wxStaticText">
+ <label>Id</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_CENTER_VERTICAL|wxLEFT</flag>
+ <border>2</border>
+ <object class="wxTextCtrl" name="AgentId">
+ <help>Agent identification code</help>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+<object class="wxDialog" name="dialog_containing_notebook">
+ <title>Let me illustrate...</title>
+ <style>wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU</style>
+ <exstyle>wxDIALOG_EX_CONTEXTHELP|wxWS_EX_VALIDATE_RECURSIVELY</exstyle>
+ <centered>1</centered>
+ <object class="wxFlexGridSizer">
+ <cols>1</cols>
+ <rows>0</rows>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxNotebook" name="input_notebook">
+ <object class="notebookpage">
+ <label>Plan</label>
+ <object_ref ref="plan_panel"/>
+ </object>
+ <object class="notebookpage">
+ <label>Participant</label>
+ <object_ref ref="participant_panel"/>
+ </object>
+ <object class="notebookpage">
+ <label>Solve</label>
+ <object_ref ref="solve_panel"/>
+ </object>
+ <object class="notebookpage">
+ <label>Amounts</label>
+ <object_ref ref="amounts_panel"/>
+ </object>
+ <object class="notebookpage">
+ <label>Funds</label>
+ <object_ref ref="funds_panel"/>
+ </object>
+ <object class="notebookpage">
+ <label>Income</label>
+ <object_ref ref="income_panel"/>
+ </object>
+ <object class="notebookpage">
+ <label>Riders</label>
+ <object_ref ref="riders_panel"/>
+ </object>
+ <object class="notebookpage">
+ <label>Names</label>
+ <object_ref ref="names_panel"/>
+ </object>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxGROW|wxALL</flag>
+ <border>4</border>
+ <object class="wxFlexGridSizer">
+ <cols>2</cols>
+ <growablecols>0</growablecols>
+ <growablerows>0</growablerows>
+ <object class="sizeritem">
+ <border>4</border>
+ <flag>wxGROW|wxRIGHT</flag>
+ <object class="wxStaticText" name="diagnostics">
+ <style>wxSUNKEN_BORDER|wxST_NO_AUTORESIZE</style>
+ <label>[diagnostics]</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALIGN_RIGHT</flag>
+ <object class="wxBoxSizer">
+ <orient>wxVERTICAL</orient>
+ <object class="sizeritem">
+ <flag>wxALL</flag>
+ <object class="wxButton" name="wxID_OK">
+ <label>OK</label>
+ <default>1</default>
+<!-- WX !! 'default' seems not to work all the time, e.g. when a
+notebook panel contains only checkboxes.
+-->
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALL</flag>
+ <object class="wxButton" name="wxID_CANCEL">
+ <label>Cancel</label>
+ </object>
+ </object>
+ <object class="sizeritem">
+ <flag>wxALL</flag>
+ <object class="wxButton" name="wxID_HELP">
+ <label>Help</label>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+</object>
+
+</resource>
diff --git a/stratified_charges.cpp b/stratified_charges.cpp
index 34ef1fc..ad23a1d 100644
--- a/stratified_charges.cpp
+++ b/stratified_charges.cpp
@@ -168,7 +168,7 @@ stratified_charges::stratified_charges()
ascribe_members();
}
-stratified_charges::stratified_charges(std::string const& filename)
+stratified_charges::stratified_charges(fs::path const& filename)
{
ascribe_members();
load(filename);
diff --git a/stratified_charges.hpp b/stratified_charges.hpp
index 4cdde13..3cfc85d 100644
--- a/stratified_charges.hpp
+++ b/stratified_charges.hpp
@@ -25,10 +25,13 @@
#include "config.hpp"
#include "any_member.hpp"
+#include "cache_file_reads.hpp"
#include "mc_enum_type_enums.hpp"
#include "so_attributes.hpp"
#include "xml_serializable.hpp"
+#include <boost/filesystem/path.hpp>
+
#include <string>
#include <vector>
@@ -97,13 +100,14 @@ class LMI_SO stratified_entity final
/// Rates that depend upon the amount they're multiplied by.
class LMI_SO stratified_charges final
- :public xml_serializable <stratified_charges>
- ,public MemberSymbolTable <stratified_charges>
+ :public xml_serializable <stratified_charges>
+ ,public MemberSymbolTable <stratified_charges>
+ ,public cache_file_reads <stratified_charges>
{
friend class TierDocument;
public:
- stratified_charges(std::string const& filename);
+ explicit stratified_charges(fs::path const& filename);
stratified_charges(stratified_charges const&);
~stratified_charges() override = default;
diff --git a/verify_products.cpp b/verify_products.cpp
index 83c4df3..5c2fbc0 100644
--- a/verify_products.cpp
+++ b/verify_products.cpp
@@ -77,8 +77,7 @@ product_verifier::product_verifier
:product_name_ {product_name}
,gender_str_ {gender_str}
,smoking_str_ {smoking_str}
-// ,p_ (product_name)
- ,p_
(*product_data::read_via_cache(product_data::actual_filename(product_name)))
+ ,p_
(*product_data::read_via_cache(filename_from_product_name(product_name)))
,gender_ {mce_gender (gender_str ).value()}
,smoking_ {mce_smoking(smoking_str).value()}
,db0_
diff --git a/version.hpp b/version.hpp
index 770587f..83dd40d 100644
--- a/version.hpp
+++ b/version.hpp
@@ -22,6 +22,6 @@
#include "config.hpp"
-#define LMI_VERSION "20210115T1908Z"
+#define LMI_VERSION "20210122T1709Z"
#endif // version_hpp
- [lmi-commits] [lmi] valyuta/005 updated (9e42155 -> e7a64aa), Greg Chicares, 2021/01/25
- [lmi-commits] [lmi] valyuta/005 e7a64aa 6/6: Resolve some gratuitous incompatibilities with master, Greg Chicares, 2021/01/25
- [lmi-commits] [lmi] valyuta/005 eccb63a 1/6: Rename a function, Greg Chicares, 2021/01/25
- [lmi-commits] [lmi] valyuta/005 b0912f5 5/6: Cache all product files, for illustrations at least, Greg Chicares, 2021/01/25
- [lmi-commits] [lmi] valyuta/005 9660d28 3/6: Change some parameter names for concinnity, Greg Chicares, 2021/01/25
- [lmi-commits] [lmi] valyuta/005 7ad30de 2/6: Reformat, Greg Chicares, 2021/01/25
- [lmi-commits] [lmi] valyuta/005 7454e60 4/6: Import various improvements from 'master',
Greg Chicares <=