diff --git a/src/games/game.h b/src/games/game.h index 39629fed6..b9d174c73 100644 --- a/src/games/game.h +++ b/src/games/game.h @@ -402,6 +402,7 @@ class GameStrategyRep : public std::enable_shared_from_this { template friend class MixedStrategyProfile; template friend class TableMixedStrategyProfileRep; template friend class MixedBehaviorProfile; + friend struct TreeSequenceLayout; bool m_valid{true}; GamePlayerRep *m_player; diff --git a/src/games/gameagg.cc b/src/games/gameagg.cc index 808097be9..54c7e9518 100644 --- a/src/games/gameagg.cc +++ b/src/games/gameagg.cc @@ -20,6 +20,7 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // +#include #include #include "games.h" @@ -90,6 +91,7 @@ template class AGGMixedStrategyProfileRep : public MixedStrategyProfil T GetPayoff(int pl) const override; T GetPayoffDeriv(int pl, const GameStrategy &) const override; T GetPayoffDeriv(int pl, const GameStrategy &, const GameStrategy &) const override; + void GetPayoffDerivBlock(int pl, Vector &p_values, Matrix &p_derivs) const override; }; template T AGGMixedStrategyProfileRep::GetPayoff(int pl) const @@ -168,6 +170,51 @@ T AGGMixedStrategyProfileRep::GetPayoffDeriv(int pl, const GameStrategy &ps1, return g.aggPtr->getMixedPayoff(pl - 1, s); } +// Each row of derivatives comes from a single leave-one-out convolution in the AGG, which is +// available in floating point only; exact computation uses the default. +template +void AGGMixedStrategyProfileRep::GetPayoffDerivBlock(int pl, Vector &p_values, + Matrix &p_derivs) const +{ + if constexpr (!std::is_same_v) { + MixedStrategyProfileRep::GetPayoffDerivBlock(pl, p_values, p_derivs); + } + else { + const auto game = this->m_support.GetGame(); + auto &g = dynamic_cast(*game); + const auto &agg = *g.aggPtr; + std::vector s(agg.getNumActions()); + for (int i = 0; i < agg.getNumPlayers(); ++i) { + for (int j = 0; j < agg.getNumActions(i); ++j) { + const int ind = this->m_profileIndex.at(game->GetPlayer(i + 1)->GetStrategy(j + 1)); + s[agg.firstAction(i) + j] = (ind == -1) ? 0.0 : this->m_probs.GetFlattened()[ind]; + } + } + + const auto player = game->GetPlayer(pl); + const auto &strategies = this->m_support.GetStrategies(player); + p_values = Vector(strategies.size()); + p_derivs = Matrix(strategies.size(), this->m_probs.GetFlattened().size()); + p_derivs = 0.0; + std::vector row(agg.getNumActions()); + size_t r = 1; + for (const auto &strategy : strategies) { + p_values[r] = GetPayoffDeriv(pl, strategy); + g.aggPtr->getPayoffJacobianRow(pl - 1, strategy->GetNumber() - 1, s, row); + for (const auto &other : game->GetPlayers()) { + if (other == player) { + continue; + } + for (const auto &otherStrategy : this->m_support.GetStrategies(other)) { + p_derivs(r, this->m_profileIndex.at(otherStrategy)) = + row[agg.firstAction(other->GetNumber() - 1) + otherStrategy->GetNumber() - 1]; + } + } + r++; + } + } +} + template class AGGMixedStrategyProfileRep; template class AGGMixedStrategyProfileRep; diff --git a/src/games/gamebagg.cc b/src/games/gamebagg.cc index d202c1156..c54f19ed4 100644 --- a/src/games/gamebagg.cc +++ b/src/games/gamebagg.cc @@ -20,7 +20,9 @@ // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // +#include #include +#include #include "games.h" #include "gamebagg.h" @@ -93,6 +95,10 @@ template class BAGGMixedStrategyProfileRep : public MixedStrategyProfi T GetPayoff(int pl) const override; T GetPayoffDeriv(int pl, const GameStrategy &) const override; T GetPayoffDeriv(int pl, const GameStrategy &, const GameStrategy &) const override; + void GetPayoffDerivBlock(int pl, Vector &p_values, Matrix &p_derivs) const override; + +private: + T GetPartialDeriv(int pl, const std::vector &p_strategies) const; }; template T BAGGMixedStrategyProfileRep::GetPayoff(int pl) const @@ -119,84 +125,168 @@ template T BAGGMixedStrategyProfileRep::GetPayoff(int pl) const return g.baggPtr->getMixedPayoff(bplayer, btype, s); } +// The payoff to agent pl is linear in its own mixed strategy and in the mixed strategy each +// other BAGG player induces on its AGG actions, to which each of that player's types t +// contributes with weight P(t); it does not depend on the strategies of the other types of pl's +// own BAGG player. The partial derivative with respect to the probabilities of p_strategies is +// therefore the payoff when each is played for sure (for another BAGG player, by all of its +// types), times the probabilities of the types of the other BAGG players involved. It is zero +// if two of the strategies belong to one BAGG player, or one belongs to another type of pl's. template -T BAGGMixedStrategyProfileRep::GetPayoffDeriv(int pl, const GameStrategy &ps) const +T BAGGMixedStrategyProfileRep::GetPartialDeriv( + int pl, const std::vector &p_strategies) const { - auto &g = dynamic_cast(*(this->m_support.GetGame())); - std::vector s(g.GetStrategies().size()); - int bplayer = -1, btype = -1; - for (int i = 0; i < g.baggPtr->getNumPlayers(); ++i) { - for (int tp = 0; tp < g.baggPtr->getNumTypes(i); ++tp) { - if (pl == g.baggPtr->typeOffset[i] + tp + 1) { - bplayer = i; - btype = tp; - } - if (g.baggPtr->typeOffset[i] + tp + 1 == ps->GetPlayer()->GetNumber()) { - for (unsigned int j = 0; j < g.baggPtr->typeActionSets.at(i).at(tp).size(); ++j) { - s.at(g.baggPtr->firstAction(i, tp) + j) = T(0); - } - s.at(g.baggPtr->firstAction(i, tp) + ps->GetNumber() - 1) = T(1); - } - else { - for (int j = 0; j < g.baggPtr->getNumActions(i, tp); ++j) { - const GameStrategy strategy = this->m_support.GetGame() - ->GetPlayer(g.baggPtr->typeOffset[i] + tp + 1) - ->GetStrategy(j + 1); - const int ind = this->m_profileIndex.at(strategy); - s.at(g.baggPtr->firstAction(i, tp) + j) = - (ind == -1) ? T(0) : this->m_probs.GetFlattened()[ind]; - } + const auto game = this->m_support.GetGame(); + auto &g = dynamic_cast(*game); + const auto &bagg = *g.baggPtr; + auto &agg = *bagg.aggPtr; + const int bplayer = g.agent2baggPlayer[pl] - 1; + const int btype = pl - 1 - bagg.typeOffset[bplayer]; + + int ownAction = -1; + // Each other BAGG player involved, with the AGG action it plays for sure + std::vector> fixed; + T weight(1); + for (const auto &strategy : p_strategies) { + const int agent = strategy->GetPlayer()->GetNumber(); + const int player = g.agent2baggPlayer[agent] - 1; + const int type = agent - 1 - bagg.typeOffset[player]; + if (agent == pl) { + if (ownAction != -1) { + return T(0); } + ownAction = strategy->GetNumber() - 1; + continue; + } + if (player == bplayer || std::any_of(fixed.begin(), fixed.end(), + [&](const auto &f) { return f.first == player; })) { + return T(0); + } + fixed.emplace_back(player, + agg.firstAction(player) + + bagg.typeAction2ActionIndex[player][type][strategy->GetNumber() - 1]); + if constexpr (std::is_same_v) { + weight *= static_cast(bagg.exactIndepTypeDist[player][type]); + } + else { + weight *= bagg.indepTypeDist[player][type]; } } - return g.baggPtr->getMixedPayoff(bplayer, btype, s); + + std::vector s(bagg.strategyOffset[bagg.getNumTypes()]); + for (int k = 1, offset = 0; k <= bagg.getNumTypes(); k++) { + for (const auto &strategy : game->GetPlayer(k)->GetStrategies()) { + const int ind = this->m_profileIndex.at(strategy); + s[offset++] = (ind == -1) ? T(0) : this->m_probs.GetFlattened()[ind]; + } + } + + std::vector as(agg.getNumActions()); + T value(0); + for (int action = 0; action < bagg.getNumActions(bplayer, btype); action++) { + const T prob = (ownAction == -1) ? s[bagg.firstAction(bplayer, btype) + action] + : T((action == ownAction) ? 1 : 0); + if (prob <= T(0)) { + continue; + } + bagg.getAGGStrat(as, s, bplayer, btype, action); + for (const auto &[player, index] : fixed) { + std::fill(as.begin() + agg.firstAction(player), + as.begin() + agg.firstAction(player) + agg.getNumActions(player), T(0)); + as[index] = T(1); + } + value += prob * agg.getV(bplayer, bagg.typeAction2ActionIndex[bplayer][btype][action], as); + } + return (fixed.empty()) ? value : weight * value; +} + +template +T BAGGMixedStrategyProfileRep::GetPayoffDeriv(int pl, const GameStrategy &ps) const +{ + return GetPartialDeriv(pl, {ps}); } template T BAGGMixedStrategyProfileRep::GetPayoffDeriv(int pl, const GameStrategy &ps1, const GameStrategy &ps2) const { - const auto player1 = ps1->GetPlayer().get(); - const auto player2 = ps2->GetPlayer().get(); - if (player1 == player2) { - return T(0); - } + return GetPartialDeriv(pl, {ps1, ps2}); +} - auto &g = dynamic_cast(*(this->m_support.GetGame())); - std::vector s(g.GetStrategies().size()); - int bplayer = -1, btype = -1; - for (int i = 0; i < g.baggPtr->getNumPlayers(); ++i) { - for (int tp = 0; tp < g.baggPtr->getNumTypes(i); ++tp) { - if (pl == g.baggPtr->typeOffset[i] + tp + 1) { - bplayer = i; - btype = tp; +// See GetPartialDeriv. The derivative with respect to an action b of type tq of another BAGG +// player j is P(tq) times the payoff when j plays b's AGG action for sure, which is one entry of +// a row of the AGG payoff Jacobian. The Jacobian row is available in floating point only; exact +// computation uses the default. +template +void BAGGMixedStrategyProfileRep::GetPayoffDerivBlock(int pl, Vector &p_values, + Matrix &p_derivs) const +{ + if constexpr (!std::is_same_v) { + MixedStrategyProfileRep::GetPayoffDerivBlock(pl, p_values, p_derivs); + } + else { + const auto game = this->m_support.GetGame(); + const auto &bagg = *dynamic_cast(*game).baggPtr; + auto &agg = *bagg.aggPtr; + const int numAgents = bagg.getNumTypes(); + + // The BAGG strategy vector, and the profile position of each of its entries (-1 if the + // strategy is not in the support); agent k's strategies start at strategyOffset[k - 1] + std::vector s(bagg.strategyOffset[numAgents]); + std::vector column(s.size()); + for (int k = 1; k <= numAgents; k++) { + int offset = bagg.strategyOffset[k - 1]; + for (const auto &strategy : game->GetPlayer(k)->GetStrategies()) { + const int ind = this->m_profileIndex.at(strategy); + s[offset] = (ind == -1) ? 0.0 : this->m_probs.GetFlattened()[ind]; + column[offset++] = ind; } + } - if (g.baggPtr->typeOffset[i] + tp + 1 == player1->GetNumber()) { - for (unsigned int j = 0; j < g.baggPtr->typeActionSets.at(i).at(tp).size(); ++j) { - s.at(g.baggPtr->firstAction(i, tp) + j) = T(0); - } - s.at(g.baggPtr->firstAction(i, tp) + ps1->GetNumber() - 1) = T(1); - } - else if (g.baggPtr->typeOffset[i] + tp + 1 == player2->GetNumber()) { - for (int j = 0; j < g.baggPtr->getNumActions(i, tp); ++j) { - s.at(g.baggPtr->firstAction(i, tp) + j) = T(0); + int bplayer = 0; + while (bagg.typeOffset[bplayer + 1] < pl) { + bplayer++; + } + const int btype = pl - 1 - bagg.typeOffset[bplayer]; + std::vector as(agg.getNumActions()); + bagg.getAGGStrat(as, s, bplayer, btype, 0); + const int ownFirst = agg.firstAction(bplayer); + const auto &ownActions = bagg.typeAction2ActionIndex[bplayer][btype]; + as[ownFirst + ownActions[0]] = 0.0; + + const auto &strategies = this->m_support.GetStrategies(game->GetPlayer(pl)); + p_values = Vector(strategies.size()); + p_derivs = Matrix(strategies.size(), this->m_probs.GetFlattened().size()); + p_derivs = 0.0; + std::vector row(agg.getNumActions()); + size_t r = 1; + for (const auto &strategy : strategies) { + const int action = ownActions[strategy->GetNumber() - 1]; + as[ownFirst + action] = 1.0; + const double value = agg.getV(bplayer, action, as); + p_values[r] = value; + agg.getPayoffJacobianRow(bplayer, action, as, row); + as[ownFirst + action] = 0.0; + + for (int j = 0; j < bagg.getNumPlayers(); j++) { + if (j == bplayer) { + continue; } - s.at(g.baggPtr->firstAction(i, tp) + ps2->GetNumber() - 1) = T(1); - } - else { - for (unsigned int j = 0; j < g.baggPtr->typeActionSets.at(i).at(tp).size(); ++j) { - const GameStrategy strategy = this->m_support.GetGame() - ->GetPlayer(g.baggPtr->typeOffset[i] + tp + 1) - ->GetStrategy(j + 1); - const int ind = this->m_profileIndex.at(strategy); - s.at(g.baggPtr->firstAction(i, tp) + j) = - (ind == -1) ? T(0) : this->m_probs.GetFlattened()[ind]; + const double *payoffs = row.data() + agg.firstAction(j); + for (int tq = 0; tq < bagg.getNumTypes(j); tq++) { + const int first = bagg.strategyOffset[bagg.typeOffset[j] + tq]; + const auto &actions = bagg.typeAction2ActionIndex[j][tq]; + const double weight = bagg.indepTypeDist[j][tq]; + for (int b = 0; b < bagg.getNumActions(j, tq); b++) { + if (column[first + b] != -1) { + p_derivs(r, column[first + b]) = weight * payoffs[actions[b]]; + } + } } } + r++; } } - return g.baggPtr->getMixedPayoff(bplayer, btype, s); } template class BAGGMixedStrategyProfileRep; diff --git a/src/games/gametable.cc b/src/games/gametable.cc index 9bbc14118..0e0dfe2f3 100644 --- a/src/games/gametable.cc +++ b/src/games/gametable.cc @@ -21,8 +21,10 @@ // #include +#include #include "games.h" +#include "core/lazy.h" #include "gametable.h" #include "writer.h" @@ -84,176 +86,97 @@ PureStrategyProfile GameTableRep::NewPureStrategyProfile() const std::const_pointer_cast(shared_from_this()))); } -//======================================================================== -// TableMixedStrategyProfileRep -//======================================================================== - -template class ProductDistribution { -public: - using index_type = long; - using prob_type = T; - using value_type = std::pair; - - class iterator { - public: - using iterator_category = std::forward_iterator_tag; - using difference_type = std::ptrdiff_t; - using value_type = std::pair; - using reference = value_type; - using pointer = void; - - iterator() = default; - - iterator(const SegmentedVector &probs, const SegmentedArray &offsets, size_t skip1, - size_t skip2, bool end) - : m_probs(&probs), m_offsets(&offsets), m_done(end) - { - if (m_done) { - return; - } - - const size_t P = m_probs->GetShape().size(); - - // Build active dimension list - for (size_t p = 1; p <= P; ++p) { - if (p != skip1 && p != skip2) { - m_dims.push_back(p); - } - } - - m_K = m_dims.size(); - - m_digit.assign(m_K, 0); - m_radix.assign(m_K, 0); - m_cum_prob.assign(m_K + 1, T{}); - - // initialise radices - for (size_t j = 0; j < m_K; ++j) { - const size_t p = m_dims[j]; - m_radix[j] = m_probs->segment(p).size(); - if (m_radix[j] == 0) { - m_done = true; - return; - } - } - - // initial recompute - recompute_from(0); - advance_to_next_nonzero(); +template GameTableRep::PayoffTable GameTableRep::BuildPayoffTable() const +{ + PayoffTable table(m_players.size(), std::vector(m_results.size())); + for (size_t pl = 0; pl < m_players.size(); pl++) { + const GamePlayer player = m_players[pl]; + auto &payoffs = table[pl]; + for (size_t index = 0; index < m_results.size(); index++) { + payoffs[index] = m_results[index]->GetPayoff(player); } + } + return table; +} - reference operator*() const { return {m_index, m_cum_prob[m_K]}; } - - iterator &operator++() - { - if (m_done) { - return *this; - } +template <> +std::shared_ptr> +GameTableRep::GetPayoffTable() const +{ + const std::scoped_lock lock(m_payoffTableMutex); + if (!m_doublePayoffs || m_doublePayoffsVersion != GetVersion()) { + m_doublePayoffs = std::make_shared>(BuildPayoffTable()); + m_doublePayoffsVersion = GetVersion(); + } + return m_doublePayoffs; +} - // increment odometer - size_t j = 0; - for (; j < m_K; ++j) { - if (++m_digit[j] < m_radix[j]) { - break; - } - m_digit[j] = 0; - } +template <> +std::shared_ptr> +GameTableRep::GetPayoffTable() const +{ + const std::scoped_lock lock(m_payoffTableMutex); + if (!m_rationalPayoffs || m_rationalPayoffsVersion != GetVersion()) { + m_rationalPayoffs = + std::make_shared>(BuildPayoffTable()); + m_rationalPayoffsVersion = GetVersion(); + } + return m_rationalPayoffs; +} - if (j == m_K) { - m_done = true; - return *this; - } +//======================================================================== +// TableMixedStrategyProfileRep +//======================================================================== - recompute_from(j); - advance_to_next_nonzero(); - return *this; +/// Visit each contingency of the strategies of all players other than p_skip1 and p_skip2 (player +/// numbers, or 0) which has positive probability under p_probs, calling p_visit(index, prob) with +/// its position in the table and its probability. Contingencies are visited with the strategy +/// of the lowest-numbered player varying fastest; each probability is the product of the +/// players' probabilities in order of player number. +template +void ForEachContingency(const SegmentedVector &p_probs, const SegmentedArray &p_offsets, + size_t p_skip1, size_t p_skip2, Visit p_visit) +{ + std::vector probs; + std::vector offsets; + std::vector radix; + for (size_t pl = 1; pl <= p_probs.GetShape().size(); pl++) { + if (pl == p_skip1 || pl == p_skip2) { + continue; } - - iterator operator++(int) - { - iterator tmp = *this; - ++(*this); - return tmp; + const auto segment = p_probs.segment(pl); + if (segment.empty()) { + return; } + probs.push_back(segment.data()); + offsets.push_back(p_offsets.segment(pl).data()); + radix.push_back(segment.size()); + } - bool operator==(const iterator &other) const { return m_done == other.m_done; } - - private: - void recompute_from(size_t j0) - { - m_index = 0; - m_cum_prob[0] = T{1}; - - for (size_t j = 0; j < m_K; ++j) { - const size_t p = m_dims[j]; - const size_t d = m_digit[j] + 1; - - const T pi = m_probs->segment(p)[d]; - m_cum_prob[j + 1] = m_cum_prob[j] * pi; - m_index += m_offsets->segment(p)[d]; - } + const size_t numActive = probs.size(); + std::vector digit(numActive, 0); + while (true) { + T prob{1}; + long index = 0; + for (size_t k = 0; k < numActive; k++) { + prob *= probs[k][digit[k]]; + index += offsets[k][digit[k]]; } - - void advance_to_next_nonzero() - { - while (!m_done && m_cum_prob[m_K] == T{0}) { - size_t j = 0; - for (; j < m_K; ++j) { - if (++m_digit[j] < m_radix[j]) { - break; - } - m_digit[j] = 0; - } - - if (j == m_K) { - m_done = true; - return; - } - - recompute_from(j); + if (prob != T{0}) { + p_visit(index, prob); + } + size_t k = 0; + for (; k < numActive; k++) { + if (++digit[k] < radix[k]) { + break; } + digit[k] = 0; + } + if (k == numActive) { + return; } - - const SegmentedVector *m_probs{nullptr}; - const SegmentedArray *m_offsets{nullptr}; - - std::vector m_dims; // active player numbers - size_t m_K{0}; - bool m_done{true}; - - std::vector m_digit; - std::vector m_radix; - std::vector m_cum_prob; - index_type m_index{0}; - }; - - ProductDistribution(const SegmentedVector &probs, const SegmentedArray &offsets) - : m_probs(probs), m_offsets(offsets), m_skip1(0), m_skip2(0) - { - } - - ProductDistribution(const SegmentedVector &probs, const SegmentedArray &offsets, - size_t skip1) - : m_probs(probs), m_offsets(offsets), m_skip1(skip1), m_skip2(0) - { - } - - ProductDistribution(const SegmentedVector &probs, const SegmentedArray &offsets, - size_t skip1, size_t skip2) - : m_probs(probs), m_offsets(offsets), m_skip1(skip1), m_skip2(skip2) - { } - - iterator begin() const { return iterator(m_probs, m_offsets, m_skip1, m_skip2, false); } - - iterator end() const { return iterator(m_probs, m_offsets, m_skip1, m_skip2, true); } - -private: - const SegmentedVector &m_probs; - const SegmentedArray &m_offsets; - size_t m_skip1; - size_t m_skip2; -}; +} template class TableMixedStrategyProfileRep : public MixedStrategyProfileRep { public: @@ -268,6 +191,20 @@ template class TableMixedStrategyProfileRep : public MixedStrategyProf T GetPayoffDeriv(int pl, const GameStrategy &) const override; bool GetPayoffDerivs(int pl, Vector &p_derivs) const override; T GetPayoffDeriv(int pl, const GameStrategy &, const GameStrategy &) const override; + void GetPayoffDerivBlock(int pl, Vector &p_values, Matrix &p_derivs) const override; + +private: + Lazy>> m_payoffTable; + + /// The payoffs to player p_player (a player number) in every contingency + const std::vector &GetPayoffs(int p_player) const + { + const auto &table = m_payoffTable.Get([this] { + return dynamic_cast(*this->GetSupport().GetGame()) + .template GetPayoffTable(); + }); + return (*table)[p_player - 1]; + } }; template @@ -278,46 +215,37 @@ std::unique_ptr> TableMixedStrategyProfileRep::Cop template T TableMixedStrategyProfileRep::GetPayoff(int pl) const { - const auto game = this->GetSupport().GetGame(); - auto &g = dynamic_cast(*game); - const auto player = game->GetPlayer(pl); + const auto &payoffs = GetPayoffs(pl); T value{0}; - for (auto [index, prob] : ProductDistribution(this->m_probs, this->m_offsets)) { - value += prob * g.m_results[index]->template GetPayoff(player); - } + ForEachContingency(this->m_probs, this->m_offsets, 0, 0, + [&](long index, const T &prob) { value += prob * payoffs[index]; }); return value; } template T TableMixedStrategyProfileRep::GetPayoffDeriv(int pl, const GameStrategy &strategy) const { - const auto game = this->GetSupport().GetGame(); - auto &g = dynamic_cast(*game); - auto base_index = this->StrategyOffset(strategy); - const auto player = game->GetPlayer(pl); + const auto &payoffs = GetPayoffs(pl); + const long base = this->StrategyOffset(strategy); T value{0}; - for (auto [index, prob] : ProductDistribution(this->m_probs, this->m_offsets, - strategy->GetPlayer()->GetNumber())) { - value += prob * g.m_results[base_index + index]->template GetPayoff(player); - } + ForEachContingency(this->m_probs, this->m_offsets, strategy->GetPlayer()->GetNumber(), 0, + [&](long index, const T &prob) { value += prob * payoffs[base + index]; }); return value; } template bool TableMixedStrategyProfileRep::GetPayoffDerivs(int pl, Vector &p_derivs) const { - const auto game = this->GetSupport().GetGame(); - auto &g = dynamic_cast(*game); - const auto player = game->GetPlayer(pl); + const auto &payoffs = GetPayoffs(pl); p_derivs = T{0}; - auto segment = this->m_offsets.segment(pl); - for (auto [index, prob] : ProductDistribution(this->m_probs, this->m_offsets, pl)) { - auto deriv_it = p_derivs.begin(); - for (const auto base_index : segment) { - *deriv_it += prob * g.m_results[base_index + index]->template GetPayoff(player); - ++deriv_it; - } - } + const auto segment = this->m_offsets.segment(pl); + ForEachContingency(this->m_probs, this->m_offsets, pl, 0, [&](long index, const T &prob) { + auto deriv = p_derivs.begin(); + for (const long base : segment) { + *deriv += prob * payoffs[base + index]; + ++deriv; + } + }); return true; } @@ -328,19 +256,102 @@ T TableMixedStrategyProfileRep::GetPayoffDeriv(int pl, const GameStrategy &st if (strategy1->GetPlayer() == strategy2->GetPlayer()) { return T{0}; } - const auto game = this->GetSupport().GetGame(); - auto &g = dynamic_cast(*game); - auto base_index = this->StrategyOffset(strategy1) + this->StrategyOffset(strategy2); - const auto player = game->GetPlayer(pl); + const auto &payoffs = GetPayoffs(pl); + const long base = this->StrategyOffset(strategy1) + this->StrategyOffset(strategy2); T value{0}; - for (auto [index, prob] : - ProductDistribution(this->m_probs, this->m_offsets, strategy1->GetPlayer()->GetNumber(), - strategy2->GetPlayer()->GetNumber())) { - value += prob * g.m_results[base_index + index]->template GetPayoff(player); - } + ForEachContingency(this->m_probs, this->m_offsets, strategy1->GetPlayer()->GetNumber(), + strategy2->GetPlayer()->GetNumber(), + [&](long index, const T &prob) { value += prob * payoffs[base + index]; }); return value; } +// Visits every contingency of the other players once. Each contribution is formed and +// accumulated in the same order as when the payoffs and derivatives are computed separately: +// for a derivative with respect to a strategy of player j, the probability is the product, +// in order of player number, of the probabilities of the players other than pl and j. +template +void TableMixedStrategyProfileRep::GetPayoffDerivBlock(int pl, Vector &p_values, + Matrix &p_derivs) const +{ + const auto &payoffs = GetPayoffs(pl); + const auto &shape = this->m_probs.GetShape(); + const size_t length = this->m_probs.GetFlattened().size(); + const auto own = this->m_offsets.segment(pl); + const size_t numOwn = own.size(); + + std::vector probs; + std::vector offsets; + std::vector radix, firstColumn; + bool empty = false; + for (size_t player = 1, column = 1; player <= shape.size(); column += shape[player++]) { + if (std::cmp_equal(player, pl)) { + continue; + } + const auto segment = this->m_probs.segment(player); + empty = empty || segment.empty(); + probs.push_back(segment.data()); + offsets.push_back(this->m_offsets.segment(player).data()); + radix.push_back(segment.size()); + firstColumn.push_back(column); + } + + std::vector values(numOwn, T{0}); + std::vector derivs(numOwn * length, T{0}); // row-major, columns from 0 + const size_t numActive = probs.size(); + std::vector digit(numActive, 0); + std::vector factor(numActive); + while (!empty) { + long index = 0; + for (size_t k = 0; k < numActive; k++) { + factor[k] = probs[k][digit[k]]; + index += offsets[k][digit[k]]; + } + T prob{1}; + for (size_t k = 0; k < numActive; k++) { + prob *= factor[k]; + } + if (prob != T{0}) { + for (size_t r = 0; r < numOwn; r++) { + values[r] += prob * payoffs[own.data()[r] + index]; + } + } + for (size_t j = 0; j < numActive; j++) { + T others{1}; + for (size_t k = 0; k < numActive; k++) { + if (k != j) { + others *= factor[k]; + } + } + if (others == T{0}) { + continue; + } + const size_t column = firstColumn[j] + digit[j] - 1; + for (size_t r = 0; r < numOwn; r++) { + derivs[r * length + column] += others * payoffs[own.data()[r] + index]; + } + } + size_t k = 0; + for (; k < numActive; k++) { + if (++digit[k] < radix[k]) { + break; + } + digit[k] = 0; + } + if (k == numActive) { + break; + } + } + + p_values = Vector(numOwn); + p_derivs = Matrix(numOwn, length); + for (size_t r = 0; r < numOwn; r++) { + p_values[r + 1] = values[r]; + for (size_t c = 0; c < length; c++) { + p_derivs(r + 1, c + 1) = derivs[r * length + c]; + } + } +} + template class TableMixedStrategyProfileRep; template class TableMixedStrategyProfileRep; diff --git a/src/games/gametable.h b/src/games/gametable.h index b684c9221..05219eed8 100644 --- a/src/games/gametable.h +++ b/src/games/gametable.h @@ -23,6 +23,8 @@ #ifndef GAMBIT_GAMES_GAMETABLE_H #define GAMBIT_GAMES_GAMETABLE_H +#include + #include "gameexpl.h" namespace Gambit { @@ -35,9 +37,22 @@ class GameTableRep : public GameExplicitRep { template friend class MixedStrategyProfile; template friend class TableMixedStrategyProfileRep; +public: + /// Payoffs of every contingency, by player (indexed from 0), stored contiguously in the order + /// of the contingencies of the table + template using PayoffTable = std::vector>; + private: std::vector m_results; + // The payoff tables derived from the outcomes, and the versions of the game they describe + mutable std::mutex m_payoffTableMutex; + mutable std::shared_ptr> m_doublePayoffs; + mutable std::shared_ptr> m_rationalPayoffs; + mutable unsigned int m_doublePayoffsVersion{0}, m_rationalPayoffsVersion{0}; + + template PayoffTable BuildPayoffTable() const; + /// @name Private auxiliary functions //@{ /// Rebuild the outcome table after the strategies of p_player have changed. @@ -70,6 +85,10 @@ class GameTableRep : public GameExplicitRep { //@{ bool IsConstSum() const override; + /// Returns the payoffs of every contingency for the current version of the game, as type T + /// (double or Rational). The table is shared by all callers until the game is next modified. + template std::shared_ptr> GetPayoffTable() const; + /// Returns the smallest payoff to the player in any play of the game Rational GetPlayerMinPayoff(const GamePlayer &) const override; /// Returns the largest payoff to the player in any play of the game diff --git a/src/games/gametree.cc b/src/games/gametree.cc index 639125f9c..7bb4bc2f6 100644 --- a/src/games/gametree.cc +++ b/src/games/gametree.cc @@ -29,6 +29,7 @@ #include #include #include +#include #include #include "games.h" @@ -61,7 +62,8 @@ std::unique_ptr> TreeMixedStrategyProfileRep::Copy template void TreeMixedStrategyProfileRep::MakeBehavior() const { if (m_mixedBehavior == nullptr) { - m_mixedBehavior = std::make_shared>(MixedStrategyProfile(Copy())); + m_mixedBehavior = + std::make_shared>(MixedStrategyProfile(this->Normalize())); } } @@ -70,10 +72,19 @@ template void TreeMixedStrategyProfileRep::OnProfileChanged() const m_mixedBehavior = nullptr; } +// The behavior profile is realization-equivalent to the normalized profile, so its payoff is +// scaled by each player's total probability. This gives the payoff as the multilinear function +// of the probabilities that the other representations compute, of which GetPayoffDeriv then +// gives the partial derivatives. template T TreeMixedStrategyProfileRep::GetPayoff(int pl) const { MakeBehavior(); - return m_mixedBehavior->GetPayoff(m_mixedBehavior->GetGame()->GetPlayer(pl)); + T payoff = m_mixedBehavior->GetPayoff(m_mixedBehavior->GetGame()->GetPlayer(pl)); + for (size_t player = 1; player <= this->m_probs.GetShape().size(); player++) { + const auto probs = std::as_const(this->m_probs).segment(player); + payoff *= std::accumulate(probs.begin(), probs.end(), static_cast(0)); + } + return payoff; } template @@ -97,6 +108,184 @@ T TreeMixedStrategyProfileRep::GetPayoffDeriv(int pl, const GameStrategy &str return tmp.GetPayoff(pl); } +/// The sequence of each player at each node of a tree with perfect recall, and the sequences each +/// reduced strategy is consistent with. A player's sequence at a node is the player's last action +/// on the path to it, numbered from 1 among that player's actions in the order of the +/// TreeLayout; 0 is the empty sequence. A strategy is consistent with the empty sequence and with +/// each action it chooses. +struct TreeSequenceLayout { + std::shared_ptr tree; + bool perfectRecall; + std::vector numSequences; ///< by player + std::vector nodeSequences; ///< numPlayers per node + /// by player, then strategy in the order of GamePlayerRep::GetStrategies() + std::vector>> strategySequences; + + explicit TreeSequenceLayout(const GameRep &p_game) + : tree(p_game.GetTreeLayout()), perfectRecall(p_game.IsPerfectRecall()), + numSequences(tree->numPlayers, 1) + { + if (!perfectRecall) { + return; + } + const size_t numPlayers = tree->numPlayers; + std::vector sequenceOfAction(tree->numActions + 1, 0); + std::vector playerOfAction(tree->numActions + 1, -1); + for (size_t i = 0; i < tree->numPersonalInfosets; i++) { + const auto &infoset = tree->infosets[i]; + for (size_t a = 0; a < infoset.numActions; a++) { + playerOfAction[infoset.firstAction + a] = infoset.player; + sequenceOfAction[infoset.firstAction + a] = numSequences[infoset.player]++; + } + } + nodeSequences.resize(tree->parent.size() * numPlayers, 0); + for (size_t node = 1; node < tree->parent.size(); node++) { + std::copy_n(nodeSequences.begin() + tree->parent[node] * numPlayers, numPlayers, + nodeSequences.begin() + node * numPlayers); + if (const size_t action = tree->action[node]; action != 0) { + nodeSequences[node * numPlayers + playerOfAction[action]] = sequenceOfAction[action]; + } + } + for (const auto &player : p_game.GetPlayers()) { + auto &sequences = strategySequences.emplace_back(); + for (const auto &strategy : player->GetStrategies()) { + auto &consistent = sequences.emplace_back(1, 0); + for (const auto &[infoset, action] : strategy->m_behav) { + if (action > 0) { + consistent.push_back( + sequenceOfAction[tree->infosets[tree->infosetIndex.at(infoset)].firstAction + + action - 1]); + } + } + } + } + } +}; + +// The payoff is the sum over nodes of the probability chance leads to the node, times the payoff +// of the outcome there, times the probability of each player's sequence at the node, which is the +// total probability of the strategies consistent with it. The payoff to a strategy s of player +// i, and its derivative with respect to the probability of a strategy t of player j, therefore +// sum, over the sequences of i consistent with s (and of j consistent with t), quantities +// accumulated over the nodes where those are the players' sequences. +template +void TreeMixedStrategyProfileRep::GetPayoffDerivBlock(int pl, Vector &p_values, + Matrix &p_derivs) const +{ + const auto game = this->m_support.GetGame(); + if (!m_sequences || m_sequences->tree != game->GetTreeLayout()) { + m_sequences = std::make_shared(*game); + } + const auto &layout = *m_sequences; + if (!layout.perfectRecall) { + MixedStrategyProfileRep::GetPayoffDerivBlock(pl, p_values, p_derivs); + return; + } + const auto &tree = *layout.tree; + const auto &numbers = tree.template GetNumbers(); + const size_t numPlayers = tree.numPlayers; + const size_t numNodes = tree.parent.size(); + const size_t self = pl - 1; + + // Probability of each sequence of each player + std::vector> seqProbs(numPlayers); + for (size_t k = 0; k < numPlayers; k++) { + seqProbs[k].assign(layout.numSequences[k], static_cast(0)); + const auto player = game->GetPlayer(k + 1); + for (const auto &strategy : this->m_support.GetStrategies(player)) { + const T &prob = this->m_probs.GetFlattened()[this->m_profileIndex.at(strategy)]; + for (const size_t sequence : layout.strategySequences[k][strategy->GetNumber() - 1]) { + seqProbs[k][sequence] += prob; + } + } + } + + // Accumulate over nodes, by the sequence of the player (values) and by the sequences of the + // player and of each other player (derivatives) + const size_t numOwn = layout.numSequences[self]; + std::vector ownValues(numOwn, static_cast(0)); + std::vector> pairValues(numPlayers); + for (size_t j = 0; j < numPlayers; j++) { + if (j != self) { + pairValues[j].assign(numOwn * layout.numSequences[j], static_cast(0)); + } + } + std::vector chance(numNodes); + for (size_t node = 0; node < numNodes; node++) { + chance[node] = + (node == 0) ? numbers.chanceProb[0] : chance[tree.parent[node]] * numbers.chanceProb[node]; + const T &payoff = numbers.payoffs[node * numPlayers + self]; + if (payoff == static_cast(0) || chance[node] == static_cast(0)) { + continue; + } + const size_t *sequences = layout.nodeSequences.data() + node * numPlayers; + const T base = chance[node] * payoff; + T all = base; + for (size_t k = 0; k < numPlayers; k++) { + if (k != self) { + all *= seqProbs[k][sequences[k]]; + } + } + ownValues[sequences[self]] += all; + for (size_t j = 0; j < numPlayers; j++) { + if (j == self) { + continue; + } + T others = base; + for (size_t k = 0; k < numPlayers; k++) { + if (k != self && k != j) { + others *= seqProbs[k][sequences[k]]; + } + } + pairValues[j][sequences[self] * layout.numSequences[j] + sequences[j]] += others; + } + } + + const auto player = game->GetPlayer(pl); + const auto &strategies = this->m_support.GetStrategies(player); + const auto &ownSequences = layout.strategySequences[self]; + p_values = Vector(strategies.size()); + p_derivs = Matrix(strategies.size(), this->m_probs.GetFlattened().size()); + p_derivs = static_cast(0); + size_t row = 1; + for (const auto &strategy : strategies) { + T value = static_cast(0); + for (const size_t sequence : ownSequences[strategy->GetNumber() - 1]) { + value += ownValues[sequence]; + } + p_values[row++] = value; + } + + // For each strategy t of another player j, sum over t's sequences for each sequence of the + // player, then over each of the player's strategies' sequences + std::vector byOwnSequence(numOwn); + for (size_t j = 0; j < numPlayers; j++) { + if (j == self) { + continue; + } + const size_t numOther = layout.numSequences[j]; + for (const auto &other : this->m_support.GetStrategies(game->GetPlayer(j + 1))) { + const auto &otherSequences = layout.strategySequences[j][other->GetNumber() - 1]; + for (size_t q = 0; q < numOwn; q++) { + T sum = static_cast(0); + for (const size_t sequence : otherSequences) { + sum += pairValues[j][q * numOther + sequence]; + } + byOwnSequence[q] = sum; + } + const int column = this->m_profileIndex.at(other); + row = 1; + for (const auto &strategy : strategies) { + T deriv = static_cast(0); + for (const size_t sequence : ownSequences[strategy->GetNumber() - 1]) { + deriv += byOwnSequence[sequence]; + } + p_derivs(row++, column) = deriv; + } + } + } +} + template class TreeMixedStrategyProfileRep; template class TreeMixedStrategyProfileRep; diff --git a/src/games/gametree.h b/src/games/gametree.h index 89f825638..1f41111ee 100644 --- a/src/games/gametree.h +++ b/src/games/gametree.h @@ -889,6 +889,8 @@ class GameTreeRep final : public GameExplicitRep { const std::vector &); }; +struct TreeSequenceLayout; + template class TreeMixedStrategyProfileRep : public MixedStrategyProfileRep { public: explicit TreeMixedStrategyProfileRep(const StrategySupportProfile &p_support) @@ -902,9 +904,11 @@ template class TreeMixedStrategyProfileRep : public MixedStrategyProfi T GetPayoff(int pl) const override; T GetPayoffDeriv(int pl, const GameStrategy &) const override; T GetPayoffDeriv(int pl, const GameStrategy &, const GameStrategy &) const override; + void GetPayoffDerivBlock(int pl, Vector &p_values, Matrix &p_derivs) const override; private: mutable std::shared_ptr> m_mixedBehavior; + mutable std::shared_ptr m_sequences; void MakeBehavior() const; void OnProfileChanged() const override; diff --git a/src/games/stratmixed.cc b/src/games/stratmixed.cc index 99660b9f6..a5ebae5ef 100644 --- a/src/games/stratmixed.cc +++ b/src/games/stratmixed.cc @@ -241,6 +241,33 @@ MixedStrategyProfile PureStrategyProfileRep::ToMixedStrategyProfile() return temp; } +template +void MixedStrategyProfileRep::GetPayoffDerivBlock(int pl, Vector &p_values, + Matrix &p_derivs) const +{ + const auto game = m_support.GetGame(); + const auto player = game->GetPlayer(pl); + const auto &strategies = m_support.GetStrategies(player); + const size_t length = m_probs.GetFlattened().size(); + p_values = Vector(strategies.size()); + p_derivs = Matrix(strategies.size(), length); + p_derivs = T{0}; + size_t row = 1; + for (const auto &strategy : strategies) { + p_values[row] = GetPayoffDeriv(pl, strategy); + size_t column = 1; + for (const auto &other : game->GetPlayers()) { + for (const auto &otherStrategy : m_support.GetStrategies(other)) { + if (other != player) { + p_derivs(row, column) = GetPayoffDeriv(pl, strategy, otherStrategy); + } + column++; + } + } + row++; + } +} + template class MixedStrategyProfileRep; template class MixedStrategyProfileRep; diff --git a/src/games/stratmixed.h b/src/games/stratmixed.h index 1eb70a23e..2cf650efb 100644 --- a/src/games/stratmixed.h +++ b/src/games/stratmixed.h @@ -26,6 +26,7 @@ #include #include +#include "core/matrix.h" #include "core/vector.h" #include "core/segment.h" #include "games/game.h" @@ -105,6 +106,10 @@ template class MixedStrategyProfileRep { virtual T GetPayoffDeriv(int pl, const GameStrategy &) const = 0; virtual bool GetPayoffDerivs(int pl, Vector &p_derivs) const { return false; } virtual T GetPayoffDeriv(int pl, const GameStrategy &, const GameStrategy &) const = 0; + /// Computes the payoffs of the strategies of player pl, and their derivatives with respect to + /// the probabilities of the strategies of the other players; see + /// MixedStrategyProfile::GetPayoffDerivBlock. The default computes each derivative separately. + virtual void GetPayoffDerivBlock(int pl, Vector &p_values, Matrix &p_derivs) const; T GetPayoff(const GamePlayer &p_player) const { return GetPayoff(p_player->GetNumber()); } T GetPayoff(const GameStrategy &p_strategy) const @@ -311,6 +316,22 @@ template class MixedStrategyProfile { return GetPayoffDeriv(p_strategy->GetPlayer()->GetNumber(), p_strategy); } + /// @brief Computes the payoffs of a player's strategies and their derivatives + /// @details For each strategy of \p p_player in the support, computes the payoff to playing + /// it against the profile, and the derivatives of that payoff with respect to the + /// probabilities of the strategies of the other players. + /// @param[in] p_player The player whose strategies are evaluated + /// @param[out] p_values Resized to one entry per strategy of the player in the support + /// @param[out] p_derivs Resized to one row per strategy of the player in the support and one + /// column per position in the profile; columns of the player's own + /// strategies are zero + void GetPayoffDerivBlock(const GamePlayer &p_player, Vector &p_values, + Matrix &p_derivs) const + { + CheckVersion(); + m_rep->GetPayoffDerivBlock(p_player->GetNumber(), p_values, p_derivs); + } + /// @brief Computes the regret to playing \p p_strategy /// @details Computes the regret to the player of playing strategy \p p_strategy /// against the profile. The regret is defined as the difference diff --git a/src/pygambit/gambit.pxd b/src/pygambit/gambit.pxd index 001ef6ec2..ca9124c15 100644 --- a/src/pygambit/gambit.pxd +++ b/src/pygambit/gambit.pxd @@ -501,6 +501,12 @@ cdef extern from "util.h": stdvector[stdvector[double]] ProfileDiffActionValues( c_MixedBehaviorProfile[double] ) except + + double PayoffDerivBlockDiscrepancy( + c_MixedStrategyProfile[double], stdvector[c_GameStrategy] + ) except + + double PayoffDerivFiniteDifferenceDiscrepancy( + c_MixedStrategyProfile[double], double + ) except + void setitem_array_int "setitem"(Array[int] *, int, int) except + void setitem_array_number "setitem"(Array[c_Number], int, c_Number) except + diff --git a/src/pygambit/stratmixed.pxi b/src/pygambit/stratmixed.pxi index b082ac735..6b329e5d9 100644 --- a/src/pygambit/stratmixed.pxi +++ b/src/pygambit/stratmixed.pxi @@ -602,6 +602,21 @@ class MixedStrategyProfile: class MixedStrategyProfileDouble(MixedStrategyProfile): profile = cython.declare(shared_ptr[c_MixedStrategyProfile[double]]) + def _payoff_deriv_block_discrepancy(self, removed: list[tuple[str, str]]) -> float: + # Private, for testing: the largest discrepancy between the payoff derivative blocks of + # the players and the same quantities computed one at a time, on the support without + # the strategies `removed`, given as (player label, strategy label) pairs. + game: Game = self.game + cdef stdvector[c_GameStrategy] handles + for player, label in removed: + handles.push_back(game._resolve_strategy(player, label, "_payoff_deriv_block")) + return PayoffDerivBlockDiscrepancy(deref(self.profile), handles) + + def _payoff_deriv_finite_difference_discrepancy(self, step: float) -> float: + # Private, for testing: the largest discrepancy between the partial derivatives of + # payoffs and central differences of the payoffs with the given step. + return PayoffDerivFiniteDifferenceDiscrepancy(deref(self.profile), step) + @staticmethod @cython.cfunc def wrap(profile: shared_ptr[c_MixedStrategyProfile[float]]) -> MixedStrategyProfileDouble: diff --git a/src/pygambit/util.h b/src/pygambit/util.h index 46633afad..d9524eff0 100644 --- a/src/pygambit/util.h +++ b/src/pygambit/util.h @@ -26,6 +26,8 @@ // classes easier. // +#include +#include #include #include #include @@ -133,6 +135,88 @@ ProfileDiffActionValues(const MixedBehaviorProfile &p_profile) return result; } +/// Largest absolute difference, over every player, between the payoffs and derivatives given by +/// MixedStrategyProfile::GetPayoffDerivBlock and the same quantities computed one at a time. +/// The profile checked is on the support of p_profile's game with p_removed taken out, with the +/// probabilities of the remaining strategies taken from p_profile. Private, for testing. +inline double PayoffDerivBlockDiscrepancy(const MixedStrategyProfile &p_profile, + const std::vector &p_removed) +{ + const Game game = p_profile.GetGame(); + StrategySupportProfile support(game); + for (const auto &strategy : p_removed) { + support.RemoveStrategy(strategy); + } + auto profile = support.NewMixedStrategyProfile(); + for (const auto &player : game->GetPlayers()) { + for (const auto &strategy : support.GetStrategies(player)) { + profile[strategy] = p_profile[strategy]; + } + } + double worst = 0.0; + Vector values; + Matrix derivs; + for (const auto &player : game->GetPlayers()) { + profile.GetPayoffDerivBlock(player, values, derivs); + size_t row = 1; + for (const auto &strategy : support.GetStrategies(player)) { + worst = std::max(worst, std::abs(values[row] - profile.GetPayoff(strategy))); + size_t column = 1; + for (const auto &other : game->GetPlayers()) { + for (const auto &otherStrategy : support.GetStrategies(other)) { + const double expected = + (other == player) + ? 0.0 + : profile.GetPayoffDeriv(player->GetNumber(), strategy, otherStrategy); + worst = std::max(worst, std::abs(derivs(row, column) - expected)); + column++; + } + } + row++; + } + } + return worst; +} + +/// Returns the largest discrepancy between the partial derivatives of payoffs computed by +/// GetPayoffDeriv and central differences of the payoffs, perturbing one probability at a time +/// by p_step without renormalising. Private, for testing. +inline double PayoffDerivFiniteDifferenceDiscrepancy(const MixedStrategyProfile &p_profile, + double p_step) +{ + const Game game = p_profile.GetGame(); + auto profile = p_profile; + auto difference = [&](const GameStrategy &p_wrt, auto p_payoff) { + const double prob = profile[p_wrt]; + profile[p_wrt] = prob + p_step; + const double above = p_payoff(); + profile[p_wrt] = prob - p_step; + const double below = p_payoff(); + profile[p_wrt] = prob; + return (above - below) / (2.0 * p_step); + }; + double worst = 0.0; + for (const auto &player : game->GetPlayers()) { + for (const auto &wrt : game->GetStrategies()) { + const double expected = difference(wrt, [&]() { return profile.GetPayoff(player); }); + worst = + std::max(worst, std::abs(profile.GetPayoffDeriv(player->GetNumber(), wrt) - expected)); + } + for (const auto &strategy : player->GetStrategies()) { + for (const auto &wrt : game->GetStrategies()) { + if (wrt->GetPlayer() == player) { + continue; + } + const double expected = difference(wrt, [&]() { return profile.GetPayoff(strategy); }); + worst = + std::max(worst, std::abs(profile.GetPayoffDeriv(player->GetNumber(), strategy, wrt) - + expected)); + } + } + } + return worst; +} + template std::list> make_list_of_pointer(const std::list &p_list) { std::list> result; diff --git a/src/solvers/hp/hpsystem.cc b/src/solvers/hp/hpsystem.cc index 3f590b0b8..d704bdef9 100644 --- a/src/solvers/hp/hpsystem.cc +++ b/src/solvers/hp/hpsystem.cc @@ -33,11 +33,6 @@ class HPEquation { virtual double Value(const Vector &point, const MixedStrategyProfile ¤t_sigma, const std::vector &payoffs_against_prior) const = 0; - - virtual void Gradient(const Vector &point, - const MixedStrategyProfile ¤t_sigma, - const std::vector &payoffs_against_prior, - Vector &gradient) const = 0; }; namespace { @@ -83,46 +78,6 @@ class BestResponseEquation final : public HPEquation { return v_i + lambda - mu; } - - void Gradient(const Vector &point, const MixedStrategyProfile ¤t_sigma, - const std::vector &payoffs_against_prior, - Vector &gradient) const override - { - gradient = 0.0; - const double t = point[1]; - const GamePlayer my_player = m_strategy->GetPlayer(); - const Game game = m_strategy->GetGame(); - - // Derivative wrt t: - const double payoff_vs_sigma = current_sigma.GetPayoff(m_strategy); - const double payoff_vs_prior = payoffs_against_prior[m_flat_s_idx]; - gradient[1] = payoff_vs_sigma - payoff_vs_prior; - - // Derivative wrt mu_i: - gradient[m_mu_idx] = -1.0; - - // Derivatives wrt all alphas: - int alpha_col = 2; - for (const auto &player2 : game->GetPlayers()) { - for (const auto &strat2 : player2->GetStrategies()) { - const double alpha2 = point[alpha_col]; - - if (my_player == player2) { - if (m_strategy == strat2) { - gradient[alpha_col] = AlphaToLambdaDeriv(alpha2); - } - } - else { - // Chain rule for opposing players' strategies - const double deriv_u = - current_sigma.GetPayoffDeriv(my_player->GetNumber(), m_strategy, strat2); - const double deriv_sigma = AlphaToSigmaDeriv(alpha2); - gradient[alpha_col] = t * deriv_u * deriv_sigma; - } - alpha_col++; - } - } - } }; // Eq (b): Probability Sum Equation @@ -147,17 +102,6 @@ class ProbabilitySumEquation final : public HPEquation { } return sum_sigma - 1.0; } - - void Gradient(const Vector &point, const MixedStrategyProfile ¤t_sigma, - const std::vector &payoffs_against_prior, - Vector &gradient) const override - { - gradient = 0.0; - // Only non-zero derivatives are those with respect to the player's own alphas - for (int i = m_first_alpha_idx; i < m_last_alpha_idx; ++i) { - gradient[i] = AlphaToSigmaDeriv(point[i]); - } - } }; } // end namespace @@ -214,13 +158,34 @@ void HPEquationSystem::GetJacobian(const Vector &point, Matrix & // Update internal mutable state UpdateSigma(point); + // Rows of p_jac are variables (t, then alpha for each strategy, then mu for each player); + // columns are equations: for each player, a best response equation for each strategy, then + // that the player's probabilities sum to one. Variable 1 + k is the alpha of the strategy at + // position k of the profile. + const double t = point[1]; p_jac = 0.0; - Vector column(point.size()); // Temp vector matching Jacobian column size - - // Compute the Jacobian - for (size_t i = 1; i <= m_equations.size(); ++i) { - m_equations[i - 1]->Gradient(point, m_current_sigma, m_payoffs_against_prior, column); - p_jac.SetColumn(i, column); + size_t column = 1; + size_t first = 1; // position in the profile of the current player's first strategy + int mu_row = 2 + m_star; + for (const auto &player : m_game->GetPlayers()) { + m_current_sigma.GetPayoffDerivBlock(player, m_blockValues, m_blockDerivs); + const size_t last = first + m_blockValues.size() - 1; + for (size_t r = 1; r <= m_blockValues.size(); r++, column++) { + p_jac(1, column) = m_blockValues[r] - m_payoffs_against_prior[first + r - 2]; + for (size_t k = 1; k <= m_blockDerivs.NumColumns(); k++) { + if (k < first || k > last) { + p_jac(1 + k, column) = t * m_blockDerivs(r, k) * AlphaToSigmaDeriv(point[1 + k]); + } + } + p_jac(first + r, column) = AlphaToLambdaDeriv(point[first + r]); + p_jac(mu_row, column) = -1.0; + } + for (size_t k = first; k <= last; k++) { + p_jac(1 + k, column) = AlphaToSigmaDeriv(point[1 + k]); + } + column++; + mu_row++; + first = last + 1; } } diff --git a/src/solvers/hp/hpsystem.h b/src/solvers/hp/hpsystem.h index 3f3db28ba..c6b410a46 100644 --- a/src/solvers/hp/hpsystem.h +++ b/src/solvers/hp/hpsystem.h @@ -51,6 +51,9 @@ class HPEquationSystem { std::vector m_payoffs_against_prior; int m_star; mutable MixedStrategyProfile m_current_sigma; + // Payoffs of one player's strategies and their derivatives, reused across players + mutable Vector m_blockValues; + mutable Matrix m_blockDerivs; std::vector> m_equations; void UpdateSigma(const Vector &point) const; diff --git a/src/solvers/logit/nfglogit.cc b/src/solvers/logit/nfglogit.cc index 314c2b5fd..3eda407c4 100644 --- a/src/solvers/logit/nfglogit.cc +++ b/src/solvers/logit/nfglogit.cc @@ -84,10 +84,6 @@ class Equation { virtual double Value(const MixedStrategyProfile &p_profile, const MixedStrategyProfile &p_logProfile, const Vector &p_strategyValues, double p_lambda) const = 0; - virtual void Gradient(const MixedStrategyProfile &p_profile, - const Vector &p_strategyValues, - const Matrix &p_strategyDerivs, double p_lambda, - Vector &p_gradient) const = 0; }; class SumToOneEquation final : public Equation { @@ -115,9 +111,6 @@ class SumToOneEquation final : public Equation { double Value(const MixedStrategyProfile &p_profile, const MixedStrategyProfile &p_logProfile, const Vector &p_strategyValues, double p_lambda) const override; - void Gradient(const MixedStrategyProfile &p_profile, - const Vector &p_strategyValues, const Matrix &p_strategyDerivs, - double p_lambda, Vector &p_gradient) const override; }; double SumToOneEquation::Value(const MixedStrategyProfile &p_profile, @@ -131,17 +124,6 @@ double SumToOneEquation::Value(const MixedStrategyProfile &p_profile, return value; } -void SumToOneEquation::Gradient(const MixedStrategyProfile &p_profile, - const Vector &p_strategyValues, - const Matrix &p_strategyDerivs, double p_lambda, - Vector &p_gradient) const -{ - p_gradient = 0.0; - for (int col = m_firstIndex; col < m_lastIndex; col++) { - p_gradient[col] = p_profile[col]; - } -} - class RatioEquation final : public Equation { Game m_game; GamePlayer m_player; @@ -169,9 +151,6 @@ class RatioEquation final : public Equation { double Value(const MixedStrategyProfile &p_profile, const MixedStrategyProfile &p_logProfile, const Vector &p_strategyValues, double p_lambda) const override; - void Gradient(const MixedStrategyProfile &p_profile, - const Vector &p_strategyValues, const Matrix &p_strategyDerivs, - double p_lambda, Vector &p_gradient) const override; }; double RatioEquation::Value(const MixedStrategyProfile &p_profile, @@ -182,34 +161,6 @@ double RatioEquation::Value(const MixedStrategyProfile &p_profile, p_lambda * (p_strategyValues[m_strategyIndex] - p_strategyValues[m_refStrategyIndex]); } -void RatioEquation::Gradient(const MixedStrategyProfile &p_profile, - const Vector &p_strategyValues, - const Matrix &p_strategyDerivs, double p_lambda, - Vector &p_gradient) const -{ - int col = 1; - for (const auto &player : m_game->GetPlayers()) { - for (const auto &strategy : player->GetStrategies()) { - if (strategy == m_refStrategy) { - p_gradient[col] = -1.0; - } - else if (strategy == m_strategy) { - p_gradient[col] = 1.0; - } - else if (player == m_player) { - p_gradient[col] = 0.0; - } - else { - p_gradient[col] = - -p_lambda * p_profile[col] * - (p_strategyDerivs(m_strategyIndex, col) - p_strategyDerivs(m_refStrategyIndex, col)); - } - col++; - } - } - p_gradient[col] = p_strategyValues[m_refStrategyIndex] - p_strategyValues[m_strategyIndex]; -} - class EquationSystem { public: explicit EquationSystem(const Game &p_game); @@ -223,14 +174,15 @@ class EquationSystem { Game m_game; mutable MixedStrategyProfile m_profile, m_logProfile; mutable Vector m_strategyValues; - mutable Matrix m_strategyDerivs; + // Payoffs of one player's strategies and their derivatives, reused across players + mutable Vector m_blockValues; + mutable Matrix m_blockDerivs; }; EquationSystem::EquationSystem(const Game &p_game) : m_game(p_game), m_profile(p_game->NewMixedStrategyProfile(0.0)), m_logProfile(p_game->NewMixedStrategyProfile(0.0)), - m_strategyValues(m_profile.MixedProfileLength()), - m_strategyDerivs(m_profile.MixedProfileLength(), m_profile.MixedProfileLength()) + m_strategyValues(m_profile.MixedProfileLength()) { m_equations.reserve(m_profile.MixedProfileLength()); for (const auto &player : m_game->GetPlayers()) { @@ -258,26 +210,34 @@ void EquationSystem::GetValue(const Vector &p_point, Vector &p_l void EquationSystem::GetJacobian(const Vector &p_point, Matrix &p_jac) const { + // Rows of p_jac are variables (log probabilities, then lambda); columns are equations: for + // each player, that their probabilities sum to one, then one for each strategy but the first + // relating its log probability to that of the first. PointToProfile(m_profile, p_point); const double lambda = p_point.back(); - Vector column(p_point.size()); - m_strategyDerivs = 0.0; - int row = 1; - for (const auto &strategy1 : m_game->GetStrategies()) { - m_strategyValues[row] = m_profile.GetPayoff(strategy1); - int col = 1; - for (const auto &strategy2 : m_game->GetStrategies()) { - if (strategy1->GetPlayer() != strategy2->GetPlayer()) { - m_strategyDerivs(row, col) = - m_profile.GetPayoffDeriv(strategy1->GetPlayer()->GetNumber(), strategy1, strategy2); + const size_t length = p_point.size() - 1; + p_jac = 0.0; + size_t column = 1; + size_t first = 1; // position in the profile of the current player's first strategy + for (const auto &player : m_game->GetPlayers()) { + m_profile.GetPayoffDerivBlock(player, m_blockValues, m_blockDerivs); + const size_t last = first + m_blockValues.size() - 1; + for (size_t var = first; var <= last; var++) { + p_jac(var, column) = m_profile[var]; + } + column++; + for (size_t r = 2; r <= m_blockValues.size(); r++, column++) { + for (size_t var = 1; var <= length; var++) { + if (var < first || var > last) { + p_jac(var, column) = + -lambda * m_profile[var] * (m_blockDerivs(r, var) - m_blockDerivs(1, var)); + } } - col++; + p_jac(first + r - 1, column) = 1.0; + p_jac(first, column) = -1.0; + p_jac(length + 1, column) = m_blockValues[1] - m_blockValues[r]; } - row++; - } - for (size_t i = 1; i <= m_equations.size(); i++) { - m_equations[i - 1]->Gradient(m_profile, m_strategyValues, m_strategyDerivs, lambda, column); - p_jac.SetColumn(i, column); + first = last + 1; } } diff --git a/tests/test_games/golden_logit/strategy_agg_2x2.json b/tests/test_games/golden_logit/strategy_agg_2x2.json new file mode 100644 index 000000000..7732205b4 --- /dev/null +++ b/tests/test_games/golden_logit/strategy_agg_2x2.json @@ -0,0 +1,45 @@ +{ + "counts": [{"predictor_attempts": 39, "accepted_steps": 39, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 77, "function_evals": 77, "jacobian_evals": 40, "factorizations": 40}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5], + [0.00109028013333371, 0.4925063625415017, 0.5074936374592074, 0.4925063625415017, 0.5074936374592074], + [0.0022449455763905732, 0.48426911358557934, 0.5157308864156755, 0.48426911358557934, 0.5157308864156755], + [0.0034638956134596154, 0.47522289824108344, 0.5247771017611331, 0.4752228982410834, 0.5247771017611331], + [0.004746393538401489, 0.46530018001414364, 0.5346998199897595, 0.46530018001414364, 0.5346998199897595], + [0.006091044730108623, 0.4544326098830486, 0.5455673901237984, 0.4544326098830486, 0.5455673901237984], + [0.007495811139873084, 0.4425529766071393, 0.5574470234048131, 0.4425529766071393, 0.5574470234048131], + [0.008958074300716103, 0.4295978575866298, 0.5704021424341008, 0.4295978575866298, 0.5704021424341008], + [0.010474759291733696, 0.41551107148667843, 0.5844889285489807, 0.41551107148667843, 0.5844889285489807], + [0.012042530906074937, 0.400247986960658, 0.5997520131000318, 0.400247986960658, 0.5997520131000318], + [0.013658069985494061, 0.38378065636217235, 0.6162193437397339, 0.38378065636217235, 0.6162193437397339], + [0.015318432036371744, 0.36610361405095215, 0.6338963861172897, 0.36610361405095215, 0.6338963861172897], + [0.017021481809883353, 0.34724001072165245, 0.6527599895503645, 0.34724001072165245, 0.6527599895503645], + [0.018766387263877318, 0.3272475691436809, 0.6727524312851475, 0.3272475691436809, 0.6727524312851475], + [0.02055414596901362, 0.3062236821341447, 0.6937763185219986, 0.3062236821341446, 0.6937763185219986], + [0.022388109175559657, 0.2843088822617334, 0.7156911187082506, 0.2843088822617334, 0.7156911187082506], + [0.024274466197358895, 0.26168794274920004, 0.7383120586304093, 0.26168794274920015, 0.7383120586304094], + [0.026222656313378077, 0.23858804242177156, 0.76141195945935, 0.23858804242177162, 0.7614119594593499], + [0.028245686770387475, 0.21527372357872615, 0.7847262788733642, 0.21527372357872618, 0.7847262788733642], + [0.03036035094777762, 0.19203872788354637, 0.8079612751662462, 0.19203872788354637, 0.8079612751662462], + [0.03258735586914679, 0.16919513090374635, 0.830804872711152, 0.16919513090374635, 0.830804872711152], + [0.03495137857050843, 0.14706044600393836, 0.8529395580765964, 0.14706044600393836, 0.8529395580765965], + [0.037481073676014186, 0.12594350986110003, 0.8740564945235016, 0.12594350986110003, 0.8740564945235016], + [0.04020904986138329, 0.10613001568679942, 0.8938699887952903, 0.10613001568679942, 0.8938699887952903], + [0.04317182307984373, 0.08786857035511886, 0.9121314339992153, 0.08786857035511886, 0.9121314339992153], + [0.04640974326838137, 0.071358156443073, 0.9286418475701483, 0.071358156443073, 0.9286418475701483], + [0.04996688285355172, 0.0567378908070579, 0.9432621126925701, 0.0567378908070579, 0.9432621126925701], + [0.053890873411716354, 0.04407996528363863, 0.9559200375927748, 0.04407996528363863, 0.9559200375927748], + [0.05823268404566523, 0.033386584693293364, 0.966613417523848, 0.033386584693293364, 0.9666134175238481], + [0.06304635263573839, 0.02459152748818222, 0.9754084741044066, 0.02459152748818222, 0.9754084741044067], + [0.068388707892864, 0.017566605131662732, 0.9824333959263092, 0.017566605131662732, 0.9824333959263092], + [0.07431915134291082, 0.012132785026904739, 0.9878672156173249, 0.012132785026904739, 0.9878672156173249], + [0.08089959519940872, 0.008075120126728192, 0.991924880229231, 0.008075120126728199, 0.991924880229231], + [0.08819466279859474, 0.005160006064022627, 0.9948399941124311, 0.005160006064022631, 0.9948399941124312], + [0.09627224190063531, 0.0031528154799280615, 0.9968471845975737, 0.0031528154799280615, 0.9968471845975737], + [0.10520443329918848, 0.0018337934319326476, 0.9981662065978203, 0.0018337934319326476, 0.9981662065978203], + [0.1150688654328125, 0.0010103386441864272, 0.998989661365651, 0.0010103386441864272, 0.9989896613656509], + [0.125950270774324, 0.0005244390676560289, 0.999475560935101, 0.0005244390676560289, 0.9994755609351009], + [0.1379421693361008, 0.0002549446552760654, 0.9997450553453676, 0.0002549446552760654, 0.9997450553453676], + [0.1511485004484567, 0.00011531130928214537, 0.9998846906527274, 0.00011531130928214537, 0.9998846906527274] + ] +} diff --git a/tests/test_games/golden_logit/strategy_bagg_coffee_3_2_2_3.json b/tests/test_games/golden_logit/strategy_bagg_coffee_3_2_2_3.json new file mode 100644 index 000000000..f5c3bb0ab --- /dev/null +++ b/tests/test_games/golden_logit/strategy_bagg_coffee_3_2_2_3.json @@ -0,0 +1,111 @@ +{ + "counts": [{"predictor_attempts": 105, "accepted_steps": 105, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 210, "function_evals": 210, "jacobian_evals": 106, "factorizations": 106}], + "points": [ + [0.0, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285, 0.14285714285714285], + [0.00032744687862415434, 0.14421839830992525, 0.14240382283840283, 0.14240534083101097, 0.14343103733724769, 0.14256841310733911, 0.14285057390594624, 0.14212241367012982, 0.14431299804142872, 0.14250110437807817, 0.14225178121023652, 0.14262905314412133, 0.1425852674148561, 0.14317715614439708, 0.14254263966688452, 0.14421839830992525, 0.14240382283840283, 0.14240534083101097, 0.14343103733724769, 0.14256841310733911, 0.14285057390594624, 0.14212241367012982, 0.14431299804142872, 0.14250110437807817, 0.14225178121023652, 0.14262905314412133, 0.1425852674148561, 0.14317715614439708, 0.14254263966688452, 0.14421839830992525, 0.14240382283840283, 0.14240534083101097, 0.14343103733724769, 0.14256841310733911, 0.14285057390594624, 0.14212241367012982, 0.14431299804142872, 0.14250110437807817, 0.14225178121023652, 0.14262905314412133, 0.1425852674148561, 0.14317715614439708, 0.14254263966688452], + [0.0006873348537744884, 0.1457266266001927, 0.14191380005735188, 0.14190284399005915, 0.14406111771783225, 0.14224916534257342, 0.14283383281526568, 0.1413126134767284, 0.14592761127237325, 0.14210009000203477, 0.14157648411712995, 0.14237536558160388, 0.14228821133759637, 0.14352620313702216, 0.14220603455224426, 0.1457266266001927, 0.14191380005735188, 0.14190284399005915, 0.14406111771783225, 0.14224916534257342, 0.14283383281526568, 0.1413126134767284, 0.14592761127237325, 0.14210009000203477, 0.14157648411712995, 0.14237536558160388, 0.14228821133759637, 0.14352620313702216, 0.14220603455224426, 0.1457266266001927, 0.14191380005735188, 0.14190284399005915, 0.14406111771783225, 0.14224916534257342, 0.14283383281526568, 0.1413126134767284, 0.14592761127237325, 0.14210009000203477, 0.14157648411712995, 0.14237536558160388, 0.14228821133759637, 0.14352620313702216, 0.14220603455224426], + [0.0010828046340225694, 0.14739865419009054, 0.14138527439470436, 0.14134348496037305, 0.14475255568107015, 0.14189606031538657, 0.14280388370894065, 0.140420086749441, 0.1477194649252233, 0.14164760096253534, 0.14082248624387034, 0.14209292960304443, 0.14196396297112193, 0.14390654275352202, 0.14184701254069088, 0.14739865419009054, 0.14138527439470439, 0.14134348496037305, 0.14475255568107015, 0.1418960603153866, 0.14280388370894068, 0.140420086749441, 0.1477194649252233, 0.14164760096253534, 0.14082248624387034, 0.14209292960304443, 0.14196396297112193, 0.14390654275352202, 0.14184701254069088, 0.14739865419009054, 0.14138527439470436, 0.14134348496037305, 0.14475255568107015, 0.14189606031538657, 0.14280388370894065, 0.140420086749441, 0.1477194649252233, 0.14164760096253534, 0.14082248624387034, 0.14209292960304443, 0.14196396297112193, 0.14390654275352202, 0.14184701254069088], + [0.0015172756914620343, 0.1492533759494827, 0.1408166722391968, 0.1407202740926748, 0.14551087790879685, 0.14150538448017003, 0.14275696732744347, 0.1394364480022469, 0.14970936710920135, 0.14113607080419022, 0.1399798560203877, 0.14177815529983745, 0.14161043892716021, 0.14432051396233753, 0.14146559787690063, 0.1492533759494827, 0.1408166722391968, 0.1407202740926748, 0.14551087790879685, 0.14150538448017003, 0.14275696732744347, 0.1394364480022469, 0.14970936710920135, 0.14113607080419022, 0.1399798560203877, 0.14177815529983745, 0.14161043892716021, 0.1443205139623375, 0.1414655978769006, 0.1492533759494827, 0.1408166722391968, 0.1407202740926748, 0.14551087790879685, 0.14150538448017003, 0.14275696732744347, 0.13943644800224683, 0.14970936710920135, 0.14113607080419022, 0.1399798560203877, 0.14177815529983745, 0.14161043892716021, 0.14432051396233753, 0.14146559787690063], + [0.001994462120639058, 0.15131201727273175, 0.1402067563061901, 0.14002528473932557, 0.14634194350543764, 0.1410730108120481, 0.14268844724074115, 0.13835254012354697, 0.15192075356413795, 0.14055667838286207, 0.13903735226991967, 0.1414269441063694, 0.14122550919137095, 0.1447705080733179, 0.1410622544120494, 0.15131201727273177, 0.1402067563061901, 0.14002528473932557, 0.1463419435054377, 0.1410730108120481, 0.14268844724074115, 0.138352540123547, 0.15192075356413795, 0.14055667838286207, 0.13903735226991967, 0.1414269441063694, 0.14122550919137095, 0.1447705080733179, 0.1410622544120494, 0.15131201727273175, 0.1402067563061901, 0.14002528473932555, 0.14634194350543764, 0.1410730108120481, 0.14268844724074115, 0.13835254012354697, 0.15192075356413795, 0.14055667838286207, 0.13903735226991967, 0.1414269441063694, 0.14122550919137095, 0.1447705080733179, 0.1410622544120494], + [0.00251838609360408, 0.1535984233283602, 0.13955476389524893, 0.13924952481006833, 0.14725189874566375, 0.14059435742621942, 0.14259262837397987, 0.1371584034204981, 0.15438002075286664, 0.13989913108700222, 0.13798227491354068, 0.1410346078673143, 0.14080703191439303, 0.1452589283946946, 0.14063800507023821, 0.15359842332836018, 0.13955476389524893, 0.13924952481006833, 0.14725189874566372, 0.1405943574262194, 0.14259262837397987, 0.1371584034204981, 0.15438002075286664, 0.13989913108700222, 0.13798227491354068, 0.1410346078673143, 0.14080703191439303, 0.1452589283946946, 0.14063800507023821, 0.1535984233283602, 0.13955476389524893, 0.13924952481006833, 0.14725189874566375, 0.14059435742621942, 0.14259262837397987, 0.13715840342049812, 0.15438002075286664, 0.13989913108700222, 0.13798227491354065, 0.1410346078673143, 0.14080703191439303, 0.1452589283946946, 0.14063800507023821], + [0.003093387419130994, 0.1561393740009976, 0.1388605791119194, 0.13838279472446502, 0.14824709996729024, 0.14006434466346004, 0.1424625452633831, 0.13584326226855528, 0.15711688766954024, 0.13915141644931067, 0.13680031651248728, 0.14059577457268024, 0.14035289986752733, 0.14578813286938044, 0.1401945720591644, 0.1561393740009976, 0.1388605791119194, 0.13838279472446502, 0.14824709996729024, 0.14006434466346004, 0.1424625452633831, 0.13584326226855528, 0.15711688766954024, 0.13915141644931067, 0.13680031651248728, 0.14059577457268024, 0.14035289986752733, 0.14578813286938044, 0.1401945720591644, 0.1561393740009976, 0.1388605791119194, 0.13838279472446502, 0.14824709996729024, 0.14006434466346004, 0.1424625452633831, 0.13584326226855528, 0.15711688766954024, 0.13915141644931067, 0.13680031651248728, 0.14059577457268024, 0.14035289986752733, 0.14578813286938044, 0.1401945720591644], + [0.0037241272542397927, 0.15896492054780106, 0.13812494501220055, 0.13741353297666278, 0.14933399243539258, 0.13947735157214441, 0.14228971863914833, 0.13439553881678007, 0.1601647802619844, 0.13829952216573185, 0.13547542558666528, 0.14010427899292943, 0.13986110049361403, 0.14636035381398155, 0.13973453868525937, 0.15896492054780106, 0.13812494501220055, 0.13741353297666278, 0.14933399243539258, 0.13947735157214441, 0.14228971863914833, 0.13439553881678007, 0.16016478026198436, 0.13829952216573185, 0.13547542558666528, 0.14010427899292943, 0.13986110049361403, 0.14636035381398155, 0.13973453868525937, 0.15896492054780106, 0.13812494501220055, 0.13741353297666278, 0.14933399243539258, 0.13947735157214441, 0.14228971863914833, 0.13439553881678007, 0.16016478026198436, 0.13829952216573185, 0.13547542558666528, 0.14010427899292943, 0.13986110049361403, 0.14636035381398155, 0.13973453868525937], + [0.0044155834755810345, 0.1621087362611568, 0.13734972173445453, 0.1363286522447679, 0.15051892925443786, 0.13882717295682503, 0.14206388112808468, 0.1328029064205119, 0.1635612269670523, 0.13732712779863257, 0.13398969846744807, 0.1395530365376179, 0.13932979112363453, 0.14697758690425386, 0.1392615322016659, 0.1621087362611568, 0.13734972173445453, 0.1363286522447679, 0.15051892925443786, 0.13882717295682503, 0.14206388112808468, 0.1328029064205119, 0.1635612269670523, 0.13732712779863257, 0.13398969846744807, 0.1395530365376179, 0.13932979112363453, 0.14697758690425386, 0.1392615322016659, 0.1621087362611568, 0.13734972173445453, 0.1363286522447679, 0.15051892925443786, 0.13882717295682503, 0.14206388112808468, 0.1328029064205119, 0.1635612269670523, 0.13732712779863257, 0.13398969846744807, 0.1395530365376179, 0.13932979112363453, 0.14697758690425386, 0.1392615322016659], + [0.005173034640215607, 0.1656084682701626, 0.13653819619334925, 0.13511337151789396, 0.15180790989541643, 0.1381069782602952, 0.14177267654163847, 0.13105239932168508, 0.16734824622920733, 0.13621527674021808, 0.13232332422371415, 0.13893389898239117, 0.13875739005631174, 0.1476414389820879, 0.1387804247866325, 0.1656084682701626, 0.13653819619334925, 0.13511337151789396, 0.15180790989541643, 0.1381069782602952, 0.14177267654163847, 0.13105239932168508, 0.16734824622920733, 0.13621527674021808, 0.13232332422371415, 0.13893389898239117, 0.13875739005631174, 0.1476414389820879, 0.1387804247866325, 0.1656084682701626, 0.13653819619334925, 0.13511337151789396, 0.15180790989541643, 0.1381069782602952, 0.14177267654163847, 0.13105239932168508, 0.16734824622920733, 0.13621527674021808, 0.13232332422371415, 0.13893389898239117, 0.13875739005631174, 0.1476414389820879, 0.1387804247866325], + [0.006002028930915031, 0.16950607086018885, 0.1356954474674129, 0.1337510533171215, 0.15320621275673565, 0.13730927329774972, 0.14140134291829717, 0.12913059938331234, 0.1715726966035201, 0.1349420451257862, 0.13045461711039175, 0.13823749138546537, 0.1381426825509733, 0.14835292101918077, 0.13829754620572457, 0.16950607086018885, 0.1356954474674129, 0.1337510533171215, 0.15320621275673563, 0.13730927329774972, 0.14140134291829717, 0.12913059938331234, 0.1715726966035201, 0.1349420451257862, 0.13045461711039175, 0.13823749138546537, 0.1381426825509733, 0.14835292101918077, 0.13829754620572457, 0.16950607086018885, 0.1356954474674129, 0.1337510533171215, 0.15320621275673565, 0.13730927329774972, 0.14140134291829717, 0.12913059938331234, 0.1715726966035201, 0.1349420451257862, 0.13045461711039175, 0.13823749138546537, 0.1381426825509733, 0.14835292101918077, 0.13829754620572457], + [0.006908334140784823, 0.17384809244494692, 0.13482876917017264, 0.1322230599725208, 0.15471789076278558, 0.13642586493279374, 0.1409323977972189, 0.12702392492108494, 0.17628654701344268, 0.133482236140402, 0.1283601827918853, 0.13745303070482165, 0.13748493805969533, 0.14911216865542556, 0.13782089663626163, 0.17384809244494692, 0.13482876917017264, 0.1322230599725208, 0.15471789076278558, 0.13642586493279374, 0.1409323977972189, 0.12702392492108494, 0.1762865470134427, 0.133482236140402, 0.12836018279188535, 0.13745303070482168, 0.13748493805969536, 0.14911216865542562, 0.13782089663626165, 0.17384809244494692, 0.13482876917017264, 0.1322230599725208, 0.15471789076278558, 0.13642586493279374, 0.1409323977972189, 0.12702392492108494, 0.17628654701344268, 0.133482236140402, 0.1283601827918853, 0.13745303070482165, 0.13748493805969533, 0.14911216865542556, 0.13782089663626163], + [0.00789786485023348, 0.17868587921611628, 0.1339481453759965, 0.1305086492111877, 0.15634509408164385, 0.13544782666804003, 0.14034535553481167, 0.12471904991504866, 0.1815470094707366, 0.13180714421258488, 0.12601527726236456, 0.1365681285150912, 0.1367840309434336, 0.14991806829148305, 0.13736034130790278, 0.17868587921611628, 0.1339481453759965, 0.1305086492111877, 0.15634509408164382, 0.13544782666804003, 0.14034535553481167, 0.12471904991504866, 0.18154700947073657, 0.13180714421258488, 0.12601527726236456, 0.1365681285150912, 0.1367840309434336, 0.14991806829148302, 0.13736034130790276, 0.17868587921611628, 0.1339481453759965, 0.1305086492111877, 0.15634509408164385, 0.13544782666804003, 0.14034535553481167, 0.12471904991504866, 0.1815470094707366, 0.13180714421258488, 0.12601527726236456, 0.1365681285150912, 0.1367840309434336, 0.14991806829148305, 0.13736034130790276], + [0.008976583836635493, 0.18407565001288456, 0.1330667697056632, 0.12858493691328932, 0.15808718089589854, 0.13436545912782066, 0.13961652078693515, 0.1222034825628293, 0.18741646077450627, 0.12988445399134074, 0.12339442858096923, 0.13556858299035882, 0.13604055136938875, 0.15076776219569535, 0.13692776010442642, 0.1840756500128845, 0.1330667697056632, 0.12858493691328932, 0.15808718089589854, 0.13436545912782066, 0.13961652078693515, 0.1222034825628293, 0.18741646077450622, 0.12988445399134074, 0.12339442858096923, 0.13556858299035882, 0.13604055136938875, 0.15076776219569535, 0.13692776010442642, 0.18407565001288456, 0.1330667697056632, 0.12858493691328932, 0.15808718089589854, 0.13436545912782066, 0.13961652078693515, 0.1222034825628293, 0.18741646077450627, 0.12988445399134074, 0.12339442858096923, 0.13556858299035882, 0.13604055136938875, 0.15076776219569535, 0.13692776010442642], + [0.010150376862789452, 0.19007839177957617, 0.13220158796754058, 0.12642696332180214, 0.15993957764944874, 0.1331682327358749, 0.13871891854334004, 0.1194663280123655, 0.1939620668731953, 0.127678362531238, 0.12047239705011228, 0.13443816909570744, 0.1352558863972157, 0.15165600235755095, 0.13653711570737184, 0.19007839177957617, 0.13220158796754058, 0.12642696332180214, 0.15993957764944874, 0.1331682327358749, 0.13871891854333998, 0.1194663280123655, 0.19396206687319534, 0.127678362531238, 0.12047239705011223, 0.13443816909570744, 0.1352558863972157, 0.15165600235755095, 0.13653711570737184, 0.19007839177957617, 0.13220158796754058, 0.12642696332180214, 0.15993957764944874, 0.1331682327358749, 0.13871891854333998, 0.1194663280123655, 0.1939620668731953, 0.127678362531238, 0.12047239705011223, 0.13443816909570744, 0.1352558863972157, 0.15165600235755095, 0.13653711570737181], + [0.011424903714820678, 0.19675952706281807, 0.13137383407171804, 0.12400790722858794, 0.16189235659379064, 0.13184468985842773, 0.1376224367056774, 0.11649924849751801, 0.20125501937764081, 0.12515003636546368, 0.11722554290979123, 0.13315844072473557, 0.1344322445705382, 0.15257432130577062, 0.13620439476888233, 0.19675952706281805, 0.13137383407171804, 0.12400790722858794, 0.16189235659379064, 0.13184468985842773, 0.1376224367056774, 0.11649924849751801, 0.20125501937764084, 0.12515003636546368, 0.11722554290979123, 0.13315844072473557, 0.1344322445705382, 0.15257432130577064, 0.13620439476888233, 0.19675952706281807, 0.13137383407171804, 0.12400790722858794, 0.16189235659379064, 0.13184468985842773, 0.1376224367056774, 0.11649924849751801, 0.20125501937764081, 0.12515003636546368, 0.11722554290979123, 0.13315844072473557, 0.1344322445705382, 0.15257432130577062, 0.13620439476888233], + [0.012805433844922729, 0.204188318962916, 0.130609518762071, 0.12129949912366492, 0.16392851290154417, 0.13038227022498516, 0.13629426744935216, 0.11329761260976438, 0.20936930570910314, 0.12225853175546972, 0.11363364398615663, 0.13170856415565751, 0.13357259302216085, 0.15350999077227911, 0.13594737064077084, 0.204188318962916, 0.130609518762071, 0.12129949912366492, 0.16392851290154417, 0.13038227022498516, 0.13629426744935216, 0.11329761260976433, 0.20936930570910314, 0.12225853175546966, 0.11363364398615663, 0.13170856415565751, 0.13357259302216085, 0.15350999077227911, 0.13594737064077084, 0.204188318962916, 0.130609518762071, 0.12129949912366492, 0.16392851290154417, 0.13038227022498516, 0.13629426744935216, 0.11329761260976438, 0.20936930570910314, 0.12225853175546972, 0.11363364398615663, 0.13170856415565751, 0.13357259302216085, 0.15350999077227911, 0.13594737064077084], + [0.014296681746110533, 0.21243700832270215, 0.1299398244182409, 0.11827268710047754, 0.1660219470556799, 0.12876700787651804, 0.13469973184591544, 0.10986179344317125, 0.21837997015995503, 0.11896230693981502, 0.1096821514706473, 0.1300652083098578, 0.13268047804151523, 0.15444474815647533, 0.13578513699642106, 0.21243700832270215, 0.1299398244182409, 0.11827268710047754, 0.1660219470556799, 0.12876700787651804, 0.13469973184591544, 0.10986179344317125, 0.21837997015995503, 0.11896230693981502, 0.1096821514706473, 0.1300652083098578, 0.13268047804151523, 0.15444474815647533, 0.13578513699642106, 0.21243700832270215, 0.1299398244182409, 0.11827268710047754, 0.1660219470556799, 0.12876700787651804, 0.13469973184591544, 0.10986179344317125, 0.21837997015995503, 0.11896230693981502, 0.1096821514706473, 0.1300652083098578, 0.13268047804151523, 0.15444474815647533, 0.13578513699642106], + [0.015902663779089082, 0.22157972196168255, 0.12940136101228922, 0.11489860692534469, 0.16813518916526154, 0.12698303387636187, 0.1328035512442418, 0.10619853592750178, 0.22836088650190922, 0.11522142874261893, 0.10536478717821599, 0.12820252346573097, 0.13175971321503965, 0.15535328811351048, 0.13573737291444243, 0.22157972196168255, 0.12940136101228922, 0.11489860692534469, 0.16813518916526154, 0.12698303387636187, 0.1328035512442418, 0.10619853592750178, 0.22836088650190922, 0.11522142874261898, 0.10536478717821599, 0.12820252346573097, 0.13175971321503965, 0.1553532881135105, 0.13573737291444243, 0.22157972196168255, 0.12940136101228922, 0.11489860692534469, 0.16813518916526154, 0.12698303387636187, 0.1328035512442418, 0.10619853592750178, 0.22836088650190922, 0.11522142874261898, 0.10536478717821599, 0.12820252346573097, 0.13175971321503965, 0.1553532881135105, 0.13573737291444243], + [0.01762660199077597, 0.23169124052675039, 0.12903625161695373, 0.11114989984535664, 0.17021693570036409, 0.12501181326057528, 0.13057158408448052, 0.10232227516347922, 0.2393821481595955, 0.11100051391376702, 0.10068627741783683, 0.1260922461578068, 0.1308139482706502, 0.15620154298253883, 0.13582332332366068, 0.23169124052675039, 0.12903625161695373, 0.11114989984535664, 0.17021693570036409, 0.12501181326057528, 0.13057158408448052, 0.10232227516347922, 0.2393821481595955, 0.11100051391376702, 0.10068627741783683, 0.1260922461578068, 0.1308139482706502, 0.1562015429825389, 0.13582332332366068, 0.23169124052675039, 0.12903625161695373, 0.11114989984535664, 0.17021693570036409, 0.12501181326057528, 0.13057158408448052, 0.10232227516347922, 0.2393821481595955, 0.11100051391376702, 0.10068627741783683, 0.1260922461578068, 0.1308139482706502, 0.1562015429825389, 0.13582332332366068], + [0.01947089826228896, 0.24284575046111126, 0.1288920400278067, 0.10700241002046904, 0.17219949953033556, 0.1228310569081563, 0.12797298026550774, 0.0982562631249038, 0.25150727001495504, 0.10627234755404001, 0.09566490845906017, 0.12370397453640193, 0.1298461782969371, 0.1569448102942064, 0.13606051122161336, 0.24284575046111126, 0.1288920400278067, 0.10700241002046904, 0.17219949953033556, 0.12283105690815635, 0.12797298026550774, 0.0982562631249038, 0.25150727001495504, 0.10627234755404005, 0.09566490845906017, 0.12370397453640193, 0.1298461782969371, 0.1569448102942064, 0.13606051122161336, 0.24284575046111143, 0.1288920400278067, 0.10700241002046904, 0.17219949953033556, 0.1228310569081563, 0.12797298026550774, 0.09825626312490375, 0.25150727001495515, 0.10627234755404001, 0.09566490845906017, 0.12370397453640193, 0.12984617829693704, 0.15694481029420637, 0.13606051122161333], + [0.0214371912960197, 0.25511569837768167, 0.12902144003725302, 0.10243728061093539, 0.17399629759371357, 0.12041329073999656, 0.12498262868102245, 0.09403336451955324, 0.2647904541850161, 0.1010219990814583, 0.0903345106203998, 0.12100566705575823, 0.1288583126640072, 0.1575258265382371, 0.13646323046583045, 0.25511569837768167, 0.12902144003725302, 0.10243728061093539, 0.17399629759371357, 0.12041329073999656, 0.12498262868102245, 0.09403336451955324, 0.2647904541850162, 0.1010219990814583, 0.0903345106203998, 0.12100566705575823, 0.1288583126640072, 0.1575258265382371, 0.13646323046583048, 0.25511569837768167, 0.12902144003725302, 0.10243728061093539, 0.1739962975937136, 0.12041329073999656, 0.12498262868102245, 0.09403336451955324, 0.2647904541850161, 0.1010219990814583, 0.0903345106203998, 0.12100566705575828, 0.1288583126640072, 0.15752582653823707, 0.13646323046583048], + [0.02352648930372763, 0.2685707886144043, 0.12948195853153377, 0.09744345447346128, 0.1754995238087537, 0.11772414764270983, 0.12158370681262255, 0.08969642101322989, 0.27927416470048105, 0.09525113451890287, 0.08474546834589526, 0.1179644304047372, 0.12785098341045464, 0.15787293397616445, 0.13704088560026856, 0.2685707886144043, 0.12948195853153377, 0.09744345447346128, 0.1754995238087537, 0.11772414764270983, 0.12158370681262255, 0.08969642101322989, 0.27927416470048105, 0.09525113451890287, 0.08474546834589526, 0.1179644304047372, 0.12785098341045464, 0.15787293397616445, 0.13704088560026856, 0.2685707886144043, 0.12948195853153377, 0.09744345447346128, 0.1754995238087537, 0.11772414764270983, 0.12158370681262255, 0.08969642101322989, 0.27927416470048105, 0.09525113451890287, 0.0847454683458953, 0.1179644304047372, 0.12785098341045464, 0.15787293397616445, 0.13704088560026853], + [0.025739346247814467, 0.2832769972952102, 0.13033539872791583, 0.09202056694147298, 0.17657820219218362, 0.11472058285972486, 0.11777010386496368, 0.08529814950588673, 0.2949871605923264, 0.08898212953462925, 0.07896443271135208, 0.11454768231541333, 0.1268238147200526, 0.15789854812585424, 0.13779623345118894, 0.2832769972952102, 0.13033539872791583, 0.09202056694147298, 0.17657820219218362, 0.11472058285972486, 0.11777010386496368, 0.08529814950588673, 0.2949871605923264, 0.08898212953462925, 0.07896443271135208, 0.11454768231541333, 0.1268238147200526, 0.15789854812585424, 0.13779623345118894, 0.2832769972952102, 0.13033539872791583, 0.09202056694147298, 0.17657820219218362, 0.11472058285972486, 0.11777010386496368, 0.08529814950588673, 0.2949871605923264, 0.08898212953462925, 0.07896443271135208, 0.11454768231541333, 0.1268238147200526, 0.15789854812585424, 0.13779623345118894], + [0.02807602588965168, 0.2992952191040505, 0.1316471605028521, 0.08618217931997267, 0.1770769304102299, 0.11134941256277872, 0.11354848832045593, 0.08090061185749926, 0.3119429615654432, 0.08226153611245063, 0.07307257009075582, 0.11072480129439095, 0.1257763753373813, 0.15749822430286575, 0.1387235334276808, 0.2992952191040505, 0.1316471605028521, 0.08618217931997267, 0.1770769304102299, 0.11134941256277872, 0.11354848832045587, 0.08090061185749926, 0.3119429615654432, 0.08226153611245063, 0.0730725700907558, 0.11072480129439095, 0.1257763753373813, 0.15749822430286575, 0.13872353342768076, 0.2992952191040504, 0.13164716050285216, 0.08618217931997267, 0.1770769304102299, 0.11134941256277872, 0.11354848832045593, 0.08090061185749926, 0.3119429615654432, 0.08226153611245067, 0.0730725700907558, 0.11072480129439095, 0.1257763753373813, 0.15749822430286575, 0.13872353342768076], + [0.030536583965353158, 0.31667883722412393, 0.1334850841653403, 0.07995921765318234, 0.17681586359888232, 0.10754684852499903, 0.10893981387920917, 0.07657433797641428, 0.3301385111275878, 0.07516243896851266, 0.06716237328526387, 0.10646940272631521, 0.124709970360142, 0.1565507682605096, 0.13980653831071171, 0.31667883722412393, 0.1334850841653403, 0.07995921765318234, 0.17681586359888232, 0.10754684852499909, 0.10893981387920917, 0.07657433797641428, 0.33013851112758774, 0.07516243896851266, 0.06716237328526387, 0.10646940272631521, 0.124709970360142, 0.15655076826050965, 0.13980653831071171, 0.31667883722412393, 0.1334850841653403, 0.07995921765318234, 0.17681586359888232, 0.10754684852499903, 0.10893981387920917, 0.07657433797641423, 0.33013851112758774, 0.07516243896851266, 0.06716237328526384, 0.10646940272631521, 0.124709970360142, 0.15655076826050965, 0.13980653831071166], + [0.03312080261979484, 0.33546915731792126, 0.13591733161541653, 0.07340332260924722, 0.17559290235356093, 0.10324004641694168, 0.10398007276040312, 0.07239717121314762, 0.34955263936835873, 0.06778522508799846, 0.061333230438629045, 0.10176239155021473, 0.12363027188823528, 0.1549200627402415, 0.14101618314606515, 0.3354691573179211, 0.13591733161541658, 0.07340332260924722, 0.17559290235356093, 0.10324004641694168, 0.10398007276040316, 0.07239717121314766, 0.3495526393683585, 0.06778522508799846, 0.06133323043862902, 0.10176239155021473, 0.12363027188823528, 0.1549200627402415, 0.1410161831460652, 0.3354691573179212, 0.13591733161541658, 0.07340332260924722, 0.1755929023535609, 0.10324004641694168, 0.10398007276040316, 0.07239717121314766, 0.34955263936835856, 0.06778522508799846, 0.06133323043862902, 0.10176239155021478, 0.12363027188823522, 0.15492006274024148, 0.14101618314606518], + [0.0358279412446058, 0.3556873675191388, 0.1390084992130695, 0.0665895613741282, 0.1731896417714332, 0.09835204285425592, 0.09872007613697573, 0.0684528170866625, 0.3701439219173168, 0.06025624560031073, 0.055686044839940066, 0.09659589594338826, 0.12255050939638729, 0.15245958116634462, 0.14230780685475344, 0.35568736751913893, 0.13900849921306954, 0.0665895613741282, 0.17318964177143323, 0.09835204285425592, 0.09872007613697573, 0.06845281708666252, 0.3701439219173168, 0.06025624560031076, 0.055686044839940066, 0.09659589594338826, 0.12255050939638729, 0.1524595811663446, 0.14230780685475344, 0.3556873675191388, 0.13900849921306951, 0.0665895613741282, 0.17318964177143326, 0.09835204285425592, 0.09872007613697573, 0.06845281708666252, 0.37014392191731676, 0.06025624560031073, 0.055686044839940066, 0.09659589594338826, 0.12255050939638729, 0.15245958116634467, 0.14230780685475344], + [0.038656335180350936, 0.3773216905049888, 0.1428129194919469, 0.05961761240770715, 0.16938328829514024, 0.09281162800777992, 0.09322395251432722, 0.06482891691486165, 0.3918478192913215, 0.05272376967711667, 0.05031721435183115, 0.09097801182685167, 0.12149451599954265, 0.14902083288719822, 0.14361784353748985, 0.37732169050498876, 0.14281291949194694, 0.05961761240770715, 0.16938328829514027, 0.09281162800777992, 0.09322395251432722, 0.06482891691486165, 0.39184781929132145, 0.05272376967711667, 0.05031721435183115, 0.09097801182685167, 0.12149451599954271, 0.14902083288719822, 0.14361784353748994, 0.3773216905049887, 0.1428129194919469, 0.05961761240770715, 0.16938328829514024, 0.09281162800777992, 0.09322395251432726, 0.06482891691486165, 0.39184781929132134, 0.05272376967711665, 0.05031721435183115, 0.09097801182685167, 0.12149451599954265, 0.14902083288719825, 0.14361784353748994], + [0.041602989885482174, 0.4003090941801225, 0.1473641814104846, 0.05261020131994301, 0.163967066130046, 0.0865692462011231, 0.08756594699627464, 0.061614274721983144, 0.41457368860958127, 0.045350596194402945, 0.045312256338463364, 0.08493789064214541, 0.12049838426318953, 0.14446695430455356, 0.1448602394282946, 0.40030909418012245, 0.14736418141048463, 0.05261020131994303, 0.16396706613004608, 0.08656924620112318, 0.0875659469962746, 0.061614274721983144, 0.4145736886095812, 0.045350596194402945, 0.045312256338463364, 0.08493789064214538, 0.12049838426318947, 0.1444669543045536, 0.14486023942829462, 0.40030909418012245, 0.14736418141048457, 0.05261020131994301, 0.16396706613004608, 0.08656924620112313, 0.0875659469962746, 0.061614274721983144, 0.4145736886095812, 0.045350596194402945, 0.045312256338463364, 0.08493789064214541, 0.12049838426318953, 0.14446695430455353, 0.1448602394282946], + [0.04466347639969023, 0.4245128882308541, 0.1526606900412174, 0.0457074846707338, 0.1567808092842603, 0.07961828649224947, 0.08182511809146185, 0.05889473774435955, 0.4382033547674997, 0.03830292007560986, 0.04073940458306141, 0.07853004726012673, 0.11960900775814289, 0.13869183145399858, 0.14592344637026333, 0.42451288823085404, 0.15266069004121743, 0.04570748467073382, 0.1567808092842604, 0.07961828649224947, 0.08182511809146188, 0.05889473774435957, 0.4382033547674996, 0.03830292007560985, 0.04073940458306141, 0.07853004726012676, 0.11960900775814289, 0.13869183145399866, 0.14592344637026336, 0.4245128882308541, 0.15266069004121738, 0.04570748467073382, 0.15678080928426036, 0.07961828649224947, 0.08182511809146188, 0.0588947377443596, 0.4382033547674997, 0.03830292007560986, 0.04073940458306143, 0.07853004726012676, 0.11960900775814289, 0.13869183145399863, 0.14592344637026342], + [0.04783256779500382, 0.4497009955173335, 0.15864897509117099, 0.039056657130413924, 0.14775040154514893, 0.07201773612108178, 0.0760779116023268, 0.05674734195925243, 0.4625939095346456, 0.03173587267928034, 0.036643730490519937, 0.07183606014625543, 0.11887781359091722, 0.13164301889836283, 0.14666960947867372, 0.44970099551733345, 0.15864897509117099, 0.039056657130413945, 0.14775040154514898, 0.07201773612108182, 0.07607791160232687, 0.056747341959252455, 0.4625939095346454, 0.03173587267928034, 0.03664373049051997, 0.0718360601462555, 0.11887781359091727, 0.13164301889836288, 0.14666960947867377, 0.4497009955173335, 0.158648975091171, 0.039056657130413924, 0.1477504015451489, 0.07201773612108182, 0.07607791160232687, 0.056747341959252455, 0.4625939095346454, 0.03173587267928034, 0.03664373049051997, 0.0718360601462555, 0.11887781359091727, 0.13164301889836288, 0.14666960947867375], + [0.05110601039915, 0.47553357104475263, 0.16520920725042967, 0.032797629791772996, 0.13692912250151165, 0.0639080954433999, 0.07038954941126291, 0.055232848525224296, 0.487587107273564, 0.025777715453626004, 0.0330427633960192, 0.06496170488725012, 0.11834912042533884, 0.12334353414174337, 0.1469380714600432, 0.4755335710447528, 0.1652092072504295, 0.03279762979177301, 0.13692912250151168, 0.0639080954433999, 0.07038954941126288, 0.055232848525224296, 0.48758710727356425, 0.025777715453626004, 0.033042763396019185, 0.06496170488725009, 0.11834912042533884, 0.12334353414174337, 0.14693807146004323, 0.47553357104475275, 0.16520920725042948, 0.032797629791772996, 0.13692912250151168, 0.0639080954433999, 0.07038954941126291, 0.055232848525224296, 0.48758710727356425, 0.025777715453626015, 0.0330427633960192, 0.06496170488725012, 0.11834912042533884, 0.12334353414174337, 0.14693807146004315], + [0.054483434684720757, 0.501569945165553, 0.17214948594942597, 0.027047846302065682, 0.12452782504715149, 0.055510811531387726, 0.06480648667268599, 0.05438762819224142, 0.5130249679885627, 0.02051638847690662, 0.029924926337493104, 0.058028776515702506, 0.11804495401773822, 0.11390514784147218, 0.14655485724214154, 0.5015699451655529, 0.172149485949426, 0.027047846302065668, 0.12452782504715154, 0.05551081153138775, 0.06480648667268596, 0.05438762819224144, 0.5130249679885627, 0.02051638847690662, 0.029924926337493104, 0.05802877651570253, 0.11804495401773822, 0.11390514784147208, 0.14655485724214157, 0.501569945165553, 0.17214948594942597, 0.027047846302065668, 0.12452782504715149, 0.05551081153138775, 0.06480648667268592, 0.05438762819224137, 0.5130249679885628, 0.020516388476906608, 0.02992492633749308, 0.058028776515702485, 0.11804495401773817, 0.11390514784147213, 0.14655485724214148], + [0.057971742249265074, 0.5273003877853457, 0.179214604132783, 0.021890728545090644, 0.11091907144927299, 0.04710582042394208, 0.05935293888841937, 0.05421648130525748, 0.538766574105798, 0.015992562753864764, 0.027251846480783163, 0.05116336764972346, 0.11795078919001495, 0.10352687553289114, 0.1453480028607167, 0.5273003877853455, 0.1792146041327832, 0.021890728545090637, 0.11091907144927299, 0.047105820423942055, 0.05935293888841937, 0.05421648130525748, 0.5387665741057979, 0.015992562753864764, 0.027251846480783153, 0.051163367649723436, 0.11795078919001489, 0.10352687553289114, 0.14534800286071684, 0.5273003877853458, 0.179214604132783, 0.021890728545090637, 0.11091907144927299, 0.047105820423942055, 0.05935293888841934, 0.054216481305257434, 0.538766574105798, 0.015992562753864764, 0.027251846480783153, 0.05116336764972346, 0.11795078919001489, 0.10352687553289114, 0.14534800286071675], + [0.061587790649584355, 0.5521985381924179, 0.18611030869606315, 0.017371248464783696, 0.09660700012030993, 0.03899156564462815, 0.05403357622048656, 0.05468779659717098, 0.5646978851608585, 0.012201371925156553, 0.02496450410572468, 0.04448456337864613, 0.11800757092215207, 0.09247795668530293, 0.14316616532695184, 0.5521985381924178, 0.18611030869606326, 0.017371248464783683, 0.09660700012030997, 0.038991565644628114, 0.05403357622048656, 0.05468779659717101, 0.5646978851608584, 0.012201371925156553, 0.02496450410572468, 0.04448456337864613, 0.11800757092215211, 0.09247795668530293, 0.1431661653269519, 0.5521985381924179, 0.18611030869606318, 0.017371248464783696, 0.09660700012031001, 0.03899156564462815, 0.05403357622048656, 0.05468779659717101, 0.5646978851608585, 0.012201371925156553, 0.024964504105724695, 0.04448456337864617, 0.11800757092215211, 0.09247795668530293, 0.14316616532695187], + [0.06535933163242245, 0.5757814710034779, 0.1925380151775615, 0.013498855610234782, 0.0821676348796728, 0.03144059133748651, 0.04884196494604526, 0.0557314997305812, 0.5907282724282973, 0.009101434104192386, 0.0229918012879129, 0.03809732249044039, 0.11811338639629108, 0.08107132044633385, 0.1398964785286095, 0.5757814710034783, 0.19253801517756125, 0.013498855610234782, 0.08216763487967271, 0.031440591337486494, 0.048841964946045216, 0.05573149973058115, 0.5907282724282977, 0.009101434104192386, 0.02299180128791287, 0.03809732249044041, 0.11811338639629093, 0.08107132044633392, 0.1398964785286093, 0.5757814710034783, 0.19253801517756125, 0.013498855610234782, 0.08216763487967275, 0.031440591337486494, 0.048841964946045216, 0.05573149973058112, 0.5907282724282977, 0.009101434104192386, 0.02299180128791287, 0.03809732249044039, 0.11811338639629082, 0.08107132044633385, 0.13989647852860937], + [0.06932394077225157, 0.5976624440893549, 0.19823146335600703, 0.010254811983208495, 0.06817539361092702, 0.02466474404361154, 0.043771761229063975, 0.057239410889494934, 0.6167740708264503, 0.006627138727250572, 0.02125943573541893, 0.03209058720877829, 0.1181345576374609, 0.06963616817013937, 0.1354780554621482, 0.5976624440893548, 0.19823146335600703, 0.010254811983208495, 0.06817539361092705, 0.02466474404361155, 0.04377176122906402, 0.05723941088949498, 0.6167740708264503, 0.006627138727250572, 0.02125943573541893, 0.03209058720877829, 0.1181345576374609, 0.06963616817013937, 0.13547805546214828, 0.5976624440893545, 0.19823146335600733, 0.010254811983208503, 0.06817539361092702, 0.02466474404361154, 0.04377176122906402, 0.057239410889494954, 0.6167740708264502, 0.006627138727250572, 0.021259435735418948, 0.03209058720877826, 0.11813455763746102, 0.06963616817013935, 0.1354780554621483], + [0.07352654558776053, 0.6175863061551589, 0.202987380496146, 0.007600169944325158, 0.05513429825824185, 0.018797435652592277, 0.03882671485270431, 0.059067719072377504, 0.6427362386281923, 0.004700159846927306, 0.019697357787706107, 0.026538620343449525, 0.11792307726043139, 0.05849532873204146, 0.12990922964955667, 0.6175863061551591, 0.20298738049614595, 0.007600169944325158, 0.05513429825824187, 0.018797435652592277, 0.038826714852704274, 0.05906771907237745, 0.6427362386281923, 0.0047001598469273015, 0.019697357787706097, 0.02653862034344951, 0.11792307726043148, 0.05849532873204141, 0.1299092296495565, 0.6175863061551592, 0.20298738049614573, 0.007600169944325158, 0.05513429825824185, 0.018797435652592284, 0.038826714852704294, 0.059067719072377504, 0.6427362386281924, 0.0047001598469273015, 0.019697357787706097, 0.0265386203434495, 0.11792307726043139, 0.05849532873204149, 0.12990922964955656], + [0.07801656064708384, 0.6354440995779927, 0.20668502233873998, 0.005482138966524057, 0.043427714311756856, 0.01389244308948863, 0.034026518565465826, 0.061042082548264424, 0.6684818925826178, 0.0032380782046906704, 0.01824506069624422, 0.021502442743429346, 0.11733632570774134, 0.04794792847636162, 0.12324828284357527, 0.635444099577993, 0.20668502233873975, 0.005482138966524052, 0.0434277143117568, 0.01389244308948863, 0.03402651856546581, 0.0610420825482644, 0.6684818925826178, 0.0032380782046906704, 0.01824506069624417, 0.021502442743429325, 0.1173363257077414, 0.047947928476361576, 0.12324828284357527, 0.6354440995779927, 0.20668502233873984, 0.005482138966524057, 0.04342771431175684, 0.01389244308948863, 0.034026518565465846, 0.06104208254826445, 0.6684818925826177, 0.0032380782046906704, 0.018245060696244184, 0.021502442743429315, 0.11733632570774155, 0.0479479284763616, 0.12324828284357527], + [0.08284549575642534, 0.6512677751787277, 0.20929232808418008, 0.0038386382739673056, 0.03329314525658045, 0.009934194168429424, 0.029407462148340804, 0.06296647175705672, 0.6938374051772427, 0.0021599963384876927, 0.016854758898101296, 0.017029265491323668, 0.11625532562561043, 0.038254822662674035, 0.11560843642568694, 0.6512677751787278, 0.20929232808417994, 0.003838638273967302, 0.033293145256580496, 0.009934194168429424, 0.029407462148340828, 0.06296647175705677, 0.6938374051772425, 0.0021599963384876927, 0.01685475889810131, 0.017029265491323668, 0.11625532562561047, 0.038254822662674035, 0.11560843642568705, 0.6512677751787275, 0.20929232808418027, 0.003838638273967302, 0.033293145256580475, 0.009934194168429424, 0.029407462148340828, 0.0629664717570568, 0.6938374051772426, 0.0021599963384876927, 0.016854758898101323, 0.01702926549132368, 0.11625532562561038, 0.03825482266267408, 0.11560843642568705], + [0.08806550088557293, 0.6652082801759629, 0.21085880633527104, 0.0026019392522236926, 0.024821969154637274, 0.006853821570579852, 0.025018588722142746, 0.06463660599158766, 0.7185960087903157, 0.001390009687729953, 0.015492833713307142, 0.013149710549057619, 0.1145985550655643, 0.02962446003915649, 0.10714843220961368, 0.6652082801759632, 0.21085880633527065, 0.0026019392522236926, 0.024821969154637264, 0.006853821570579852, 0.025018588722142746, 0.06463660599158766, 0.7185960087903158, 0.001390009687729952, 0.015492833713307114, 0.013149710549057619, 0.11459855506556424, 0.02962446003915654, 0.10714843220961358, 0.6652082801759632, 0.21085880633527082, 0.0026019392522236904, 0.024821969154637264, 0.006853821570579846, 0.025018588722142736, 0.06463660599158766, 0.7185960087903158, 0.001390009687729952, 0.015492833713307128, 0.013149710549057619, 0.1145985550655643, 0.029624460039156503, 0.10714843220961358], + [0.09372893283641592, 0.677501993639553, 0.21149742747756248, 0.001702243610598171, 0.017979062121741857, 0.0045466224535726275, 0.020915031452013417, 0.06585762764904322, 0.7425377411194011, 0.0008594251084920574, 0.014139897361543955, 0.009874137303050898, 0.11232927856299464, 0.022199215790249437, 0.09806031408040514, 0.6775019936395529, 0.21149742747756256, 0.0017022436105981695, 0.01797906212174184, 0.0045466224535726275, 0.0209150314520134, 0.06585762764904325, 0.742537741119401, 0.0008594251084920559, 0.014139897361543969, 0.00987413730305089, 0.1123292785629947, 0.022199215790249416, 0.09806031408040522, 0.6775019936395533, 0.21149742747756214, 0.001702243610598171, 0.01797906212174187, 0.004546622453572635, 0.02091503145201341, 0.06585762764904322, 0.7425377411194012, 0.0008594251084920581, 0.014139897361543955, 0.009874137303050916, 0.11232927856299445, 0.022199215790249464, 0.09806031408040514], + [0.09988879209625758, 0.6884319062542172, 0.21135965679579782, 0.0010714112921762441, 0.012634408228824869, 0.0028883381877159264, 0.01715040873855668, 0.06646387677358152, 0.7654556049218614, 0.000508245064768245, 0.012789691492682087, 0.007189979383241723, 0.1094555492736682, 0.016044823648261434, 0.08855611455769115, 0.6884319062542174, 0.2113596567957977, 0.001071411292176245, 0.012634408228824869, 0.002888338187715929, 0.017150408738556666, 0.06646387677358155, 0.7654556049218615, 0.000508245064768245, 0.012789691492682076, 0.007189979383241723, 0.1094555492736682, 0.016044823648261434, 0.08855611455769112, 0.6884319062542177, 0.21135965679579738, 0.0010714112921762458, 0.012634408228824879, 0.002888338187715929, 0.01715040873855668, 0.06646387677358152, 0.7654556049218615, 0.0005082450647682455, 0.012789691492682076, 0.00718997938324173, 0.10945554927366816, 0.016044823648261448, 0.08855611455769115], + [0.10659977638833185, 0.6982904580995477, 0.2106088323943623, 0.0006464863178521127, 0.008598349154590635, 0.0017490768741711328, 0.013769835235400919, 0.06633696650670115, 0.7871800263831216, 0.0002860783794924157, 0.011446971351536099, 0.00506164598779227, 0.10602347998156057, 0.011146753119326915, 0.07885505195454391, 0.6982904580995477, 0.2106088323943623, 0.0006464863178521133, 0.008598349154590635, 0.0017490768741711344, 0.01376983523540093, 0.06633696650670115, 0.7871800263831216, 0.00028607837949241616, 0.011446971351536089, 0.00506164598779227, 0.10602347998156057, 0.011146753119326926, 0.07885505195454391, 0.6982904580995472, 0.210608832394363, 0.0006464863178521127, 0.008598349154590635, 0.0017490768741711328, 0.01376983523540093, 0.06633696650670112, 0.7871800263831215, 0.00028607837949241616, 0.01144697135153612, 0.0050616459877922656, 0.10602347998156053, 0.011146753119326915, 0.07885505195454401], + [0.11391968218424321, 0.707349964918882, 0.20939693597520342, 0.000372475800620386, 0.005653824225589909, 0.0010044872004855109, 0.010804574279917647, 0.06541774080895989, 0.8075946593961025, 0.00015245155699730338, 0.01012459529767305, 0.003433575502312026, 0.10210578911932851, 0.007416415301296408, 0.06917251973542021, 0.7073499649188829, 0.20939693597520262, 0.000372475800620386, 0.005653824225589909, 0.0010044872004855143, 0.010804574279917628, 0.06541774080895979, 0.8075946593961031, 0.00015245155699730338, 0.010124595297673004, 0.003433575502312035, 0.10210578911932806, 0.007416415301296441, 0.06917251973541998, 0.7073499649188825, 0.20939693597520295, 0.0003724758006203863, 0.005653824225589914, 0.0010044872004855154, 0.010804574279917656, 0.06541774080895982, 0.807594659396103, 0.00015245155699730392, 0.010124595297673032, 0.003433575502312029, 0.10210578911932797, 0.007416415301296434, 0.06917251973542016], + [0.12191091828049404, 0.7158441168551246, 0.20784839434159516, 0.00020398886844454967, 0.003581807800553228, 0.0005440326056492653, 0.008268836459480766, 0.06370882518586173, 0.8266399744042358, 7.64729586040118e-05, 0.008840194850480779, 0.0022359384558725513, 0.09778853426149199, 0.004707324896982928, 0.05971156491050874, 0.7158441168551243, 0.2078483943415956, 0.0002039888684445493, 0.003581807800553228, 0.0005440326056492643, 0.008268836459480781, 0.0637088251858617, 0.8266399744042355, 7.647295860401193e-05, 0.008840194850480794, 0.002235938455872549, 0.09778853426149212, 0.004707324896982923, 0.05971156491050885, 0.7158441168551237, 0.207848394341596, 0.0002039888684445493, 0.003581807800553225, 0.0005440326056492639, 0.008268836459480775, 0.06370882518586181, 0.8266399744042355, 7.647295860401153e-05, 0.00884019485048081, 0.002235938455872543, 0.09778853426149216, 0.004707324896982915, 0.05971156491050885], + [0.13064195572860687, 0.7239608664513271, 0.20605236042816383, 0.00010564601563576017, 0.002178913302216035, 0.0002762063493793077, 0.006158817414885501, 0.0612671913432933, 0.8443054770084931, 3.588379690402164e-05, 0.007612921076834642, 0.0013917433277875612, 0.09315899288478148, 0.002838194686571848, 0.05065679095332334, 0.7239608664513258, 0.20605236042816477, 0.00010564601563576034, 0.002178913302216035, 0.0002762063493793072, 0.006158817414885507, 0.06126719134329363, 0.8443054770084926, 3.58837969040217e-05, 0.007612921076834703, 0.00139174332778756, 0.0931589928847819, 0.0028381946865718376, 0.05065679095332343, 0.7239608664513266, 0.20605236042816424, 0.00010564601563576034, 0.0021789133022160315, 0.0002762063493793077, 0.00615881741488549, 0.06126719134329344, 0.8443054770084931, 3.58837969040217e-05, 0.007612921076834649, 0.0013917433277875625, 0.09315899288478156, 0.002838194686571843, 0.050656790953323316], + [0.14018861108164002, 0.7318442261764738, 0.20406274635193106, 5.144198774627978e-05, 0.0012679363112826213, 0.00013060758316294757, 0.004453776086027943, 0.05818926626106462, 0.8606149576405412, 1.5644439888474392e-05, 0.0064607405375950114, 0.0008239251195840584, 0.08829685040241968, 0.0016179416315670468, 0.0421699431545107, 0.731844226176474, 0.20406274635193092, 5.1441987746279866e-05, 0.0012679363112826224, 0.00013060758316294757, 0.004453776086027943, 0.05818926626106452, 0.8606149576405412, 1.564443988847442e-05, 0.0064607405375950114, 0.0008239251195840584, 0.08829685040241968, 0.0016179416315670499, 0.0421699431545107, 0.7318442261764744, 0.2040627463519305, 5.1441987746279866e-05, 0.0012679363112826224, 0.00013060758316294781, 0.004453776086027939, 0.05818926626106452, 0.8606149576405414, 1.564443988847442e-05, 0.006460740537594989, 0.0008239251195840591, 0.08829685040241944, 0.001617941631567054, 0.0421699431545107], + [0.15063512828120895, 0.7396009515945022, 0.2019038236485383, 2.339776361969337e-05, 0.0007028007298860581, 5.71251017030893e-05, 0.0031187584402085806, 0.05459314314732436, 0.875610594351965, 6.290666829551658e-06, 0.005398574487058785, 0.00046128952045489243, 0.08326959264312722, 0.0008675079714083972, 0.03438615265402587, 0.7396009515945009, 0.20190382364853948, 2.339776361969329e-05, 0.0007028007298860575, 5.71251017030891e-05, 0.0031187584402085806, 0.05459314314732455, 0.8756105943519644, 6.290666829551647e-06, 0.0053985744870588374, 0.0004612895204548892, 0.08326959264312778, 0.000867507971408391, 0.03438615265402598, 0.739600951594502, 0.20190382364853846, 2.339776361969333e-05, 0.0007028007298860569, 5.71251017030891e-05, 0.003118758440208578, 0.054593143147324406, 0.8756105943519648, 6.290666829551635e-06, 0.005398574487058799, 0.00046128952045489, 0.08326959264312747, 0.0008675079714083949, 0.03438615265402597], + [0.16207507530473342, 0.7473080801401414, 0.19957874064866893, 9.869079731165021e-06, 0.0003693404412160987, 2.2939139455110933e-05, 0.002108449278743466, 0.05060258151567748, 0.8893408693931047, 2.3143606389473487e-06, 0.004437322765895542, 0.00024266826386320177, 0.07813178116628468, 0.00043495998753691293, 0.027410085866905087, 0.7473080801401419, 0.1995787406486685, 9.86907973116504e-06, 0.0003693404412160984, 2.2939139455110893e-05, 0.0021084492787434676, 0.05060258151567737, 0.8893408693931049, 2.314360638947345e-06, 0.00443732276589553, 0.0002426682638632022, 0.07813178116628461, 0.00043495998753691445, 0.027410085866905073, 0.7473080801401409, 0.19957874064866926, 9.869079731165004e-06, 0.0003693404412160987, 2.293913945511077e-05, 0.0021084492787434676, 0.05060258151567757, 0.8893408693931043, 2.3143606389473487e-06, 0.004437322765895562, 0.00024266826386320177, 0.07813178116628505, 0.00043495998753691136, 0.02741008586690512], + [0.17461210327038115, 0.7550185132157347, 0.1970786375203895, 3.8294973627606245e-06, 0.00018309857797011827, 8.389065221395149e-06, 0.0013715782929182116, 0.04633595398246005, 0.9018548924529171, 7.722743759220207e-07, 0.0035836032866130812, 0.00011908747688515931, 0.07292707659405546, 0.00020261612585388526, 0.0213119532061957, 0.7550185132157344, 0.19707863752038976, 3.8294973627606245e-06, 0.00018309857797011827, 8.389065221395178e-06, 0.0013715782929182106, 0.04633595398246001, 0.9018548924529172, 7.722743759220207e-07, 0.003583603286613075, 0.00011908747688515911, 0.07292707659405541, 0.00020261612585388526, 0.021311953206195673, 0.755018513215734, 0.19707863752039023, 3.829497362760611e-06, 0.00018309857797011795, 8.389065221395149e-06, 0.0013715782929182116, 0.04633595398245993, 0.9018548924529171, 7.722743759220193e-07, 0.0035836032866130847, 0.00011908747688515889, 0.07292707659405544, 0.00020261612585388452, 0.021311953206195722], + [0.18836063614733314, 0.7627636176148127, 0.1943907468950489, 1.3549699852174175e-06, 8.515516325644938e-05, 2.769537994957103e-06, 0.0008553164980669708, 0.041901039430757396, 0.9132029691796357, 2.315130707456276e-07, 0.002839942839281796, 5.408282476194476e-05, 0.06769158226587714, 8.705900553997148e-05, 0.016124133475475484, 0.762763617614815, 0.19439074689504662, 1.354969985217432e-06, 8.515516325644968e-05, 2.7695379949571327e-06, 0.0008553164980669715, 0.04190103943075732, 0.9132029691796361, 2.3151307074562842e-07, 0.0028399428392817555, 5.408282476194553e-05, 0.06769158226587683, 8.705900553997272e-05, 0.01612413347547547, 0.7627636176148126, 0.19439074689504895, 1.3549699852174175e-06, 8.515516325644938e-05, 2.769537994957103e-06, 0.0008553164980669723, 0.04190103943075743, 0.9132029691796356, 2.31513070745628e-07, 0.0028399428392817984, 5.408282476194486e-05, 0.06769158226587729, 8.705900553997134e-05, 0.01612413347547547], + [0.2034465760682563, 0.770553483159991, 0.1915045935962208, 4.329296146448485e-07, 3.6929779568427794e-05, 8.174310768548906e-07, 0.000509171498993452, 0.03739457169832576, 0.9234411010090408, 6.170294756444543e-08, 0.0022051804065820507, 2.253142193794074e-05, 0.06245723040054388, 3.422884687871486e-05, 0.011839667057272794, 0.7705534831599911, 0.19150459359622055, 4.329296146448477e-07, 3.6929779568427794e-05, 8.174310768548891e-07, 0.0005091714989934526, 0.03739457169832578, 0.9234411010090404, 6.170294756444543e-08, 0.0022051804065820486, 2.253142193794074e-05, 0.062457230400544156, 3.42288468787148e-05, 0.011839667057272763, 0.7705534831599902, 0.19150459359622135, 4.329296146448454e-07, 3.6929779568427666e-05, 8.174310768548863e-07, 0.0005091714989934516, 0.03739457169832598, 0.9234411010090404, 6.170294756444522e-08, 0.002205180406582064, 2.253142193794066e-05, 0.062457230400544184, 3.4228846878714676e-05, 0.011839667057272794], + [0.22000812177545967, 0.778376482611637, 0.18841597816771538, 1.2358534511170947e-07, 1.4834723490909102e-05, 2.1340531850304028e-07, 0.00028801140872829813, 0.0329043561898926, 0.9326361513754837, 1.4453882421807504e-08, 0.001674941997218729, 8.529358882755413e-06, 0.057254355602358316, 1.2205776597636392e-05, 0.008413802066580323, 0.7783764826116328, 0.1884159781677194, 1.2358534511170727e-07, 1.4834723490908997e-05, 2.1340531850303726e-07, 0.00028801140872829764, 0.032904356189892826, 0.9326361513754835, 1.4453882421807451e-08, 0.001674941997218775, 8.529358882755186e-06, 0.05725435560235859, 1.2205776597636044e-05, 0.008413802066580345, 0.7783764826116375, 0.188415978167715, 1.2358534511170968e-07, 1.4834723490909129e-05, 2.1340531850304142e-07, 0.00028801140872829764, 0.03290435618989255, 0.9326361513754842, 1.4453882421807555e-08, 0.0016749419972187185, 8.529358882755444e-06, 0.05725435560235799, 1.2205776597636434e-05, 0.008413802066580293], + [0.2381967987528836, 0.7861999186443467, 0.1851288235125769, 3.115223056520866e-08, 5.4789590105e-06, 4.870187359365529e-08, 0.00015400027837449338, 0.028511698851167156, 0.9408687702966704, 2.9385863320066677e-09, 0.001242149374373572, 2.9037469330202874e-06, 0.05211310984035949, 3.9092358902218745e-06, 0.005769155023515209, 0.78619991864434, 0.1851288235125831, 3.1152230565207775e-08, 5.478959010499952e-06, 4.8701873593653904e-08, 0.00015400027837449338, 0.028511698851167614, 0.9408687702966692, 2.9385863320066366e-09, 0.0012421493743736424, 2.903746933020148e-06, 0.05211310984036058, 3.90923589022168e-06, 0.005769155023515249, 0.7861999186443451, 0.18512882351257837, 3.115223056520844e-08, 5.4789590104999906e-06, 4.8701873593654943e-08, 0.00015400027837449308, 0.028511698851167208, 0.9408687702966702, 2.9385863320066573e-09, 0.0012421493743735841, 2.9037469330202565e-06, 0.052113109840359606, 3.90923589022184e-06, 0.005769155023515219], + [0.2581787831800615, 0.7939729316162056, 0.18165522136578427, 6.845401363560771e-09, 1.8452358335305363e-06, 9.589953512572768e-09, 7.739636823115508e-05, 0.024292589091710313, 0.9482324729495152, 5.113776743233968e-10, 0.000897583579832035, 8.791399207207223e-07, 0.04706381404004951, 1.1125021548776628e-06, 0.0038041375959983813, 0.7939729316161989, 0.18165522136579065, 6.8454013635606e-09, 1.8452358335305135e-06, 9.589953512572497e-09, 7.739636823115481e-05, 0.0242925890917106, 0.9482324729495143, 5.113776743233913e-10, 0.0008975835798320852, 8.79139920720677e-07, 0.04706381404005035, 1.1125021548775997e-06, 0.003804137595998395, 0.7939729316162031, 0.18165522136578682, 6.845401363560697e-09, 1.8452358335305266e-06, 9.5899535125727e-09, 7.739636823115495e-05, 0.024292589091710247, 0.9482324729495153, 5.113776743233968e-10, 0.0008975835798320477, 8.791399207207066e-07, 0.04706381404004938, 1.1125021548776432e-06, 0.0038041375959983847], + [0.28013656916446816, 0.8016318541774471, 0.17801417683732076, 1.2929026145331038e-09, 5.615195418583078e-07, 1.6061480649937674e-09, 3.633035437040974e-05, 0.0203170743421945, 0.9548288746956534, 7.501560068845415e-11, 0.0006305242227584173, 2.3385202693786938e-07, 0.04213661992801278, 2.780069478327366e-07, 0.0024034694353254477, 0.80163185417744, 0.17801417683732762, 1.292902614533058e-09, 5.615195418583008e-07, 1.6061480649937104e-09, 3.633035437040961e-05, 0.02031707434219469, 0.9548288746956525, 7.50156006884536e-11, 0.0006305242227584577, 2.3385202693785527e-07, 0.04213661992801356, 2.7800694783271785e-07, 0.0024034694353254455, 0.8016318541774482, 0.17801417683731974, 1.292902614533113e-09, 5.615195418583089e-07, 1.606148064993779e-09, 3.633035437040967e-05, 0.020317074342194402, 0.9548288746956537, 7.501560068845441e-11, 0.0006305242227584083, 2.338520269378723e-07, 0.0421366199280124, 2.7800694783273956e-07, 0.0024034694353254372], + [0.3042709879232287, 0.8091072774162499, 0.17422963708555103, 2.0665981303682696e-10, 1.5283865851422837e-07, 2.252177151684708e-10, 1.5817800352564308e-05, 0.016647114573897757, 0.9607603633831311, 9.120924305710757e-12, 0.0004294480958177937, 5.3934474924629626e-08, 0.03736094788290732, 6.021623101681893e-08, 0.0014491266207469554, 0.8091072774162555, 0.17422963708554545, 2.0665981303683358e-10, 1.5283865851423e-07, 2.2521771516847878e-10, 1.5817800352564392e-05, 0.01664711457389761, 0.9607603633831315, 9.120924305710789e-12, 0.0004294480958177701, 5.3934474924632306e-08, 0.037360947882906836, 6.021623101682234e-08, 0.0014491266207469606, 0.8091072774162529, 0.1742296370855482, 2.066598130368299e-10, 1.5283865851422863e-07, 2.2521771516847638e-10, 1.5817800352564335e-05, 0.01664711457389758, 0.9607603633831316, 9.120924305710789e-12, 0.0004294480958177792, 5.393447492463097e-08, 0.03736094788290674, 6.021623101682064e-08, 0.0014491266207469528], + [0.33080354981820054, 0.8163315601600725, 0.17032840323123166, 2.748316567734325e-11, 3.679529370394236e-08, 2.598703636461103e-11, 6.338835080701414e-06, 0.013333661084229887, 0.9661220765748763, 9.022204115301011e-13, 0.00028273077240925605, 1.0630713416303001e-08, 0.0327651039692631, 1.114506904794078e-08, 0.0008300669998076465, 0.8163315601600734, 0.17032840323123072, 2.7483165677343346e-11, 3.679529370394236e-08, 2.5987036364611123e-11, 6.338835080701392e-06, 0.013333661084229852, 0.9661220765748765, 9.022204115301043e-13, 0.0002827307724092525, 1.0630713416303115e-08, 0.03276510396926284, 1.1145069047940937e-08, 0.0008300669998076435, 0.8163315601600707, 0.17032840323123322, 2.7483165677342955e-11, 3.67952937039421e-08, 2.5987036364610752e-11, 6.338835080701403e-06, 0.01333366108422997, 0.9661220765748761, 9.022204115300947e-13, 0.0002827307724092611, 1.0630713416302812e-08, 0.032765103969263264, 1.1145069047940581e-08, 0.000830066999807648], + [0.3599790553158695, 0.8232454674993875, 0.16633844544997708, 2.9843713907630915e-12, 7.738850923359593e-09, 2.4212055615118e-12, 2.318266077936118e-06, 0.01041376120546257, 0.9709949375324645, 7.112740892522176e-14, 0.0001792779389224173, 1.7626463164968056e-09, 0.02837631929007845, 1.7353069946932004e-09, 0.0004494618023241573, 0.8232454674993855, 0.1663384454499791, 2.9843713907630386e-12, 7.738850923359565e-09, 2.4212055615117657e-12, 2.3182660779361094e-06, 0.010413761205462597, 0.9709949375324646, 7.11274089252215e-14, 0.0001792779389224208, 1.762646316496768e-09, 0.02837631929007848, 1.7353069946931572e-09, 0.0004494618023241561, 0.8232454674993873, 0.1663384454499773, 2.984371390763081e-12, 7.738850923359565e-09, 2.4212055615118086e-12, 2.318266077936118e-06, 0.010413761205462597, 0.9709949375324647, 7.112740892522201e-14, 0.0001792779389224173, 1.7626463164968056e-09, 0.02837631929007829, 1.7353069946931942e-09, 0.00044946180232415813], + [0.3920684150505416, 0.8298029644204892, 0.16228795779593125, 2.5920708338634877e-13, 1.4027021951878727e-09, 1.7842346966169043e-13, 7.665003952817651e-07, 0.007908310042297645, 0.9754409354133061, 4.3685543700044606e-15, 0.00010902432423981721, 2.416358203451149e-10, 0.02422125295146086, 2.2344174050201478e-10, 0.00022878689064680764, 0.8298029644204911, 0.16228795779592933, 2.5920708338635155e-13, 1.4027021951878776e-09, 1.7842346966169106e-13, 7.665003952817692e-07, 0.007908310042297688, 0.9754409354133059, 4.3685543700044606e-15, 0.00010902432423981586, 2.416358203451192e-10, 0.024221252951461034, 2.2344174050201956e-10, 0.00022878689064680886, 0.8298029644204873, 0.16228795779593314, 2.592070833863451e-13, 1.4027021951878677e-09, 1.784234696616879e-13, 7.665003952817651e-07, 0.007908310042297709, 0.975440935413306, 4.368554370004429e-15, 0.00010902432423981992, 2.41635820345108e-10, 0.024221252951461023, 2.2344174050200845e-10, 0.00022878689064680804], + [0.42737163252463695, 0.835973712081321, 0.15820522125670333, 1.760244117121676e-14, 2.1582970725482187e-10, 1.0167630485534792e-14, 2.2673358105762051e-07, 0.005820839863176993, 0.9795011342224177, 2.038439215163912e-16, 6.326628978058415e-05, 2.6874519179415825e-11, 0.020326797545279177, 2.3352002156234667e-11, 0.00010880193317161437, 0.8359737120813195, 0.1582052212567048, 1.7602441171216634e-14, 2.1582970725482031e-10, 1.0167630485534648e-14, 2.267335810576201e-07, 0.005820839863176993, 0.9795011342224178, 2.038439215163912e-16, 6.326628978058527e-05, 2.6874519179415347e-11, 0.02032679754527903, 2.335200215623425e-11, 0.00010880193317161437, 0.8359737120813191, 0.15820522125670528, 1.760244117121657e-14, 2.158297072548211e-10, 1.0167630485534648e-14, 2.267335810576209e-07, 0.0058208398631770285, 0.9795011342224177, 2.038439215163912e-16, 6.326628978058606e-05, 2.6874519179415156e-11, 0.02032679754527912, 2.3352002156234085e-11, 0.00010880193317161437], + [0.4662209281189391, 0.841743319276236, 0.154119052182464, 9.114972890027286e-16, 2.7723251060618162e-11, 4.3715613638077094e-16, 5.931115121508658e-08, 0.004137569333836123, 0.9831963181535335, 7.028114677530153e-18, 3.4824508908501444e-05, 2.3755331962439525e-12, 0.016720849977045975, 1.940835012498861e-12, 4.8007408940275844e-05, 0.8417433192762379, 0.15411905218246202, 9.114972890027414e-16, 2.772325106061826e-11, 4.3715613638077716e-16, 5.9311151215087e-08, 0.004137569333836126, 0.9831963181535337, 7.028114677530204e-18, 3.482450890850058e-05, 2.37553319624402e-12, 0.016720849977045794, 1.940835012498923e-12, 4.800740894027576e-05, 0.8417433192762407, 0.15411905218245922, 9.114972890027802e-16, 2.7723251060618753e-11, 4.371561363807896e-16, 5.931115121508763e-08, 0.004137569333836101, 0.9831963181535336, 7.028114677530304e-18, 3.482450890849946e-05, 2.3755331962441383e-12, 0.01672084997704584, 1.9408350124990266e-12, 4.800740894027627e-05], + [0.5089840020353246, 0.8471117639601146, 0.15005938783577927, 3.5012381446041904e-17, 2.9178406038454814e-12, 1.3804160793442916e-17, 1.3545227960164255e-08, 0.002828834761750282, 0.9865298623614265, 1.7361655481905424e-19, 1.805587092950166e-05, 1.6319982992745526e-13, 0.013432578848114702, 1.254555442826924e-13, 1.950300355576694e-05, 0.8471117639601157, 0.1500593878357783, 3.5012381446041904e-17, 2.9178406038454713e-12, 1.3804160793443013e-17, 1.3545227960164207e-08, 0.0028288347617502394, 0.9865298623614267, 1.7361655481905424e-19, 1.805587092950118e-05, 1.6319982992745758e-13, 0.013432578848114536, 1.2545554428269374e-13, 1.9503003555766907e-05, 0.8471117639601156, 0.15005938783577835, 3.5012381446041904e-17, 2.9178406038454713e-12, 1.3804160793443013e-17, 1.3545227960164207e-08, 0.0028288347617502394, 0.9865298623614267, 1.7361655481905424e-19, 1.805587092950118e-05, 1.63199829927457e-13, 0.013432578848114536, 1.254555442826933e-13, 1.9503003555766907e-05], + [0.5560674176033417, 0.8520905848179434, 0.14605748668282195, 9.6782686836003e-19, 2.4643780363725447e-13, 3.10843823430886e-19, 2.6623928771617133e-09, 0.0018519259109773918, 0.9894923716524822, 2.9699797661774297e-21, 8.746343485533318e-06, 8.505889492913124e-15, 0.010491649570778729, 6.155926721001303e-15, 7.232568566898781e-06, 0.852090584817943, 0.14605748668282237, 9.6782686836003e-19, 2.4643780363725275e-13, 3.10843823430886e-19, 2.6623928771616943e-09, 0.0018519259109774132, 0.989492371652482, 2.9699797661774087e-21, 8.746343485533303e-06, 8.505889492913005e-15, 0.010491649570778756, 6.1559267210012156e-15, 7.23256856689873e-06, 0.8520905848179422, 0.14605748668282317, 9.678268683600161e-19, 2.4643780363725184e-13, 3.108438234308816e-19, 2.6623928771616943e-09, 0.0018519259109774, 0.989492371652482, 2.9699797661774087e-21, 8.746343485533396e-06, 8.505889492912883e-15, 0.010491649570778718, 6.155926721001128e-15, 7.232568566898742e-06], + [0.6079200058018024, 0.8566994854990617, 0.14214534077927746, 1.8620695659948222e-20, 1.6317662133891653e-14, 4.832774856514504e-21, 4.433429702933097e-10, 0.0011551733155185442, 0.992067762675644, 3.38806034470495e-23, 3.921302407194999e-06, 3.2765264843080516e-16, 0.007925891031098614, 2.233131719692633e-16, 2.4251839818241833e-06, 0.8566994854990612, 0.14214534077927796, 1.8620695659947824e-20, 1.631766213389148e-14, 4.832774856514436e-21, 4.4334297029330655e-10, 0.001155173315518536, 0.9920677626756441, 3.3880603447049017e-23, 3.92130240719504e-06, 3.2765264843079816e-16, 0.007925891031098593, 2.2331317196926015e-16, 2.4251839818241875e-06, 0.8566994854990607, 0.1421453407792784, 1.8620695659947692e-20, 1.631766213389148e-14, 4.832774856514401e-21, 4.4334297029330655e-10, 0.00115517331551853, 0.9920677626756441, 3.3880603447049017e-23, 3.9213024071950615e-06, 3.2765264843079584e-16, 0.007925891031098538, 2.2331317196925857e-16, 2.425183981824166e-06], + [0.6650360519765384, 0.8609629483187154, 0.13835418152344683, 2.4037878931501932e-22, 8.253387365892024e-16, 5.0064713089445634e-23, 6.146505083075805e-11, 0.0006828700910740777, 0.9942405813436481, 2.4722919438938736e-25, 1.6100200568186548e-06, 9.067776812756357e-18, 0.005757081286611147, 5.818364767373505e-18, 7.275796132627049e-07, 0.860962948318717, 0.13835418152344522, 2.4037878931502784e-22, 8.253387365892142e-16, 5.00647130894467e-23, 6.146505083075893e-11, 0.0006828700910740922, 0.994240581343648, 2.472291943893926e-25, 1.6100200568186376e-06, 9.067776812756744e-18, 0.005757081286611219, 5.818364767373794e-18, 7.275796132627166e-07, 0.8609629483187169, 0.13835418152344534, 2.4037878931502614e-22, 8.253387365892084e-16, 5.0064713089446345e-23, 6.146505083075827e-11, 0.0006828700910740807, 0.9942405813436481, 2.4722919438938736e-25, 1.6100200568186262e-06, 9.06777681275668e-18, 0.005757081286611168, 5.81836476737367e-18, 7.275796132627126e-07], + [0.7279579254105758, 0.8649073445412262, 0.13471230973188233, 1.9999630737760095e-24, 3.09841676870674e-17, 3.3226892232383167e-25, 6.960467133400208e-12, 0.0003803456689735554, 0.9960041535205371, 1.1022603330548997e-27, 5.984050183648861e-07, 1.7480727767165881e-19, 0.003995055243925229, 1.0548049874070044e-19, 1.9304812502161623e-07, 0.864907344541224, 0.13471230973188456, 1.9999630737759243e-24, 3.098416768706674e-17, 3.3226892232381987e-25, 6.96046713340011e-12, 0.0003803456689735554, 0.9960041535205371, 1.1022603330548683e-27, 5.984050183649009e-07, 1.748072776716464e-19, 0.00399505524392513, 1.0548049874069294e-19, 1.9304812502161247e-07, 0.8649073445412251, 0.13471230973188342, 1.9999630737759956e-24, 3.09841676870674e-17, 3.3226892232382694e-25, 6.960467133400233e-12, 0.0003803456689735625, 0.9960041535205371, 1.1022603330548841e-27, 5.984050183648967e-07, 1.7480727767165383e-19, 0.003995055243925229, 1.0548049874069745e-19, 1.9304812502161623e-07], + [0.7972779761750687, 0.868558841991891, 0.13124277454124453, 1.0261577008354249e-26, 8.36510346065858e-19, 1.3524676209016225e-27, 6.305551296563124e-13, 0.00019838337131510564, 0.997368397146844, 2.8553080381192945e-30, 1.9889435768501085e-07, 2.268856764697955e-21, 0.0026313593848131607, 1.284692140283733e-21, 4.473057175544622e-08, 0.868558841991892, 0.1312427745412435, 1.0261577008354322e-26, 8.36510346065858e-19, 1.3524676209016416e-27, 6.305551296563079e-13, 0.00019838337131510388, 0.9973683971468441, 2.8553080381192945e-30, 1.9889435768500553e-07, 2.268856764698019e-21, 0.0026313593848131442, 1.2846921402837696e-21, 4.473057175544606e-08, 0.8685588419918917, 0.1312427745412439, 1.0261577008354322e-26, 8.365103460658639e-19, 1.3524676209016321e-27, 6.305551296563147e-13, 0.00019838337131510564, 0.997368397146844, 2.855308038119335e-30, 1.9889435768500873e-07, 2.2688567646980034e-21, 0.002631359384813177, 1.2846921402837605e-21, 4.473057175544622e-08], + [0.8736401645772239, 0.8719421499368032, 0.1279615663103732, 3.0938207385288526e-29, 1.5693171073719064e-20, 3.215893303687544e-30, 4.4677351454039044e-14, 9.628362216794508e-05, 0.9983649442997192, 4.067375815650831e-33, 5.8394640877188987e-08, 1.908998948428958e-23, 0.001634988460722116, 1.0109798448232791e-23, 8.927747194492287e-09, 0.8719421499368015, 0.1279615663103749, 3.093820738528721e-29, 1.569317107371862e-20, 3.215893303687407e-30, 4.467735145403841e-14, 9.628362216794593e-05, 0.9983649442997192, 4.0673758156507734e-33, 5.839464087719127e-08, 1.9089989484288226e-23, 0.0016349884607221132, 1.0109798448232145e-23, 8.92774719449216e-09, 0.8719421499368024, 0.12796156631037395, 3.093820738528809e-29, 1.5693171073719064e-20, 3.2158933036874985e-30, 4.4677351454039044e-14, 9.628362216794661e-05, 0.9983649442997192, 4.067375815650831e-33, 5.839464087719023e-08, 1.9089989484289175e-23, 0.0016349884607221176, 1.0109798448232575e-23, 8.927747194492287e-09], + [0.9577428111119777, 0.8750798938192555, 0.12487690673432676, 5.198877260627158e-32, 1.9711759606633672e-22, 4.230262081337434e-33, 2.4164077799506384e-15, 4.3199293778272065e-05, 0.9990467196522542, 3.0005429496581184e-36, 1.4964136517165754e-08, 9.980744926999647e-26, 0.0009532639033623163, 4.9213836279542975e-26, 1.5123436167728406e-09, 0.8750798938192547, 0.1248769067343276, 5.198877260627083e-32, 1.9711759606633672e-22, 4.230262081337374e-33, 2.4164077799506214e-15, 4.319929377827176e-05, 0.9990467196522542, 3.0005429496581184e-36, 1.4964136517165916e-08, 9.980744926999433e-26, 0.0009532639033623078, 4.9213836279541574e-26, 1.5123436167728406e-09, 0.8750798938192543, 0.12487690673432787, 5.198877260627083e-32, 1.9711759606633672e-22, 4.230262081337374e-33, 2.4164077799506384e-15, 4.319929377827199e-05, 0.9990467196522543, 3.0005429496581184e-36, 1.4964136517166022e-08, 9.980744926999363e-26, 0.0009532639033623113, 4.9213836279541224e-26, 1.512343616772846e-09], + [1.0503442074894627, 0.8779923292635047, 0.12198987408807409, 4.5953472868253605e-35, 1.5925030704071335e-24, 2.8968935064676245e-36, 9.717795560177936e-17, 1.7796488653679617e-05, 0.9994807846369007, 1.0736378106876092e-39, 3.3085134453708996e-09, 3.092342378551763e-28, 0.0005192118501825991, 1.411642263151706e-28, 2.1398479345276552e-10, 0.8779923292635046, 0.12198987408807425, 4.5953472868253605e-35, 1.5925030704071335e-24, 2.8968935064676245e-36, 9.717795560177936e-17, 1.7796488653679366e-05, 0.9994807846369007, 1.0736378106876092e-39, 3.3085134453708996e-09, 3.0923423785517193e-28, 0.0005192118501825991, 1.411642263151706e-28, 2.139847934527625e-10, 0.8779923292635059, 0.121989874088073, 4.5953472868254915e-35, 1.592503070407145e-24, 2.8968935064676656e-36, 9.717795560178005e-17, 1.7796488653679397e-05, 0.9994807846369007, 1.0736378106876246e-39, 3.308513445370782e-09, 3.092342378551895e-28, 0.0005192118501825949, 1.4116422631517663e-28, 2.1398479345276552e-10], + [1.1522718371008798, 0.8806972311625095, 0.11929608528425938, 2.0051140744033926e-38, 7.92228651992529e-27, 9.65416984605832e-40, 2.824120956386453e-18, 6.683398073093816e-06, 0.999736844217178, 1.7344348979315318e-43, 6.238392287630768e-10, 5.385545141443227e-31, 0.0002631551365660924, 2.2605233286869794e-31, 2.4853110165290512e-11, 0.8806972311625086, 0.11929608528426028, 2.005114074403364e-38, 7.922286519925233e-27, 9.654169846058183e-40, 2.824120956386453e-18, 6.683398073093673e-06, 0.9997368442171779, 1.7344348979315318e-43, 6.2383922876309e-10, 5.385545141442997e-31, 0.00026315513656609193, 2.260523328686883e-31, 2.4853110165290512e-11, 0.8806972311625095, 0.11929608528425947, 2.005114074403421e-38, 7.922286519925345e-27, 9.65416984605832e-40, 2.824120956386473e-18, 6.683398073093852e-06, 0.999736844217178, 1.7344348979315563e-43, 6.238392287630812e-10, 5.385545141443227e-31, 0.0002631551365660938, 2.2605233286870114e-31, 2.48531101652906e-11], + [1.26443419565394, 0.8832099638187126, 0.11678776600936926, 4.027566117837788e-42, 2.3139554556067824e-29, 1.4535946598333248e-43, 5.748089381078071e-20, 2.2700282086832495e-06, 0.9998763816309699, 1.169305807319216e-47, 9.90780843268029e-11, 4.972551100682064e-34, 0.00012361826819935732, 1.903962015049326e-34, 2.3246270680431444e-12, 0.8832099638187121, 0.11678776600936977, 4.027566117837616e-42, 2.3139554556067168e-29, 1.4535946598333043e-43, 5.74808938107803e-20, 2.2700282086832415e-06, 0.9998763816309699, 1.1693058073191995e-47, 9.907808432680431e-11, 4.972551100681923e-34, 0.0001236182681993584, 1.903962015049272e-34, 2.324627068043153e-12, 0.8832099638187116, 0.11678776600937019, 4.027566117837616e-42, 2.3139554556067496e-29, 1.4535946598332836e-43, 5.748089381077989e-20, 2.2700282086832012e-06, 0.9998763816309699, 1.1693058073191995e-47, 9.907808432680642e-11, 4.972551100681782e-34, 0.0001236182681993562, 1.903962015049218e-34, 2.324627068043153e-12], + [1.3878332810536858, 0.8855437646360633, 0.11445554407707355, 3.448477414068303e-46, 3.765823344414656e-32, 9.114421596848784e-48, 7.915600608425862e-22, 6.911574054587089e-07, 0.9999464300922595, 3.016883248758455e-52, 1.3069764390256339e-11, 2.2822375935606385e-37, 5.356989462224837e-05, 7.900247349233735e-38, 1.7145527807566985e-13, 0.8855437646360624, 0.11445554407707441, 3.448477414068205e-46, 3.765823344414656e-32, 9.114421596848655e-48, 7.915600608425862e-22, 6.911574054586929e-07, 0.9999464300922596, 3.016883248758455e-52, 1.3069764390256849e-11, 2.2822375935605412e-37, 5.3569894622248937e-05, 7.900247349233398e-38, 1.7145527807566621e-13, 0.885543764636063, 0.11445554407707385, 3.448477414068303e-46, 3.765823344414656e-32, 9.114421596848655e-48, 7.915600608425862e-22, 6.911574054586966e-07, 0.9999464300922595, 3.016883248758455e-52, 1.3069764390256385e-11, 2.2822375935606064e-37, 5.356989462224846e-05, 7.900247349233622e-38, 1.7145527807566985e-13], + [1.5235763945500453, 0.8877101809734551, 0.11228963216059056, 1.1563365361856547e-50, 3.2232457588651025e-35, 2.1769485364067696e-52, 7.098282750164788e-24, 1.86751196609107e-07, 0.9999787086042218, 2.70771676740884e-57, 1.4090733293970143e-12, 4.851461898722786e-41, 2.1291394381947835e-05, 1.503138782305999e-41, 9.742020757044475e-15, 0.8877101809734557, 0.11228963216059001, 1.1563365361856383e-50, 3.2232457588651025e-35, 2.1769485364067388e-52, 7.098282750164688e-24, 1.8675119660910669e-07, 0.9999787086042217, 2.707716767408763e-57, 1.4090733293969693e-12, 4.851461898722924e-41, 2.1291394381947794e-05, 1.5031387823060203e-41, 9.742020757044475e-15, 0.887710180973455, 0.11228963216059061, 1.1563365361856547e-50, 3.2232457588651025e-35, 2.1769485364067696e-52, 7.098282750164839e-24, 1.8675119660911034e-07, 0.9999787086042218, 2.70771676740884e-57, 1.4090733293970594e-12, 4.851461898722855e-41, 2.129139438194802e-05, 1.503138782305999e-41, 9.742020757044475e-15], + [1.6728870927667658, 0.8897195346522966, 0.11028042097247874, 1.383098534154563e-55, 1.3613831608494325e-38, 1.796475481312993e-57, 3.973222236588209e-26, 4.427454602053445e-08, 0.9999922937143478, 7.609926312082515e-63, 1.2187258787942283e-13, 4.420297980280529e-45, 7.706285532981982e-06, 1.2122727978440444e-45, 4.1557179800487743e-16, 0.8897195346522978, 0.11028042097247748, 1.383098534154622e-55, 1.3613831608494518e-38, 1.796475481313095e-57, 3.97322223658835e-26, 4.427454602053524e-08, 0.9999922937143478, 7.609926312082515e-63, 1.2187258787942066e-13, 4.420297980280906e-45, 7.706285532982106e-06, 1.2122727978441306e-45, 4.155717980048863e-16, 0.8897195346522966, 0.11028042097247864, 1.383098534154563e-55, 1.3613831608494325e-38, 1.796475481313044e-57, 3.973222236588265e-26, 4.4274546020534605e-08, 0.9999922937143478, 7.609926312082515e-63, 1.2187258787942283e-13, 4.420297980280529e-45, 7.706285532981982e-06, 1.2122727978440444e-45, 4.1557179800487743e-16], + [1.8371159297859097, 0.8915813100687859, 0.10841868075045616, 5.324262838203572e-61, 2.6447685304319964e-42, 4.602699410328562e-63, 1.324725136652354e-28, 9.093153120921176e-09, 0.9999974812675186, 5.964304188127422e-69, 8.279496343984836e-15, 1.5855222292264366e-49, 2.518732473220309e-06, 3.8020722658418523e-50, 1.293497018986189e-17, 0.8915813100687852, 0.10841868075045688, 5.324262838203269e-61, 2.6447685304318836e-42, 4.6026994103284315e-63, 1.324725136652354e-28, 9.093153120920982e-09, 0.9999974812675186, 5.964304188127084e-69, 8.279496343984954e-15, 1.585522229226324e-49, 2.5187324732202464e-06, 3.802072265841582e-50, 1.2934970189861616e-17, 0.8915813100687868, 0.10841868075045524, 5.324262838203723e-61, 2.644768530432034e-42, 4.602699410328693e-63, 1.3247251366523727e-28, 9.093153120921016e-09, 0.9999974812675186, 5.964304188127592e-69, 8.279496343984424e-15, 1.5855222292265268e-49, 2.5187324732203493e-06, 3.8020722658421225e-50, 1.293497018986189e-17], + [2.01775179780387, 0.8933044236889223, 0.10669557464035445, 5.8900665267132543e-67, 2.1870594576143552e-46, 3.255892031466255e-69, 2.4984580049567328e-31, 1.5950845322270247e-09, 0.9999992637954785, 1.1474125834579529e-75, 4.314302088339855e-16, 2.0393692037868925e-54, 7.362045210172944e-07, 4.21872308377009e-55, 2.846784631176406e-19, 0.8933044236889216, 0.10669557464035516, 5.890066526713087e-67, 2.187059457614324e-46, 3.255892031466162e-69, 2.4984580049567328e-31, 1.5950845322270134e-09, 0.9999992637954785, 1.1474125834579529e-75, 4.314302088339947e-16, 2.0393692037867766e-54, 7.362045210172827e-07, 4.21872308376985e-55, 2.846784631176325e-19, 0.8933044236889223, 0.10669557464035445, 5.8900665267132543e-67, 2.1870594576143552e-46, 3.255892031466255e-69, 2.4984580049567328e-31, 1.5950845322270247e-09, 0.9999992637954784, 1.1474125834579529e-75, 4.314302088339855e-16, 2.0393692037868925e-54, 7.362045210172944e-07, 4.21872308377009e-55, 2.846784631176406e-19], + [2.216434489736535, 0.8948973822066568, 0.10510261749329304, 1.653135425541636e-73, 7.068631697124499e-51, 5.590154829397002e-76, 2.5180541230485206e-34, 2.3525588624247945e-10, 0.9999998096554712, 4.708255262017141e-83, 1.6793593869454123e-17, 8.489445258520496e-60, 1.9034452884033028e-07, 1.4926278192397933e-60, 4.2792966612973895e-21, 0.8948973822066574, 0.10510261749329257, 1.653135425541683e-73, 7.068631697124599e-51, 5.59015482939716e-76, 2.5180541230485565e-34, 2.3525588624248364e-10, 0.9999998096554711, 4.708255262017141e-83, 1.6793593869453886e-17, 8.489445258520737e-60, 1.9034452884032859e-07, 1.4926278192398782e-60, 4.279296661297511e-21, 0.8948973822066569, 0.1051026174932929, 1.6531354255417302e-73, 7.068631697124499e-51, 5.590154829397002e-76, 2.5180541230485565e-34, 2.352558862424828e-10, 0.9999998096554711, 4.7082552620172746e-83, 1.6793593869454003e-17, 8.489445258520737e-60, 1.90344528840335e-07, 1.4926278192398356e-60, 4.279296661297511e-21], + [2.4349688527173265, 0.8963683586755029, 0.10363164124076314, 1.026291844537178e-80, 8.128636260930711e-56, 2.0218509886547083e-83, 1.2737753336362836e-37, 2.867198665331452e-11, 0.9999999569952842, 3.530707056664618e-91, 4.742428833123195e-19, 1.0217702251738496e-65, 4.3004715734263545e-08, 1.5021658012129524e-66, 4.229226895521185e-23, 0.8963683586755027, 0.10363164124076328, 1.026291844537178e-80, 8.128636260930595e-56, 2.021850988654651e-83, 1.2737753336362836e-37, 2.8671986653312892e-11, 0.9999999569952842, 3.530707056664618e-91, 4.742428833123263e-19, 1.0217702251738206e-65, 4.30047157342637e-08, 1.5021658012129524e-66, 4.229226895521185e-23, 0.896368358675503, 0.10363164124076306, 1.0262918445371488e-80, 8.12863626093048e-56, 2.021850988654651e-83, 1.2737753336362475e-37, 2.8671986653313195e-11, 0.9999999569952842, 3.5307070566645176e-91, 4.742428833123128e-19, 1.0217702251738206e-65, 4.3004715734262626e-08, 1.5021658012129097e-66, 4.229226895521215e-23], + [2.675340714448954, 0.8977252181640403, 0.10227478178670601, 1.2119710259841236e-88, 2.9993165786570684e-61, 1.3182199222174314e-91, 3.018637390213599e-41, 2.8329865106933923e-12, 0.9999999916232527, 4.0821095033294774e-100, 9.407542275830682e-21, 3.1409733460541276e-72, 8.376747245662729e-09, 3.7924382264093926e-73, 2.6351241800670117e-25, 0.8977252181640405, 0.10227478178670579, 1.2119710259841236e-88, 2.9993165786570684e-61, 1.3182199222174688e-91, 3.0186373902136417e-41, 2.8329865106933524e-12, 0.9999999916232527, 4.0821095033294774e-100, 9.407542275830548e-21, 3.1409733460541276e-72, 8.376747245662997e-09, 3.7924382264093926e-73, 2.6351241800670117e-25, 0.8977252181640402, 0.10227478178670615, 1.2119710259841236e-88, 2.9993165786570684e-61, 1.3182199222174314e-91, 3.0186373902136417e-41, 2.8329865106934933e-12, 0.9999999916232527, 4.0821095033294774e-100, 9.407542275831016e-21, 3.1409733460540386e-72, 8.376747245662729e-09, 3.7924382264092845e-73, 2.6351241800670117e-25], + [2.939734674683812, 0.8989755176953335, 0.10102448226561062, 2.3062309146633438e-97, 3.1693526733466266e-67, 1.305341218967981e-100, 3.106532200900577e-45, 2.2221626237001945e-13, 0.9999999986139738, 6.035339863560387e-110, 1.2651747186112788e-22, 2.1516846231382125e-79, 1.386026151806463e-09, 2.0919010416694624e-80, 9.88437655741578e-28, 0.8989755176953336, 0.10102448226561053, 2.3062309146633438e-97, 3.1693526733466266e-67, 1.305341218967981e-100, 3.106532200900577e-45, 2.2221626237002814e-13, 0.9999999986139738, 6.035339863560387e-110, 1.2651747186112788e-22, 2.1516846231382125e-79, 1.386026151806463e-09, 2.091901041669522e-80, 9.88437655741578e-28, 0.8989755176953326, 0.10102448226561152, 2.3062309146632128e-97, 3.169352673346537e-67, 1.3053412189679066e-100, 3.106532200900577e-45, 2.2221626237002576e-13, 0.9999999986139739, 6.035339863560216e-110, 1.2651747186113148e-22, 2.1516846231380292e-79, 1.3860261518063693e-09, 2.091901041669284e-80, 9.88437655741578e-28], + [3.2305538424472506, 0.9001264964309977, 0.0998735035367427, 5.89148333540535e-107, 8.463388851231952e-74, 1.625933826387164e-110, 1.2771680920946467e-49, 1.352112516829849e-14, 0.9999999998083502, 9.28886221617417e-121, 1.1093266712490566e-24, 2.8270955272258733e-87, 1.916498418798133e-10, 2.1655762930046467e-88, 2.1215693390998198e-30, 0.9001264964309978, 0.09987350353674257, 5.891483335405518e-107, 8.463388851231952e-74, 1.625933826387164e-110, 1.2771680920946467e-49, 1.3521125168299115e-14, 0.9999999998083502, 9.28886221617417e-121, 1.1093266712490487e-24, 2.8270955272258733e-87, 1.916498418798133e-10, 2.1655762930046467e-88, 2.1215693390998198e-30, 0.9001264964309976, 0.09987350353674274, 5.891483335405016e-107, 8.463388851231471e-74, 1.625933826387025e-110, 1.2771680920945742e-49, 1.3521125168297914e-14, 0.9999999998083502, 9.288862216173642e-121, 1.1093266712490092e-24, 2.8270955272257125e-87, 1.9164984187980446e-10, 2.1655762930045237e-88, 2.1215693390997595e-30], + [3.55044163136182, 0.9011850646894335, 0.09881493528397896, 1.6529192706961072e-117, 4.9772917002681685e-81, 2.07054562819559e-121, 1.9136552583128814e-54, 6.221745220197493e-16, 0.999999999978249, 1.1868125149076069e-132, 6.074952845202986e-27, 6.040571787704901e-96, 2.1751055659247976e-11, 3.5596043723239453e-97, 2.4641764158049515e-33, 0.9011850646894329, 0.09881493528397944, 1.6529192706961072e-117, 4.977291700267886e-81, 2.07054562819559e-121, 1.9136552583128814e-54, 6.221745220197315e-16, 0.999999999978249, 1.1868125149076069e-132, 6.0749528452031156e-27, 6.040571787704557e-96, 2.1751055659247048e-11, 3.559604372323642e-97, 2.4641764158049515e-33, 0.9011850646894342, 0.09881493528397825, 1.6529192706961072e-117, 4.977291700268027e-81, 2.070545628195708e-121, 1.9136552583128542e-54, 6.221745220197536e-16, 0.999999999978249, 1.1868125149076069e-132, 6.0749528452025976e-27, 6.040571787705416e-96, 2.175105565924674e-11, 3.5596043723241475e-97, 2.4641764158050566e-33], + [3.9023057702998396, 0.9021577955366205, 0.09784220444160495, 4.083726625340816e-129, 5.541044080230446e-89, 2.1459846218596437e-133, 9.446537419866416e-60, 2.105360406384707e-17, 0.9999999999980135, 9.81404573487738e-146, 1.9818778913995036e-29, 1.7504564722631805e-105, 1.986553481653399e-12, 7.729467593244884e-107, 1.4565144443285734e-36, 0.9021577955366193, 0.09784220444160613, 4.083726625340584e-129, 5.541044080229973e-89, 2.1459846218595217e-133, 9.44653741986561e-60, 2.105360406384647e-17, 0.9999999999980135, 9.814045734876265e-146, 1.981877891399757e-29, 1.7504564722628324e-105, 1.9865534816531658e-12, 7.729467593243127e-107, 1.4565144443283457e-36, 0.9021577955366192, 0.09784220444160621, 4.083726625340584e-129, 5.541044080229973e-89, 2.1459846218595217e-133, 9.446537419865878e-60, 2.105360406384722e-17, 0.9999999999980135, 9.814045734876265e-146, 1.9818778913996162e-29, 1.750456472262783e-105, 1.9865534816532506e-12, 7.729467593242907e-107, 1.4565144443284286e-36], + [4.289344727966155, 0.9030509200917859, 0.09694907989049359, 6.968185240244092e-142, 9.886491339275773e-98, 1.4085774621025528e-146, 1.3748015885254732e-65, 5.080347683825735e-19, 0.9999999999998571, 3.994273735496457e-160, 3.6566868655060576e-32, 5.634235092059166e-116, 1.428640909487193e-13, 1.8111388608080674e-117, 4.094874176427558e-40, 0.9030509200917852, 0.09694907989049428, 6.968185240243697e-142, 9.886491339275212e-98, 1.4085774621024727e-146, 1.3748015885253952e-65, 5.080347683825951e-19, 0.9999999999998571, 3.9942737354962294e-160, 3.656686865506421e-32, 5.634235092058206e-116, 1.4286409094871373e-13, 1.8111388608078617e-117, 4.0948741764273244e-40, 0.9030509200917853, 0.09694907989049424, 6.968185240243697e-142, 9.886491339275493e-98, 1.4085774621024727e-146, 1.3748015885254342e-65, 5.08034768382577e-19, 0.9999999999998571, 3.9942737354962294e-160, 3.656686865506265e-32, 5.634235092058206e-116, 1.428640909487244e-13, 1.8111388608078617e-117, 4.094874176427383e-40], + [4.7150767840342205, 0.9038703265604573, 0.0961296734252072, 6.28591504396003e-156, 2.3540614529873114e-107, 4.443293092342831e-161, 5.22044894969366e-72, 8.451138388020413e-21, 0.9999999999999921, 5.9202181580372494e-176, 3.6036916078768524e-35, 1.61707310534329e-127, 7.898771243092942e-15, 3.6656826678914946e-129, 5.083574914454381e-44, 0.9038703265604567, 0.09612967342520788, 6.285915043959315e-156, 2.3540614529871774e-107, 4.443293092342327e-161, 5.220448949693067e-72, 8.451138388019752e-21, 0.9999999999999921, 5.920218158036913e-176, 3.603691607877006e-35, 1.6170731053430143e-127, 7.898771243092661e-15, 3.665682667890661e-129, 5.0835749144540925e-44, 0.9038703265604578, 0.09612967342520677, 6.285915043960387e-156, 2.354061452987445e-107, 4.443293092343084e-161, 5.220448949693809e-72, 8.451138388020774e-21, 0.9999999999999921, 5.920218158037586e-176, 3.60369160787675e-35, 1.617073105343382e-127, 7.89877124309339e-15, 3.665682667891911e-129, 5.08357491445467e-44], + [5.183372008757476, 0.904621562617298, 0.0953784373711699, 2.2342075535715974e-171, 6.115600014291357e-118, 4.972478328181077e-177, 4.521815198879185e-79, 9.33736705845985e-23, 0.9999999999999997, 2.294319803103881e-193, 1.7813488178089658e-38, 3.250083331044403e-140, 3.270256820640267e-16, 5.0169357870183605e-142, 2.5679899723044365e-48, 0.904621562617298, 0.0953784373711699, 2.2342075535715974e-171, 6.115600014291705e-118, 4.972478328181077e-177, 4.5218151988793136e-79, 9.337367058459981e-23, 0.9999999999999997, 2.2943198031040113e-193, 1.78134881780889e-38, 3.250083331044403e-140, 3.2702568206404065e-16, 5.016935787018645e-142, 2.5679899723045824e-48, 0.9046215626172985, 0.09537843737116926, 2.234207553571851e-171, 6.115600014291705e-118, 4.972478328181077e-177, 4.521815198879185e-79, 9.337367058459981e-23, 0.9999999999999997, 2.2943198031040113e-193, 1.781348817808738e-38, 3.2500833310449574e-140, 3.2702568206404065e-16, 5.0169357870192156e-142, 2.5679899723045824e-48], + [5.698487441193714, 0.9053098406671283, 0.09469015932364336, 2.2643157668340384e-188, 1.3889262700643372e-129, 1.4137597584803226e-194, 7.706474441398385e-87, 6.577145626949955e-25, 1.0, 1.614747607634587e-212, 4.1215161928984203e-42, 3.506653149235928e-154, 9.84963084437655e-18, 3.546897011890229e-156, 4.824530096396539e-53, 0.9053098406671279, 0.09469015932364382, 2.2643157668337807e-188, 1.3889262700642582e-129, 1.413759758480242e-194, 7.706474441398166e-87, 6.577145626949627e-25, 1.0, 1.614747607634587e-212, 4.1215161928985956e-42, 3.506653149235529e-154, 9.849630844375991e-18, 3.5468970118898257e-156, 4.824530096396196e-53, 0.905309840667128, 0.09469015932364357, 2.2643157668340384e-188, 1.3889262700643372e-129, 1.4137597584803226e-194, 7.706474441398605e-87, 6.577145626949955e-25, 1.0, 1.6147476076346787e-212, 4.12151619289883e-42, 3.506653149235928e-154, 9.84963084437655e-18, 3.546897011890229e-156, 4.824530096396539e-53], + [6.2651057857265835, 0.9059400455145749, 0.09405995447807664, 4.584756688257331e-207, 2.1611709957250255e-142, 7.0729957274594145e-214, 2.1964338655752625e-95, 2.823532545653466e-27, 1.0, 1.3822320872594884e-233, 4.136537052263728e-46, 1.516151115338007e-169, 2.0904854842578888e-19, 9.632378105542507e-172, 3.053452013040331e-58, 0.905940045514575, 0.09405995447807651, 4.584756688257592e-207, 2.1611709957251482e-142, 7.072995727460219e-214, 2.196433865575325e-95, 2.823532545653727e-27, 1.0, 1.3822320872596455e-233, 4.136537052263787e-46, 1.516151115338093e-169, 2.0904854842580819e-19, 9.632378105543602e-172, 3.053452013040678e-58, 0.9059400455145757, 0.09405995447807572, 4.584756688258635e-207, 2.1611709957255168e-142, 7.0729957274614245e-214, 2.1964338655755123e-95, 2.8235325456538072e-27, 1.0, 1.3822320872598026e-233, 4.136537052263552e-46, 1.516151115338524e-169, 2.0904854842581859e-19, 9.632378105546339e-172, 3.0534520130408516e-58], + [6.888377978645246, 0.9065167440013232, 0.09348325599285194, 1.2540630940653507e-227, 1.762119978207158e-156, 4.157149807969038e-235, 8.754274811590682e-105, 7.030291634221071e-30, 1.0, 9.259008177251644e-257, 1.6563568406274255e-50, 1.9044142330774867e-186, 3.0189407564028494e-21, 7.253955848877054e-189, 5.839052954908269e-64, 0.9065167440013235, 0.09348325599285169, 1.2540630940653507e-227, 1.762119978207158e-156, 4.157149807969511e-235, 8.754274811590682e-105, 7.030291634220571e-30, 1.0, 9.259008177250591e-257, 1.656356840627355e-50, 1.904414233077595e-186, 3.0189407564030424e-21, 7.253955848877467e-189, 5.839052954908767e-64, 0.9065167440013224, 0.09348325599285269, 1.254063094065208e-227, 1.762119978207158e-156, 4.157149807969038e-235, 8.754274811589935e-105, 7.030291634220372e-30, 1.0, 9.259008177250591e-257, 1.6563568406276137e-50, 1.904414233077054e-186, 3.0189407564025703e-21, 7.253955848875405e-189, 5.839052954908269e-64], + [7.573970011735235, 0.9070441962057904, 0.09295580378961227, 3.013074808858345e-250, 5.605856812101675e-172, 1.84054299400838e-258, 4.0078797951887264e-115, 9.614148333331012e-33, 1.0, 2.988037866024948e-282, 2.413477286310019e-55, 4.878625328427674e-205, 2.854387559374387e-23, 1.0585236031077093e-207, 2.993121116113453e-70, 0.9070441962057907, 0.09295580378961191, 3.013074808858345e-250, 5.605856812101995e-172, 1.84054299400838e-258, 4.0078797951887264e-115, 9.61414833333033e-33, 1.0, 2.988037866024948e-282, 2.4134772863096416e-55, 4.878625328428228e-205, 2.8543875593742854e-23, 1.0585236031078296e-207, 2.993121116113453e-70, 0.9070441962057905, 0.09295580378961214, 3.013074808858345e-250, 5.605856812101675e-172, 1.84054299400838e-258, 4.0078797951887264e-115, 9.61414833333033e-33, 1.0, 2.988037866024948e-282, 2.4134772863096416e-55, 4.878625328427951e-205, 2.85438755937459e-23, 1.0585236031077694e-207, 2.993121116113453e-70], + [8.328114438530923, 0.9075263678384401, 0.09247363215794581, 3.960570686132162e-275, 5.030664955515958e-189, 3.7648465143165796e-284, 1.6975022589496908e-126, 6.800967526086913e-36, 1.0, 2.72465258097895e-310, 1.1565038871068953e-60, 1.7271556990994546e-225, 1.693637252478439e-25, 2.0177583727317996e-228, 3.6054042854229925e-77, 0.9075263678384403, 0.09247363215794552, 3.9605706861326125e-275, 5.030664955516244e-189, 3.7648465143161514e-284, 1.6975022589497873e-126, 6.80096752608614e-36, 1.0, 2.7246525809786e-310, 1.1565038871068953e-60, 1.727155699099651e-225, 1.693637252478439e-25, 2.017758372732029e-228, 3.6054042854229925e-77, 0.9075263678384403, 0.09247363215794548, 3.9605706861326125e-275, 5.030664955516529e-189, 3.7648465143165796e-284, 1.6975022589497873e-126, 6.800967526087203e-36, 1.0, 2.72465258097895e-310, 1.1565038871069609e-60, 1.727155699099651e-225, 1.6936372524784872e-25, 2.017758372732029e-228, 3.605404285423095e-77], + [9.157667031446321, 0.9079669435051555, 0.09203305649201374, 1.6918806828937274e-302, 8.912807925470755e-208, 2.07807899078e-312, 5.242245569372453e-139, 2.3297835674736612e-39, 1.0, 0.0, 1.630479840703893e-66, 5.507324419535134e-248, 6.019153362664372e-28, 3.256218143116319e-251, 8.829391816417935e-85, 0.9079669435051553, 0.09203305649201407, 1.6918806828937274e-302, 8.912807925470755e-208, 2.07807899078e-312, 5.242245569372453e-139, 2.3297835674736612e-39, 1.0, 0.0, 1.6304798407041246e-66, 5.507324419534508e-248, 6.019153362664372e-28, 3.2562181431159488e-251, 8.829391816417935e-85, 0.9079669435051559, 0.09203305649201338, 1.6918806828937274e-302, 8.912807925470755e-208, 2.07807899078e-312, 5.242245569372155e-139, 2.3297835674736612e-39, 1.0, 0.0, 1.630479840703893e-66, 5.507324419535761e-248, 6.019153362664415e-28, 3.256218143116319e-251, 8.829391816417935e-85], + [10.070169104825005, 0.9083693405501666, 0.09163065944762384, 0.0, 2.1054346797203e-228, 0.0, 9.084634699369028e-153, 3.594552771988447e-43, 1.0, 0.0, 5.983653343828771e-73, 9.876615112708117e-273, 1.2172861566884522e-30, 2.760754367332342e-276, 3.7485592355671486e-93, 0.9083693405501669, 0.09163065944762352, 0.0, 2.1054346797203e-228, 0.0, 9.084634699369028e-153, 3.594552771988805e-43, 1.0, 0.0, 5.98365334382775e-73, 9.87661511270924e-273, 1.2172861566884175e-30, 2.760754367332342e-276, 3.7485592355671486e-93, 0.9083693405501663, 0.09163065944762414, 0.0, 2.1054346797205394e-228, 0.0, 9.084634699368512e-153, 3.594552771988652e-43, 1.0, 0.0, 5.983653343829112e-73, 9.876615112708117e-273, 1.2172861566883139e-30, 2.7607543673320282e-276, 3.748559235567255e-93], + [11.073916070457162, 0.9087367232280572, 0.09126327677022358, 0.0, 4.306189440654568e-251, 0.0, 6.623388463198677e-168, 2.3062611170398015e-47, 1.0, 0.0, 4.9957800397940755e-80, 5.934220552131512e-300, 1.324039088276458e-33, 7.275852359654876e-304, 2.315504745134802e-102, 0.9087367232280575, 0.09126327677022335, 0.0, 4.306189440655057e-251, 0.0, 6.623388463199054e-168, 2.3062611170395064e-47, 1.0, 0.0, 4.995780039793791e-80, 5.934220552132187e-300, 1.3240390882765897e-33, 7.275852359655704e-304, 2.315504745134802e-102, 0.9087367232280582, 0.09126327677022257, 0.0, 4.306189440655057e-251, 0.0, 6.623388463199054e-168, 2.306261117039736e-47, 1.0, 0.0, 4.9957800397927976e-80, 5.934220552134211e-300, 1.324039088276759e-33, 7.2758523596581855e-304, 2.315504745134802e-102], + [12.178032848770526, 0.9090720169906499, 0.09092798300801634, 0.0, 4.742461372926014e-276, 0.0, 1.4798772957177562e-184, 5.636271090456106e-52, 1.0, 0.0, 8.182438289974543e-88, 0.0, 7.279802775174975e-37, 0.0, 1.7161492181882205e-112, 0.9090720169906501, 0.09092798300801615, 0.0, 4.742461372926014e-276, 0.0, 1.4798772957179245e-184, 5.636271090455866e-52, 1.0, 0.0, 8.18243828997431e-88, 0.0, 7.279802775174768e-37, 0.0, 1.7161492181886108e-112, 0.9090720169906499, 0.09092798300801642, 0.0, 4.742461372926014e-276, 0.0, 1.4798772957179245e-184, 5.636271090457148e-52, 1.0, 0.0, 8.182438289976171e-88, 0.0, 7.2798027751762165e-37, 0.0, 1.7161492181886108e-112], + [13.392556821226608, 0.9093779227086107, 0.09062207729035733, 0.0, 1.6679497687817095e-303, 0.0, 7.15111131716824e-203, 4.7639762343016207e-57, 1.0, 0.0, 2.2337265064347756e-96, 0.0, 1.889797605300964e-40, 0.0, 1.2345287566008345e-123, 0.9093779227086107, 0.09062207729035729, 0.0, 1.6679497687817095e-303, 0.0, 7.151111317167833e-203, 4.7639762343021623e-57, 1.0, 0.0, 2.233726506434712e-96, 0.0, 1.8897976053012593e-40, 0.0, 1.2345287566008345e-123, 0.9093779227086111, 0.09062207729035696, 0.0, 1.667949768781899e-303, 0.0, 7.151111317168646e-203, 4.763976234301892e-57, 1.0, 0.0, 2.233726506434585e-96, 0.0, 1.8897976053012055e-40, 0.0, 1.2345287566008345e-123], + [14.728529078011167, 0.9096569306789878, 0.0903430693202158, 0.0, 0.0, 0.0, 5.093506265644792e-223, 1.2523453669042715e-62, 1.0, 0.0, 8.495632462990737e-106, 0.0, 2.1487753446996915e-44, 0.0, 6.826279352937696e-136, 0.9096569306789878, 0.09034306932021573, 0.0, 0.0, 0.0, 5.093506265645371e-223, 1.2523453669043426e-62, 1.0, 0.0, 8.49563246298977e-106, 0.0, 2.1487753447004244e-44, 0.0, 6.82627935293886e-136, 0.9096569306789878, 0.09034306932021575, 0.0, 0.0, 0.0, 5.093506265644792e-223, 1.2523453669042003e-62, 1.0, 0.0, 8.495632462990495e-106, 0.0, 2.148775344700058e-44, 0.0, 6.826279352937696e-136], + [16.198094790521147, 0.9099113342983522, 0.09008866570103442, 0.0, 0.0, 0.0, 3.507507188224689e-245, 9.110174430073964e-69, 1.0, 0.0, 3.696138687719058e-116, 0.0, 9.853501392188737e-49, 0.0, 2.2447798161480893e-149, 0.9099113342983521, 0.0900886657010345, 0.0, 0.0, 0.0, 3.507507188225088e-245, 9.110174430076035e-69, 1.0, 0.0, 3.6961386877198984e-116, 0.0, 9.853501392190978e-49, 0.0, 2.2447798161480893e-149, 0.9099113342983522, 0.0900886657010345, 0.0, 0.0, 0.0, 3.507507188225088e-245, 9.110174430076035e-69, 1.0, 0.0, 3.6961386877198984e-116, 0.0, 9.853501392190978e-49, 0.0, 2.2447798161480893e-149], + [17.81461362110428, 0.9101432433067373, 0.08985675669279142, 0.0, 0.0, 0.0, 1.468406960156387e-269, 1.61278379563649e-75, 1.0, 0.0, 1.4807964120373815e-127, 0.0, 1.6640735503459335e-53, 0.0, 3.3105315596100948e-164, 0.9101432433067377, 0.08985675669279106, 0.0, 0.0, 0.0, 1.468406960156554e-269, 1.612783795636765e-75, 1.0, 0.0, 1.4807964120372973e-127, 0.0, 1.6640735503462882e-53, 0.0, 3.3105315596108474e-164, 0.9101432433067377, 0.08985675669279101, 0.0, 0.0, 0.0, 1.468406960156554e-269, 1.6127837956367192e-75, 1.0, 0.0, 1.4807964120372973e-127, 0.0, 1.6640735503462645e-53, 0.0, 3.3105315596108474e-164], + [19.59278117375748, 0.9103545965300232, 0.08964540346961544, 0.0, 0.0, 0.0, 2.243579114987159e-296, 6.032421007671437e-83, 1.0, 0.0, 4.303560135314193e-140, 0.0, 9.36594236321522e-59, 0.0, 1.6051900169511605e-180, 0.910354596530024, 0.08964540346961465, 0.0, 0.0, 0.0, 2.243579114987159e-296, 6.032421007671437e-83, 1.0, 0.0, 4.30356013531297e-140, 0.0, 9.365942363217881e-59, 0.0, 1.6051900169516166e-180, 0.9103545965300237, 0.08964540346961489, 0.0, 0.0, 0.0, 2.243579114987159e-296, 6.032421007671437e-83, 1.0, 0.0, 4.30356013531297e-140, 0.0, 9.365942363217881e-59, 0.0, 1.6051900169511605e-180], + [21.548762589864065, 0.9105471740679978, 0.08945282593172557, 0.0, 0.0, 0.0, 0.0, 4.080887824165743e-91, 1.0, 0.0, 6.978756055485732e-154, 0.0, 1.573996923938992e-64, 0.0, 1.8186437027707314e-198, 0.9105471740679987, 0.08945282593172461, 0.0, 0.0, 0.0, 0.0, 4.080887824167367e-91, 1.0, 0.0, 6.978756055484939e-154, 0.0, 1.5739969239393055e-64, 0.0, 1.8186437027712482e-198, 0.910547174067998, 0.08945282593172534, 0.0, 0.0, 0.0, 0.0, 4.0808878241660914e-91, 1.0, 0.0, 6.978756055484939e-154, 0.0, 1.5739969239388133e-64, 0.0, 1.818643702770628e-198] + ] +} diff --git a/tests/test_games/golden_logit/strategy_coordination_2x2_to_lambda_20.json b/tests/test_games/golden_logit/strategy_coordination_2x2_to_lambda_20.json new file mode 100644 index 000000000..b4a1982a6 --- /dev/null +++ b/tests/test_games/golden_logit/strategy_coordination_2x2_to_lambda_20.json @@ -0,0 +1,122 @@ +{ + "counts": [{"predictor_attempts": 180, "accepted_steps": 116, "rejected_distance": 0, "rejected_contraction": 14, "rejected_orientation": 50, "corrector_iterations": 292, "function_evals": 292, "jacobian_evals": 181, "factorizations": 181}], + "points": [ + [0.0, 0.5, 0.5, 0.5, 0.5], + [0.03, 0.5, 0.5, 0.5, 0.5], + [0.063, 0.5, 0.5, 0.5, 0.5], + [0.0993, 0.5, 0.5, 0.5, 0.5], + [0.13923000000000002, 0.5, 0.5, 0.5, 0.5], + [0.18315300000000004, 0.5, 0.5, 0.5, 0.5], + [0.23146830000000004, 0.5, 0.5, 0.5, 0.5], + [0.28461513000000005, 0.5, 0.5, 0.5, 0.5], + [0.34307664300000007, 0.5, 0.5, 0.5, 0.5], + [0.4073843073000001, 0.5, 0.5, 0.5, 0.5], + [0.4781227380300001, 0.5, 0.5, 0.5, 0.5], + [0.5559350118330001, 0.5, 0.5, 0.5, 0.5], + [0.6415285130163001, 0.5, 0.5, 0.5, 0.5], + [0.7356813643179301, 0.5, 0.5, 0.5, 0.5], + [0.8392495007497232, 0.5, 0.5, 0.5, 0.5], + [0.9531744508246955, 0.5, 0.5, 0.5, 0.5], + [1.078491895907165, 0.5, 0.5, 0.5, 0.5], + [1.2163410854978816, 0.5, 0.5, 0.5, 0.5], + [1.3679751940476697, 0.5, 0.5, 0.5, 0.5], + [1.5347727134524367, 0.5, 0.5, 0.5, 0.5], + [1.7182499847976804, 0.5, 0.5, 0.5, 0.5], + [1.9200749832774484, 0.5, 0.5, 0.5, 0.5], + [1.9978872570804485, 0.5000237164801274, 0.49997638464002897, 0.5000237164801274, 0.49997638464002897], + [1.9995336633620036, 0.500099377850755, 0.49990071446975587, 0.500099377850755, 0.49990071446975587], + [1.999565279389791, 0.5001038560014656, 0.4998962445418218, 0.5001038560014656, 0.4998962445418218], + [1.9997582132135552, 0.5002197683410889, 0.4997803325058312, 0.5002197683410889, 0.4997803325058312], + [1.9998671114590454, 0.5003756453912703, 0.49962445460948074, 0.5003756453912703, 0.49962445460948074], + [1.999913489902064, 0.5005735469552096, 0.49942655304485567, 0.5005735469552096, 0.49942655304485567], + [1.9999384522053767, 0.5007934220807649, 0.49920667791924905, 0.5007934220807649, 0.49920667791924905], + [1.9999543963495243, 0.5010359955878991, 0.49896410441211114, 0.5010359955878991, 0.49896410441211114], + [1.9999659472848517, 0.501302852256995, 0.49869724774301527, 0.501302852256995, 0.49869724774301527], + [1.9999752743703423, 0.5015964080787951, 0.4984036919212198, 0.5015964080787951, 0.4984036919212198], + [1.999983571461683, 0.5019193209831351, 0.4980807790168867, 0.5019193209831351, 0.4980807790168867], + [1.9999916123514805, 0.5022745241637443, 0.49772557583628757, 0.5022745241637443, 0.49772557583628757], + [1.9999999819881458, 0.50266524432566, 0.49733485567438673, 0.50266524432566, 0.49733485567438673], + [2.0000091891407887, 0.5030950308149954, 0.4969050691850728, 0.5030950308149954, 0.4969050691850728], + [2.0000197298760862, 0.5035677873887795, 0.4964323126113205, 0.5035677873887795, 0.4964323126113205], + [2.000032129487268, 0.5040878073031881, 0.4959122926969582, 0.5040878073031881, 0.4959122926969582], + [2.0000469751868253, 0.5046598118733002, 0.49534028812691394, 0.5046598118733002, 0.49534028812691394], + [2.0000649457430697, 0.5052889927943096, 0.494711107206004, 0.5052889927943096, 0.494711107206004], + [2.0000868416031414, 0.5059810585479569, 0.4940190414525021, 0.5059810585479569, 0.4940190414525021], + [2.0001136178812775, 0.5067422852437441, 0.4932578147569279, 0.5067422852437441, 0.4932578147569279], + [2.0001464221115897, 0.5075795722648349, 0.492420527736149, 0.5075795722648349, 0.492420527736149], + [2.0001866385319245, 0.5085005031031962, 0.4914995968982441, 0.5085005031031962, 0.4914995968982441], + [2.0002359407353523, 0.509513411776218, 0.49048668822589025, 0.509513411776218, 0.49048668822589025], + [2.000296354730759, 0.5106274552148882, 0.4893726447881981, 0.5106274552148882, 0.4893726447881981], + [2.0003703347688955, 0.5118526919974625, 0.488147408007055, 0.5118526919974625, 0.488147408007055], + [2.0004608547048885, 0.5132001677667942, 0.48679993223981805, 0.5132001677667942, 0.48679993223981805], + [2.000571518187841, 0.5146820076064292, 0.48531809240324814, 0.5146820076064292, 0.48531809240324814], + [2.0007066916005627, 0.5163115155501448, 0.4836885844640177, 0.5163115155501448, 0.4836885844640177], + [2.0008716644322626, 0.5181032812484403, 0.4818968187722837, 0.5181032812484403, 0.4818968187722837], + [2.0010728426710944, 0.5200732935961861, 0.4799268064341355, 0.5200732935961861, 0.4799268064341355], + [2.001317981869725, 0.5222390608155839, 0.4777610392287739, 0.5222390608155839, 0.4777610392287739], + [2.0016164677852997, 0.5246197360588017, 0.4753803640060777, 0.5246197360588017, 0.4753803640060777], + [2.001979653942656, 0.5272362470083138, 0.4727638530865602, 0.5272362470083138, 0.4727638530865602], + [2.002421267129449, 0.5301114271640421, 0.46988867297465614, 0.5301114271640421, 0.46988867297465614], + [2.00295789370874, 0.5332701454583385, 0.46672995474435974, 0.5332701454583385, 0.46672995474435974], + [2.003609561718699, 0.5367394294648951, 0.4632606708312148, 0.5367394294648951, 0.4632606708312148], + [2.0044004359866543, 0.5405485756873313, 0.45945152474502293, 0.5405485756873313, 0.45945152474502293], + [2.005359645847879, 0.5447292381410165, 0.45527086248988485, 0.5447292381410165, 0.45527086248988485], + [2.006522268316012, 0.5493154830252869, 0.45068461697475287, 0.5493154830252869, 0.45068461697475287], + [2.007930485783576, 0.5543437974584599, 0.4456563025416102, 0.5543437974584599, 0.4456563025416102], + [2.0096349557165234, 0.5598530256610392, 0.4401470743390841, 0.5598530256610392, 0.4401470743390841], + [2.0116964043328847, 0.565884217416658, 0.4341158825835584, 0.565884217416658, 0.4341158825835584], + [2.0141874806869295, 0.572480352744198, 0.4275197472561811, 0.572480352744198, 0.4275197472561811], + [2.0171948908520507, 0.5796859099345475, 0.4203141900661147, 0.5796859099345475, 0.4203141900661147], + [2.020821831308829, 0.5875462360987845, 0.4124538639023683, 0.5875462360987845, 0.4124538639023683], + [2.025190731614871, 0.5961066759704785, 0.4038934240315201, 0.5961066759704785, 0.4038934240315201], + [2.0304463042916225, 0.6054114137838227, 0.39458868621962295, 0.6054114137838227, 0.39458868621962295], + [2.036758884038456, 0.6155019869364466, 0.38449811306945286, 0.6155019869364466, 0.38449811306945286], + [2.0443280197821863, 0.6264154411646555, 0.3735846588453603, 0.6264154411646555, 0.3735846588453603], + [2.053386263855924, 0.6381821174942173, 0.36181798252260894, 0.6381821174942173, 0.36181798252260894], + [2.0642030864850955, 0.6508230931193117, 0.34917700690859554, 0.6508230931193117, 0.34917700690859554], + [2.077088835937501, 0.6643473419947385, 0.33565275805083666, 0.6643473419947385, 0.33565275805083666], + [2.0923986711626803, 0.6787487341910787, 0.3212513658819941, 0.6787487341910787, 0.3212513658819941], + [2.110536419776267, 0.6940030505027492, 0.3059970496119223, 0.6940030505027492, 0.3059970496119223], + [2.1319583621287292, 0.7100652415117684, 0.28993485866380286, 0.7100652415117684, 0.28993485866380286], + [2.1571770088300366, 0.7268671971199449, 0.27313290314151417, 0.7268671971199449, 0.27313290314151417], + [2.1867650144939086, 0.7443163026311135, 0.25568379774650474, 0.7443163026311135, 0.25568379774650474], + [2.2213594383941624, 0.7622950337678773, 0.23770506675971104, 0.7622950337678773, 0.23770506675971104], + [2.261666604121755, 0.7806617853222283, 0.21933831538932966, 0.7806617853222283, 0.21933831538932966], + [2.3084678087211614, 0.7992530439461362, 0.2007470569787334, 0.7992530439461362, 0.2007470569787334], + [2.3626260787707625, 0.8178869179742598, 0.1821131831828687, 0.8178869179742598, 0.1821131831828687], + [2.4250940692216405, 0.836367940346403, 0.16363216104594816, 0.836367940346403, 0.16363216104594816], + [2.4969230637665327, 0.8544929751440404, 0.14550712646632483, 0.8544929751440404, 0.14550712646632483], + [2.5792731621509417, 0.872057878562078, 0.1279421232277161, 0.872057878562078, 0.1279421232277161], + [2.6734226372125667, 0.8888652742654266, 0.11113472764361332, 0.8888652742654266, 0.11113472764361332], + [2.780780197209899, 0.9047314506631622, 0.09526855129103581, 0.9047314506631622, 0.09526855129103581], + [2.9028940099296356, 0.9194941888844599, 0.08050581303274948, 0.9194941888844599, 0.08050581303274948], + [3.041461142854053, 0.9330194414983936, 0.06698056030151885, 0.9330194414983936, 0.06698056030151885], + [3.1983352318099674, 0.945207076629403, 0.054792924984255816, 0.945207076629403, 0.054792924984255816], + [3.375532313667437, 0.9559951364953949, 0.044004864882404654, 0.955995136495395, 0.044004864882404654], + [3.5752347414787957, 0.9653622194399069, 0.03463778167675893, 0.9653622194399069, 0.03463778167675893], + [3.7997934887932705, 0.9733276938428156, 0.026672307012767727, 0.9733276938428156, 0.026672307012767727], + [4.051729659714478, 0.9799496011694835, 0.020050399447265575, 0.9799496011694835, 0.020050399447265575], + [4.333736626655557, 0.9853202928537399, 0.014679707562172982, 0.9853202928537399, 0.014679707562172982], + [4.648684856958192, 0.9895600517043878, 0.010439948556276467, 0.9895600517043878, 0.010439948556276467], + [4.999632052685827, 0.9928091484571732, 0.0071908516934983974, 0.9928091484571732, 0.0071908516934983974], + [5.389841550145651, 0.9952189539482342, 0.004781046131387013, 0.9952189539482342, 0.004781046131387013], + [5.822811799384777, 0.9969428470190895, 0.0030571530189886648, 0.9969428470190895, 0.0030571530189886648], + [6.302318969434801, 0.9981277109322101, 0.0018722890840806889, 0.99812771093221, 0.0018722890840806889], + [6.832473214300134, 0.9989067804833657, 0.001093219522787441, 0.9989067804833658, 0.001093219522787441], + [7.417787047963985, 0.9993944717886756, 0.0006055282133459642, 0.9993944717886756, 0.0006055282133459642], + [8.06325211691876, 0.9996835881796997, 0.00031641182086856204, 0.9996835881796997, 0.00031641182086856204], + [8.77441920376411, 0.9998449640530016, 0.00015503594713255263, 0.9998449640530016, 0.00015503594713255263], + [9.557476296525342, 0.9999292384268591, 7.076157316699841e-05, 0.9999292384268591, 7.076157316699841e-05], + [10.419321298787976, 0.9999701321755482, 2.986782445586313e-05, 0.9999701321755482, 2.986782445586313e-05], + [11.367628950417384, 0.9999884332683857, 1.1566731614723274e-05, 0.9999884332683858, 1.1566731614723274e-05], + [12.410914650535364, 0.999995925734874, 4.074275599274444e-06, 0.999995925734874, 4.074275599274444e-06], + [13.558599922814794, 0.9999987070285548, 1.2929732405372193e-06, 0.9999987070285548, 1.2929732405372193e-06], + [14.821084607086368, 0.9999996341618479, 3.658384008828774e-07, 0.9999996341618478, 3.658384008828774e-07], + [16.209829764963953, 0.9999999087649959, 9.123503130880361e-08, 0.9999999087649959, 9.123503130880361e-08], + [17.737453564726327, 0.9999999801974079, 1.9802594310745414e-08, 0.9999999801974079, 1.9802594310745414e-08], + [19.417840983906807, 0.9999999963107435, 3.6892566674536924e-09, 0.9999999963107435, 3.6892566674536924e-09], + [21.26626746631381, 0.9999999994189984, 5.810016947174784e-10, 0.9999999994189984, 5.810016947174784e-10], + [19.99999998477457, 0.9999999979388462, 2.0611538195063544e-09, 0.9999999979388461, 2.0611538195063544e-09], + [20.0, 0.9999999979388462, 2.0611537881243983e-09, 0.9999999979388462, 2.0611537881243983e-09] + ] +} diff --git a/tests/test_games/golden_logit/strategy_random_3_player_6x6x6.json b/tests/test_games/golden_logit/strategy_random_3_player_6x6x6.json new file mode 100644 index 000000000..f12b7bdc7 --- /dev/null +++ b/tests/test_games/golden_logit/strategy_random_3_player_6x6x6.json @@ -0,0 +1,87 @@ +{ + "counts": [{"predictor_attempts": 81, "accepted_steps": 81, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 173, "function_evals": 173, "jacobian_evals": 82, "factorizations": 82}], + "points": [ + [0.0, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669, 0.16666666666666669], + [0.0017041389407642731, 0.16747758126624457, 0.16791997555551194, 0.16632901887784957, 0.16649571517499537, 0.1655573776166372, 0.16622033150886326, 0.1673964509426116, 0.16642031017484232, 0.16765790630742905, 0.1683449274829132, 0.16361667264570584, 0.16656373244662742, 0.16539595190770337, 0.16509330674065983, 0.16794673897930396, 0.16762879693699084, 0.16742355732512618, 0.16651164811034058], + [0.0035801353879958983, 0.1683229115512879, 0.16925432291449605, 0.1659745978860709, 0.1663254369311439, 0.16441015325956634, 0.16571257745755, 0.16822688898045285, 0.166145163474016, 0.16872428642839302, 0.17020487279985666, 0.16026795522370152, 0.16643083309379672, 0.16402530973768914, 0.1633657430045968, 0.1694085651285011, 0.16870031868139038, 0.16817591031612852, 0.16632415313190302], + [0.005643669104531159, 0.16919384328962253, 0.17066690402457482, 0.16560841650445313, 0.16615916121439855, 0.16323728640446764, 0.1651343885625507, 0.16917243881816194, 0.1658381638562216, 0.16986720260034277, 0.17226435751897792, 0.15659780917935393, 0.16626002802729925, 0.1625499025427352, 0.1614708998456124, 0.17107919974030292, 0.16989596128984055, 0.1689045405910421, 0.16609949599081392], + [0.007911151082355933, 0.1700776655148311, 0.17215225347840948, 0.16523841732074135, 0.16600083812047256, 0.16205542026903919, 0.16447540529638313, 0.17024925927632062, 0.16549631071363907, 0.17108671117162932, 0.17454170713792969, 0.15258460733149157, 0.16604140436957862, 0.160965238938809, 0.15939526342827345, 0.17298919960171485, 0.17123288090973812, 0.16958457882721228, 0.1658328382948348], + [0.010399529207101204, 0.170956824710622, 0.1737016667309983, 0.16487652919620321, 0.16585493291583336, 0.1608863312471077, 0.16372371519862008, 0.171475171555343, 0.1651169212158646, 0.17238111235444378, 0.17705509235589809, 0.14820902883024736, 0.1657626736891649, 0.15926728654057642, 0.15712502948042756, 0.1751727457144416, 0.17273105402960962, 0.17018454051037027, 0.16551934372557278], + [0.013126032008901027, 0.171807896426704, 0.17530263189944975, 0.16453999619459062, 0.16572617658222458, 0.1597576977871901, 0.16286560110817522, 0.17286950034013523, 0.16469800396045758, 0.17374647652865588, 0.17982163077531638, 0.14345564234378383, 0.1654087460531834, 0.15745259445992008, 0.15464626145807314, 0.17766762862182744, 0.17441367617605974, 0.17066549259785352, 0.16515434668802156], + [0.016107866291070028, 0.17260054276280964, 0.1769383385116666, 0.16425299721980857, 0.16561910496165325, 0.1587037799338343, 0.16188523660660792, 0.17445276309668759, 0.16423876561194892, 0.17517613075096047, 0.18285618577903792, 0.13831483703889574, 0.16496131772479758, 0.1555184265024205, 0.1519450271947377, 0.18051506566332393, 0.17630752996833549, 0.17098046299944894, 0.1647334876748995], + [0.019361899415610187, 0.1732965588993933, 0.17858734290843725, 0.16404854945322525, 0.16553730666460706, 0.15776591861225497, 0.1607643234552785, 0.17624618636753503, 0.1637402440628149, 0.17666013004643671, 0.18616987019389752, 0.13278504087661108, 0.16439852845597203, 0.15346291297094847, 0.14900747167657374, 0.18375933903487582, 0.17844327122551853, 0.17107427466944589, 0.16425273042843808], + [0.0229043786147658, 0.17384914215000508, 0.1802234695580171, 0.16397065466987074, 0.16548229361415134, 0.15699276044262656, 0.15948167955408793, 0.1782710516468972, 0.16320602067850168, 0.17818474391569922, 0.1897683349965929, 0.12687508648720697, 0.16369476227913296, 0.15128523531805518, 0.14581977540059857, 0.18744728677788366, 0.1808555730110328, 0.17088400304948767, 0.16370812645355612], + [0.026750761958622183, 0.17420252459836041, 0.1818159987395843, 0.16407661395540457, 0.1654519110217777, 0.15644013640440524, 0.15801281526433084, 0.18054790917195448, 0.16264289963944642, 0.17973198523822856, 0.19365003676895712, 0.12060649494212632, 0.16282067424325422, 0.14898586294669838, 0.14236795120890797, 0.19162774590323234, 0.1835830722270269, 0.1703402326492733, 0.1630951350838734], + [0.030915752545579503, 0.17429207292227838, 0.18333012166107163, 0.16443941982155905, 0.16543821386179533, 0.15617058311102597, 0.15632958860305435, 0.1830957365315097, 0.16206135327329188, 0.18127918783844144, 0.1978048364903391, 0.11401537113479715, 0.16174351473383644, 0.1465668606612706, 0.1386374553070209, 0.19635113301058454, 0.18666809089403585, 0.16936921079218234, 0.16240724936759215], + [0.03541363205417431, 0.1740448563430559, 0.18472752860449337, 0.16515015663945215, 0.1654247414093918, 0.1562526023823859, 0.1544001146050017, 0.18593113763495508, 0.16147542085947786, 0.1827985895439341, 0.2022134900550194, 0.10715357642737, 0.16042778547756456, 0.14403227212724473, 0.13461263494599507, 0.2016694379760847, 0.1901561615287956, 0.16789586631664138, 0.16163362715824595], + [0.04025897595000511, 0.1733805106679048, 0.18596683931219377, 0.16632041738654696, 0.1653830874627422, 0.15675991290217217, 0.15218923226736245, 0.1890676357491756, 0.16090161366298555, 0.18425678594908082, 0.20684886214324935, 0.10008890196247038, 0.15883620052646344, 0.14138855181253185, 0.1302761032356689, 0.20763697569125658, 0.1940954738161598, 0.16584751165311185, 0.1607553838711071], + [0.04546779525183217, 0.17221200803817652, 0.1870033989274241, 0.16808487245322207, 0.16526852873030662, 0.15777116725848903, 0.14966002462504976, 0.19251494886573098, 0.16035619779012553, 0.1856137664311001, 0.21168008615875256, 0.09290413431288054, 0.15693086643307105, 0.1386449567739844, 0.1256082098989192, 0.21431225866600156, 0.19853647277350983, 0.16315794982690696, 0.1597401521704882], + [0.05105907454904662, 0.17044574644193825, 0.18778774591228736, 0.17060425499798673, 0.1650141259467302, 0.1593709328127709, 0.14677719397621744, 0.19627774436877699, 0.15984991441219787, 0.18682099140037578, 0.21668156576394634, 0.08569518673586975, 0.15467459731951896, 0.13581370454742794, 0.12058685521927763, 0.2217612814492193, 0.2035319770744283, 0.1597717718410251, 0.15853441000273694], + [0.05705649989290782, 0.16798033289547049, 0.18826176128765118, 0.17406901291698484, 0.1645219426632696, 0.16165330413403917, 0.14351364625425528, 0.20035254843275252, 0.1593785290571862, 0.18781753695653172, 0.22185006846140135, 0.078568858633275, 0.1520324584869185, 0.1329095087538406, 0.11518799159900424, 0.23006226224230814, 0.2091383889398575, 0.15564900796658737, 0.1570528406326141], + [0.06348965085063202, 0.1647038373139632, 0.18835098732302744, 0.17870331132158068, 0.16364839995300987, 0.16473068096786397, 0.13986278326444224, 0.204719724605406, 0.158906033290122, 0.18852252439591802, 0.22723614996095043, 0.07164132970679676, 0.14897423809225604, 0.12994768080483785, 0.10938739903234802, 0.23931115730845198, 0.21541898197200324, 0.15077127729219497, 0.15516350365677078], + [0.07039218967181464, 0.16049099246886825, 0.1879505673401173, 0.1847665848223695, 0.16217736595477683, 0.16875280569970028, 0.13586168338193855, 0.20932331682174574, 0.15833354824972237, 0.18882037724910852, 0.2330030461932592, 0.06503944740176071, 0.14548026387452026, 0.12693892055226608, 0.10316520263507786, 0.2496247790403796, 0.2224512678404803, 0.14515297853277526, 0.15266685119064954], + [0.07778835570719046, 0.15520798787823734, 0.18690031988675684, 0.19254017976405252, 0.15976787984672444, 0.17394649651254065, 0.131637132601289, 0.2140210248058987, 0.15743805466797944, 0.18853175659885504, 0.23954208229574397, 0.058909049689805246, 0.14155802869917075, 0.12387599490021557, 0.09651801676743711, 0.261128752799378, 0.23034274800953114, 0.13886766282034171, 0.14926682337038175], + [0.0856361820165948, 0.14875607137971533, 0.18494269316073159, 0.2022484837655707, 0.1558569605221205, 0.18069306577087887, 0.12750269911757797, 0.2184598003040204, 0.15574774810166014, 0.18735620320431878, 0.24770361754664783, 0.05343975364368332, 0.137292843020822, 0.12069956229328882, 0.0894968869502801, 0.27387797527072844, 0.23926198312459107, 0.13211988522004658, 0.1445436993130588], + [0.0936246260072327, 0.14126779375145107, 0.18167292838598886, 0.21372975696196522, 0.1495558423344048, 0.18962566377958592, 0.1241480181140158, 0.22179572208052853, 0.15233131876658987, 0.18478016960498925, 0.2591786346322138, 0.04891860818011839, 0.13299555212225572, 0.11721605950019721, 0.08233212771373694, 0.28751158213688377, 0.2494740149991656, 0.12544266794361353, 0.13802354880641327], + [0.10073972754256294, 0.13361945682735937, 0.17659124816657362, 0.22559584428048812, 0.1399987698335557, 0.20146581184506202, 0.12272893434527435, 0.2224410723578021, 0.14581941705511225, 0.18009674858281705, 0.27646942333225666, 0.04572698678753224, 0.1294464478095974, 0.11297023536581355, 0.07568522846533832, 0.3003401501006473, 0.2612832240149342, 0.1200090879517463, 0.12971212519364966], + [0.10556460210315298, 0.1273235064153013, 0.16918817519966092, 0.2354098192385466, 0.12750135529425966, 0.21658587735796314, 0.12399136247209186, 0.21903138911488496, 0.1353532201671685, 0.17273226772146688, 0.3014615996756248, 0.04391692924467379, 0.12750467530888585, 0.10718421385003368, 0.07033915418575361, 0.3093901718147787, 0.27521665178021776, 0.11712438561209645, 0.12074559766106396], + [0.10752876321398251, 0.12321405022366962, 0.15897451975527443, 0.24180256534439548, 0.11401550567779448, 0.23478378421901178, 0.12720959018212868, 0.2121568205474316, 0.12165855592148303, 0.16261741985507408, 0.333585153275683, 0.04296232990898164, 0.12701972335944078, 0.09924337068490849, 0.06639948503028777, 0.31253367848045893, 0.29209021835900184, 0.11701449135336052, 0.11271878602449699], + [0.10717179204445398, 0.12093638513059471, 0.1460005455623463, 0.24507134053358567, 0.10172547161753671, 0.2554253541469821, 0.13084090492932554, 0.20411781663981918, 0.10664720596261107, 0.15031257317376936, 0.3699639447753634, 0.042235612872919194, 0.12672284701567224, 0.0894596077201393, 0.06334138737573333, 0.30972543555860793, 0.3122877954628333, 0.11874000633419352, 0.10644576948455681], + [0.10533414425008784, 0.11955046947425449, 0.13063186946072922, 0.24594420937854355, 0.09131715014663294, 0.27874475868499077, 0.13381154237631981, 0.19693846554905078, 0.09167186376609984, 0.13627491579037113, 0.40863204981742557, 0.041361085927900956, 0.1251216198135607, 0.07858576482429612, 0.06049531575615309, 0.3018443520230996, 0.336266799519966, 0.12110228152573477, 0.1017054860241859], + [0.10263547876655571, 0.11816642213829219, 0.11360448897403, 0.2445633755055299, 0.08272459082212305, 0.3054441809457339, 0.13549694135281648, 0.1920237649991342, 0.07761672435284662, 0.12102781438632339, 0.44811185818849414, 0.04018788506984271, 0.12103195396571706, 0.06755769752335421, 0.05745587509433266, 0.2894799348747701, 0.36422469601957863, 0.12308913637618826, 0.09819266006712221], + [0.09950803704941497, 0.11604961815630407, 0.09586535927351561, 0.24057176359205798, 0.07567740951359904, 0.33640495597744424, 0.135430893689169, 0.19036123799841886, 0.06501977478425022, 0.10521358305232822, 0.4869872604060118, 0.03865894032228262, 0.11375920502557134, 0.05722182026595034, 0.05408070215414647, 0.2729189831062297, 0.3960358924347301, 0.1239101790568148, 0.09583242328603665], + [0.09628253960789573, 0.11270301107180215, 0.07844328047395795, 0.2334612739391026, 0.06988614189194076, 0.37229384844059243, 0.1332124446671159, 0.192616203186743, 0.05411268020338182, 0.08950396796191298, 0.5237806463910446, 0.03673838612917202, 0.10324811838764598, 0.048141966948646205, 0.050406446494541, 0.2525166905928262, 0.4311990061518201, 0.12301936461196102, 0.09471652584978137], + [0.0932450729151985, 0.10795251432771308, 0.062322573566545206, 0.2230311697146508, 0.06501047257852405, 0.4130559354490499, 0.128627334953566, 0.19900593872364628, 0.04484634937770244, 0.07447494465310048, 0.5571298865931473, 0.034388512095718256, 0.09015437055062736, 0.040520162936826136, 0.046535354247296615, 0.22913740188529888, 0.4688214085110466, 0.12014086125191593, 0.0948448118139822], + [0.09064202757619416, 0.10194464385636018, 0.0482449357881747, 0.20971241694373063, 0.060623407994189596, 0.4576631817463282, 0.12181153621554887, 0.20912728441952283, 0.036960681986963985, 0.060531217052556326, 0.5861274928351708, 0.03158414662010794, 0.07566932596386924, 0.034243577710741005, 0.0425457154644814, 0.204234120497104, 0.5077883649671362, 0.11527721023954407, 0.09591109687299074], + [0.0886526250726755, 0.09502316199660196, 0.036556677780459484, 0.19446760526510906, 0.05630157842272353, 0.5044146419285604, 0.11323647958416068, 0.2220240373074305, 0.030129508548986186, 0.04792433951344344, 0.6104722475691055, 0.028345614228308436, 0.061104372260156505, 0.02903816887423587, 0.038476399876489646, 0.17941242945081018, 0.5470600649373214, 0.10867126293803218, 0.0973417508155273], + [0.08737653117013432, 0.08757457539869269, 0.027232361177924658, 0.17839399699356567, 0.05176092553304681, 0.5515202393179526, 0.1035180537355455, 0.23649041104993335, 0.02410560553776369, 0.03681974582253692, 0.6303020037285092, 0.024762025089915488, 0.047520286871357245, 0.024627228905835213, 0.034361439355697014, 0.15591666334106596, 0.5858579629687667, 0.10072012743921381, 0.09851663753088068], + [0.08684993099671295, 0.07993430298278043, 0.020015898601988318, 0.16239867904751928, 0.04691101609905418, 0.5975083813883105, 0.09323187200485532, 0.2513715628307207, 0.018779375103494922, 0.027335799082955477, 0.6459300609738563, 0.020988502306362917, 0.03559475630044151, 0.020809684478323737, 0.030257176401787957, 0.13444299148133035, 0.6236572888896535, 0.09187863686442095, 0.09895427591780938], + [0.08707011214242481, 0.07235279561710359, 0.014554801919481278, 0.1470781650253359, 0.04181666944785411, 0.6413681111130406, 0.08282959178416684, 0.26574455562070937, 0.014148689687974895, 0.019531280106821428, 0.6577025902332615, 0.01721858657038491, 0.025654344228801623, 0.01746277835492968, 0.02624127513939132, 0.11522466085267755, 0.6601178623294288, 0.08258123725925644, 0.09837223753381007], + [0.0880155774882798, 0.06499267033408815, 0.010487221681125123, 0.13273585958338407, 0.036625906427031445, 0.6825239681957295, 0.07263448410043848, 0.27899582409182405, 0.010252772071867672, 0.013377959485285234, 0.6659714629122417, 0.013645907838599144, 0.017756110274721966, 0.01451583677253963, 0.022397426666799142, 0.098200719514404, 0.6950320363006723, 0.07319304458605881, 0.09666098206853192], + [0.08965982658984362, 0.05794134933090944, 0.0074891288985794065, 0.11945634466015989, 0.03150901290157879, 0.7207335472427485, 0.06287070076338054, 0.29082722835784136, 0.007114541461830166, 0.00875148084651402, 0.6711069398582622, 0.01043046872749235, 0.011769366114534422, 0.011925505053935727, 0.01880073291624194, 0.08316667462002095, 0.7282884864543927, 0.06399122943064421, 0.09382740954499555], + [0.09198024368972978, 0.051231780481158805, 0.005293870034562216, 0.10718864926498661, 0.026621444063303048, 0.7559688736642968, 0.053695443125269166, 0.3012131982304872, 0.004709965218070621, 0.005447398407398223, 0.6735054349069263, 0.007678049017671183, 0.007445969196943136, 0.00966081894002853, 0.015509025327114732, 0.06987869480998045, 0.7598400643642135, 0.05516972929000972, 0.08994169736878385], + [0.09496384484580488, 0.044865898400954486, 0.0036942429019785304, 0.0958173122142453, 0.022086334155979482, 0.7883152185396298, 0.04522103660355307, 0.3103270349352001, 0.0029645239172025745, 0.003214117872802028, 0.673580881840861, 0.0054343649863579395, 0.004479084000675884, 0.007696507084477727, 0.012559832323988858, 0.05811431214367846, 0.7896719347557846, 0.046857066263171224, 0.08510037099034164], + [0.09861113090698766, 0.03883636314248716, 0.002535150699461409, 0.08521420278776813, 0.017989051103319897, 0.8178997353979904, 0.03752552697934418, 0.31845413879227036, 0.0017677796315183098, 0.0017905195714429949, 0.6717451734218036, 0.0036913333971985494, 0.0025510585165139463, 0.006010730735343253, 0.009971240935412157, 0.04770034079835722, 0.8177717262027595, 0.03913806477704397, 0.07940791527942191], + [0.1029387124837902, 0.033143086093871864, 0.0017026525499583853, 0.07527036561725219, 0.014378140288430912, 0.8448500531793947, 0.03065572364865545, 0.32590900596409184, 0.0009948773237208307, 0.0009378405022078022, 0.6683880993829189, 0.0024007880076871717, 0.0013693902192837824, 0.004584235889692243, 0.0077448997337911715, 0.038517991895833215, 0.8441056457747137, 0.03207279665217263, 0.07297444541225327], + [0.10798101028722215, 0.02780245587267642, 0.001113072475860678, 0.06591035300229164, 0.011269462242683666, 0.8692769644819343, 0.02462770733298592, 0.3329686075157292, 0.0005261623076250324, 0.000459833861515333, 0.663865176637611, 0.0014907927435113503, 0.0006894276481126712, 0.0033993492294402384, 0.005869766358779982, 0.03049337745495631, 0.868604251898043, 0.02570893794956354, 0.06592433018865014], + [0.11379117380303883, 0.022848898344597995, 0.0007040461810755087, 0.057093602055925834, 0.008651981833433181, 0.8912729399243384, 0.019428542923501244, 0.33982813912779647, 0.00026026913533818975, 0.00021008381451192965, 0.658496905985096, 0.0008807334612334207, 0.0003238690735513338, 0.0024384757280986867, 0.004325641217760741, 0.02358045770719443, 0.8911598501313311, 0.02008640444543867, 0.058409182316537224], + [0.12044127843912134, 0.018330022788001714, 0.00042808423431870036, 0.048808507129022884, 0.006494447187571353, 0.9109182096255393, 0.01502073735397802, 0.34657864044009157, 0.00011980109394409248, 8.900752214580771e-05, 0.6525784079174689, 0.0004929408422239542, 0.00014120293190383393, 0.0016824538299990148, 0.0030859673011480434, 0.01774237092894996, 0.9116355722913313, 0.015235261182868174, 0.05061838489250504], + [0.12802174937281136, 0.014297643514180848, 0.00024841007151921304, 0.04106457272776811, 0.004752391341252209, 0.9282880013598716, 0.01134898718537728, 0.3532016712354731, 5.104015178164047e-05, 3.47992950854734e-05, 0.6463955832348433, 0.0002600838715687975, 5.6823273549336646e-05, 0.0011093212827027058, 0.002119763427583889, 0.012935402756792468, 0.929884923228544, 0.011169275737817883, 0.042781322941715924], + [0.13663979064021536, 0.01079719059328195, 0.00013644567806317658, 0.03388640160147272, 0.0033748281773862275, 0.9434575219685775, 0.008347616673098317, 0.35957492180627354, 2.0017257731656836e-05, 1.2492346584902588e-05, 0.6402429458576412, 0.00012863440678815492, 2.098983213758675e-05, 0.0006939209561599337, 0.0013928619961230838, 0.009097849151671706, 0.9457797146730553, 0.007878134087354372, 0.03515752722445467], + [0.14641645273397322, 0.007857638475435896, 7.027465215108467e-05, 0.027310771098427573, 0.002309935683903605, 0.9565044821365328, 0.0059469016238854, 0.365484001650931, 7.186972202373988e-06, 4.096406675460771e-06, 0.63443836702314, 5.927228096605545e-05, 7.077732309300373e-06, 0.00040852524245446565, 0.0008688231092346542, 0.0061444438855139975, 0.959242904373585, 0.005321430176626205, 0.028013879651727306], + [0.15748202359892888, 0.00548358605817518, 3.35707736823397e-05, 0.021385446855562817, 0.0015090363155184567, 0.9675114034711261, 0.004076959570574067, 0.370638546475947, 2.3491145099741295e-06, 1.2203413797427529e-06, 0.6293304399411686, 2.5280100848865705e-05, 2.1667609207609196e-06, 0.0002243963646786829, 0.0005099724511168285, 0.003966297139271555, 0.9702802898719323, 0.0034271676888062356, 0.02159188105719994], + [0.16996983419792677, 0.0036508707254256775, 1.4692396498554727e-05, 0.016166489202800897, 0.000928359519726221, 0.9765707886589553, 0.0026688021840289545, 0.37469372849653254, 6.949220202237391e-07, 3.283164680196053e-07, 0.6252947380564003, 9.914758441426794e-06, 5.98961511937566e-07, 0.00011395359526524457, 0.00027891809361252687, 0.0024360946867237267, 0.9790021896900578, 0.002096510913830596, 0.016072335864313284], + [0.18400932314604576, 0.0023069341296029925, 5.811560024889505e-06, 0.0117104237083011, 0.000528527449572321, 0.9837950022109548, 0.001653303330770575, 0.37727997300765714, 1.8487258098806232e-07, 7.92334516780349e-08, 0.6227160658194232, 3.5527288028699994e-06, 1.486760445734584e-07, 5.2999736800168835e-05, 0.00014060841861953297, 0.001417822829356981, 0.9856258994254572, 0.0012146520605725373, 0.011548019090571985], + [0.1997200595856428, 0.0013765232841550558, 2.0478193324794905e-06, 0.008059455245792876, 0.00027256470212227724, 0.9893295184030548, 0.0009598924775882932, 0.3780433236887711, 4.3912425125724084e-08, 1.7019193449424284e-08, 0.621955431533496, 1.155891297933737e-06, 3.294075098829746e-08, 2.2363305985958714e-05, 6.45732631697945e-05, 0.0007790931955358823, 0.9904544563417065, 0.00066523596566777, 0.008014278708452442], + [0.2172089784754862, 0.0007718879125802008, 6.333971616943938e-07, 0.005221974299548768, 0.00012424579087235623, 0.9933641816390768, 0.0005170782382845088, 0.3766956467782198, 9.23581689743515e-09, 3.2242741553463956e-09, 0.6233039999644813, 3.393761907578161e-07, 6.469617543500574e-09, 8.479801618019634e-06, 2.6679514425023466e-05, 0.000402883336401314, 0.9938363271627136, 0.0003440367889596228, 0.005381593742256074], + [0.23657286605498723, 0.0004049257513077156, 1.694727529471443e-07, 0.003155547141459623, 4.8770476845871385e-05, 0.9961347103015967, 0.0002558774868096597, 0.37306678773202934, 1.7035007654488555e-09, 5.330661063013064e-10, 0.6269331238337975, 8.933752179792735e-08, 1.1168712314022388e-09, 2.8618245638922515e-06, 9.788834113586356e-06, 0.00019542948274221927, 0.9961188812831551, 0.00016788491041395633, 0.003505153765812723], + [0.2579066258415606, 0.00019784532484455288, 3.867123317933091e-08, 0.0017621030331168976, 1.6063093030389807e-05, 0.9979087345336112, 0.0001152155589839333, 0.3671412978517766, 2.724597501036408e-10, 7.596617744751294e-11, 0.6328586835842978, 2.0927132077846846e-08, 1.6766882889561812e-10, 8.511129699363102e-07, 3.14722026116237e-06, 8.85981068731442e-05, 0.9976102177346055, 7.721245183647583e-05, 0.002219973352409481], + [0.2813150809803278, 8.962016406159211e-05, 7.420963111550531e-09, 0.0009013695280710329, 4.331902713051074e-06, 0.9989578931013375, 4.677792915014782e-05, 0.3590585487299376, 3.729817757957792e-11, 9.198695687704742e-12, 0.6409414484340992, 4.322400380942537e-09, 2.1596046603714236e-11, 2.207120725860865e-07, 8.747821007212361e-07, 3.736716863715356e-05, 0.9985582011138877, 3.339293835658181e-05, 0.0013699432336703296], + [0.30692373624964203, 3.7444171582331896e-05, 1.1804992887313183e-09, 0.0004187960246064082, 9.348078628116769e-07, 0.9995258531344516, 1.6970686635077774e-05, 0.34906793617553794, 4.305425053272157e-12, 9.310937189657762e-13, 0.6509320637237487, 7.78475652006385e-10, 2.3480981306370527e-12, 4.9333014919217446e-08, 2.0730414551793734e-07, 1.4577870606078944e-05, 0.9991469737175455, 1.3531244677913823e-05, 0.0008246604926048124], + [0.33488455012605894, 1.434415160435581e-05, 1.532544958199978e-10, 0.00017518945821813007, 1.5774977099336613e-07, 0.9998048594185369, 5.449069322747124e-06, 0.3374570076353297, 4.121436763671383e-13, 7.736131155970284e-14, 0.6625429924987788, 1.2068285853420417e-10, 2.1156836246114456e-13, 9.382235696336298e-09, 4.126578509223715e-08, 5.224656485933552e-06, 0.9995051749457223, 5.112465853600862e-06, 0.0004844372654065556], + [0.36537625677908375, 5.003448606313445e-06, 1.5952440572678477e-11, 6.533516281443526e-05, 2.0298657832922965e-08, 0.9999281092150621, 1.5318594560639963e-06, 0.3244865859217444, 3.212992822400399e-14, 5.17353549862653e-15, 0.6755134141545421, 1.587415305836265e-11, 1.5484567246231085e-14, 1.4961831183981632e-09, 6.786634601329401e-09, 1.7069139048704277e-06, 0.9997187838618062, 1.7909468633087403e-06, 0.0002777099871595234], + [0.3986019224760858, 1.5765980571156942e-06, 1.3047257637871021e-12, 2.1475724949227002e-05, 1.9341810515257536e-09, 0.9999765733792704, 3.7236260357463557e-07, 0.31035755833961526, 2.000745743674775e-15, 2.727406351991348e-16, 0.6896424417177232, 1.7445864966784903e-12, 9.01518303749321e-16, 1.967889537272885e-10, 9.049417736831757e-10, 5.040681094481805e-07, 0.9998435529908465, 5.782004877574755e-07, 0.0001553636360697002], + [0.43478692125018253, 4.447822535703896e-07, 8.193817013517201e-14, 6.139257358108292e-06, 1.3186974095120276e-10, 0.9999933386828425, 7.714575854559824e-08, 0.29521106147129017, 9.749364907576369e-17, 1.1088953333838946e-17, 0.7047889386125701, 1.576037400817837e-13, 4.0854737700325056e-17, 2.0955835565913662e-11, 9.57579792108795e-11, 1.3334178254042484e-07, 0.999914846959761, 1.7096984115880918e-07, 8.484861082856744e-05], + [0.47417910745894293, 1.1123192621309985e-07, 3.850220675346959e-15, 1.503213855638216e-06, 6.1838638334012325e-12, 0.9999983721462974, 1.340178900845414e-08, 0.2791483321780968, 3.6370431318691565e-18, 3.3970180749622426e-19, 0.7208516679598737, 1.1501807264357815e-14, 1.4086533606324354e-18, 1.7698609654976707e-12, 7.849244639039594e-12, 3.1292074305126735e-08, 0.999954659404507, 4.600500692503581e-08, 4.526328828587456e-05], + [0.5170514490722059, 2.4388671875992936e-08, 1.3153186470953712e-16, 3.099157385940032e-07, 1.908213922148917e-13, 0.9999996637784953, 1.916918349532389e-09, 0.2622550157407151, 1.0144429506708924e-19, 7.646655791965504e-21, 0.7377449844738039, 6.65481203082507e-16, 3.6063656033798644e-20, 1.1587839563640443e-13, 4.852048547463638e-13, 6.446556492822167e-09, 0.9999763779627667, 1.1187639738151082e-08, 2.3604402139865254e-05], + [0.56370665831082, 4.631696300133514e-09, 3.1649581438780962e-18, 5.280037894012164e-08, 3.691633314893321e-15, 0.9999999423466551, 2.2126916540837582e-10, 0.2446209750337422, 2.061299359909806e-21, 1.2304695095203228e-22, 0.7553790252830723, 2.990335526964476e-17, 6.675446206970406e-22, 5.735925001675846e-15, 2.1961857962530557e-14, 1.1524591584780437e-09, 0.9999879547574921, 2.440037765700815e-09, 1.2041649793287998e-05], + [0.614483335865503, 7.516767480844758e-10, 5.181015658050033e-20, 7.2841115450069485e-09, 4.250476084465707e-17, 0.9999999919440468, 2.0165377619287616e-11, 0.22635324256389297, 2.964565901162478e-23, 1.3728691591228643e-24, 0.7736467578871499, 1.0198771123488372e-18, 8.673815418237793e-24, 2.0882887096283682e-16, 7.048969186872227e-16, 1.7649852772130433e-10, 0.9999939882819481, 4.731321135125363e-10, 6.011068300741957e-06], + [0.6697634077424928, 1.0269565964025699e-10, 5.554808332764005e-22, 7.961603134926084e-10, 2.756429774147334e-19, 0.9999999990997271, 1.4169140838818254e-12, 0.20758335367849184, 2.9215268312428204e-25, 1.0262141006414646e-26, 0.7924166469448813, 2.5727567856383295e-20, 7.653346974097797e-26, 5.425767496746627e-18, 1.5495773220085817e-17, 2.282452478458593e-11, 0.9999970650267886, 8.073535743989588e-11, 2.934869580697218e-06], + [0.7299808361237639, 1.1615490951581152e-11, 3.741838227594587e-24, 6.736645427780327e-11, 9.503841226333891e-22, 0.9999999999209432, 7.481367140660104e-14, 0.1884710000367252, 1.901635111134425e-27, 4.9430429777887907e-29, 0.8115290008016495, 4.661647283794438e-22, 4.416406206644172e-28, 9.733098394633554e-20, 2.2473898597039964e-19, 2.4519637486084925e-12, 0.9999986007417042, 1.1978221658264653e-11, 1.39924382756269e-06], + [0.7956316062276034, 1.0674537524541871e-12, 1.5133171372928993e-26, 4.305971541544393e-12, 1.6412897303028712e-24, 0.9999999999946237, 2.8873346900824824e-15, 0.16920522943481403, 7.839673570697791e-30, 1.46759466114571e-31, 0.8307947716626967, 5.867193531777325e-24, 1.5966829197549397e-30, 1.1625329817495263e-21, 2.0656749723385667e-21, 2.147890510259931e-13, 0.9999993506764074, 1.5230024960399052e-12, 6.493218364472585e-07], + [0.8672848700609374, 7.804483884857773e-14, 3.4963911268902e-29, 2.0263422370637702e-13, 1.3356839102271768e-27, 0.9999999999997193, 7.906026013190012e-17, 0.15000354133104554, 1.9509295744117947e-32, 2.5524458402221705e-34, 0.8499964600661106, 4.93629436280416e-26, 3.4429151287720955e-33, 8.884482376397656e-24, 1.1525468405671159e-23, 1.5020674193120695e-14, 0.999999708282862, 1.631083744787728e-13, 2.9171695235139477e-07], + [0.945594935267499, 4.4333799400494374e-15, 4.370576171730471e-32, 6.83431878792596e-15, 4.81542426142852e-31, 0.9999999999999887, 1.4875401772272352e-18, 0.13110867108457225, 2.773147685463981e-35, 2.452673495498032e-37, 0.868891330641481, 2.6564491428140027e-28, 4.184456959837469e-36, 4.158559910188903e-26, 3.7279158653085417e-26, 8.184975059769739e-16, 0.9999998741316476, 1.4411900909220715e-14, 1.258683347465133e-07], + [1.0313135573410495, 1.9051987643961934e-16, 2.785088033007201e-35, 1.606433455290341e-16, 7.229094801368154e-35, 0.9999999999999997, 1.858276228643555e-20, 0.112782611928877, 2.113270756456621e-38, 1.2175483909051974e-40, 0.8872173901336482, 8.69255401622311e-31, 2.6863791930819513e-39, 1.1362613527830082e-28, 6.654551010142401e-29, 3.3803301864340757e-17, 0.9999999484229547, 1.024963953310939e-15, 5.1577043782539094e-08], + [1.1253017414484694, 6.010903957400169e-18, 8.47672463186061e-39, 2.5560711829961492e-18, 4.2485706547881536e-39, 1.0, 1.48546790184661e-22, 0.09529739578132349, 8.029174466233586e-42, 2.8914069497278277e-44, 0.9047026065910964, 1.632223893644115e-33, 8.45758000931013e-43, 1.7191832819259517e-31, 6.220015291003099e-32, 1.0251550564058415e-18, 0.9999999802247381, 5.698440902183618e-17, 1.9775261742832192e-08], + [1.2285400221419474, 1.3462860258121814e-19, 1.1474470820585068e-42, 2.6708291297145262e-20, 9.19135460021995e-44, 1.0, 7.302959434518445e-25, 0.07892232996155531, 1.4003995692143142e-45, 3.0096168530327254e-48, 0.921077672648182, 1.6465321601812372e-36, 1.199929202470118e-46, 1.3592694491530473e-34, 2.877770054995111e-35, 2.2026022646074412e-20, 0.9999999930382731, 2.3935576689255642e-18, 6.961726882152861e-09], + [1.3421360485064826, 2.0617870098161923e-21, 6.389028382477148e-47, 1.7751694080420644e-22, 6.879539959165103e-49, 1.0, 2.1155651812495472e-27, 0.06390782517445813, 1.0214268939548544e-49, 1.2439298533796003e-52, 0.9360921775482084, 8.283348389221763e-40, 6.973370092285456e-51, 5.269788117007192e-38, 6.203868236993328e-39, 3.220009212507345e-22, 0.9999999978008294, 7.303103135229643e-20, 2.1991706742481803e-09], + [1.467328392074816, 2.07102736526691e-23, 1.3432799395999004e-51, 7.254653844948122e-25, 1.6709999520303623e-54, 1.0, 3.447271021096656e-30, 0.05046670450845996, 2.807306635435702e-54, 1.828212750333858e-57, 0.9495332981585144, 1.9124250403986725e-43, 1.4920542027160898e-55, 9.342176619907637e-42, 5.83728738521722e-43, 3.0617729615718634e-24, 0.9999999993931593, 1.5482301066511589e-21, 6.068407445783582e-10], + [1.6054859675585724, 1.3032956413061176e-25, 9.708296853359328e-57, 1.7570184173624495e-27, 1.2296915576541452e-60, 1.0, 3.00325844360665e-33, 0.038754910731651084, 2.591335497857199e-59, 8.457756196724047e-63, 0.9612450916932304, 1.8485724464720153e-47, 1.0447593109366625e-60, 7.013909320531796e-46, 2.231943302619595e-47, 1.8015952172111186e-26, 0.9999999998580734, 2.170679153462767e-23, 1.4192660166367318e-10], + [1.7581034038909547, 4.8865911997393255e-28, 2.175284349546417e-62, 2.420683805668593e-30, 2.537904285910777e-67, 1.0, 1.3226374361967904e-36, 0.02885459909186959, 7.085610575720088e-65, 1.0782122091931235e-68, 0.9711454029293908, 6.768081748402915e-52, 2.1052712796266868e-66, 2.0498563199739122e-50, 3.2048836400730572e-52, 6.21273017571048e-29, 0.9999999999727643, 1.9075821788242643e-25, 2.7235605871630643e-11], + [1.9267940399778727, 1.033570839153391e-30, 1.348450433711847e-68, 1.810894630444188e-33, 1.3416436940239165e-74, 1.0, 2.7663218096985108e-40, 0.020763265544353756, 5.012127082626121e-71, 3.2812700718647037e-75, 0.9792367344578708, 8.424699174886016e-57, 1.0627473612775291e-72, 2.1254480721648706e-55, 1.582355409269285e-57, 1.1838495701616044e-31, 0.9999999999958525, 9.923328036280676e-28, 4.14751368831777e-12], + [2.113283587653607, 1.1623205249102232e-33, 2.0390223753479602e-75, 6.970818914562535e-37, 1.6282881424507165e-82, 1.0, 2.5616587922126795e-44, 0.014392270064029685, 7.935283240751445e-78, 2.04468037649565e-82, 0.985607730964284, 3.1764955174722257e-62, 1.1587443548568469e-79, 7.058638277965643e-61, 2.4319670870249603e-63, 1.170265066341742e-34, 0.999999999999515, 2.8779655171399964e-30, 4.849550707981336e-13], + [2.319408370826593, 6.51848658374334e-37, 6.5416391390883136e-83, 1.2968892067698063e-40, 3.970293395099566e-91, 1.0, 9.703475039287175e-49, 0.009576535166240368, 2.410434617943654e-85, 2.2159709984923184e-90, 0.9904234654460564, 3.208497611513064e-68, 2.330681035941672e-87, 6.706179205598928e-67, 1.0393922311301716e-69, 5.609982368655006e-38, 0.9999999999999578, 4.373158570292943e-33, 4.21958800351814e-14], + [2.5471217981661107, 1.700985683620073e-40, 3.8143545479421834e-91, 1.0842234520885725e-44, 1.6553613440199007e-100, 1.0, 1.3750500827246567e-53, 0.006094571541370508, 1.1925207971262615e-93, 3.511245966502565e-99, 0.993905428776904, 7.618719252687514e-75, 7.312469679939334e-96, 1.6087038468913932e-73, 1.0869093671838924e-76, 1.2135251792954493e-41, 0.9999999999999974, 3.2653233187571573e-36, 2.6538413293486552e-15], + [2.79851135299417, 1.9156624813174348e-44, 3.4049901192055003e-100, 3.745436309816466e-49, 9.748226026971388e-111, 1.0, 6.5923580317005135e-59, 0.003695184717516249, 8.065606403248837e-103, 6.756889771697735e-109, 0.9963048154253416, 3.698824055396443e-82, 2.991444491419277e-105, 8.48717111330226e-81, 2.406754891549221e-84, 1.0964647576116441e-45, 0.9999999999999999, 1.120776905185198e-39, 1.1744787367865505e-16] + ] +} diff --git a/tests/test_games/golden_logit/strategy_random_4_player_4x4x4x4.json b/tests/test_games/golden_logit/strategy_random_4_player_4x4x4x4.json new file mode 100644 index 000000000..0605eb185 --- /dev/null +++ b/tests/test_games/golden_logit/strategy_random_4_player_4x4x4x4.json @@ -0,0 +1,92 @@ +{ + "counts": [{"predictor_attempts": 86, "accepted_steps": 86, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 178, "function_evals": 178, "jacobian_evals": 87, "factorizations": 87}], + "points": [ + [0.0, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], + [0.0034515969437068058, 0.24620514533653565, 0.25171694475335726, 0.25245118407175116, 0.24962672583876042, 0.24998473054594753, 0.24775361031473717, 0.25000196877500197, 0.2522596903643206, 0.2504175835025861, 0.2490207428616976, 0.24782185496217357, 0.2527398186739587, 0.2501741300984434, 0.2511541990828734, 0.25107457333628524, 0.2475970974826619], + [0.007230021704414924, 0.2420013022048267, 0.2535350118501378, 0.25518230179150625, 0.24928138415422835, 0.25001161977468506, 0.2453240109502152, 0.2499908395421102, 0.2546735297330097, 0.2507743452110966, 0.2479816974505781, 0.245444246821227, 0.25579971051780054, 0.2503863196329403, 0.2523692926971523, 0.252293245626126, 0.24495114204421448], + [0.011361453321658123, 0.23735100034036763, 0.25544479020352734, 0.25822565722758556, 0.24897855222973986, 0.250095514912362, 0.24270614819026773, 0.24995842937613136, 0.25723990752131437, 0.25104636277534503, 0.24688170177442512, 0.2428536698273851, 0.2592182656240983, 0.250646598583092, 0.25364474170249307, 0.2536712483179412, 0.24203741139718982], + [0.0158724292270868, 0.23221636869282494, 0.25743082043463494, 0.26161665026542463, 0.24873616060925868, 0.2502548372387095, 0.2398977658143862, 0.24989333996293472, 0.2599540569842455, 0.2512052849949292, 0.24571924897494457, 0.24003722133768465, 0.26303824469466036, 0.2509687097928173, 0.25498027532973394, 0.2552223154135015, 0.23882869946503446], + [0.02078908679142843, 0.22656045139296196, 0.2594697375316412, 0.2653937096087914, 0.24857610147037706, 0.25051198549186543, 0.236900094072558, 0.24978008599286422, 0.2628078344436274, 0.25121815143295806, 0.244491910747054, 0.23698307476595953, 0.2673068630579178, 0.2513716843312565, 0.25637647833963717, 0.2569565663406747, 0.23529527098983036], + [0.026136067903732393, 0.22034905575172908, 0.26152792675072467, 0.2695980402316472, 0.2485249772724849, 0.2508935040603262, 0.2337184151314147, 0.24959815062646012, 0.26578993018455854, 0.25104742137340186, 0.24319539932969308, 0.23368095726235236, 0.2720762220412837, 0.2518819760969168, 0.25783564849406637, 0.2588773336077256, 0.23140504180239446], + [0.031934950976851305, 0.21355329099306417, 0.26355854169495196, 0.2742730758806152, 0.24861509144256677, 0.2514298021245327, 0.23036233614441498, 0.24932106127174888, 0.26888680046696195, 0.25065121239821364, 0.2418221316765682, 0.23012253999014015, 0.2774041159465076, 0.25253622241817647, 0.2593629943359928, 0.2609766036459932, 0.22712417959849884], + [0.038202031842722646, 0.2061529691573112, 0.26549768489736214, 0.2794634617318933, 0.24888588423129157, 0.25215412332662024, 0.22684552360963903, 0.24891564501181376, 0.2720847080716393, 0.24998361530541788, 0.2403591563985424, 0.22630157542108578, 0.2833556528937731, 0.25338457553992727, 0.2609682779155605, 0.26322874257793816, 0.2224184039569], + [0.04494519779128178, 0.19814104744890587, 0.2672595053572685, 0.2852132480491613, 0.24938619916902832, 0.2531003776589944, 0.22318457625775767, 0.24834170655280957, 0.27537333957762444, 0.2489946859608748, 0.2387853689636142, 0.2222135178328707, 0.29000642727195935, 0.25449427523364115, 0.26266808658418267, 0.2655822732172285, 0.21725536493284425], + [0.05215952813538827, 0.1895292644179961, 0.26872999982577905, 0.2915626788329079, 0.2501780569421905, 0.2542993786115886, 0.21939664346313853, 0.24755246918019333, 0.2787515088497989, 0.24762927542524485, 0.23706814635481938, 0.21785421650572967, 0.29744836175478867, 0.2559525857222388, 0.2644890994679459, 0.2679497483448306, 0.21160856638005207], + [0.059821124194131485, 0.1803550187691663, 0.2697596202570965, 0.29854235657679773, 0.25134300435443024, 0.25577300457770297, 0.2154953573752725, 0.24649622424215498, 0.28223541401754365, 0.24582327686739133, 0.23515999480963498, 0.21321703777690576, 0.3057996905850006, 0.25786720856100237, 0.26647307520555413, 0.27019640046495996, 0.205463315571256], + [0.06787862085177893, 0.17068926566700837, 0.2701558920667256, 0.30616240353098656, 0.2529924384352021, 0.25752584604374607, 0.21148473471186616, 0.2451197267556599, 0.2858696928697269, 0.24349541584014248, 0.23299664519109414, 0.2082873952121597, 0.3152205437274404, 0.26036055983524325, 0.26868487301869787, 0.272129581424305, 0.19882498530935783], + [0.07624220767602932, 0.1606445412583635, 0.2696801661324449, 0.31439229539664754, 0.2552829960627598, 0.25953403894934857, 0.20735125827816978, 0.24337386925664914, 0.2897408340551424, 0.24053332768880453, 0.23049918458153024, 0.20303315175002074, 0.3259343356441985, 0.2635518332711784, 0.2712254036794363, 0.2734936450765742, 0.19172911720109126], + [0.08477171814919125, 0.15038066948162795, 0.26805875240582805, 0.32312496967606524, 0.25843560492784184, 0.2617314088087234, 0.20305625741190095, 0.24122176001543363, 0.29399057410930696, 0.23677664809133359, 0.22758340565495172, 0.19738911147209262, 0.3382508334977476, 0.26751892400898536, 0.27425082506042386, 0.27397948716759973, 0.18425076251535127], + [0.09327015973531427, 0.14010242980167995, 0.26502713352942214, 0.33212097877424807, 0.2627494491778824, 0.2639946799206441, 0.198535161445364, 0.2386477513680617, 0.29882240623373313, 0.23201046358440452, 0.22417674979415192, 0.19123545020040938, 0.35257733320794954, 0.2722367891918387, 0.2779944794885121, 0.27326300144573934, 0.17650572832061479], + [0.10149720441384352, 0.13003906486736683, 0.26042492717631643, 0.3409460549607013, 0.2685899365497962, 0.26613440833995444, 0.19371543118052328, 0.23566244111597398, 0.30448771508924827, 0.22599688383878766, 0.2202328345989801, 0.18437665116966978, 0.3693936257571039, 0.27751105974344825, 0.28277587039662727, 0.27108291564969383, 0.16863015376408194], + [0.10921826705072131, 0.12039847850701298, 0.25432239867037065, 0.34895184953206015, 0.2763272523656912, 0.2679049553009372, 0.18856015571058815, 0.23229636147225982, 0.3112385196165956, 0.21856581272719242, 0.21572006038437538, 0.17653999270779275, 0.3891741320391575, 0.2829635937784935, 0.2889697794832462, 0.2673382207694909, 0.16072841123286696], + [0.11627835275418588, 0.1113129864296384, 0.2470951569861052, 0.35535673723434325, 0.2862351047391417, 0.2690392460170199, 0.18312002659663248, 0.22858458703495757, 0.31925613097730376, 0.20972947758442578, 0.21056977841394706, 0.16741813376902093, 0.4122826115079935, 0.28812458521732276, 0.29692610972892686, 0.26214106740454274, 0.1528082535515921], + [0.12265455285417079, 0.1028173842755862, 0.23937272932156578, 0.35940156517339833, 0.2984083226621842, 0.26928103880647997, 0.17756050960132577, 0.22456397277146115, 0.3285944696212654, 0.1997363757220174, 0.20460946521925888, 0.15675752571921003, 0.43889663092219156, 0.29259643067803864, 0.30687722720874583, 0.25577908447592307, 0.14474727963504824], + [0.12845786681095417, 0.09487802935595281, 0.23190531909486836, 0.36047157762377363, 0.31274509577182263, 0.26837004728477365, 0.1721625181638927, 0.22030374082276918, 0.3391636854919781, 0.18904485519142053, 0.19752278455075145, 0.14446012350769777, 0.4689722235475609, 0.2961873229084735, 0.3188740445685431, 0.24863613756548883, 0.13630250974983107], + [0.13390603400156476, 0.08745120888048491, 0.22545794865361393, 0.3581258755806528, 0.3289649666912923, 0.26597337223612266, 0.16733313425455598, 0.21596531336615066, 0.35072817976132253, 0.1783016554833318, 0.18885536349816215, 0.13066997957644574, 0.50217300087082, 0.29897060499797684, 0.33273086470565616, 0.2411655858731885, 0.1271329441518368], + [0.13930071950636758, 0.08054389953282354, 0.22076793738012865, 0.35209019467898345, 0.3465979687297129, 0.2616119488900321, 0.16364418287574725, 0.21186928140635558, 0.36287458656278376, 0.16839589205633124, 0.17809031991399213, 0.11584216642775569, 0.5376716206336211, 0.3012940070216092, 0.34792424543718553, 0.23395031932803134, 0.11683142738327285], + [0.14500714695462585, 0.07425929302431485, 0.21849548129270974, 0.3423343884121983, 0.3649108383739164, 0.25468548387467277, 0.16184571567392106, 0.20851763813537086, 0.37495116323687283, 0.16052230357315742, 0.16486953426261156, 0.10077558831032253, 0.573832574335484, 0.3037280530964834, 0.36345391789968, 0.22777580915431797, 0.10504221909568671], + [0.15141421459146331, 0.06877168551414058, 0.21904909836747413, 0.32933399600625596, 0.38284522158216894, 0.2447359074653637, 0.16271900444422974, 0.20642808627685919, 0.3861170055838763, 0.15598487950148743, 0.14937360314163187, 0.08647800502590132, 0.6081635199106158, 0.30687857075218866, 0.37789288177573627, 0.22349841638090545, 0.09173013292474644], + [0.15888379190520463, 0.06417160148624963, 0.22232084483804718, 0.31434766422592914, 0.3991598899823946, 0.23188322997716102, 0.16673353526562265, 0.20568066792484485, 0.3957025698140607, 0.15553501723918198, 0.13251410222076154, 0.07373074588976995, 0.6382201433245765, 0.31108630477266097, 0.3899696481881052, 0.22154045339794426, 0.07740359604101159], + [0.1677030283838285, 0.06032606032954587, 0.22762862134339845, 0.29931453318288653, 0.4127308352337417, 0.21700454700882377, 0.1738168830239021, 0.2055475085486959, 0.40363107227642275, 0.15875194641303644, 0.11558244860926854, 0.06272214055416933, 0.66294356570683, 0.3162795186637085, 0.39929475277280724, 0.22144628809675032, 0.06297947106876094], + [0.17805351128161565, 0.0569251573319652, 0.23398997891387102, 0.2862021297836792, 0.42288273427490997, 0.20133522111471075, 0.18349179349904302, 0.20472935664525804, 0.41044362861343037, 0.1641554241706468, 0.09963368779155359, 0.05313913842047842, 0.6830717499350446, 0.32209394266639185, 0.40643895103419875, 0.22210407240840502, 0.04936303396931967], + [0.18996993176374344, 0.0536537332662107, 0.24048041599755912, 0.2763130799931306, 0.4295527926060942, 0.18588531068545405, 0.19517459718302305, 0.20201873819493604, 0.41692134224472893, 0.16990032988730827, 0.08524326562090166, 0.044565502977716186, 0.7002909055462638, 0.327994023962715, 0.41236428155302746, 0.22243196474489574, 0.03720973358079795], + [0.203316635504698, 0.05031112915456483, 0.24644699752380556, 0.270051193778176, 0.43319076738950624, 0.17116648587890412, 0.20836506523430834, 0.19677622082656834, 0.4236922597965494, 0.17444943679822442, 0.07263245505149865, 0.03677187197040117, 0.716146265543222, 0.33333798270386683, 0.41786780055127565, 0.2218674256935843, 0.026926795052572294], + [0.2178804543506744, 0.0468201064253186, 0.25155002965972584, 0.2671346092169855, 0.4344953400152629, 0.1572444410298411, 0.2227323252102244, 0.18894880759701277, 0.43107447159166495, 0.176927655384673, 0.061789838636820436, 0.029729669943161872, 0.731552888772617, 0.3375509419118081, 0.4233705492781679, 0.22040327235516824, 0.018675238044541628], + [0.2335061091030002, 0.043184649341462114, 0.2556653586577287, 0.2669864655933672, 0.4341635797808247, 0.14395978357858463, 0.23809681874372346, 0.17882900563675816, 0.43911442870215545, 0.17710402315307816, 0.05254609002163234, 0.023495975465558212, 0.7468539553078103, 0.3402990007361499, 0.42895262119930555, 0.21835982817030267, 0.01238854764579997], + [0.25017517649208726, 0.03945298778975046, 0.25876112024158104, 0.2689903184992997, 0.43279559975764964, 0.13111544747546233, 0.2543410097182658, 0.16686353267614884, 0.4476800349327717, 0.17518870644524323, 0.044643532543517404, 0.018121564203019944, 0.762046221682988, 0.3415250285533837, 0.43445666418513124, 0.21617938956107885, 0.007838912841450375], + [0.26802965636222975, 0.035699431482404065, 0.26083608491694826, 0.2725511821944749, 0.4309133117458944, 0.1185505994173406, 0.2713267064653428, 0.1535956665723896, 0.45652704352319434, 0.1716578803989863, 0.0377971731769122, 0.013617332556616998, 0.776927622810166, 0.34138026867969046, 0.4395623279050655, 0.21434257486772193, 0.004714823798201132], + [0.2873711186477113, 0.03201541149814722, 0.26191572969701876, 0.2770698643392431, 0.4289989989700559, 0.10614224751505502, 0.28885565952601666, 0.13966069375248155, 0.4653414112251849, 0.16714943693533127, 0.031741999142669466, 0.009952753807399637, 0.7911558106746152, 0.3401267825075159, 0.44383671997563884, 0.21335216119876999, 0.0026843348934296415], + [0.3086399685284672, 0.028500673282526787, 0.26206890516076653, 0.2819240202645071, 0.42750640787360433, 0.09379670149664744, 0.30666624526520425, 0.12575659065206363, 0.47378047709043886, 0.1623796166864712, 0.026270311036587276, 0.007063410504360426, 0.8042866619010465, 0.33804668119884257, 0.4467994606531909, 0.21371419409200082, 0.0014396679785736615], + [0.3323680813622687, 0.025249979993210603, 0.2614174297461178, 0.28649350367464943, 0.4268390997161522, 0.08146544264633991, 0.32445024794329963, 0.11256245105112302, 0.48152188238142124, 0.15803710264538598, 0.021258618717623697, 0.004859260114510699, 0.8158450243217188, 0.3353742722082611, 0.44802469707007647, 0.2158775623218101, 0.000723477243449257], + [0.3591070128380326, 0.022334736060677974, 0.2601289209838622, 0.29022591317603064, 0.42731044933685963, 0.06918713292055463, 0.34187706332577805, 0.10062328847603375, 0.48831255330992435, 0.1546527361267931, 0.016677273806708214, 0.0032335938571499447, 0.825436410878211, 0.3322643842601659, 0.44726876403501636, 0.22012801500903253, 0.0003388476931158249], + [0.38934665694137777, 0.019784148532502047, 0.2583994542194367, 0.2927135423802367, 0.42910287670208735, 0.057130798485436965, 0.35861758275096906, 0.09024688786551738, 0.4940047810915769, 0.1524832081278008, 0.01257596694855629, 0.002074089366192663, 0.8328667569377681, 0.32880258504186094, 0.4445822712109079, 0.22646793470795348, 0.0001472179859479717], + [0.42344491100770626, 0.017574577638653676, 0.2564385134100363, 0.29374950656694837, 0.4322374210012176, 0.04560429449331784, 0.374367552689862, 0.08145492245982693, 0.4985732840723269, 0.15146216910938837, 0.009045584092752315, 0.0012745648117760478, 0.8382177007125413, 0.32504486943206623, 0.44035370672818774, 0.23454230884593452, 5.9118293007391054e-05], + [0.4615901752924315, 0.01563486871542806, 0.25445932769870344, 0.29334215171052413, 0.43656366350498893, 0.03500486174005497, 0.3888749488799778, 0.07400743479208673, 0.5021128005913676, 0.15125290637955333, 0.006167248845139534, 0.0007435525472383132, 0.841836300374821, 0.3210581956480734, 0.43524520247212267, 0.24367471854117012, 2.1882596248007854e-05], + [0.5038168580282791, 0.013869046676564922, 0.25266542203458137, 0.29168036999664276, 0.4417851656157161, 0.02572115556347002, 0.40197051495188135, 0.0674954046534962, 0.5048129552750275, 0.15138884617161613, 0.003967907803495083, 0.00040702438920704, 0.8442362224726897, 0.31693677186016506, 0.4300260494886167, 0.25302973662511064, 7.445364652388802e-06], + [0.5500788222012336, 0.012188496584465473, 0.25122679863569713, 0.2890598388005168, 0.44752486597418795, 0.018028031645831406, 0.41359063260143475, 0.06147215164557849, 0.5069091995721298, 0.1514369441382095, 0.002402082885309159, 0.00020646476787423317, 0.8459545094457249, 0.3127924787824987, 0.425371401515581, 0.2618338143080994, 2.3189701532357096e-06], + [0.6003577483520763, 0.010539445102014058, 0.2502537916189598, 0.2857994443151805, 0.4534073183141223, 0.012020434985307917, 0.42377983861542884, 0.05557602332388078, 0.5086237104616613, 0.15110946954326276, 0.0013655029207650749, 9.592073408179264e-05, 0.8474291104535957, 0.3087369586663554, 0.42171801207562737, 0.2695443932029246, 6.56817949094986e-07], + [0.654765674980765, 0.008913746130999881, 0.24978365340740635, 0.28217953427955134, 0.4591230666170039, 0.007608260447453918, 0.43266897199211374, 0.049602102812330254, 0.5101206697770245, 0.15029346300142105, 0.0007274444340183239, 4.0416753558617585e-05, 0.8489386795169618, 0.30486969111451123, 0.4192260473243315, 0.2759041142449806, 1.675158203120451e-07], + [0.7136074991698474, 0.007340708450482976, 0.24978715463381873, 0.27841522409702796, 0.4644569141602582, 0.004562913265618074, 0.44043628134008417, 0.043509574209471956, 0.5114912355674736, 0.14901773493584825, 0.00036218122468596693, 1.5324009490067577e-05, 0.8506047619136323, 0.30127326967158224, 0.41783112396542527, 0.2808955831148283, 3.796683437051805e-08], + [0.7773917555269817, 0.005867704041993068, 0.25019077350467045, 0.2746576708335488, 0.4692838531958509, 0.002587904047413427, 0.4472654796084922, 0.03738158735317254, 0.512765032578771, 0.14739513697369988, 0.0001678823188586352, 5.193479201663955e-06, 0.8524317878644968, 0.2980119581827138, 0.417337773453442, 0.28465026967733587, 7.524930768292373e-09], + [0.8468010434024308, 0.00454069483689365, 0.2509044378957658, 0.2710083288932785, 0.47354653979253747, 0.0013847699936630781, 0.4533135453509293, 0.03136756545476921, 0.5139341218932594, 0.1455685691510549, 7.208506781426542e-05, 1.563272359957886e-06, 0.8543577824841169, 0.295132029615713, 0.4175102017037506, 0.28735777215070607, 1.2805219370504183e-09], + [0.9226451068660305, 0.003392000017936649, 0.25184586531409064, 0.26753449084372083, 0.4772276449964489, 0.000696993005963846, 0.45869401492248796, 0.02563271380825466, 0.5149762802985843, 0.14367353292683488, 2.849518227645459e-05, 4.1498243164006045e-07, 0.8562975567374047, 0.2926644430364955, 0.41813691889980587, 0.2891986403939062, 1.8339578415527576e-10], + [1.005817285290365, 0.0024364718509305213, 0.25295656451863124, 0.2642811580522662, 0.480325806552519, 0.00032876533314674095, 0.4634742320572987, 0.02032605415834575, 0.5158709501625347, 0.14181868213766863, 1.029669838481574e-05, 9.634237905083519e-08, 0.8581709246732185, 0.290629741060179, 0.41906464531729604, 0.290305615076838, 2.1642138734286e-11], + [1.0972652752135665, 0.0016733369651002878, 0.25420833743019416, 0.2612789492009443, 0.4828393772637541, 0.00014468859684009226, 0.4676816462499319, 0.015566570490788459, 0.516607096345041, 0.1400801537066417, 3.3744387441703355e-06, 1.9367430525521765e-08, 0.8599164523746078, 0.28904360085644876, 0.4202071866268649, 0.29074921360138223, 2.057846025265121e-12], + [1.1979776051767366, 0.0010902307214298945, 0.25560124128404765, 0.25854921422624116, 0.484759314591227, 5.911369182502289e-05, 0.47131485014706975, 0.011440891337761366, 0.5171851466968502, 0.13850384123552825, 9.944316646789251e-07, 3.3320252955209815e-09, 0.8614951609058638, 0.2879207379046093, 0.42153758173604955, 0.29054168140077746, 1.5398357050989638e-13], + [1.3089816080758452, 0.0006670330470713445, 0.2571544696353483, 0.25610708511856234, 0.4860714130226486, 2.2295419022909116e-05, 0.4743574653417609, 0.008004497804175288, 0.5176157435515262, 0.13711043295139896, 2.6112999890180395e-07, 4.840058928254716e-10, 0.8628893053456017, 0.28727485681352444, 0.4230702029657437, 0.2896549413811102, 8.842697490953236e-15], + [1.431347348265886, 0.0003786053994398446, 0.25889151400415933, 0.25396235395398914, 0.4867675274238854, 7.714589798568414e-06, 0.47679495169083225, 0.0052799602934013815, 0.5179173755245812, 0.13589983819848894, 6.050902341994989e-08, 5.844900924732861e-11, 0.8641001011507684, 0.2871128838086019, 0.42483691448795036, 0.2880502029380215, 3.793805481518639e-16], + [1.5661943894013102, 0.00019676554722453454, 0.26082199390881416, 0.25211780036901466, 0.4868634407967754, 2.4316026931183115e-06, 0.4786338810331972, 0.003249785122181043, 0.5181139038324153, 0.1348540924614439, 1.22430148465441e-08, 5.764982593123815e-12, 0.8651458952243779, 0.2874235457024408, 0.42686063089354, 0.28571582443287435, 1.1813244367411842e-17], + [1.714703135404015, 9.248469232930366e-05, 0.2629259211358146, 0.25056556312406447, 0.4864160314215218, 6.922897950693288e-07, 0.4799189161394493, 0.0018483721680846853, 0.5182320202254505, 0.13394044962956547, 2.1377061935125334e-09, 4.550679535831416e-13, 0.8660595482004948, 0.2881646456534843, 0.4291324114930876, 0.2827029434006233, 2.587114129039043e-19], + [1.878135714891531, 3.8921164385599665e-05, 0.26514939415237065, 0.24928419716003342, 0.485527487684273, 1.7621459030854937e-07, 0.4807375904880544, 0.0009639742271603172, 0.5182982593365117, 0.13311747031177446, 3.177518891276735e-10, 2.808464531612572e-14, 0.8668825293709446, 0.2892583138161053, 0.43160206726331474, 0.2791396190539349, 3.8501644912071076e-21], + [2.0578678737314493, 1.4557652667278063e-05, 0.267416857862853, 0.24823992733639225, 0.4843286572085871, 3.961060182620853e-08, 0.4812057676574154, 0.00045847417560004584, 0.5183357186037684, 0.13234443768056456, 3.957139099434739e-11, 1.3197345671121897e-15, 0.8676555622936877, 0.2906019073829543, 0.4341889234848709, 0.2752091691387686, 3.748998758225858e-23], + [2.255424858691887, 4.8108048465355024e-06, 0.2696530852511846, 0.24739280774507622, 0.48294929624665073, 7.75254004335471e-09, 0.481440386133755, 0.00019804257564985317, 0.5183615635385787, 0.1315901381752599, 4.053406875941762e-12, 4.585377714896916e-17, 0.868409861833505, 0.2920906499595058, 0.43680613172399996, 0.27110321834582773, 2.2906553779587343e-25], + [2.4725110677082855, 1.395754064553379e-06, 0.2718007763115559, 0.24670429223590412, 0.4814935357638904, 1.3005954998271303e-09, 0.48153626709196057, 7.736029113980608e-05, 0.5183863713133516, 0.1308365354476132, 3.3450001368692223e-13, 1.140797491957695e-18, 0.869163464560462, 0.293638178540445, 0.43938238646887473, 0.2669794350319006, 8.385935507359443e-28], + [2.711029726987405, 3.5260772745708364e-07, 0.27382603880385714, 0.2461421472341886, 0.4800314614326498, 1.8390015880798372e-10, 0.48155760470071335, 2.7169072057028998e-05, 0.5184152260418442, 0.1300770131864597, 2.1736977572861492e-14, 1.9628393776347735e-20, 0.8699229868180003, 0.295185044249186, 0.44187072171265357, 0.2629442340588452, 1.7480938851910372e-30], + [2.97309659652815, 7.674038147999642e-08, 0.27571445695173774, 0.2456816150239863, 0.47860385136312583, 2.1523912612667525e-11, 0.4815419112854016, 8.512259314431135e-06, 0.5184495764331819, 0.1293122183284259, 1.0850292664644506e-15, 2.24909415534984e-22, 0.8706877816729598, 0.29669609491289844, 0.44424601598320806, 0.25905788909797356, 1.961673740201872e-33], + [3.2610534329179135, 1.4200582894286846e-08, 0.2774640858512353, 0.2453042195043187, 0.47723168051602266, 2.0451173078834696e-12, 0.4815087080245179, 2.356063262226126e-06, 0.5184889359099869, 0.1285462932979358, 4.0493860923087444e-17, 1.6470275977926318e-24, 0.871453706701117, 0.2981531001875282, 0.4464979812394203, 0.2553489185481493, 1.11406088633573e-36], + [3.577484566450855, 2.2003255363126066e-09, 0.27907949427592205, 0.24499593254257626, 0.4759245710434414, 1.544579408305992e-13, 0.48146739033639685, 5.695023673353376e-07, 0.5185320401610597, 0.12778450330912922, 1.0970727482857185e-18, 7.368815707123181e-27, 0.8722154966882217, 0.29954767841763086, 0.44862461573255114, 0.251827705814229, 2.9915003184836235e-40], + [3.9252375199375926, 2.8057411650526344e-10, 0.28056801488840066, 0.24474565353957226, 0.4746863313438138, 9.061132101153308e-15, 0.48142239819790394, 1.1865384968478722e-07, 0.5185774831482911, 0.12703206912962703, 2.0890517513951187e-20, 1.917020897317039e-29, 0.8729679308664985, 0.30087646498981735, 0.4506278603103685, 0.24849567465905048, 3.524409367872379e-44], + [4.307447461456032, 2.888228283688189e-11, 0.28193781842773546, 0.24454423336814562, 0.4735179482187437, 4.025717375230551e-16, 0.48137597961345424, 2.0999449957086448e-08, 0.5186239993871865, 0.12629370630371797, 2.698480801051011e-22, 2.7466069517391894e-32, 0.8737062936915413, 0.30213844824862335, 0.4525112841420178, 0.24535026756668807, 1.6779064417986126e-48], + [4.727565096618938, 2.3497425327050552e-12, 0.28319708152321194, 0.24438392863048117, 0.4724189898798819, 1.3173614693030432e-17, 0.48132944358032564, 3.106527647512611e-09, 0.5186705533132563, 0.12557348771849058, 2.274034418236955e-24, 2.041596859978566e-35, 0.874426512276195, 0.3033337292561324, 0.45427905932107104, 0.24238721138022726, 2.9486548302412046e-53], + [5.189387800241235, 1.4759547478189774e-13, 0.28435368258338833, 0.2442581060648555, 0.47138821138114523, 3.0793877921300327e-19, 0.4812836576248084, 3.7738200512239733e-10, 0.5187163419979262, 0.12487482802201401, 1.1976600831905303e-26, 7.372692465009785e-39, 0.875125171972351, 0.3044630175347692, 0.4559355801853695, 0.2396014022387254, 1.7314597352062832e-58], + [5.697094028072673, 6.9765829627884345e-15, 0.28541510940141657, 0.24416106632756043, 0.4704238242952079, 4.97139536987169e-21, 0.4812392327298358, 3.691955230169282e-11, 0.5187607672333607, 0.12420050842255013, 3.760172740939183e-29, 1.2033693164561036e-42, 0.8757994915717148, 0.3055274378782213, 0.4574853432319698, 0.236987218851018, 3.0448386893165716e-64], + [6.255281220697251, 2.412555162446478e-16, 0.2863884383286824, 0.24408791889325349, 0.4695236427978038, 5.341076306125293e-23, 0.48119659877726434, 2.8470136190434196e-12, 0.5188034012199995, 0.12355271554626188, 6.68096189258485e-32, 8.199593383467993e-47, 0.8764472844480884, 0.3065284458061173, 0.4589329101200688, 0.23453864403796928, 1.4215166931217464e-70], + [6.869007512194503, 5.9170885893698156e-18, 0.2872803346812419, 0.2440344799408165, 0.4686851853939873, 3.665863519832826e-25, 0.48115604568631176, 1.6902170873350543e-13, 0.5188439543136212, 0.12293308692032405, 6.344275596786329e-35, 2.1373045886031174e-51, 0.8770669130742591, 0.3074677746895319, 0.46028288886047336, 0.2322493364174487, 1.5431676452209638e-77], + [7.543837616535381, 9.947814105065509e-20, 0.2880970596180216, 0.2439971834757603, 0.46790575691921055, 1.536733240973195e-27, 0.4811177530181227, 7.527606541810422e-15, 0.5188822469819613, 0.12234276044214054, 3.023446429067031e-38, 1.9359438002223428e-56, 0.8776572395527849, 0.3083473911341422, 0.4615399150832854, 0.23011269375347612, 3.366877496931282e-85], + [8.285893310189042, 1.1042159383989055e-21, 0.2888444798731914, 0.2439730024470139, 0.467182517690274, 3.744665438018385e-30, 0.4810818139061515, 2.4442808706356533e-16, 0.5189181860939286, 0.12178242610205979, 6.747267817443296e-42, 5.482450652873047e-62, 0.8782175738932813, 0.30916945312317684, 0.4627086304258904, 0.2281219164252802, 1.2575935314124101e-93], + [9.10190897278291, 7.765720847668573e-24, 0.28952807947141357, 0.24395937849002214, 0.4665125420469838, 5.023226428180747e-33, 0.4810482548465328, 5.607982710661079e-18, 0.5189517451535365, 0.12125237844889904, 6.533980398367517e-46, 4.3214584226488266e-68, 0.8787476215468994, 0.3099362701641882, 0.46379365880683177, 0.22627007100664717, 6.741096350331061e-103], + [9.999292693686638, 3.3068805792685186e-26, 0.29015297306824045, 0.24395415942102666, 0.4658928675174714, 3.493827567917066e-36, 0.4810170519954527, 8.78301919924603e-20, 0.5189829480046061, 0.12075256847934611, 2.5250009339732546e-50, 8.343205183012973e-75, 0.8792474315169246, 0.3106502656660017, 0.4647995818955061, 0.22455015241927256, 4.2708332483417103e-113], + [10.986193502691163, 8.111564414727872e-29, 0.29072392061975616, 0.24395554376574546, 0.46532053561987097, 1.1796636013989872e-39, 0.48098814445686516, 9.04033477552137e-22, 0.5190118555431843, 0.1202826538499953, 3.550993204683449e-55, 3.427726701265297e-82, 0.8797173461467419, 0.31131394190019596, 0.4657309149497479, 0.2229551431336901, 2.5832763911507423e-124], + [12.07157533824376, 1.0849640701576756e-31, 0.29124534308724764, 0.24396203168545638, 0.46479262523156384, 1.798365011162612e-43, 0.4809614449939276, 5.8654542275997946e-24, 0.5190385550061133, 0.11984204653616252, 1.642145953794581e-60, 2.567252839542485e-90, 0.8801579534610195, 0.3119298478595202, 0.46659208395126833, 0.221478068175411, 1.179550245603553e-136], + [13.265298427541293, 7.449774738316104e-35, 0.2917213388882328, 0.2439723817179275, 0.46430627939721775, 1.1429732041224266e-47, 0.4809368485583131, 2.2911505464771295e-26, 0.5190631514417204, 0.11942995728055338, 2.2336512788792052e-66, 2.956804186253104e-99, 0.8805700427170416, 0.31250055024526147, 0.46738740472973195, 0.22011204501347406, 3.140219413741877e-150], + [14.578208819760425, 2.4573003686096876e-38, 0.29215570082038106, 0.24398557279230895, 0.4638587263899744, 2.7742468391220552e-52, 0.4809142389914088, 5.12273886835904e-29, 0.5190857610086185, 0.11904543637876111, 7.904757506174355e-73, 4.342920372011884e-109, 0.8809545636192083, 0.3130286077239693, 0.4681210645491751, 0.21885032771729887, 3.668527238382708e-165], + [16.022236887438673, 3.6194756211980525e-42, 0.2925519332077485, 0.24400077101183135, 0.46344729578251465, 2.3351168639191828e-57, 0.4808934942106574, 6.201723912077444e-32, 0.5191065057893645, 0.11868741053125803, 6.359684741404912e-80, 6.62114069588378e-120, 0.8813125894670444, 0.3135165485022795, 0.46879710644135103, 0.21768634504851117, 1.3758133508354762e-181], + [17.61050569220141, 2.1969276729486884e-46, 0.29291326904665144, 0.2440173007291793, 0.46306943022581054, 6.129732151549172e-63, 0.4808744901542806, 3.824127854659542e-35, 0.519125509845737, 0.11835471564947715, 1.0027794028802145e-87, 8.354507732645395e-132, 0.8816452843491163, 0.3139668511835975, 0.4694194164112491, 0.21661373239873805, 1.174450018876393e-199], + [19.357450200398514, 5.0302113784067056e-51, 0.2932426869590819, 0.24403461946902896, 0.4627226935731714, 4.46531105650184e-69, 0.4808571037194976, 1.1229267538565728e-38, 0.5191428962805165, 0.1180461256347475, 2.6321247359999036e-96, 6.800740629369903e-145, 0.8819538743640968, 0.3143819287967953, 0.4699917135109884, 0.2156263576870138, 1.5633415510266567e-219], + [21.27894843259411, 3.942141915826045e-56, 0.29354292779269525, 0.24405229628138883, 0.4624047759269147, 7.939264451294736e-76, 0.4808412148939866, 1.458256100114635e-42, 0.5191587851060245, 0.11776037725353944, 9.610877815744901e-106, 2.7153759746364613e-159, 0.882239622745518, 0.3147641158270404, 0.4705175426777761, 0.21471834149099056, 2.1405583367259087e-241], + [23.392465739128966, 9.501711094518972e-62, 0.29381651073684945, 0.24406999313879793, 0.46211349612512864, 2.9915408101840805e-83, 0.4808267082481897, 7.72015769797426e-47, 0.5191732917518189, 0.11749619131163384, 4.006886950821643e-116, 3.933978732688777e-175, 0.8825038086876029, 0.31511565803360964, 0.4710002701578347, 0.2138840718051956, 1.9076271564664578e-265], + [25.717213513138812, 6.261707176311398e-68, 0.29406574885257764, 0.24408744902006013, 0.4618468021279634, 2.045188546222391e-91, 0.48081347392749363, 1.523476214862422e-51, 0.5191865260725131, 0.11725229038602271, 1.5349669160592212e-127, 1.484432986500136e-192, 0.8827477096133631, 0.3154387048083539, 0.47144308128749657, 0.21311821390147107, 6.688294440461185e-292], + [28.274323783539646, 9.9125974124218e-75, 0.2942927639402177, 0.24410446635283678, 0.4616027697074103, 2.138406747999292e-100, 0.4808014082583201, 1.0154907276129499e-56, 0.5191985917416854, 0.11702741340935281, 4.254717690871651e-140, 1.0130085021543714e-211, 0.8829725865901559, 0.31573530381036874, 0.47184898037195605, 0.21241571581555044, 5.3e-321], + [31.087041274765163, 3.2691986967563666e-82, 0.29449950069132047, 0.24412089951680263, 0.4613795997922353, 2.833633536934227e-110, 0.4807904140606502, 2.051529791006474e-62, 0.519209585939354, 0.11682032742059233, 6.561192395267524e-154, 8.370390001385885e-233, 0.8831796725790169, 0.31600739760565516, 0.4722207923878514, 0.2117718100048157, 0.0] + ] +} diff --git a/tests/test_games/golden_logit/strategy_random_bimatrix_20x20.json b/tests/test_games/golden_logit/strategy_random_bimatrix_20x20.json new file mode 100644 index 000000000..cff112be1 --- /dev/null +++ b/tests/test_games/golden_logit/strategy_random_bimatrix_20x20.json @@ -0,0 +1,165 @@ +{ + "counts": [{"predictor_attempts": 195, "accepted_steps": 159, "rejected_distance": 36, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 436, "function_evals": 436, "jacobian_evals": 196, "factorizations": 196}], + "points": [ + [0.0, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001, 0.05000000000000001], + [0.0007248942767240763, 0.04985503741504523, 0.04996236491352786, 0.04991962127099899, 0.049889536793664827, 0.050179996744898134, 0.050101684539208956, 0.05036813178399041, 0.050255204541138694, 0.049875159383458795, 0.04967904002508336, 0.0500419131243469, 0.04967240092866467, 0.049537283542949256, 0.050443956624529024, 0.049960482022857425, 0.050186019479170875, 0.05018658406415499, 0.050014027168712956, 0.049993687672318356, 0.04987786796128507, 0.05044199663262449, 0.04945713575532786, 0.05029354215570055, 0.05012938063284783, 0.04990660089397038, 0.050022361436632294, 0.05021240985756194, 0.05030969257064558, 0.04958349189439272, 0.04989782250033757, 0.05019649636700406, 0.05019414627605072, 0.05001517348952539, 0.04995856996030658, 0.04986770153347014, 0.05002833820312636, 0.05004525204251812, 0.04991990724570899, 0.049969984870629175, 0.049549995681623625], + [0.001522317973813514, 0.049701221511182773, 0.049923398410322305, 0.04982285607027439, 0.04976963402451289, 0.05037661470589439, 0.05021127668314548, 0.05077511223081885, 0.05053667244756207, 0.049731388758414805, 0.04932289195572857, 0.05008581740882215, 0.04931439626692539, 0.04903250496001084, 0.05094218883583831, 0.0499150594395296, 0.05038644610670157, 0.05039317881490856, 0.050029812226357565, 0.04998617902279249, 0.049743350120265484, 0.05092767615640696, 0.0488659949627847, 0.05061639586538317, 0.0502733631620126, 0.0497974363973942, 0.050044287350836554, 0.05044689732240413, 0.050649855905652484, 0.0491260400319671, 0.04978391218764693, 0.050410201857434375, 0.05040404660101235, 0.0500333515435968, 0.0499094326548368, 0.04972216828417961, 0.05005796201184235, 0.050099146238742946, 0.049835224805372634, 0.049934622556894466, 0.04906198410360677], + [0.002399390150834439, 0.049538804998057934, 0.04988347103334504, 0.04970641760112627, 0.049639620794154356, 0.05059115260988235, 0.050329063037045034, 0.051225135765580285, 0.050847143056903216, 0.049565469004983244, 0.04892763219704715, 0.050131412257716, 0.04892340351300742, 0.048482358289744364, 0.05150232542157557, 0.04986266161034406, 0.05060179646293406, 0.05062213283613522, 0.05004755760986166, 0.04997722099675003, 0.049595220903822144, 0.051461009032540805, 0.04822309686273788, 0.05097149170359913, 0.050433753479068415, 0.04966963862533264, 0.05006534878029296, 0.05070570708204402, 0.05102326875980662, 0.0486238235443491, 0.04965696797817792, 0.05064218257026911, 0.05063041154817122, 0.050055001600559416, 0.0498511619550491, 0.049562131738370735, 0.05008861027455268, 0.05016350193036812, 0.04974633282951114, 0.0498929127334381, 0.04853364697177422], + [0.0033638672296986195, 0.04936828271831025, 0.04984308597645399, 0.04956639651884006, 0.04949879254585607, 0.050824936589302, 0.05045524727557849, 0.05172283805845069, 0.05118963644380518, 0.04937360438154901, 0.048488940094736664, 0.05017825448607114, 0.048496665459128604, 0.0478833990658794, 0.05213325732379124, 0.04980198756104405, 0.050832432442570116, 0.05087612207255692, 0.05006747480504538, 0.04996649850559215, 0.04943214767546585, 0.052046179671958626, 0.04752491450366676, 0.051362059709140456, 0.05061260604732698, 0.04951981100257033, 0.05008505413680879, 0.05099126315946895, 0.05143287875294653, 0.048072736793289016, 0.04951559290447288, 0.050893430250228876, 0.05087381857091767, 0.050080623409319465, 0.049782086396715435, 0.049386230708497514, 0.05011989241651166, 0.05024054817996193, 0.049653860622119905, 0.04984366790231749, 0.04796274486178395], + [0.004424176543855399, 0.04919045111008809, 0.049802905545098995, 0.049398161814209654, 0.04934640593427052, 0.051079292112738595, 0.05058991856583321, 0.0522733290692702, 0.051567475922702256, 0.04915132572901533, 0.04800208266175497, 0.05022572037338806, 0.04803124582677205, 0.04723207058009962, 0.0528453783774521, 0.049731450408617206, 0.051078499528455515, 0.05115820750920473, 0.05008977704783992, 0.04995361604412067, 0.04925268583911622, 0.05268753598351204, 0.04676793554966047, 0.05179166460549648, 0.050812259786719924, 0.04934393883857297, 0.05010285975731861, 0.05130615696392303, 0.05188178012975024, 0.04746839337695933, 0.04935831003264872, 0.051164804738631504, 0.051134653317767134, 0.050110732799563205, 0.04970025623928499, 0.04919301820584216, 0.05015124678468691, 0.0503330198417811, 0.049558764879814046, 0.0497854804469369, 0.047347187721170046], + [0.005589442677278151, 0.04900647634965233, 0.04976377927749257, 0.04919625526881861, 0.04918166974632072, 0.05135550334182843, 0.05073301299838531, 0.0528822216035986, 0.05198430854028965, 0.048893383210286315, 0.047461910344367475, 0.05027296013638385, 0.04752402571094064, 0.046524740554635687, 0.05365087592846785, 0.04964910781208799, 0.051339848851289595, 0.05147190506872755, 0.050114667602750254, 0.049938072878600796, 0.04905527477516083, 0.05338950830180616, 0.045948741697240725, 0.052264247708653, 0.05103537790963403, 0.04913728994247526, 0.05011819185858572, 0.05165312000611011, 0.052373176475081565, 0.04680614061033792, 0.04918358998538863, 0.05145695746820747, 0.05141303731749029, 0.05014583464479592, 0.04960341035708113, 0.04898097577286566, 0.05018188659497367, 0.05044427614750688, 0.0494624286752528, 0.0497166848622167, 0.04668512366436432], + [0.00686950276639729, 0.048817970558288626, 0.049726771886811516, 0.04895428422080948, 0.049003729810565486, 0.051654755499567676, 0.05088426735760934, 0.05355565166339975, 0.05244412106063035, 0.04859363074720192, 0.0468628692886877, 0.05031884423360115, 0.046971700651740986, 0.045757750362212045, 0.05456408160286762, 0.049552575190627245, 0.051615939607775024, 0.05182127035327475, 0.05014232181702492, 0.049919229415995435, 0.04883823467146112, 0.05415648661455404, 0.045064109922564974, 0.052784177883623405, 0.05128499112963362, 0.04889430697569694, 0.05013048516012422, 0.052034973884413985, 0.0529103231682593, 0.04608108819556239, 0.048989893946514165, 0.051770231227207454, 0.051708740949006245, 0.050186380689664946, 0.04948894530259028, 0.048748538561033276, 0.0502107298993513, 0.050578446598541604, 0.049366785952113273, 0.049635314803686825, 0.04597504913597276], + [0.008274905850273974, 0.048627074255756395, 0.049693187845130334, 0.048664820607608676, 0.048811645102362446, 0.05197805438595009, 0.05104316496833369, 0.05430028549826401, 0.05295124753255044, 0.048244906499658985, 0.04619903716998974, 0.050361901448654905, 0.04637077794784291, 0.044927479102613806, 0.055601894181155624, 0.04943891798763284, 0.05190571801315016, 0.05221100120832609, 0.05017286058142669, 0.0498962615612408, 0.04859976410262381, 0.054992641970298566, 0.044111138693591144, 0.05335631493887065, 0.05156454287510583, 0.048608495100355135, 0.050139245201440696, 0.05245454722154231, 0.05349644295125446, 0.04528815565159908, 0.04877573666164406, 0.05210453068445772, 0.052021081763977045, 0.05023270663663849, 0.04935389009961527, 0.04849413557688553, 0.05023630902649696, 0.05074060958041059, 0.04927447709977486, 0.04953905467830879, 0.04521594358792574], + [0.009816890201875612, 0.048436541379704, 0.04966458748758916, 0.048319318693800954, 0.04860435138924334, 0.05232611531884235, 0.051208874115934444, 0.05512330667541388, 0.053510362433904196, 0.0478389168537945, 0.04546419141047156, 0.05040024967236873, 0.04571757352116941, 0.04403042486285695, 0.05678428822618242, 0.049304518964391475, 0.052207468769076205, 0.052646561323056576, 0.05020631217477386, 0.04986809890207884, 0.0483379378258368, 0.05590167459242128, 0.043087401757521654, 0.05398609033701997, 0.05187793390393128, 0.04827231118375666, 0.050144143517930624, 0.05291454536361367, 0.054134606334787755, 0.04442214390796879, 0.04853977433961838, 0.05245915760784424, 0.05234881036770366, 0.050284941420463955, 0.04919489191549927, 0.04821625091890383, 0.05025665379639795, 0.05093700955443689, 0.04918904196935477, 0.049425185595402064, 0.04440743161574453], + [0.01150733143279916, 0.04824982042809777, 0.04964278680613957, 0.047908069709555225, 0.04838060783987905, 0.052699211429897336, 0.051380180800506894, 0.056032374820634744, 0.05412645028672712, 0.04736613564048599, 0.044651920403871316, 0.05043152192216121, 0.04500820724011997, 0.04306330528379684, 0.05813492359106527, 0.04914491660553386, 0.052518635231195494, 0.05313432804570536, 0.05024255879524281, 0.04983334149182626, 0.0480507036284389, 0.05688646785694779, 0.04199113096551594, 0.054679612211008484, 0.05222956184172313, 0.04787706456633756, 0.050145157320084274, 0.05341735365656842, 0.05482756663678915, 0.04347783716803332, 0.04828092221950468, 0.052832604521836614, 0.05268998964479181, 0.05034288002185339, 0.04900821973911602, 0.04791351348600466, 0.05026914149177544, 0.05117531872340015, 0.04911515742041213, 0.049290525586719085, 0.04354997492210834], + [0.01335865320413733, 0.04807112132391403, 0.04962982947664808, 0.047420218771293876, 0.048138921202935586, 0.0530969683616971, 0.05155541952647686, 0.05703554626776342, 0.05480473809765104, 0.04681573578283741, 0.043755789928865314, 0.050452792656443715, 0.04423859512513073, 0.042023179030795395, 0.05968187183726557, 0.048954611578046835, 0.05283560537279872, 0.053681767036810685, 0.0502812635423094, 0.04979014899169889, 0.04773587609020254, 0.0579486245282061, 0.04082142758691863, 0.05544380462845308, 0.052624348426594934, 0.04741284432676518, 0.05014276802574217, 0.053964748869777666, 0.05557753717807217, 0.0424501415059114, 0.04799850548082575, 0.053222301024123224, 0.053041878703592636, 0.05040580964335834, 0.048789795475180475, 0.04758482449208506, 0.05027030518383824, 0.05146494839118016, 0.049058927085207746, 0.04913136405483397, 0.04264509539020378], + [0.015383691823819347, 0.047905452109795056, 0.0496279150452168, 0.046843877469195216, 0.04787744175363861, 0.05351808902872305, 0.05173240860508306, 0.058141146316984346, 0.05555057042486179, 0.046175577147273716, 0.04276957787275904, 0.050460513144606235, 0.043404436361697565, 0.040907588829081284, 0.0614584753347959, 0.0487268403762538, 0.05315346269705802, 0.054297634933126636, 0.05032177352010109, 0.04973609531241414, 0.04739112372017936, 0.0590878605295806, 0.03957849846980086, 0.05628659512380982, 0.0530677433847411, 0.046868494042640554, 0.05013823568484703, 0.054557485887648006, 0.05638589537712431, 0.04133426639054093, 0.04769244458760757, 0.0536243084810333, 0.053400841087300026, 0.05047227784677379, 0.04853526420803962, 0.04722953402689123, 0.05025559079499385, 0.051817413382645124, 0.049028231468222036, 0.04894339037533709, 0.04169562885184728], + [0.01759550609038331, 0.04775860219203241, 0.04963926167772767, 0.04616637321284543, 0.04759382570796463, 0.05395998843900809, 0.05190840012926809, 0.059357584200202776, 0.05636919759225271, 0.045432281553635365, 0.041687590183465247, 0.05045046978070245, 0.042501192698441395, 0.039714725342224054, 0.06350435244051349, 0.04845331964224382, 0.05346570499455883, 0.05499220830953062, 0.050362995650512894, 0.049667982227059496, 0.0470139440308813, 0.06030123362410663, 0.038263909101381534, 0.05721717006576711, 0.05356568864555753, 0.046231661869373615, 0.050133968608191144, 0.05519471850487056, 0.057252794756844916, 0.04012595409410765, 0.04736347142711455, 0.05403296173732344, 0.053762307961153784, 0.05053979068656475, 0.0482401172653221, 0.046847679619504465, 0.05021905273571087, 0.052246749227007366, 0.049033146808707906, 0.04872161643729099, 0.04070600682643433], + [0.020007124527182497, 0.04763703919911538, 0.049665875827383694, 0.04537468160424665, 0.047285060948680395, 0.05441831521984453, 0.0520800592350394, 0.060693106818366496, 0.05726543477121845, 0.044571432672380576, 0.040505069058008214, 0.05041778584444366, 0.041524057956760084, 0.03844360944849459, 0.06586655607589872, 0.04812397231955308, 0.05376393984088303, 0.055777532170671724, 0.05040324466584472, 0.049581607589761316, 0.046601618742339895, 0.06158219179715266, 0.03688084023266865, 0.05824632487544836, 0.05412451987986361, 0.04548896042585795, 0.05013400876736128, 0.05587320498754762, 0.05817666025967152, 0.03882175944298096, 0.04701336512443425, 0.05444046112599297, 0.0541208409900938, 0.05060442938323242, 0.047899882189655234, 0.046440300948159104, 0.050152979038812044, 0.052769975477671385, 0.049086441526803325, 0.048460292721449076, 0.039682560809007374], + [0.022631223276299187, 0.04754767422798071, 0.049709195401841766, 0.04445608721340727, 0.0469472576106728, 0.05488633478366211, 0.05224349200063842, 0.06215549815936795, 0.0582431326566043, 0.043577943316560175, 0.03921870033585249, 0.05035699495517778, 0.04046791666608206, 0.03709428874740141, 0.06860088056841701, 0.04772665921511119, 0.054037574354837956, 0.05666767305253792, 0.05044006910134312, 0.0494714889887815, 0.04615113865920232, 0.06291944132739691, 0.03543432879973119, 0.05938694599526359, 0.05475077413922864, 0.04462627585106539, 0.05014465293642802, 0.05658624292438343, 0.05915353297276623, 0.037419378522664234, 0.04664518584176467, 0.054836424549056795, 0.0544703551892766, 0.050660376067710226, 0.04751039132467244, 0.046009845102731144, 0.05004744137769319, 0.05340758834948586, 0.049204159969101637, 0.04815281756951938, 0.03863384119655703], + [0.025479728178712798, 0.04749743491890589, 0.04976956886067037, 0.04339910631153776, 0.04657541322518856, 0.0553541517383272, 0.05239434537224782, 0.06375175100170596, 0.0593043791844357, 0.04243663344882676, 0.03782722089073603, 0.050262222144589266, 0.03932729436012858, 0.035668043062085326, 0.0717732881167478, 0.04724695828187296, 0.05427352779923323, 0.05767894951592048, 0.050470073143884235, 0.04933055331472309, 0.04565908533446197, 0.06429565980360506, 0.033931468506767454, 0.06065467451561494, 0.05545086300504962, 0.04362926610125329, 0.05017522590949961, 0.05732227731888638, 0.060176214445798425, 0.03591802012620525, 0.04626347143899194, 0.05520741749733844, 0.05480457593084244, 0.050699342930426126, 0.047068133306617015, 0.04556067575930567, 0.049889776190778584, 0.05418405000556793, 0.04940630514837372, 0.04779164030664077, 0.03757094176358483], + [0.028563331507812775, 0.047492566990059264, 0.04984553209086494, 0.04219467676047335, 0.04616317408833275, 0.05580776142928758, 0.052528004351975216, 0.06548776951695445, 0.06044832762996762, 0.04113305723867884, 0.036332119181624184, 0.050127513460803484, 0.03809630954976897, 0.03416759418649465, 0.07546138357494896, 0.04666806024333168, 0.05445600784379239, 0.05883009538989994, 0.05048877289914005, 0.049149818206399035, 0.04512145541044223, 0.06568611594382288, 0.032381542264438234, 0.06206881839177053, 0.05623056081478704, 0.04248408223131504, 0.05023901354158126, 0.05806313705429584, 0.06123313427898256, 0.034318808983686395, 0.045874346673992664, 0.055536488170348404, 0.05511781039073455, 0.050709905154872344, 0.046570676485813964, 0.045099696919669245, 0.04966402516351808, 0.05512821736490672, 0.049717635605968744, 0.04736816226930064, 0.03650782231569502], + [0.031890903797356526, 0.047537562395575175, 0.049932850469876444, 0.0408375702809869, 0.04570262924041256, 0.05622795183918286, 0.05263990959965321, 0.06736820924246309, 0.061669524280440466, 0.03965460580211426, 0.03473841432060936, 0.04994735233338745, 0.036768651307402665, 0.03259731787818554, 0.07975579077142697, 0.04597088294716417, 0.05456640198463601, 0.06014228813309197, 0.05049055850292073, 0.04891811349824229, 0.044533415241318326, 0.06705730496325402, 0.030796059428510998, 0.06365360234558708, 0.0570942483771535, 0.04117833033008024, 0.05035434620100637, 0.05878188844317034, 0.062306824110871725, 0.03262520678917111, 0.04548547968519506, 0.05580274544782154, 0.0554061020605843, 0.050676747582005084, 0.04601712660262288, 0.04463709696284014, 0.04935040362860699, 0.05627361513167144, 0.05016859558496776, 0.04687264792024206, 0.03546162843920038], + [0.035468760629229726, 0.04763358764309465, 0.05002330867991675, 0.03932790806838408, 0.04518418711990694, 0.05658914307665388, 0.05272601124081556, 0.06939662754267054, 0.06295559976929632, 0.0379918941955423, 0.03305549203178291, 0.04971738197010992, 0.03533762988452255, 0.03096346069409178, 0.08476115412255525, 0.045134544368818946, 0.05458334066602002, 0.061638947281764896, 0.05046888141859112, 0.048621919420493584, 0.043888980911836066, 0.06836576061663796, 0.029188676344573068, 0.06543987303895231, 0.05804384604056841, 0.039702264164362934, 0.050545790081631646, 0.05944036847272934, 0.06337182824204234, 0.030843437296973673, 0.045105808513764944, 0.055981031585678014, 0.05566879303819947, 0.05057985213215916, 0.0454085384568639, 0.04418721011074259, 0.048924932937594055, 0.057658397398849336, 0.05079639842126588, 0.04629417427972985, 0.03445301888827883], + [0.03929971320862004, 0.047776266522397096, 0.050103260870727334, 0.037672564075982816, 0.044596589504527835, 0.05685837477051153, 0.05278336209576498, 0.07157620416226819, 0.06428421320435104, 0.03614041712589771, 0.03129796816182799, 0.049435303940090276, 0.03379638382426562, 0.02927436759902563, 0.09059627797202921, 0.044137363879236106, 0.05448298415980636, 0.06334518123687137, 0.05041684861906927, 0.04824543175979968, 0.04318063667611126, 0.06955725242599566, 0.027574987899970878, 0.06746741268940423, 0.059077369859796613, 0.03805015886723924, 0.050845340221584955, 0.05998660299324827, 0.06439183320349903, 0.028982904960812163, 0.044744954419252705, 0.05604176583490182, 0.05591042330019606, 0.050393687377396926, 0.044748137233084136, 0.04376947578857054, 0.04835947508027902, 0.059324747339161425, 0.05164627042981857, 0.045620673947597536, 0.03350652623808572], + [0.043381800589724656, 0.04795268111489023, 0.050152008080103755, 0.03588613004611841, 0.04392709929334339, 0.056994855572572875, 0.05281083837476193, 0.07391139400035525, 0.06561923049746012, 0.03410242349098126, 0.029486534591120047, 0.04910182328949205, 0.03213837601614441, 0.027540721043662907, 0.09739259788764751, 0.04295855627273092, 0.05423957083981097, 0.06528674829430438, 0.0503284717419735, 0.04777099949521861, 0.04239894029415395, 0.070566599319802, 0.025972186845806666, 0.06978805643922904, 0.06018705979725348, 0.036221764091052835, 0.05129339043362582, 0.060352565154115995, 0.06531580751838609, 0.027056597905569555, 0.044412243046309995, 0.055951082026688984, 0.05614272568955045, 0.05008653128721124, 0.044041112937467264, 0.04340944257762928, 0.04762254161537357, 0.0613173217564146, 0.05277281763005868, 0.04483916574836666, 0.03265098837671361], + [0.04770660028299009, 0.0481375507511703, 0.05014016503256437, 0.03399101287182326, 0.04316184013828486, 0.05695077740987388, 0.05280996465599477, 0.0764109776590128, 0.06690631428670288, 0.031888899766928054, 0.027648703364677604, 0.04872133437642288, 0.03035836507456718, 0.0257757673646245, 0.10528975892554042, 0.041580691577615125, 0.05382624805202711, 0.06748842970722913, 0.050200858905386544, 0.047180113802594036, 0.04153222662680967, 0.07131829312291338, 0.02439859226537473, 0.07246985516748157, 0.061357079802733056, 0.034223670378960964, 0.05193904959103534, 0.06045312086091367, 0.06607312131347709, 0.02508145426465114, 0.04411527959605465, 0.05567146578710174, 0.05638620786855276, 0.04962018477691025, 0.04329362600562928, 0.04313969767128345, 0.04668138057974645, 0.06368015156914551, 0.054241372810755466, 0.04393631231828339, 0.03192008460350974], + [0.052257095416097174, 0.04828884048137193, 0.05002833827536717, 0.032016181292098274, 0.042286151400712624, 0.05667440548912587, 0.052785825382801896, 0.0790930428701372, 0.06806840598339378, 0.029521437613531598, 0.025819285266663806, 0.048301769445388464, 0.028454070404711082, 0.02399545332789973, 0.1144266426763046, 0.03999273898592558, 0.053216206809864296, 0.0699718418649124, 0.05003758768342163, 0.04645515484748172, 0.04056662042773831, 0.07172796634747404, 0.022873050707901788, 0.07560257384016682, 0.06256091664403951, 0.03207034750043122, 0.05283906070340433, 0.060187519749816495, 0.06656815250119436, 0.023078631646621963, 0.04385809823757775, 0.055163211340311886, 0.05667044578750747, 0.048950519302606015, 0.0425105094173357, 0.04300049017663472, 0.04550588095943354, 0.06645118007458281, 0.05612898952951426, 0.04289948214560246, 0.03135297402824938], + [0.05700529712272789, 0.04834369050712747, 0.04976667914610806, 0.029994159603155515, 0.0412846567539135, 0.05611658364806314, 0.05274808969814822, 0.0819923983860592, 0.069001882961414, 0.027033570180857634, 0.024040321134056464, 0.0478526814356575, 0.026428701713023937, 0.022218324454891837, 0.12492594837674696, 0.03819302990748062, 0.05238417669458014, 0.07275301017124292, 0.04985327446509037, 0.04558212091015634, 0.03948670066859789, 0.07170438125980225, 0.021414232679656482, 0.07930486941307463, 0.06375886814758863, 0.029784548814827894, 0.054054199022734735, 0.05944524513002882, 0.06667599880955692, 0.02107354936776827, 0.043639091053364804, 0.05438710720113188, 0.057031807496262715, 0.04802947748468023, 0.04169100991357491, 0.04303966021186389, 0.044074607605171914, 0.0696534105133959, 0.05852447560918425, 0.041718507447215614, 0.030994953933412783], + [0.061910173226894405, 0.04821662992795655, 0.04929616880341983, 0.027956208645715352, 0.040140587697130636, 0.05524140082818643, 0.05271229080360671, 0.08517072981924464, 0.06957418764720022, 0.024470940619753665, 0.022360088308226944, 0.047380314139288046, 0.024294311994862473, 0.020464998069434418, 0.13687065545386792, 0.036190826387578506, 0.05130838787303772, 0.07584052074857738, 0.04967891207029408, 0.04455456998098021, 0.038277271375641436, 0.0711510492382964, 0.020039926030727805, 0.08373355856172468, 0.06489645790896861, 0.027396786180085526, 0.05564174087449867, 0.05811800073029114, 0.06624263643872727, 0.019095506807587374, 0.043449316315727106, 0.05330868797191749, 0.05750705738394889, 0.046809122865886905, 0.04082187842576393, 0.0433113290248584, 0.04238262255279491, 0.07328149691934935, 0.06152657141241348, 0.040388316862509266, 0.030897939168835695], + [0.06691673736338177, 0.047803286549401566, 0.04855271006968488, 0.025926333714765278, 0.03883389458602191, 0.05404056901118711, 0.05270168998503084, 0.08872947335467923, 0.06962315691062662, 0.02188960315500127, 0.020830867908367842, 0.046878384163140684, 0.02207549753093141, 0.0187571072438499, 0.15027136042909714, 0.03400474903361399, 0.04997304844603862, 0.07923563077364941, 0.04956700132818307, 0.04337898857947825, 0.03692664845154971, 0.06996610990998399, 0.01876660568208343, 0.08909540087829396, 0.06590517063399969, 0.024943776537107946, 0.057642677110117425, 0.056118489243213124, 0.06509463382937394, 0.017176709651395537, 0.04327247043497356, 0.05190400288426717, 0.05812142619708358, 0.04524787991665679, 0.039867405277196934, 0.04387271332287399, 0.04044973436547418, 0.07728254831365194, 0.06523919812895497, 0.03891261363482202, 0.03112043553954588], + [0.07195701151861068, 0.04699333716913082, 0.04747503981167878, 0.023915687152290362, 0.037338020589652306, 0.052549271104286914, 0.052750186010905975, 0.09282500182793528, 0.06895765273741647, 0.019352134053706005, 0.019505498452358952, 0.046313969211378224, 0.019812383756305472, 0.017115864887463805, 0.16502387134047616, 0.03165688161274025, 0.04837096691118768, 0.08293592543512782, 0.04959515560914154, 0.042081713198275, 0.03543143797807857, 0.06803974710165737, 0.017609786400072977, 0.09566131569595854, 0.06670723961081784, 0.022466213920818368, 0.06006293552573558, 0.05340419997564311, 0.06306387617855963, 0.015350758339989142, 0.04308868431557094, 0.05016622667730377, 0.058870386843711736, 0.04331829118021076, 0.03875703233079287, 0.04477832874947217, 0.038327058253858286, 0.0815300799822195, 0.06976256483091127, 0.03730876934924097, 0.031726502396375644], + [0.07695266963609035, 0.045694931479488755, 0.04601707120065479, 0.021919611369486492, 0.03561612353557603, 0.05085952108945121, 0.05290633013807374, 0.09768484459947377, 0.06736112529394245, 0.016922083586445213, 0.018433163042871528, 0.04560984673988694, 0.017561369044979628, 0.015560660093744742, 0.18085578279944756, 0.029163720193962305, 0.04650499436254925, 0.08694323653032152, 0.0498667021700174, 0.040717110015588386, 0.033801772821029676, 0.06525225750033484, 0.01658568156146179, 0.10378010616995673, 0.06722575679838783, 0.02000677070373042, 0.06284869847691363, 0.050001516057060574, 0.06002987462490035, 0.013651008518525997, 0.04288483747036197, 0.048112134436766534, 0.059695252505757655, 0.04101523097590888, 0.03737399863455837, 0.046070233702653555, 0.03610019623704572, 0.0857919341514094, 0.07517802522248077, 0.03561384947690865, 0.03278263693278308], + [0.08181822837229848, 0.043868451973091686, 0.04416465160383259, 0.019919494479346524, 0.03361931799870648, 0.049125034419556256, 0.053236550712739986, 0.10361955307061191, 0.06460912228624585, 0.014657913842637578, 0.01765451639028849, 0.04462900757505045, 0.015391922384029009, 0.014107885904710578, 0.1972628148184619, 0.0265291606899975, 0.044385826221472954, 0.0912738888755338, 0.05050535347739339, 0.03937507227396312, 0.032064461449860075, 0.06148499600454521, 0.01571393259874524, 0.11387916795233953, 0.06739964407020725, 0.017609317663615932, 0.06585718953394143, 0.04602347852832161, 0.055975370387286165, 0.01210921967078282, 0.04267295921270242, 0.04578799565755279, 0.06045413646008555, 0.038364414005249856, 0.03555522584870527, 0.04776099145937422, 0.0338887127801827, 0.08970195160721252, 0.08152133291617479, 0.033890274805169596, 0.03434968923416616], + [0.08646525483486443, 0.041559997051156754, 0.04195463976629366, 0.017890781445728633, 0.03129252150604342, 0.04754655075855995, 0.05382114305837065, 0.1110121290809363, 0.06052665053010536, 0.012606712816922003, 0.017194329385470362, 0.04317570426340501, 0.01337750735970319, 0.012769099526131889, 0.21345797515783388, 0.02374825405559496, 0.04202377564720816, 0.09596514568049538, 0.05163588851426807, 0.038181169991095505, 0.03026002586272033, 0.056666460185034594, 0.015019018169280913, 0.12642089156402747, 0.06719979489410312, 0.015318960381847753, 0.06883088907176009, 0.04167247021917392, 0.05103901274561474, 0.010753650759522861, 0.04251290317052553, 0.0432740284463849, 0.0608969265981003, 0.03543128437928642, 0.033123922516237775, 0.049804463257803716, 0.031840417879565354, 0.09276936788748757, 0.08873588329530271, 0.032225628953932016, 0.03646402663848996], + [0.09081487046284316, 0.038913442444985805, 0.03948619005968638, 0.015816818518976046, 0.02859566206555773, 0.046320438459321496, 0.0547317942947856, 0.12025059941557661, 0.05510245321369413, 0.010796060261862918, 0.01704826919494038, 0.041037171645301934, 0.011578648650994231, 0.011546546841239382, 0.22841958005772767, 0.020828047735458037, 0.03941576642747599, 0.1010682938926324, 0.05333867919490116, 0.037275948957393265, 0.028429591415067224, 0.050863363161915594, 0.01452495752727346, 0.141776798691648, 0.06663809328880393, 0.01317939065451817, 0.07140339741011474, 0.03721367092054333, 0.045528720056773844, 0.009603454381948163, 0.04252334650445643, 0.04068067762705664, 0.06067494399330742, 0.03232385424822981, 0.029976918407371565, 0.05205822660124366, 0.030112067676572422, 0.09448649401350402, 0.09661182422268363, 0.03071589652683944, 0.03910390589491607], + [0.09482656286881035, 0.03613447152129927, 0.036903592215511774, 0.013704256465411976, 0.02554049064857144, 0.04555065187395027, 0.055987295328451994, 0.13158857747295394, 0.048598352283503135, 0.009224975237240135, 0.017166779960656672, 0.038076738778794986, 0.010021674252559204, 0.010427181783419427, 0.24115211988188895, 0.017817175843404177, 0.03653842387291498, 0.1066212206365418, 0.05558569226165952, 0.0367659306506312, 0.026594401277115973, 0.04436157529597687, 0.014239689166911061, 0.1600466216287207, 0.06575924780297585, 0.011224066050414393, 0.07318007912224632, 0.0329082069079799, 0.03984900611250502, 0.008657868973189141, 0.04285591431611532, 0.03812328799650413, 0.05943388541476265, 0.029173393385117718, 0.026197877630972893, 0.0542697072613678, 0.028827029610588143, 0.0945453563713591, 0.10476520976002648, 0.029427186061188257, 0.04215479273303474], + [0.09852907583478977, 0.03341267308307103, 0.03434592951904466, 0.011590828797143776, 0.022220824195369287, 0.04517816239383187, 0.057512936381731744, 0.14500235102717304, 0.04151788555255731, 0.007863102435693834, 0.017451530008668597, 0.034330054147091685, 0.008688689655963913, 0.009383127989884046, 0.25108460624163614, 0.014817882492272135, 0.03336458725685294, 0.11260618040459804, 0.0582110008537134, 0.03667310367004835, 0.024744544739999035, 0.03763049486128463, 0.014137148993707065, 0.18096329317526352, 0.06461870615813563, 0.009467069143850782, 0.07388109773047383, 0.02893304055681997, 0.034357516383779256, 0.007888249201549154, 0.04363040219805622, 0.035678592531879286, 0.05697861571144084, 0.026092335142619556, 0.022085693464420627, 0.05612820267977175, 0.028026680992401104, 0.09301010652987686, 0.11272820402158086, 0.028358014584519618, 0.04540653678384113], + [0.10202332362500746, 0.030859336319026646, 0.03190003884972541, 0.009537447180687799, 0.01880156043139939, 0.044994584562085944, 0.05914362162973148, 0.16016654102853614, 0.0344151848178448, 0.0066642782121969476, 0.017775599677747233, 0.030016221610220342, 0.007530727411917765, 0.00838288723336707, 0.25828567887135473, 0.011961045090857656, 0.029899385590197083, 0.11892191337629661, 0.06096376698002966, 0.03692928118915171, 0.022850900316341308, 0.03115965335034153, 0.014153226385788004, 0.20400372640468156, 0.06326738673409421, 0.007904008869592681, 0.0734407021330394, 0.02534633558689704, 0.02926025127018642, 0.007243886216829901, 0.04487649209172385, 0.03335714018677121, 0.053380941813787504, 0.02314323765022465, 0.01803118760411022, 0.057364539713221405, 0.02765596965205747, 0.09026034917758714, 0.12011797685181097, 0.027436445379687525, 0.0485965438028465], + [0.10545265176180726, 0.02850444801026468, 0.029594053110550394, 0.0076105015712207074, 0.015467508643941617, 0.04472618500605405, 0.0606711254445488, 0.1765615939836227, 0.027716132826282103, 0.005585837796806, 0.01801489988704065, 0.025449656095881342, 0.006493446181375277, 0.007404752304530725, 0.26332217104933414, 0.009363173942329519, 0.026205758146868846, 0.1253962625690155, 0.06360341428137836, 0.03741881504315648, 0.02089026431894757, 0.025304430184760945, 0.014199834979801306, 0.22861418031394196, 0.061752445819535075, 0.006522181338595653, 0.0719868077885085, 0.022117559486894242, 0.02462117637720327, 0.0066690019424519255, 0.04652401691761766, 0.031116139136134972, 0.04893118600247482, 0.0203457366225479, 0.014349777246915062, 0.057819822837953234, 0.027593751544019735, 0.08676934596102277, 0.12674249541304705, 0.026552193030997734, 0.051467918086777614], + [0.10896506311274017, 0.02633266896153101, 0.027422920840847145, 0.005868757585449862, 0.012375009795189578, 0.04411786358273544, 0.06189427832873816, 0.19359164506534443, 0.021676887055247337, 0.004601394363018246, 0.018070728495470232, 0.020936386380170445, 0.0055365987987191145, 0.006443081218932309, 0.2669527401209943, 0.007100884414724092, 0.022403805179837238, 0.13182535990940503, 0.06595691704480028, 0.03802773049610629, 0.01886434240161887, 0.020244804871061076, 0.014185206747228445, 0.2543526621192077, 0.06012180832370061, 0.005310200337522357, 0.06975304308267505, 0.019183861559058733, 0.02043872319503103, 0.00611808380282417, 0.04842810598804852, 0.02889593626678926, 0.04400540583545623, 0.01770549198625853, 0.011208072241195867, 0.057448448544231104, 0.027694875872568876, 0.08293127156612222, 0.13257440986668606, 0.02559348174425912, 0.05380610688849641], + [0.11268987243086324, 0.024316132097906923, 0.025373861219393376, 0.004356865558927054, 0.009630018330574214, 0.04298195777021888, 0.06264770792908025, 0.21065223455226806, 0.016427778449032, 0.00370289171328387, 0.017879479408045042, 0.016715495815616318, 0.00464026527274367, 0.0055064295523392474, 0.26989703965576783, 0.005208427098846173, 0.018648920836624387, 0.1380168030912812, 0.0679229795815813, 0.03867130204645398, 0.01680340995712379, 0.016021816356110063, 0.014030329798358292, 0.2809136789670191, 0.05842080113870618, 0.004260380988663912, 0.0670027864303273, 0.01649011690218124, 0.01670507884436888, 0.005562436573425484, 0.05039871744670514, 0.02664998511563709, 0.038957906894336994, 0.015233984905621053, 0.008643795465649676, 0.05628884594775528, 0.027816942175659175, 0.07901247588734936, 0.13766537352323746, 0.024469926926089812, 0.05545462019966253], + [0.11673038193640466, 0.02242946877335568, 0.02343811261545518, 0.0031012035479620914, 0.007286731340292617, 0.04121833700960985, 0.06281261366885135, 0.22717402620691476, 0.012020693484632795, 0.002895484859527212, 0.01741466716508466, 0.012944003652645857, 0.0038021767599278095, 0.004611698640175279, 0.27272776093394807, 0.0036856621594727585, 0.015099682161411944, 0.14382424763635704, 0.06945384003209591, 0.03930213885937698, 0.014757450413435043, 0.012588252152737485, 0.013679860232030678, 0.3081069826042376, 0.05668256535867019, 0.0033660163905609346, 0.06398363946893125, 0.01400399254432524, 0.013422815539210564, 0.004989911826149652, 0.052226589060351776, 0.024358012533258394, 0.0340669233384664, 0.012950674813123828, 0.006615154172147141, 0.054432709596827764, 0.027832757775782587, 0.07517085860274236, 0.1420773193697072, 0.023123440267348444, 0.05632152454116329], + [0.12116502397788312, 0.020653233492454515, 0.02161281958053361, 0.0021074651817955875, 0.0053563677374969905, 0.038816964956219606, 0.062317855716225, 0.24266368957715542, 0.00845488801506589, 0.002190011393557435, 0.016683991558535147, 0.00970541411849244, 0.0030315946744328974, 0.0037781412368330745, 0.2758386184458277, 0.0025079006234964337, 0.011887922872298987, 0.14916516908029023, 0.07053744492700115, 0.03990804886011452, 0.01278245789599999, 0.009849630978592542, 0.013107740521307875, 0.33583083145693354, 0.054920111584267885, 0.0026182879164728255, 0.06090135049630353, 0.011715629990145906, 0.010596427905108115, 0.0044016198455521455, 0.053707896952679295, 0.022026543867270768, 0.029518358528504735, 0.01087604591600565, 0.005043437420753656, 0.05199970903714576, 0.02763721742619607, 0.07148862534598208, 0.1458494709167661, 0.021532822305351897, 0.056378241599720776], + [0.12605166228536982, 0.018973196582022657, 0.019899200555026, 0.0013612218232536787, 0.003819158395430249, 0.03584817702666417, 0.06113602630117969, 0.2567401772599711, 0.005687392862378146, 0.0015960497664988878, 0.01572224377338308, 0.007026352872648449, 0.0023425992677398064, 0.0030229211065318606, 0.27944996924592386, 0.0016345156629549574, 0.009100214271322949, 0.1540209117201715, 0.07118583462053961, 0.040505435028305996, 0.010928401829703439, 0.007693156282165323, 0.012317426410270666, 0.36404746960903317, 0.053124562074686806, 0.0020050023816658886, 0.05790593711384511, 0.009630706667439324, 0.00821948627788156, 0.003807763752096643, 0.054667010928671204, 0.019682592693686708, 0.025411562030167454, 0.00902425264534645, 0.00384078881776191, 0.04911745475718962, 0.02715247985295035, 0.06799791798050168, 0.14899105724224926, 0.019713634362988005, 0.055649738062020185], + [0.13143284974639244, 0.01737892308006799, 0.01830030078830282, 0.0008318070514180508, 0.002635656638136461, 0.03244381597438064, 0.05927618808439091, 0.26915773263248094, 0.003638774334168617, 0.001117153583340137, 0.014581529457503718, 0.004892489524793822, 0.001748156890454863, 0.0023584697503884152, 0.2836338533685939, 0.0010159042566025456, 0.006773401779626242, 0.1584260953278999, 0.07142693585384646, 0.04113083654921437, 0.009232006101072563, 0.0060065829765958475, 0.011337456040290553, 0.3927611151248126, 0.05126883359580911, 0.001511079320889506, 0.05508837759679338, 0.007761818730885763, 0.006268070667540002, 0.003223501743452403, 0.05497451716555177, 0.017364827915968266, 0.021776706635970318, 0.00739927040409631, 0.0029254010664361355, 0.04590700907714346, 0.026331411568568518, 0.06469732651626092, 0.1514850443360235, 0.017712909990873944, 0.05419876610191755], + [0.13734105839551775, 0.015862410962911987, 0.016819374352905654, 0.0004785937058809746, 0.0017557967551494356, 0.028773002998165185, 0.056773612650069215, 0.27981062955392677, 0.00220123592305386, 0.0007489131225467307, 0.013321139652819522, 0.0032607167589052324, 0.0012558743144664758, 0.001791339357178257, 0.2883486275747503, 0.0005993192416511599, 0.004901114807650413, 0.16245724362364222, 0.07129518081195833, 0.04183139210534764, 0.007714504576935693, 0.004689099197339199, 0.010214196615730652, 0.4219993567345837, 0.0493132731339185, 0.0011199334224537309, 0.052486641064131374, 0.006120930103940734, 0.0047020572812601375, 0.0026653110738258825, 0.05455912668656652, 0.015115275414264256, 0.018596438784753984, 0.005994820066797879, 0.0022282069521534294, 0.04247436243039219, 0.02515844481551744, 0.06156265338485599, 0.15329176008303566, 0.015599196149109906, 0.05210894033510192], + [0.14380315830320284, 0.014416733466232571, 0.015458982798813225, 0.00025802501041992544, 0.001125617031457278, 0.025016872050432196, 0.05367717214872532, 0.288721261352569, 0.0012510416866397794, 0.0004796392264391811, 0.011999179097067316, 0.00206824023606055, 0.0008659667581592755, 0.0013221657799461827, 0.2934763548124251, 0.00033391183644843314, 0.0034458473773501495, 0.16622761194233668, 0.07081845285458646, 0.04265398404011092, 0.006382956111550583, 0.0036562505384545797, 0.009003803781876256, 0.45180021843178897, 0.04720983436255696, 0.0008149704664352641, 0.050098404832924236, 0.004714223413248384, 0.003471104696151909, 0.0021481739014800176, 0.05341390828859497, 0.012973245334930173, 0.0158266100281072, 0.0047966831275777985, 0.0016945159665504004, 0.038907496392216336, 0.023647413993624536, 0.058555023185866265, 0.15434722361514402, 0.013450176536599879, 0.049470741044057756], + [0.15084313984167885, 0.013034796217187934, 0.014220733727985714, 0.0001297295621152579, 0.0006921230154926815, 0.02134637166329632, 0.050036712469821235, 0.29601816818235155, 0.0006633094836617666, 0.0002927888599534269, 0.01066706793325806, 0.0012403475553714768, 0.000571409035539582, 0.0009463937691527668, 0.2988553797736093, 0.0001747619133697203, 0.002351871022921844, 0.1698904342235654, 0.07000173153185726, 0.04363248488262355, 0.005233395583084892, 0.002840817869294876, 0.007764988290324703, 0.4822066286607714, 0.04490300892015167, 0.0005807462921866005, 0.04789637245861978, 0.0035396856893845346, 0.0025215475848248425, 0.001683794152157477, 0.05159869522957665, 0.01097194006992975, 0.013412764363373998, 0.003785837284862492, 0.0012829666982635288, 0.03527737095071935, 0.021837160637538523, 0.055627213925996045, 0.15455537554252674, 0.011341198251650461, 0.046371907918363195], + [0.1584822984051397, 0.011708491145262392, 0.013105557374280442, 6.055440490530774e-05, 0.0004067491290099547, 0.01790591097593517, 0.045894153613599276, 0.30191255852852855, 0.00032551321161417945, 0.00016998668707085446, 0.00936690960755468, 0.0006980462021996887, 0.00035967836819859173, 0.0006554541691314839, 0.30430216914801805, 8.542395764665445e-05, 0.0015561845842726647, 0.17364959582878814, 0.06881002736943628, 0.04477259725869423, 0.00425444565287121, 0.0021913397730586696, 0.006553322116241647, 0.5132704726951932, 0.042327391478640716, 0.0004036404457370933, 0.04584245612843656, 0.0025868680638983536, 0.0018018040168651184, 0.0012798091367875527, 0.04923985530927616, 0.009137090224853156, 0.011301251357341231, 0.0029413295012650966, 0.0009632987051277992, 0.03164088688144178, 0.019785985638608082, 0.05272708743331834, 0.15377657046075957, 0.009337233468365815, 0.04289232745601018], + [0.1667362902483039, 0.010428570068976262, 0.012114327645948256, 2.613741493767975e-05, 0.0002276509096583091, 0.01480421088869893, 0.04128237187278958, 0.3066800029070707, 0.00014652136976418034, 9.368818707972629e-05, 0.008131006240496308, 0.00036549683840905105, 0.0002152428609452346, 0.0004381293170304837, 0.3096162719256095, 3.8749136397049875e-05, 0.0009964669886642203, 0.1777771551263804, 0.0671536189195237, 0.04603387844924033, 0.0034305080118589982, 0.0016695860146353756, 0.005417273417166365, 0.5450665959801336, 0.03940321447274822, 0.00027209072516706936, 0.04389791857687642, 0.001837980972617655, 0.0012655982644641346, 0.0009397725264447045, 0.046529176089206085, 0.007486657867764465, 0.00944529216651677, 0.002242439563574322, 0.0007138114373857712, 0.028043835897137413, 0.017566293638846108, 0.049795651692580996, 0.15181472267984034, 0.007489134307143827, 0.039102974463218566], + [0.17560936810892347, 0.009185363133833599, 0.011248308792431933, 1.0401082396844631e-05, 0.00012091063276576813, 0.012112175174843594, 0.03623502500984409, 0.31064862185196657, 5.986379161649274e-05, 4.895666522386207e-05, 0.006982464611929192, 0.00017628378764391825, 0.00012201806318892127, 0.0002819017304398594, 0.314564159162279, 1.619716395800055e-05, 0.0006160991073973036, 0.18263964531317525, 0.06487876326726502, 0.04730875826295976, 0.0027440850971410316, 0.0012478896662897947, 0.004395756856793728, 0.5777126783592049, 0.036032927986853015, 0.00017651822170284146, 0.04202860698305821, 0.0012695552353196068, 0.0008733032865799639, 0.0006635723135285335, 0.043724387865993516, 0.006030706097856568, 0.007807371493166415, 0.0016701081222574125, 0.0005189996861484429, 0.02452255149838926, 0.015259998452431044, 0.0467569920272427, 0.14840541645102748, 0.0058332521537298905, 0.03506942935496193], + [0.1850884135564941, 0.007970312109562849, 0.010508236834774027, 3.810318689727072e-06, 6.0724624632906274e-05, 0.009866275919621555, 0.030809531775075966, 0.3141851327095353, 2.193433719598089e-05, 2.425115653223083e-05, 0.005935743509567068, 7.742548892125756e-05, 6.528374019471557e-05, 0.0001741444296657656, 0.3188425324338462, 6.190853529334778e-06, 0.00036680147757682074, 0.18873565232965805, 0.061769412251554995, 0.048399504555992616, 0.00217709906160945, 0.0009068566186528756, 0.0035167635333126146, 0.6113784759138431, 0.03210563922555039, 0.00010907949997188889, 0.04020721178343172, 0.0008542497710580712, 0.0005920201677966352, 0.000447985431584078, 0.041154477027891066, 0.004770845691402777, 0.006359769175653738, 0.0012077499981480591, 0.0003676261263126389, 0.02110408871923795, 0.012953841881268871, 0.04349839218326446, 0.143210435072949, 0.004392629341906504, 0.030861862891620944], + [0.19514491365442568, 0.006778412500633009, 0.00988964107438543, 1.2863235857399887e-06, 2.8731156914713943e-05, 0.008074973422572492, 0.02512423089481951, 0.31765382030448513, 7.112845672948972e-06, 1.1407437385055721e-05, 0.00499608194103156, 3.0579112987005135e-05, 3.285112373450655e-05, 0.00010306608126386431, 0.3220365012217281, 2.145776445212614e-06, 0.0002095390495970844, 0.1967376119546074, 0.057573072500502524, 0.04899762696576492, 0.0017113081991946603, 0.0006335632070693516, 0.002796507929672469, 0.6462413256943723, 0.027523842913182623, 6.334949423729706e-05, 0.0384173843433098, 0.0005627309445365011, 0.00039493296000012276, 0.00028721511430278393, 0.03923139385883115, 0.0036991069379419036, 0.005084870110856773, 0.000841491840351825, 0.0002513400564731766, 0.017806562726288912, 0.01073199584834935, 0.0398440392851119, 0.13583649673016035, 0.003178212403838625, 0.026573637817297505], + [0.20576231971102965, 0.005612065080783749, 0.009370914900855181, 4.019855817612169e-07, 1.2752308814715129e-05, 0.00672511182299001, 0.01940365221212658, 0.3213050894390299, 2.0159553621244087e-06, 5.116824970777128e-06, 0.004157418098577238, 1.0732555789782217e-05, 1.5499564176675807e-05, 5.837028924264335e-05, 0.3236256527438448, 6.688691506911081e-07, 0.00011427702201783976, 0.20750012149553798, 0.052074767488715125, 0.04867713183771599, 0.0013282397951028025, 0.0004198800363862684, 0.0022385132998544444, 0.6823057370621786, 0.02227545222185148, 3.399997138248489e-05, 0.03666481728069865, 0.00036568474744325217, 0.00026031194899128567, 0.00017343702661166413, 0.03846315097416023, 0.0027969525395467633, 0.003975737186755173, 0.0005596925108258507, 0.00016381270684137913, 0.014643903281239207, 0.008662469021418321, 0.03554222196011185, 0.12591888124952674, 0.0021895723399063473, 0.02234577422994844], + [0.21700885962631275, 0.004486314868266561, 0.008893604065224806, 1.1731174747554762e-07, 5.283287606637478e-06, 0.005785311742512709, 0.0140004167789737, 0.32506318848156657, 4.956590600068439e-07, 2.2027770503468666e-06, 0.003400843883672056, 3.325982063338991e-06, 6.839248923963021e-06, 3.162982754321293e-05, 0.3231459464952496, 1.862872323018136e-07, 5.904189739835266e-05, 0.22195402372667142, 0.04523318990015153, 0.04691834387210564, 0.0010096961165087619, 0.00026025057768416673, 0.0018324325343961833, 0.7190080292063193, 0.01656117298071401, 1.6527566959280972e-05, 0.0349934358122093, 0.00023596198001516922, 0.00017049415601640993, 9.75259750862042e-05, 0.03944975491681944, 0.00203721118587182, 0.0030350908475548378, 0.00035164771115548364, 0.00010018887710154895, 0.011640724867135521, 0.006778069444564672, 0.03032113125034131, 0.11331473209612584, 0.0014160228112974254, 0.018379602225864097], + [0.2291426037400678, 0.0034317597619205643, 0.008348115909857566, 3.2385396197226125e-08, 2.033479371101687e-06, 0.005203830887892548, 0.009331635404958015, 0.3282809529945487, 1.0617876310903408e-07, 9.161623435203745e-07, 0.0026999266568507943, 9.153177762314075e-07, 2.8166223257171936e-06, 1.6404302223754944e-05, 0.3205908276243472, 4.62931654789044e-08, 2.8581711463359956e-05, 0.24081723604350058, 0.03732419880833057, 0.0431793039638001, 0.0007403682733313149, 0.0001488951234200475, 0.0015534679166567663, 0.7546962033005127, 0.01091144635633517, 7.1110205578316365e-06, 0.033497563682361, 0.00015071715541212956, 0.00011126345356365337, 5.012847118032327e-05, 0.04282052348030238, 0.0013940472335564678, 0.002269688821136872, 0.00020611635896908962, 5.652105331576854e-05, 0.008856092090540607, 0.005068050632823068, 0.024091838783100575, 0.0983630297988075, 0.0008399389342648266, 0.014907374919700562], + [0.2426736744459482, 0.002487654880320139, 0.007594408940886132, 8.583841832577053e-09, 7.258770258458261e-07, 0.004894542887425011, 0.005714540912281696, 0.3296454410900755, 2.0261213590890912e-08, 3.688404100951906e-07, 0.002038468806816426, 2.2870200853354294e-07, 1.0798691768037644e-06, 8.127946960285799e-06, 0.31688142420652565, 1.0337145505544086e-08, 1.2804006453273821e-05, 0.2641473596781352, 0.02897110736126862, 0.0370893967230119, 0.0005123051946823458, 7.793558670156533e-05, 0.0013639682197434532, 0.786431685916356, 0.006118169733593146, 2.6449326054485733e-06, 0.03235628747470937, 9.31579404602237e-05, 7.192241977351424e-05, 2.286616579963771e-05, 0.049003691799864926, 0.0008613055942681228, 0.0016818328810442034, 0.00011105238933344572, 2.903842356564985e-05, 0.006396335950525262, 0.003513437023773193, 0.017278296216193464, 0.08202474863260409, 0.0004416875664760586, 0.0121199702729758], + [0.2583166131955921, 0.0016862651973690457, 0.006534351558486371, 2.191232539152185e-09, 2.4035646970069606e-07, 0.0047009642892901085, 0.0032206674619155986, 0.32731335838141085, 3.567189180998293e-09, 1.4188136831130802e-07, 0.001431504098807251, 5.342384298352646e-08, 3.8158175022406573e-07, 3.8118003089320767e-06, 0.31393386281543456, 2.0913467452676443e-09, 5.2533955093394596e-06, 0.29083106310459506, 0.021034396539821098, 0.028976688430033943, 0.0003269893464402896, 3.7609863104610886e-05, 0.0012189309264415407, 0.8108295373703907, 0.002837244930891111, 8.405218637855564e-07, 0.032031083688592706, 5.3228484380894355e-05, 4.5634311202022746e-05, 8.93807869711467e-06, 0.05757928955519806, 0.0004597405014696916, 0.0012666310401297882, 5.448583303400604e-05, 1.3635062625103294e-05, 0.004388916892176493, 0.0021627073228469972, 0.010938515766071301, 0.06576006303726312, 0.00019860979214097508, 0.010114359403980203], + [0.2768219496147259, 0.0010415957672078576, 0.005190589912845499, 5.172511644177037e-10, 7.314942738948323e-08, 0.004371169293851301, 0.00168063442580114, 0.31844590457658856, 5.995400996634446e-10, 5.021322946580014e-08, 0.000924318054734427, 1.183571274606888e-08, 1.1977529085425358e-07, 1.6659039050471282e-06, 0.31463441000659237, 3.7641639940917996e-10, 1.96777155023403e-06, 0.31866615534564735, 0.014421426698165447, 0.020429188196462805, 0.00019070954234426095, 1.7747679862171024e-05, 0.0010808377191348251, 0.8258599997372078, 0.0010893285636956048, 2.348837324050763e-07, 0.034194954203499495, 2.6305906998761486e-05, 2.903739541749072e-05, 2.9092240672278766e-06, 0.06589675989274538, 0.00020488743559451294, 0.001036260485671519, 2.483852561460005e-05, 6.142498485776251e-06, 0.0029336274801368624, 0.0011200052879828848, 0.006147055410611611, 0.05121513929974221, 7.445628872091539e-05, 0.009039428934626297], + [0.2885236909879266, 0.000734499963116418, 0.004319256435907017, 2.1532016368660642e-10, 3.653077993619376e-08, 0.003952279825636638, 0.0011350893694380942, 0.3053567165673372, 2.3519798441299505e-10, 2.6883610063670996e-08, 0.0007078437962724825, 5.155438678108205e-09, 5.702220141843948e-08, 1.044908173403588e-06, 0.32122205566899187, 1.3468075314358026e-10, 1.1289238921095717e-06, 0.3342134921854911, 0.011760541641480876, 0.016456766713093294, 0.00013911125117225994, 1.2953900196526128e-05, 0.001000845894387323, 0.8288116125066299, 0.0005789283817134541, 1.169429500979905e-07, 0.040656693414380725, 1.5597865092822417e-05, 2.4399735902205995e-05, 1.3873976722837445e-06, 0.06574124544985367, 0.00011584491455858287, 0.001106746259571403, 1.6344233086179787e-05, 4.353875737372567e-06, 0.0024662098610079776, 0.0006542944947208452, 0.004273102030671984, 0.044884828074882276, 3.8363876880572e-05, 0.009595950649260897], + [0.2913911606879622, 0.0006485896211111712, 0.0040401893979065155, 1.725019241889035e-10, 3.138287117996829e-08, 0.003734540265634449, 0.0010312824983962938, 0.2971043130642251, 2.0578126661294684e-10, 2.331347367443641e-08, 0.0006712268802409698, 4.4163274237982615e-09, 4.61768087051661e-08, 9.664888528598676e-07, 0.327356997153533, 1.0457629312557516e-10, 1.0221139084342223e-06, 0.33795629719734077, 0.011479722891169148, 0.015843201224388214, 0.00013167309893385916, 1.3146951031120831e-05, 0.0009752989419396239, 0.8272360408178071, 0.00048202138975211184, 1.0415137060470887e-07, 0.046316274365620545, 1.2957785281714929e-05, 2.4847527587115273e-05, 1.1137510538275093e-06, 0.06177808409363441, 9.636635966036527e-05, 0.0012765562307261488, 1.5325394972444565e-05, 4.4519681568587085e-06, 0.002499912458682615, 0.0005208053201324283, 0.003907766067880068, 0.044193606421232566, 3.129506287617307e-05, 0.010614236708742187], + [0.2924876731431565, 0.0005964820457790627, 0.003859305163406346, 1.5790195755294998e-10, 3.0084335202895596e-08, 0.0035610757233465592, 0.0009915680760168653, 0.2897972116296831, 2.1260152870622615e-10, 2.2322017007327366e-08, 0.0006645899400226851, 4.343603571996157e-09, 4.153320503541059e-08, 9.686582386886976e-07, 0.3337442232419788, 9.474626059037473e-11, 1.0155626917322167e-06, 0.339236802178839, 0.011618385869532791, 0.01579710398372681, 0.00013127589607593294, 1.4174902641917642e-05, 0.0009527708045640269, 0.8246522390200208, 0.00043895659436169636, 1.038607356517137e-07, 0.05211705903913538, 1.147206414409461e-05, 2.6038801868192174e-05, 9.87709820695584e-07, 0.05692785220976765, 8.64513668382385e-05, 0.0014916922090549144, 1.5343132083645072e-05, 4.905340721358968e-06, 0.002634167810093598, 0.00043816358021186134, 0.0037778231875563095, 0.044557245967099916, 2.7921128170392247e-05, 0.011824740822113976], + [0.29322309181358874, 0.0005279326177075073, 0.0035991233146811705, 1.4979748112841785e-10, 3.019962739614492e-08, 0.0033078171073716313, 0.0009582771644344914, 0.27839029460325027, 2.5327912916374566e-10, 2.2238534961715056e-08, 0.0006707094622533153, 4.6593300691808716e-09, 3.7244777477934944e-08, 1.0263496987096968e-06, 0.3451484786706759, 8.902478776060113e-11, 1.0683900478870921e-06, 0.3391648399745577, 0.012109034502573644, 0.015986934382993475, 0.00013446909955959257, 1.648375133188458e-05, 0.0009008818779710027, 0.8191031789477193, 0.0003984793334638659, 1.1030764370093124e-07, 0.062252631746476585, 9.669194494314532e-06, 2.800972217992847e-05, 8.542978910564086e-07, 0.04821119067132561, 7.547229092920496e-05, 0.0019330772316086353, 1.5835335324264263e-05, 6.0462818295251326e-06, 0.002949303412955271, 0.0003364131344758737, 0.003705877479610818, 0.045881829522807255, 2.4367777903520603e-05, 0.014150387989349745], + [0.2941193132118227, 0.00045551862680120206, 0.0032935169093911932, 1.4433907387789673e-10, 3.054132783338789e-08, 0.0030572842143431075, 0.000913774491372473, 0.2666244750462347, 3.134023679633213e-10, 2.2368735606051182e-08, 0.0006738037282312077, 5.109111227954673e-09, 3.318425996235206e-08, 1.09588269361185e-06, 0.3584620470410141, 8.38223255143711e-11, 1.1299245085239264e-06, 0.33782043664080197, 0.012587876049094698, 0.01597249935225129, 0.00013655038050807477, 1.8822519530445435e-05, 0.0008170235795172624, 0.8119844088515014, 0.00035979987720953944, 1.1556911348499899e-07, 0.07364129650929473, 7.906022988993445e-06, 2.886921204797374e-05, 7.167768042147262e-07, 0.038977611568999294, 6.475192319414926e-05, 0.0025062603303617607, 1.59466801695974e-05, 7.547192327982192e-06, 0.0033337649589412137, 0.00024710836677077684, 0.003636911596449196, 0.047359464382202544, 2.0880927354407376e-05, 0.016970895441183007], + [0.2957844971295142, 0.0003814157665815855, 0.002950506850709387, 1.3557733420841776e-10, 2.9869652354822185e-08, 0.0028262293355709673, 0.0008427799986876458, 0.2554039899706457, 3.7224589163623933e-10, 2.1925696553579084e-08, 0.0006615179963512004, 5.40447037255838e-09, 2.8580213442437426e-08, 1.137143138529898e-06, 0.3724963982083559, 7.518193534593363e-11, 1.15325685800499e-06, 0.3360287534533, 0.012795107582817421, 0.01547684317320671, 0.00013417243277126845, 2.024278275061847e-05, 0.0007108405919657876, 0.8041721070399143, 0.00031487793469667816, 1.133993751923097e-07, 0.08504941781489796, 6.211806885754453e-06, 2.7863827420377633e-05, 5.673198991315798e-07, 0.03067374476961914, 5.369317155725517e-05, 0.0031512346473610234, 1.5175159510175445e-05, 9.089454645925585e-06, 0.0037111822689875093, 0.00017356490120872412, 0.003502131178916385, 0.04841718288909469, 1.71709980383942e-05, 0.019973667339704182], + [0.298341539641784, 0.0003095972024634112, 0.002587203636338148, 1.2294766816925813e-10, 2.800915210834263e-08, 0.0026138649963620636, 0.0007489946301851665, 0.2447158249938575, 4.1775890375980965e-10, 2.0781563912840916e-08, 0.0006325622709972397, 5.448705128391288e-09, 2.363604714319409e-08, 1.1387723626002413e-06, 0.38704433087673645, 6.35221198536852e-11, 1.1271930869578724e-06, 0.3340450575839704, 0.012672365128868112, 0.014500897646972787, 0.00012705490355419084, 2.0450396778873184e-05, 0.0005942997320840721, 0.7959234285827068, 0.0002653687034058049, 1.0345559054747136e-07, 0.09619721194812228, 4.67313506042666e-06, 2.5222347965303347e-05, 4.205998339385608e-07, 0.023560455806743257, 4.2835978424010254e-05, 0.0038462495910231384, 1.3599302358202823e-05, 1.051458387375522e-05, 0.00406017394698785, 0.00011612031366888411, 0.003297344135253903, 0.04893757074108569, 1.3468170056418409e-05, 0.02307058505880991], + [0.30160570842753187, 0.0002465483847476994, 0.0022378400424249703, 1.0837165670713843e-10, 2.5341494884071263e-08, 0.002425337754686109, 0.0006469933945258391, 0.23490399394787886, 4.428202418915019e-10, 1.9136619488953867e-08, 0.000591634011005737, 5.2547355114534974e-09, 1.89862506303511e-08, 1.103701889750972e-06, 0.40140750900804356, 5.118482309826282e-11, 1.0601681196403564e-06, 0.3319432035145773, 0.012263307220916318, 0.013214875145723354, 0.00011662394171286815, 1.9579800261860017e-05, 0.00048266174641421576, 0.7877106597268744, 0.0002179580919447457, 8.891632847624971e-08, 0.10652869647226, 3.416211435886014e-06, 2.16928962323674e-05, 2.9748089045904923e-07, 0.017863095799042498, 3.332446504340388e-05, 0.004547733129008572, 1.1615821736853226e-05, 1.1693499137670169e-05, 0.004364729744021393, 7.545931133785477e-05, 0.003054289256725224, 0.04895929498033983, 1.0227270138222058e-05, 0.026083584962052427], + [0.30547247138101585, 0.0001931858805795519, 0.0019130789834268067, 9.323423884694401e-11, 2.2249941065475857e-08, 0.00225456608428879, 0.0005458798725526724, 0.22578410611629238, 4.476281755869538e-10, 1.719126541109285e-08, 0.0005430899638668909, 4.884400643200249e-09, 1.4877713059693446e-08, 1.0404668815184459e-06, 0.415622442605223, 3.963454071621498e-11, 9.656175926242008e-07, 0.32962883730488896, 0.011641690841556848, 0.011766874028074704, 0.00010428234161438189, 1.797430350396024e-05, 0.00038173793818812836, 0.7795662055380842, 0.0001756329349273937, 7.289363636118247e-08, 0.1161093805597704, 2.4332286454554724e-06, 1.789079088610737e-05, 2.0221471494029271e-07, 0.013345086871532972, 2.5398096668793097e-05, 0.0052497959496448756, 9.544100590344775e-06, 1.2626116852806764e-05, 0.00463353028626971, 4.775360034041179e-05, 0.002796979021350517, 0.048600194630788296, 7.564259849455194e-06, 0.0290000967393361], + [0.3099140299054966, 0.00014887287831844064, 0.0016158529963550502, 7.834513824084756e-11, 1.90032921608982e-08, 0.0020954867710906524, 0.0004506631137516146, 0.21714519468401372, 4.343002724728392e-10, 1.5086198440988742e-08, 0.0004899817851595859, 4.394698258679807e-09, 1.1375235905710051e-08, 9.564828339617707e-07, 0.4298506667580762, 2.956329078958374e-11, 8.545078454065612e-07, 0.3269833673117188, 0.010867062163262723, 0.010260047375817384, 9.104273774979994e-05, 1.5937749704356484e-05, 0.00029362968408354193, 0.7714394887554281, 0.00013929980283443794, 5.7398195325200726e-08, 0.1250805947272605, 1.6853064955928815e-06, 1.4204241054071908e-05, 1.323052693977607e-07, 0.009776275252118386, 1.8976477314297586e-05, 0.00595581814458839, 7.577654998090376e-06, 1.3338383944467407e-05, 0.004877504033099576, 2.9351757480664643e-05, 0.002539630625549295, 0.047953408732468866, 5.457396897934183e-06, 0.0318377316682313], + [0.314944184397292, 0.00011264029572957922, 0.00134687705263384, 6.422644323946052e-11, 1.5791572217810687e-08, 0.0019436707027703074, 0.00036411718070370895, 0.20882384269613016, 4.057183346795172e-10, 1.2926311480337342e-08, 0.00043458324581703214, 3.833581318939953e-09, 8.472016093649979e-09, 8.580118774849313e-07, 0.4442432358861385, 2.1229450587979518e-11, 7.35527776508707e-07, 0.32389835999963645, 0.009985940674586443, 0.008767548984853872, 7.764821606605227e-05, 1.3706628171222867e-05, 0.00021902383899289002, 0.7632786454062693, 0.00010890800071402631, 4.35584515394993e-08, 0.13355796319183155, 1.1310150197633224e-06, 1.0865103963762997e-05, 8.321978538843976e-08, 0.006985131312781846, 1.3886102941199112e-05, 0.006671295498906881, 5.823564837896763e-06, 1.3858113229778665e-05, 0.005106219845848253, 1.7448509791025545e-05, 0.002290367034717422, 0.047085948724235674, 3.838842942702737e-06, 0.03461591255476776], + [0.3205978023380325, 8.348818053880486e-05, 0.0011061709601140337, 5.1266194108525374e-11, 1.2756075996546062e-08, 0.001796181821250614, 0.0002877143445306997, 0.20069785182453828, 3.6543490325974985e-10, 1.0799081253437829e-08, 0.0003787663113792599, 3.242644466941986e-09, 6.130772037236443e-09, 7.507874988098892e-07, 0.4589221724520679, 1.4647781333943875e-11, 6.158357010705613e-07, 0.3202824466392917, 0.009036611196154294, 0.0073426284001737036, 6.466871819826903e-05, 1.145875872854535e-05, 0.00015785992434841814, 0.7550382274835898, 8.398106574865815e-05, 3.19007053928694e-08, 0.141629328445816, 7.323056067485075e-07, 8.00004302052574e-06, 5.019468757660199e-08, 0.004841384299140668, 9.934007160868698e-06, 0.0074031007306549915, 4.332739674763164e-06, 1.4211939936529854e-05, 0.005328185559331778, 9.983431755524881e-06, 0.0020537129107062253, 0.04604804796710757, 2.6288228067158683e-06, 0.03735491884973491], + [0.32692204845602685, 6.044925859817177e-05, 0.0008933787542649389, 3.976094117245041e-11, 1.0001248832564984e-08, 0.001651261132691471, 0.0002220455842272454, 0.19267131714361968, 3.1755450267860825e-10, 8.780592060134138e-09, 0.00032414676770193597, 2.6580748691201206e-09, 4.297714748990078e-09, 6.402581293653295e-07, 0.4739865452671403, 9.684609097563876e-12, 5.013187071614582e-07, 0.3160623522419371, 0.008051692255391454, 0.006023203897942586, 5.2540694564527124e-05, 9.322179396800044e-06, 0.0001094891562213476, 0.7466701011429862, 6.386604277624659e-05, 2.2548946918925876e-08, 0.14936862179469457, 4.552971045913883e-07, 5.659152869616684e-06, 2.893192864753173e-08, 0.0032371972836002572, 6.931571328910981e-06, 0.00816043744893597, 3.118141682848215e-06, 1.442596868186627e-05, 0.005551596806877676, 5.468641204333588e-06, 0.0018319327996199684, 0.04487914957041013, 1.748703802379573e-06, 0.04008053440395654], + [0.33397314068020206, 4.260866096154741e-05, 0.0007078385742602559, 2.990851900320159e-11, 7.59736322229124e-09, 0.0015080947162799331, 0.00016705764139062442, 0.18466504594289637, 2.6637259842832823e-10, 6.934484349224537e-09, 0.00027211260177065173, 2.109789535671538e-09, 2.9086917345686057e-09, 5.314887380809091e-07, 0.4895180549265491, 6.11694276802605e-12, 3.9653672043648766e-07, 0.3111831327535746, 0.007059252304677876, 0.004834373931510084, 4.158071056159605e-05, 7.382237763436912e-06, 7.275166594067283e-05, 0.7381144947811253, 4.786530232239601e-05, 1.5370814846279782e-08, 0.15684627875345677, 2.7041402499109243e-07, 3.835595950470149e-06, 1.5869051666428213e-08, 0.0020763716277170064, 4.703907663057973e-06, 0.008955935192597382, 2.1672421565318924e-06, 1.4525853399887318e-05, 0.005784856644212977, 2.8509114274391486e-06, 0.0016258298837660739, 0.043610750863002916, 1.1267836720857007e-06, 0.04282807637199446], + [0.3418157873687035, 2.9115481057375817e-05, 0.0005486137844081736, 2.1790358744035164e-11, 5.580858080639195e-09, 0.001366647203182088, 0.00012222435700118075, 0.17661248292494441, 2.1586530371733163e-10, 5.308293607417513e-09, 0.00022380590865463354, 1.6199844687464347e-09, 1.8936750240444435e-09, 4.288915408975245e-07, 0.5055819925583207, 3.6786620053957374e-12, 3.04593970342411e-07, 0.30560869946771163, 0.0060833622609127455, 0.0037904166842901064, 3.199190101396322e-05, 5.688291889117796e-06, 4.60862124984667e-05, 0.7292947275978963, 3.53084088801284e-05, 1.0088211651358369e-08, 0.1641338355300592, 1.5256076248498044e-07, 2.4824110446234975e-06, 8.241546290460016e-09, 0.0012699966333870908, 3.0940836211612953e-06, 0.009806475519276922, 1.4515618476264033e-06, 1.4535738314100713e-05, 0.006036811052871219, 1.4052017194645928e-06, 0.0014352793075928334, 0.042267479752501606, 7.008722232291678e-07, 0.04564457471881002], + [0.3505240393947738, 1.9189898289242207e-05, 0.00041450942684409026, 1.5365909739844032e-11, 3.956151312427512e-09, 0.0012275202138831507, 8.668663198155121e-05, 0.16845943783295028, 1.69213499934422e-10, 3.930250510270642e-09, 0.00018009569793467727, 1.2021782668696494e-09, 1.1812177700847976e-09, 3.3594019950758276e-07, 0.5222238000371525, 2.099035859910295e-12, 2.270999497504222e-07, 0.29932320737626694, 0.005144515692241212, 0.002896692715614549, 2.3871688000364527e-05, 4.26058533944741e-06, 2.7687117232544908e-05, 0.7201159108722932, 2.5587931349690377e-05, 6.359778378750319e-09, 0.17130398668213018, 8.12575240464633e-08, 1.5281027338614824e-06, 4.0294181270109395e-09, 0.0007361781355535134, 1.96489755955357e-06, 0.010733669036453928, 9.342251987224307e-07, 1.4476283316226123e-05, 0.006316718860186874, 6.501436402338281e-07, 0.0012596017242137126, 0.04086726599024921, 4.1912176557079354e-07, 0.048589171438223624], + [0.36018290788763385, 1.2126387322145462e-05, 0.0003040642970184649, 1.0487730949350117e-11, 2.700356374076052e-09, 0.001091807985688997, 5.936935057434771e-05, 0.16016592271418154, 1.285185460572369e-10, 2.8083279346871317e-09, 0.00014156020390622618, 8.613491247266633e-10, 7.028813078868032e-10, 2.549767110172413e-07, 0.539462849143605, 1.132124655724048e-12, 1.642891694073662e-07, 0.2923332833834722, 0.004260038719197258, 0.002151428672782225, 1.7223442012982884e-05, 3.0971244243961773e-06, 1.5687146850448133e-05, 0.7104666325857467, 1.817299916211092e-05, 3.838722064553848e-09, 0.178427843089616, 4.0587387325573775e-08, 8.90651557688978e-07, 1.8424771471302813e-09, 0.00040187676989262194, 1.199290289259391e-06, 0.011764026712596971, 5.757879253171687e-07, 1.4362235570488239e-05, 0.006633980159098551, 2.801578881279903e-07, 0.0010978308186931848, 0.039421136671413906, 2.39823198099819e-07, 0.051732223824949554], + [0.37089034840774887, 7.295088067748612e-06, 0.0002155207904088886, 6.9339835647226835e-12, 1.7705518224130352e-09, 0.0009609362797606444, 3.907851851420466e-05, 0.1517086163946705, 9.476846592240885e-11, 1.9320435166325393e-09, 0.00010848620383443047, 5.951969925712507e-10, 3.9709355051366424e-10, 1.8716191089297888e-07, 0.5572855935879713, 5.748565683989656e-13, 1.1528792167156176e-07, 0.2846705584780509, 0.003444447823915038, 0.0015472884303881864, 1.1972040197702885e-05, 2.180148594654408e-06, 8.333671996588219e-06, 0.7002222131422857, 1.2609978611821397e-05, 2.2093472390097347e-09, 0.18557124516728124, 1.887519821084849e-08, 4.890507389150702e-07, 7.821540847570641e-10, 0.00020528159130095235, 6.99953962658122e-07, 0.012928937921408415, 3.3845989435853503e-07, 1.4200077751071453e-05, 0.006997644717467641, 1.115069901872645e-07, 0.0009489120472328206, 0.03793300255577809, 1.3060074189467612e-07, 0.05515374918817139], + [0.38275929410528015, 4.143761932893718e-06, 0.00014679329597382383, 4.448359047200008e-12, 1.1122588900878088e-09, 0.0008364839979751715, 2.4582212722702262e-05, 0.14308276936592865, 6.801216392223122e-11, 1.2765256858557895e-09, 8.088637561684241e-05, 3.961533176846293e-10, 2.1188298025619098e-10, 1.325679043915237e-07, 0.5756403764392625, 2.7360279069438307e-13, 7.846630656907273e-08, 0.2763935201493273, 0.0027096481240982046, 0.0010727009959527346, 7.982206767666713e-06, 1.4818363312793872e-06, 4.126038853309223e-06, 0.6892481246976481, 8.516622773054575e-06, 1.2063133152489232e-09, 0.1927916857248302, 8.109408417678987e-09, 2.5159008969183327e-07, 3.0574595339110106e-10, 9.74958496151406e-05, 3.884068333706669e-07, 0.014264595682336659, 1.8886295195264683e-07, 1.3986306966654387e-05, 0.007415726420565848, 4.063430162441077e-08, 0.0008118603792209431, 0.036399739602009006, 6.727433373895784e-08, 0.05894181576364929], + [0.39591949558132905, 2.2013240139282094e-06, 9.546633760306456e-05, 2.7767243729981846e-12, 6.675614137436804e-10, 0.0007199986224390448, 1.4678938605875396e-05, 0.13430281237219133, 4.7643026701037216e-11, 8.078011919041033e-10, 5.8532225764698224e-05, 2.536100098459498e-10, 1.0617397561607823e-10, 9.037617655594005e-08, 0.5944356278104155, 1.2148960655467663e-13, 5.179977919443997e-08, 0.2675876012940212, 0.002064865724087767, 0.0007129942584110166, 5.078248264891584e-06, 9.690499645792142e-07, 1.8920706222186224e-06, 0.6774026591437743, 5.573657623449302e-06, 6.210033635352829e-10, 0.20013668753055386, 3.191909414153843e-09, 1.205373286035451e-07, 1.090630822073144e-10, 4.278314386186683e-05, 2.036091386268581e-07, 0.015811975719629726, 9.950608420356132e-08, 1.3706865991127116e-05, 0.007894347842336375, 1.343293744384518e-08, 0.0006858909782896072, 0.034811807933498896, 3.255515683740775e-08, 0.06319123357987368], + [0.4105187174154443, 1.0817426973822413e-06, 5.884947095760574e-05, 1.693366176138388e-12, 3.8165561284652695e-10, 0.0006128255604789765, 8.255327720555256e-06, 0.125401517292803, 3.269354261182805e-11, 4.881875710515868e-10, 4.0998658103837663e-05, 1.5592091913799654e-10, 4.96571412542762e-11, 5.9133424587890834e-08, 0.6135425995915309, 5.0079117109349205e-14, 3.317921440156655e-08, 0.2583630264707948, 0.0015162629434172029, 0.00045142713424753216, 3.063813457522516e-06, 6.07085670314497e-07, 7.984878005604336e-07, 0.6645393234678768, 3.516048545067946e-06, 2.992163733884066e-10, 0.20764378200038996, 1.140668979037217e-09, 5.3433934645542126e-08, 3.514837350404746e-11, 1.723916881044153e-05, 1.001182848541527e-07, 0.017616893595542985, 4.9200607041927934e-08, 1.3338172435832503e-05, 0.008436738016266447, 3.989545584081407e-09, 0.0005705196764942167, 0.033154526177752296, 1.4686648830517512e-08, 0.06800249611377351], + [0.4267237662407235, 4.855633586808795e-07, 3.409963808132959e-05, 1.0146358110523515e-12, 2.0721199598317185e-10, 0.0005159677271291303, 4.332787053231349e-06, 0.11642803624299639, 2.20768974876318e-11, 2.809053407906662e-10, 2.771644500367513e-05, 9.191843905862835e-11, 2.1534012081887722e-11, 3.702082483728001e-08, 0.6328011951220547, 1.9064918939231685e-14, 2.063665391956619e-08, 0.24884984352091027, 0.0010663074208241826, 0.0002702185022074377, 1.7403780224241924e-06, 3.62495152206528e-07, 3.080601473297365e-07, 0.6505097535392885, 2.125173304799442e-06, 1.3379241677192472e-10, 0.21534037800753922, 3.6651243924008713e-10, 2.17631697957219e-08, 1.012184528241984e-11, 6.3390872959335245e-06, 4.581728749166928e-08, 0.019729870604274908, 2.267377846303815e-08, 1.285002860558016e-05, 0.009042058933447073, 1.0536331775503992e-09, 0.00046561581735996596, 0.031410108399056495, 6.124262725192059e-09, 0.07348013274074165], + [0.4447206236181057, 1.962703730595242e-07, 1.839749343226551e-05, 6.017897065030761e-13, 1.0650699931952396e-10, 0.00042999423350262506, 2.100176739285335e-06, 0.10744540124427886, 1.475302501168997e-11, 1.5340740334622795e-10, 1.8028769392165007e-05, 5.1880065373244066e-11, 8.598610295738897e-12, 2.2104923726745567e-08, 0.6520289042639121, 6.668065959476714e-15, 1.2480929483391003e-08, 0.23919131787167755, 0.000713087210662193, 0.00015161620293873142, 9.231216678959231e-07, 2.0508871750889377e-07, 1.0789370704121851e-07, 0.6351705816087219, 1.2223939329303748e-06, 5.497853088799439e-11, 0.22324273998264482, 1.047783352951213e-10, 8.081841578464158e-09, 2.573227867806668e-12, 2.1138076259000377e-06, 1.934735589862162e-08, 0.02220544443657223, 9.664023573020737e-09, 1.2210589570965895e-05, 0.009704098794663467, 2.4474502913376276e-10, 0.00037138448599748167, 0.029560378828812378, 2.338454835245178e-09, 0.07972947310822269], + [0.4647144561317482, 7.031727317505462e-08, 9.145140802236835e-06, 3.5657980283610896e-13, 5.166561249340545e-11, 0.0003550016432279361, 9.292310975929851e-07, 0.09852786946965952, 9.822506279278112e-12, 7.924248890300251e-11, 1.1248267063817753e-05, 2.7990763518458034e-11, 3.1386186232824994e-12, 1.254533562206958e-08, 0.6710303731064412, 2.1313332205262815e-15, 7.354907678157136e-09, 0.22953599611001393, 0.0004499071906814664, 7.898837875217993e-05, 4.529220640918544e-07, 1.0920446650840928e-07, 3.404923520104217e-08, 0.6183961024869243, 6.641308068848602e-07, 2.0534796701678504e-11, 0.23135213405349775, 2.6350203637645687e-11, 2.7136310398471903e-09, 5.698957599331333e-13, 6.350234301266227e-07, 7.46903010284156e-09, 0.025100187814572787, 3.776859636638689e-09, 1.1393233623574986e-05, 0.010409869328131417, 4.9420723798106635e-11, 0.0002882624679558329, 0.027590182104724074, 8.092626586261306e-10, 0.08685041233531912], + [0.4869296415876114, 2.194860768446544e-08, 4.140667161700187e-06, 2.1331687328892074e-13, 2.35738432833939e-11, 0.0002906293282830435, 3.705470603871376e-07, 0.08975817283128029, 6.564308557811869e-12, 3.8563280537241737e-11, 6.709988577398294e-06, 1.440791913082753e-11, 1.0393664647412788e-12, 6.742545729540136e-09, 0.6896067863578411, 6.191473455489178e-16, 4.234114539341093e-09, 0.2200296021670256, 0.00026552779918710684, 3.782572612184228e-05, 2.0341115067579836e-07, 5.431143420016177e-08, 9.60463536888871e-09, 0.6000982766834805, 3.380709646742884e-07, 6.886653137362487e-12, 0.23964825119064045, 5.758819838804927e-12, 8.163382788477336e-10, 1.0837644263851837e-13, 1.706876046034308e-07, 2.61008250419381e-09, 0.02846869316893516, 1.3405894415770928e-09, 1.038471858457853e-05, 0.011138275304186748, 8.567094569649628e-12, 0.0002167325664265651, 0.025491307077744836, 2.510270865216157e-10, 0.09492750330212671], + [0.5116103390727267, 5.862307179903905e-09, 1.6871544813942505e-06, 1.302470297787583e-13, 1.0076987761011798e-11, 0.00023612369939274888, 1.3139682553770175e-07, 0.0812244118288893, 4.435197225901695e-12, 1.759226666959104e-11, 3.815165526087118e-06, 7.054870055085976e-12, 3.097769308021556e-13, 3.417277072686295e-09, 0.7075642426241858, 1.6245731890001193e-16, 2.3879171034581556e-09, 0.21080772558526478, 0.00014528944919317603, 1.6480483314829698e-05, 8.266056543497524e-08, 2.5015298073038753e-08, 2.4007222925721798e-09, 0.5802525194565845, 1.5986262999884167e-07, 2.046011339651396e-12, 0.24808154857223894, 1.0795642677474774e-12, 2.1782925808765218e-10, 1.7422554825905243e-14, 4.07483059550877e-08, 8.170261730141388e-10, 0.0323569005969353, 4.2765800238798857e-10, 9.193241791548722e-06, 0.01185913408590062, 1.2580142242070333e-12, 0.00015709048366997256, 0.02326650701268174, 6.897237088678264e-11, 0.10401688000436976], + [0.5390220246843647, 1.315620276121028e-09, 6.110700944660081e-07, 8.194992242853131e-14, 4.014066059004688e-12, 0.0001904419559057878, 4.087018968732122e-08, 0.07301626025820417, 3.0469186183477377e-12, 7.472885584807483e-12, 2.0610958620190185e-06, 3.270408990793955e-12, 8.237853629068383e-14, 1.624867739123355e-09, 0.7247208360943879, 3.8207416885299805e-17, 1.3223506568402672e-09, 0.20199019611984081, 7.305097429130605e-05, 6.468907464439623e-06, 3.0016123582604096e-08, 1.0571094098100313e-08, 5.267369526378097e-10, 0.5589241132225777, 6.959399291636211e-08, 5.306896250046397e-13, 0.25656806611386673, 1.7118183949369312e-13, 5.0994631737103456e-11, 2.3282756575662872e-15, 8.572226291902003e-09, 2.2657309201239812e-10, 0.036792667937213926, 1.212190851980812e-10, 7.854218190501944e-06, 0.012532942911457665, 1.5427636098108664e-13, 0.0001092258472711179, 0.02093283704556087, 1.6576334391352098e-11, 0.1141322083487339], + [0.569454017567565, 2.4367992837234966e-10, 1.9433746985909772e-07, 5.3471225310789057e-14, 1.4787271612821992e-12, 0.00015238161473554656, 1.1001179271120152e-08, 0.06522035069819429, 2.134099422902561e-12, 2.9290322564206843e-12, 1.054508458668677e-06, 1.424453276688209e-12, 1.9356567923690037e-14, 7.201311558312412e-10, 0.7409126150234542, 7.971242609738513e-18, 7.196139131208297e-10, 0.19367765081752017, 3.3463638299070745e-05, 2.267073635146078e-06, 9.609059418238516e-09, 4.057062413958561e-09, 1.0041188059928114e-10, 0.5362870355901561, 2.7633087876478712e-08, 1.1829129718712296e-13, 0.2649911653434367, 2.26177422643743e-14, 1.0348777456266299e-11, 2.540328727465732e-16, 1.5757235720045684e-09, 5.5017927732408016e-11, 0.04177440339320483, 3.015483446010498e-11, 6.4311654610005035e-06, 0.013111890617039363, 1.556417525112253e-14, 7.248714269232233e-05, 0.018523291286063285, 3.438511100576092e-12, 0.12523326202660562], + [0.6032223904319839, 3.661149758725255e-11, 5.3618532365672906e-08, 3.622313941995837e-14, 4.9834301665264e-13, 0.00012071820868405062, 2.52930629216251e-09, 0.05791508195088534, 1.5219752640996205e-12, 1.0467772256828519e-12, 5.090486677595036e-07, 5.765119994628564e-13, 3.973607163443981e-15, 2.9504189862389477e-10, 0.75599893321888, 1.4543083697220951e-18, 3.8414207049868635e-10, 0.18595013854791634, 1.38557119085683e-05, 7.037896104114888e-07, 2.6726838326648966e-09, 1.3986946285282346e-09, 1.644664014104861e-11, 0.5126266584261008, 9.910658815159224e-09, 2.2278577201584772e-14, 0.2732134828151256, 2.4502519738017743e-15, 1.79696838273761e-12, 2.2197724186349297e-17, 2.5078597810735684e-10, 1.1554268991587263e-11, 0.04725973149399625, 6.496750182047956e-12, 5.009536924922935e-06, 0.013542639540051808, 1.2711147987904727e-15, 4.567779694173804e-05, 0.01608585583416991, 6.069747690304304e-13, 0.13722093300901766], + [0.6406722862951997, 4.38696282791348e-12, 1.2680442604189038e-08, 2.5340091322294798e-14, 1.513715491388223e-13, 9.433165107858791e-05, 4.904545719593114e-10, 0.05116546535976233, 1.099066949406778e-12, 3.361286368248148e-13, 2.308138466567275e-07, 2.136350264889015e-13, 7.032751721829822e-16, 1.1062295869832844e-10, 0.7698675186887651, 2.275539003434807e-19, 2.000454030049198e-10, 0.17886709924639757, 5.147949146724718e-06, 1.9218649374939563e-07, 6.35715688164527e-10, 4.2813988474520313e-10, 2.286701312227215e-12, 0.48832128287988036, 3.178146957167587e-09, 3.4816075936105866e-15, 0.2810989335631018, 2.1387477191568983e-16, 2.6322797358811126e-13, 1.5216210223268088e-18, 3.42181174608963e-11, 2.0709284773733644e-12, 0.05315704268864932, 1.1951766071142733e-12, 3.683031970327148e-06, 0.013771207912784123, 8.260033823863487e-17, 2.7184598277970103e-05, 0.013679662914236458, 8.980999983929656e-14, 0.14994099883486656], + [0.6821788782488722, 4.120307131276868e-13, 2.5383736693250945e-09, 1.8081646142406254e-14, 4.065091014520708e-14, 7.230195272624495e-05, 7.921094211795782e-11, 0.04501879446756068, 7.964861294572984e-13, 9.536934100559482e-14, 9.773191324257895e-08, 7.120545376089504e-14, 1.0566343313072861e-16, 3.751210934483394e-11, 0.7824391019264744, 2.977093251499054e-20, 1.0061588624931975e-10, 0.17246795056928682, 1.7046347536169342e-06, 4.585318598773783e-08, 1.2707044883085935e-10, 1.1493349546880679e-10, 2.6635506966101633e-13, 0.4638039609321067, 9.015277543374466e-10, 4.4284946631420873e-16, 0.288540398240478, 1.475962909926876e-17, 3.2035733408046166e-14, 8.002414608169918e-20, 3.959338329548816e-12, 3.123023206957668e-13, 0.05932288732635593, 1.8492756077022098e-13, 2.53485231928921e-06, 0.013749758557566376, 4.1918639219410886e-18, 1.5194015699111362e-05, 0.011368756326667536, 1.0959564976996553e-14, 0.16319650881142722], + [0.7281471155961984, 2.9764006640034093e-14, 4.2416531179680797e-10, 1.2919046121908587e-14, 9.427825687884998e-15, 5.395745824011468e-05, 1.051726564128731e-11, 0.03950188338926582, 5.732367219218768e-13, 2.3493363933782116e-14, 3.8352609001627604e-08, 2.0935621069413912e-14, 1.3239024543771335e-17, 1.1355434593325137e-11, 0.7936706730854066, 3.1560241645607318e-21, 4.815845094313594e-11, 0.16677293807537447, 4.996568803132685e-07, 9.486079803058934e-09, 2.0935755732412203e-11, 2.671051952296779e-11, 2.562150906106183e-14, 0.43951252831810367, 2.2364176405383165e-10, 4.491907836050863e-17, 0.29548575777210606, 7.889269515150937e-19, 3.1866179598870742e-15, 3.1523811523398873e-21, 3.838797217375755e-13, 3.9019368201652355e-14, 0.06556706419065529, 2.3681970407098484e-14, 1.619553433248518e-06, 0.013444305563047656, 1.6278607945095702e-19, 7.928366087103695e-06, 0.009214679163210417, 1.0839286903223231e-15, 0.17676611690239255], + [0.7790112577398364, 1.6177078916917333e-15, 5.821377279310655e-11, 9.031420237553263e-15, 1.8379134745910506e-15, 3.886418301171815e-05, 1.1317318895196775e-12, 0.034620331925560154, 4.058770650696018e-13, 4.941112343192195e-15, 1.3813087444359634e-08, 5.3264417975171316e-15, 1.3558425628354117e-18, 3.027076696489761e-12, 0.8035564269932648, 2.612508902821254e-22, 2.1512378483494785e-11, 0.16178423263873795, 1.2869187603578807e-07, 1.685211012266775e-09, 2.7826864334260265e-12, 5.301459487439438e-12, 2.0037571955958935e-15, 0.4158395417057351, 4.792620036221038e-11, 3.555403741903723e-18, 0.30195499654887525, 3.1941013551852705e-20, 2.5455744939922336e-16, 9.063858630164092e-23, 3.07734412445337e-14, 3.972213449676605e-15, 0.07166527088500049, 2.4673694879684786e-15, 9.524709803079778e-07, 0.01284172798929275, 4.730503175678505e-21, 3.838239631589928e-06, 0.007269420563209577, 8.526420564784291e-17, 0.1904242515952288], + [0.8352354794375744, 6.442362508004958e-17, 6.435203096971504e-12, 6.021741371726263e-15, 2.923650304183004e-16, 2.6756788294952056e-05, 9.709262439554431e-14, 0.030359873211530032, 2.810679285632315e-13, 8.744750383455093e-16, 4.509839007357636e-09, 1.1527882898125334e-15, 1.1100058556467672e-19, 7.010058748724329e-13, 0.8121259960209702, 1.6196198932671058e-23, 8.759079621170188e-12, 0.15748734034021858, 2.8874223949905942e-08, 2.5372146341278567e-10, 2.913734099118474e-13, 8.858893553100826e-13, 1.252354880437191e-16, 0.3930933905027003, 8.755796642051196e-12, 2.1460312494429355e-19, 0.308043890157266, 9.559720452566716e-22, 1.6024808450579107e-17, 1.849506769811684e-24, 2.0093657146836073e-15, 3.235603484668891e-16, 0.07737708139052064, 2.0534287439428124e-16, 5.112381799910095e-07, 0.01195439265284125, 1.0036136082276619e-22, 1.712408497995479e-06, 0.005570087850619455, 5.226638062486164e-18, 0.20395893378906332], + [0.8973163516954702, 1.8201887773770497e-18, 5.596553604887589e-13, 3.73146560782835e-15, 3.677961597948241e-17, 1.743121428589911e-05, 6.514263417559766e-15, 0.026689452749993344, 1.903191259882285e-13, 1.2879897725834763e-16, 1.3146558727390753e-09, 2.094317447487386e-16, 7.089253631931336e-21, 1.3918717443749027e-13, 0.8194403117140799, 7.185129814075421e-25, 3.163992890601555e-12, 0.15385279740005692, 5.584125895277061e-09, 3.18052788815721e-11, 2.3416059413198447e-14, 1.2275753068527792e-13, 6.137781092104158e-18, 0.3714778009808521, 1.3442704868822398e-12, 9.63848001290562e-21, 0.3139139070929695, 2.0594735401343504e-23, 7.7884508187152425e-19, 2.5977247968825195e-26, 1.0507208944000721e-16, 2.0675097087634612e-17, 0.08246575462818048, 1.3383138775243752e-17, 2.483061119594253e-07, 0.010821167153937054, 1.5125524342154279e-24, 6.989969935212426e-07, 0.004136110760344153, 2.4417665584844944e-19, 0.21718431201379632], + [0.9657871445510019, 3.509391716935253e-20, 3.72299559534386e-14, 2.0966324392035004e-15, 3.543091272201712e-18, 1.0638543753145441e-05, 3.3412545591419917e-16, 0.02356540723679229, 1.2684766486890913e-13, 1.567789774407204e-17, 3.360097868071649e-10, 3.166665019578186e-17, 3.439085799995235e-22, 2.340228709192536e-14, 0.8255858598628659, 2.173034237702073e-26, 9.841904968650492e-13, 0.15083809310900737, 9.188214628926252e-10, 3.243863908916729e-12, 1.4038620383856178e-15, 1.387825488614392e-14, 2.3094807693483323e-19, 0.3510912552089284, 1.7074756806673507e-13, 3.137263861167637e-22, 0.3197715410060221, 3.1013211050490346e-25, 2.857658159305699e-20, 2.428812387369049e-28, 4.316131155443293e-18, 1.0140924973333274e-18, 0.08671638917344272, 6.685267167480068e-19, 1.0818635169927626e-07, 0.009504350258389293, 1.5707150366865233e-26, 2.5902536957543167e-07, 0.0029690911677876, 8.484662551419259e-21, 0.22994700584593628], + [1.0412232087511426, 4.41021443995045e-22, 1.833120474368246e-15, 1.044383639561005e-15, 2.5296210143608807e-19, 6.024151938510839e-06, 1.2757625803124745e-17, 0.020936027855686004, 8.436567030592627e-14, 1.5725686897750858e-18, 7.371758931475848e-11, 3.9706883535339786e-18, 1.2307812820783769e-23, 3.292917534767749e-15, 0.8306681096011181, 4.257596064770756e-28, 2.5531312407974166e-13, 0.14838983820164034, 1.2661352697186766e-10, 2.615456837766404e-13, 6.089216166124844e-17, 1.2577026204721118e-15, 6.5154218655082915e-21, 0.3319428620218421, 1.7639934567255003e-14, 7.192518410131695e-24, 0.32584216019760676, 3.1604626419601246e-27, 7.72123173536582e-22, 1.4571164822465567e-30, 1.3625202165728718e-19, 3.7280290976012575e-20, 0.08994996003810374, 2.4998720197236487e-20, 4.191062416405099e-08, 0.008082794977310976, 1.0862967890094291e-28, 8.640340579169751e-08, 0.0020548635585955653, 2.135045798579203e-22, 0.24212723071881356], + [1.1242475386189699, 3.426318517899351e-24, 6.433969895493573e-17, 4.518728281393766e-16, 1.2947624409666378e-20, 3.1356321114857452e-06, 3.5166873636457485e-19, 0.018745888263242423, 5.713023736678614e-14, 1.3005265620789588e-19, 1.3551017832682588e-11, 4.131856717664866e-19, 3.1473270838462903e-25, 3.833620980910006e-16, 0.8348047157635384, 5.122366127659013e-30, 5.338461035852555e-14, 0.14644626032483254, 1.4341322147392197e-11, 1.610620143246249e-14, 1.848793660887674e-18, 8.962076576926352e-17, 1.34194644473962e-22, 0.31397840608790767, 1.455012778707976e-15, 1.126057836382633e-25, 0.33234346652374014, 2.1029285033382133e-29, 1.4944582548784053e-23, 5.386901211528301e-33, 3.2239050307808754e-21, 1.0006181516771065e-21, 0.09203216771049079, 6.818484119403915e-22, 1.4304458431002432e-08, 0.006642196726166864, 4.817193948242071e-31, 2.5708102297115256e-08, 0.0013670660515170898, 3.778249880605471e-24, 0.2536366566913727], + [1.2155360446250565, 1.550547506544859e-26, 1.543450003048526e-18, 1.6660057556377639e-16, 4.590460231861927e-22, 1.4865518279944037e-06, 6.759462928571611e-21, 0.016939510934284748, 4.0389120581974465e-14, 8.89353757241878e-21, 2.0316181151564565e-12, 3.5811034503488084e-20, 5.5529441262818855e-27, 3.650488777524693e-17, 0.8381189356254097, 3.5756452344867556e-32, 8.677089421727605e-15, 0.1449400668974005, 1.3068472325842898e-12, 7.280514869094838e-16, 3.791901878906698e-20, 4.916454198468725e-18, 1.9585656257693363e-24, 0.2971097717850969, 9.391917699400925e-17, 1.1640872254933326e-27, 0.33946242817696914, 8.782798371602142e-32, 2.009276874596325e-25, 1.1739637764219837e-35, 5.55833247823661e-23, 1.9053789555651677e-23, 0.09287726410800472, 1.3183519572160387e-23, 4.260816556709478e-09, 0.005264168390652575, 1.3132856426471903e-33, 6.756123773092827e-09, 0.000871491962986211, 4.5536289885265664e-26, 0.264414864363818], + [1.3158228522305582, 3.82797396621001e-29, 2.4167095229087307e-20, 5.134128833168427e-17, 1.0869087195066951e-23, 6.358040483830338e-07, 8.71520522324962e-23, 0.015464149209513315, 3.0656375137664004e-14, 5.047588782464375e-22, 2.4119284611003583e-13, 2.5968817043796974e-21, 6.505212521029617e-29, 2.8088393113178486e-18, 0.8407336322134462, 1.3625568946697043e-34, 1.0546777568178992e-15, 0.14380158278503982, 9.352630505763595e-14, 2.311278850569977e-17, 5.055141522118187e-22, 2.0287982247489568e-19, 1.95932435703262e-26, 0.28124193583717827, 4.642704935039732e-18, 7.660866202609762e-30, 0.34733791929912605, 2.204726448820306e-34, 1.813426310487056e-27, 1.4366086869458625e-38, 6.765060953488584e-25, 2.494739276643353e-25, 0.09244786347845804, 1.7511719275117916e-25, 1.0966703922258648e-09, 0.004016174860169699, 2.1012368912052962e-36, 1.551900140599138e-09, 0.0005305660263493745, 3.609306139633123e-28, 0.2744255376727488], + [1.4259067329558301, 4.8030720245338283e-32, 2.3503392477112557e-22, 1.2947851187616257e-17, 1.6514625805674518e-25, 2.4278127952708784e-07, 7.223194476895801e-25, 0.01427162462288817, 2.5708399404175406e-14, 2.3840955437436415e-23, 2.1965836251809553e-14, 1.5805230670519605e-22, 4.8517246480545295e-31, 1.7229404296882076e-19, 0.8427662037484579, 2.652274584412907e-37, 9.194399965593276e-17, 0.1429619288590657, 5.120099719289789e-15, 4.912278554691454e-19, 4.200208935767842e-24, 6.139222394290543e-21, 1.2948320702514688e-28, 0.26629340275413554, 1.7171652014504568e-19, 3.084319634009399e-32, 0.3560498529334644, 3.1723004416080907e-37, 1.0577835366401494e-29, 9.36107648312355e-42, 5.611178169096187e-27, 2.1707396684929515e-27, 0.09075217863176933, 1.5439709733620708e-27, 2.413582022091481e-10, 0.0029443706882022313, 1.8749122521401608e-39, 3.0812056165526056e-10, 0.0003073797905436762, 1.8111955872959167e-30, 0.28365281450273355], + [1.5466602082095815, 2.8403765639178243e-35, 1.3468499917384302e-24, 2.6071192444135174e-18, 1.540125065641316e-27, 8.178507864733067e-08, 3.6741325599575855e-27, 0.013319270079959596, 2.4469976520013395e-14, 9.369285684081204e-25, 1.483759777015459e-15, 8.067994521676225e-24, 2.199973698647689e-33, 8.294483950784216e-21, 0.8443247174949637, 2.451188441769826e-40, 5.495335290560022e-18, 0.1423559306503228, 2.0843117421069484e-16, 6.644925068186539e-21, 2.0771894601658481e-26, 1.3246869245061616e-22, 5.426650394723465e-31, 0.25220780123263964, 4.63411858914079e-21, 7.273840450806118e-35, 0.3656145681643284, 2.483757723756605e-40, 3.8238598611052684e-32, 3.0646685330846524e-45, 3.0502921374945877e-29, 1.2095193893772678e-29, 0.08784018152725237, 8.700800188860145e-30, 4.4912047419091234e-11, 0.0020707092715011124, 8.821894620230436e-43, 5.224950222902414e-11, 0.00016882897961484157, 5.520466112217646e-33, 0.29209791060848633], + [1.6790427418222087, 7.311301550388178e-39, 4.3021271543089295e-27, 4.070858399252215e-19, 8.385974923431861e-30, 2.397298278074916e-08, 1.0910596289447324e-29, 0.012570104083857232, 2.7056260516379464e-14, 3.0484085722011324e-26, 7.175919924435936e-17, 3.431705408207525e-25, 5.7661844145901335e-36, 3.076131115483528e-22, 0.8455054086272228, 9.922192215995503e-44, 2.1452910879086943e-19, 0.14192446332441672, 6.122093348188875e-18, 5.428281348945671e-23, 5.813091811478311e-29, 1.976061846450669e-24, 1.3786186897979872e-33, 0.23895615738767292, 8.878921994468307e-23, 9.579812147236784e-38, 0.37598563692006265, 9.993712565819301e-44, 8.177343304742019e-35, 4.729101472480058e-49, 1.040846223183391e-31, 4.143667996832005e-32, 0.08379988838340328, 3.0061361653173817e-32, 6.979903288778208e-12, 0.0013945284525887335, 2.058108018623312e-46, 7.470359593890553e-12, 8.756392740519176e-05, 9.766119972464176e-36, 0.29977622482490407], + [1.824118776088877, 7.535413971735623e-43, 7.226578093892416e-30, 4.76592515842688e-20, 2.5214768556118246e-32, 6.019651245599575e-09, 1.7924305458367335e-32, 0.011992417496470665, 3.53794781956296e-14, 8.118408993802909e-28, 2.3953568256710173e-18, 1.1995355595204263e-26, 8.265103652499116e-39, 8.593830678811848e-24, 0.8463915335197597, 1.610682890981952e-47, 5.1971159790815624e-21, 0.14161604297061253, 1.2565478207637543e-19, 2.537192483326007e-25, 8.710154314266163e-32, 1.9689245183774585e-26, 2.0191027952587416e-36, 0.22653101793390676, 1.1719374614036317e-24, 6.682612698664819e-41, 0.38705904213454195, 1.9396427703385034e-47, 9.823035402009654e-38, 3.204734614999652e-53, 2.1251526744731993e-34, 8.344601705359489e-35, 0.07875432782200141, 6.080250806413589e-35, 8.937333796667058e-13, 0.0008976179104458873, 2.2237368981686465e-50, 8.87855651357564e-13, 4.270023970030394e-05, 9.536365422751678e-39, 0.306715293894669], + [1.9830803681809157, 2.84821351030334e-47, 6.0046951984783044e-33, 4.0320481304788e-21, 3.938246123372565e-35, 1.2728233812504615e-09, 1.537128105645413e-35, 0.011558997439006029, 5.5366519375585875e-14, 1.7360965839797502e-29, 5.3142825265090967e-20, 3.3708220575739334e-28, 6.096973939074909e-42, 1.7604488724769215e-25, 0.8470533739343767, 9.53509347232359e-52, 7.412293793950178e-23, 0.14138762735841112, 1.741407697318926e-21, 6.419846630942304e-28, 6.577814087554316e-35, 1.2608091496324746e-28, 1.611838833209926e-39, 0.21493498050506638, 1.0303334600569851e-26, 2.3269297452791895e-44, 0.39868177725644577, 1.6918222103888592e-51, 6.25523350963798e-41, 8.812113588968336e-58, 2.461165044683304e-37, 9.394291636279552e-38, 0.07285888237188612, 6.836670794256943e-38, 9.284784672242337e-14, 0.0005510228337756839, 1.0311877029281862e-54, 8.633888085033294e-14, 1.948348947702266e-05, 4.8592572025346814e-42, 0.3129538535031998], + [2.157273119220653, 3.5973562987642736e-52, 2.3132728723818355e-36, 2.3740927841685373e-22, 2.992141408407631e-38, 2.2257044181135425e-10, 6.459869523485485e-39, 0.011246231537544194, 1.0433011372205977e-13, 2.8992591872866276e-31, 7.5389660687834e-22, 7.389351403249038e-30, 2.1657272947413225e-45, 2.5606717139279973e-27, 0.847549036649201, 1.8618206395775067e-56, 5.906761543812138e-25, 0.1412047315936766, 1.5699352478124613e-23, 8.306069933597229e-31, 2.3441203080548264e-38, 4.96783079764648e-31, 6.58497243777183e-43, 0.20416708515768758, 5.808208560747491e-29, 3.7825985952561045e-48, 0.41066316293071375, 6.123342450355864e-56, 1.9783312313821803e-44, 8.993373818529649e-63, 1.5225508591926941e-40, 5.586632159573414e-41, 0.0662979029360007, 4.031507658679127e-41, 7.690196547629923e-15, 0.00032176739030719, 1.883666750845676e-59, 6.7473065720844665e-15, 8.27262131673815e-06, 1.212729722990537e-45, 0.31854180894290307], + [2.348223243424939, 1.374123823475732e-57, 3.854947263033268e-40, 9.394249035711837e-24, 1.0321163849769872e-41, 3.16060650009608e-11, 1.241291646860657e-42, 0.011033312674722507, 2.3708304333372906e-13, 3.6438393329337954e-33, 6.574011033093026e-24, 1.2169697009150888e-31, 3.444924648373682e-49, 2.54676938380833e-29, 0.8479256458424648, 1.0804110947557093e-61, 2.502010320099838e-27, 0.14104104145285054, 8.836053222367578e-26, 5.177325499977429e-34, 3.6692740213068996e-42, 1.1465216361446594e-33, 1.2821842002631716e-46, 0.19421069739117153, 2.010207833881565e-31, 2.6604736888870262e-52, 0.42278830988772736, 8.402022062202695e-61, 2.88707197163694e-48, 3.0791345092533038e-68, 4.702003749833376e-44, 1.6455746629133543e-44, 0.05927919286718488, 1.167144393786785e-44, 4.977104744143404e-16, 0.00017817566283218246, 1.2301202054610551e-64, 4.1511845553098017e-16, 3.2477766131375974e-06, 1.379493319837969e-49, 0.3235403764076265], + [2.557663288297821, 1.4244248464544136e-63, 2.577352417078577e-44, 2.4266165900187815e-25, 1.5051731461017534e-45, 3.5812655399626e-12, 1.0099397310602469e-46, 0.010901693533614094, 6.489759002988711e-13, 3.291601153628506e-35, 3.384305988620234e-26, 1.4407355195545143e-33, 2.267297213790593e-53, 1.658171632794587e-31, 0.8482206008551958, 1.674797137920741e-67, 5.381522621352268e-30, 0.14087770560799495, 2.9650454223104576e-28, 1.4595393081508913e-37, 2.3328598121757896e-46, 1.465713316302562e-36, 1.098009956818329e-50, 0.18502584456695806, 4.064600436656127e-34, 7.426406349267634e-57, 0.4348329862021446, 3.944852148659938e-66, 1.7891229658119704e-52, 3.1534186316697946e-74, 6.715609188125677e-48, 2.231391122375933e-48, 0.052025401750006785, 1.539299412844091e-48, 2.4595629275161332e-17, 9.320239083729083e-05, 2.572844959105075e-70, 1.963571459246562e-17, 1.1701962858756095e-06, 6.590208927080482e-54, 0.3280213948961036], + [2.7875543931825204, 3.55681294986162e-70, 6.3644854978274006e-49, 4.0089960609346126e-27, 8.626878645675448e-50, 3.184851917681682e-13, 3.193489421543932e-51, 0.01083483685459763, 2.1367509350262545e-12, 2.0235831610447915e-37, 9.86650959143953e-29, 1.166916593249931e-35, 5.66623477871341e-58, 6.72749056897083e-34, 0.8484627254079267, 6.222045905068385e-74, 5.643492670791147e-33, 0.14070243773553134, 5.63147814989935e-31, 1.7382226182990893e-41, 5.52899234674377e-51, 9.744858059155829e-40, 3.777599818719385e-55, 0.17654757459784592, 4.537271744706917e-37, 7.460075142691412e-62, 0.4465787360811811, 5.643939782628502e-72, 4.287796480694389e-57, 8.483941678238535e-81, 4.070264311658483e-52, 1.2819107515832638e-52, 0.04476242763631196, 8.49841052771901e-53, 9.038252018969928e-19, 4.5841831033704305e-05, 1.522050504672852e-76, 6.949549139291027e-19, 3.83612418186134e-07, 1.205019471169257e-58, 0.3320650362481699], + [3.0401040107783626, 1.8743407736238067e-77, 5.295800025780044e-54, 4.1918404931841417e-29, 1.8030650271644753e-54, 2.1890782053927415e-14, 3.565619841341427e-56, 0.01081820540468061, 8.465690067901196e-12, 7.954047051053391e-40, 1.5597096350957942e-31, 6.128203866551608e-38, 4.898407680054304e-63, 1.609742112046951e-36, 0.8486732878966604, 4.95835941573489e-81, 2.784416834754037e-36, 0.140508506690396, 5.708048958143112e-34, 8.115599444818035e-46, 4.444653679184207e-56, 3.138977314544104e-43, 4.7181187833331453e-60, 0.1686901996658229, 2.622581097674204e-40, 2.4152481933108957e-67, 0.45782675835970665, 2.159847328281305e-78, 3.5791010488344165e-62, 5.181233686436338e-88, 9.508053012740567e-57, 2.841154370977734e-57, 0.03770609117430967, 1.7860581482235708e-57, 2.396404226934057e-20, 2.1083359085385068e-05, 2.2148978144243066e-83, 1.7842799878785107e-20, 1.132769338369113e-07, 7.595553220442697e-64, 0.33575575417241027], + [3.317779334145402, 1.7987555723554208e-85, 1.3404482251707073e-59, 2.7716650657897994e-31, 1.2714497215921417e-59, 1.146211205144867e-15, 1.2628212113021465e-61, 0.01083937133490851, 4.05267804363862e-11, 1.8649038438933948e-42, 1.2765966459243565e-34, 1.9708491457532736e-40, 1.323723495314904e-68, 2.137890477881458e-39, 0.8488669623106304, 7.554774811689545e-89, 6.2602804512696766e-40, 0.14029366627702677, 2.8894935731716167e-37, 1.3675279640590575e-50, 1.0918686634956464e-61, 4.526383798168939e-47, 1.9113271738601004e-65, 0.1613558377924591, 7.303783872723739e-44, 2.227769474684378e-73, 0.46840910788591483, 1.911456691622942e-85, 9.26196995549317e-68, 6.101468689774547e-96, 7.692315242509306e-62, 2.1877058155529704e-62, 0.03104903464479723, 1.2851277467369388e-62, 4.430777020497284e-22, 9.007816564024302e-06, 6.785376497142975e-91, 3.209239401698241e-22, 2.9788882483703315e-08, 1.468112674566222e-69, 0.33917698330797874], + [3.623317749905058, 2.666932885160671e-94, 9.207524782239345e-66, 1.1669377005426443e-33, 2.785886482900119e-65, 4.5071523842362024e-17, 1.258970136253366e-67, 0.010888116546410576, 2.3651605949606094e-10, 2.4180467651430246e-45, 5.145918931842628e-38, 3.654542525691157e-43, 1.001341819421271e-74, 1.474795677646174e-42, 0.8490528088921002, 1.948108291141904e-97, 6.221060567945517e-44, 0.14005907430970319, 6.781935085175461e-41, 7.585088582773904e-56, 7.30367232415065e-68, 2.6768599472331966e-51, 2.217726773535389e-71, 0.15444492919420472, 9.045705209941628e-48, 5.105191952472747e-80, 0.47819627296741785, 3.3298835069953394e-93, 6.5341626172824615e-74, 1.1563377124477602e-104, 1.9156884201513702e-67, 5.210236987525126e-68, 0.024949738370443217, 2.8150691201141405e-68, 5.498483214019713e-24, 3.5482410801851454e-06, 3.6837684949882736e-99, 3.888971219895332e-24, 6.887566259432265e-09, 7.641695566577215e-76, 0.34240550562761385], + [3.9597361567476113, 5.087002088917995e-104, 1.5114259961249225e-72, 3.164390266379545e-36, 1.7347371089152923e-71, 1.3111531187018439e-18, 3.0949884278612327e-74, 0.010956431646779043, 1.7065625801573495e-09, 1.5984311253080245e-48, 9.66719684532965e-42, 3.6667939541023515e-46, 1.8791474251369045e-81, 4.9165616998179736e-46, 0.8492353094203559, 7.445844346026906e-107, 2.6456291622053687e-48, 0.13980825722032403, 6.795436532844649e-45, 1.24965497985789e-61, 1.1709046084330634e-74, 5.895753893855789e-56, 6.430770844361677e-78, 0.14786643240067163, 4.560216061728621e-52, 2.4994675512099093e-87, 0.48710094456006303, 9.564550489442537e-102, 1.0913203137638616e-80, 2.8906007667999308e-114, 1.2907146104544447e-73, 3.376805830890753e-74, 0.019524913965421838, 1.6497582643566146e-74, 4.3891258856136604e-26, 1.2775417679513652e-06, 2.9332511751882412e-108, 3.040974384679938e-26, 1.3803741860366155e-09, 9.283922697851597e-83, 0.3455064313662492], + [4.330340999978162, 1.018815485236768e-114, 5.148228868133239e-80, 5.591609388070676e-39, 2.780285312663795e-78, 2.7743989087752554e-20, 1.621341828983297e-81, 0.011038379081335275, 1.5514993349761425e-08, 4.9399848534455575e-52, 7.956490937932258e-46, 1.8611033720211587e-49, 7.66101075187484e-89, 7.324378384401003e-50, 0.8494154413524441, 3.639025649383017e-117, 4.63649979853138e-53, 0.1395461640489642, 2.6537842809533885e-49, 5.453711435511504e-68, 3.9069531589419046e-82, 4.3516081462197974e-61, 4.015945327654566e-85, 0.1415460400736847, 8.492741110940612e-57, 2.2158987255789367e-95, 0.49507830815036324, 3.731945247737316e-111, 3.698812986568639e-88, 7.667058836651553e-125, 2.0440804188502712e-80, 5.177132213222229e-81, 0.014845741328116356, 2.2457703340007724e-81, 2.1501851983775467e-28, 4.163874228063988e-07, 2.78622374417343e-118, 1.4633501989220998e-28, 2.3607778833452023e-10, 2.251077780983833e-90, 0.34852949485188217], + [4.738740931449574, 1.7113352814390614e-126, 3.1122914689614383e-88, 6.483507727933065e-42, 1.0253411135568774e-85, 4.1850981288442093e-22, 1.5419977789919673e-89, 0.011129817121218024, 1.8187789887832066e-07, 6.51187814304951e-56, 2.6749377547147364e-50, 4.446358237756617e-53, 5.86007925877241e-97, 4.4788408948705787e-54, 0.849591765905634, 1.9231278352269304e-128, 3.1935179532643166e-58, 0.1392782350944623, 3.6558685316234116e-54, 5.549893328135405e-75, 2.321855635647727e-90, 9.593761132845207e-67, 4.5945047573879525e-93, 0.13543148014889825, 5.2565106014670674e-62, 2.970053505462036e-104, 0.5021235477821258, 1.6019395702402462e-121, 2.1512729309880056e-96, 1.7023954382166341e-136, 6.531742120420235e-88, 1.6118944692579296e-88, 0.010937821340110707, 6.0880208215877446e-89, 6.13966209578021e-31, 1.215378846403368e-07, 2.521787410429951e-129, 4.115245228146455e-31, 3.387155874773344e-11, 9.185141474274195e-99, 0.35150702992998734], + [5.188869215602511, 1.8811590010957305e-139, 2.809597476923136e-97, 4.916580517415937e-45, 7.649638808727065e-94, 4.390234952635373e-24, 2.2341011178302248e-98, 0.011227759423382345, 2.822011241363367e-06, 3.3223439182033576e-60, 3.3906403605937e-55, 4.6249148239215235e-57, 7.146460135909103e-106, 1.0249274193993735e-58, 0.8497619690635453, 9.057260916555816e-141, 8.128256367461102e-64, 0.13900744950175808, 1.5935411000895525e-59, 1.1425978693805713e-82, 2.069110418262696e-99, 5.5795661600928204e-73, 8.074602329886186e-102, 0.12949496322785983, 9.645262519263e-68, 4.949136895385913e-114, 0.5082672693219733, 6.017675152843456e-133, 1.7900853540419016e-105, 2.44679346453097e-149, 3.5675802953219164e-96, 8.64119876331527e-97, 0.007784237137899723, 2.782497349767532e-97, 9.672079042612953e-34, 3.1403670226151975e-08, 1.7045568200805706e-141, 6.402211401060143e-34, 4.002807887289852e-12, 5.241042155583602e-108, 0.35445349939838827], + [5.685163466184385, 1.0204358558839551e-153, 3.111394554113298e-107, 2.372793387908134e-48, 9.861609583159893e-103, 3.096611397753663e-26, 4.045032256975639e-108, 0.011323102169393952, 5.938917186636049e-05, 5.889991965161077e-65, 1.4708791335776438e-60, 1.9124071100471403e-61, 1.148610310485184e-115, 7.89755527060548e-64, 0.8499366451398443, 2.9977625279053227e-154, 7.001772886722903e-70, 0.1386808635211934, 1.945891828379162e-65, 4.0409142083217264e-91, 2.2715144069399845e-109, 7.643562799616423e-80, 1.7688485686719647e-111, 0.12374016099901498, 4.714559581643521e-74, 8.419887002206824e-125, 0.5135704911826048, 1.5504665415276408e-145, 1.7582809452321545e-115, 1.7353986571111804e-163, 2.744404159219656e-105, 6.784727345180014e-106, 0.005327529723774054, 1.821591962299522e-106, 8.205989918779668e-37, 7.134203727443233e-09, 6.621740403835433e-155, 5.364851215245273e-37, 3.833355972498673e-13, 3.435308959614212e-118, 0.3573618111367365], + [5.994809075494357, 1.326717689097269e-162, 1.9586479331203143e-113, 2.2299499781421085e-50, 2.9874221631776976e-108, 1.4438774465107995e-27, 3.403422817175851e-114, 0.011336026709756357, 0.0003907392685005765, 6.2054906175352815e-68, 6.861684425044885e-64, 3.498277230375199e-64, 9.140219530556801e-122, 5.081358180238303e-67, 0.8501137697409671, 1.288107140649004e-162, 1.2622453898133254e-73, 0.13815946492249442, 3.984688755076003e-69, 2.2170846513143626e-96, 1.4215124012170428e-115, 4.733979436414814e-84, 1.5524039459437454e-117, 0.12055445444710589, 6.278655775426103e-78, 1.8716693067103658e-131, 0.5162799602450173, 2.3751985152547275e-153, 1.0839505275958348e-121, 2.906600598656699e-172, 5.402009830666485e-111, 1.65490022023218e-111, 0.004178121857060729, 3.9701182208266954e-112, 1.2697697529944306e-38, 2.95078749922896e-09, 3.083210972851421e-163, 8.098896105844217e-39, 9.136973812764827e-14, 1.6462380417729013e-124, 0.3589874605203592], + [6.155642973260685, 3.2857358317184354e-167, 1.1959463437298638e-116, 1.9397858538275524e-51, 4.073205139717828e-111, 2.931246216849901e-28, 2.3965316285727507e-117, 0.011277153546961693, 0.000998501060879272, 1.7274180884731653e-69, 1.2805497071725634e-65, 1.296821725959801e-65, 6.17137606805295e-125, 1.1074730489699616e-68, 0.8503224016627098, 5.837147027126975e-167, 1.4362151665774493e-75, 0.13740194373562908, 4.865022248821358e-71, 4.154739498255796e-99, 8.618446411444035e-119, 4.013351521689035e-86, 9.98772782805379e-121, 0.11907176840747381, 7.544611332067818e-80, 8.265291009660725e-135, 0.5175335662867269, 2.3788902015848328e-157, 7.288215876832394e-125, 9.623404790457602e-177, 5.4787158365728585e-114, 2.547199595458644e-114, 0.0036537936814478077, 5.791924820975579e-115, 2.1154515141508142e-39, 1.985849613288541e-09, 1.6356503832750629e-167, 1.2940592403859574e-39, 4.529411188057033e-14, 9.655342283213725e-128, 0.35974086963881446], + [6.26968510804857, 1.813285608285251e-170, 6.370291975828755e-119, 3.3047195390693073e-52, 3.751936086046735e-113, 9.394959631971449e-29, 1.4037140446184764e-119, 0.011170745071437048, 0.0018611373892859855, 1.3391593569090673e-70, 7.586068670536985e-67, 1.2262258535673466e-66, 3.4451199608687825e-127, 7.276030455954926e-70, 0.8505883887413405, 4.7907815873414554e-170, 5.9197532868654095e-77, 0.1363797288098305, 2.1543607389555904e-72, 4.879791344104004e-101, 4.547307938549011e-121, 1.7830323932592584e-87, 4.895358615234824e-123, 0.1181311858292111, 4.0800477021584637e-81, 4.378131685722364e-137, 0.5183596350344244, 3.994797400155599e-160, 4.652698717887374e-127, 7.7008607017908344e-180, 3.8446925706443144e-116, 3.283688939863929e-116, 0.0032967585431294905, 7.227762732430743e-117, 8.693758611896473e-40, 1.598392425684242e-09, 1.7200056620327943e-170, 5.009746856126731e-40, 2.877043041523854e-14, 5.556960510228907e-130, 0.36021241899526013], + [6.369382581484031, 2.6203594239272924e-173, 6.643241530066682e-121, 6.7281535502818915e-53, 6.159474406301966e-115, 3.444881819476592e-29, 1.580790895987728e-121, 0.011010597034699157, 0.0030635071676326678, 1.4057582827333132e-71, 6.3845766420700025e-68, 1.522759172645236e-67, 3.644648517693012e-129, 6.6621858397711134e-71, 0.8509442445509673, 9.445816738548016e-173, 3.5757421726901347e-78, 0.13498165128411627, 1.4222789276207336e-73, 1.0109174609929447e-102, 4.6801015447032095e-123, 1.561210970098233e-88, 4.1760710696264826e-125, 0.11740804701747166, 4.0177355776622015e-82, 5.774023730283873e-139, 0.5190358475569697, 1.7402498546792814e-162, 6.413513470299136e-129, 1.8385714743394758e-182, 4.664927178570992e-118, 9.463740305392352e-118, 0.0029887987316503765, 2.0368751213924593e-118, 6.004865765977823e-40, 1.4152319432534724e-09, 4.884306381370916e-173, 3.179830088469173e-40, 2.02716923330042e-14, 6.944594469933315e-132, 0.3605673052796245], + [6.461644303514926, 6.2934731053854426e-176, 9.87686873443083e-123, 1.472502640873737e-53, 1.3573550450389275e-116, 1.3492980908091598e-29, 2.5069183736308787e-123, 0.010794748823785356, 0.004627644017112298, 1.7116398518343766e-72, 6.434810344049162e-69, 2.153524669157098e-68, 5.338532029275361e-131, 7.209950233628556e-72, 0.8513981267038123, 2.9115554992549935e-175, 2.611575578169492e-79, 0.13317948054094453, 1.1588456144405842e-74, 2.8223260922352484e-104, 6.838420260453436e-125, 2.2076267521379367e-89, 4.5111491182815235e-127, 0.11683298789283043, 5.985484478483938e-83, 1.3674472554386563e-140, 0.5196194227415136, 1.3279895885850348e-164, 1.398555717482222e-130, 8.440729586003961e-185, 7.266255381842056e-120, 4.6403821692775255e-119, 0.0027065508044568708, 9.84383906418028e-120, 6.5077022719411336e-40, 1.357016233712763e-09, 2.4600417946445e-175, 3.081500179170222e-40, 1.5387741409477928e-14, 1.372283351233625e-133, 0.36084103720568], + [6.5470227730015695, 2.417976107559497e-178, 2.0384629868358957e-124, 3.462065612327945e-54, 3.9357623094110187e-118, 5.6241165716607964e-30, 5.457015990105143e-125, 0.010535351613499812, 0.006472842040844744, 2.39221072534647e-73, 7.671207099899417e-70, 3.4395894117737593e-69, 1.0583311883867803e-132, 9.11389527803992e-73, 0.8519280809755121, 1.361309109880902e-177, 2.2809625644414016e-80, 0.13106372547628295, 1.1467642446473762e-75, 1.0387661509481294e-105, 1.3820909814882143e-126, 4.741519857575126e-90, 6.12589035948899e-129, 0.11638296511158794, 1.2811638863587486e-83, 5.443041555985874e-142, 0.5201198489538156, 1.6799990906814948e-166, 4.6070358025106833e-132, 6.973990968743183e-187, 1.4359361746809013e-121, 3.636292639829056e-120, 0.002450233848602368, 7.654955668395908e-121, 1.0318064480853878e-39, 1.3923219718260427e-09, 2.081280717825521e-177, 4.272000675473458e-40, 1.246176835072876e-14, 4.0973084560932115e-135, 0.3610469506949292], + [6.632187848373602, 9.608185208064936e-181, 4.308184593984641e-126, 7.874922012849016e-55, 1.1422043590680455e-119, 2.3341921039687115e-30, 1.2083783560970446e-126, 0.010225231013752799, 0.008655619799775208, 3.296517327289654e-74, 9.175467192443695e-71, 5.392102259175216e-70, 2.0956570364914372e-134, 1.1463888017378582e-73, 0.8525513698843644, 6.379140505404696e-180, 1.978895387461162e-81, 0.12856777946716905, 1.1493710433490588e-76, 3.893153268635667e-107, 2.8471869284909997e-128, 1.3069204904322206e-90, 7.619838285085968e-131, 0.11600710921785475, 3.3588505183315276e-84, 2.7125229127385434e-143, 0.5205786467248046, 2.441941439813262e-168, 1.7167035431175672e-133, 6.897640852807432e-189, 2.683841586282374e-123, 3.5740052264433484e-121, 0.0022033926898944057, 7.505314434993854e-122, 2.3164992822645948e-39, 1.5142165162118982e-09, 1.992814338453919e-179, 8.159069200820581e-40, 1.0508501507406823e-14, 1.3753530100205524e-136, 0.36121084985453344], + [6.721560816744893, 2.966315042661509e-183, 7.63741181729485e-128, 1.6114786933755669e-55, 2.7669514740901747e-121, 9.226669161802343e-31, 2.2343068310930236e-128, 0.00985608771827359, 0.01123700657793887, 4.038229040118038e-75, 9.875926818611908e-72, 7.536457106548047e-71, 3.3856966699719245e-136, 1.2885550870897508e-74, 0.8532858896994103, 2.276285792893666e-182, 1.5075870239852748e-82, 0.1256210162741867, 1.035384863980846e-77, 1.2542571244776446e-108, 4.890839034830441e-130, 4.227932609822508e-91, 6.975767340060956e-133, 0.11568042286539641, 9.881124395942747e-85, 1.420062744938019e-144, 0.521015643613382, 3.2359683623357693e-170, 6.036186334893968e-135, 6.328612955703936e-191, 3.881738210359605e-125, 3.8284420166694836e-122, 0.001958608750279762, 8.056546211204353e-123, 7.439563510519323e-39, 1.743906309352437e-09, 1.6792118495323972e-181, 2.1560849179024698e-39, 9.112603704660002e-15, 4.3090282098019015e-138, 0.3613453230284134], + [6.820591649843189, 5.0176586318070516e-186, 8.90231543241418e-130, 2.6983072661328233e-56, 4.469011631893188e-123, 3.28565942347672e-31, 2.7081119446492576e-130, 0.009411738061213091, 0.014331992287128852, 3.8579492987885144e-76, 8.364688577095503e-73, 8.310857069221327e-72, 3.47237542389243e-138, 1.1316908015483464e-75, 0.854164597860178, 4.403072393546034e-185, 8.651431119161093e-84, 0.12209167230866722, 7.243303756623395e-79, 2.8241097804422124e-110, 5.478463394528118e-132, 1.483762836198704e-91, 3.54418883168626e-135, 0.11538411372304071, 3.003327153646775e-85, 6.467619352492146e-146, 0.521447447538323, 2.9880375485169446e-172, 1.6252949972736832e-136, 4.0192406672059747e-193, 3.3642949934655556e-127, 3.866111458033111e-123, 0.0017091021215676287, 8.189133021417158e-124, 3.6187027246934667e-38, 2.1403351120289678e-09, 9.264236465746984e-184, 8.257580871011728e-39, 8.04322563912612e-15, 1.0157986605189837e-139, 0.36145933447836104], + [6.930085922414651, 4.433819922116507e-189, 6.600848338030211e-132, 3.6525769485584403e-57, 4.6663078499420916e-125, 1.0466145837502904e-31, 2.079515330647565e-132, 0.00889839881085956, 0.017900080025230237, 2.809626487195407e-77, 5.4769428724467765e-74, 7.081493480950116e-73, 2.179962519937775e-140, 7.60476673802062e-77, 0.8551762318975995, 4.4094775747401364e-188, 3.670978573899638e-85, 0.11802528998786016, 3.854270694091183e-80, 4.323369753156145e-112, 3.8679853964647157e-134, 5.49283085319682e-92, 9.648150172903646e-138, 0.1151180967547274, 9.195648323711578e-86, 2.456570417307499e-147, 0.5218642886697781, 1.8321429225856816e-174, 3.224473640038965e-138, 1.673372737489006e-195, 1.6898643409244326e-129, 3.5504281250205603e-124, 0.0014631575309839659, 7.59990872057379e-125, 2.626849381244154e-37, 2.791272383506702e-09, 3.1798285270676288e-186, 4.5178830569811137e-38, 7.196476566027177e-15, 1.7329197937830505e-141, 0.3615544542545466], + [7.05090962929825, 1.9425628390780025e-192, 3.0027474116766864e-134, 3.952496968657104e-58, 3.0478608928038946e-127, 2.9606827359979956e-32, 9.749931798375194e-135, 0.008327824587693022, 0.02186414188760019, 1.5234615050898918e-78, 2.7204355597740804e-75, 4.563773842475555e-74, 8.0608460795444835e-143, 3.8245925694749475e-78, 0.8562992388568677, 2.1769805034964045e-191, 1.1297506494322966e-86, 0.11350879548875803, 1.5250374678100966e-81, 4.367076815233434e-114, 1.6588701674564814e-136, 2.0360227060699323e-92, 1.367118253331665e-140, 0.11487950696320604, 2.7114007543114118e-86, 7.292844329534996e-149, 0.5222574819149935, 7.00285895222412e-177, 4.475891850067642e-140, 4.243796501252865e-198, 4.774017074065602e-132, 2.7969414383405396e-125, 0.0012288430827014512, 6.068447812160044e-126, 2.7145631650466486e-36, 3.835823899659349e-09, 6.3639882732072584e-189, 3.3781454391924645e-37, 6.475141183907179e-15, 2.0319134151349612e-143, 0.3616341642040709], + [7.184013081501113, 3.9810253806546297e-196, 8.048616539608302e-137, 3.3780680494573385e-59, 1.200628660300439e-129, 7.378866987893817e-33, 2.679709599360681e-137, 0.007715280057775775, 0.026123922661226234, 5.9989787044112766e-80, 1.0038157732101954e-76, 2.1747502009530733e-75, 1.683141058192132e-145, 1.4055871729669657e-79, 0.8575055257988831, 5.0180544778328775e-195, 2.4677224068367948e-88, 0.10865527227767918, 4.375781130212748e-83, 2.8149464305887985e-116, 4.147663545083352e-139, 7.0456905320443964e-93, 9.818847869479002e-144, 0.11466412235288856, 7.252571573453234e-87, 1.558269333839699e-150, 0.5226202502814022, 1.546464138681224e-179, 4.082817958434257e-142, 5.995782111966007e-201, 7.365786758442628e-135, 1.7526310788627525e-126, 0.001012771710486524, 3.860678667932803e-127, 3.723513626975954e-35, 5.4872084078471804e-09, 6.87683420170083e-192, 3.2338250688188685e-36, 5.795916985700454e-15, 1.5388189253518326e-145, 0.36170285016838316], + [7.330440285773983, 3.5768637172096484e-200, 1.2153314281840768e-139, 2.2483804217526566e-60, 2.737937000143327e-132, 1.605766381709316e-33, 4.127527399701765e-140, 0.0070774024927897855, 0.030570158294040903, 1.670371343188618e-81, 2.6878098365821036e-78, 7.47782065858778e-77, 1.8944324834469925e-148, 3.6779326383306764e-81, 0.8587644046572648, 5.08056379542173e-199, 3.731751023860157e-90, 0.10358803524141107, 8.856117301180999e-85, 1.115516832257038e-118, 5.776317460478799e-142, 2.1006247310720738e-93, 3.476448653604142e-147, 0.11446759695873697, 1.6435499137866503e-87, 2.1823811373111415e-152, 0.5229480263099461, 1.8119692373388363e-182, 2.28088364251887e-144, 4.268378543194447e-204, 6.015099831587615e-138, 8.016092556965072e-128, 0.0008194353051681764, 1.792860003825333e-128, 6.2473832349254385e-34, 8.055723680529016e-09, 3.681625624745949e-195, 3.672465369354985e-35, 5.097315714320003e-15, 7.019736879968288e-148, 0.3617649333705519], + [7.491334103505734, 1.31173603200022e-204, 9.837778900347256e-143, 1.145994152440032e-61, 3.452689665503978e-135, 3.0202304037936557e-34, 3.391267200551736e-143, 0.006430424857024769, 0.03509623432374263, 3.195927341098474e-83, 5.087384886879712e-80, 1.806726697952244e-78, 1.0919295504867397e-151, 6.660244913271899e-83, 0.86004586884508, 2.1101192381393732e-203, 3.79667284798479e-92, 0.09842747251572079, 1.2264858755181474e-86, 2.6078620691541864e-121, 4.260897417398469e-145, 4.96153345799975e-94, 5.87671749937497e-151, 0.11428620107220726, 2.937354236907835e-88, 1.814689503076438e-154, 0.5232383486941642, 1.0282715581836356e-185, 7.238224566974159e-147, 1.3754928826387831e-207, 2.5095861802080412e-141, 2.4444121140636144e-129, 0.0006511064275551261, 5.542366526347901e-130, 1.179040227191669e-32, 1.1960878520947427e-08, 8.904301803298309e-199, 4.57544098338289e-34, 4.347881983620441e-15, 1.7901665290391247e-150, 0.3618243318452237], + [7.667945804807038, 1.8149472301674258e-209, 4.042200794977344e-146, 4.3851541461146044e-63, 2.2880883607931808e-138, 4.853333347959436e-35, 1.4079030055122655e-146, 0.005788927594528233, 0.0396063267843262, 4.0733246595142346e-85, 6.611020274392922e-82, 2.9795256174793986e-80, 3.045862882558141e-155, 8.091276030229748e-85, 0.8613228963493645, 3.3314232306313287e-208, 2.515303813455926e-94, 0.09328184967304844, 1.1243050185242559e-88, 3.4363939996006045e-124, 1.5750697914733843e-148, 8.546626010612095e-95, 4.563050357038002e-155, 0.114117099807061, 3.856135773013667e-89, 8.104361569825237e-157, 0.5234905214351515, 2.5698910689040797e-189, 1.206781923888333e-149, 1.7954517707555708e-211, 5.133698714167851e-145, 4.537493910771303e-131, 0.0005081300478440984, 1.0397290651605624e-131, 2.3132081449477685e-31, 1.7713566267868243e-08, 8.830468820958317e-203, 5.809351497698343e-33, 3.5514498711584574e-15, 2.3613469208716708e-153, 0.36188423099638184], + [7.849763495818988, 1.841395063822617e-214, 1.339743989597266e-149, 1.532443220480715e-64, 1.2313573786484385e-141, 7.433549759009122e-36, 4.694631746001665e-150, 0.005201123915027207, 0.043764430861181015, 4.490779215052223e-87, 7.640308720907263e-84, 4.2880244427185756e-82, 6.698137180206481e-159, 8.580194556315413e-87, 0.862500385873487, 3.859566601271396e-213, 1.4632527505548196e-96, 0.08853405951814451, 9.016330766913613e-91, 3.786302607326731e-127, 4.667109985981778e-152, 1.1401391286819037e-95, 2.910379848360459e-159, 0.11396740707460641, 4.0476308640239785e-90, 2.5790915711924187e-159, 0.5236935730242696, 4.528401575114377e-193, 1.514974836960388e-152, 1.568256048757028e-215, 8.64105743752127e-149, 6.246204277432031e-133, 0.00039574365345818784, 1.4395784458463115e-133, 3.708858133985326e-30, 2.529190491243502e-08, 6.092036441718943e-207, 6.095734206248526e-32, 2.791465530645619e-15, 2.344401860612013e-156, 0.36194325095576213], + [8.033143608437772, 1.7192242275621954e-219, 4.195706495810629e-153, 5.231581877085116e-66, 6.2483627531142705e-145, 1.126390678256958e-36, 1.4744298179769812e-153, 0.0046767304739054735, 0.04750010921930637, 4.701964547516278e-89, 8.577306926985732e-86, 5.87895799929285e-84, 1.3748939477958104e-162, 8.709763019177499e-89, 0.8635583727283573, 4.11004556047259e-218, 8.268942107625419e-99, 0.08426478764535361, 6.9624744445364005e-93, 3.989840111253414e-130, 1.3020894938123654e-155, 1.218550600782894e-96, 1.855362708226461e-163, 0.11383575059176121, 3.535337582235273e-91, 6.525528725228512e-162, 0.5238533750356138, 6.667543738746953e-197, 1.6323556220727516e-155, 1.1005388965449843e-219, 1.4269180805952295e-152, 6.907963434306535e-135, 0.00030919265511468566, 1.5933933047297907e-135, 4.55479489416527e-29, 3.451545370949733e-08, 3.5322354852387623e-211, 5.000242431852036e-31, 2.1192736257926316e-15, 2.006522707834943e-159, 0.36200164720205835], + [8.223630020089393, 1.0383023630861427e-224, 9.711366106594976e-157, 1.5749556898425767e-67, 2.3740316936722582e-148, 1.594385838880932e-37, 3.414874825537115e-157, 0.004196826470365701, 0.050945764562852866, 4.0824603866643837e-91, 8.15915716590109e-88, 6.757222667716613e-86, 2.0377535792536737e-166, 7.372765789378796e-91, 0.8645343220487268, 2.8399242020634378e-223, 3.874636263590323e-101, 0.08032308695424763, 4.466793597040654e-95, 3.2629964421343826e-133, 2.6670337740883564e-159, 9.75749006457376e-98, 8.82606134903289e-168, 0.1137153723652263, 2.3878440080866825e-92, 1.0961361968531985e-164, 0.52398221342782, 6.284154995998069e-201, 1.2281992641443504e-158, 4.648532402607259e-224, 1.776336230624636e-156, 5.358895316156796e-137, 0.00024053595337947321, 1.23104228164642e-137, 4.625554839212239e-28, 4.54497329233152e-08, 1.2819210436780802e-215, 3.419396256025246e-30, 1.5412752345075922e-15, 1.1960438023590465e-162, 0.36206183280384346], + [8.424083095549243, 3.382664326181137e-230, 1.4639200402466897e-160, 3.9661827702209293e-69, 5.9957604078852206e-152, 2.047070524959912e-38, 5.1424195928374715e-161, 0.0037540987525051814, 0.05415262829730806, 2.740226975116357e-93, 6.130470788812832e-90, 6.094095906841554e-88, 1.9104469340169233e-170, 4.846471832725539e-93, 0.865442713948854, 1.0639337228722713e-228, 1.3877476890319007e-103, 0.07665055902284414, 2.2064774899411935e-97, 1.860244658884213e-136, 3.528161556995955e-163, 5.600151838418671e-99, 2.7051140018869996e-172, 0.11360340837954408, 1.1915180557680652e-93, 1.1043239073010687e-167, 0.5240859619113235, 3.2877724864008284e-205, 5.77535237614953e-162, 1.0115201122520086e-228, 1.4590555609858303e-160, 2.695369981184581e-139, 0.00018565420107790795, 6.135177223502043e-140, 3.985516274861533e-27, 5.78982338594977e-08, 2.490440941763046e-220, 1.989773700514799e-29, 1.0675390401609229e-15, 4.4289336904069275e-166, 0.36212491760982274], + [8.637043345564827, 5.06223061085229e-236, 1.2850557680571657e-164, 7.973087836599594e-71, 9.056935480226897e-156, 2.3229368271245402e-39, 4.503817381332492e-165, 0.0033439687075979625, 0.05715299533642951, 1.3354159800410081e-95, 3.4193770800301265e-92, 4.064302809387099e-90, 1.0074505191151602e-174, 2.321843081295571e-95, 0.8662926657713741, 1.8431278094089238e-234, 3.5358597069968487e-106, 0.07321037273199953, 7.845185001071965e-100, 6.723934866507581e-140, 2.6909906945664368e-167, 2.2016954523143418e-100, 4.699827402775494e-177, 0.11349814079343463, 4.197891151718961e-95, 6.06535247365827e-171, 0.524168381530659, 8.387567273822845e-210, 1.5336944202349593e-165, 9.835935322121811e-234, 7.0362474647123405e-165, 8.153222643523879e-142, 0.00014173687185425825, 1.828924457332705e-142, 2.955786475629599e-26, 7.141833511406328e-08, 2.2481015802070118e-225, 9.956272311270264e-29, 6.999079532684012e-16, 9.180940302455643e-170, 0.36219166938588004], + [8.864993256099611, 2.9755215312758554e-242, 5.890599961033551e-169, 1.2223910654195993e-72, 7.381408126036647e-160, 2.2717297302740153e-40, 2.0578491415643733e-169, 0.002963411920794437, 0.05996837384010081, 4.442454865470319e-98, 1.332847871193535e-94, 1.8910157008800446e-92, 2.664550091578627e-179, 7.618407037115959e-98, 0.8670902432660543, 1.2642410047207688e-240, 5.976790364401998e-109, 0.06997797278127534, 1.8799752017039865e-102, 1.4050673236055386e-143, 1.0594324396792403e-171, 5.6471010600288194e-102, 4.091820818983307e-182, 0.11339849707819145, 9.953718758142791e-97, 1.6478090209640614e-174, 0.5242320234462604, 9.171294014288161e-215, 2.0789025556455596e-169, 3.7081293977914883e-239, 1.7796234491750576e-169, 1.3726387703534092e-144, 0.0001067269703304835, 3.0167677211624737e-145, 1.9012468700013254e-25, 8.528761342990185e-08, 8.194627259511903e-231, 4.302390451004427e-28, 4.3146206565606217e-16, 9.604547917880438e-174, 0.3622626672177791], + [9.11046822745548, 5.856053895805542e-249, 1.2618208727783274e-173, 1.3643102782316404e-74, 2.921764713721175e-164, 1.8661851305499112e-41, 4.3908139971949635e-174, 0.0026104148959479557, 0.06261321547475315, 9.469604742039598e-101, 3.4142484712167533e-97, 5.782034410595616e-95, 3.144197231896926e-184, 1.6066242956084687e-100, 0.8678395106637965, 2.930927685759916e-247, 6.242992199181606e-112, 0.06693686026225718, 2.8393451720147664e-105, 1.5452048196456388e-147, 1.9233029578483854e-176, 8.958956947397443e-104, 1.576231685664798e-187, 0.1133038140328124, 1.5083162207323356e-98, 1.9988601049649867e-178, 0.5242786856829249, 3.7609249483761756e-220, 1.2951131018123568e-173, 4.677023374655658e-245, 2.105694777358667e-174, 1.1846361090051157e-147, 7.904079015052257e-05, 2.5346872966138853e-148, 1.0636846594524974e-24, 9.8504629136842e-08, 1.0434962189632233e-236, 1.6054426897181415e-27, 2.4824283764972038e-16, 4.554253932185972e-178, 0.36233836098964567], + [9.376185206204777, 3.253077350805999e-256, 1.1215900115953092e-178, 1.0546437430104699e-76, 5.018687429914582e-169, 1.2529513197544602e-42, 3.885723476270552e-179, 0.002283574642293129, 0.06509766904483168, 1.2084110727204297e-103, 5.381979971696319e-100, 1.0895418959057935e-97, 1.4602882683143012e-189, 2.0340871644738734e-103, 0.8685433144793225, 1.9386964109162422e-254, 3.735271302233152e-115, 0.06407544275779736, 2.515439141443495e-108, 8.088342427708771e-152, 1.4269520819929362e-181, 8.282919911392319e-106, 2.353322555546536e-193, 0.1132136835163409, 1.3791652340511501e-100, 9.680433733898904e-183, 0.5243096908991476, 5.0065290706309256e-226, 3.310122213568174e-178, 1.6824086240976085e-251, 1.031909349918155e-179, 4.7884595284235634e-151, 5.740187724886068e-05, 9.904996122365196e-152, 5.173718566754157e-24, 1.098503306509611e-07, 3.9700358617282127e-243, 5.155995396750892e-27, 1.321999479701745e-16, 8.714717135390615e-183, 0.36241911385707165], + [9.665132045490724, 4.228079896629592e-264, 3.6306489426986887e-184, 5.345967966967533e-79, 3.3053463153551685e-174, 6.671732228622443e-44, 1.2519924615334524e-184, 0.001981885768263265, 0.0674290382881413, 8.565100266460033e-107, 4.857064317674473e-103, 1.178803521046979e-100, 2.3257131024284e-195, 1.4342978010072597e-106, 0.8692036950513763, 3.037411054553393e-262, 1.1778773615876158e-118, 0.06138538153329261, 1.2079840038254318e-111, 1.8047139100242202e-156, 3.789260089025778e-187, 4.1722973248282744e-108, 1.178069170639581e-199, 0.1131278664487951, 7.133585328903069e-103, 1.6524391928741178e-187, 0.5243260480539939, 1.8442218670183447e-232, 3.0608831878586535e-183, 1.446344805002772e-258, 1.832748034963204e-185, 8.195295005855868e-155, 4.074761935894156e-05, 1.6262668929173714e-155, 2.1811595081964306e-23, 1.1801674405864569e-07, 3.7967689669726655e-250, 1.416655538401286e-26, 6.455200975700356e-17, 5.91780054052233e-188, 0.3625052198612216], + [9.980655824144447, 1.0421461819659631e-272, 3.698250263115357e-190, 1.6713941927644763e-81, 7.266603350307436e-180, 2.724345972152601e-45, 1.2693219713625786e-190, 0.0017045997237669125, 0.06961273749388225, 3.1001471873900764e-110, 2.3147814045167754e-106, 6.763730050166884e-104, 1.0884915208202178e-201, 5.178411737285116e-110, 0.8698221571815726, 9.1512836655567e-271, 1.7835456791972664e-122, 0.05886050601901429, 2.8785632710197874e-115, 1.5171100812334362e-161, 3.10449645056967e-193, 1.0605298952375044e-110, 1.6819825659110038e-206, 0.11304623573746425, 1.9394970303665105e-105, 8.6367350300869e-193, 0.5243285573491159, 1.5709088758802645e-239, 8.889774834054083e-189, 2.4356084248936295e-266, 1.016251391377439e-191, 5.297766033370943e-159, 2.8172798730775832e-05, 9.999329466584781e-160, 7.928306020794616e-23, 1.218022386542272e-07, 7.517105825231875e-258, 3.3021680617389657e-26, 2.859120887503003e-17, 1.2341129036960322e-193, 0.3625969123125386], + [10.326556209249826, 3.838318384507711e-282, 1.0043268715963725e-196, 3.0067171824904595e-84, 4.5564254370261455e-186, 8.21182951079053e-47, 3.431432013545484e-197, 0.0014511286660703, 0.07165293717557332, 5.20816701295231e-114, 5.315617232169375e-110, 1.8805856518767885e-107, 1.2564728304480886e-208, 8.700837737571421e-114, 0.8703998531137552, 4.185531623414201e-280, 1.1668448657394972e-126, 0.05649608128279503, 3.078884610047875e-119, 4.176960604949715e-167, 6.63035660285089e-200, 1.2456605362017881e-113, 5.702069801681813e-214, 0.11296873605914078, 2.5482354446198696e-108, 1.1771009678543778e-198, 0.5243178817646178, 2.5224427709603356e-247, 6.903234187417901e-195, 6.406118299964924e-275, 1.4856351268900411e-198, 1.135292086928937e-163, 1.8895599759880416e-05, 2.018790888894957e-164, 2.466603696345505e-22, 1.2034952752862754e-07, 2.470706596479698e-266, 6.460031418598755e-26, 1.134543442759086e-17, 6.704778084650138e-200, 0.36269436622702006], + [10.706144254622878, 1.716481556920426e-292, 6.294151806040018e-204, 2.9294676674854707e-87, 7.104732079125377e-193, 1.7675802270488137e-48, 2.141524374419159e-204, 0.001221548219795913, 0.07354823149597887, 3.7365048841786217e-118, 5.431053372523586e-114, 2.341884818452103e-111, 3.0709073973204073e-216, 6.259998834457164e-118, 0.8709363566531149, 2.3649984715030312e-290, 3.008703534686638e-131, 0.054293863719668004, 1.3544751102231305e-123, 3.334400720403596e-173, 3.18756821121997e-207, 6.2384507649655274e-117, 3.9182867693205406e-222, 0.11289554025611559, 1.4991017267219824e-111, 3.6250077340844657e-205, 0.5242946755394914, 6.377823194777527e-256, 1.24350750667052e-201, 2.1549685966267968e-284, 4.9464913309880625e-206, 7.174339515007005e-169, 1.2252152013012886e-05, 1.1893650865746326e-169, 6.491849654700824e-22, 1.1340354546891452e-07, 1.1103271825943549e-275, 1.0456311542748242e-25, 3.987762704473584e-18, 8.208797175340774e-207, 0.3627974186488816], + [11.122784544628297, 7.548124958380383e-304, 7.8613560390738e-212, 1.4536946551531839e-90, 2.3966110485923764e-200, 2.6270109053865453e-50, 2.66515816419184e-212, 0.0010158157796619962, 0.07529749997059276, 1.051851118250702e-122, 2.2768321828150716e-118, 1.2057145621249685e-115, 1.3609001841844337e-224, 1.7721055744842446e-122, 0.8714313249458018, 1.3390968885082187e-301, 2.78514535167832e-136, 0.052255359273699814, 2.242619457546848e-128, 6.819109559190015e-180, 2.971707328980985e-215, 1.2273344762098342e-120, 4.647662596629918e-231, 0.11282682320845637, 3.6536015869722303e-115, 2.1803914570585225e-212, 0.5242596868934496, 2.114654985404802e-265, 4.497305333494628e-209, 7.566292182891089e-295, 3.2330956303587953e-214, 1.1868063399796485e-174, 7.653877256286103e-06, 1.8133722128667223e-175, 1.4278745786215453e-21, 1.0150016688606529e-07, 5.600929558337935e-286, 1.3797831639466206e-25, 1.22719876263178e-18, 1.9543862549118153e-214, 0.36290573452070396], + [11.580186699124194, 2.58679225e-316, 1.6646885524394808e-220, 3.43341666359304e-94, 1.4999950307846816e-208, 2.597534941048922e-52, 5.627846868205731e-221, 0.000833550832585481, 0.07690167337934166, 1.0582911242250056e-127, 3.581842474405066e-123, 2.3497115808984622e-120, 9.216762619070705e-234, 1.7980100147998592e-127, 0.8718849995388772, 6.032310437e-314, 8.350828082370077e-142, 0.05037977613098401, 1.2671749629557298e-133, 3.1167176187387956e-187, 4.558058250134882e-224, 8.676799401898535e-125, 7.966995240025609e-241, 0.1127626820832433, 3.389562439625103e-119, 2.18361290747636e-220, 0.5242137554562795, 7.519482767201618e-276, 2.786499333744486e-217, 2.2180718604268502e-306, 3.520237739106704e-223, 4.5117336890515535e-181, 4.588766840715579e-06, 6.274788665840596e-182, 2.594146612424888e-21, 8.593694399280664e-08, 2.5528477425032116e-297, 1.462718163008953e-25, 3.265167536512202e-19, 7.695154289190712e-223, 0.36301888775671665], + [12.082439375472505, 0.0, 5.000789539424791e-230, 3.5820974300452966e-98, 1.4708016333625393e-217, 1.640186017371396e-54, 1.6875643525713622e-230, 0.0006740650636809999, 0.0783635568717683, 3.4333945347376525e-133, 1.9162289001335368e-128, 1.5727288587861614e-125, 7.900862486708436e-244, 5.899660489921479e-133, 0.8722981569962639, 0.0, 7.240584182696106e-148, 0.04866422089133219, 2.193590947523317e-139, 2.7387824161250267e-195, 9.595898141538558e-234, 2.0003478310129375e-129, 1.6219618179048831e-251, 0.11270313294804203, 1.0913690641549386e-123, 3.0568104166691547e-229, 0.5241578020266837, 2.2988632305696128e-287, 2.484569177826429e-226, 4.24817e-319, 5.326398451442463e-233, 3.4180163764943203e-188, 2.6290574537203576e-06, 4.268441528343584e-189, 3.849403776010458e-21, 6.85354498516877e-08, 8.28159792629753e-310, 1.2275734868967743e-25, 7.408802703014589e-20, 4.1933949558232034e-232, 0.3631363674323906], + [12.634047785238693, 0.0, 1.751116381958794e-240, 1.5205728689121358e-102, 1.8752662353557807e-227, 6.321930748735334e-57, 5.905495985425435e-241, 0.0005363917499486804, 0.07968766276474137, 3.2066836704713563e-139, 3.127673681858737e-134, 3.248239567483162e-131, 6.964957244571988e-255, 5.589719994991375e-139, 0.872672062080413, 0.0, 1.6021961297004383e-154, 0.047103883195604365, 1.03294169054501e-145, 3.919750625783933e-204, 2.2709429466271327e-244, 1.3527105057391827e-134, 3.157670888274636e-263, 0.11264811194092231, 1.1024557939770373e-128, 4.937594665918646e-239, 0.5240928182871144, 4.7387805871404166e-300, 2.6321593707013943e-236, 0.0, 9.169239024030833e-244, 4.414459973671826e-196, 1.4326391411097635e-06, 4.8773215715339236e-197, 4.614829267422647e-21, 5.1255746594910716e-08, 1.5e-323, 8.036033843417755e-26, 1.412397195642265e-20, 2.6004169303746044e-242, 0.36325758587709467], + [13.239975124250122, 0.0, 5.75682705753446e-252, 2.398953621402492e-107, 2.5321510456376505e-238, 1.4152044830080993e-59, 1.942775238336021e-252, 0.000419314769767226, 0.08088005012146848, 7.609147257924752e-146, 1.3819475856633143e-140, 1.8397700182653746e-137, 5.0226819273645434e-267, 1.3498172387455801e-145, 0.8730084226696546, 0.0, 7.884562806130661e-162, 0.04569221222001476, 1.1606626308864107e-152, 7.610363172230647e-214, 4.848464480460651e-256, 2.3902051496591955e-140, 4.628269872727321e-276, 0.11259748107731984, 3.1287674013993053e-134, 7.456704245801555e-250, 0.5240198558083813, 5.0419874924e-314, 2.683954902010159e-247, 0.0, 1.4402797907084296e-255, 8.191592317874957e-205, 7.386324509551075e-07, 7.879261464386877e-206, 4.422909615180343e-21, 3.578012162538992e-08, 0.0, 4.042467714484845e-26, 2.225660111653009e-21, 1.4797557639624354e-253, 0.3633818887017469], + [13.9056883116412, 0.0, 1.3999631546268488e-264, 1.2731733080299433e-112, 2.88860003778452e-250, 1.7417408855744584e-62, 4.734741378188885e-265, 0.00032139831578844767, 0.08194816295057689, 3.9974614397172864e-153, 1.448889373225306e-147, 2.509434847891537e-144, 2.3027973324278095e-280, 7.240590865625913e-153, 0.8733093441052724, 0.0, 7.415053866210458e-170, 0.04442109441731857, 2.6938679237536466e-160, 1.6387925044168762e-224, 7.328923479944106e-269, 9.725961696296083e-147, 3.922981705089623e-290, 0.11255103827221884, 2.210908581810153e-140, 8.358370370551113e-262, 0.5239400134741098, 0.0, 2.0897872711300542e-259, 0.0, 1.61845370922845e-268, 1.8106224011224377e-214, 3.5822332210841743e-07, 1.4898838896533796e-215, 3.3547643999137493e-21, 2.3200435157484103e-08, 0.0, 1.539218973676748e-26, 2.8479748975842073e-22, 6.099039074678629e-266, 0.3635085668299368], + [14.637208420829797, 0.0, 1.9368028865936194e-278, 2.0367077050680167e-118, 2.1706181415133628e-263, 1.1094244632331156e-65, 6.57512898753837e-279, 0.00024101902347072903, 0.08290065458087574, 3.995379816941358e-161, 3.117559342231619e-155, 7.144135023142823e-152, 5.085117148521866e-295, 7.415270048864106e-161, 0.8735772794572371, 0.0, 1.1277253803254366e-178, 0.04328104674811686, 1.1016904074606245e-168, 3.1351008907623694e-236, 6.006216139170394e-283, 7.938621550927625e-154, 1.4373863807181233e-305, 0.11250853069049271, 3.408654039263884e-147, 5.39826554406797e-275, 0.5238544224320579, 0.0, 9.633492592483557e-273, 0.0, 9.948973104484577e-283, 3.88156581693407e-225, 1.6237693923730212e-07, 2.6808419877900235e-226, 1.9946076517231578e-21, 1.3902293246553121e-08, 0.0, 4.3691262295397535e-27, 2.9024490762871057e-23, 1.403793823910733e-279, 0.36363687059824135], + [15.441166164380931, 0.0, 1.1415774690926991e-293, 8.702520944227749e-125, 8.169220827970699e-278, 3.421739324423181e-69, 3.896840105012227e-294, 0.0001764025789453318, 0.08374718337994375, 6.429007674005574e-170, 1.1732633109755552e-163, 3.626308955012738e-160, 3.9835888774e-311, 1.227199000892405e-169, 0.8738149715231682, 0.0, 2.3076716529231617e-188, 0.04226144235587727, 6.664008247251586e-178, 4.1730028972756423e-249, 1.9889830117456355e-298, 1.1177445832896357e-161, 1.63e-322, 0.11246967020263564, 9.92263078663906e-155, 1.5214471765733199e-289, 0.5237642279463707, 0.0, 1.9876999591115043e-287, 0.0, 2.4890497528802564e-298, 6.442560088497393e-237, 6.83055040735726e-08, 3.6582862780888406e-238, 9.213257485037191e-22, 7.65748021804987e-09, 0.0, 9.105284473571666e-28, 2.3064610881852886e-24, 1.3556265347530742e-294, 0.3637660258880346], + [16.324862773383725, 0.0, 2.08490210832474e-310, 8.694128270728026e-132, 1.1388394347455883e-293, 4.748770442803456e-73, 7.1692802818524e-311, 0.00012566676228196877, 0.08449816570676072, 1.3857731735316947e-179, 6.476030535805035e-173, 2.7592269312742916e-169, 0.0, 2.7314622464265216e-179, 0.8740253825763233, 0.0, 5.188862592056576e-199, 0.041350784823543214, 4.916921943386062e-188, 2.952747855926113e-263, 1.92557842e-315, 2.3017866169874064e-170, 0.0, 0.11243414957049692, 4.6555593625127795e-163, 1.37935238746756e-305, 0.5236705681092734, 0.0, 1.349837259448492e-303, 0.0, 1.829337915e-315, 6.466723514904926e-250, 2.6456891609751303e-08, 2.9518579745078693e-251, 3.279162156967752e-22, 3.855231556509038e-09, 0.0, 1.3719542577105436e-28, 1.3964728848475482e-25, 4.0110302104106e-311, 0.36389525200813116], + [17.2963366059509, 0.0, 0.0, 1.7539640519449082e-139, 4.2188523120037e-311, 2.7354353739603236e-77, 0.0, 8.687213046888909e-05, 0.08516447700910446, 3.2680416468725274e-190, 4.318736100590329e-183, 2.600038688139204e-179, 0.0, 6.67994123770017e-190, 0.8742116092955818, 0.0, 1.0257886777645904e-210, 0.04053704146363581, 3.5790585501293453e-199, 8.258153213809838e-279, 0.0, 5.787481059350873e-180, 0.0, 0.11240165801673616, 2.960255533740328e-172, 3e-323, 0.5235745501818247, 0.0, 2.154e-321, 0.0, 0.0, 2.993467340764668e-264, 9.354230333617343e-09, 1.0719354948881098e-265, 8.925894122859302e-23, 1.7636068527450753e-09, 0.0, 1.4717005080530947e-29, 6.2811196190135596e-27, 0.0, 0.36402378068362456], + [18.364435851248377, 0.0, 0.0, 6.080800445713229e-148, 0.0, 5.983705822834888e-82, 0.0, 5.808005434651598e-05, 0.08575710187777126, 6.747664705222479e-202, 2.810950229868758e-194, 2.4589344594258704e-190, 0.0, 1.4368301411611025e-201, 0.8743767831125292, 0.0, 1.3948634737270279e-223, 0.039808034880327435, 2.034756344998179e-211, 6.587884984573412e-296, 0.0, 1.457779995187071e-190, 0.0, 0.11237189499934647, 2.109345742520157e-182, 0.0, 0.5234772261714246, 0.0, 0.0, 0.0, 0.0, 4.745886204432174e-280, 2.9902530439864183e-09, 1.2982645862302969e-281, 1.8452965869510684e-23, 7.28445257781548e-10, 0.0, 1.1062807350138391e-30, 2.041412537981757e-28, 0.0, 0.36415087511055044], + [19.538897789045812, 0.0, 0.0, 3.0334241249667116e-157, 0.0, 4.507332962285218e-87, 0.0, 3.741570646532653e-05, 0.08628674789115284, 9.545153520444537e-215, 1.4118881714714505e-206, 1.8518870255551018e-202, 0.0, 2.1278361360482817e-214, 0.8745239601856414, 0.0, 9.958265727825014e-238, 0.039151876162897135, 6.986860582339497e-225, 1.046913901e-314, 0.0, 2.9606254009330227e-202, 0.0, 0.11234458126411931, 1.367096998087485e-193, 0.0, 0.5233795698663362, 0.0, 0.0, 0.0, 0.0, 1.8584795720632177e-297, 8.551817208992186e-10, 3.773247420380081e-299, 2.8778868591490564e-24, 2.698247837840887e-10, 0.0, 5.731547077597715e-32, 4.650712954017766e-30, 0.0, 0.3642758477445547], + [20.83043523533642, 0.0, 0.0, 1.791004825706457e-167, 0.0, 1.0498543335437156e-92, 0.0, 2.313125845846292e-05, 0.0867634535487084, 7.063030293733439e-229, 4.226573256076022e-220, 8.610573672050193e-216, 0.0, 1.6571311109609763e-228, 0.874656009601209, 0.0, 2.7730511213053324e-253, 0.03855740555378116, 1.092078903885447e-239, 0.0, 0.0, 3.81863320747654e-215, 0.0, 0.11231946654719795, 6.406790320735776e-206, 0.0, 0.523282457716473, 0.0, 0.0, 0.0, 0.0, 1.2548451e-316, 2.1628110159166814e-10, 1.832356e-318, 3.361720020972386e-25, 8.896638129995501e-11, 0.0, 2.0100908253200914e-33, 7.182910977622652e-32, 0.0, 0.36439807543109504], + [22.250831046105432, 0.0, 0.0, 1.0095698216558212e-178, 0.0, 6.717266947612064e-99, 0.0, 1.3662677040859493e-05, 0.08719623298643973, 2.0317930551181474e-244, 5.675611922665612e-235, 1.8680723552100205e-230, 0.0, 5.0460984730055736e-244, 0.8747755119239862, 0.0, 2.1722994728484794e-270, 0.03801459238609419, 5.692998610941721e-256, 0.0, 0.0, 2.4049042099579194e-229, 0.0, 0.11229633363851894, 1.686352961524033e-219, 0.0, 0.5231866555741823, 0.0, 0.0, 0.0, 0.0, 0.0, 4.7758241681481644e-11, 0.0, 2.9166356825448433e-26, 2.589638152693378e-11, 0.0, 4.6761306140255793e-35, 7.249318975273584e-34, 0.0, 0.3645170107136547], + [23.813041828556695, 0.0, 0.0, 4.2898654994365214e-191, 0.0, 1.0365642398274493e-105, 0.0, 7.672905518199232e-06, 0.08759280428787407, 1.639455233339861e-261, 2.5014559855986447e-251, 1.3898352915994634e-246, 0.0, 4.33714186486959e-261, 0.8748846813990482, 0.0, 3.342048258435965e-289, 0.0375148413888792, 7.030808769420765e-274, 0.0, 0.0, 5.5334748109426885e-245, 0.0, 0.11227499889629375, 1.8868473390333456e-234, 0.0, 0.5230928124506692, 0.0, 0.0, 0.0, 0.0, 0.0, 9.079601300109524e-12, 0.0, 1.8596713262237137e-27, 6.592891415767367e-12, 0.0, 7.047848880270821e-37, 4.5906652916712947e-36, 0.0, 0.36463218863737284], + [25.531312261582805, 0.0, 0.0, 1.0597763721516097e-204, 0.0, 3.343660273245835e-113, 0.0, 4.075459418835369e-06, 0.08795944030080369, 2.591795466970957e-280, 2.5667296905551437e-269, 2.52750756841381e-264, 0.0, 7.353514133149284e-280, 0.8749853228740058, 0.0, 6.8027732254883e-310, 0.03705116135219704, 1.4123696020732895e-293, 0.0, 0.0, 3.376599708911076e-262, 0.0, 0.11225530970165051, 6.598814866228131e-251, 0.0, 0.5230014613163863, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4635442472027473e-12, 0.0, 8.594890732775842e-29, 1.4525625881845767e-12, 0.0, 6.693143592850862e-39, 1.7439909510518834e-38, 0.0, 0.36474322897905376], + [27.42130158966659, 0.0, 0.0, 1.1440555543772025e-219, 0.0, 1.9266337272126068e-121, 0.0, 2.0355501227760717e-06, 0.08830096095646443, 5.410604764906479e-301, 4.203731954215808e-289, 7.743065955662113e-284, 0.0, 1.658698595631417e-300, 0.875078828868927, 0.0, 0.0, 0.03661817461420939, 3.052545507e-315, 0.0, 0.0, 3.835017568961711e-281, 0.0, 0.11223713969821664, 5.136490399034892e-269, 0.0, 0.5229130258764424, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9667873439428466e-13, 0.0, 2.8283760312247385e-30, 2.736282732856908e-13, 0.0, 3.8746061344416905e-41, 3.7821857278051156e-41, 0.0, 0.3648498344248759], + [29.500223887311947, 0.0, 0.0, 3.94307329039144e-236, 0.0, 1.6683657123064622e-130, 0.0, 9.500354882835427e-07, 0.08862085901140036, 1e-323, 7.2570323942695e-311, 2.65392877234988e-305, 0.0, 3.5e-323, 0.875166214543434, 0.0, 0.0, 0.036211976401529115, 0.0, 0.0, 0.0, 5.481486077442173e-302, 0.0, 0.11222038288302474, 6.1162574134034195e-289, 0.0, 0.5228278314721164, 0.0, 0.0, 0.0, 0.0, 0.0, 2.163276533257372e-14, 0.0, 6.478767557436824e-32, 4.3467046451781384e-14, 0.0, 1.314747153839488e-43, 4.4322401485695896e-44, 0.0, 0.36495178564479774], + [31.78700360663662, 0.0, 0.0, 3.0727805015943806e-254, 0.0, 1.7956368872012597e-140, 0.0, 4.1148815661556735e-07, 0.08892152530750533, 0.0, 0.0, 0.0, 0.0, 0.0, 0.8752481809821754, 0.0, 0.0, 0.03582988221541619, 0.0, 0.0, 0.0, 0.0, 0.0, 0.11220494762842069, 7.364767810181e-311, 0.0, 0.5227461179757275, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9084846150320894e-15, 0.0, 1.0046276967174133e-33, 5.732286541179739e-15, 0.0, 2.4980093382733432e-46, 2.6413276711284766e-47, 0.0, 0.36504893439584757], + [34.302447785626335, 0.0, 0.0, 3.705002686496733e-274, 0.0, 1.9494165278640336e-151, 0.0, 1.6415488469207455e-07, 0.08920452362042755, 0.0, 0.0, 0.0, 0.0, 0.0, 0.875325192665815, 0.0, 0.0, 0.035470119553095314, 0.0, 0.0, 0.0, 0.0, 0.0, 0.11219075150850476, 0.0, 0.0, 0.5226680527709773, 0.0, 0.0, 0.0, 0.0, 0.0, 1.3208517650282136e-16, 0.0, 1.020054109452067e-35, 6.165834079183053e-16, 0.0, 2.5209954601112173e-49, 7.485564594109047e-51, 0.0, 0.36514119572052] + ] +} diff --git a/tests/test_games/golden_logit/strategy_stripped_down_poker.json b/tests/test_games/golden_logit/strategy_stripped_down_poker.json new file mode 100644 index 000000000..070722e6f --- /dev/null +++ b/tests/test_games/golden_logit/strategy_stripped_down_poker.json @@ -0,0 +1,94 @@ +{ + "counts": [{"predictor_attempts": 88, "accepted_steps": 88, "rejected_distance": 0, "rejected_contraction": 0, "rejected_orientation": 0, "corrector_iterations": 166, "function_evals": 166, "jacobian_evals": 89, "factorizations": 89}], + "points": [ + [0.0, 0.25, 0.25, 0.25, 0.25, 0.5, 0.5], + [0.018087976862970135, 0.2533925828167469, 0.2522647687670298, 0.24772261312204105, 0.2466200352943636, 0.5022557549121545, 0.49774424508784587], + [0.03797854467648787, 0.25712484324651924, 0.25476363521308726, 0.2451815263368543, 0.24292999520386047, 0.5047235863731024, 0.49527641362689756], + [0.05984835415306386, 0.2612286341819681, 0.2575206936287126, 0.2423452890549072, 0.23890538313497972, 0.5074204448902886, 0.4925795551097102], + [0.08389021016875955, 0.2657378269459285, 0.26056224437437847, 0.2391791233397694, 0.23452080534092531, 0.5103636834103995, 0.4896363165895956], + [0.11031413866801981, 0.27068804470331415, 0.2639168424072516, 0.23564485877388222, 0.22975025411731567, 0.5135707357804142, 0.48642926421957156], + [0.1393483837408348, 0.2761162115362758, 0.2676152692611734, 0.23170101312059405, 0.22456750608505321, 0.5170586798180851, 0.48294132018187796], + [0.17124028270067052, 0.28205985693227537, 0.2716903908374808, 0.22730308795092216, 0.21894666428473866, 0.5208436650039624, 0.4791563349959493], + [0.20625695624382667, 0.28855610433288603, 0.2761768518750391, 0.2224041666475925, 0.2128628771539159, 0.5249401886690576, 0.4750598113307422], + [0.24468574355611247, 0.29564026383744924, 0.2811105457046981, 0.2169559197326645, 0.20629327074152232, 0.5293602137568529, 0.47063978624271247], + [0.28683431234718954, 0.3033439466479479, 0.28652778680257607, 0.21091013513695026, 0.19921813144060443, 0.5341121379650331, 0.46588786203406063], + [0.33303038742053526, 0.31169262756716254, 0.29246410741403517, 0.20422089211208436, 0.19162237295455087, 0.539199650411272, 0.46080034958690974], + [0.3836210765601345, 0.3207026084692637, 0.29895260398246654, 0.19684747753132273, 0.18349731009752304, 0.5446205489193842, 0.45537945107710925], + [0.43897183805523465, 0.33037738730972077, 0.30602178241613126, 0.18875809097236013, 0.1748427394356608, 0.5503656369586043, 0.44963436303491083], + [0.4994652370084442, 0.3407035193856063, 0.31369290283430135, 0.17993428958094734, 0.16566928841786352, 0.5564178679346478, 0.4435821320538865], + [0.5654997779776001, 0.3516461702783802, 0.32197691242446386, 0.17037598043322896, 0.156000937214116, 0.5627519432557438, 0.4372480567249422], + [0.6374892670095844, 0.3631446934144013, 0.3308711810407566, 0.16010658509313264, 0.14587754099910624, 0.5693345801097943, 0.43066541985931195], + [0.7158633163483016, 0.375108696515829, 0.34035640658854815, 0.14917780634829597, 0.13535709137931368, 0.5761256226669035, 0.42387437728629146], + [0.8010697122592364, 0.3874151556542515, 0.35039420542170746, 0.13767327039066754, 0.12451736975772197, 0.5830800589587605, 0.41691994097415236], + [0.8935793665048571, 0.3999071558420333, 0.3609259970996992, 0.12571026105217792, 0.11345658774318898, 0.5901508246358557, 0.4098491752730923], + [0.9938944275531456, 0.41239475975001944, 0.37187377439333885, 0.11343885816556583, 0.10229261005758351, 0.5972920518870369, 0.40270794799556614], + [1.1025598438893673, 0.4246583385089608, 0.38314317296118344, 0.10103805322696571, 0.0911604383870675, 0.6044622143593379, 0.39553778549609014], + [1.2201783097049845, 0.43645448273665016, 0.39462891408845846, 0.08870879940423919, 0.08020780760340708, 0.6116264999945104, 0.3883734998343368], + [1.34742818304833, 0.44752440708519753, 0.4062222367371342, 0.07666436993720308, 0.06958899076984851, 0.6187577752544965, 0.381242224549613], + [1.485083743575024, 0.45760460885090737, 0.4178194602877135, 0.06511875152580822, 0.05945718441395231, 0.6258357098751277, 0.3741642899075129], + [1.6340370923999623, 0.4664394323918464, 0.42933044874063775, 0.054274028432105915, 0.04995609582627025, 0.6328439836164127, 0.36715601615012466], + [1.7953210549613154, 0.4737950665161269, 0.44068559067839785, 0.044307821007883434, 0.041211527203327714, 0.6397659243439264, 0.3602340754148935], + [1.9701325396094762, 0.4794742864176149, 0.45184003400958933, 0.03536187399467355, 0.03332381068393642, 0.6465793357873841, 0.3534206639758589], + [2.1598558396880017, 0.4833309130956375, 0.46277432561906184, 0.027532884613732406, 0.026361881196178053, 0.6532515673068674, 0.3467484324767046], + [2.366085308715996, 0.4852825603656303, 0.473491239592176, 0.020866608711824268, 0.020359595073028147, 0.6597359759962103, 0.3402640238258429], + [2.590646728987425, 0.4853199271542029, 0.48400930594267233, 0.015356119722631532, 0.015314650054667759, 0.6659707831965903, 0.33402921668024205], + [2.835616637999447, 0.48351087030517736, 0.4943542064258662, 0.01094473793733082, 0.011190187377035107, 0.6718809308469061, 0.32811906909227967], + [3.1033389933166777, 0.4799979142554978, 0.5045496194194771, 0.007533564412589414, 0.007918903279277254, 0.6773829589341661, 0.32261704105906247], + [3.396438919701833, 0.4749887363203083, 0.5146091622435138, 0.00499281723731858, 0.005409285103550015, 0.6823922775284181, 0.31760772249248675], + [3.7178338820190318, 0.46874035020140603, 0.5245307834042356, 0.0031754587381685193, 0.0035534083184511054, 0.6868316572611192, 0.3131683427503853], + [4.070743359793554, 0.4615388947428137, 0.534294388590512, 0.0019311486231020519, 0.0022355686261992668, 0.6906394624361876, 0.30936053753351667], + [4.458698795128746, 0.4536777812983679, 0.5438628018440522, 0.0011185339858128648, 0.0013408834475892124, 0.6937761903292105, 0.30622380958578727], + [4.885556059363758, 0.44543720984348667, 0.5531855390805, 0.00061432520550839, 0.0007629264292924825, 0.6962282510079033, 0.3037717488634974], + [5.355512787381494, 0.4370676571374059, 0.5622044366921742, 0.00031837620524374614, 0.0004095304518700189, 0.6980085201961941, 0.3019914796583903], + [5.873132599995993, 0.4287789950217024, 0.5708599954936091, 0.00015484934043219118, 0.00020616050414697833, 0.6991538570450825, 0.30084614282054656], + [6.443377534367747, 0.4207356899046388, 0.5790973618751288, 7.025289066283015e-05, 9.669553741962743e-05, 0.699720324809725, 0.3002796750846594], + [7.071649116712391, 0.4130573992230115, 0.5868711149089794, 2.952990462342422e-05, 4.195602858610966e-05, 0.6997771580497071, 0.3002228418780915], + [7.763837705549988, 0.40582349917555416, 0.5941483766311673, 1.1413761273873722e-05, 1.6710387017766485e-05, 0.6994005422800659, 0.30059945767650537], + [8.526379249056749, 0.3990797924878386, 0.6009101272601721, 4.0228193570766925e-06, 6.057317201495009e-06, 0.698668058638258, 0.3013319413388511], + [9.366318547917835, 0.3928458227990674, 0.607150916283365, 1.280982961042019e-06, 1.9797842649782775e-06, 0.6976543066136015, 0.3023456933763601], + [10.291378431250347, 0.38712169111738826, 0.6128773664600418, 3.6477102105241646e-07, 5.774925762962601e-07, 0.696427873963556, 0.3035721260337949], + [11.310034748916422, 0.3818938071419713, 0.6181059522086918, 9.184487704141863e-08, 1.4865353697152687e-07, 0.6950495625632075, 0.3049504374382518], + [12.431597556911472, 0.37713943856280085, 0.6228605077558935, 2.0194822554555954e-08, 3.335253793213757e-08, 0.6935716349525998, 0.306428365051178], + [13.666299204133887, 0.3728301708025891, 0.6271698188248042, 3.824916038774641e-09, 6.434221495257042e-09, 0.6920378043252766, 0.3079621956798453], + [15.025390207740491, 0.36893447829958437, 0.6310655199414241, 6.146795526811108e-10, 1.0514145311056596e-09, 0.6904837133291716, 0.3095162866767012], + [16.521243888008076, 0.3654196023580525, 0.6345803973422445, 8.243535208282304e-11, 1.431555891971786e-10, 0.6889376975815914, 0.311062302424608], + [18.167470789069398, 0.36225289203449806, 0.6377471078825362, 9.059201036976052e-12, 1.594874571907556e-11, 0.6874216840265864, 0.3125783159796079], + [19.97904397938283, 0.3594027280035129, 0.6405972719496326, 7.995802508719602e-13, 1.425167054960072e-12, 0.685952121112368, 0.31404787889356456], + [21.972436416187456, 0.356839124006987, 0.6431608759588988, 5.5442936887089054e-14, 9.99294232471434e-14, 0.6845408744686916, 0.3154591255367961], + [24.165771667328872, 0.35453408336718006, 0.6454659166072079, 2.9478440481606515e-15, 5.3668545559567826e-15, 0.6831960490598558, 0.3168039509450744], + [26.578989405884442, 0.3524617745943103, 0.647538225386519, 1.170171858954373e-16, 2.1498246435850242e-16, 0.6819227182882868, 0.3180772817160342], + [29.234027225732174, 0.3505985780529778, 0.6494014219327429, 3.3677525848887203e-18, 6.2379697301964705e-18, 0.680723553817564, 0.3192764461861442], + [32.155020470543654, 0.3489230445972415, 0.6510769553921625, 6.804008100944368e-20, 1.2696016922413165e-19, 0.679599358395836, 0.32040064160729], + [35.368521926944794, 0.3474157973489237, 0.6525842026432345, 9.313552272950682e-22, 1.7494532862923665e-21, 0.6785495089387218, 0.3214504910638733], + [38.903743407264514, 0.3460593996388532, 0.6539406003553534, 8.307046660880077e-24, 1.5697637706893735e-23, 0.6775723196251457, 0.3224276803769808], + [42.79282144067673, 0.3448382055915549, 0.6551617944041697, 4.625116663112673e-26, 8.787308607917612e-26, 0.6766653356041824, 0.3233346643975408], + [47.071109505760624, 0.34373820477299516, 0.6562617952238514, 1.5333708798225973e-28, 2.9274974744251097e-28, 0.6758255677304599, 0.32417443227092324], + [51.77749947463822, 0.3427468685177775, 0.6572531314798971, 2.873937778647819e-31, 5.5110776441614805e-31, 0.6750496779829749, 0.3249503220181261], + [56.954775201045244, 0.34185300276701625, 0.6581469972312685, 2.876198001238966e-34, 5.537353958093137e-34, 0.6743341241759641, 0.3256658758249062], + [62.6500014742572, 0.3410466102576915, 0.6589533897410427, 1.443444784500131e-37, 2.7889526095324747e-37, 0.6736752714317636, 0.32632472856892003], + [68.91495188025326, 0.3403187635171051, 0.6596812364819601, 3.3902005192409916e-41, 6.571637858992905e-41, 0.6730694767690587, 0.32693052323147564], + [75.80657946365052, 0.3396614891762304, 0.6603385108230789, 3.453827685478372e-45, 6.71461294007628e-45, 0.6725131521285699, 0.3274868478718458], + [83.38753447188, 0.33906766350099143, 0.6609323364984978, 1.4038953117595429e-49, 2.7365623693508174e-49, 0.6720028102414276, 0.32799718975889447], + [91.7267338902425, 0.33853091865740503, 0.661469081342217, 2.076867424971803e-54, 4.058074202244172e-54, 0.6715350969518549, 0.32846490304839376], + [100.89998794668895, 0.3380455590053068, 0.6619544409944131, 1.0106798967212315e-59, 1.9790943209755198e-59, 0.6711068129318238, 0.32889318706836757], + [110.99068928263256, 0.3376064866048484, 0.662393513394944, 1.4476063807709056e-65, 2.8402448253136925e-65, 0.670714927161174, 0.32928507283897307], + [122.09057105547737, 0.33720913508311867, 0.6627908649167272, 5.399976476339647e-72, 1.0613754809462721e-71, 0.670356584079567, 0.3296434159205456], + [134.3005408649841, 0.33684941101882804, 0.6631505889810576, 4.5856255040884685e-79, 9.027654953248e-79, 0.6700291059332067, 0.32997089406687924], + [147.73159808475154, 0.33652364204260227, 0.6634763579573127, 7.645193618903391e-87, 1.5072953529685215e-86, 0.6697299915266548, 0.33027000847341087], + [162.50584293822627, 0.3362285309064021, 0.6637714690935347, 2.1264347955787064e-95, 4.1979386591252416e-95, 0.6694569123366475, 0.33054308766340246], + [178.75758649262852, 0.33596111483939245, 0.6640388851605604, 8.249158183688193e-105, 1.630474945419809e-104, 0.6692077067403387, 0.3307922932596993], + [196.6345716615844, 0.33571872957362997, 0.6642812704263349, 3.6652549877031296e-115, 7.252381309675541e-115, 0.6689803729460543, 0.3310196270539747], + [216.29931631640073, 0.3354989774876767, 0.6645010225122971, 1.5018400990703435e-126, 2.974597088060666e-126, 0.6687730610830636, 0.3312269389169584], + [237.930590715992, 0.3352996993775376, 0.6647003006224428, 4.4714196232023166e-139, 8.864171286968723e-139, 0.6685840648018677, 0.3314159351981488], + [261.7250426871568, 0.33511894982217255, 0.6648810507838461, 7.442089867277538e-153, 1.4765218539891208e-152, 0.668411812827512, 0.3315881877045806], + [287.898985325686, 0.3349549732831252, 0.6650450272149685, 5.189322486326558e-168, 1.0303274736658818e-167, 0.6682548595913906, 0.3317451408511756], + [316.6903634798237, 0.33480618698849623, 0.6651938134210938, 1.1038382973183169e-184, 2.1931088340927757e-184, 0.6681118778594762, 0.3318881225083867], + [348.36091687966353, 0.33467116151769005, 0.6653288388192639, 5.0525861008532416e-203, 1.0044579964017001e-202, 0.6679816496634652, 0.33201835064213486], + [383.1985595876543, 0.33454860564254346, 0.6654513946347641, 3.390108901440652e-223, 6.7432733491583815e-223, 0.6678630585514908, 0.33213694170225777], + [421.51999739720463, 0.33443735237647637, 0.6655626478518253, 2.1858056618168894e-245, 4.349964481033075e-245, 0.6677550819949988, 0.33224491821560126], + [463.6736069746099, 0.3343363465218644, 0.6656636536661539, 8.510883073799361e-270, 1.6945167887873223e-269, 0.6676567841929227, 0.33234321598179517], + [510.04260291827063, 0.33424463354227835, 0.6657553666126116, 1.2005964502467616e-296, 2.391372814028285e-296, 0.6675673092900798, 0.33243269085481675], + [561.0485215266102, 0.3341613496077681, 0.6658386505198661, 0.0, 0.0, 0.6674858750154454, 0.3325141251046804], + [617.1550529452727, 0.33408571268007337, 0.6659142874251283, 0.0, 0.0, 0.6674117667375344, 0.3325882333620259] + ] +} diff --git a/tests/test_logit_golden.py b/tests/test_logit_golden.py index fa93b2fe0..37c5172f7 100644 --- a/tests/test_logit_golden.py +++ b/tests/test_logit_golden.py @@ -6,12 +6,14 @@ Jacobian may still yield points on the correct curve, because the corrector only drives the equations themselves to zero, but it almost always changes the steps taken. -To regenerate the reference data after an intentional change in tracing behaviour, run -``python -m tests.test_logit_golden`` from the repository root. +Reference data is generated by running ``python -m tests.test_logit_golden`` from the +repository root, which writes data only for cases that have none. To regenerate a case after an +intentional change in tracing behaviour, name it: ``python -m tests.test_logit_golden NAME``. """ import dataclasses import json import pathlib +import sys import numpy as np import pytest @@ -32,6 +34,12 @@ class GoldenCase: factory: object maxregret: float | None = None lams: tuple[float, ...] | None = None + strategic: bool = False + + +def _random_table_game(shape: tuple[int, ...], seed: int) -> gbt.Game: + rng = np.random.default_rng(seed) + return gbt.StrategicGame.from_arrays(*[rng.integers(0, 100, shape) for _ in shape]) CASES = { @@ -67,6 +75,29 @@ class GoldenCase: lambda: games.create_allpay_correlated_types_efg(gbt.Rational(3, 5), True, 11), lams=(1.0, 5.0, 20.0), ), + # Strategic-form logit, on each representation of mixed strategy profiles + "strategy_random_bimatrix_20x20": GoldenCase( + lambda: _random_table_game((20, 20), seed=1), maxregret=1.0e-4, strategic=True + ), + "strategy_random_3_player_6x6x6": GoldenCase( + lambda: _random_table_game((6, 6, 6), seed=2), maxregret=1.0e-4, strategic=True + ), + "strategy_random_4_player_4x4x4x4": GoldenCase( + lambda: _random_table_game((4, 4, 4, 4), seed=3), maxregret=1.0e-4, strategic=True + ), + "strategy_coordination_2x2_to_lambda_20": GoldenCase( + lambda: games.create_2x2_symmetric_coordination_nfg(), lams=(20.0,), strategic=True + ), + "strategy_stripped_down_poker": GoldenCase( + lambda: games.create_stripped_down_poker_efg(), maxregret=1.0e-4, strategic=True + ), + "strategy_agg_2x2": GoldenCase( + lambda: games.read_from_file("2x2.agg"), maxregret=1.0e-4, strategic=True + ), + "strategy_bagg_coffee_3_2_2_3": GoldenCase( + lambda: games.read_from_file("Bayesian-Coffee-3-2-2-3.bagg"), maxregret=1.0e-4, + strategic=True, + ), } COUNT_FIELDS = [ @@ -82,14 +113,17 @@ def _point(qre) -> list[float]: def _trace(case: GoldenCase) -> dict: game = case.factory() + branch, at_lambda = ( + (gbt.gambit._logit_strategy_branch, gbt.gambit._logit_strategy_lambda) + if case.strategic + else (gbt.gambit._logit_behavior_branch, gbt.gambit._logit_behavior_lambda) + ) if case.lams is None: - profiles, stats = gbt.gambit._logit_behavior_branch( - game, case.maxregret, FIRST_STEP, MAX_ACCEL, _with_stats=True - ) + profiles, stats = branch(game, case.maxregret, FIRST_STEP, MAX_ACCEL, _with_stats=True) points = [_point(qre) for qre in profiles] else: events = [] - _, stats = gbt.gambit._logit_behavior_lambda( + _, stats = at_lambda( game, list(case.lams), FIRST_STEP, MAX_ACCEL, events.append, _with_stats=True ) points = [_point(e.qre) for e in events if isinstance(e, gbt.LogitPathEvent)] @@ -104,7 +138,7 @@ def _golden_path(name: str) -> pathlib.Path: @pytest.mark.parametrize("name", list(CASES)) -def test_logit_behavior_path_matches_golden(name: str): +def test_logit_path_matches_golden(name: str): path = _golden_path(name) if not path.exists(): pytest.fail(f"no reference data at {path}; run `python -m tests.test_logit_golden`") @@ -117,9 +151,12 @@ def test_logit_behavior_path_matches_golden(name: str): ) -def _regenerate() -> None: +def _regenerate(names: list[str]) -> None: + """Write reference data for the named cases, or for every case which has none.""" GOLDEN_DIR.mkdir(parents=True, exist_ok=True) for name, case in CASES.items(): + if (names and name not in names) or (not names and _golden_path(name).exists()): + continue data = _trace(case) # One point per line keeps the files compact and their diffs readable. lines = [ @@ -135,4 +172,4 @@ def _regenerate() -> None: if __name__ == "__main__": - _regenerate() + _regenerate(sys.argv[1:]) diff --git a/tests/test_qre.py b/tests/test_qre.py index e5d7294e5..cc3ff2b8d 100644 --- a/tests/test_qre.py +++ b/tests/test_qre.py @@ -1,3 +1,6 @@ +import io + +import numpy as np import pytest import pygambit as gbt @@ -80,3 +83,40 @@ def test_logit_estimate_behavior_completes(use_empirical: bool, local_max: bool) probs = dict(result.profile[selector]) assert probs.keys() == set(data.game.get_actions(selector)) assert sum(probs.values()) == pytest.approx(1.0) + + +def _logit_strategy_path(game: gbt.Game, lam: float) -> tuple[np.ndarray, list[tuple[int, int]]]: + events = [] + _, stats = gbt.gambit._logit_strategy_lambda(game, [lam], 0.03, 1.1, events.append, + _with_stats=True) + points = np.array([ + [event.qre.lam] + [event.qre[i] for i in range(len(event.qre))] + for event in events if isinstance(event, gbt.LogitPathEvent) + ]) + return points, [(s.accepted_steps, s.corrector_iterations) for s in stats] + + +@pytest.mark.parametrize( + "game", + [ + pytest.param(games.create_stripped_down_poker_efg(), id="stripped_down_poker"), + pytest.param(games.create_stripped_down_poker_efg(nonterm_outcomes=True), + id="stripped_down_poker_nonterm_outcomes"), + pytest.param(games.read_from_file("3_player_with_nonterm_outcomes.efg"), + id="3_player_with_nonterm_outcomes"), + pytest.param(games.read_from_file("chance_in_middle_with_nonterm_outcomes.efg"), + id="chance_in_middle_with_nonterm_outcomes"), + pytest.param(games.read_from_file("nature_leaves_generic.efg"), + id="nature_leaves_generic"), + ], +) +def test_logit_strategy_tree_matches_table_form(game: gbt.Game): + """Strategic-form logit on a tree traces the same path as on the table game written from + its reduced strategic form. A fixed lambda is used so the comparison does not depend on + the payoff range, which is defined differently for the two representations.""" + table = gbt.read_nfg(io.BytesIO(game.to_nfg().encode())) + tree_points, tree_counts = _logit_strategy_path(game, 5.0) + table_points, table_counts = _logit_strategy_path(table, 5.0) + assert tree_counts == table_counts + assert tree_points.shape == table_points.shape + assert np.max(np.abs(tree_points - table_points)) <= 1.0e-12 diff --git a/tests/test_strategy_derivatives.py b/tests/test_strategy_derivatives.py new file mode 100644 index 000000000..16cad71b7 --- /dev/null +++ b/tests/test_strategy_derivatives.py @@ -0,0 +1,69 @@ +"""Tests of the partial derivatives of payoffs with respect to strategy probabilities. + +Through private helpers, the derivatives computed one at a time are compared with central +differences of the payoffs, and MixedStrategyProfile::GetPayoffDerivBlock, which computes a +player's payoffs and derivatives together, is compared with the derivatives computed one at a +time, on the full support and on supports with strategies removed. +""" +import random + +import numpy as np +import pytest + +import pygambit as gbt + +from . import games + + +def _random_table_game(shape: tuple[int, ...], seed: int) -> gbt.Game: + rng = np.random.default_rng(seed) + return gbt.StrategicGame.from_arrays(*[rng.integers(0, 100, shape) for _ in shape]) + + +def _interior_profile(game: gbt.Game, seed: int): + rng = random.Random(seed) + data = [] + for player in game.players: + weights = [rng.uniform(0.2, 1.0) for _ in game.get_strategies(player)] + data.append([w / sum(weights) for w in weights]) + return game.mixed_strategy_profile(data=data, rational=False) + + +def _removals(game: gbt.Game) -> list[list[tuple[str, str]]]: + """No removals; the first strategy of every player with more than one; and the last + strategy of the first such player only.""" + players = [p for p in game.players if len(game.get_strategies(p)) > 1] + return [ + [], + [(p, game.get_strategies(p)[0]) for p in players], + [(players[0], game.get_strategies(players[0])[-1])] if players else [], + ] + + +GAMES = [ + pytest.param(_random_table_game((3, 4), seed=1), 0.0, id="table-3x4"), + pytest.param(_random_table_game((3, 3, 4), seed=2), 0.0, id="table-3x3x4"), + pytest.param(_random_table_game((2, 3, 2, 3), seed=3), 0.0, id="table-2x3x2x3"), + pytest.param(games.read_from_file("2x2.agg"), 1.0e-12, id="agg-2x2"), + pytest.param(games.read_from_file("2x2.bagg"), 1.0e-12, id="bagg-2x2"), + pytest.param(games.read_from_file("2x2_fraction_types.bagg"), 1.0e-12, + id="bagg-2x2-fraction-types"), + pytest.param(games.read_from_file("Bayesian-Coffee-3-2-2-3.bagg"), 1.0e-12, + id="bagg-coffee"), + pytest.param(games.create_stripped_down_poker_efg(), 1.0e-12, id="tree-poker"), + pytest.param(games.read_from_file("chance_in_middle_with_nonterm_outcomes.efg"), 1.0e-12, + id="tree-chance-in-middle"), +] + + +@pytest.mark.parametrize("game,block_tolerance", GAMES) +def test_payoff_derivs_are_partial_derivatives(game: gbt.Game, block_tolerance: float): + profile = _interior_profile(game, seed=4) + assert profile._payoff_deriv_finite_difference_discrepancy(1.0e-3) <= 1.0e-8 + + +@pytest.mark.parametrize("game,block_tolerance", GAMES) +def test_payoff_deriv_block_matches_separate_computation(game: gbt.Game, block_tolerance: float): + profile = _interior_profile(game, seed=4) + for removed in _removals(game): + assert profile._payoff_deriv_block_discrepancy(removed) <= block_tolerance