api_g / calculate.html
DmitrMakeev's picture
Update calculate.html
2bd1028 verified
raw
history blame
123 kB
<!DOCTYPE html>
<html lang="en-US">
<meta charset="utf-8">
<head>
<title>Ferticalc v0.5 (04.03.2021)</title>
<style>
/* --- TABLE --- */
.divTable{
display: table;
width: 100%;
}
.divTableRow {
display: table-row;
}
.divTableHeading {
background-color: #EEE;
display: table-header-group;
}
.divTableCell, .divTableHead {
border-left: 1px solid #999999;
display: table-cell;
padding: 3px 10px;
width: 45px;
overflow: hidden;
word-wrap: unset;
vertical-align: middle;
text-align: center;
}
.divTableBody {
display: table-row-group;
}
/* --- MAIN --- */
h2 {
font-family: Arial, sans-serif;
font-size: 16pt;
margin: 0 16px;
padding-bottom: 10px;
}
body {
background-color: #EFEFEF;
font-family: Arial, sans-serif;
font-size: 16pt;
}
a {
text-decoration: none;
color: unset;
}
a:hover {
text-decoration: underline;
}
a.link {
color: #2777b8;
}
#main {
background-color: #FFF;
width: 1600px;
margin: 0 auto;
box-shadow: 0 0 1px rgba(0,0,0,0.5);
padding: 10px 5px;
}
.first {
border-left: 0 !important;
text-align: right;
}
.macro {
background-color: #f8f8f8;
}
.subproduct {
color: #888;
}
.unit { font-size: 11px; }
.ion_cation { font-size: 11px; color: #ff4e33 }
.ion_anion { font-size: 11px; color: #0088cc }
.divTableCell>input {
width: 60px;
text-align: center;
font-weight: bold;
height: 30px;
font-size: 14pt;
color: #444;
vertical-align: middle;
}
.default-input {
border-radius: 6px;
border: 1px solid #eee;
}
.point { width: 45px !important; }
.separ>.divTableCell {
border-top: 1px solid #999999 !important;
}
.fertitle {
font-size: 12px;
}
.minifo {
font-size: 10px;
}
.lineleft {
margin: 0 auto;
color: #000;
width: 35px;
font-size: 11px;
height: 18px;
background-color: #a00;
}
.lineright {
margin: 0 auto;
color: #000;
width: 35px;
font-size: 11px;
height: 18px;
background-color: #00a;
}
.left50 {
display: inline-block;
width: 49%;
float: left;
height: 18px;
font-size: 1px;
}
.centerline {
width: 0;
border-left: 1px solid black;
}
.spacer {
height: 1px;
background-color: #efefef;
width: 100%;
display: block;
margin: 15px 0;
clear: both
}
.cartline {
border-radius: 6px; border: 1px solid #eee; padding: 0; margin: 0; height: 50px !important;
background-color: #eee;
}
.cartline:hover {
background-color: #ddd;
}
.chosen-remove {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-right: 0;
filter: grayscale(0.6);
}
.chosen-minus {
border-radius: 0;
}
.chosen-plus {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
border-left: 0;
}
.delete { width: 40px !important; }
span { color: #aaa; }
input.chosen-amount { width: 55px; }
.ratios-table { width: 540px !important; /*border: 0; */float: left; padding-bottom: 30px; border: 1px solid red; }
.chosen-table { width: 960px !important; border: 0; float: left; padding-bottom: 30px; }
.chosen-title { width: 400px !important; text-align: left; border: 0; float: left; }
.chosen-titlebar {
margin-right: 5px;
padding-right: 15px;
border-right: 3px solid #fff;
max-width:500px;
max-height: 50px;
overflow:hidden;
text-overflow: ellipsis;
background: -webkit-linear-gradient(left,#000 70%, #fff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 14pt;
padding-top: 4px;
}
.divTableCartRow {
padding-top: 10px;
clear: both;
}
.chosen-titlebar>span { font-size: 11px; color: #777 }
.chosen-amounter { width: 325px; border: 0; float: left; }
.chosen-amount {
height: 46px !important;
border: 1px solid #eee !important;
border-left: 0 !important;
border-right: 0 !important;
text-align: right;
}
.chosen-mgl {
background-color: #fff;
color: #bbb !important;
width: 50px;
}
.chosen-value {
text-align: right !important;
}
.chosen-image {
float:left; max-height: 50px; width: auto
}
.divTableCartImage {
width: 50px; height: 50px; float: left; padding: 3px 10px;
}
/** --- CATALOG --- **/
.catalog-item {
display: block;
width: 200px;
border: 1px solid #efefef;
text-align: center;
padding: 10px 10px;
margin: 3px 3px;
float: left;
border-radius: 3px;
height: 250px;
}
.catalog { position: relative; font-size: 10pt;}
img { height: 100px;}
small { font-size: 10pt; color: #888; }
.main-table-switcher {
text-align: center;
width: 100%;
background-color: #fff;
color: #ccc;
height: 30px;
cursor: n-resize;
}
.main-table-switcher:hover {
background-color: #f8f8f8;
}
</style>
</head>
<body>
<div id="main">
<h2>Профиль</h2>
<div id="table">
<div class="divTable">
<div class="divTableBody" id="main_table">
<div class="divTableRow">
<div class="divTableCell first">&nbsp;</div>
<div class="divTableCell macro" data-switchable-element="NO3">NO<sub>3</sub><sup class="ion_anion">-</sup></div>
<div class="divTableCell macro" data-switchable-element="NH4">NH<sub>4</sub><sup class="ion_cation">+</sup></div>
<div class="divTableCell macro" data-switchable-element="N">N</div>
<div class="divTableCell macro" data-switchable-element="P">P<sup class="ion_anion">-</sup></div>
<div class="divTableCell macro" data-switchable-element="K">K<sup class="ion_cation">+</sup></div>
<div class="divTableCell macro" data-switchable-element="Ca">Ca<sup class="ion_cation">2+</sup></div>
<div class="divTableCell macro" data-switchable-element="Mg">Mg<sup class="ion_cation">2+</sup></div>
<div class="divTableCell macro" data-switchable-element="S">S<sup class="ion_anion">2-</sup></div>
<div class="divTableCell micro">Fe<sup class="ion_cation">2+</sup></div>
<div class="divTableCell micro">B</div>
<div class="divTableCell micro">Zn<sup class="ion_cation">2+</sup></div>
<div class="divTableCell micro">Cu</div>
<div class="divTableCell micro">Mn</div>
<div class="divTableCell micro">Mo</div>
<div class="divTableCell micro">Cl</div>
</div>
<div class="divTableRow">
<div class="divTableCell first unit">на литр</div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell macro unit"><a data-element-class="macro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell micro unit"><a data-element-class="micro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell micro unit"><a data-element-class="micro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell micro unit"><a data-element-class="micro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell micro unit"><a data-element-class="micro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell micro unit"><a data-element-class="micro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell micro unit"><a data-element-class="micro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
<div class="divTableCell micro unit"><a data-element-class="micro" href="#" onclick="switchUnits(this); return false;">mg</a></div>
</div>
<div class="divTableRow" id="table_row__expected" style="visibility: hidden">
<div class="divTableCell first">Целевой</div>
</div>
<div class="divTableRow" id="table_row__current">
<div class="divTableCell first">Текущий</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell macro">0</div>
<div class="divTableCell micro">0</div>
<div class="divTableCell micro">0</div>
<div class="divTableCell micro">0</div>
<div class="divTableCell micro">0</div>
<div class="divTableCell micro">0</div>
<div class="divTableCell micro">0</div>
<div class="divTableCell micro">0</div>
</div>
<div class="divTableRow separator" id="table_row__bars" style="visibility: hidden">
<div class="divTableCell first">&nbsp;</div>
</div>
</div>
<div class="divTableBody" id="secondary_table"></div>
</div>
<div class="main-table-switcher" onclick="switchTableTotals(this);">&#8673;</div>
<div class="spacer">&nbsp;</div>
<h2>Выбранные</h2>
<div id="table_row__ec"></div>
<div class="divTable chosen-table" style="float:left">
<div class="divTableBody" id="cart_table">
</div>
</div>
<style>
.graph-legend-left {
color: #bbb;
position: absolute;
height: 30px;
font-size: 10pt;
line-height: 20px;
left: -35px;
width: 30px;
text-align: right;
}
.graph-legend-line-h {
position: absolute;
height: 1px;
background-color: #eee;
}
.graph-color-kcamg-active {
background-color: #a950ae;
}
.graph-color-kcamg-pale {
background-color: #fcc1ff;
}
.graph-color-ec-active {
background-color: #1a96d0;
}
.graph-color-ec-pale {
background-color: #bae2f8;
}
.graph-bar-legend {
position:absolute;
bottom: -30px;
width: 50px;
color: #444;
text-align: center;
left: -10px;
}
.graph-color-n-active {
background-color: #46ae33;
}
.graph-color-n-pale {
background-color: #c5e5b1;
}
.graph-bar-value {
font-weight: bold;
font-size: 10pt;
width: 50px;
text-align: center;
position:relative;
left: -10px;
}
.graph-bar-value-white {
color: #fff;
}
.graph-bar-value-blue {
color: #1a96d0;
}
.graph-bar {
position:absolute;
bottom:0;
width: 30px;
}
</style>
<div class="divTable ratios-table" style="float:left; border: 0">
<div class="divTableBody">
<div style="width: 60px; height: 150px; border-left: 1px solid #aaa; border-bottom: 1px solid #aaa; position: relative; float: left">
<div style="position: absolute; left: 0; bottom: 0; z-index: 1; color: #bbb">
<div class="graph-legend-line-h" style="bottom: 20px; width: 60px"></div>
<div class="graph-legend-left" style="bottom: 20px">0.8</div>
<div class="graph-legend-line-h" style="bottom: 40px; width: 60px"></div>
<div class="graph-legend-line-h" style="bottom: 60px; width: 60px"></div>
<div class="graph-legend-left" style="bottom: 60px">1.6</div>
<div class="graph-legend-line-h" style="bottom: 80px; width: 60px"></div>
<div class="graph-legend-line-h" style="bottom: 100px; width: 60px"></div>
<div class="graph-legend-left" style="bottom: 100px">2</div>
<div class="graph-legend-line-h" style="bottom: 120px; width: 60px"></div>
<div class="graph-legend-line-h" style="bottom: 140px; width: 60px"></div>
</div>
<div style="position: absolute; bottom: 0; left: 15px; clear: both; z-index: 10">
<div class="graph-bar graph-color-ec-active" id="graphs_ec_bar_value" style="height: 0;"></div>
<!-- <div class="graph-color-ec-pale" style="position:absolute; bottom:0; width: 30px; height: 100px;"></div>-->
<div class="graph-bar-legend">EC</div>
<div class="graph-bar-value graph-bar-value-blue" id="graphs_ec_value" style="position:relative; bottom: 100px; left: -10px;"></div>
</div>
</div>
<div style="position: relative; width: 30px; float: left; clear: right">&nbsp;</div>
<!-- K:Ca:Mg-->
<div style="width: 210px; height: 150px; border-left: 1px solid #aaa; border-bottom: 1px solid #aaa; position: relative; float: left;">
<!-- Lines and legend-->
<div style="position: absolute; left: 0; bottom: 0; z-index: 1; color: #bbb">
<div class="graph-legend-line-h" style="bottom: 20px; width:210px"></div>
<div class="graph-legend-left" style="bottom: 0">1</div>
<div class="graph-legend-line-h" style="bottom: 40px; width:210px"></div>
<div class="graph-legend-line-h" style="bottom: 60px; width:210px"></div>
<div class="graph-legend-left" style="bottom: 40px">3</div>
<div class="graph-legend-line-h" style="bottom: 80px; width:210px"></div>
<div class="graph-legend-line-h" style="bottom: 100px; width:210px"></div>
<div class="graph-legend-left" style="bottom: 80px">5</div>
<div class="graph-legend-line-h" style="bottom: 120px; width:210px"></div>
<div class="graph-legend-line-h" style="bottom: 140px; width:210px"></div>
<div class="graph-legend-left" style="bottom: 120px">7</div>
</div>
<!-- Values -->
<div style="position: absolute; bottom: 0; left: 30px; clear: both; z-index: 10">
<!-- <div class="graph-color-kcamg-pale" style="position:absolute; bottom:0; width: 30px; height: 100px; background-color: #fcc1ff; color: #a950ae; opacity: 100%"></div>-->
<div class="graph-bar graph-color-kcamg-active" id="graphs_kcamg_k_bar_value" style="height: 0;"></div>
<div class="graph-bar-value graph-bar-value-white" id="graphs_kcamg_k_value" style="bottom: 80px;">0</div>
<div class="graph-bar-legend">K</div>
</div>
<div style="position: absolute; bottom: 0; left: 90px; clear: both; z-index: 10">
<div class="graph-bar graph-color-kcamg-active" id="graphs_kcamg_ca_bar_value" style="height: 0;"></div>
<div class="graph-bar-value graph-bar-value-white" id="graphs_kcamg_ca_value" style="bottom: 40px;">0</div>
<div class="graph-bar-legend">Ca</div>
</div>
<div style="position: absolute; bottom: 0; left: 150px; clear: both; z-index: 10">
<div class="graph-bar graph-color-kcamg-active" id="graphs_kcamg_mg_bar_value" style="height: 0;"></div>
<div class="graph-bar-value graph-bar-value-white" id="graphs_kcamg_mg_value" style="bottom: 0;">0</div>
<div class="graph-bar-legend">Mg</div>
</div>
</div>
<div style="position: relative; width: 30px; float: left; clear: right">&nbsp;</div>
<div style="width: 150px; height: 150px; border-left: 1px solid #aaa; border-bottom: 1px solid #aaa; position: relative; float: left;">
<div style="position: absolute; left: 0; bottom: 0; z-index: 1; color: #bbb">
<div class="graph-legend-line-h" style="bottom: 20px; width:150px"></div>
<div class="graph-legend-left" style="bottom: 0">1</div>
<div class="graph-legend-line-h" style="bottom: 40px; width:150px"></div>
<div class="graph-legend-line-h" style="bottom: 60px; width:150px"></div>
<div class="graph-legend-left" style="bottom: 40px">1.4</div>
<div class="graph-legend-line-h" style="bottom: 80px; width:150px"></div>
<div class="graph-legend-line-h" style="bottom: 100px; width:150px"></div>
<div class="graph-legend-left" style="bottom: 80px">1.8</div>
<div class="graph-legend-line-h" style="bottom: 120px; width:150px"></div>
<div class="graph-legend-line-h" style="bottom: 140px; width:150px"></div>
<div class="graph-legend-left" style="bottom: 120px">2.2</div>
</div>
<div style="position: absolute; bottom: 0; left: 30px; clear: both; z-index: 10">
<!-- <div class="graph-color-n-pale" style="position:absolute; bottom:0; width: 30px; height: 20px;"></div>-->
<div class="graph-bar graph-color-n-active" id="graphs_nk_n_bar_value" style="height: 0;"></div>
<div class="graph-bar-value graph-bar-value-white" id="graphs_nk_n_value" style="bottom: 0">0</div>
<div class="graph-bar-legend">N</div>
</div>
<div style="position: absolute; bottom: 0; left: 90px; clear: both; z-index: 10">
<div class="graph-bar graph-color-n-active" id="graphs_nk_k_bar_value" style="height: 0;"></div>
<!-- <div class="graph-color-n-pale" style="position:absolute; bottom:0; width: 30px; height: 20px;"></div>-->
<div class="graph-bar-value graph-bar-value-white" id="graphs_nk_k_value" style="bottom: 0">0</div>
<div class="graph-bar-legend">K</div>
</div>
</div>
</div>
</div>
<div class="spacer">&nbsp;</div>
<h2><a class="link" href="#" onclick="toggle(this, document.getElementById('catalog')); return false;">&#8673; Каталог</a></h2>
<div class="catalog">
<div id="catalog"></div>
<div style="clear: both;"></div>
</div>
</div>
</div>
<!-- @todo implement popup -->
<!--<div id="modaloverlay" style="position: absolute; width: 100%; height: 100%; background-color: #fff; opacity: 0.85; left: 0; top: 0" onclick="hideModal()">-->
<!-- &nbsp;-->
<!--</div>-->
<!--<div id="modal" style="position: absolute; width: 600px; height: 500px; background-color: #fff; border-radius: 6px; box-shadow: 0 0 10px rgba(0,0,0,0.5); left: 30%; top: 30%; padding: 15px 10px;">-->
<!-- <h2>Экспорт</h2>-->
<!-- <div id="modalclose" style="position:relative; top: -35px; left: 95%" onclick="hideModal()">-->
<!-- <img style="width:20px; height: 20px" src="data:image/png;base64, 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v3+/Dhw4oEOHDunXX39VVlaWzp49q2PHjv3hPxsYGKgKFSqoYsWKKlu2rCpVqqSaNWuqVq1aql69uq666ipdc801KlOmTJF8WhgAAAD82+bNm01ERITOnDljewp8TOnSpfXhhx/qhhtuuOyWIWgLwb59+8xnn32mzz//XF999ZV27typnTt36vjx40X+/12nTh01bNhQDRs2VNOmTdW8eXPdfPPNKleuHKELAACAS/LRRx+ZkJAQnTx50vYU+KimTZvqww8/vOwDOoL2IuXk5JiPPvpImzZt0ubNm/XRRx/p0KFDtmf9h4CAADVq1Ei33nqrWrdurdatW+u6664jcAEAAHBeX3zxhWnbtq2OHj1qewp83PDhw/Xmm28StEXtq6++MmvWrNH69eu1detWnT171vaki1arVi0FBQUpIiJC7du31xVXXEHgAgAA4D98++23pk2bNq47sIFvCggIUEZGhu6+++5LbhOC9g/k5+ebDRs2aPny5Vq7dq12795te1KhCgwM1J133qno6Gh17dpV1157LXELAADg53744QfTpk0b/fLLL7anwI80atRIn332mUqXLn1JTULQ/osxxrz//vtatGiRli5dqgMHDtie5DG33367evbsqR49eqhGjRrELQAAgJ/Zu3evad26tXbt2mV7CvzQE088oXHjxhG0l+LXX381s2fP1j/+8Q/t2LHD9hyrAgMDFRYWpoceekgdOnRQYGAgcQsAAODjDhw4YFq3bu3318Kwp3jx4vr888/VpEmTi+4Pvw3aTZs2mcmTJ2vFihXKzs62Pcd16tatq0GDBmngwIGc2gIAAPiow4cPm6CgIH399de2p8DPhYSEKDk5maA9l4KCArNmzRq9/PLLev/9923P8QolSpRQjx499Je//EXXX389YQsAAOAjTpw4YUJCQvTxxx/bngJIkpYvX66uXbteVHP4RdDm5OSYmTNn6rXXXtMPP/xge45XCggIUNeuXTVmzBi1aNGCsAUAAPBip0+fNmFhYRzywFXq16+v7du3X9QHRAXYHl2UCgoKzNKlS03Tpk01ePBgYvYyFBQUaNmyZbr11lsVGhpqvvjiC99/JwQAAMAHnT171nTs2JGYhevs2rVLkydPvqh/xmdPaN977z3z9NNP65tvvrE9xScFBgaqb9++evbZZ1WnTh1ObAEAALxAdna26dy5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18CBA/Xmm29yUgsAPu7kyZMmPDycmAX81MiRI10Zs9JlBK0kPf7447b3A7DIGKNHHnlEf//734laAPBRmZmZpmPHjvrwww9tTwFgwdChQzV+/HhXxqx0Gbcc/+auu+4y77//vu3HAcCy559/Xn/9619d+2QHALh4WVlZJjo6WikpKbanALBg4MCBmjZtmhzHce013mUHbWpqqgkJCbH9OAC4wOOPP65XXnnFtU94AIALl5uba7p166b4+HjbUwBY0L17dy1atEiBgYGuvra77KCVpHbt2pm0tDTbjwWACzz00EOaNGmSAgICXP3kBwD4c/n5+aZXr15atGiR7SkALOjcubOWLl2qYsWKuf56rlCC9qOPPjK33367CuPPAuD9evXqpVmzZnnFkyAA4D8ZY8ygQYM0Y8YM21MAWBAWFqbVq1erZMmSXnEdd1kfCvWbli1bOp06dbL9WAC4xPz589WnTx/l5eXxLhcAeBFjjBk8eDAxC/ip4OBgrVy50mtiViqkE1pJ+vHHH03Tpk2VlZVl+zEBcImoqCgtXbpUpUqV8ponRQDwZ0888YR59dVXbc8AYMEdd9yhpKQklS9f3quu2wrlhFaSrrnmGmfUqFG2Hw8AF0lISFCXLl109uxZTmoBwOWeeuopYhbwU82aNdPatWu9LmalQjyhlf7v55Q1btxYe/bssf24ALhI69atlZCQ4JVPkgDgD8aPH284mAD804033qj09HRdccUVXnmdVmgntJJUpkwZ57XXXrP9mAC4TEZGhiIiInTixAlOagHAZSZMmEDMAn7quuuuU1JSktfGrFTIJ7S/6datm3nvvfdsPzYALnPLLbcoKSlJVatW9donTQDwJbNmzTIDBgzgJ1UAfqhu3brKyMhQvXr1vPq6rEiC9sCBA6Zp06Y6evSo7ccHwGUaN26slJQU1apVy6ufPAHA282fP9/06dNHBQUFtqcA8LCrrrpKGRkZuuaaa7z+eqxQbzn+TY0aNZzx48fbfmwAXOibb75R27ZttXfvXo4DAMCSFStWmH79+hGzgB+68sorlZSU5BMxKxXRCe1vOnfubFatWmX7MQJwoauvvlopKSk+82QKAN4iISHBdOvWTTk5ObanAPCwK664Qmlpabrpppt85vqrSIP22LFjplmzZnzqMYA/VKNGDSUnJ+uGG27wmSdVAHCz1NRUExUVpaysLNtTAHhYhQoVlJKSopYtW/rUdVeR3HL8m8qVKzvz589XYGCg7ccJwIUOHDigdu3aadu2bdx+DABF7P333zedO3cmZgE/VKZMGcXHx/tczEpFHLSS1KpVK+fpp5+2/TgBuNShQ4cUHBysjz/+mKgFgCLy0UcfmYiICJ0+fdr2FAAeVqpUKa1evVqtW7f2uZiViviW498UFBSYjh07as2aNbYfLwCXKleunFavXq22bdv65JMtANjy5ZdfmrZt2+rIkSO2pwDwsOLFi2v58uWKjo722esrjwStJJ08edLceeed2r59u+3HDMClypQpo5UrVyo0NNRnn3QBwJN27NhhWrdurQMHDtieAsDDAgMD9e6776pHjx4+fV1V5Lcc/6ZChQrOe++9p4oVK9p+zABcKjMzU9HR0Vq5ciW3HwPAZdqzZ48JDQ0lZgE/5DiO3nnnHZ+PWcmDQStJjRo14kOiAJxTdna2evTooeXLlxO1AHCJ9u7da9q0aaPdu3fbngLAw36L2QEDBvh8zEoeDlpJioqKcqZMmWL7cQNwsZycHPXo0UOzZ88magHgIh06dMiEh4dr165dtqcAsGDcuHEaNGiQX8SsZCFoJWnQoEHOM888Y/uxA3Cx/Px89e/fXxMnTiRqAeACHT582LRr107ffPON7SkALHjxxRf1+OOP+03MSh78UKg/MmTIEDN58mTbXwMALuY4jl5//XWNHDnSr56cAeBinThxwoSEhOjjjz+2PQWABU8//bT+9re/+d31ktWgzc/PN3369NG7775r++sAwOWee+45Pfvss373JA0AFyIzM9NERERo06ZNtqcAsGD48OF68803/fI6yWrQSv8Xtb1799aCBQtsfy0AuNzo0aM1duxYv3yyBoA/c/bsWdOhQwelp6fbngLAgv79+2v69OlyHMcvr5GsB630f1Hbq1cvLVq0yPYUAC738MMPa+LEiX77pA0Av5eTk2O6du2qNWvW2J4CwIL7779fs2fPVkBAgN9eF7kiaCUpNzfX3HvvvVq2bJntKQBc7sEHH9TkyZP9+skbAPLy8kxMTIxWrlxpewoAC7p3765FixYpMDDQr6+HXBO00v+d1A4cOFCzZ8+2PQWAy/Xs2VNz585VsWLF/PpJHIB/KigoMPfffz/fsgX4qfDwcK1atUolS5b0++sgKz+2588EBgY6M2fO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mOM4mjJliu677z5iFkWCoPVz5cqVcxISEhQaGmp7CgAXM8Zo1KhRGjNmDFGLi/Lzzz+boKAg7d692/YUABa8+uqreuCBB4hZFBmCFipTpowTHx+vzp07254CwOXGjRtH1OKCHTp0yISFhemnn36yPQWABS+99JJGjRpFzKJIOcZwXYL/k5OTY+677z4tW7bM9hQALjd48GBNnDhRAQEBXKjgDx0+fNi0bdtWX331le0pACz461//queff57XCBQ5ghb/IT8/3wwcOFCzZ8+2PQWAyw0aNEhTp04lavE/Tpw4YUJCQvTxxx/bngLAghEjRmjChAm8NsAjCFr8D2OMGT58uCZOnGh7CgCXi4uL07x581SsWDEuXCBJyszMNBEREdq0aZPtKQAs6N+/v6ZPny7HcXhdgEcQtPhDxhgzatQovfHGG7anAHC56OhoLV26VCVLluTixc+dPXvWdOjQQenp6banALCgd+/emjVrFnfuwKMIWpzTuHHjzJgxY2zPAOBykZGRWr58uUqXLs1FjJ/KyckxXbt21Zo1a2xPAWBB165dtXjxYu7YgccRtDgvohbAhWjTpo3i4+NVvnx5Lmb8TH5+vrn33nu1ZMkS21MAWBAREaGVK1dypw6sIGhxQSZPnmyGDh0q/n0BcC4tW7bU+vXrVaVKFS5q/ERBQYG5//77tWDBAttTAFgQEhKi+Ph4lSpViud9WMHPocUFefjhh5133nlHAQH8KwPgz3300UcKDQ3V4cOHeffLDxhjzODBg4lZwE/dddddWrFiBTELqzihxUVZuHCh6d27t/Ly8mxPAeBijRs3VkpKimrVqsVFjg977LHHzOuvv257BgALbr/9diUnJ/NtJrCOoMVFi4+PNzExMcrOzrY9BYCLNWrUSCkpKapduzYXOz7oySefNGPHjrU9A4AFN910k9LT0/n2ErgC94/iokVHRzsrVqxQ6dKlbU8B4GLfffed7rnnHv3www+8c+pjnnvuOWIW8FPXXXedkpKSiFm4Bie0uGQbN2400dHROnXqlO0pAFysZs2aSk5OVtOmTbn48QETJkwwI0eOtD0DgAXXXnutNm7cyLeTwFUIWlyWLVu2mA4dOujEiRO2pwBwserVqyspKUk33XQTF0FebNKkSWbYsGF84j3gh+rUqaOMjAzVr1+f53G4CkGLy/bpp5+a8PBwHT582PYUAC5WuXJlrVu3TrfffjsXQ15ozpw5pn///iooKLA9BYCHVa9eXRs2bND111/P8zdch6BFodi+fbsJDQ3Vvn37bE8B4GIVK1bU2rVrddddd3FR5EWWL19u4uLi+IR7wA9VrVpVGzZs4NtG4Fp8KBQKRZMmTZy0tDTVrl3b9hQALnbixAmFhYUpJSWFd1O9xKpVq0zPnj2JWcAPVaxYUevXrydm4WoELQpNo0aNnM2bN6tBgwa2pwBwsTNnzigqKkqrVq0ial0uOTnZxMXFKTc31/YUAB5WtmxZJSQkqEWLFsQsXI2gRaGqV6+es2nTJjVt2tT2FAAulp2drdjYWC1fvpyodaktW7aYLl26KCsry/YUAB5WunRpJSQk6J577iFm4XoELQpdzZo1ndTUVN100022pwBwsZycHPXo0UNz5swhal1m69atJjIyUmfOnLE9BYCHlShRQsuWLVNQUBAxC69A0KJIVK9e3dmwYYNuv/1221MAuFh+fr769++v6dOnE7UusW3bNtO+fXt+xjjghwIDAzV//ny1b9+emIXXIGhRZCpXruwkJibqrrvusj0FgIsVFBTogQce0IQJE4hay7777jsTHh6uo0eP2p4CwMMCAwM1b948xcTEELPwKgQtilTFihWdpKQkhYSE2J4CwMWMMRo5cqReeOEFotaSnTt3muDgYB08eND2FAAe5jiOpkyZop49exKz8DoELYpc2bJlnYSEBHXq1Mn2FAAu9+yzz2rMmDFErYft3buXnyUO+CnHcTRx4kQNGjSImIVXImjhESVLlnSWLFmibt262Z4CwOXGjRunoUOHGmMMYesBBw8eNKGhodq1a5ftKQAsePnll/Xwww8Ts/BaBC08pkSJEs7ixYvVp08f21MAuNykSZM0ePBgFRQUELVF6NdffzXBwcH67rvvbE8BYMHzzz+v0aNHE7Pwag5vgMPTCgoKzIMPPqjp06fbngLA5e69917NmTNHxYoV44KrkB0/fty0a9dOn376qe0pACx45JFH9MYbb/DcCq/HCS08LiAgwJk2bZoeeeQR21MAuNyCBQt03333KTc3l3dfC9HJkydNeHg4MQv4qaFDhxKz8Bmc0MKqZ5991rzwwgu2ZwBwuQ4dOmjZsmUqVaoUF2CXKTMz07Rv314bN260PQWABX369NHMmTMVEBDA8yl8AkEL68aNG2fGjBljewYAlwsKClJ8fLzKlSvHRdglysnJMZ07d9a6detsTwFgQffu3bVo0SIFBgbyPAqfQdDCFSZNmmSGDRsm/n0EcC6tWrVSQkKCKlSowMXYRcrNzTXdunVTfHy87SkALOjcubOWLl3KZxLA5xC0cI1p06aZf32qqe0pAFysRYsWSkxM1BVXXMFF2QXKz883vXr10qJFi2xPAWBBaGio4uPjVbJkSZ434XMIWrjKggULTJ8+fZSXl2d7CgAXa9asmZKSknTllVdycXYexhgzaNAgzZgxw/YUABbcfffdSkxMVNmyZXm+hE/iU47hKvfee6/z7rvvqnjx4ranAHCxzz//XK1bt9Yvv/zCu7LnYIwxQ4YMIWYBP3XHHXdo3bp1xCx8Gie0cKU1a9aY7t27Kysry/YUAC5Wv359paam6pprruFi7Q888cQT5tVXX7U9A4AFN998s9LS0lSlShWeH+HTCFq41oYNG0x0dLROnz5tewoAF6tbt65SUlLUsGFDLtp+5+mnnzYvvvii7RkALGjUqJE2btyo6tWr87wIn0fQwtU2b95sOnTooJMnT9qeAsDFqlevruTkZN14441cvEkaP368GTVqlO0ZACy49tprlZGRoZo1a/J8CL9A0ML1PvnkExMeHq4jR47YngLAxapUqaL169erZcuWfn0R9/bbb5vhw4fbngHAgjp16igjI0P169f36+dB+BeCFl7h66+/NqGhodq/f7/tKQBcrFKlSlq7dq3uvPNOv7yYmzVrlhkwYAA/0xvwQ1dddZU2btyoBg0a+OXzH/wXn3IMr9C0aVMnLS1NV111le0pAFzs+PHjCg0NVVpamt8V3fz5883AgQOJWcAPXXnllUpKSiJm4Zc4oYVX2bVrl2nXrp1+/PFH21MAuFiZMmW0YsUKhYWF+cXF3YoVK0xsbCw/wxvwQ5UqVVJqaqqaN2/uF893wH/jhBZepX79+k56eroaNmxoewoAF8vMzFR0dLRWrFjh8+/aJiUlmZ49exKzgB+qUKGCkpKSiFn4NYIWXqdu3brOpk2bdOONN9qeAsDFcnJyFBMTo3nz5vls1KampppOnTopOzvb9hQAHlamTBmtXr3a7z8IDyBo4ZWqV6/ubNy4UbfddpvtKQBcLD8/X/369dPMmTN9Lmrff/9907lzZ2VlZdmeAsDDSpQooWXLlqlNmzbELPweQQuvVblyZScxMVF33nmn7SkAXCw/P18DBw7UW2+95TNR+/nnn5sOHTro9OnTtqcA8LDixYtr2bJlioyMJGYBEbTwcpUqVXKSk5PVrl0721MAuJgxRo888ohef/11r4/aL7/80oSEhOjYsWO2pwDwsMDAQM2dO1fR0dHELPAvBC28XtmyZZ3Vq1crPDzc9hQALmaM0WOPPaYxY8Z4bdTu2LHDhIWF6ciRI7anAPAwx3H0zjvvKC4ujpgFfoeghU8oU6aMs3r1anXt2tX2FAAuN27cOI0ePdrronbPnj0mNDRUBw4csD0FgIc5jqPJkydrwIABxCzwXwha+IwSJUo4S5YsUe/evW1PAeByr7zyigYPHmwKCgq8Imx//vlnExQUpN27d9ueAsCCcePG6aGHHiJmgT9A0MKnBAYGOjNnzlT//v1tTwHgclOnTlWfPn2Un5/v6qg9dOiQCQsL008//WR7CgALXnzxRT3++OPELPAnCFr4nMDAQGf69OkaMWKE7SkAXG7+/Pnq1auXcnNzXRm1hw8fNu3atdM333xjewoACx599FH95S9/IWaBcyBo4ZMcx3EmTJjgPPPMM7anAHC5RYsWqVu3bsrKynJV1J44ccJERkbqq6++sj0FgAXDhg3T66+/TswC5+EY46rXb6DQjRs3zowZM8b2DAAuFxkZqeXLl6t06dLWLyAzMzNNRESENm3aZHsKAAv69eunGTNmyHEc689HgNsRtPALr776qhk9erT49x3AubRu3VoJCQkqX768tYvIs2fPmg4dOig9Pd32lwOABb169dKcOXMUEBBAzAIXgKCF35g6daoZMmSICgoKbE8B4GItW7bU+vXrVaVKFY9fTObk5JiuXbtqzZo1tr8MACzo0qWLlixZomLFihGzwAUiaOFX3n33XdO3b1/l5eXZngLAxZo3b67ExERVrVrVYxeV+fn55t5779WSJUtsP3wAFoSFhWn16tUqWbIkMQtcBIIWfmfx4sXm/vvvV25uru0pAFyscePGSklJUa1atYr84rKgoMDcf//9WrBgge2HDcCC4OBgrVmzRqVKlSJmgYtE0MIvJSQkmJiYGGVlZdmeAsDFrrvuOqWkpKhOnTpFdpFpjDEPPfSQpk2bZvvhArDgzjvvVFJSksqVK0fMApeAH9sDvxQVFeWsXbtW5cqVsz0FgIt9//33atWqlXbu3Flk7/4+/vjjxCzgp5o1a6Y1a9YQs8BlIGjht9q2beusXbtWFSpUsD0FgIvt3r1brVq10tdff13oUfvkk0+a119/3fZDBGDBjTfeqJSUFFWuXJmYBS4DQQu/1qpVKyc1NVVXXHGF7SkAXOzAgQMKDg7Wtm3bCi1qn3vuOTN27FjbDw2ABQ0bNlRSUpKuuOIKYha4THwPLSDps88+M+Hh4fr1119tTwHgYpUrV9a6det0++23X9ZF6IQJE8zIkSNtPxwAFtStW1cZGRmqV68eMQsUAoIW+Jdvv/3WhISE6JdffrE9BYCLVaxYUWvWrNHdd999SRejkyZNMsOGDROvv4D/qV27tjIyMnT11VcTs0AhIWiB3/npp59Mu3bt9NNPP9meAsDFypQpo5UrVyo0NPSiLkrnzJlj+vfvr4KCAtsPAYCHVatWTRs2bFDjxo2JWaAQEbTAf9mzZ49p166ddu7caXsKABcrWbKkFi9erE6dOl3Qxeny5ctNXFyc8vLybE8H4GGVKlVSWlqabrnlFmIWKGR8KBTwX+rWrets2rRJN9xwg+0pAFwsOztbsbGxWrZs2XnfGV61apXp2bMnMQv4oYoVKyo5OZmYBYoIQQv8gRo1ajipqalq1qyZ7SkAXCwnJ0dxcXGaM2fOn0ZtcnKyiYuLU25uru25ADysTJkyio+P16233krMAkWEoAX+RLVq1Zz09HTdcccdtqcAcLH8/Hz169dPEydO/J+o3bJli+nSpYuysrJszwTgYaVLl1ZCQoJatWpFzAJFiKAFzqFSpUpOSkqKgoODbU8B4GLGGA0fPlxvvPHGv6N269atJjIyUmfOnLE9D4CHlShRQkuWLFHbtm2JWaCI8aFQwAXIzMw0Xbp0UVJSku0pAFzuueeeU+fOnRUcHKyjR4/angPAwwIDA7VgwQLFxsYSs4AHELTABcrKyjKxsbGKj4+3PQWAy5UpU0aZmZm2ZwDwsICAAM2bN0/33nsvMQt4CLccAxeoVKlSznvvvadevXrZngLA5YhZwP84jqPJkycTs4CHEbTARShWrJgze/Zs9evXz/YUAADgIq+88ooefPBBYhbwMIIWuEiBgYHOjBkzNHz4cNtTAACAC7z00kt67LHHiFnAAoIWuASO4zgTJkzQqFGjbE8BAAAW/fWvf9WTTz5JzAKW8KFQwGUaN26cGTNmjO0ZAADAw0aMGKEJEyYQs4BFBC1QCF555RUzevRo2zMAAICH9O/fX9OnT5fjOAQtYBFBCxSSKVOmmKFDh6qgoMD2FAAAUIR69+6tWbNmKSAggJgFLCNogUI0f/5807dvX+Xn59ueAgAAikDXrl21ePFiFStWjJgFXICgBQrZokWLTO/evZWbm2t7CgAAKEQRERFauXKlSpYsScwCLkHQAkUgPj7exMbGKisry/YUAABQCEJCQhQfH69SpUoRs4CLELRAEVm3bp3p1q2bzp49a3sKAAC4DHfddZcSExNVrlw5YhZwGYIWKEIZGRkmKipKp06dsj0FAABcgttvv13JyckqX748MQu4EEELFLGPPvrIRERE6OjRo7anAACAi3DTTTcpPT1dVapUIWYBlyJoAQ/49NNPTXh4uA4fPmx7CgAAuADXXXedNm7cqBo1ahCzgIsRtICHfPPNNyYkJET79u2zPQUAAJxDgwYNlJGRoVq1ahGzgMsF2B4A+IvGjRs76enpqlOnju0pAADgT9SuXVvJycnELOAlCFrAg6677jpn06ZNuvbaa21PAQAA/6VatWpKTk7W1VdfTcwCXoKgBTysXr16zqZNm9S0aVPbUwAAwL9UrVpVaWlpuv7664lZwIsQtIAFNWrUcNLS0nTzzTfbngIAgN+rWLGi1q9fr6ZNmxKzgJchaAFLqlWr5qSnp+v222+3PQUAAL9VtmxZJSQkqEWLFsQs4IUIWsCiypUrOykpKWrbtq3tKQAA+J3SpUsrISFB99xzDzELeCmCFrCsXLlyTkJCgkJDQ21PAQDAb5QoUULLli1TUFAQMQt4MYIWcIEyZco48fHx6ty5s+0pAAD4vMDAQM2fP1/t27cnZgEvR9ACLlGyZEln8eLF6t69u+0pAAD4rMDAQM2bN08xMTHELOADCFrARUqUKOEsWrRIffv2tT0FAACf4ziOpkyZop49exKzgI8gaAGXCQwMdGbOnKmhQ4fangIAgM9wHEcTJ07UoEGDiFnAhxC0gAs5juO89dZbGjlypO0pAAD4hJdfflkPP/wwMQv4GIIWcCnHcZzx48c7zz77rO0pAAB4teeff16jR48mZgEf5BhjbG8AcB7jxo0zY8aMsT0DAACv88gjj+iNN94gZgEfRdACXmLy5Mlm6NCh4r9ZAAAuzJAhQzRx4kRiFvBhBC3gRf7xj3+Yhx56SAUFBbanAADgan369NHMmTMVEBBA0AI+jKAFvMzChQtN7969lZeXZ3sKAACu1L17dy1cuFDFihUjZgEfR9ACXmj16tUmNjZW2dnZtqcAAOAqnTp10tKlS1W8eHFiFvADBC3gpdauXWu6d++us2fP2p4CAIArhIaGavXq1SpVqhQxC/gJghbwYhs3bjTR0dE6deqU7SkAAFh19913KzExUWXLliVmAT9C0AJebvPmzaZDhw46efKk7SkAAFhxxx13KCkpSeXLlydmAT9D0AI+4JNPPjERERE6fPiw7SkAAHjUzTffrLS0NFWpUoWYBfwQQQv4iO3bt5uQkBDt37/f9hQAADyiUaNG2rhxo6pXr07MAn6KoAV8yHfffWdCQkL0888/254CAECRuvbaa5WRkaGaNWsSs4AfC7A9AEDhadSokbNp0yY1aNDA9hQAAIpMnTp1lJycTMwCIGgBX1O/fn1n06ZNatKkie0pAAAUuquuukrp6emqX78+MQuAoAV8Uc2aNZ20tDTddNNNtqcAAFBorrzySiUlJalBgwbELABJBC3gs6pXr+5s2LBBt912m+0pAABctkqVKmn9+vVq0qQJMQvg3whawIdVrlzZSUpK0l133WV7CgAAl6xChQpKTExU8+bNiVkA/4GgBXxcxYoVnaSkJIWEhNieAgDARStTpoxWr16t2267jZgF8D8IWsAPlC1b1klISFCnTp1sTwEA4IKVKFFCy5YtU5s2bYhZAH+IoAX8RMmSJZ0lS5aoW7dutqcAAHBexYsX17JlyxQZGUnMAvhTBC3gR0qUKOEsXrxYffr0sT0FAIA/FRgYqLlz5yo6OpqYBXBOBC3gZwIDA52ZM2dq4MCBtqcAAPA/HMfR1KlTFRcXR8wCOC+CFvBDAQEBzrRp0/TII4/YngIAwL85jqNJkyZp4MCBxCyAC0LQAn7KcRznjTfecP7617/angIAgCRp7NixGjx4MDEL4II5xhjbGwBYNm7cODNmzBjbMwAAfuzvf/+7nnrqKWIWwEUhaAFIkiZNmmSGDRsmnhMAAJ726KOP6vXXXydmAVw0ghbAv02bNs0MHjxYBQUFtqcAAPzEsGHD9NZbbxGzAC4JQQvgPyxYsMD06dNHeXl5tqcAAHxcv379NGPGDDmOQ9ACuCQELYD/sWTJEtOrVy/l5ubangIA8FExMTFauHChAgMDiVkAl4ygBfCH1qxZY7p3766srCzbUwAAPqZLly5asmSJihUrRswCuCwELYA/tWHDBhMdHa3Tp0/bngIA8BFhYWFavXq1SpYsScwCuGwELYBz2rx5s+nQoYNOnjxpewoAwMsFBwcrISFBpUuXJmYBFAqCFsB5ffLJJyY8PFxHjhyxPQUA4KXuvPNOJSUlqVy5csQsgEJD0AK4IF9//bUJDQ3V/v37bU8BAHiZZs2aKS0tTZUrVyZmARQqghbABfv2229NSEiIfvnlF9tTAABe4sYbb1R6erquuOIKYhZAoSNoAVyUXbt2mXbt2unHH3+0PQUA4HINGzbUxo0bVbNmTWIWQJEIsD0AgHepX7++k56eroYNG9qeAgBwsbp16yo5OZmYBVCkCFoAF61u3brOpk2bdOONN9qeAgBwoauuukrp6emqV68eMQugSBG0AC5J9erVnY0bN+q2226zPQUA4CLVqlVTcnKyrrnmGmIWQJEjaAFcssqVKzuJiYm68847bU8BALhApUqVtH79ejVu3JiYBeARBC2Ay1KpUiUnOTlZ7dq1sz0FAGBRhQoVlJSUpFtuuYWYBeAxBC2Ay1a2bFln9erVCg8Ptz0FAGBBmTJlFB8fr5YtWxKzADyKoAVQKMqUKeOsXr1aXbt2tT0FAOBBJUuW1PLly9W6dWtiFoDHEbQACk2JEiWcJUuWqHfv3ranAAA8oHjx4lq2bJkiIiKIWQBWELQAClVgYKAzc+ZM9e/f3/YUAEARCgwM1Lx58xQVFUXMArCGoAVQ6AIDA53p06drxIgRtqcAAIpAQECA5syZox49ehCzAKwiaAEUCcdxnAkTJjjPPPOM7SkAgELkOI4mT56s++67j5gFYB1BC6BIvfDCC87YsWNtzwAAFJJXXnlFDz74IDELwBUIWgBFbvTo0c4rr7wix+H6BwC82UsvvaTHHnuMJ3MAruEYY2xvAOAnpk6daoYMGaKCggLbUwAAF+mZZ57RCy+8QMwCcBWCFoBHvfvuu6Zv377Ky8uzPQUAcIFGjBihCRMmELMAXIegBeBxixcvNvfff79yc3NtTwEAnEf//v01ffp0OXzfCAAXImgBWJGQkGBiYmKUlZVlewoA4E/07t1bs2bNUkBAADELwJUIWgDWpKenm44dO+r06dO2pwAA/kvXrl21ePFiFStWjJgF4FoELQCrNm3aZKKionTy5EnbUwAA/xIeHq5Vq1apZMmSxCwAVyNoAVj38ccfm4iICB05csT2FADweyEhIYqPj1epUqWIWQCuR9ACcIXPPvvMhIeH69dff7U9BQD81l133aXExESVK1eOmAXgFQhaAK7x7bffmpCQEP3yyy+2pwCA37nllluUlpamSpUqEbMAvAZBC8BVfvrpJ9OuXTv99NNPtqcAgN+46aablJ6eripVqhCzALwKQQvAdfbs2WPatWunnTt32p4CAD7vuuuu08aNG1WjRg1iFoDXCbA9AAD+W926dZ1NmzbphhtusD0FAHxagwYNlJ6eTswC8FoELQBXqlGjhpOamqpmzZrZngIAPql27dpKTk5WrVq1iFkAXougBeBa1apVc9LT03XHHXfYngIAPqVatWpKTk7W1VdfTcwC8GoELQBXq1SpkpOSkqLg4GDbUwDAJ1StWlVpaWm6/vrriVkAXo+gBeB6ZcuWdeLj4xUWFmZ7CgB4tYoVK2r9+vVq2rQpMQvAJxC0ALxCmTJlnPj4eHXp0sX2FADwSmXLllV8fLxatGhBzALwGQQtAK9RokQJZ8mSJerVq5ftKQDgVUqXLq2EhAS1atWKmAXgUwhaAF6lWLFizuzZs9WvXz/bUwDAK5QoUUJLly5VUFAQMQvA5xC0ALxOYGCgM2PGDA0fPtz2FABwtcDAQM2fP18dOnQgZgH4JIIWgFdyHMeZMGGCRo0aZXsKALhSYGCg5s6dq5iYGGIWgM8iaAF4LcdxnNdee80ZO3as7SkA4CqO42jKlCm69957iVkAPo2gBeD1Ro8e7YwbN872DABwjddee02DBg0iZgH4PMcYY3sDABSKKVOmmKFDh6qgoMD2FACw5uWXX9aYMWOIWQB+gRNaAD5j8ODBzjvvvKOAAJ7aAPin5557jpgF4Fc4oQXgcxYtWmR69+6t3Nxc21MAwGMeeeQRvfHGG8QsAL9C0ALwSfHx8SY2NlZZWVm2pwBAkRsyZIgmTpxIzALwOwQtAJ+1bt06061bN509e9b2FAAoMn369NHMmTMVEBBA0ALwOwQtAJ+WkZFhoqKidOrUKdtTAKDQdevWTYsWLVKxYsWIWQB+iaAF4PM++ugjExERoaNHj9qeAgCFplOnTlq6dKmKFy9OzALwWwQtAL/w6aefmvDwcB0+fNj2FAC4bKGhoVq9erVKlSpFzALwawQtAL/xzTffmJCQEO3bt8/2FAC4ZHfffbcSExNVtmxZYhaA3yNoAfiV77//3oSEhGjv3r22pwDARbv99tuVnJys8uXLE7MAIIIWgB/avXu3CQkJ0c6dO21PAYALdvPNNystLU1VqlQhZgHgXwhaAH7pwIEDJiQkRF9//bXtKQBwXo0aNdLGjRtVvXp1YhYAfifA9gAAsKFGjRpOWlqabr75ZttTAOCcrr32WqWlpRGzAPAHCFoAfqtatWpOenq6br/9dttTAOAP1alTR8nJyapVqxYxCwB/gKAF4NcqV67spKSkqG3btranAMB/qF69upKTk1W/fn1iFgD+BEELwO+VK1fOSUhIUGhoqO0pACBJuvLKK5WWlqZGjRoRswBwDgQtAEgqU6aMEx8fr86dO9ueAsDPVaxYUevXr1eTJk2IWQA4D4IWAP6lZMmSzuLFi9W9e3fbUwD4qQoVKigpKUnNmzcnZgHgAhC0APA7JUqUcBYtWqS+ffvangLAz5QpU0arV6/WbbfdRswCwAUiaAHgvwQGBjozZ87U0KFDbU8B4CdKlCihZcuWqU2bNsQsAFwEghYA/oDjOM5bb72lkSNH2p4CwMcVL15cy5YtU2RkJDELABeJoAWAP+E4jjN+/Hjn2WeftT0FgI8KDAzU3LlzFR0dTcwCwCUgaAHgPJ577jln7NixtmcA8DGO42jq1KmKi4sjZgHgEjnGGNsbAMArTJ482QwdOlQ8bwK4XI7jaNKkSRo8eDAxCwCXgRNaALhADz/8sPPOO+8oIICnTgCXZ+zYscQsABQCTmgB4CItXLjQ9O7dW3l5ebanAPBCf/vb3/T0008TswBQCAhaALgEq1evNrGxscrOzrY9BYAXGTlypMaPH0/MAkAhIWgB4BKtXbvWdO/eXWfPnrU9BYAXGDZsmN566y1iFgAKEUELAJchJSXFdO7cWWfOnLE9BYCLlSlTRl988YUaNGhA0AJAIeKTTQDgMoSEhDjr169XhQoVbE8B4GKZmZm655579NVXX3GSAACFiBNaACgEn3zyiYmIiNDhw4dtTwHgYtWqVVNSUpJuvvlmTmoBoBAQtABQSLZv325CQkK0f/9+21MAuFilSpW0bt063XHHHUQtAFwmbjkGgELSpEkTJz09XbVr17Y9BYCLHT9+XKGhoUpLS+NUAQAuEye0AFDIfvjhB3PTTTcpMzPT9hQALla2bFmtXLlSISEhnNQCwCXihBYACtnUqVOJWQDndebMGXXo0EErV67kdAEALhFBCwCF6C9/+Yt57bXXbM8A4CVycnIUExOj+fPnE7UAcAkIWgAoJH/729/Myy+/bHsGAC+Tl5envn37atasWUQtAFwkvocWAArBW2+9ZUaMGGF7BgAv5jiOJkyYoOHDh/M9tQBwgQhaALhMM2fONAMHDhTPpwAul+M4evXVVzVq1CiiFgAuAEELAJdh3rx5pm/fviooKLA9BYAPGT16tMaOHUvUAsB5ELQAcInee+8906NHD+Xl5dmeAsAHPfHEExo3bhxRCwDnQNACwCVITEw0nTp1UnZ2tu0pAHzY4MGDNXHiRAUEBBC2APAHCFoAuEgpKSkmOjpaWVlZtqcA8AO9evXS7NmzFRgYSNQCwH8haAHgIvzzn/804eHhOn36tO0pAPxIXFyc5s6dq+LFixO1APA7BC0AXKDPPvvMBAcH6/jx47anAPBD0dHRWrJkiUqVKkXUAsC/ELQAcAG++OIL07ZtWx09etT2FAB+LDIyUsuXL1fp0qWJWgAQQQsA5/X999+bNm3a6MCBA7anAIBat26thIQElS9fnqgF4PcIWgA4hx9++MG0bt1a+/btsz0FAP6tZcuWWr9+vapUqULUAvBrBC0A/Imff/7ZtG7dWj/99JPtKQDwP2655RYlJSWpatWqRC0Av0XQAsAfOHTokGnTpo2+/fZb21MA4E81btxYKSkpqlWrFlELwC8F2B4AAG5z+PBhExwcTMwCcL1vvvlGbdu21d69ezmhAOCXCFoA+J0TJ06YyMhIff3117anAMAF+f7779WqVSvt3LmTqAXgdwhaAPiXzMxMEx0drY8//tj2FAC4KLt371arVq301VdfEbUA/ApBCwCSzp49a6KiorRp0ybbUwDgkhw4cEDt2rXTtm3biFoAfoOgBeD3cnJyTExMjNLT021PAYDLcujQIQUFBemDDz4gagH4BYIWgF/Lz883vXr10po1a2xPAYBCcfz4cYWGhio9PZ2oBeDzCFoAfqugoMD07t1bS5cutT0FAArV6dOnFRUVpaSkJKIWgE8jaAH4JWOMGTx4sBYsWGB7CgAUiczMTEVHR2vlypVELQCfRdAC8EuPPfaYpk2bZnsGABSpnJwcxcbGaunSpUQtAJ9E0ALwO08++aQZP3687RkA4BG5ubnq2bOnZs2aRdQC8DkELQC/8txzz5mxY8fangEAHpWfn68BAwbo7bffJmoB+BTHGJ7XAPiHCRMmmJEjR9qeAQDWOI6j1157TY8++qhjewsAFAaCFoBfmDRpkhk6dKjtGQDgCqNHj9bYsWOJWgBej6AF4PPmzJlj+vfvr4KCAttTAMA1iFoAvoCgBeDTli9fbuLi4pSXl2d7CgC4zuDBgzVx4kQFBAQQtgC8EkELwGetWrXKxMTEKDc31/YUAHCtQYMGaerUqUQtAK9E0ALwScnJyaZjx47KysqyPQUAXC8uLk5z585V8eLFiVoAXoWgBeBztmzZYsLDw3XmzBnbUwDAa0RHR2vJkiUqVaoUUQvAaxC0AHzK1q1bTWhoqE6dOmV7CgB4ncjISC1fvlylS5cmagF4BYIWgM/Ytm2bCQ4O1tGjR21PAQCv1bp1ayUkJKh8+fJELQDXI2gB+ITvvvvOtGnTRgcPHrQ9BQC8XsuWLbV+/XpVqVKFqAXgagQtAK+3c+dO06ZNG+3bt8/2FADwGc2bN1diYqKqVq1K1AJwLYIWgFfbu3evad26tXbt2mV7CgD4nMaNGyslJUW1atUiagG4UoDtAQBwqQ4ePGhCQ0OJWQAoIt98843atm2rvXv3cgICwJUIWgBe6ddffzXBwcH67rvvbE8BAJ/2/fffq1WrVtq5cydRC8B1CFoAXufEiRMmIiJC27dvtz0FAPzC7t271apVK3311VdELQBXIWgBeJWTJ0+asLAwffrpp7anAIBfOXDggNq1a6dt27YRtQBcg6AF4DUyMzNNx44d9eGHH9qeAgB+6dChQwoKCtIHH3xA1AJwBYIWgFfIyckx3bt318aNG21PAQC/dvz4cYWGhio9PZ2oBWAdQQvA9XJzc0337t21bt0621MAAJJOnz6tqKgoJScnE7UArCJoAbhafn6+6d27t+Lj421PAQD8TmZmpqKjo7Vy5UqiFoA1BC0A1zLGmIceekiLFi2yPQUA8Aeys7MVGxurZcuWEbUArCBoAbiSMcYMGTJE06dPtz0FAHAOubm5iouL0+zZs4laAB5H0AJwpTFjxmjKlCm2ZwAALkB+fr769++vt99+m6gF4FEELQDXeeaZZ8wrr7xiewYA4CIYYzRixAiNHz+eqAXgMY4xPOcAcI833njDPProo7ZnAAAuw+jRozV27FjH9g4Avo+gBeAaEydONMOGDbM9AwBQCIhaAJ5A0AJwhdmzZ5sBAwaooKDA9hQAQCEZPHiwJk6cqICAAMIWQJEgaAFYt2zZMhMXF6f8/HzbUwAAhWzQoEGaOnUqUQugSBC0AKxauXKliYmJUV5enu0pAIAiEhcXp3nz5qlYsWJELYBCRdACsCYpKcl07NhR2dnZtqcAAIpYdHS0li5dqpIlSxK1AAoNQQvAirS0NBMVFaWzZ8/angIA8JDIyEgtX75cpUuXJmoBFAqCFoDHffDBByY0NFSnT5+2PQUA4GFt2rRRfHy8ypcvT9QCuGwELQCP+vzzz01wcLCOHTtmewoAwJKWLVtq/fr1qlKlClEL4LIQtAA85ssvvzRt27bVkSNHbE8BAFjWvHlzJSYmqmrVqkQtgEtG0ALwiB07dpg2bdpo//79tqcAAFyicePGSklJUa1atYhaAJeEoAVQ5Pbs2WNat26t3bt3254CAHCZ6667TikpKapTpw5RC+CiBdgeAMC3/fLLL6Zt27bELADgD33//fdq1aqVdu7cySkLgItG0AIoMr/++qsJCwvTjz/+aHsKAMDFdu/erVatWunrr78magFcFIIWQJE4fvy4CQ8P1/bt221PAQB4gQMHDig4OFjbtm0jagFcMIIWQKE7efKkCQsL02effWZ7CgDAixw6dEht27bV1q1biVoAF4SgBVCoMjMzTXR0tD766CPbUwAAXujYsWMKCQlReno6UQvgvAhaAIUmJyfHdOvWTRkZGbanAAC82OnTpxUVFaXk5GSiFsA5EbQACkVubq7p1q2b1q9fb3sKAMAHZGZmKjo6WitXriRqAfwpghbAZcvPzzf333+/EhISbE8BAPiQ7Oxs9ejRQ8uWLSNqAfwhghbAZSkoKDB9+/bV4sWLbU8BAPignJwcxcXFafbs2UQtgP9B0AK4ZMYYM2TIEM2fP9/2FACAD8vPz1f//v319ttvE7UA/gNBC+CSPfHEE5o6dartGQAAP2CM0YgRIzR+/HiiFsC/EbQALslTTz1lXnvtNdszAAB+xBijUaNGacyYMUQtAEkELYBL8Pe//9289NJLtmcAAPzUuHHjiFoAkiTHGJ4LAFy4t956y4wYMcL2DAAA9PDDD2vixIlyHMexvQWAHQQtgAs2c+ZMM3DgQPG8AQBwi0GDBmnq1KkKCAggagE/RNACuCDz5s0zffv2VUFBge0pAAD8h549e2ru3LkqVqwYUQv4GYIWwHm99957pkePHsrLy7M9BQCAPxQdHa2lS5eqZMmSRC3gRwhaAOeUmJhoOnXqpOzsbNtTAAA4p8jISC1fvlylS5cmagE/QdAC+FOpqakmKipKWVlZtqcAAHBB2rRpo/j4eJUvX56oBfwAQQvgD73//vsmLCxMp0+ftj0FAICL0rJlS61fv15VqlQhagEfR9AC+B+fffaZadeunY4dO2Z7CgAAl6R58+ZKTExU1apViVrAhxG0AP7Dl19+adq2basjR47YngIAwGVp3LixUlJSVKtWLaIW8FEELYB/+/77702bNm104MAB21MAACgUjRo1UkpKimrXrk3UAj6IoAUgSdqzZ49p1aqV9uzZY3sKAACFql69ekpNTVWDBg2IWsDHBNgeAMC+n3/+2QQFBRGzAACftHv3brVq1Upff/01JzmAjyFoAT936NAhExoaqp9++sn2FAAAisz+/fsVHBysL774gqgFfAhBC/ixw4cPm3bt2unbb7+1PQUAgCJ36NAhBQUFaevWrUQt4CMIWsBPnThxwkRGRuqrr76yPQUAAI85duyYwsPDtWXLFqIW8AEELeCHMjMzTXR0tD7++GPbUwAA8LgTJ04oLCxMycnJRC3g5QhawM+cPXvWREVFadOmTbanAABgTWZmpqKjo7Vy5UqiFvBiBC3gR3JyckxMTIzS09NtTwEAwLrs7Gz16NFDy5YtI2oBL0XQAn4iPz/f9OrVS2vWrLE9BQAA18jJyVFcXJxmz55N1AJeiKAF/EBBQYHp3bu3li5dansKAACuk5+fr/79+2vixIlELeBlCFrAxxljzODBg7VgwQLbUwAAcC1jjIYPH6433niDqAW8CEEL+LjHH39c06ZNsz0DAADXM8bo0Ucf1fPPP0/UAl7CMYb/XgFf9eSTT5qxY8fangEAgNcZPXq0xo4d69jeAeDcCFrARz3//PPmueeesz0DAACv9fDDD2vixIlyHIewBVyKoAV80IQJE8zIkSNtzwAAwOsNGjRIU6dOVUBAAFELuBBBC/iYGTNmmEGDBon/tgEAKBw9e/bU3LlzVaxYMaIWcBmCFvAhc+bMMf3791dBQYHtKQAA+JTo6GgtXbpUJUuWJGoBFyFoAR+xfPlyExcXp7y8PNtTAADwSZGRkVq+fLlKly5N1AIuQdACPmDVqlUmJiZGubm5tqcAAODT2rRpo/j4eJUvX56oBVyAoAW8XEpKiomOjlZWVpbtKQAA+IW7775ba9asUcWKFYlawDKCFvBiW7ZsMeHh4Tpz5oztKQAA+JXmzZsrMTFRVatWJWoBiwhawEtt3brVhIaG6tSpU7anAADgl5o0aaLk5GTVqlWLqAUsIWgBL7Rt2zYTHByso0eP2p4CAIBfa9SokVJSUlS7dm2iFrCAoAW8zHfffWfatGmjgwcP2p4CAAAk1atXT6mpqWrQoAFRC3hYgO0BAC7czp07TXBwMDELAICL7N69W61atdLXX3/NSRHgYQQt4CX27t1rQkNDtW/fPttTAADAf9m/f7/atWunL774gqgFPIigBbzAwYMHTWhoqHbt2mV7CgAA+BMHDx5UUFCQtm7dStQCHkLQAi7366+/muDgYH333Xe2pwAAgPM4duyYwsPDtWXLFqIW8ACCFnCxEydOmMjISG3fvt32FAAAcIFOnDihsLAwJScnE7VAESNoAZc6c+aMiYqK0ieffGJ7CgAAuEiZmZmKjo7WqlWriFqgCBG0gAudPXvWREVFafPmzbanAACAS5Sdna3Y2FgtW7aMqAWKCEELuExOTo7p3r27NmzYYHsKAAC4TDk5OYqLi9OcOXOIWqAIELSAi+Tm5pqYmBitXbvW9hQAAFBI8vPz1a9fP02cOJGoBQoZQQu4RH5+vunTp49Wr15tewoAAChkxhgNHz5cb7zxBlELFCKCFnABY4x56KGHtHDhQttTAABAETHG6NFHH9Xzzz9P1AKFxDGG/54Am4wxZujQoZo8ebLtKQAAwENGjx6tsWPHOrZ3AN6OoAUsGz16tHnllVdszwAAAB728MMPa+LEiXIch7AFLhG3HAMW/fWvfyVmAQDwU5MnT9aDDz6ogoICTpiAS8QJLWDJG2+8YR599FHbMwAAgGU9e/bU3LlzVaxYMU5qgYtE0AIWTJw40QwbNsz2DAAA4BIdO3bUkiVLVLJkSaIWuAgELeBhs2fPNgMGDFBBQYHtKQAAwEXat2+vZcuWqXTp0kQtcIH4HlrAgxYsWEDMAn6qTJkyticAcLm1a9eqY8eOOnPmDCdOwAUiaAEPWblypenTpw8xC/ihihUrauPGjRo3bpztKQBcLiUlRRERETp58iRRC1wAbjkGPCApKcl07NhR2dnZtqcA8LAyZcpo/fr1atWqlSNJU6ZMMUOHDuXNLQDn1KJFC61fv15Vq1bl9mPgHAhaoIht3rzZRERE6MyZM7anAPCw0qVLa82aNWrbtu1/XJDOnz/f9OvXT3l5ebYnAnCxJk2aKCUlRTVr1iRqgT/BLcdAEfrggw9M+/btiVnAD5UoUUJLly79n5iVpF69ejnz5s1T8eLFbc8E4GLbt29X27Zt9fPPP3MCBfwJTmiBIvL555+b4OBgHTt2zPYUAB4WGBiohQsXKiYm5pynKgkJCSYmJkZZWVm2JwNwsXr16ik1NVUNGjTgpBb4L5zQAkXgq6++MiEhIcQs4IcCAgI0d+7c88asJEVFRTkrVqxQ6dKlbc8G4GK7d+9Wq1at9PXXX3MSBfwXghYoZDt27DBhYWE6cuSI7SkAPMxxHE2ZMkX33nvvBZ+iREREOOvXr1f58uVtzwfgYvv371e7du30xRdfELXA7xC0QCHas2ePCQ0N1f79+21PAWDBa6+9pgceeOCibwls3bq1k5qaqipVqth+CABc7ODBgwoKCtLWrVuJWuBfCFqgkPzyyy+mbdu22r17t+0pACx4+eWX9eijj17y97e1bNnSSUlJUdWqVW0/FAAuduzYMYWHh+uf//wnUQuIoAUKxa+//mrCwsL0448/2p4CwILnnntOY8aMuewPa7nlllucjIwM1apVy/ZDAuBiJ06cUFhYmFJSUoha+D0+5Ri4TMePHzft2rXTp59+ansKAAseeeQRvfHGG4X6yaM//fSTadeunX766SfbDw+Ai5UsWVKLFy9Wp06d+PRj+C1OaIHLcPLkSRMWFkbMAn5qyJAhhR6zknT11Vc76enpuvbaa20/RAAulp2drdjYWC1fvpwTKvgtgha4RJmZmSY6OlofffSR7SkALOjTp4/eeuutIvvz69Wr52zatEk33HCD7YcKwMVycnLUo0cPzZkzh6iFXyJogUuQk5NjunXrpoyMDNtTAFjQrVs3TZ8+XQEBAUV6m1+NGjWc1NRU3XzzzbYfMgAXy8/PV79+/TRx4kSiFn6HoAUuUm5urunWrZvWr19vewoACzp16qSFCxeqWLFiHvmetWrVqjkbNmzQHXfcYfuhA3AxY4yGDx+uN954g6iFXyFogYuQn59v7r//fiUkJNieAsCC0NBQLVq0SMWLF/foB7BUqlTJSU5OVnBwsO0vAQAXM8bo0Ucf1fPPP0/Uwm/wKcfABTLGmEGDBmnGjBm2pwCw4O6771ZiYqLKli1r7dNEMzMzTZcuXZSUlGT7ywHA5UaPHq2xY8fy6cfweQQtcAGMMebhhx/W1KlTbU8BYMHtt9+u5ORklS9f3vrFYU5OjunRo4dWrlxpewoAlxsyZIjefvttOY5j/bkLKCrccgxcgNGjRxOzgJ+6+eabtXbtWlfErCSVKFHCWbJkiWJiYmxPAeBykyZN0kMPPaSCggJOsOCzCFrgPJ566inz6quv2p4BwIJGjRopMTFRVapUcUXM/qZ48eLOwoUL1a9fP9tTALjctGnTdP/99ysvL4+ohU8iaIFzePHFF81LL71kewYAC6699lqlpaWpevXqrorZ3wQGBjozZszQsGHDbE8B4HILFixQt27dlJ2dTdTC5/A9tMCfeOutt8yIESNszwBgQZ06dZSRkaH69eu7MmZ/zxhjHnvsMY0fP972FAAu1759ey1btkylS5d2/XMbcKEIWuAPzJo1ywwYMED89wH4n+rVq2vjxo1q1KiRV13wjRs3zowZM8b2DAAuFxQUpNWrV7vmcwGAy0XQAv9l3rx5pm/fviooKLA9BYCHXXnlldqwYYOaNGnilRd6r7zyihk9erTtGQBc7p577tGaNWtUoUIFr3yuA36PoAV+Z8WKFSY2NlZ5eXm2pwDwsIoVKyotLU3Nmzf36gu8KVOmmKFDh/KmHIBzatGihdavX6+qVat69XMeQNAC/5KYmGg6deqk7Oxs21MAeFiFChWUnJys2267zScu7KZPn24efPBBohbAOTVp0kQpKSmqWbOmTzz3wT8RtICk1NRUExUVpaysLNtTAHhYmTJltHbtWrVp08anLugWLVpkevfurdzcXNtTALhYo0aNlJKSotq1a/vUcyD8B0ELv/f++++bsLAwnT592vYUAB5WokQJrVy5UpGRkT55IRcfH29iY2N5sw7AOdWvX18pKSlq0KCBTz4XwrcRtPBrn3/+uQkODtaxY8dsTwHgYcWLF9fy5csVHR3t0xdw69atM926ddPZs2dtTwHgYjVr1lRKSorXfige/FeA7QGALV9++aUJCQkhZgE/FBgYqLlz5/p8zEpSZGSks379epUvX972FAAutn//fgUHB+uLL77gtAtehaCFX9qxY4cJCwvTkSNHbE8B4GGO42jq1KmKi4vz+Zj9TevWrZ3U1FRVqVLF9hQALnbw4EEFBQXpww8/JGrhNQha+J09e/aY0NBQHThwwPYUAB7mOI4mTZqkgQMH+k3M/qZly5ZOcnKyqlatansKABc7duyYwsLC9M9//pOohVcgaOFXfv75ZxMUFKTdu3fbngLAgrFjx2rw4MF+F7O/ad68uZORkaFatWrZngLAxU6cOKGwsDClpKQQtXA9ghZ+49ChQyYsLEw//fST7SkALPjb3/6mJ554wm9j9jeNGzd20tPTVadOHdtTALjYmTNnFBUVpVWrVhG1cDU+5Rh+4fDhw6Zt27b66quvbE8BYMHIkSM1fvx4v4/Z39u9e7cJCQnRzp07bU8B4GIlSpTQggUL1K1bN55D4Uqc0MLnnThxwkRGRhKzgJ8aOnQoMfsH6tWr52zatEk33HCD7SkAXCwnJ0c9evTQnDlzOAWDKxG08GmZmZkmOjpaH3/8se0pACzo27ev3nzzTdszXKtGjRpOamqqbr75ZttTALhYfn6++vfvr+nTpxO1cB2CFj7r7NmzJioqSps2bbI9BYAF3bt31/Tp0xUQEMDp7DlUq1bN2bBhg+644w7bUwC4WEFBgR544AFNmDCBqIWrELTwSTk5OSYmJkbp6em2pwCwoHPnzlq4cKECAwOJ2QtQqVIlJzk5WW3btrU9BYCLGWM0cuRIvfDCC0QtXIMPhYLPyc/PN/fee6+WLFliewoAC8LCwrR69WqVLFmSmL1ImZmZpnPnzkpOTrY9BYDLjR49WmPHjuV5FtYRtPApBQUFpnfv3nr33XdtTwFgQXBwsBISElS6dGkusi5Rdna2iYuL08qVK21PAeByQ4YM0dtvvy3HcXjOhTXccgyfYYwxgwcPJmYBP3XHHXdo1apVxOxlKlmypLNkyRJ1797d9hQALjdp0iQ99NBDKigo4IQM1hC08BmPP/64pk2bZnsGAAuaNWumtWvXqly5csRsIShevLizaNEi9evXz/YUAC43bdo03X///crLyyNqYQVBC5/w5JNPmtdff932DAAW3HjjjUpJSVHlypWJ2UIUGBjozJgxQ8OGDbM9BYDLLViwQPfee69yc3OJWngcQQuv9/zzz5uxY8fangHAgoYNGyoxMVFXXHEFMVsEHMdx3nzzTT366KO2pwBwuaVLl6pz5846e/YsUQuP4kOh4NXefPNN88gjj9ieAcCCunXrKiMjQ/Xq1SNmPWDcuHFmzJgxtmcAcLmgoCDFx8fzLSDwGIIWXmvGjBlm0KBB4t9hwP9cddVVysjI0DXXXMMFkwcRtQAuxD333KM1a9aoQoUKPEejyBG08Epz5841/fr1U0FBge0pADzsyiuv1MaNG9W4cWMulCyYMmWKGTp0KM+/AM6pRYsWfEsIPIKghddZvny5iYuLU15enu0pADysUqVKSktL0y233MIFkkX/+Mc/zL9+VIftKQBcrEmTJkpJSVHNmjV5zkaRIWjhVVavXm26d++u3Nxc21MAeFiFChWUkpKili1bcmHkAosWLTL/+lEdtqcAcLFGjRopJSVFtWvX5rkbRYKghddISUkx0dHRysrKsj0FgIeVKVNG69atU+vWrbkgcpH4+HgTExOj7Oxs21MAuFj9+vWVkpKiBg0a8ByOQkfQwiv885//NGFhYTpz5oztKQA8rESJElq1apUiIiK4EHKhdevWmW7duuns2bO2pwBwsTp16ig1NVUNGzbkuRyFiqCF623dutWEhobq1KlTtqcA8LDixYvrvffeU1RUFBdALrZx40YTHR3N8zSAc6pevbqSkpJ000038ZyOQhNgewBwLl988YVp374w2cR3AABC2UlEQVQ9F0mAHwoMDNS8efOIWS/Qpk0bJzU1VVWqVLE9BYCLHTx4UEFBQfrwww85UUOhIWjhWt9//70JCwvT0aNHbU8B4GEBAQGaPXu2evToQcx6iZYtWzrJycmqWrWq7SkAXOzYsWMKCwvTP//5T6IWhYKghSvt3LnTtG3bVgcPHrQ9BYCHOY6jSZMmqVevXsSsl2nevLmTkZGhWrVq2Z4CwMVOnDihsLAwpaSkELW4bAQtXGfv3r0mNDRU+/btsz0FgAWvvPKKHnroIWLWSzVu3NhJT09XnTp1bE8B4GJnzpxRVFSUVq9eTdTishC0cJWDBw+asLAw7dq1y/YUABa8+OKLeuyxx4hZL3fdddc5mzZt0rXXXmt7CgAXy87OVkxMjJYvX07U4pIRtHCNw4cPm3bt2unbb7+1PQWABU8//bT+8pe/ELP/r707j4uy3P8//rlnWBQExB00JNAwXHJJLXcTQUURU3HL3JcSS7PUPOdkx05HzZNa5lKE5pKSmguC7Ltlmy3Wt3PM9sU0NVdQQLh+f/w6PeqUCgpz3TPzev7ZzND7mh7T9XnPdc+Mg2jatKlRUFAgLVu21B0FgImVlJTIiBEjZOPGjZRa3BB+tgemcO7cOdWnTx85dOiQ7igANHjooYfkueeeo8w6oJ9++kmFh4fLRx99pDsKABOzWCzy0ksvyaRJk9gLUCmc0EK7wsJCNXDgQMos4KQmTpwoK1eu1B0D1aRBgwZGTk6OdO7cWXcUACZWXl4uU6ZMkZUrV3Lahkqh0EKrS5cuqYEDB8qBAwd0RwGgwdixYyUuLk4Mw+AdeQfm6+trZGZmSu/evXVHAWBiSimZPXu2LFq0iFKLCuOSY2hTUlKihgwZIvv379cdBYAG9957r7z22mvi4uJCmXUSRUVFKjo6WjIyMnRHAWBy8+bNkyVLlrA/4LootNCitLRUDRs2TBITE3VHAaBBRESE7N27V9zd3RlWnExxcbEaOXKk7NmzR3cUACY3Y8YMWbVqFVfx4Jq45Bg2V1ZWpsaNG0eZBZxUnz59ZM+ePZRZJ+Xu7m5s375dhg0bpjsKAJNbvXq1TJ8+XcrLyzmBw1VRaGFTSin1wAMPyLZt23RHAaBBly5dZM+ePVKjRg3KrBNzdXU1EhISZPz48bqjADC5l156ScaOHStXrlyh1OJPUWhhM0opFRsbK3FxcbqjANCgXbt2kpycLLVq1aLMQqxWq7F+/XqZOXOm7igATG7r1q0yZswYKS0tpdTiDyi0sJnHH39c1qxZozsGAA3atGkjGRkZUrt2bcosfmUYhvHcc8/JI488ojsKAJPbvn27DBkyRC5fvkypxe/wpVCwiSeeeEI99dRTumMA0OC2226TvLw8adSoEWUWV7V06VI1f/583TEAmFyvXr1k3759XO2DX1FoUe1WrFihePcdcE7BwcGSn58v/v7+DB64LkotgIro1q2bJCcni7e3N3sLKLSoXi+88ILi81GAc2rSpInk5+fLrbfeysCBCluzZo2KjY0V5hMA19KhQwdJS0uTunXrssc4OQotqs3GjRvVxIkTpby8XHcUADbWoEEDycvLkxYtWjBooNLi4uLULz/VoTsKABMLDQ2VzMxM8fPzY69xYhRaVIudO3eqkSNHSllZme4oAGysXr16kpubKy1btmTAwA3btm2buv/+++XKlSu6owAwsRYtWkhGRoY0adKEPcdJUWhR5fbs2aOGDx/OEAI4IR8fH8nMzJQ777yTwQI3bd++fWr48OFSXFysOwoAEwsMDJTMzEwJDg5m73FCFFpUqYyMDDVo0CCGD8AJeXh4SGpqqnTv3p2BAlUmJSVFDR06VC5duqQ7CgATu+WWWyQrK0uaN2/OHuRkKLSoMm+88YaKiIiQwsJC3VEA2FjNmjUlOTlZevfuzSCBKpeXl6cGDRokFy5c0B0FgIk1bNhQMjIypHXr1uxFTsSiOwAcw1tvvaX69+9PmQWckJubm+zYsYMyi2rTs2dPIysrS+rUqaM7CgATO3HihPTs2VPeeecdTuycCIUWN+2jjz5SAwYM4J1zwAlZrVbZsmWLREZGUmZRrTp27GhkZGRIvXr1dEcBYGJnzpyR8PBwefPNNym1ToJCi5vyySefqLCwMDlz5ozuKABszGKxyKZNm2T48OGUWdhE+/btjfz8fPH399cdBYCJnTt3TsLDwyUzM5NS6wQotLhhn3/+uQoPD5dTp07pjgLAxgzDkLVr18ro0aMps7Cp22+/3cjOzpYmTZrojgLAxAoLC2XgwIGSmJhIqXVwFFrckG+//Vb17dtXfvzxR91RAGiwbNkymTp1KmUWWoSEhBgHDhyQ4OBg3VEAmFhxcbEMHz5cdu3aRal1YBRaVNoPP/ygevfuLV9//bXuKAA0WLx4scyZM4cyC62aNm1qFBQUSMuWLXVHAWBiJSUlEhMTI5s2baLUOigKLSrl5MmTKjw8XL788kvdUQBosHDhQpk/fz5lFqbg5+dnZGdnyx133KE7CgATKysrk4kTJ0p8fDyl1gFRaFFhZ8+eVf369ZNPP/1UdxQAGsyaNUuefPJJyixMpUGDBkZOTo507txZdxQAJlZWViZTpkyRlStXUmodDIUWFXL+/HkVHh4u77//vu4oADSYMWOGLF++XHcM4E/5+voamZmZ0rt3b91RAJiYUkpmz54tixYtotQ6EEMp/nvi2oqKilT//v0lPz9fdxQAGowbN07Wr18vFouF01mYWlFRkYqOjpaMjAzdUQCY3Lx582TJkiXsaw6AQotrKikpUdHR0ZKSkqI7CgANhg4dKgkJCeLi4sKmD7tQXFysRo4cKXv27NEdBYDJzZgxQ1atWiWGYbDH2TEKLa6qtLRU3XvvvZKUlKQ7CgANBg8eLDt27BBXV1c2etiVkpISNWbMGNm5c6fuKABMbtq0abJmzRquQrJjfIYWf6qsrEzdf//9lFnASfXt21cSEhIos7BLbm5uRkJCgowfP153FAAm9+KLL8rYsWPlypUrnPLZKQot/kAppaZNmyYJCQm6owDQoGvXrrJ7926pUaMGZRZ2y2q1GuvXr5fY2FjdUQCY3NatW2XMmDFSWlpKqbVDFFr8jlJKPfjggxIfH687CgANOnfuLCkpKeLp6UmZhd0zDMN4/vnnZfbs2bqjADC57du3y5AhQ+Ty5cuUWjtDocXvzJs3T9atW6c7BgAN7rjjDtm/f794eXlRZuEwDMMwli9fbixZskR3FAAml5ycLP3795eLFy9Sau0IhRa/+stf/qKWLVumOwYADUJCQiQtLU3q1KlDmYVDmjdvHqUWwHXl5ubKgAED5Pz585RaO8G3HENERJYvX67mzJmjOwYADZo1ayZ5eXni7+9PmYXDW7NmjYqNjRXmHwDX0qFDB0lLS5O6deuyN5ochRayatUq9dBDD+mOAUCDW265RfLz8yUwMJANG04jLi5OTZ8+XcrLy3VHAWBioaGhkpmZKX5+fuyRJkahdXIbNmxQkyZN4p1qwAk1bNhQ8vLyJCQkhI0aTmfbtm3q/vvvlytXruiOAsDEWrRoIZmZmdK4cWP2SpOi0DqxLVu2qHHjxvEONeCE6tevL7m5uRIaGsoGDae1b98+NXz4cCkuLtYdBYCJBQYGSlZWlgQFBbFnmhCF1knt3r1bxcTE8M404IR8fHwkKytLOnTowMYMp5eSkqKGDh0qly5d0h0FgIkFBARIZmamNG/enL3TZCi0Tig9PV1FRUXxjjTghDw9PSU1NVW6devGhgz8Ii8vTw0aNEguXLigOwoAE2vYsKFkZGRI69at2UNNhJ/tcTJZWVlq8ODBlFnACXl4eEhSUhJlFvgfPXv2NFJSUsTHx0d3FAAmduLECenZs6e88847nAiaCCe0TuTgwYMqPDxcLl68qDsKABtzc3OTPXv2SP/+/SmzwFW8//77KiIiQk6dOqU7CgATq127tuzfv1/uvvtu9lQT4ITWSXz44YcqMjKSMgs4IVdXV9mxYwdlFriO9u3bG7/8JrPuKABM7OzZs9K3b1/JysriZNAEKLRO4OOPP1ZhYWFy5swZ3VEA2JjVapVNmzZJVFQUZRaogNDQUCM7O1uaNGmiOwoAEyssLJTIyEhJTEyk1GpGoXVwR48eVeHh4XL69GndUQDYmGEYsm7dOhk5ciRlFqiEkJAQ48CBAxIcHKw7CgATKy4uluHDh8uuXbsotRpRaB3Yt99+q/r27SvHjx/XHQWAjRmGIatXr5bJkydTZoEb0LRpU6OgoEBatmypOwoAEyspKZGYmBjZtGkTpVYTCq2D+v7771WvXr3km2++0R0FgAZLliyRBx54gDIL3AQ/Pz8jOztb2rRpozsKABMrKyuTiRMnSnx8PKVWAwqtA/rpp59UeHi4fPXVV7qjANDgqaeekrlz51JmgSrQoEEDIzc3Vzp37qw7CgATKysrkylTpsjKlSsptTZGoXUwZ8+eVf369ZN///vfuqMA0GD27Nny17/+lTILVCFfX18jLS1NunbtqjsKABNTSsns2bPlqaeeotTaEL9D60DOnTunwsLC5L333tMdBYAGsbGxsmrVKsosUE2KiopUdHS0ZGRk6I4CwOTmzZsnS5YsYU+2AQqtgygqKlL9+vWTgoIC3VEAaDB+/HiJj48Xi8XC5glUo+LiYjVixAjZu3ev7igATO7RRx+VZ555RgzDYG+uRhRaB3Dp0iUVGRkpOTk5uqMA0GDYsGGSkJAgVquVDROwgZKSEjVmzBjZuXOn7igATG7atGmyZs0a3nCuRnyG1s6VlJSo4cOHU2YBJxUdHS3btm2jzAI25ObmZiQkJMj48eN1RwFgci+++KLcf//9cuXKFU4RqwmF1o6VlZWpsWPHSnJysu4oADQIDw+XhIQEcXFxocwCNma1Wo3169dLbGys7igATO7VV1+VMWPGSGlpKaW2GnDJsZ0qLy9X999/v7z66qu6owDQoFu3bpKamiqenp6UWUAjpZSaM2eOrFixQncUACYXGRkpO3fulBo1arB3VyFOaO2QUko9+OCDlFnASd11112yf/9+yixgAoZhGMuXLzcWLlyoOwoAk0tOTpb+/fvLxYsXOVGsQpzQ2qFHH31UPfvss7pjANCgbdu2kp2dLb6+vpRZwGSWLl2q5s+frzsGAJPr3r27JCUlibe3N3t5FaDQ2pkFCxaoxYsX644BQIPWrVtLTk6O1K1blw0QMKk1a9ao2NhYYb4CcC0dOnSQtLQ09vQqQKG1I4sWLVJc0gQ4p+bNm0teXp74+fmx8QEmFxcXp6ZPny7l5eW6owAwsbZt20p6errUr1+fvf0mUGjtxHPPPadmzZqlOwYADQICAiQ/P1+aNm3KhgfYiW3btqlffqpDdxQAJtaiRQvJzMyUxo0bs8ffIAqtHVi/fr2aPHkyly8BTqhx48aSn58vQUFBbHSAnUlMTFQxMTFSXFysOwoAEwsMDJSsrCz2+htEoTW5TZs2qQkTJnDZEuCE6tevL7m5uRIaGsoGB9ip/fv3q2HDhsmlS5d0RwFgYgEBAZKZmSnNmzdnz68kCq2J7dq1S40YMYLLlQAnVLt2bcnOzpZ27dqxsQF2Li8vTw0aNEguXLigOwoAE2vYsKFkZGRI69at2fsrgUJrUqmpqSo6OprLlAAn5O3tLZmZmdKxY0c2NMBBvPHGGyoyMlLOnTunOwoAE/P19ZXU1FTp1KkTM0AFWXQHwB9lZmaqIUOGUGYBJ+Th4SH79u2jzAIOpmvXrkZ2drbUq1dPdxQAJnbmzBmJiIiQgwcPcupYQRRak3nzzTfVkCFD5PLly7qjALAxNzc3ef3116VHjx6UWcABtW/f3sjLyxN/f3/dUQCY2NmzZ6Vv376SlZVFqa0ACq2JvP3226pfv35y8eJF3VEA2Jirq6u8/vrr0q9fP8os4MBCQ0ON7OxsadKkie4oAEyssLBQoqKiJC0tjVJ7HRRakzh8+LAaMGAAXxgBOCGr1SqbN2+WgQMHUmYBJxASEmIcOHBAgoODdUcBYGJFRUUSFRUlu3btotReA4XWBD777DMVEREhP//8s+4oAGzMMAx58cUXZcSIEZRZwIk0bdrUKCgokJYtW+qOAsDESkpKJCYmRjZt2kSpvQoKrWZffPGF6t27txw/flx3FAA2ZhiGrFmzRiZNmkSZBZyQn5+fkZWVJW3atNEdBYCJlZWVycSJE2X9+vWU2j9BodXou+++U3379pVjx47pjgJAg2eeeUamT59OmQWcWMOGDY3c3Fzp3Lmz7igATKysrEwmT54szz33HKX2f1BoNfnpp59UeHi4fPXVV7qjANDg6aeflkcffZQyC0B8fX2NtLQ06dKli+4oAExMKSWzZs2Sp556ilL7GxRaDU6dOqXuuece+c9//qM7CgAN/vrXv8qCBQsoswB+5ePjY6Snp0vfvn11RwFgck888YTMnz+fUvsLQymeC1s6d+6c6tOnjxw6dEh3FAAaPPTQQ/Lcc89RZgH8qeLiYjVixAjZu3ev7igATO7RRx+VZ555RgzDcOq5gkJrQ4WFhapfv35y4MAB3VEAaDBx4kR5+eWXnX7jAXBtJSUlasyYMbJz507dUQCY3LRp02TNmjVisVicdrag0NrIpUuX1IABAyQ3N1d3FAAajB07Vl555RWn3nAAVFxZWZmaNGmSbNy4UXcUACY3ZswYeeWVV8TFxcUpZww+Q2sDJSUlatiwYZRZwEnde++9sn79esosgAqzWq3Ghg0bJDY2VncUACb36quvypgxY6S0tNQpTyo5oa1mZWVlatSoUbJjxw7dUQBoEBERIXv37hV3d3fKLIBKU0qpOXPmyIoVK3RHAWBykZGRsnPnTqlRo4ZTzRyc0FajsrIyNXbsWMos4KT69Okje/bsocwCuGGGYRjLly83Fi5cqDsKAJNLTk6WAQMGyMWLF53qxJIT2mqilFLTpk2TuLg43VEAaHD33XdLenq61KpVizILoEosXbpUzZ8/X3cMACbXvXt3SUpKEm9vb6eYQSi01UAppWJjY2XNmjW6owDQoF27dpKVlSW+vr5OsZEAsJ3Vq1ermTNnCvMbgGu58847JTU1VerWrevwswiXHFeDxx9/nDILOKnWrVtLRkYGZRZAtZgxY4axbt06sVgY4QBc3XvvvSdhYWFy8uRJh3/3ixPaKrZw4UK1aNEi3TEAaHDbbbdJXl6eNGrUiDILoFpt3bpVjRs3Tq5cuaI7CgATa9GihWRmZkrjxo0ddjah0FahlStXqtmzZ+uOAUCDgIAAKSgokICAAIfdMACYS2JiooqJiZHi4mLdUQCYWGBgoGRlZUlQUJBDzigU2iqyevVqxW/FAc6pSZMmkp+fL7feeqtDbhQAzGv//v1q2LBhcunSJd1RAJhYQECAZGZmSvPmzR1uVqHQVoGNGzeqiRMnSnl5ue4oAGysQYMGkpeXJy1atHC4DQKAfcjLy1ODBg2SCxcu6I4CwMQaNmwoGRkZ0rp1a4eaWSi0N2nnzp1q5MiRUlZWpjsKABurV6+e5OTkSKtWrRxqYwBgfw4cOKAiIyPl/PnzuqMAMLE6depIamqqdOzY0WFmF74i7ybs2bNHjR49mjILOCEfHx9JSUmhzAIwhW7duhnZ2dlSr1493VEAmNjPP/8s4eHhcvDgQYc51eSE9gZlZGSoQYMG8UUMgBPy8PCQ1NRU6d69O2UWgKl8+umnKiwsTH788UfdUQCYmKenp+zdu1f69Olj97MMJ7Q34I033lBDhgyhzAJOqGbNmpKUlESZBWBKoaGhRk5OjjRp0kR3FAAmVlhYKFFRUZKWlmb3p5sU2kp66623VP/+/aWwsFB3FAA25ubmJjt27JDevXtTZgGYVkhIiFFQUCDBwcG6owAwsaKiIomKipJdu3bZdaml0FbCRx99pCIjI/kWQcAJWa1W2bx5s0RGRlJmAZheYGCgUVBQIKGhobqjADCxkpISiYmJkc2bN9ttqaXQVtCRI0dURESE/Pzzz7qjALAxi8UimzZtkpiYGMosALvh5+dnZGdnS5s2bXRHAWBiZWVlMmHCBFm/fr1dlloKbQV8/vnnqnfv3nLixAndUQDYmGEYsnbtWhk9ejRlFoDdadiwoZGbmyudO3fWHQWAiZWVlcnkyZPlueees7tSS6G9ju+++0717duXbwsEnNSyZctk6tSplFkAdsvX19dIS0uTLl266I4CwMSUUjJr1ix56qmn7KrUUmiv4YcfflC9e/eWr7/+WncUABosXrxY5syZQ5kFYPd8fHyM9PR0CQsL0x0FgMk98cQTMn/+fLsptRTaqzh58qQKDw+XL774QncUABosXLhQ5s+fT5kF4DA8PT2NpKQkGTx4sO4oAExu6dKlMnfuXKWUMn2xNewgo82dPXtW9enTR95//33dUQBoMGvWLFmxYgVlFoBDKikpUaNHj5bXX39ddxQAJjd9+nRZvXq1WCwW085FFNr/cf78eRUWFibvvvuu7igANJg0aZLExcWJYRim/R83ANyssrIyNWnSJNm4caPuKABMbsyYMfLKK6+Ii4uLKWcjLjn+jaKiIhUVFUWZBZzUuHHj5KWXXqLMAnB4VqvV2LBhg8yYMUN3FAAm9+qrr8p9990npaWlpjwJ5YT2FyUlJSo6OlpSUlJ0RwGgwdChQyUhIcG07z4CQHVQSqlHHnlEVq5cqTsKAJMbOHCg7NixQ2rUqGGqWYkTWhEpLS1Vw4YNo8wCTmrw4MGybds2yiwAp2MYhrFixQrjiSee0B0FgMklJSXJgAED5OLFi6Y6EXX6E9qysjI1cuRI2blzp+4oADSIiIiQvXv3iru7O2UWgFN76qmnFMUWwPX06tVLkpKSxNPT0xSzk1MXWqWUmjJlisTHx+uOAkCDrl27Slpammn+hwwAuq1evVrNnDlTnHk+BHB93bp1k5SUFKlVq5b2GcppLzlWSqkZM2ZQZgEn1blzZ0lJSaHMAsBvzJgxw1i3bp1YLE47IgKogAMHDpjm8mOn/b/VnDlzZO3atbpjANCgXbt2kpqaKl5eXpRZAPgfU6dONTZs2CBWq1V3FAAmVlBQINHR0XLp0iWtpdYpLzn+61//qp5++mndMQBoEBISInl5edKwYUPKLABcQ2JiooqJiZHi4mLdUQCY2MCBA2X37t3avlzT6U5oly9fTpkFnFSzZs0kOzubMgsAFRAVFWXs2rVLatSooTsKABNLSkqSBx98UNu/36kK7apVq9ScOXN0xwCgwS233CIZGRni7+9PmQWAChowYIDxyxe/6I4CwMTi4uJk0aJFWi79dZpLjuPi4tS0adP41j7ACfn7+0teXp40a9aMMgsAN6CgoEANHDhQzp8/rzsKABPbsGGDjB8/3qbzllMU2i1btqhx48ZJeXm57igAbKx+/fqSk5MjLVu2pMwCwE04dOiQioiIkNOnT+uOAsCk3NzcJDMzU7p3726zucvhC+3u3btVTEyMXLlyRXcUADbm4+MjWVlZ0qFDB8osAFSBTz/9VIWFhcmPP/6oOwoAk2rUqJG899570rhxY5vMXw79Gdr09HQ1atQoyizghDw9PSUpKYkyCwBVKDQ01MjJyZEmTZrojgLApI4fPy7Dhg2T4uJim5ycOmyhzc7OVoMHD+ar5gEnVLNmTUlKSpJu3bpRZgGgioWEhBgFBQUSHBysOwoAk3rrrbfkscces8m/yyEvOT548KAKDw+Xixcv6o4CwMbc3Nxk9+7dMmDAAMosAFSj7777ToWFhclnn32mOwoAEzIMQ3bv3i2DBw+u1pnM4Qrthx9+qO655x45c+aM7igAbMzV1VV27twpUVFRlFkAsIETJ06o8PBwOXz4sO4oAEzI19dXPvzwQwkICKi22cyhLjk+fPiwCgsLo8wCTshqtcqWLVsoswBgQw0bNjSysrKkffv2uqMAMKEzZ87IL782U22nqA5TaI8ePar69evHV8kDTsgwDFm3bp3ExMRQZgHAxurVq2dkZ2dLly5ddEcBYEK5ubmyatWqavv7DnHJ8bfffqt69Ogh33zzje4oAGzMMAx54YUX5MEHH6TMAoBGhYWFKjo6WjIzM3VHAWAyHh4ecvjwYQkODq7yec3uT2i///571bt3b8os4KSWLFlCmQUAE/D09DSSkpIkKipKdxQAJlNUVCRTpkwRVQ2nqXZdaI8fP6769OkjX375pe4oADRYtGiRzJ07lzILACbh7u5u7NixQ4YMGaI7CgCTycnJkfj4+Cr/u3Z7yfHZs2fVPffcIx988IHuKAA0mD17tixfvpwyCwAmVFZWpiZNmiQbN27UHQWAidSpU0c+++wzqVu3bpXNcHZ5Qnv+/HnVt29fyizgpGJjYymzAGBiVqvVWL9+vUyePFl3FAAm8vPPP8uiRYuq9G/a3QltUVGR6t+/v+Tn5+uOAkCD8ePHS3x8vFgsFgotAJicUko98sgjsnLlSt1RAJiE1WqV999/X9q0aVMls5xdndBeunRJDRo0iDILOKnRo0dTZgHAjhiGYaxYscKYN2+e7igATKKsrEweeeSRKvt7dlNoS0pKVExMjGRnZ+uOAkCD6Oho2bhxI2UWAOzQkiVLjCVLluiOAcAksrKyJDMzs0ouFbaLS47LysrU6NGjZfv27bqjANAgPDxcEhMTxd3dnTILAHZs9erVaubMmWIP8yeA6nXnnXfKO++8I4Zh3NR8Z/oT2vLycjVu3DjKLOCkunXrJrt27aLMAoADmDFjhrFu3TqxWEw/ggKoZu+9957s3bv3pv+OqU9olVJq6tSp8vLLL+uOAkCDLl26SFpamtSqVYsyCwAOZOPGjWrSpElSVlamOwoAjVq3bi0fffTRTZ3Smvrtsblz51JmASfVtm1bSUpKoswCgAMaN26csXXrVnF1ddUdBYBGH3/8sSQnJ9/U3zBtoV2wYIH617/+pTsGAA1atWolmZmZ4uvrS5kFAAcVExNj7N69W2rUqKE7CgCNli1bdlOPN+Ulx4sWLVILFy7UHQOABs2bN5e8vDzx8/OjzAKAE8jNzVWDBg2Sixcv6o4CQJM333xT7r777hua/Ux3Qrt8+XLKLOCkbr31VsnOzqbMAoAT6dWrl7F//37x9vbWHQWAJs8+++wNP9ZUJ7Tr169XkydP5qvcASfUuHFjyc/Pl6CgIMosADihQ4cOqYiICDl9+rTuKABszMXFRb7++mtp3LhxpedA05zQbtq0SU2ZMoUyCzih+vXrS3p6OmUWAJxYhw4djPz8fPHz89MdBYCNXblyRTZs2HBDjzXFCe2uXbvUiBEj5MqVK7qjALCx2rVrS1ZWlrRv354yCwCQI0eOqLCwMPn+++91RwFgQ7fccot89dVXYrVaKzUTaj+h3bdvnxo5ciRlFnBCPj4+kpGRQZkFAPwqJCTEyM3NlaZNm+qOAsCGvvvuO0lLS6v047QW2szMTBUTEyOlpaU6YwDQwMPDQxITE+XOO++kzAIAfic4ONgoKCiQ5s2b644CwIa2bNlS6cdou+T4zTffVBEREXxFO+CE3NzcZO/evdKvXz/KLADgqk6cOKH69u0rH3/8se4oAGzAw8NDTpw4IbVq1arwjKjlhPadd95R/fr1o8wCTsjV1VV27txJmQUAXFfDhg2NvLw86dSpk+4oAGygqKhIkpKSKvUYmxfaw4cPq/79+8uFCxds/a8GoJnVapXNmzfLoEGDKLMAgArx9fU10tPTpUuXLrqjALCBhISESt3fppccf/bZZ6pnz55y/PhxWz8vADQzDEPi4uJk0qRJlFkAQKUVFhaq6OhoyczM1B0FQDVyd3eXU6dOVfiyY5ud0H7xxReqd+/elFnACRmGIWvWrKHMAgBumKenp5GUlCRRUVG6owCoRsXFxZKTk1Ph+9uk0H7//feqT58+cuzYMW1PDAB9VqxYIdOnT6fMAgBuiru7u7F9+3aJjo7WHQVANUpOTq7wfau90J49e1ZFRkbKN998o/VJAaDH008/LQ8//DBlFgBQJdzd3Y2dO3fKuHHjdEcBUE2Sk5NFVfCzsdVaaAsLC1X//v3l8OHDup8TABr85S9/kQULFlBmAQBVymq1GvHx8TJp0iTdUQBUg++//14+/fTTCt232gptaWmpGj58uLz11lu6nw8AGsyaNUv+8Y9/UGYBANXCarUacXFxEhsbqzsKgGqQl5dXoftVW6F96KGHJCUlRffzAECDCRMmyPLly3XHAAA4OMMwjFWrVhlPPPGE7igAqtiBAwcqdL9q+dmeF154Qc2cOVP3cwBAg7Fjx8orr7wiFouF01kAgM0sXbpUzZ8/X3cMAFXEz89Pjh07dt15ssoLbVZWlurXr59cuXJF93MAwMaGDRsmCQkJYrVaKbMAAJt79tln1WOPPSbVcWADwPY+//xzCQ4OvuZcWaWXHH/55ZcqJiaGMgs4oYEDB8qrr75KmQUAaDNnzhxj9erVYrHY5JcpAVSzQ4cOXfc+VfZqLy0tVffdd5/8/PPPutcNwMb69OkjO3bsEDc3N8osAECrBx54wNi8ebO4uLjojgLgJn344YfXvU+VFdp58+bJwYMHda8ZgI3dfffdsmfPHqlRowZlFgBgCqNHjzZeffVVcXV11R0FwE344IMPrnufKvkM7b59+9TgwYP5vALgZDp27CiZmZni7e1NmQUAmE5iYqKKiYmR4uJi3VEA3ICGDRvK8ePHrzln3nShPX78uGrVqpWcPn1a93oB2FCbNm0kJydH6tSpQ5kFAJhWenq6GjJkiBQVFemOAuAGnDp1SurWrXvVefOmLzmeMWMGZRZwMs2bN5e0tDTKLADA9MLDw420tDTx9vbWHQXADfj888+veftNFdotW7aoXbt26V4jABsKCAiQjIwMadSoEWUWAGAXunXrZmRnZ0vdunV1RwFQSdVWaI8fP64efvhh3esDYENNmjSR3Nxcadq0KWUWAGBXOnToYOTl5Ymfn5/uKAAq4ejRo9e8/YYL7cMPP8xP9ABOpFGjRpKVlSW33norZRYAYJdatmxpZGVlib+/v+4oACroyy+/vObtN1Ros7Ky1Pbt23WvDYCN1KtXTzIyMuS2226jzAIA7Nrtt99uvPHGGxIUFKQ7CoAKOH78+DVvr3ShvXLlipo9e7budQGwER8fH0lJSZFWrVpRZgEADiEwMNDIycmR5s2b644C4DqqvNCuWLFCPv74Y93rAmADHh4esm/fPrnzzjspswAAhxIQEGAUFBRI69atdUcBcA3XK7SV+h3aU6dOqeDgYDl//rzudQGoZjVr1pTk5GTp3bs3ZRYA4LBOnTqlwsPD5YMPPtAdBcCfsFgsUlxcLC4uLn86k1bqhPaf//wnZRZwAm5ubrJjxw7KLADA4dWrV8/IycmRLl266I4C4E+Ul5fLhQsXrnp7hQvtt99+q9asWaN7PQCqmdVqlc2bN0tkZCRlFgDgFHx8fIz09HQJCwvTHQXAn6iSQvvkk09KcXGx7rUAqEYWi0U2bdokMTExlFkAgFPx9PQ0kpKSJCoqSncUAP/j4sWLV72tQoX2iy++UJs2bdK9DgDVyDAMiYuLk9GjR1NmAQBOyd3d3di+fbtER0frjgLgN2660P7rX/+SsrIy3esAUI2ef/55mThxImUWAODU3N3djR07dsioUaN0RwHwi8uXL1/1tusW2hMnTqiNGzfqXgOAarR48WKJjY2lzAIAICIuLi7G5s2bZdKkSbqjAJD/fyXh1Vy30K5cuVIuXbqkew0AqsnChQtl/vz5lFkAAH7DarUacXFxMmvWLN1RAFzDNQttYWGhWrdune6MAKrJo48+Kk8++SRlFgCAP2EYhrFixQpj7ty5uqMAuIprFtqEhAQ5e/as7owAqsGDDz4ozzzzjO4YAACY3tKlS40nn3xSdwzAaVksV6+t1yy0nM4Cjun++++XVatWiXGtDyQAAIBfLVy40HjhhReErROwPU9Pz6vedtVC++6776r33ntPd3YAVWzo0KESHx8vFouFHRkAgEqYMWOGsXbt2mueFgGoel5eXle97aqvxpdeekl3bgBVbPDgwbJt2zZxcXGhzAIAcAOmTZtmxMfHi9Vq1R0FcBq1atW66m2GUuoP/7C4uFg1atSIz88CDiQsLEz27dsnNWrUoMwCAHCTtm/fru677z4pLS3VHQVweEVFRVKzZs0/nWH/9IQ2OTmZMgs4kJ49e8revXspswAAVJGYmBhj586d4u7urjsK4NBq1qx51TIrcpVCu3XrVt25AVSRzp07y759+8TDw4MyCwBAFYqKijJSU1OveTkkgJvj5+d3zdv/UGjPnz+vkpOTdecGUAXatm0rKSkp4uXlRZkFAKAa9OrVy0hOTr7ml9YAuHGNGjW65u1/KLQpKSly+fJl3bkB3KSQkBBJTU0VX19fyiwAANWoR48eRk5OjtStW1d3FMDh+Pv7X/P2PxTapKQk3ZkB3KRmzZpJTk6ONGzYkDILAIANdOjQwcjMzJT69evrjgI4lEoV2rKyMpWSkqI7M4CbcMstt0hGRob4+flRZgEAsKG2bdsa+fn50rhxY91RAIfRrFmza97+u0L7xhtvyOnTp3VnBnCDGjZsKBkZGRIYGEiZBQBAgxYtWhgHDhyQoKAg3VEAh9C8efNr3v67QpuZmak7L4AbVL9+fcnKypKQkBDKLAAAGgUGBho5OTnXHcQBXF+lCm1eXp7uvABugK+vr6Snp0vLli0pswAAmEBAQICRl5cnoaGhuqMAdsvV1VWaNm16zfv8WmgvX76s3nnnHd2ZAVSSp6enJCYmStu2bSmzAACYiJ+fn3HgwAHp1KmT7iiAXQoNDRUXF5drzri/FtqDBw/ycz2AnalZs6YkJSVJt27dKLMAAJiQr6+vkZaWJnfffbfuKIDdad++/XXv82uhPXDggO68ACrB3d1d9uzZI7169aLMAgBgYrVr1zbS0tKkZ8+euqMAdqVdu3bXvc+vhfbQoUO68wKoIFdXV9m+fbuEh4dTZgEAsANeXl7G/v37JSIiQncUwG506NDhuvf5tdB+8MEHuvMCqACr1SpbtmyRqKgoyiwAAHbEw8PD2Lt3rwwePFh3FMD0XF1d5Y477rju/SwiIqdOnVLffvut7swArsMwDFm7dq3ExMRQZgEAsEPu7u7G66+/Lvfff7/uKICp3XnnneLp6XndmdciwuksYA8Mw5DVq1fLlClTKLMAANgxq9VqrF+/XiZMmKA7CmBaFf3MuUVE5N///rfuvACuY/HixfLAAw9QZgEAcABWq9WIj4+XWbNm6Y4CmFKlCu3Ro0d15wVwDYsWLZJ58+ZRZgEAcCCGYRgrVqwwHnvsMd1RAFNxdXWVrl27Vui+FhGRzz77THdmAFcxe/Zs+dvf/kaZBQDAQT3zzDPGkiVLdMcATKNHjx7i5eVVofmXQguYWGxsrCxfvpwyCwCAg5s3b56xbNkyMQy2fSAyMrLC9zWuXLmiatSoIVeuXNGdG8BvTJo0SeLi4sRgZwMAwGmsWbNGxcbGilJKdxRAmyNHjshtt91WsRPakydPUmYBkxk9erS89NJLlFkAAJzMgw8+aMTHx4vVatUdBdAiJCSkwmVWRMRy7Ngx3ZkB/EZ0dLRs3LhRLBYLZRYAACc0YcIEY+vWreLq6qo7CmBzw4cPr9T9LT/++KPuzAB+0bdvX0lISBAXFxfKLAAATiwmJsbYvXu31KhRQ3cUwKZGjhxZqftbTpw4oTszABHp3bu37N27V9zd3SmzAABAIiMjjT179oiHh4fuKIBNtGnTRlq2bFmpWdhy7tw53bkBp3fXXXfJ3r17pWbNmpRZAADwq4iICCM1NVW8vb11RwGq3ejRoyv9GMvFixd15wacWocOHSQ1NbXCv7UFAACcS/fu3Y309HTx9fXVHQWoNi4uLjJmzJhKP85y4cIF3dkBp9WqVStJS0sTHx8fyiwAALiqzp07G9nZ2VK/fn3dUYBqMXDgQGnSpEmlZ2IKLaDJbbfdJhkZGVK3bl3KLAAAuK62bdsaubm54ufnpzsKUOWmT59+Q4+zlJSU6M4OOJ2AgABJS0uTRo0aUWYBAECFhYaGGm+++aYEBQXpjgJUmaCgIOnbt+8NPdZiGMzTgC01btxYcnJyJDAwkBcfAACotMDAQCM7O1uaNWumOwpQJWJjY8VisdzQbGxRSunODziN+vXrS3p6ugQFBVFmAQDADWvatKlx4MABad26te4owE2pU6eOTJ48+YYfb9G9AMBZ1K5dW1JTUyU0NJQyCwAAblrDhg2N3Nxc6dixo+4owA2bMWPGTf3ah8ViodMC1c3b21vS09Olffv2lFkAAFBl6tSpY6SlpUnnzp11RwEqrWbNmhIbG3tTf8Pi4eGhex2AQ/P09JTk5GTp2LEjZRYAAFQ5X19fIyMjQ3r27Kk7ClApkydPlgYNGtzUjGzx9PTUvQ7AYbm5ucmOHTukW7dulFkAAFBtvLy8jP3790tERITuKECFeHp6yoIFC27671BogWri6uoqO3fulP79+1NmAQBAtfPw8DASExPl3nvv1R0FuK7Zs2dXyU9YWry8vHSvBXA4Li4usnXrVhk0aBBlFgAA2Iybm5uRkJAgI0eO1B0FuKo6derIo48+WiV/y1K3bl3d6wEcisVikfXr18uwYcMoswAAwOZcXV2NLVu2yIQJE3RHAf7UX/7yF/Hx8amSWdnSqFEj3esBHIZhGLJ69WoZO3YsZRYAAGhjtVqN+Ph4efjhh3VHAX7n9ttvl5kzZ1bZ36PQAlVo6dKlMn36dMosAADQzjAMY+XKlcbf/vY33VGAXy1fvlxcXV2rbF62NGzYUPeaAIfw9NNPy2OPPUaZBQAAprJo0SJjyZIlumMAcu+990q/fv2qdF42ysvLlaenp1y6dEn3+gC7tWDBAnn66acpswAAwLSWLVum5s6dqzsGnFStWrXkk08+kaZNm1bpzGwxDMMICgrSvT7Abj300EOUWQAAYHqPPfaYsXbtWrFYLLqjwAk988wzVV5mRUQsIiLNmjXTvT7ALk2YMEFWrlypOwYAAECFTJ8+3di0aZO4uLjojgIn0rt3b5k+fXq1/G0KLXCDxo4dKy+//LIYhsHpLAAAsBtjxowxtmzZIq6urrqjwAl4enpKXFxctc3MFhGR5s2b614nYFeGDRsmGzZsEIvFQpkFAAB2Z8SIEcaOHTvE3d1ddxQ4uBUrVkhwcHC1zcwWEZE2bdroXidgN8LDw2XLli1itVopswAAwG4NHjzYSElJkVq1aumOAgc1fPhwmTJlSrXOzIZSSoqKipS3t7eUlZXpXjNgan369JGkpCSpUaMGZRYAADiEgoICNXDgQDl//rzuKHAgQUFB8v7774uPj0+1zs0WEREPDw8jJCRE95oBU+vWrZvs3buXMgsAABxK9+7djbS0NKldu7buKHAQbm5usm3btmovsyK/FFoRkXbt2uleN2Babdu2lcTERPH09KTMAgAAh3PXXXcZOTk5Ur9+fd1R4ACee+456dSpk03m5l8LbadOnXSvGzCl1q1bS2Zmpvj6+lJmAQCAw2rbtq2Rn58vjRs31h0FdmzGjBkyffp0m83NhlJKREQ+/PBDxSkt8HvNmzeX/Px8adSoEWUWAAA4ha+++kqFhYXJl19+qTsK7Ez37t0lMzNT3NzcbF9oy8vLVd26deXs2bO6nwfAFIKCguSXdykpswAAwKl88803KiwsTD7//HPdUWAngoOD5a233pJ69erZdHb+9ZJji8VidO3aVffzAJhCkyZNJDMzkzILAACcUtOmTY2CggJp3bq17iiwA/Xr15f9+/fbvMyK/KbQioj06tVL93MBaNeoUSPJysqSW2+9lTILAACcVqNGjYysrCxp27at7igwMS8vL0lNTZXbbrtNy+z8u0IbGRmp+/kAtKpXr55kZGRoe0ECAACYSf369Y2cnBy5++67dUeBCbm6usqOHTukffv22mbn3xXa22+/3QgKCtL9vABa1K5dW9LS0qRVq1aUWQAAgF/Url3bSEtLkx49euiOAhNxc3OT1157TSIiIrTOzpb//Qec0sIZeXh4SGJiotZ3lwAAAMzKy8vLSElJkYiICN1RYAL/LbNDhgzRPjtTaOH0atasKUlJSdK9e3ftL0gAAACz8vDwMPbu3StRUVG6o0Ajd3d32bVrl0RHR5tidv71Z3v+q7S0VPn7+8upU6d0ZwOqnZubm+zZs0f69+9vihckAACA2ZWWlqpJkybJ5s2bdUeBjdWsWVN27dol/fr1M83s/IcTWldXV2Po0KG6cwHVzmq1yubNmymzAAAAleDq6mps3LhR5s6dqzsKbMjX11fS09NNVWZF/qTQioiMGjVKdy6gWlksFtm4caPExMSY6gUJAABgDwzDMJYuXWqsXLlSDINxytEFBgbKm2++Kd26dTPdf+w/XHIsIlJeXq4CAgLkhx9+0J0PqHKGYUhcXJxMmjTJdC9IAAAAe7N582Y1depU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"/>-->
<!-- </div>-->
<!-- Привет-->
<!--</div>-->
<script type="text/javascript">
var default__cart_mgl = 0;
var default__expected_placeholder = 0;
var const__items_is_inited = false;
var const__molar = false;
var cart = {};
var calculations = {};
var targets = {};
var conversions = {
"P2O5": { "P": 0.436 },
"K2O": { "K": 0.83 },
"CaO": { "Ca": 0.715 },
"SO3": { "S": 0.4 },
"SO4": { "S": 0.334 },
"MgO": { "Mg": 0.603 },
};
var hash = '';
var units = {
"mg": { "name": "mg", "text": "mg", "divider": 1 },
"mcg": { "name": "mcg", "text": "μg", "divider": 0.001 },
"mmol": { "name": "mmol", "text": "mmol", "divider": 1 },
"umol": { "name": "umol", "text": "μmol", "divider": 0.001 },
};
var units_order = {
"macro": ["mg", "mmol"],
"micro": ["mg", "mcg", "mmol", "umol"],
"ratios": ["mg", "mmol"]
};
var units_current = {
'macro': 'mg',
'micro': 'mg',
'ratios': 'mmol'
}
var elements = {
"H" : {
"name": "H",
"unit": "mmol",
"atomic": 1,
"is_hidden": true,
"class": "macro"
},
"NO3": {
"name": "NO3",
"unit": "mmol",
"atomic": 14,
"charge": -1,
"class": "macro"
},
"NH4": {
"name": "NH4",
"unit": "mmol",
"atomic": 14,
"charge": 1,
"class": "macro"
},
"N": {
"name": "N",
"unit": "mmol",
"atomic": 14,
"class": "macro"
},
"P": {
"name": "P",
"unit": "mmol",
"atomic": 30.974,
"charge": -1,
"class": "macro"
},
"K": {
"name": "K",
"unit": "mmol",
"atomic": 39.1,
"charge": 1,
"class": "macro"
},
"Ca": {
"name": "Ca",
"unit": "mmol",
"atomic": 40.078,
"charge": 2,
"class": "macro"
},
"Mg": {
"name": "Mg",
"unit": "mmol",
"atomic": 24.305,
"charge": 2,
"class": "macro"
},
"S": {
"name": "S",
"unit": "mmol",
"atomic": 32,
"charge": -2,
"class": "macro"
},
"Fe": {
"name": "Fe",
"unit": "umol",
"atomic": 55.9,
"charge": 2,
"class": "micro"
},
"B": {
"name": "B",
"unit": "umol",
"atomic": 10.811,
"class": "micro"
},
"Zn": {
"name": "Zn",
"unit": "umol",
"atomic": 65.4,
"charge": 2,
"class": "micro"
},
"Cu": {
"name": "Cu",
"unit": "umol",
"atomic": 3.546,
"class": "micro"
},
"Mn": {
"name": "Mn",
"unit": "umol",
"atomic": 54.938,
"class": "micro"
},
"Mo": {
"name": "Mo",
"unit": "umol",
"atomic": 95.94,
"class": "micro"
},
"Cl": {
"name": "Cl",
"unit": "umol",
"atomic": 35.453,
"ionic": -1,
"class": "micro"
}
};
var fertilizers = {
// Yara
"YaraLivaCalcinit": { "name": "YaraLiva Calcinit", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Ca": 19, "NO3": 14.4, "NH4": 1.1, "N": 15.5, "img": "images/yara/calcinit.jpg" },
"YaraLivaNitrabor": { "name": "YaraLiva Nitrabor", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Ca": 18.3, "NO3": 14.1, "NH4": 1.3, "B": 0.3, "img": "images/yara/nitrabor.jpg" },
"YaraTeraKristaSop": { "name": "YaraTera KRISTA SOP", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "K2O": 52, "S": 18, "img": "images/yara/sop.jpg" },
"YaraTeraKristaMgS": { "name": "YaraTera KRISTA MgS", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "MgO": 16, "SO3": 32, "img": "images/yara/mgs.jpg" },
"YaraTeraKristaMKP": { "name": "YaraTera KRISTA MKP", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "P2O5": 52, "K2O": 34, "img": "images/yara/mkp.jpg" },
"YaraTeraKristaMAP": { "name": "YaraTera KRISTA MAP", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NH4": 12, "P2O5": 61, "img": "images/yara/map.jpg" },
"YaraTeraKristaMAG": { "name": "YaraTera KRISTA MAG", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 11, "Mg": 9, "img": "images/yara/mag.jpg" },
"YaraTeraKristaK": { "name": "YaraTera KRISTA K", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 13.5, "K2O": 45.5, "img": "images/yara/k.jpg" },
"YaraTeraKristalonPlus": { "name": "YaraTera Kristalon SPECIAL PLUS 20-20-20 +micro", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 3.1, "NH4": 2.3, "NH2": 14.6, "K2O": 20, "P2O5": 20, "S": 1.6, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-20-20-20.jpg" },
"YaraTeraKristalonWhiteLabel": { "name": "YaraTera Kristalon 15-5-30 WHITE LABEL", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 11.3, "NH4": 3.7, "ph01": 4.5, "P2O5": 5, "K2O": 30, "Mg": 1.9, "S": 2, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Zn": 0.025, "img": "images/yara/kristalon-15-5-30.jpg" },
"YaraTeraKristalonWhite": { "name": "YaraTera Kristalon 13-5-26 WHITE", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "ph01": 4.3, "NO3": 7, "NH4": 6, "P2O5": 5, "K2O": 26, "Mg": 1.9, "S": 9, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-13-5-26.jpg" },
"YaraTeraKristalonBlueLabel": { "name": "YaraTera Kristalon 19-6-20 BLUE LABEL", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 11.9, "NH4": 7.1, "P2O5": 6, "K2O": 20, "Mg": 1.9, "S": 3, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-19-6-20.jpg" },
"YaraTeraKristalonBlue": { "name": "YaraTera Kristalon 17-6-18 BLUE", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "ph01": 4.2, "NO3": 8, "NH4": 9, "P2O5": 6, "K2O": 18, "Mg": 1.2, "S": 8, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-17-6-18.jpg" },
"YaraTeraKristaBrown": { "name": "YaraTera Kristalon 3-11-38 BROWN", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "ph01": 4.1, "NO3": 3, "P2O5": 11, "K2O": 38, "Mg": 2.4, "S": 11, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-3-11-38.jpg" },
"YaraTeraKristaOrange": { "name": "YaraTera Kristalon 6-12-36 ORANGE", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "ph01": 4.2, "NO3": 4.5, "NH4": 1.5, "P2O5": 12, "K2O": 36, "Mg": 1.8, "S": 8, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-6-12-36.jpg" },
"YaraTera KRISTALON 7,5-12-36 (SCARLET)" : { "name": "YaraTera Kristalon 7,5-12-36 Scarlet", "NH4": 0, "NO3": 7.5, "P": 5.24, "K": 29.89, "Mg": 2.8, "S": 4, "Fe": 0.15, "Zn": 0.027, "Cu": 0.04, "Mn": 0.06, "Mo": 0.004, "B": 0.027, "solublity25": 100, "img": "images/yara/kristalon-scarlet.jpg"},
"YaraTeraKristaRed": { "name": "YaraTera Kristalon 12-12-36 RED", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "ph01": 4.5, "NO3": 10.1, "K2O": 36, "NH4": 1.9, "P2O5": 12, "Mg": 0.6, "S": 1, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-12-12-36.jpg" },
"YaraTeraKristaYellow": { "name": "YaraTera Kristalon 13-40-13 YELLOW", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "ph01": 4.3, "NO3": 4.4, "NH4": 8.6, "P2O5": 40, "K2O": 13, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-13-40-13.jpg" },
"YaraTeraKristaSpecial": { "name": "YaraTera Kristalon SPECIAL 18-18-18 +3MgO +micro", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "ph01": 4.3, "NO3": 4.9, "NH3": 3.3, "NH2": 9.8, "P2O5": 18, "K2O": 18, "MgO": 3, "SO3": 5, "B": 0.025, "Cu": 0.01, "Fe": 0.07, "Mn": 0.04, "Mo": 0.004, "Zn": 0.025, "img": "images/yara/kristalon-18-18-18.jpg" },
"YaraTeraRexolinD12": { "name": "YaraTera Rexolin D12", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Fe": 11.6, "img": "images/yara/rexolin-d12.jpg" },
// "YaraTeraRexolinQ40": { "name": "YaraTera Rexolin Q40", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Fe": 6, "img": "https://s.brandmaster.com/s/40WeJ2" },
// "YaraTeraRexolinABC": { "name": "YaraTera Rexolin ABC", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Mg": 1.85, "B": 0.5, "Cu": 1.5, "Fe": 4, "Mn": 4, "Mo": 0.1, "Zn": 1.5, "img": "images/yara/rexolin-abc.jpg" },
"YaraTeraRexolinAPN": { "name": "YaraTera Rexolin APN", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "B": 0.9, "Cu": 0.2, "Fe": 4, "Mn": 5.6, "Mo": 0.2, "Zn": 1.1, "img": "images/yara/rexolin-apn.jpg" },
// "YaraVitaRexolinZn15": { "name": "YaraVita Rexolin Zn15", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Zn": 14.8, "img": "https://s.brandmaster.com/s/qrZEx2" },
// "YaraVitaRexolinMn13": { "name": "YaraVita Rexolin Mn13", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Mn": 12.8, "img": "https://s.brandmaster.com/s/qrZEx2" },
// "YaraVitaRexolinCu15": { "name": "YaraVita Rexolin Cu15", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Cu": 14.8, "img": "https://s.brandmaster.com/s/qrZEx2" },
// "YaraKristalonCucumber": { "name": "Yara KRISTALON 14-11-31 CUCUMBER", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 7, "NH2": 7, "P2O5": 11, "K2O": 31, "Mg": 1.5, "S": 2, "B": 0.02, "Cu": 0.01, "Fe": 0.15, "Mn": 0.1, "Mo": 0.002, "Zn": 0.01, "img": "https://yaraurl.net/oxe2" },
// "YaraFerticareHydro": { "name": "Yara FERTICARE HYDRO 6-14-30", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 6, "P2O5": 13.7, "K2O": 30.1, "Mg": 2.6, "S": 3.7, "B": 0.03, "Cu": 0.02, "Fe": 0.2, "Mn": 0.14, "Mo": 0.004, "Zn": 0.02, "img": "https://yaraurl.net/229f" },
// "YaraFerticareKombi": { "name": "Yara FERTICARE KOMBI 1 14-11-25", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 6, "NH4": 2.8, "NH2": 5.2, "P2O5": 11.5, "K2O": 25.3, "Mg": 1.4, "S": 5.6, "B": 0.02, "Cu": 0.01, "Fe": 0.1, "Mn": 0.1, "Mo": 0.002, "Zn": 0.01, "img": "https://yaraurl.net/229f" },
// "YaraMilaNPK161616": { "name": "YaraMila NPK 16-16-16", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 6.5, "NH4": 9.5, "P2O5": 16, "K2O": 16, "img": "https://yaraurl.net/3xrl" },
// "YaraMilaNPK72028": { "name": "YaraMila NPK 7-20-28", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 0.9, "NH4": 6.1, "P2O5": 20, "K2O": 28, "Mg": 1.2, "S": 3, "B": 0.02, "Fe": 0.1, "Mn": 0.03, "Zn": 0.02, "img": "https://yaraurl.net/l8f5" },
// "YaraMilaCROPCARE111121": { "name": "YaraMila CROPCARE 11-11-21", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 4.4, "NH4": 6.6, "P2O5": 10.5, "K2O": 21.2, "Mg": 1.6, "S": 10, "B": 0.05, "Cu": 0.03, "Fe": 0.08, "Mn": 0.25, "Zn": 0.04, "Mo": 0.002, "img": "https://yaraurl.net/rdvv" },
// "YaraMilaNPK91225": { "name": "YaraMila NPK 9-12-25", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 2.6, "NH4": 6.4, "P2O5": 12, "K2O": 25, "Mg": 1.2, "S": 2.6, "B": 0.02, "img": "https://yaraurl.net/lwc" },
// "YaraTeraTENSOCOCKTAIL": { "name": "YaraTera TENSO COCKTAIL", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "Ca": 2.57, "B": 0.52, "Cu": 0.53, "Fe": 2.1, "Mn": 2.57, "Mo": 0.13, "Zn": 0.53, "img": "https://yaraurl.net/gjif" },
// "YaraMilaComplex12118": { "name": "YaraMila COMPLEX 12-11-18", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 5, "NH4": 7, "P2O5": 11, "K2O": 18, "Mg": 1.6, "S": 8, "B": 0.015, "Fe": 0.2, "Mn": 0.02, "Zn": 0.02, "img": "https://yaraurl.net/pz23" },
// "YaraZintrac": { "name": "YaraVita ZINTRAC 700", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 1, "Zn": 40, "img": "https://yaraurl.net/pz23" },
// "YaraPGMix": { "name": "Yara PG Mix 12-14-25+2", "manufacturer": "Yara", "market": "UA,RU", "desc": "", "NO3": 7, "NH4": 5, "P2O5": 14, "Mg": 1.3, "K2O": 24, "S": 5.6, "img": "https://yaraurl.net/pz23" },
// Alventa
"AlventaMagplonK": { "name": "Alventa Magplon K", "manufacturer": "Alventa", "market": "UA,RU", "desc": "", "NO3": 13.5, "K2O": 46, "img": "images/alventa/magplon-k.jpg" },
// Valagro
"ValagroEDTA5SG": { "name": "Valagro EDTA 5 SG", "manufacturer": "Valagro", "market": "UA,RU", "desc": "", "MgO": 5, "B": 0.5, "Cu": 1.5, "Fe": 4, "Mo": 0.1, "Mn": 4, "Zn": 1.5, "ph01": 4.5, "img": "images/valagro/5sg.jpg"},
"ValagroEDTAZn": { "name": "Valagro EDTA Zn", "manufacturer": "Valagro", "market": "UA,RU", "desc": "", "Zn": 13, "img": "images/valagro/edta.png"},
"ValagroEDTAMn": { "name": "Valagro EDTA Mn", "manufacturer": "Valagro", "market": "UA,RU", "desc": "", "Mn": 13, "img": "images/valagro/edta.png"},
"ValagroEDTAMo": { "name": "Valagro EDTA Mo", "manufacturer": "Valagro", "market": "UA,RU", "desc": "", "Mo": 13, "img": "images/valagro/edta.png"},
"ValagroMolibion": { "name": "Valagro Molibion", "manufacturer": "Valagro", "market": "UA,RU", "desc": "", "Mo": 8, "img": "images/valagro/molibion.png"},
// "ValagroEDTASB": { "name": "Valagro EDTA SB", "manufacturer": "Valagro", "market": "UA,RU", "desc": "", "B": 0.65, "Cu": 0.27, "Fe": 8, "Mo": 0.2, "Zn": 0.6, "Mn": 3.3, "img": "https://images.ua.prom.st/2274611401_valagro-edta-5.jpg"},
"ValagroBoroplus": { "name": "Valagro Boroplus", "desc": "", "B": 11, "img": "images/valagro/boroplus.jpg"},
// Partner-Profi
"ProfiEDTAZn": { "name": "Partner EDTA Zn 15%", "manufacturer": "Partner", "market": "UA,RU", "desc": "", "Zn": 15, "img": "images/partner/zn.png"},
"ProfiEDTAMn": { "name": "Partner EDTA Mn 13%", "manufacturer": "Partner", "market": "UA,RU", "desc": "", "Mn": 13, "img": "images/partner/mn.jpg"},
"ProfiEDTACu": { "name": "Partner EDTA Cu 15%", "manufacturer": "Partner", "market": "UA,RU", "desc": "", "Cu": 15, "img": "images/partner/cu.jpg"},
// Простые соли
"BoricAcid": { "name": "Борная кислота, ЧДА, 17.5%", "manufacturer": "OEM", "market": "UA,RU", "desc": "", "B": 17.484, "img": "images/salts/boric-acid.jpeg"},
};
/**
* CART ACTIONS
*/
function addToCart(item, value) {
if (value === undefined) value = default__cart_mgl;
if (!isInCart(item)) {
cart[item] = {};
cart[item]['value'] = value;
addCartRow(item, cart[item]);
addTableRow(item);
recalculate();
}
}
function clearCart() {
cart = {};
clearCartRows();
recalculate();
clearTableRows();
}
function restoreCart(cart_json) {
//clearCart();
console.log(cart_json);
Object.keys(cart_json).forEach(function (element) {
addToCart(element, cart_json[element].value);
});
}
function isCartEmpty() {
return Object.keys(cart).length === 0;
}
function editCartItem(name) {
cart[name]['value'] = parseFloat(getEl(getCartInputIdByName(name)).value);
recalculate();
}
function isInCart(item) {
return cart[item] !== undefined;
}
function removeFromCart(item) {
if (isInCart(item)) {
delete cart[item];
removeCartRow(item);
recalculate();
removeTableRow(item);
}
}
function getCartItemsCount() {
return Object.keys(cart).length;
}
function getCartItemValue(name) {
if (!isInCart(name)) {
return 0;
}
return parseFloat(getEl(getCartInputIdByName(name)).value);
}
/**
* URL UPDATER
*/
function _updateHash() {
hash = _getHash();
location.hash = hash;
}
function _getHash() {
return btoa(JSON.stringify(cart));
}
function _decodeHash(hash) {
let decoded_hash = {};
try {
decoded_hash = JSON.parse(atob(hash));
} catch (e) {}
return decoded_hash;
}
function hashChangeWatcher() {
let location_hash = location.hash.substr(1);
if (location_hash !== hash) {
let decoded_json = _decodeHash(location_hash);
if (Object.keys(decoded_json).length > 0) {
restoreCart(decoded_json);
} else {
console.log('ERROR_INVALID_HASH_PROVIDED');
}
}
}
/**
* COMMON OPERATIONS
*/
function getAtomic(element) {
return parseFloat(elements[element]['atomic']);
}
function getItem(item) {
if (fertilizers[item] !== undefined) {
return Object.assign({}, fertilizers[item]);
}
return {};
}
function isElementVisible(element) {
return (elements[element]['is_hidden'] === undefined || elements[element]['is_hidden'] === false);
}
function getElementMeqRatio(element) {
if (elements[element]['charge'] === undefined) {
return 0;
}
return elements[element]['charge'] / elements[element]['atomic'];
}
function getItemElementValue(name, element_name) {
return fertilizers[name][element_name];
}
// @todo nahui eto
function getMolar(element, raw_value, force) {
if (const__molar || force) {
return parseFloat(raw_value) / getAtomic(element);
}
return parseFloat(raw_value);
}
function roundDecimals(value, decimals) {
if (decimals === undefined) decimals = 2;
return Number(Math.round(value+'e'+decimals)+'e-'+decimals);
}
function getCalculatedValuesForItem(name) {
return Object.assign(getItem(name), calculations[name]);
}
function _validateAmmonium(item) {
if (item['N'] === undefined) {
item['N'] = 0;
if (item['NO3'] !== undefined) item['N'] += item['NO3'];
if (item['NH4'] !== undefined) item['N'] += item['NH4'];
}
}
function getEl(id) {
return document.getElementById(id);
}
function _createCellDiv(cell_class, cell_innerHTML, cell_id) {
let div = document.createElement('div');
div.className = `divTableCell ${cell_class}`;
if (cell_id !== undefined) {
div.id = cell_id;
}
div.innerHTML = cell_innerHTML;
return div;
}
function _getDeviationPct(element) {
let expectation = _getExpectationValue(element);
return Math.min(100, Math.abs(_getUnitValue(element, calculations['__deviations'][element]) / (expectation / 100)));
}
function _getExpectationValue(element) {
return _getUnitValue(
element,
_getTargetElementValue(element)
);
}
function _getUnitValue(element, value, element_units) {
if (element_units === undefined) {
element_units = units_current[_getElementClass(element)];
}
switch (element_units) {
case 'mmol':
value = parseFloat(value) / getAtomic(element);
break;
case 'umol':
value = (parseFloat(value) / getAtomic(element)) * 1000;
break;
case 'mcg':
value = parseFloat(value) * 1000;
break;
case 'mg':
switch (_getElementClass(element)) {
case 'macro':
value = roundDecimals(value, 0);
break;
}
break;
}
return value;
}
function _getPpmValue(element, value, element_units) {
if (element_units === undefined) {
element_units = units_current[_getElementClass(element)];
}
switch (element_units) {
case 'mmol':
value = parseFloat(value) * getAtomic(element);
break;
case 'umol':
value = (parseFloat(value) * getAtomic(element)) / 1000;
break;
case 'mcg':
value = parseFloat(value) / 1000;
break;
}
return parseFloat(value);
}
function _getElementClass(element) {
return elements[element]['class'];
}
/**
* CALCULATIONS
*/
function recalculate() {
calculations = {
'__totals': {'ec_ionic': 0},
'__deviations': {},
'__ionic': {}
};
Object.keys(elements).forEach(function (element) {
calculations['__totals'][element] = 0;
});
Object.keys(cart).forEach(function (key) {
let item = {};
Object.keys(elements).forEach(function (element_key) {
item[element_key] = roundDecimals(getItemElementValue(key, element_key) / 100.00 * getCartItemValue(key));
calculations['__totals'][element_key] += item[element_key];
});
calculations[key] = item;
});
_calculateEcAndNpkRatios();
_calculateDeviations();
_calculateIonicBalance();
_onAfterCalculationsCompleted();
}
function _calculateEcAndNpkRatios() {
let n = getMolar('N', calculations['__totals']['N'], true);
let p = getMolar('P', calculations['__totals']['P'], true);
let k = getMolar('K', calculations['__totals']['K'], true);
let ca = getMolar('Ca', calculations['__totals']['Ca'], true);
let mg = getMolar('Mg', calculations['__totals']['Mg'], true);
let norma = n;
if (k < norma) norma = k;
if (p < norma) norma = p;
let nNorm = n / norma;
let pNorm = p / norma;
let kNorm = k / norma;
let nkMin = Math.min(n, k);
let kcamgMin = Math.min(k, ca, mg);
let nkNnorm = n / nkMin;
let nkKnorm = k / nkMin;
let kcamgKnorm = k / kcamgMin;
let kcamgCanorm = ca / kcamgMin;
let kcamgMgnorm = mg / kcamgMin;
calculations['__totals']['ec'] = 0.095 * (calculations['__totals']["NH4"] / 14.0067 + 2 * calculations['__totals']["Ca"] / 40.078 + 2 * calculations['__totals']["Mg"] / 24.305 + calculations['__totals']["K"] / 39.0983) + 0.19;
calculations['__totals']['npk'] = nNorm.toFixed(2) + ':' + pNorm.toFixed(2) + ':' + kNorm.toFixed(2);
calculations['__totals']['nk'] = {};
calculations['__totals']['nk']['n'] = nkNnorm.toFixed(2);
calculations['__totals']['nk']['k'] = nkKnorm.toFixed(2);
calculations['__totals']['kcamg'] = {};
calculations['__totals']['kcamg']['k'] = kcamgKnorm.toFixed(2);
calculations['__totals']['kcamg']['ca'] = kcamgCanorm.toFixed(2);
calculations['__totals']['kcamg']['mg'] = kcamgMgnorm.toFixed(2);
}
function _calculateDeviations() {
Object.keys(elements).forEach(function (element) {
if (!isElementVisible(element)) {
return;
}
let deviation = 0;
let expectation = _getTargetElementValue(element);
if (expectation === 0) {
return;
}
deviation = calculations['__totals'][element] - expectation;
calculations['__deviations'][element] = deviation;
});
}
function _calculateIonicBalance() {
calculations['__ionic']['__total'] = 0;
Object.keys(elements).forEach(function (element) {
let meq_ratio = getElementMeqRatio(element);
if (meq_ratio === 0) {
return;
}
calculations['__ionic'][element] = meq_ratio * calculations['__totals'][element];
if (calculations['__ionic'][element] > 0) {
calculations['__totals']['ec_ionic'] = calculations['__totals']['ec_ionic'] + (calculations['__ionic'][element] / 10);
}
calculations['__ionic'][element] = meq_ratio * calculations['__totals'][element];
calculations['__ionic']['__total'] = roundDecimals(calculations['__ionic']['__total'] + roundDecimals(calculations['__ionic'][element]));
});
}
function _updateIonicBalanceTotal() {
let ionic_balance = 0;
Object.keys(calculations['__ionic']).forEach(function (element) {
ionic_balance += calculations['__ionic'][element];
});
calculations['__totals']['ionic_balance'] = ionic_balance;
}
/**
* EVENT TO TRIGGER FRONTEND ACTIONS
*/
function _onAfterCalculationsCompleted() {
_updateIonicBalanceTotal();
_updateDeviationsBar();
_updateTableRowLines();
_updateTableRowTotals();
_updateGraphs();
_updateHash();
}
/**
* INITS
*/
function initCatalog() {
Object.keys(fertilizers).forEach(function (key, index) {
var item = getItem(key);
var div = document.createElement('div');
div.className = 'catalog-item';
div.innerHTML = `
<img src="${item.img}" alt=""/>
<div>${item.name}<br/><small>${item.longDesc}</small></div>
<input class="add" type="button" value="добавить" onclick="addToCart('${key}')"/>
`;
getEl('catalog').appendChild(div);
});
}
function initTableBars() {
Object.keys(elements).forEach(function (key) {
if (elements[key]['is_hidden'] !== undefined) {
return;
}
let div = _createCellDiv(
elements[key]['class'],
_getTemplateTableBar(key),
getTableRowBarIdByName(key, 'block')
);
getEl(getTableRowId('bars')).appendChild(div);
});
getEl(getTableRowId('bars')).style['visibility'] = "visible";
}
function initExpectedInputs() {
Object.keys(elements).forEach(function (element) {
targets[element] = 0;
if (elements[element]['is_hidden'] !== undefined) {
return;
}
let div = _createCellDiv(
elements[element]['class'],
_getTemplateTableExpectedCell(element)
);
getEl(getTableRowId('expected')).appendChild(div);
});
getEl(getTableRowId('expected')).style['visibility'] = "visible";
}
function initItems() {
if (const__items_is_inited) return;
const__items_is_inited = true;
Object.keys(fertilizers).forEach(function (fertilizer_name) {
fulfilled = fertilizers[fertilizer_name];
_validateAmmonium(fulfilled);
longDesc = [];
if (fertilizers[fertilizer_name]['desc'] !== undefined && fertilizers[fertilizer_name]['desc'] !== '') longDesc.push(fertilizers[fertilizer_name]['desc']);
// initialize complexes
Object.keys(conversions).forEach(function (key) {
if (fertilizers[fertilizer_name][key] !== undefined) {
converted_key = Object.keys(conversions[key])[0];
conversion_multiplier = conversions[key][converted_key];
fulfilled[converted_key] = parseFloat((fertilizers[fertilizer_name][key] * conversion_multiplier).toFixed(2));
fulfilled[key] = fertilizers[fertilizer_name][key];
longDesc.push(key + ': ' + fertilizers[fertilizer_name][key] + '%');
} else {
fulfilled[key] = 0;
}
});
// initialize base elements
Object.keys(elements).forEach(function (key) {
if (fertilizers[fertilizer_name][key] !== undefined) {
fulfilled[key] = fertilizers[fertilizer_name][key];
longDesc.push(key + ': ' + fertilizers[fertilizer_name][key] + '%');
} else {
fulfilled[key] = 0;
}
});
fulfilled['longDesc'] = longDesc.join(', ');
});
}
/**
* TABLE FRONTEND ACTIONS
*/
function addTableRow(name) {
if (getEl(getTableRowId(name)) !== null) {
return;
}
let div = document.createElement('div');
div.className = 'divTableRow minifo';
if (getCartItemsCount() === 1) {
div.className = div.className + ' separ';
}
div.id = getTableRowId(name);
div.innerHTML = getTableRowInnerHTMLByData(name);
getEl('secondary_table').appendChild(div);
}
function removeTableRow(name) {
if (getEl(getTableRowId(name)) === null) {
return;
}
getEl('secondary_table').removeChild(getEl(getTableRowId(name)));
}
function clearTableRows() {
getEl('secondary_table').innerHTML = '';
}
function modifyTableRow(name) {
getEl(getTableRowId(name)).innerHTML = getTableRowInnerHTMLByData(name);
}
function _updateTableRowLines() {
Object.keys(cart).forEach(function(name) {
modifyTableRow(name);
});
}
// @todo refactor
function _updateTableRowTotals() {
let template = Object.assign({'name': 'Текущий'}, getCalculatedValuesForItem('__totals'));
Object.keys(elements).forEach(function (element) {
template[element] = roundDecimals(_getUnitValue(element, getCalculatedValuesForItem('__totals')[element]));
});
getEl(getTableRowId('current')).innerHTML = getTableRowInnerHTMLByDataTemplate(template);
}
function _updateGraphs() {
let ec_scale = 0.02;
let kcamg_scale = 0.05;
let nk_scale = 0.023333333;
let ec = calculations['__totals']['ec'].toFixed(2);
let kcamg_k = calculations['__totals']['kcamg']['k'];
let kcamg_ca = calculations['__totals']['kcamg']['ca'];
let kcamg_mg = calculations['__totals']['kcamg']['mg'];
let nk_n = calculations['__totals']['nk']['n'];
let nk_k = calculations['__totals']['nk']['k'];
if (isCartEmpty()) ec = '';
if (isNaN(ec) || !isFinite(ec)) ec_scale = 0;
if (isNaN(kcamg_k) || !isFinite(kcamg_k)) kcamg_k = 0;
if (isNaN(kcamg_ca) || !isFinite(kcamg_ca)) kcamg_ca = 0;
if (isNaN(kcamg_mg) || !isFinite(kcamg_mg)) kcamg_mg = 0;
if (isNaN(nk_n) || !isFinite(nk_n)) nk_n = 0;
if (isNaN(nk_k) || !isFinite(nk_k)) nk_k = 0;
_updateGraphsBar('graphs_ec_value', 'graphs_ec_bar_value', ec, ec_scale, 0, 2);
_updateGraphsBar('graphs_kcamg_k_value', 'graphs_kcamg_k_bar_value', kcamg_k, kcamg_scale, 20);
_updateGraphsBar('graphs_kcamg_ca_value', 'graphs_kcamg_ca_bar_value', kcamg_ca, kcamg_scale, 20);
_updateGraphsBar('graphs_kcamg_mg_value', 'graphs_kcamg_mg_bar_value', kcamg_mg, kcamg_scale, 20);
_updateGraphsBar('graphs_nk_n_value', 'graphs_nk_n_bar_value', nk_n, nk_scale, 20);
_updateGraphsBar('graphs_nk_k_value', 'graphs_nk_k_bar_value', nk_k, nk_scale, 20);
}
function _updateGraphsBar(value_name, bar_name, value, scale, offset, decimals) {
let max_bar_height = 140;
if (decimals === undefined) decimals = 1;
getEl(value_name).innerText = roundDecimals(value, decimals).toFixed(decimals);
getEl(value_name).style.bottom = (Math.min(roundDecimals(value / scale), max_bar_height) - offset) + 'px';
getEl(bar_name).style.height = Math.min(roundDecimals(value / scale), max_bar_height) + 'px';
}
function _updateDeviationsBar() {
Object.keys(elements).forEach(function(element) {
if (!isElementVisible(element)) {
return;
}
getEl(getTableRowBarIdByName(element, 'left')).style['width'] = '0';
getEl(getTableRowBarIdByName(element, 'right')).style['width'] = '0';
getEl(getTableRowBarIdByName(element, 'value')).innerText = '0';
let deviation_pct = _getDeviationPct(element);
let deviation_value = roundDecimals(_getUnitValue(element, calculations['__deviations'][element]))
if (deviation_value > 0) {
deviation_value = `+${deviation_value}`;
} else if (isNaN(deviation_value)) {
deviation_value = '0';
}
if (calculations['__deviations'][element] < 0) {
getEl(getTableRowBarIdByName(element, 'left')).style['width'] = `${deviation_pct}%`;
} else if (calculations['__deviations'][element] > 0) {
getEl(getTableRowBarIdByName(element, 'right')).style['width'] = `${deviation_pct}%`;
}
getEl(getTableRowBarIdByName(element, 'value')).innerText = deviation_value;
});
}
function getTableRowInnerHTMLByData(name) {
cart_item = Object.assign({}, getCalculatedValuesForItem(name));
Object.keys(elements).forEach(function (element) {
cart_item[element] = roundDecimals(_getUnitValue(element, getCalculatedValuesForItem(name)[element]));
});
return getTableRowInnerHTMLByDataTemplate(cart_item);
}
// @todo refactor
function getTableRowInnerHTMLByDataTemplate(template) {
return `
<div class="divTableCell first fertitle">${template.name}</div>
<div class="divTableCell macro">${template.NO3 || 0}</div>
<div class="divTableCell macro">${template.NH4 || 0}</div>
<div class="divTableCell macro">${template.N || 0}</div>
<div class="divTableCell macro">${template.P || 0}</div>
<div class="divTableCell macro">${template.K || 0}</div>
<div class="divTableCell macro">${template.Ca || 0}</div>
<div class="divTableCell macro">${template.Mg || 0}</div>
<div class="divTableCell macro">${template.S || 0}</div>
<div class="divTableCell micro">${template.Fe || 0}</div>
<div class="divTableCell micro">${template.B || 0}</div>
<div class="divTableCell micro">${template.Zn || 0}</div>
<div class="divTableCell micro">${template.Cu || 0}</div>
<div class="divTableCell micro">${template.Mn || 0}</div>
<div class="divTableCell micro">${template.Mo || 0}</div>
<div class="divTableCell micro">${template.Cl || 0}</div>
`;
}
/**
* CART FRONTEND ACTIONS
*/
function increaseCartItem(name) {
value = parseFloat(getEl(getCartInputIdByName(name)).value);
getEl(getCartInputIdByName(name)).value = value + 100;
editCartItem(name);
}
function decreaseCartItem(name) {
value = parseFloat(getEl(getCartInputIdByName(name)).value);
if (value <= 100) {
getEl(getCartInputIdByName(name)).value = 0;
} else {
getEl(getCartInputIdByName(name)).value = value - 100;
}
editCartItem(name);
}
function addCartRow(name) {
if (getEl(getCartIdByName(name)) !== null) {
return;
}
let div = document.createElement('div'),
cart_item = getItem(name)
cart_item_value = cart[name].value;
div.className = 'divTableCartRow';
div.id = getCartIdByName(name);
div.innerHTML = `
<div class="divTableCell chosen-amounter">
<input class="delete cartline chosen-remove" type="button" value="✖️" onclick='removeFromCart("${name}")'/><input type="text" id="${getCartInputIdByName(name)}" class="chosen-amount chosen-value" placeholder="0" value="${cart_item_value}" onchange="editCartItem('${name}')"/><input type="text" disabled class="chosen-amount chosen-mgl" value="мг/л"/><input type="button" class="point cartline chosen-minus" value="➖" onclick="decreaseCartItem('${name}')"/><input type="button" class="point cartline chosen-plus" value="➕" onclick="increaseCartItem('${name}')"/>
</div>
<div class="divTableCartImage"><img class="chosen-image" src="${cart_item.img}" alt="${cart_item.name}"/></div>
<div class="divTableCell chosen-title"><div class="chosen-titlebar">${cart_item.name}<br/><span>${cart_item.longDesc}</span></div></div>
`;
getEl('cart_table').appendChild(div);
}
function removeCartRow(name) {
if (getEl(getCartIdByName(name)) === null) {
return;
}
getEl('cart_table').removeChild(getEl(getCartIdByName(name)));
}
function clearCartRows() {
getEl('cart_table').innerHTML = '';
}
/**
*
*/
function changeExpectedInput(entity) {
let element = entity.getAttribute('data-element');
setTargetElementValue(element, entity.value);
}
function setTargetElementValue(element, value) {
targets[element] = _getPpmValue(element, value);
recalculate();
}
function _getTargetElementValue(element) {
return targets[element];
}
/**
* FRONTEND COMMON ACTIONS
*/
function switchTableTotals(entity) {
let table = document.querySelector('[id=secondary_table]');
if (isTableTotalsHidden(entity)) {
table.style.display = 'table-row-group';
entity.setAttribute('data-hidden', 'visible');
entity.innerHTML = '&#8673;';
entity.style.cursor = 'n-resize';
} else {
table.style.display = 'none';
entity.setAttribute('data-hidden', 'hidden');
entity.innerHTML = '&#8675;';
entity.style.cursor = 's-resize';
}
}
function isTableTotalsHidden(entity) {
return entity.getAttribute('data-hidden') === 'hidden';
}
// @todo change arrow up/down with self
function toggle(self, element) {
if (element.style.display !== "none") {
element.style.display = "none";
} else {
element.style.removeProperty('display');
}
}
function _getNextUnit(element_class) {
let current = units_current[element_class];
let count = units_order[element_class].length;
let next_unit = units_order[element_class].indexOf(current) + 1;
if (next_unit > count - 1) {
next_unit = 0;
}
return units_order[element_class][next_unit];
}
function _setUnits(element_class, unit) {
units_current[element_class] = unit;
}
function switchUnits(entity, element_class) {
if (element_class === undefined) {
element_class = entity.getAttribute('data-element-class');
}
let next = _getNextUnit(element_class);
_setUnits(element_class, next);
document.querySelectorAll(`a[data-element-class="${element_class}"]`).forEach(function(entity) {
entity.innerText = next;
});
document.querySelectorAll(`input[data-element-class="${element_class}"]`).forEach(function(entity) {
let element = entity.getAttribute('data-element');
entity.value = roundDecimals(_getExpectationValue(element));
});
recalculate();
}
function switchCheckedState(entity) {
entity.setAttribute('data-checked', !entity.getAttribute('data-checked'));
}
/**
* GRAPH
*
* Graph types:
* - GRAPH_HORIZONTAL
* - GRAPH_VERTICAL
*
* Graph inits:
* { "range": [ -5, 5 ], "type": GRAPH_HORIZONTAL }
*
* Graph element types:
* - GRAPH_ELEMENT_DEVIATION
* - GRAPH_ELEMENT_BAR
*
* Graph element format:
* [ { "type": "balance", "name": "Ca", "target": 5, "value": 3.3 } ]
*
*/
function createGraph(inits, template) {
/*
* elements format:
* [ { "name": "Ca", "type": "balance"
*/
}
/**
* TEMPLATES
*/
function _getTemplateTableBar(element) {
let value = "0";
let left = _getTemplateTableBarLine(0, 'right', 'left', element);
let right = _getTemplateTableBarLine(0, 'left', 'right', element);
let id_value = getTableRowBarIdByName(element, 'value');
return `<div class="left50">
${left}
</div>
<div class="left50 centerline"></div>
<div class="left50">
${right}
</div>
<div style="text-align: center; font-size: 14px" id="${id_value}">${value}</div>`;
}
function _getTemplateTableBarLine(pct, float, alignment, element) {
return `<div class="line${alignment}" id="${getTableRowBarIdByName(element, alignment)}" style="float: ${float}; width: ${pct}%;"></div>`;
}
function _getTemplateTableExpectedCell(element) {
return `<input type="text" class="default-input" id="${getTableExpectedInputIdByName(element)}" data-element="${element}" data-element-class="${_getElementClass(element)}" placeholder="${default__expected_placeholder}" onchange="changeExpectedInput(this)"/>`;
}
/**
* ID GETTERS
*/
function getTableRowId(name) {
return `table_row__${name}`;
}
function getTableExpectedInputIdByName(name) {
return `table_expected_input__${name}`;
}
function getTableRowBarIdByName(name, subposition) {
return `table_row_bar__${name}_${subposition}`;
}
function getCartIdByName(name) {
return `cart_row__${name}`;
}
function getCartInputIdByName(name) {
return `cart_row_value__${name}`;
}
function getCartInputCheckboxIdByName(name) {
return `cart_row_enabled__${name}`;
}
// @todo
// function hideModal() {
// getEl('modal').style.display = "none";
// getEl('modaloverlay').style.display = "none";
// }
/**
* APPLICATION INIT
*/
document.addEventListener('DOMContentLoaded', function() {
initItems();
initCatalog();
initTableBars();
initExpectedInputs();
hashChangeWatcher();
});
window.addEventListener('hashchange', function() {
hashChangeWatcher();
}, false);
</script>
</body>
</html>