mirror of
https://github.com/skot/bitaxe.git
synced 2025-03-26 01:33:14 +01:00
4443 lines
397 KiB
HTML
4443 lines
397 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Interactive BOM for KiCAD</title>
|
|
<style type="text/css">
|
|
:root {
|
|
--pcb-edge-color: black;
|
|
--pad-color: #878787;
|
|
--pad-hole-color: #CCCCCC;
|
|
--pad-color-highlight: #D04040;
|
|
--pad-color-highlight-both: #D0D040;
|
|
--pad-color-highlight-marked: #44a344;
|
|
--pin1-outline-color: #ffb629;
|
|
--pin1-outline-color-highlight: #ffb629;
|
|
--pin1-outline-color-highlight-both: #fcbb39;
|
|
--pin1-outline-color-highlight-marked: #fdbe41;
|
|
--silkscreen-edge-color: #aa4;
|
|
--silkscreen-polygon-color: #4aa;
|
|
--silkscreen-text-color: #4aa;
|
|
--fabrication-edge-color: #907651;
|
|
--fabrication-polygon-color: #907651;
|
|
--fabrication-text-color: #a27c24;
|
|
--track-color: #def5f1;
|
|
--track-color-highlight: #D04040;
|
|
--zone-color: #def5f1;
|
|
--zone-color-highlight: #d0404080;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0px;
|
|
height: 100%;
|
|
font-family: Verdana, sans-serif;
|
|
}
|
|
|
|
.dark.topmostdiv {
|
|
--pcb-edge-color: #eee;
|
|
--pad-color: #808080;
|
|
--pin1-outline-color: #ffa800;
|
|
--pin1-outline-color-highlight: #ccff00;
|
|
--track-color: #42524f;
|
|
--zone-color: #42524f;
|
|
background-color: #252c30;
|
|
color: #eee;
|
|
}
|
|
|
|
button {
|
|
background-color: #eee;
|
|
border: 1px solid #888;
|
|
color: black;
|
|
height: 44px;
|
|
width: 44px;
|
|
text-align: center;
|
|
text-decoration: none;
|
|
display: inline-block;
|
|
font-size: 14px;
|
|
font-weight: bolder;
|
|
}
|
|
|
|
.dark button {
|
|
/* This will be inverted */
|
|
background-color: #c3b7b5;
|
|
}
|
|
|
|
button.depressed {
|
|
background-color: #0a0;
|
|
color: white;
|
|
}
|
|
|
|
.dark button.depressed {
|
|
/* This will be inverted */
|
|
background-color: #b3b;
|
|
}
|
|
|
|
button:focus {
|
|
outline: 0;
|
|
}
|
|
|
|
button#tb-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.32 290.12h5.82M1.32 291.45h5.82' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 292.5v4.23M.26 292.63H8.2' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='1.35' y='295.73'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#lr-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' fill='none' stroke='%23000' stroke-width='.4' stroke-linejoin='round'/%3E%3Cpath d='M1.06 290.12H3.7m-2.64 1.33H3.7m-2.64 1.32H3.7m-2.64 1.3H3.7m-2.64 1.33H3.7' fill='none' stroke='%23000' stroke-width='.4'/%3E%3Cpath d='M4.37 288.8v7.94m0-4.11h3.96' fill='none' stroke='%23000' stroke-width='.3'/%3E%3Ctext font-weight='700' font-size='3.17' font-family='sans-serif'%3E%3Ctspan x='5.11' y='291.96'%3EF%3C/tspan%3E%3Ctspan x='5.03' y='295.68'%3EB%3C/tspan%3E%3C/text%3E%3C/g%3E%3C/svg%3E%0A");
|
|
}
|
|
|
|
button#bom-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8.47 8.47'%3E%3Crect transform='translate(0 -288.53)' ry='1.17' y='288.8' x='.27' height='7.94' width='7.94' fill='%23f9f9f9'/%3E%3Cg transform='translate(0 -288.53)' fill='none' stroke='%23000' stroke-width='.4'%3E%3Crect width='7.94' height='7.94' x='.27' y='288.8' ry='1.17' stroke-linejoin='round'/%3E%3Cpath d='M1.59 290.12h5.29M1.59 291.45h5.33M1.59 292.75h5.33M1.59 294.09h5.33M1.59 295.41h5.33'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-grouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m4 0h5m4 0h3M6.1 22h3m3.9 0h5m4 0h4m-16-8h4m4 0h4'/%3E%3Cpath stroke-linecap='null' d='M5 17.5h22M5 26.6h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-ungrouped-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg stroke='%23000' stroke-linejoin='round' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-linecap='square' stroke-width='2' d='M6 10h4m-4 8h3m-3 8h4'/%3E%3Cpath stroke-linecap='null' d='M5 13.5h22m-22 8h22M5 5.5h22'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#bom-netlist-btn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cg fill='none' stroke='%23000' class='layer'%3E%3Crect width='29' height='29' x='1.5' y='1.5' stroke-width='2' fill='%23fff' rx='5' ry='5'/%3E%3Cpath stroke-width='2' d='M6 26l6-6v-8m13.8-6.3l-6 6v8'/%3E%3Ccircle cx='11.8' cy='9.5' r='2.8' stroke-width='2'/%3E%3Ccircle cx='19.8' cy='22.8' r='2.8' stroke-width='2'/%3E%3C/g%3E%3C/svg%3E");
|
|
}
|
|
|
|
button#copy {
|
|
background-image: url("data:image/svg+xml,%3Csvg height='48' viewBox='0 0 48 48' width='48' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h48v48h-48z' fill='none'/%3E%3Cpath d='M32 2h-24c-2.21 0-4 1.79-4 4v28h4v-28h24v-4zm6 8h-22c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h22c2.21 0 4-1.79 4-4v-28c0-2.21-1.79-4-4-4zm0 32h-22v-28h22v28z'/%3E%3C/svg%3E");
|
|
background-position: 6px 6px;
|
|
background-repeat: no-repeat;
|
|
background-size: 26px 26px;
|
|
border-radius: 6px;
|
|
height: 40px;
|
|
width: 40px;
|
|
margin: 10px 5px;
|
|
}
|
|
|
|
button#copy:active {
|
|
box-shadow: inset 0px 0px 5px #6c6c6c;
|
|
}
|
|
|
|
textarea.clipboard-temp {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 2em;
|
|
height: 2em;
|
|
padding: 0;
|
|
border: None;
|
|
outline: None;
|
|
box-shadow: None;
|
|
background: transparent;
|
|
}
|
|
|
|
.left-most-button {
|
|
border-right: 0;
|
|
border-top-left-radius: 6px;
|
|
border-bottom-left-radius: 6px;
|
|
}
|
|
|
|
.middle-button {
|
|
border-right: 0;
|
|
}
|
|
|
|
.right-most-button {
|
|
border-top-right-radius: 6px;
|
|
border-bottom-right-radius: 6px;
|
|
}
|
|
|
|
.button-container {
|
|
font-size: 0;
|
|
margin: 10px 10px 10px 0px;
|
|
}
|
|
|
|
.dark .button-container {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.button-container button {
|
|
background-size: 32px 32px;
|
|
background-position: 5px 5px;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
@media print {
|
|
.hideonprint {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
canvas {
|
|
cursor: crosshair;
|
|
}
|
|
|
|
canvas:active {
|
|
cursor: grabbing;
|
|
}
|
|
|
|
.fileinfo {
|
|
width: 100%;
|
|
max-width: 1000px;
|
|
border: none;
|
|
padding: 5px;
|
|
}
|
|
|
|
.fileinfo .title {
|
|
font-size: 20pt;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.fileinfo td {
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
max-width: 1px;
|
|
width: 50%;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.bom {
|
|
border-collapse: collapse;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 10pt;
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
margin-top: 1px;
|
|
position: relative;
|
|
}
|
|
|
|
.bom th,
|
|
.bom td {
|
|
border: 1px solid black;
|
|
padding: 5px;
|
|
word-wrap: break-word;
|
|
text-align: center;
|
|
position: relative;
|
|
}
|
|
|
|
.dark .bom th,
|
|
.dark .bom td {
|
|
border: 1px solid #777;
|
|
}
|
|
|
|
.bom th {
|
|
background-color: #CCCCCC;
|
|
background-clip: padding-box;
|
|
}
|
|
|
|
.dark .bom th {
|
|
background-color: #3b4749;
|
|
}
|
|
|
|
.bom tr.highlighted:nth-child(n) {
|
|
background-color: #cfc;
|
|
}
|
|
|
|
.dark .bom tr.highlighted:nth-child(n) {
|
|
background-color: #226022;
|
|
}
|
|
|
|
.bom tr:nth-child(even) {
|
|
background-color: #f2f2f2;
|
|
}
|
|
|
|
.dark .bom tr:nth-child(even) {
|
|
background-color: #313b40;
|
|
}
|
|
|
|
.bom tr.checked {
|
|
color: #1cb53d;
|
|
}
|
|
|
|
.dark .bom tr.checked {
|
|
color: #2cce54;
|
|
}
|
|
|
|
.bom tr {
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.bom .numCol {
|
|
width: 30px;
|
|
}
|
|
|
|
.bom .value {
|
|
width: 15%;
|
|
}
|
|
|
|
.bom .quantity {
|
|
width: 65px;
|
|
}
|
|
|
|
.bom th .sortmark {
|
|
position: absolute;
|
|
right: 1px;
|
|
top: 1px;
|
|
margin-top: -5px;
|
|
border-width: 5px;
|
|
border-style: solid;
|
|
border-color: transparent transparent #221 transparent;
|
|
transform-origin: 50% 85%;
|
|
transition: opacity 0.2s, transform 0.4s;
|
|
}
|
|
|
|
.dark .bom th .sortmark {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.bom th .sortmark.none {
|
|
opacity: 0;
|
|
}
|
|
|
|
.bom th .sortmark.desc {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.bom th:hover .sortmark.none {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.bom .bom-checkbox {
|
|
width: 30px;
|
|
position: relative;
|
|
user-select: none;
|
|
-moz-user-select: none;
|
|
}
|
|
|
|
.bom .bom-checkbox:before {
|
|
content: "";
|
|
position: absolute;
|
|
border-width: 15px;
|
|
border-style: solid;
|
|
border-color: #51829f transparent transparent transparent;
|
|
visibility: hidden;
|
|
top: -15px;
|
|
}
|
|
|
|
.bom .bom-checkbox:after {
|
|
content: "Double click to set/unset all";
|
|
position: absolute;
|
|
color: white;
|
|
top: -35px;
|
|
left: -26px;
|
|
background: #51829f;
|
|
padding: 5px 15px;
|
|
border-radius: 8px;
|
|
white-space: nowrap;
|
|
visibility: hidden;
|
|
}
|
|
|
|
.bom .bom-checkbox:hover:before,
|
|
.bom .bom-checkbox:hover:after {
|
|
visibility: visible;
|
|
transition: visibility 0.2s linear 1s;
|
|
}
|
|
|
|
.split {
|
|
-webkit-box-sizing: border-box;
|
|
-moz-box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
background-color: inherit;
|
|
}
|
|
|
|
.split.split-horizontal,
|
|
.gutter.gutter-horizontal {
|
|
height: 100%;
|
|
float: left;
|
|
}
|
|
|
|
.gutter {
|
|
background-color: #ddd;
|
|
background-repeat: no-repeat;
|
|
background-position: 50%;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
.dark .gutter {
|
|
background-color: #777;
|
|
}
|
|
|
|
.gutter.gutter-horizontal {
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAAIklEQVQoU2M4c+bMfxAGAgYYmwGrIIiDjrELjpo5aiZeMwF+yNnOs5KSvgAAAABJRU5ErkJggg==');
|
|
cursor: ew-resize;
|
|
width: 5px;
|
|
}
|
|
|
|
.gutter.gutter-vertical {
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAFAQMAAABo7865AAAABlBMVEVHcEzMzMzyAv2sAAAAAXRSTlMAQObYZgAAABBJREFUeF5jOAMEEAIEEFwAn3kMwcB6I2AAAAAASUVORK5CYII=');
|
|
cursor: ns-resize;
|
|
height: 5px;
|
|
}
|
|
|
|
.searchbox {
|
|
float: left;
|
|
height: 40px;
|
|
margin: 10px 5px;
|
|
padding: 12px 32px;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 18px;
|
|
box-sizing: border-box;
|
|
border: 1px solid #888;
|
|
border-radius: 6px;
|
|
outline: none;
|
|
background-color: #eee;
|
|
transition: background-color 0.2s, border 0.2s;
|
|
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABNklEQVQ4T8XSMUvDQBQH8P/LElFa/AIZHcTBQSz0I/gFstTBRR2KUC4ldDxw7h0Bl3RRUATxi4iiODgoiLNrbQYp5J6cpJJqomkX33Z37/14d/dIa33MzDuYI4johOI4XhyNRteO46zNYjDzAxE1yBZprVeZ+QbAUhXEGJMA2Ox2u4+fQIa0mPmsCgCgJYQ4t7lfgF0opQYAdv9ABkKI/UnOFCClXKjX61cA1osQY8x9kiRNKeV7IWA3oyhaSdP0FkAtjxhj3hzH2RBCPOf3pzqYHCilfAAX+URm9oMguPzeWSGQvUcMYC8rOBJCHBRdqxTo9/vbRHRqi8bj8XKv1xvODbiuW2u32/bvf0SlDv4XYOY7z/Mavu+nM1+BmQ+NMc0wDF/LprP0DbTWW0T00ul0nn4b7Q87+X4Qmfiq2wAAAABJRU5ErkJggg==');
|
|
background-position: 10px 10px;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.dark .searchbox {
|
|
background-color: #111;
|
|
color: #eee;
|
|
}
|
|
|
|
.searchbox::placeholder {
|
|
color: #ccc;
|
|
}
|
|
|
|
.dark .searchbox::placeholder {
|
|
color: #666;
|
|
}
|
|
|
|
.filter {
|
|
width: calc(60% - 64px);
|
|
}
|
|
|
|
.reflookup {
|
|
width: calc(40% - 10px);
|
|
}
|
|
|
|
input[type=text]:focus {
|
|
background-color: white;
|
|
border: 1px solid #333;
|
|
}
|
|
|
|
.dark input[type=text]:focus {
|
|
background-color: #333;
|
|
border: 1px solid #ccc;
|
|
}
|
|
|
|
mark.highlight {
|
|
background-color: #5050ff;
|
|
color: #fff;
|
|
padding: 2px;
|
|
border-radius: 6px;
|
|
}
|
|
|
|
.dark mark.highlight {
|
|
background-color: #76a6da;
|
|
color: #111;
|
|
}
|
|
|
|
.menubtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 20 20'%3E%3Cpath fill='none' d='M0 0h20v20H0V0z'/%3E%3Cpath d='M15.95 10.78c.03-.25.05-.51.05-.78s-.02-.53-.06-.78l1.69-1.32c.15-.12.19-.34.1-.51l-1.6-2.77c-.1-.18-.31-.24-.49-.18l-1.99.8c-.42-.32-.86-.58-1.35-.78L12 2.34c-.03-.2-.2-.34-.4-.34H8.4c-.2 0-.36.14-.39.34l-.3 2.12c-.49.2-.94.47-1.35.78l-1.99-.8c-.18-.07-.39 0-.49.18l-1.6 2.77c-.1.18-.06.39.1.51l1.69 1.32c-.04.25-.07.52-.07.78s.02.53.06.78L2.37 12.1c-.15.12-.19.34-.1.51l1.6 2.77c.1.18.31.24.49.18l1.99-.8c.42.32.86.58 1.35.78l.3 2.12c.04.2.2.34.4.34h3.2c.2 0 .37-.14.39-.34l.3-2.12c.49-.2.94-.47 1.35-.78l1.99.8c.18.07.39 0 .49-.18l1.6-2.77c.1-.18.06-.39-.1-.51l-1.67-1.32zM10 13c-1.65 0-3-1.35-3-3s1.35-3 3-3 3 1.35 3 3-1.35 3-3 3z'/%3E%3C/svg%3E%0A");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.statsbtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg width='36' height='36' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 6h28v24H4V6zm0 8h28v8H4m9-16v24h10V5.8' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.iobtn {
|
|
background-color: white;
|
|
border: none;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M3 33v-7l6.8-7h16.5l6.7 7v7H3zM3.2 26H33M21 9l5-5.9 5 6h-2.5V15h-5V9H21zm-4.9 0l-5 6-5-6h2.5V3h5v6h2.5z'/%3E%3Cpath fill='none' stroke='%23000' d='M6.1 29.5H10'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
}
|
|
|
|
.visbtn {
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cpath fill='none' stroke='%23333' d='M2.5 4.5h5v15h-5zM9.5 4.5h5v15h-5zM16.5 4.5h5v15h-5z'/%3E%3C/svg%3E");
|
|
background-position: center;
|
|
background-repeat: no-repeat;
|
|
padding: 15px;
|
|
}
|
|
|
|
#vismenu-content {
|
|
left: 0px;
|
|
font-family: Verdana, sans-serif;
|
|
}
|
|
|
|
.dark .statsbtn,
|
|
.dark .savebtn,
|
|
.dark .menubtn,
|
|
.dark .iobtn,
|
|
.dark .visbtn {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.flexbox {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
}
|
|
|
|
.savebtn {
|
|
background-color: #d6d6d6;
|
|
width: auto;
|
|
height: 30px;
|
|
flex-grow: 1;
|
|
margin: 5px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.savebtn:active {
|
|
background-color: #0a0;
|
|
color: white;
|
|
}
|
|
|
|
.dark .savebtn:active {
|
|
/* This will be inverted */
|
|
background-color: #b3b;
|
|
}
|
|
|
|
.stats {
|
|
border-collapse: collapse;
|
|
font-size: 12pt;
|
|
table-layout: fixed;
|
|
width: 100%;
|
|
min-width: 450px;
|
|
}
|
|
|
|
.dark .stats td {
|
|
border: 1px solid #bbb;
|
|
}
|
|
|
|
.stats td {
|
|
border: 1px solid black;
|
|
padding: 5px;
|
|
word-wrap: break-word;
|
|
text-align: center;
|
|
position: relative;
|
|
}
|
|
|
|
#checkbox-stats div {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
height: 100%;
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
#checkbox-stats .bar {
|
|
background-color: rgba(28, 251, 0, 0.6);
|
|
}
|
|
|
|
.menu {
|
|
position: relative;
|
|
display: inline-block;
|
|
margin: 10px 10px 10px 0px;
|
|
}
|
|
|
|
.menu-content {
|
|
font-size: 12pt !important;
|
|
text-align: left !important;
|
|
font-weight: normal !important;
|
|
display: none;
|
|
position: absolute;
|
|
background-color: white;
|
|
right: 0;
|
|
min-width: 300px;
|
|
box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
|
|
z-index: 100;
|
|
padding: 8px;
|
|
}
|
|
|
|
.dark .menu-content {
|
|
background-color: #111;
|
|
}
|
|
|
|
.menu:hover .menu-content {
|
|
display: block;
|
|
}
|
|
|
|
.menu:hover .menubtn,
|
|
.menu:hover .iobtn,
|
|
.menu:hover .statsbtn {
|
|
background-color: #eee;
|
|
}
|
|
|
|
.menu-label {
|
|
display: inline-block;
|
|
padding: 8px;
|
|
border: 1px solid #ccc;
|
|
border-top: 0;
|
|
width: calc(100% - 18px);
|
|
}
|
|
|
|
.menu-label-top {
|
|
border-top: 1px solid #ccc;
|
|
}
|
|
|
|
.menu-textbox {
|
|
float: left;
|
|
height: 24px;
|
|
margin: 10px 5px;
|
|
padding: 5px 5px;
|
|
font-family: Consolas, "DejaVu Sans Mono", Monaco, monospace;
|
|
font-size: 14px;
|
|
box-sizing: border-box;
|
|
border: 1px solid #888;
|
|
border-radius: 4px;
|
|
outline: none;
|
|
background-color: #eee;
|
|
transition: background-color 0.2s, border 0.2s;
|
|
width: calc(100% - 10px);
|
|
}
|
|
|
|
.menu-textbox.invalid,
|
|
.dark .menu-textbox.invalid {
|
|
color: red;
|
|
}
|
|
|
|
.dark .menu-textbox {
|
|
background-color: #222;
|
|
color: #eee;
|
|
}
|
|
|
|
.radio-container {
|
|
margin: 4px;
|
|
}
|
|
|
|
.topmostdiv {
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: white;
|
|
transition: background-color 0.3s;
|
|
}
|
|
|
|
#top {
|
|
height: 78px;
|
|
border-bottom: 2px solid black;
|
|
}
|
|
|
|
.dark #top {
|
|
border-bottom: 2px solid #ccc;
|
|
}
|
|
|
|
#dbg {
|
|
display: block;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 8px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: #aaa;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: #666;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: #555;
|
|
}
|
|
|
|
.slider {
|
|
-webkit-appearance: none;
|
|
width: 100%;
|
|
margin: 3px 0;
|
|
padding: 0;
|
|
outline: none;
|
|
opacity: 0.7;
|
|
-webkit-transition: .2s;
|
|
transition: opacity .2s;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
.slider:focus {
|
|
outline: none;
|
|
}
|
|
|
|
.slider::-webkit-slider-runnable-track {
|
|
-webkit-appearance: none;
|
|
width: 100%;
|
|
height: 8px;
|
|
background: #d3d3d3;
|
|
border-radius: 3px;
|
|
border: none;
|
|
}
|
|
|
|
.slider::-webkit-slider-thumb {
|
|
-webkit-appearance: none;
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
margin-top: -4px;
|
|
}
|
|
|
|
.dark .slider::-webkit-slider-thumb {
|
|
background: #3d3;
|
|
}
|
|
|
|
.slider::-moz-range-thumb {
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.slider::-moz-range-track {
|
|
height: 8px;
|
|
background: #d3d3d3;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.dark .slider::-moz-range-thumb {
|
|
background: #3d3;
|
|
}
|
|
|
|
.slider::-ms-track {
|
|
width: 100%;
|
|
height: 8px;
|
|
border-width: 3px 0;
|
|
background: transparent;
|
|
border-color: transparent;
|
|
color: transparent;
|
|
transition: opacity .2s;
|
|
}
|
|
|
|
.slider::-ms-fill-lower {
|
|
background: #d3d3d3;
|
|
border: none;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider::-ms-fill-upper {
|
|
background: #d3d3d3;
|
|
border: none;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.slider::-ms-thumb {
|
|
width: 15px;
|
|
height: 15px;
|
|
border-radius: 50%;
|
|
background: #0a0;
|
|
cursor: pointer;
|
|
margin: 0;
|
|
}
|
|
|
|
.shameless-plug {
|
|
font-size: 0.8em;
|
|
text-align: center;
|
|
display: block;
|
|
}
|
|
|
|
a {
|
|
color: #0278a4;
|
|
}
|
|
|
|
.dark a {
|
|
color: #00b9fd;
|
|
}
|
|
|
|
#frontcanvas,
|
|
#backcanvas {
|
|
touch-action: none;
|
|
}
|
|
|
|
.placeholder {
|
|
border: 1px dashed #9f9fda !important;
|
|
background-color: #edf2f7 !important;
|
|
}
|
|
|
|
.dragging {
|
|
z-index: 999;
|
|
}
|
|
|
|
.dark .dragging>table>tbody>tr {
|
|
background-color: #252c30;
|
|
}
|
|
|
|
.dark .placeholder {
|
|
filter: invert(1);
|
|
}
|
|
|
|
.column-spacer {
|
|
top: 0;
|
|
left: 0;
|
|
width: calc(100% - 4px);
|
|
position: absolute;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
height: 100%;
|
|
}
|
|
|
|
.column-width-handle {
|
|
top: 0;
|
|
right: 0;
|
|
width: 4px;
|
|
position: absolute;
|
|
cursor: col-resize;
|
|
user-select: none;
|
|
height: 100%;
|
|
}
|
|
|
|
.column-width-handle:hover {
|
|
background-color: #4f99bd;
|
|
}
|
|
|
|
.help-link {
|
|
border: 1px solid #0278a4;
|
|
padding-inline: 0.3rem;
|
|
border-radius: 3px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.dark .help-link {
|
|
border: 1px solid #00b9fd;
|
|
}
|
|
|
|
|
|
</style>
|
|
<script type="text/javascript" >
|
|
///////////////////////////////////////////////
|
|
/*
|
|
Split.js - v1.3.5
|
|
MIT License
|
|
https://github.com/nathancahill/Split.js
|
|
*/
|
|
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.Split=t()}(this,function(){"use strict";var e=window,t=e.document,n="addEventListener",i="removeEventListener",r="getBoundingClientRect",s=function(){return!1},o=e.attachEvent&&!e[n],a=["","-webkit-","-moz-","-o-"].filter(function(e){var n=t.createElement("div");return n.style.cssText="width:"+e+"calc(9px)",!!n.style.length}).shift()+"calc",l=function(e){return"string"==typeof e||e instanceof String?t.querySelector(e):e};return function(u,c){function z(e,t,n){var i=A(y,t,n);Object.keys(i).forEach(function(t){return e.style[t]=i[t]})}function h(e,t){var n=B(y,t);Object.keys(n).forEach(function(t){return e.style[t]=n[t]})}function f(e){var t=E[this.a],n=E[this.b],i=t.size+n.size;t.size=e/this.size*i,n.size=i-e/this.size*i,z(t.element,t.size,this.aGutterSize),z(n.element,n.size,this.bGutterSize)}function m(e){var t;this.dragging&&((t="touches"in e?e.touches[0][b]-this.start:e[b]-this.start)<=E[this.a].minSize+M+this.aGutterSize?t=E[this.a].minSize+this.aGutterSize:t>=this.size-(E[this.b].minSize+M+this.bGutterSize)&&(t=this.size-(E[this.b].minSize+this.bGutterSize)),f.call(this,t),c.onDrag&&c.onDrag())}function g(){var e=E[this.a].element,t=E[this.b].element;this.size=e[r]()[y]+t[r]()[y]+this.aGutterSize+this.bGutterSize,this.start=e[r]()[G]}function d(){var t=this,n=E[t.a].element,r=E[t.b].element;t.dragging&&c.onDragEnd&&c.onDragEnd(),t.dragging=!1,e[i]("mouseup",t.stop),e[i]("touchend",t.stop),e[i]("touchcancel",t.stop),t.parent[i]("mousemove",t.move),t.parent[i]("touchmove",t.move),delete t.stop,delete t.move,n[i]("selectstart",s),n[i]("dragstart",s),r[i]("selectstart",s),r[i]("dragstart",s),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",t.gutter.style.cursor="",t.parent.style.cursor=""}function S(t){var i=this,r=E[i.a].element,o=E[i.b].element;!i.dragging&&c.onDragStart&&c.onDragStart(),t.preventDefault(),i.dragging=!0,i.move=m.bind(i),i.stop=d.bind(i),e[n]("mouseup",i.stop),e[n]("touchend",i.stop),e[n]("touchcancel",i.stop),i.parent[n]("mousemove",i.move),i.parent[n]("touchmove",i.move),r[n]("selectstart",s),r[n]("dragstart",s),o[n]("selectstart",s),o[n]("dragstart",s),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",o.style.userSelect="none",o.style.webkitUserSelect="none",o.style.MozUserSelect="none",o.style.pointerEvents="none",i.gutter.style.cursor=j,i.parent.style.cursor=j,g.call(i)}function v(e){e.forEach(function(t,n){if(n>0){var i=F[n-1],r=E[i.a],s=E[i.b];r.size=e[n-1],s.size=t,z(r.element,r.size,i.aGutterSize),z(s.element,s.size,i.bGutterSize)}})}function p(){F.forEach(function(e){e.parent.removeChild(e.gutter),E[e.a].element.style[y]="",E[e.b].element.style[y]=""})}void 0===c&&(c={});var y,b,G,E,w=l(u[0]).parentNode,D=e.getComputedStyle(w).flexDirection,U=c.sizes||u.map(function(){return 100/u.length}),k=void 0!==c.minSize?c.minSize:100,x=Array.isArray(k)?k:u.map(function(){return k}),L=void 0!==c.gutterSize?c.gutterSize:10,M=void 0!==c.snapOffset?c.snapOffset:30,O=c.direction||"horizontal",j=c.cursor||("horizontal"===O?"ew-resize":"ns-resize"),C=c.gutter||function(e,n){var i=t.createElement("div");return i.className="gutter gutter-"+n,i},A=c.elementStyle||function(e,t,n){var i={};return"string"==typeof t||t instanceof String?i[e]=t:i[e]=o?t+"%":a+"("+t+"% - "+n+"px)",i},B=c.gutterStyle||function(e,t){return n={},n[e]=t+"px",n;var n};"horizontal"===O?(y="width","clientWidth",b="clientX",G="left","paddingLeft"):"vertical"===O&&(y="height","clientHeight",b="clientY",G="top","paddingTop");var F=[];return E=u.map(function(e,t){var i,s={element:l(e),size:U[t],minSize:x[t]};if(t>0&&(i={a:t-1,b:t,dragging:!1,isFirst:1===t,isLast:t===u.length-1,direction:O,parent:w},i.aGutterSize=L,i.bGutterSize=L,i.isFirst&&(i.aGutterSize=L/2),i.isLast&&(i.bGutterSize=L/2),"row-reverse"===D||"column-reverse"===D)){var a=i.a;i.a=i.b,i.b=a}if(!o&&t>0){var c=C(t,O);h(c,L),c[n]("mousedown",S.bind(i)),c[n]("touchstart",S.bind(i)),w.insertBefore(c,s.element),i.gutter=c}0===t||t===u.length-1?z(s.element,s.size,L/2):z(s.element,s.size,L);var f=s.element[r]()[y];return f<s.minSize&&(s.minSize=f),t>0&&F.push(i),s}),o?{setSizes:v,destroy:p}:{setSizes:v,getSizes:function(){return E.map(function(e){return e.size})},collapse:function(e){if(e===F.length){var t=F[e-1];g.call(t),o||f.call(t,t.size-t.bGutterSize)}else{var n=F[e];g.call(n),o||f.call(n,n.aGutterSize)}},destroy:p}}});
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>
|
|
// This work is free. You can redistribute it and/or modify it
|
|
// under the terms of the WTFPL, Version 2
|
|
// For more information see LICENSE.txt or http://www.wtfpl.net/
|
|
//
|
|
// For more information, the home page:
|
|
// http://pieroxy.net/blog/pages/lz-string/testing.html
|
|
//
|
|
// LZ-based compression algorithm, version 1.4.4
|
|
var LZString=function(){var o=String.fromCharCode,i={};var n={decompressFromBase64:function(o){return null==o?"":""==o?null:n._decompress(o.length,32,function(n){return function(o,n){if(!i[o]){i[o]={};for(var t=0;t<o.length;t++)i[o][o.charAt(t)]=t}return i[o][n]}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o.charAt(n))})},_decompress:function(i,n,t){var r,e,a,s,p,u,l,f=[],c=4,d=4,h=3,v="",g=[],m={val:t(0),position:n,index:1};for(r=0;r<3;r+=1)f[r]=r;for(a=0,p=Math.pow(2,2),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;l=o(a);break;case 2:return""}for(f[3]=l,e=l,g.push(l);;){if(m.index>i)return"";for(a=0,p=Math.pow(2,h),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;switch(l=a){case 0:for(a=0,p=Math.pow(2,8),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 1:for(a=0,p=Math.pow(2,16),u=1;u!=p;)s=m.val&m.position,m.position>>=1,0==m.position&&(m.position=n,m.val=t(m.index++)),a|=(s>0?1:0)*u,u<<=1;f[d++]=o(a),l=d-1,c--;break;case 2:return g.join("")}if(0==c&&(c=Math.pow(2,h),h++),f[l])v=f[l];else{if(l!==d)return null;v=e+e.charAt(0)}g.push(v),f[d++]=e+v.charAt(0),e=v,0==--c&&(c=Math.pow(2,h),h++)}}};return n}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString});
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/*!
|
|
* PEP v0.4.3 | https://github.com/jquery/PEP
|
|
* Copyright jQuery Foundation and other contributors | http://jquery.org/license
|
|
*/
|
|
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.PointerEventsPolyfill=b()}(this,function(){"use strict";function a(a,b){b=b||Object.create(null);var c=document.createEvent("Event");c.initEvent(a,b.bubbles||!1,b.cancelable||!1);
|
|
for(var d,e=2;e<m.length;e++)d=m[e],c[d]=b[d]||n[e];c.buttons=b.buttons||0;
|
|
var f=0;return f=b.pressure&&c.buttons?b.pressure:c.buttons?.5:0,c.x=c.clientX,c.y=c.clientY,c.pointerId=b.pointerId||0,c.width=b.width||0,c.height=b.height||0,c.pressure=f,c.tiltX=b.tiltX||0,c.tiltY=b.tiltY||0,c.twist=b.twist||0,c.tangentialPressure=b.tangentialPressure||0,c.pointerType=b.pointerType||"",c.hwTimestamp=b.hwTimestamp||0,c.isPrimary=b.isPrimary||!1,c}function b(){this.array=[],this.size=0}function c(a,b,c,d){this.addCallback=a.bind(d),this.removeCallback=b.bind(d),this.changedCallback=c.bind(d),A&&(this.observer=new A(this.mutationWatcher.bind(this)))}function d(a){return"body /shadow-deep/ "+e(a)}function e(a){return'[touch-action="'+a+'"]'}function f(a){return"{ -ms-touch-action: "+a+"; touch-action: "+a+"; }"}function g(){if(F){D.forEach(function(a){String(a)===a?(E+=e(a)+f(a)+"\n",G&&(E+=d(a)+f(a)+"\n")):(E+=a.selectors.map(e)+f(a.rule)+"\n",G&&(E+=a.selectors.map(d)+f(a.rule)+"\n"))});var a=document.createElement("style");a.textContent=E,document.head.appendChild(a)}}function h(){if(!window.PointerEvent){if(window.PointerEvent=a,window.navigator.msPointerEnabled){var b=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:b,enumerable:!0}),u.registerSource("ms",_)}else Object.defineProperty(window.navigator,"maxTouchPoints",{value:0,enumerable:!0}),u.registerSource("mouse",N),void 0!==window.ontouchstart&&u.registerSource("touch",V);u.register(document)}}function i(a){if(!u.pointermap.has(a)){var b=new Error("InvalidPointerId");throw b.name="InvalidPointerId",b}}function j(a){for(var b=a.parentNode;b&&b!==a.ownerDocument;)b=b.parentNode;if(!b){var c=new Error("InvalidStateError");throw c.name="InvalidStateError",c}}function k(a){var b=u.pointermap.get(a);return 0!==b.buttons}function l(){window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:W},releasePointerCapture:{value:X},hasPointerCapture:{value:Y}})}
|
|
var m=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],n=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],o=window.Map&&window.Map.prototype.forEach,p=o?Map:b;b.prototype={set:function(a,b){return void 0===b?this["delete"](a):(this.has(a)||this.size++,void(this.array[a]=b))},has:function(a){return void 0!==this.array[a]},"delete":function(a){this.has(a)&&(delete this.array[a],this.size--)},get:function(a){return this.array[a]},clear:function(){this.array.length=0,this.size=0},forEach:function(a,b){return this.array.forEach(function(c,d){a.call(b,c,d,this)},this)}};var q=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],r=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],s={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},t="undefined"!=typeof SVGElementInstance,u={pointermap:new p,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(a,b){var c=b,d=c.events;d&&(d.forEach(function(a){c[a]&&(this.eventMap[a]=c[a].bind(c))},this),this.eventSources[a]=c,this.eventSourceList.push(c))},register:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
|
|
b.register.call(b,a)},unregister:function(a){for(var b,c=this.eventSourceList.length,d=0;d<c&&(b=this.eventSourceList[d]);d++)
|
|
b.unregister.call(b,a)},contains:function(a,b){try{return a.contains(b)}catch(c){return!1}},down:function(a){a.bubbles=!0,this.fireEvent("pointerdown",a)},move:function(a){a.bubbles=!0,this.fireEvent("pointermove",a)},up:function(a){a.bubbles=!0,this.fireEvent("pointerup",a)},enter:function(a){a.bubbles=!1,this.fireEvent("pointerenter",a)},leave:function(a){a.bubbles=!1,this.fireEvent("pointerleave",a)},over:function(a){a.bubbles=!0,this.fireEvent("pointerover",a)},out:function(a){a.bubbles=!0,this.fireEvent("pointerout",a)},cancel:function(a){a.bubbles=!0,this.fireEvent("pointercancel",a)},leaveOut:function(a){this.out(a),this.propagate(a,this.leave,!1)},enterOver:function(a){this.over(a),this.propagate(a,this.enter,!0)},eventHandler:function(a){if(!a._handledByPE){var b=a.type,c=this.eventMap&&this.eventMap[b];c&&c(a),a._handledByPE=!0}},listen:function(a,b){b.forEach(function(b){this.addEvent(a,b)},this)},unlisten:function(a,b){b.forEach(function(b){this.removeEvent(a,b)},this)},addEvent:function(a,b){a.addEventListener(b,this.boundHandler)},removeEvent:function(a,b){a.removeEventListener(b,this.boundHandler)},makeEvent:function(b,c){this.captureInfo[c.pointerId]&&(c.relatedTarget=null);var d=new a(b,c);return c.preventDefault&&(d.preventDefault=c.preventDefault),d._target=d._target||c.target,d},fireEvent:function(a,b){var c=this.makeEvent(a,b);return this.dispatchEvent(c)},cloneEvent:function(a){for(var b,c=Object.create(null),d=0;d<q.length;d++)b=q[d],c[b]=a[b]||r[d],!t||"target"!==b&&"relatedTarget"!==b||c[b]instanceof SVGElementInstance&&(c[b]=c[b].correspondingUseElement);return a.preventDefault&&(c.preventDefault=function(){a.preventDefault()}),c},getTarget:function(a){var b=this.captureInfo[a.pointerId];return b?a._target!==b&&a.type in s?void 0:b:a._target},propagate:function(a,b,c){for(var d=a.target,e=[];d!==document&&!d.contains(a.relatedTarget);) if(e.push(d),d=d.parentNode,!d)return;c&&e.reverse(),e.forEach(function(c){a.target=c,b.call(this,a)},this)},setCapture:function(b,c,d){this.captureInfo[b]&&this.releaseCapture(b,d),this.captureInfo[b]=c,this.implicitRelease=this.releaseCapture.bind(this,b,d),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease);var e=new a("gotpointercapture");e.pointerId=b,e._target=c,d||this.asyncDispatchEvent(e)},releaseCapture:function(b,c){var d=this.captureInfo[b];if(d){this.captureInfo[b]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease);var e=new a("lostpointercapture");e.pointerId=b,e._target=d,c||this.asyncDispatchEvent(e)}},dispatchEvent:/*scope.external.dispatchEvent || */function(a){var b=this.getTarget(a);if(b)return b.dispatchEvent(a)},asyncDispatchEvent:function(a){requestAnimationFrame(this.dispatchEvent.bind(this,a))}};u.boundHandler=u.eventHandler.bind(u);var v={shadow:function(a){if(a)return a.shadowRoot||a.webkitShadowRoot},canTarget:function(a){return a&&Boolean(a.elementFromPoint)},targetingShadow:function(a){var b=this.shadow(a);if(this.canTarget(b))return b},olderShadow:function(a){var b=a.olderShadowRoot;if(!b){var c=a.querySelector("shadow");c&&(b=c.olderShadowRoot)}return b},allShadows:function(a){for(var b=[],c=this.shadow(a);c;)b.push(c),c=this.olderShadow(c);return b},searchRoot:function(a,b,c){if(a){var d,e,f=a.elementFromPoint(b,c);for(e=this.targetingShadow(f);e;){if(d=e.elementFromPoint(b,c)){var g=this.targetingShadow(d);return this.searchRoot(g,b,c)||d} e=this.olderShadow(e)} return f}},owner:function(a){
|
|
for(var b=a;b.parentNode;)b=b.parentNode;
|
|
return b.nodeType!==Node.DOCUMENT_NODE&&b.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(b=document),b},findTarget:function(a){var b=a.clientX,c=a.clientY,d=this.owner(a.target);
|
|
return d.elementFromPoint(b,c)||(d=document),this.searchRoot(d,b,c)}},w=Array.prototype.forEach.call.bind(Array.prototype.forEach),x=Array.prototype.map.call.bind(Array.prototype.map),y=Array.prototype.slice.call.bind(Array.prototype.slice),z=Array.prototype.filter.call.bind(Array.prototype.filter),A=window.MutationObserver||window.WebKitMutationObserver,B="[touch-action]",C={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};c.prototype={watchSubtree:function(a){
|
|
//
|
|
this.observer&&v.canTarget(a)&&this.observer.observe(a,C)},enableOnSubtree:function(a){this.watchSubtree(a),a===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(a)},installNewSubtree:function(a){w(this.findElements(a),this.addElement,this)},findElements:function(a){return a.querySelectorAll?a.querySelectorAll(B):[]},removeElement:function(a){this.removeCallback(a)},addElement:function(a){this.addCallback(a)},elementChanged:function(a,b){this.changedCallback(a,b)},concatLists:function(a,b){return a.concat(y(b))},
|
|
installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(a){return a.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(a){
|
|
var b=x(a,this.findElements,this);
|
|
return b.push(z(a,this.isElement)),b.reduce(this.concatLists,[])},mutationWatcher:function(a){a.forEach(this.mutationHandler,this)},mutationHandler:function(a){if("childList"===a.type){var b=this.flattenMutationTree(a.addedNodes);b.forEach(this.addElement,this);var c=this.flattenMutationTree(a.removedNodes);c.forEach(this.removeElement,this)}else"attributes"===a.type&&this.elementChanged(a.target,a.oldValue)}};var D=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],E="",F=window.PointerEvent||window.MSPointerEvent,G=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,H=u.pointermap,I=25,J=[1,4,2,8,16],K=!1;try{K=1===new MouseEvent("test",{buttons:1}).buttons}catch(L){}
|
|
var M,N={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},lastTouches:[],
|
|
isEventSimulatedFromTouch:function(a){for(var b,c=this.lastTouches,d=a.clientX,e=a.clientY,f=0,g=c.length;f<g&&(b=c[f]);f++){
|
|
var h=Math.abs(d-b.x),i=Math.abs(e-b.y);if(h<=I&&i<=I)return!0}},prepareEvent:function(a){var b=u.cloneEvent(a),c=b.preventDefault;return b.preventDefault=function(){a.preventDefault(),c()},b.pointerId=this.POINTER_ID,b.isPrimary=!0,b.pointerType=this.POINTER_TYPE,b},prepareButtonsForMove:function(a,b){var c=H.get(this.POINTER_ID);
|
|
0!==b.which&&c?a.buttons=c.buttons:a.buttons=0,b.buttons=a.buttons},mousedown:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);K||(c.buttons=J[c.button],b&&(c.buttons|=b.buttons),a.buttons=c.buttons),H.set(this.POINTER_ID,a),b&&0!==b.buttons?u.move(c):u.down(c)}},mousemove:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.move(b)}},mouseup:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=H.get(this.POINTER_ID),c=this.prepareEvent(a);if(!K){var d=J[c.button];
|
|
c.buttons=b?b.buttons&~d:0,a.buttons=c.buttons}H.set(this.POINTER_ID,a),
|
|
c.buttons&=~J[c.button],0===c.buttons?u.up(c):u.move(c)}},mouseover:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,H.set(this.POINTER_ID,a),u.enterOver(b)}},mouseout:function(a){if(!this.isEventSimulatedFromTouch(a)){var b=this.prepareEvent(a);K||this.prepareButtonsForMove(b,a),b.button=-1,u.leaveOut(b)}},cancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.deactivateMouse()},deactivateMouse:function(){H["delete"](this.POINTER_ID)}},O=u.captureInfo,P=v.findTarget.bind(v),Q=v.allShadows.bind(v),R=u.pointermap,S=2500,T=200,U="touch-action",V={events:["touchstart","touchmove","touchend","touchcancel"],register:function(a){M.enableOnSubtree(a)},unregister:function(){},elementAdded:function(a){var b=a.getAttribute(U),c=this.touchActionToScrollType(b);c&&(a._scrollType=c,u.listen(a,this.events),
|
|
Q(a).forEach(function(a){a._scrollType=c,u.listen(a,this.events)},this))},elementRemoved:function(a){a._scrollType=void 0,u.unlisten(a,this.events),
|
|
Q(a).forEach(function(a){a._scrollType=void 0,u.unlisten(a,this.events)},this)},elementChanged:function(a,b){var c=a.getAttribute(U),d=this.touchActionToScrollType(c),e=this.touchActionToScrollType(b);
|
|
d&&e?(a._scrollType=d,Q(a).forEach(function(a){a._scrollType=d},this)):e?this.elementRemoved(a):d&&this.elementAdded(a)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(a){var b=a,c=this.scrollTypes;return"none"===b?"none":b===c.XSCROLLER?"X":b===c.YSCROLLER?"Y":c.SCROLLER.exec(b)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(a){return this.firstTouch===a.identifier},setPrimaryTouch:function(a){
|
|
(0===R.size||1===R.size&&R.has(1))&&(this.firstTouch=a.identifier,this.firstXY={X:a.clientX,Y:a.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(a){a.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var a=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(a,T)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(a){var b=0;return"touchstart"!==a&&"touchmove"!==a||(b=1),b},touchToPointer:function(a){var b=this.currentTouchEvent,c=u.cloneEvent(a),d=c.pointerId=a.identifier+2;c.target=O[d]||P(c),c.bubbles=!0,c.cancelable=!0,c.detail=this.clickCount,c.button=0,c.buttons=this.typeToButtons(b.type),c.width=2*(a.radiusX||a.webkitRadiusX||0),c.height=2*(a.radiusY||a.webkitRadiusY||0),c.pressure=a.force||a.webkitForce||.5,c.isPrimary=this.isPrimaryTouch(a),c.pointerType=this.POINTER_TYPE,
|
|
c.altKey=b.altKey,c.ctrlKey=b.ctrlKey,c.metaKey=b.metaKey,c.shiftKey=b.shiftKey;
|
|
var e=this;return c.preventDefault=function(){e.scrolling=!1,e.firstXY=null,b.preventDefault()},c},processTouches:function(a,b){var c=a.changedTouches;this.currentTouchEvent=a;for(var d,e=0;e<c.length;e++)d=c[e],b.call(this,this.touchToPointer(d))},
|
|
shouldScroll:function(a){if(this.firstXY){var b,c=a.currentTarget._scrollType;if("none"===c)
|
|
b=!1;else if("XY"===c)
|
|
b=!0;else{var d=a.changedTouches[0],e=c,f="Y"===c?"X":"Y",g=Math.abs(d["client"+e]-this.firstXY[e]),h=Math.abs(d["client"+f]-this.firstXY[f]);
|
|
b=g>=h}return this.firstXY=null,b}},findTouch:function(a,b){for(var c,d=0,e=a.length;d<e&&(c=a[d]);d++)if(c.identifier===b)return!0},
|
|
vacuumTouches:function(a){var b=a.touches;
|
|
if(R.size>=b.length){var c=[];R.forEach(function(a,d){
|
|
if(1!==d&&!this.findTouch(b,d-2)){var e=a.out;c.push(e)}},this),c.forEach(this.cancelOut,this)}},touchstart:function(a){this.vacuumTouches(a),this.setPrimaryTouch(a.changedTouches[0]),this.dedupSynthMouse(a),this.scrolling||(this.clickCount++,this.processTouches(a,this.overDown))},overDown:function(a){R.set(a.pointerId,{target:a.target,out:a,outTarget:a.target}),u.enterOver(a),u.down(a)},touchmove:function(a){this.scrolling||(this.shouldScroll(a)?(this.scrolling=!0,this.touchcancel(a)):(a.preventDefault(),this.processTouches(a,this.moveOverOut)))},moveOverOut:function(a){var b=a,c=R.get(b.pointerId);
|
|
if(c){var d=c.out,e=c.outTarget;u.move(b),d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,
|
|
d.target=e,b.target?(u.leaveOut(d),u.enterOver(b)):(
|
|
b.target=e,b.relatedTarget=null,this.cancelOut(b))),c.out=b,c.outTarget=b.target}},touchend:function(a){this.dedupSynthMouse(a),this.processTouches(a,this.upOut)},upOut:function(a){this.scrolling||(u.up(a),u.leaveOut(a)),this.cleanUpPointer(a)},touchcancel:function(a){this.processTouches(a,this.cancelOut)},cancelOut:function(a){u.cancel(a),u.leaveOut(a),this.cleanUpPointer(a)},cleanUpPointer:function(a){R["delete"](a.pointerId),this.removePrimaryPointer(a)},
|
|
dedupSynthMouse:function(a){var b=N.lastTouches,c=a.changedTouches[0];
|
|
if(this.isPrimaryTouch(c)){
|
|
var d={x:c.clientX,y:c.clientY};b.push(d);var e=function(a,b){var c=a.indexOf(b);c>-1&&a.splice(c,1)}.bind(null,b,d);setTimeout(e,S)}}};M=new c(V.elementAdded,V.elementRemoved,V.elementChanged,V);var W,X,Y,Z=u.pointermap,$=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,_={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(a){u.listen(a,this.events)},unregister:function(a){u.unlisten(a,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(a){var b=a;return $&&(b=u.cloneEvent(a),b.pointerType=this.POINTER_TYPES[a.pointerType]),b},cleanup:function(a){Z["delete"](a)},MSPointerDown:function(a){Z.set(a.pointerId,a);var b=this.prepareEvent(a);u.down(b)},MSPointerMove:function(a){var b=this.prepareEvent(a);u.move(b)},MSPointerUp:function(a){var b=this.prepareEvent(a);u.up(b),this.cleanup(a.pointerId)},MSPointerOut:function(a){var b=this.prepareEvent(a);u.leaveOut(b)},MSPointerOver:function(a){var b=this.prepareEvent(a);u.enterOver(b)},MSPointerCancel:function(a){var b=this.prepareEvent(a);u.cancel(b),this.cleanup(a.pointerId)},MSLostPointerCapture:function(a){var b=u.makeEvent("lostpointercapture",a);u.dispatchEvent(b)},MSGotPointerCapture:function(a){var b=u.makeEvent("gotpointercapture",a);u.dispatchEvent(b)}},aa=window.navigator;aa.msPointerEnabled?(W=function(a){i(a),j(this),k(a)&&(u.setCapture(a,this,!0),this.msSetPointerCapture(a))},X=function(a){i(a),u.releaseCapture(a,!0),this.msReleasePointerCapture(a)}):(W=function(a){i(a),j(this),k(a)&&u.setCapture(a,this)},X=function(a){i(a),u.releaseCapture(a)}),Y=function(a){return!!u.captureInfo[a]},g(),h(),l();var ba={dispatcher:u,Installer:c,PointerEvent:a,PointerMap:p,targetFinding:v};return ba});
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var config = {"dark_mode": false, "show_pads": true, "show_fabrication": false, "show_silkscreen": true, "highlight_pin1": false, "redraw_on_drag": true, "board_rotation": 0, "checkboxes": "Sourced,Placed", "bom_view": "left-right", "layer_view": "FB", "offset_back_rotation": false, "kicad_text_formatting": true, "fields": ["Value", "Footprint"]}
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
var pcbdata = JSON.parse(LZString.decompressFromBase64("N4IgpgJg5mDOD6AjRB7AHiAXAAlAWwEsA7DHAdjIDoBGAZgE4AabEQogTy2wBYreAmZqwCGaUtjq1KZAByCWeUZxzVelWrW4BfIZBiwuAbVAAXdgAcwXELDBQ8YIiZBDYJ4QCdnOQ2XrT+Jh4qAFZ+fgBdXSIIIzpqGnp5NTDIoQB3AggTAAsuAAYaHVwQM0trTwBjFxY3T29sQ3jE+VVuaW5uKJYPYQgCAFcDHH5KEO5Xdy9hIigAGyscQvzoiBn5xex6ZYys3IKi5lMLTZAqmpsphqbaBOok5hDlgDY0nr7B4exR8cn69YWXAAtNtKCsWI41rNAUswbtsnlYdRisdyjgzh5qn8vEY/AEgk8wa9uiBev0hlwfhNalcAZsgdQZDsITE6cDQeCQJkEQdkUdSidrLZ7I5nNjrs17q01PwZF1Vrj/GRAsxVFRZfKWNz9kiUQK0bU7A4nBc6jifJJpLR5IT8sSFRaNFbpe0yJ0SdrEdhCnySmVTudxYr8arOh1NaSPhSRmNqZd/tDNhzVmyVEy4Vq9l6fXr/UKjaLTVdcVRGUE2uGSZCSzQZASXm8uVneVoSRBeplZl9QLACHMANawSoeMCOLigABiRlMOQIlX7RDgXx9IVcADcoOZhDqWABZajUZ5jfJusjURghKSBV60MgAGQPR6ep/PYUozwo9wfh8oMj/3H4WgLykfJqHyMJaG/I8/zlQCL1GGQP2eZCoMoehaGefIAPg6RlQAmRUPoGQMOeV9Rjwpl6G/KgTz/egmDfD8zyog8qFuZ56ImRjPxY6g+GocJrRwij8l4vgQiIsJhLw2VqOPF8cMQshkOeOTn14V8pGoS9aAI1jKG4CSZCky9KH4bhEMZOTuAEwDBFM69ALIfcf3Us8cIYNUQjUk8NJw8CZFUfhULc18EhE+gXKfXz3JCBILI/OgQpi19CiUlTUJggCgLisz8lE+jMv/ODcoCoLCIwrD7MKehXm2bhCOI5DUrQ7TZW8/TaLrBi0qQlD9PYziL165T+r4gzbKEwl6Da4zrKMkyarqrCfIU0qQkCgDVr83LNF0kJVP0wzJPs+KGFEhqjsm06DKUugQFzWd50XWBlxoVdag3LcdxAFz/DoQSZBw2rAhWg9/HyOVSIYkCNvK8GwSh+5gLygreP+61AKB0y9uMw77jM/hT2eFHuHO+hLoJzGzy4qQErPSCEbi24YbGPbrW/fxngOrCyBRy8yY5hGoYg0m7sZgmKb40jSfJy7+GWW8Udxg6HwVxHuGhlGFbRtXliR1mwJCZTqD1sElbfEH6s5tC6104HZo6gnucw3gHbCOaEZd3mUaNk393VyHNeRt96aShGg610PxbNyOQ4SGaPadiGDYvBPHYD/Xg4Ys7tgpm245zgy5YL1Pcp1+j0ZoTH7fWzbgoR8JieGtDlsp/xqdUFvE/am3mZDkaMq9nm3cJdKxv8EWSpqx2balk3u7b2OLYSMqtoErOo4SCvCo3jWt+LvPuAe/lcjnBcl15D6bC+7cvV+g9RlocCDuxq8Qd078n8vRk+dM7SNCBS/uoH+Mg/6jB7ohYBz8Qiv0UjrCywD+DGwptjciMleKjEPETMiAQLKm0fkSU89lyLmSAQeBOypAJcXQeZQI34E7mVIquN8ch8qIIob+ZS9ESaW1mvjBIch0IUF9uBZSDcDzSECmQDa2tQIMKtDZBg2sEpfk4c8XS2xNJmQ/npSR4wSI5XfjePR8ULIARYVeVRvF4r5SZLwq88jOG0FAX/LSYjXgKJcbcMBik+r3k4dwOxdphJkOoC5b+PjwE6JMV41xOFHKf2cfEt8a8Ja2MhiE3KkCBEGVqlhLigiEGmLGDNWUN0KB0JsVIvisjcoUQIZIpIwcWHhTCcAg8TwZpp1wlUpBYFrRFzYVhPRT8X7PGxunD2+NIm/38nDMm0CUmjESTICJRCBA9JVgEgSGzlQt3Hs5Qh3i5m5TJnnJ2CQTm+Nyn7TxxyUmFEqQBegJ8/RPQvq9K+65Nx32sPuSGuFXYsJWboh8gKKDAp6Q0gFSplJYRBWCI25lwUyCBQi/yyLuAArRZCjFZy7qXVEuiwyBzik4pJSwtKxTwVwqhQSxKx9Hrnxem9bSPzvr3wBe0V40tcFw3oJecF7RVCwOiTk7l75+B8t9jpch+QpC8oXv/OVBCFVSplW+Z59CBnvg4rXUYTF7hqqkGeDi9EcJ1WNg3dVgVBLRIFUK3Vgquk0LGIFQVjMsJgieBoEhUrBXKmFWCegfg4qWp4mqkVhljbST6WBaNYrZWAPCQmsYbogoJKcd6pVMtUkLK9Ty6VyqinsL0t642NlsL1PaWmsI3Nwg9KNTNYNZMBJyibYEa1waNCu14QkK1Qa03mUyZM98kbg33B8UXBpk6Y1/1LSM4Nokw24NAuBFFabwIKqmlgjxNr2j5RwTlLBqrwVSG2KeRFCsTW/kmtEm957pCHkrjhABulb3IXQmgmg+6n25rXVi/9xa83hQwf+/VY7B38ABYqkDYV1Bk2MgE9VAGW7asimmtDddVBerg5q1eBa3kzhZZfJE19YC3x+i5dof4cEqMsno9o6EFUqn/h4xpzHn6DL8aNfGtG5CxVofhb8tGXGiVCRZUSomrQnQjcxGTzxOikTdc2mT4xhG8NIVJ3i7Qni1OidqpjBlxh0B/ePfjBk7RxVZmvCR7QXF1mTUk1Q6hH6BTkbrA87RpWuyMWZVRxmN5MksQFxjMn8jIIOm41GldvwXooKg5zeiL3cbY7Deu8W0JpYYghBBOyEt+AsvJ+4NHfziaLmp7zv5BMIYijJljPHcoWYazlnpVswaubo0J39xtSIydkGtFZ+U4vVY4oJE9YXSLGf0zIh9H8dkOY2rlmJTkZOHlgm6sh02ItkB8Vp2Lu86BoUS8Vt8dzGmpdY0XDrlMrtNcEX1fGhWks1p0xFqLH4m08TK41tjTyZLGb+0XbbVkDz3bY9vQLxHSgfNZd8z6vzqNgVLERbYOVF28HBUeKhZ5/XvrWSjxIdYFUeRmrwDqdpifo7J15bH1PSepORV6o8TDUjtdnmBVnUsbI9Ja1z9Qds/B8/y/Ty8gl+2/lFwL14p5Cm/ie/Tj8XSMetSTvT3HAlMUbpZwEHB/rPIU4BUee4JPVdhy9ajs3ZL2FHKp6bmnY9pcngZ+b8WMOz7PTI96d6HK/nohcmipT9xwKMDlL+cY0NvxB5stsVcxEI/Z2jzVsPUhjJJ4juEZDqe0KRaxjbA8lF48XtDbwfG/1uY0zD4epINMbbSo0BoavZliJqIJg3xvzeAKux2RX42Xdw+kQbRLf6jJRLx9dKxfrmf2p83D0yHZaK/zN/T1Hwv75Y+h/n5H0re9Dz94mNvjPBMJL4RJkf6Gf0U8X7b5PIGCfV+36kWXwQCf6LExthMwV5lm+iRwe3UpM/ZvVQHdWgC4EcAAMy4F9FRFOGFGNDFBpHqDiB/FkGYEQlbkbGrAtGlVtnQKPBBg9GbHI1zEFHRHgMLCDAtFQKBmwDrClywJiDiFwKInQMnnCCIJ5BINPjIMNBFBNCoMaHXw+gwMIIdCEMZDGDYIYM4J3BXFIINBsALAEKQPNCEJYL5joP8GtSrCYJwITloPoKZEbE9CvgULgOUMQPjDUKaBYMMIIPtBZFiH0LwLoPVEi1kOzHemZS9y+XIz92RypwYD8CBjIDSnGGQRQyPE6AOkYDCNz1/kOip24HQmlSYDPDBE6D211xSOtGRgyLoHfzVWiMMhJgyPKTkHLSPHEwwnPAyNvHsSSNZ1gQEiAgyIsQmUpyPDtE1jdnaOyLBnAjQmLXSPigGKJRCCtHiAmHaOQU6PBUmI0UwmUjiKuVkDtCSMmPGEhntnKMqNkiNjyTyNGOriKIWKOLSNWMyN4A0HOO2OIlCJqlAjAU2PdTlFjXiPT0iIBUmLkG5ikg4jQlDW83p1yMuMBKKNUB+IMlKLiMKEAjCGkwF20iImMjhIMnGPpxRL/FXEBK+ONmhLBORkBNfgiPOKJKYAmTQhSJSMp1+IzXckBIqIOKGLARskZIxjOMOKSD4kpIhiyNuO5I4iCUpLRUhKJW6KUyUz5ipIpjlK6PUEizdEEFlJpMFXp2CNYNlOBNUFBNhMBIKWyNBNSOJM5OBONOOMYEBI6M9mSP1O0IViSF101KBhJM6IAnALACgJUHMPzH4KsLNAlHVUvBCWwHiNgTj0YOcKEODOfhJjDMVm5gsk8N5H4F9PIMsKLGQItCGPylDPDIkg3V0OjKaFzPynjPiIVSTJkBTKRDTNPjh29xXACK5XXzJhpkEGdRPBczRU0VFmdVgWTyYRUkYC3UizX0kO0iCiBjHP4AnLRTsX71HPVRdTkhmkbyAl1WMlDWn3GkQgP2XNNSUwgjkkCiL0PPTSCSx30jPPHwvLbTbyoH3Kr11RHTr30nXM711VFTL2T0XPcl1W3Xz3XynPwgvKPXnICxUhJkAvHLb17LrH7PVSAp7OLg7PAtDWQyvz7LglnMgtvMFWXMPTgswwJgGUoiIrBBIoLwVQotgrnKf3/PPG/MMl/PX0/Kb1fKCXfMkIItXFfL/Ebyv2fK7jwrUUDgOmRjEpYnVlAtlAvNXL33oh9i7L2z0nVkCHwn4vVWUkMkAjNk0BDwmF1UrV5gMs32MvVSnXHzNk0vagwtkGNlss1hHMAqeGAtkrijAvoonP8HyW/3AuouFkr1EuQvcpc0njH0IsAswqcoRgoF5hgqspY3VPirCLL3vNuCfz4ovPrRE2CoPJMrdDMoRn8qkl1V5SHk8unIvMqv6g0pcuQlyuKuvI0opnspMrnPyvVkMvqkyvBk9O9IkHTL4IQKzJsMfAMg0SalVB0uQWLJQNZ3wSU1mtNXmvhDkJoHrL9F4KUP9PGolB/E1l0gwlWqopCAWuoKWsChWokGQvAlrJ9wEh8M+TZQoyoy5XTCU3PPDwkgYqoi+p03j0mKCWlS2i+sDQHxBtDU/nTDdA3LDy2MMjvHTAeKXOMlKX+pRtXlBjdgxr+qj0Ci2q0sRtjG8iJr4iMtJpSLUuxrMnuFFgxtBvKiJrSMZr0ySEvyJrRvcgxsi3Bjpvhs73Dxhv7zpo4gPJFuQW/3FqBpX2fjryJu+rvPD1kGfnVKVshsPx5TAWQ0FsFib0H1BthsEX2l5o5qxrkDBFxrnwtsJqwToTRKNsi1hqwWYiwmbwmUcvvCtrZrglVuIhst9oZv9rExPF1Ktspr6qlokjCBRodpJpFr2zFqtsi3qjn0mP5q/G5rNvPD5ulWzvCgNqAj5omUonFq1tJsfBEyVrloxoLoylrp+pBv5vBoHUrqZphoIiJqFsNqRvJtNuQzzq2M5uztGDTp9nxtHoBoTvsvxuRsjvdsP2htpuDu/xLpbrBuCjXsZsmIbpQkXqpoxurtkkjsduBqJD/Gk1TpttJqzteSEEgOgJGr2rGsEMMHTGwjDP8CJkusaHn2pDxF/o2q8JgP1AsP2vfs/upHD2AacKME/vkCAbIEepzB4MUIoJUOsOuAAeYGQb/o/toxgZ8xQZAZbHQYgbftUJwaIfQJIYIegbobMlIczC4KepfsqAIExEBHftkHfDwY7kbDJE+AOGQXAgtVYc2q1xYAgL7AWGjLAc91eoRxviR1bPyhATUtHOO3LKHg0aCX4p0YiNtMKD0q1nB0SA7PBVMfrSkuO0CGAv0dDwsbJgghQ0KHVoXgsZDIp2sfpr0s3OO2NkoiJWWBHTdgsdeH70gnohq3Bm0bg2ibvFiY4nDuMqCfWPzlidjoyu8efl8eyaPXthcZcTW1ibMbsffnz3KdsaYAsfuCscKZdpnKMa0uSe0N4Gzwsd0eQl3Bqf+u0cNWyI5n6fMd2R6aSJsYGcIVcackGufoob9KoewbiA0cZFVFc1SEPAjGwJjJ9FoOqz2zVueFQa2pfswYDOLB8HKfjOqy2aUwIZuY2ddAaIwlOeeobNIz8KeverUf+SMIEi1iUzGCzycvoN7TAuBbxlKwBYGe5hDTab/DvThczvarmiRbtSBcnw3JRqX0wixitJ5SivJrFNoljWBeNkSpRohgVTvIpdBZ9v+mOgBL0wZepYC3iYpfSuUnZdlCvspKJaL3ZYhfkuBYZkb2FYwkhdRa0t3FhaBakEpd/PleJOjSMrlcirhbT0koBqX0BeJO1cJrFNgQyo0TQi8tPohmfC7mBawmgvZdEmIib2BdUHVYxf1cpKvFvBZr1bhcNWJfZanSXNeHNenMDfQmDYQkhhTp/psmJPIkkFuPoL5YopDeQgP2FblB9jTYDfoNeC3qtP9aFfoLPC0bTZCoahLe5kLefRxZVcpKjaHvZcxYNYRd7irdxK0kQv0pLb4ntjNaciCnmZ9MWYzMgeoaMBmmttqmYDNaSEvAkkeZxpnewGBbsmD3ee2tgKWcoIneufhI4njLneQRcXoEeYPZXbXetA3bIbrJevh38MR05X+QEm0Ohmce9VKbX2fmrgRrTS/d30CF/DLykqGIA5ksnhA7qc/dqf3B/caq+0OPA4fHg+gr5n/dqZQ7Sig8ouQ7oBqi0vQ+9SCWaaw6BMSsoqyL1uaForvLrTJhspo90jo5zW3Ljvw/I9ye9VkAFo47RdjTTUqPLo47lBNmg9o10oONQ5UiI4k6U1lDg7WKCnE5ASxuaGUq46WzU9uHfAP03O440DFuaBnIM5cTPBQ8EXXpM9dECjUR0/49k6l35Ys845WLTWaRKvs/TqSsmOwXhns8I+XL3uNiSR0+7eKbA/Ahc5M8mLw504tcQiC9U+/fiiMpi8VI6h0+9ZeSS8iN0jg4gUC6Q8w4BnUA7Og9i9g9K4rf08q+08NT09w5K+tDGHfe0vaFpLYpa4Q8c8LPfJa+y5VCwxOo0GHeGtHZYE4e4asHfuaGQTOr4hJGEejB90IskdAa3dhy+bepbJfe0kRj/aA40Fps6XNkKqO89i6ySC6aA7JjU9cz8DE9HNu+vbbx5XGHEWe47ku701jp/1fZbx3M4zGHBmcaA/uACZk16NlBgqA/YRKtc2h8S/bQV1482dB/4tlHHTSfUz++Mqx+Ng+8syTM+5R6k2Aoe6B7qax7u4nNo2u4E5p9e94kzrM9Epp+MJc0zqdc4oJ6JiwsmoVXO/8Fp7bxBvk+R5e/+pckmJkS++Lnu9l8x7RVF5Z905f2e7RUJ7Yv24jLCHx6DzCJ4vF6AJR7PB57G8Ud2ouYOpQMq+OdVCx8W/EKaH26Cm2cd7RWd/W9TPOczNm/27M5mokCJhMwIdO/d9uoEnEk3fvabN9yff9z3FidL0zTNZsmlQIhT7nNFnT6MnaakRIhJjNfUi/BSeKldMVd8jL46bFXPDz6IgL8MlAKtKkClckqb6VJtavH1X0tiZcS6U7bBFkFE4L4H7pYgVPaonKa74mBDbdBaIahqZb7Tfcp5eyfnXr5+FgVooL7LshZ+Gr+n6VCaiapDdL+P+GOHxrdgV9Sz78ozWwjTfHIJLAjSluHspDazZkRtXf/bSH4v4ApCgEkFmDW2OjloPGO/Qimaz4hBITGJ2KtCqS0jFVjIAKQRLID6ol8j+4KK5DFGL5V8M0mGUCKUlAFYDCBOAkgfG3kix4KBNNAKqvyVJJFbE/+Gtgvy8oUCFaprciOhEkCW8/e47FZtcyoDQUpIq7U1HAMealhOgqgWgmaxQGx8Jur9XdoIMaCho9U6beQCGyJiQxJBNAaQcVlXYrIwiNZW9k9U25KMH2PzXbgHgB4YRCyq4ZUObEPDiU/Kt4TvI4IVTODMMQHbmF4LiIgR2ILg3Tn4I8GBDMMP7bQchD5h7YnB37eEmESiFxFx6YQsjr4K1ihCvBZHN0J0WiHj0/AwFH9kVgyqODAW1HH9rBDvKODwgjpTLthxqFJD1ASmGWhxyKErFHBmsUCCxEKGaxs8jg58MJx/ZpD8i2/YxmR0iFfY+hJrBTs0FaFlEAhmQuboBBGT+DYhu+eLpDE+4xDPBKXY8C8UEAZCdhSifXg0NgFdcrkjIGHg0LnLAlLoOnQSMsMcG3BhmBXZhhsWiHzDv2owYOLhhWHbC7O2/aanUQgRygUOhqD2o4PQjTVQR74eiAS0cF+BSmjMFrtkN6Fgj8mASZET0I+IrJwgjHFruajhEO0ch0IoYekTyFOk9ILXWBICIaF/CuhT8bmHHlpEpDSu4w3IcPwpHQj7hxWEoXOTKFu0IiZIwmDUOhG1Icu7QzCP8MJj5NQiIw/Ki1zZENDMI6I6EXYKZGODuYGxQ6FSIOgfolRTwIePiLijpC0RnnQ1LCN2JyipO5ELEeyI6H3A+BigqbpUB4Z7shCOnbSBWSJZLcowb0Nbk2DYY+hzBjZb5s2UT7I4fwfbL8oCjy56ITckRUKr2Si6nciIs+Zcr2RK77c/wT3MCBmMV7hhSegKGBN+EWK0l/uMYldLuUWKdCP2XvUVPpVO5TDkeLuDzteV17GMkqVAHjmL3fA1jtKoQS9LqVO5NDjhROTrjy1O5ugNeY4opnol+IvFQObETMZMVTFdMXceHSMQmMsp8BZxqEKMZxRdxUdX+rkLUURyXH3dSwW45cueInI44KRzFF3NkSM4/gI2BLInE+PM6dR0RnYmpI+WH7nkicQnJEuNAEiFUWx4THZJeLAle9eU68caLRBY5opYxckWllxyTFOwCCiIkznmNvEb5v8llHCW3ifAdj0xGXZKDJ1ImxjHRO1DBv7zdGu89MnTU6ndS94XUXe1WP1B7xYnvQFBNEyhsoMDIoFGJDvO6nwFoDh9XMnEqPoePEmmCgxcfUMQn1UbPsbBkWd6CESuLpVIi4KYbLEQyIyJEiOksyOLnyKWcbiXqFZCZJOJo5zSYEXSWUSwTWhKiRkg8FWSBGExGiRk0CHFDghVCZE8xMCEUl6LsjrQGgQYgOmkRCjQp+TWgeuS7h+TSSHA/JG0JxGeTApipHYrKOrgVEKBJ7S4hkRsmfjiBeU0yb+AphGl0pz8TKZpLigvEOB5iD4uFCqiv9ipVkq4reD/xept4bU+IgZLqnpSNE7JOoqvGMiOkKBg0ymuiXaqlNxpkU9EqJxBLpTlQFMCTL1M4ipViBcgYKeiT6kTi1JdoImNhF6m1S9pp6DSWtPlJGSFYek7DmeCHFqSSp6RAjgiRtSWTLS5RWUBsSungQyiVyQCDFLsnqTWC9RMIk6TQHvg5p8RMfFkXGmGV3I8RImIlPSkbR/i+wjxv9PCl5Jpi6JDqU6VoFkwJaOM0GQ2OIGaB3i0Q9GWFKJS4DqpCM/ybaW6nvT9mhpXKW1IhLdQipNMh4laUnjlTBSpMhqTKUg53TqZMJDCNAKVDrTKc8UOKXP0lmXTkZ+5AEsLMWnECJpHJMqeZNmm8keZtsLkmrMhnMyYZS0zSqtPiFIziBFAMIvJXiLRTMZYCcIE1VtnEyLJRIQ6WjLK6dSXJKCR4uoAxlEp7J6JRGQFIek9SjZ15UOZaXZn6zA5eJPma7O0gaS8SGke6ePVlxP95ZtJCgQ7LnLF9M5G0sDNbNdIqz7pbSFaXyU1kVSDZOs6OcCWonbsx2yzQSTmR+DrNV2VAbYAqmTLsS1JtU2dir1BYmFiCZg/gU3KuYxlV4Bgj8Lni7kmD4GOZSebIIHntQh5gYs5p818I7dwx6jNvn2MYCxMs8IIrcsMyAgHy+W2KEyguOg7wlz5T6DaE9zPn/hJUCsCiW/w8lHzvUL8xIY/I/l6Yr5+8n+rfKwyVFY0B83ShJGDR7YKO/fN8uWldCZNVw5TKdIeEgUIKAFrXYtIWitDQKuYlaA8MGgmRpjYmYRX1MGnvlaxiFeVFiJ/NPHoKf+TQ6EhQhy4/yJi2CjKiwvOLBEfhKTFdEkDuITAeFoaPhYcQ0QQQgYKTPBWqkWIgK+YxC7dF6ll7fj0FTIccuWkUUUc35tFDCAoohlpi35kgSUecVEVvi1mdqaVPwuXI3z/w5xZBKbw0aHzWFKJZYforMVSKaA3mIbms17SgRjc74LCegocVYlCyxWDhciQ8VMA5FpC5EsEvEW4KM0xRYyUAUEX5DjSWMc8MkuEVU5yFyMCRfEqVz+LIlCqJXDIuUUQUqiuitcYrCai65jFEXH0N4oSXZLr5tYWyAkpSJpLLF78iUoksuFvzAl0S+qCZ32atKsS4SzpQYtAj1zwG1gZ0a6JUGlley1Icpiw0jDkg/R18Uwnew3nKNH2ykpPg/EBSYU6O8XErsSg0z9kTl0vMCD/WmoSZSusCNTsSjnLMc6mlyy/Ncpqx6KdRjyu/F8oSAPKJyB7F5aOTeVt5IB6dEFQOl3GuSrM0FSFRvm9rfgbGJNGYQx1SpgQTMKKsLmxwkSmMtRMFezrZ14jgqVKLXSLM5xhXPK6KZKyTuWl+VdMaVEvFyFcmCXodQVxKz5Qyv+WZj3+YikFePT5bAS0oJS9TkSqRUnYAJ9nQzp+MkS+YpKUqtnl4g8UzlCVaPFlRCtK7krhOkiIJHCtK4CQryOyWxHqoG6wSJE6q0lV8JC4lIsq3lKkcmNlV+D7lPKiVccu373dhVXyw/k7F5Vvjuu1qqZXmHRCzKZu9EwJNSA46HgfRayg4P6M2UjztllgsMXssCKlg+2Kq7+LPnBSlhq2pXEjmxRdzSppmVI4utmvprFrDUudMtfvn5U1J8qLuO0ED1rUvE9GBBBfrhRa7NJe4AuWQIatrXAlrYMuONq8ogRL1QS1rYyp2vPoakTWbnFri2v6hU45yzTWtTx3rWs4PWta6akZyXWbr7lpagXMur9VfDbcTRRUt7VrWlMBeQRMlmysoRGV6cR64pvZ2nWHq91YXG2o+vfX/KLkNqVnPi2fUyyM2AuBWlyphJCsBcQSdWvxR075q9p0RIiF+Vg2nqlcw6+FZ0Ag2Fr3149EOpbnLXmNkNiVXxUWoI2mMtaX64tTVDHUy4YIdynTp0JPJDr4mfHajVkojYAVyhfGM9SAKXIcdt1RUo8MHnlXACD1VOMutSrI3Aaqcva0laYyBplq88maDjhhsY4u5WIz6yTe+TU25qf2BiCVkThI3Ca/FTbAze+rShcbq1OmqjQ+qJzqaVVq8XDYGut50T5l3JVUD+wBjbNw+QxcsD+00DHNeJDc0agJPHmllfOBzDzXkQeY9zwt7mjxkxJOZyT157ybbio0ox/MA8oIWqCHkx6FBxsUeKdjpC/Lqx8tpWKduZBzG4FSt0/KHJVry3T0+mj2V+VVunrJMmtiQveNVuSYrIcOnW1rUkEQx6L1YxVapk/G87PcnkutJygNqQx0d1YglGyjNpeWY8caf3breoHG0CQ7gBdafk/CK64ENs5dAbRVvMa4FfMImKdohGa3bxtmCndCDoj5Vbbraa2+7V2jfEtbpe92sRD8M63I0BtHqZxbgVPa9x7ts26KkDr+qoCKYAWOrTCKxrQ7vtZMCbXDoK0Xo2uyOkbZ/Hu3k5elw2qbfeHu0A7ise8FjHXnu2fgcuT2rbWX1NTldnu/y1usFEJ1pd6dpSWmoTrQ6s7jyyTNHTlq539aRUYi5ih9oK0+ZetVWv7T5is6s6JI7OhzPtoZ1b1km8uobdvCUxmVodb24pgdrLrSZNd4u7bQLWh1tQ9RT27smLWx3o6zdydczhzuu1bUjdaeFnVTt13T9adynVnV1V5hObFCIa23j4HoJI6Q+dwWSe8BjWwg41w8+SYmvj7spt5/yKdv5rT5B5uyWfbePRFz5B5ByU7T0SOSpLWyCtq8FTKK1xTUUstjIYNlnu8igg5ACNKkhGRNjJMAcB5Kkr0RPKghlQ55KkodI11PJPp0Ar3llWn7N6q808laWTupR16nyrFdfjPCHpWkux4VNPUSBqrTyC9ZfO4AdDz1diy96e9egvukBL62tiGdCmvtirORjtVUNElSSF4y1L9JNfPSRUa2twgWwg7PW0i729lxsc0AbUnqf5f6GefTRxA/p33w7SEXe0AwVsNRMhTWXvEfnrvAN0tB9RuvLHXoXLEQLdIEYva6XQOKr7tues/sgZp15QH9cB5zq9pswe1u9LVAnVeEoNz8teW2raK9qv24kU97OrSFvsIO6dq9WB1faXrANS40D0gMvYgYH08H1tEyCjlSWWK6Qfd/ErBs3NUGCINhU86RWxPnmqCn4H/UQfC06KBbpljckLdmWUO/hVDsg0sLAkebaHQJmgywxoYDFSNgxqW3ZelpUl7h2K2kCinw2Oj5VJCicbw2KRcTvLJCG0E7XEQ7nBH4KauQIyZjRb14UimaCgNlh1aZxf0rwNEnwwja+U2YFkD4kEdSPCxrp8MgozkbYRLlkj2Rp/MqCK1xEFyvaicc7CqmEU+GfbHitoTJn5HCYibeQzu0UOhbWiW1A6B9GSMAR7g4fcIESFcZ4M+AaRAw0GuC39GTDthNOdMe/rMNSIExrSHMRGM/0TY8xkMVvJTWfUQa7tTHiKj+LZ1uixdZ7hcel4Y05sp28LZbSV6Va7jXNaonxnQ7IJawltT481veNXHD9bx344TWghJxvjPmZ+PnlEKnrbjzDRFaITloGqyu0GlGgQWRPmQQea22ExoqxOkQBaGBUaTd3e7OcMCjxqSliYSE11/jHWqkz0QU5gIzDj2rE3FBxNPkdcM5H4xcK5qhBGUm5LE3QHJpsRcaXJohgzxRodzMT4p9qHKyQkpp4TPJ7OqSzxOAndWGJPnaBNBMOjH6XpBZnxJmVcMXRoa+ZUyfPAh9oD0akRhHo2VR7ktJGTeWlo+r/M08LMZxhhGGJJ5w8UGpDQQSYQwsRUfKV5R3P9MA1AzOYj080i5ovNX5t4T04TRjMdbIzoZlGr5yDMgq/TXpvev/zZVtrAYqZsyD3gJU0RTcYLWLpkmipxnOkQdcs5KvVAoI469dIsyCqXEswCzRahlTuIrMFmp88qvgOYlPqJnEOcZjDfhDlb/qNFcZqM9nWkWDKWz8ZmFiuOJidkpzKZjGqXlJ7JmszXCfCfObtAf4HjsEZHlWdlwR1ZzziuM9KlAJys01EZzM2CeGI0xNyW5h863iZF0A8zMJnHEeeLNIpJIPtQTSTmJ0nn/86JjfB7roCtmgTweSnXGb2yICwLX+C80+UCCw0ccRfNlU+QoBgW3z7pkM16ZoiAxmKq5gi+4ojNYWfaOax7XGaESw11QOZ+c/BZZr0WvlfAfJFjjNPD4VVXZ8umafTOQWQEbZpk3nlN1xmYEKdaCG6Zg1sQX45nckxhfnMnIAagFucwJZI68XBNiA4M3kh7y9Hg1RpuZUoY/pbFNChRdxVaZW41RbTa8j5ilsdOuHnTAeK2oKk1M2QW8XpxVv9M4puWNQXNL1jmIAjuXCa/l8xj5YNhytDWHWwK75ezqRXEOYVr01CYCvbwDYKNBzE5IE5uW/UMJhzDAbc5ZWQiYLDrv3v4puWKcQdYqwBLcukQw029XKxorcsMxs66VvRY1cwi8WkroVlQ0eZRpxX0OblpkEeblaxc8rMFaK6lfnyiRnF417OMNYRak8ZrhNGVgtZSuJWgSu511gZEOk8sRaV+sa/8qbgR1aMU14nW5cpZCUMCK84pglaWtmHVLN1mc9IGL11M2r3ZjGpRGmvhR4gANFcXtdHLVX/iclk3NlA8ybX02ElsyLeC6u1sgTV1mcq9Y0vqAMr/VwRCPAAtI3Wr49HnNvVZyjTrrWCO2N3VZxQ2pK0V28GBaCim7Frj1+qL0ups/W7r01lZOTYePPX/rBN79Hpcm4GWTTRlwfOWDJgYkLL6ypLbZYdM7KrB8ezLRAhmhzbPjdoMvjLeuWY9SwTIcqF9t0gvlQ+iMrHSBEQjFaRTMTLtonOF1sQEhxB28ArAiah8OpqOqap3pVt+yjbIPFIh7Wj7MNLwWfRVlE1wqh8x86t728gl9vy3L80Oryn1UBaezRd5sMBOzxDvEH6Iyt57tBB6F67D0mtuO9IETvT8RUGgAKpHYMkW6HMyoFSnOUP0m3ld9tjqmXb8AzQc7LtiO2XahhHa9MPtgUxiatsE7W7QdgU6rdAjMG9MqgRu+qBkRY6OuH4au4bcruW3S7ZthW/XckD52bb5t+u7RS1tT3sdst8HSPc9tc2lBSxmwuTsvCO8ux3czQ4YCnaeoT7HQOeY4Y26jzjDh901MfZD6n3b7uzC+79yAiv2b78x5zQIKMtH3v7InCZNYfNbAPyhoD0W+YP/tjzljQDuLQrnft6FVBX9xB4hFvvxro9dliW8mrcP7KA4wgxlK/ncQndQ+0MRmpwY6ih8y8I5BPArDU423649+RxIw/VC50c82kah1IIRoJ5xGje92+PirzOXjyDY0PiMhVroJDVasGiHXUrW8dxHHdL4dxSHF+2bjVtTQETxkeQ359vtI/e7Y/RgVfaQVGh1xrDzDY2H74XDeY+Mmkd3bUQzNL7XP0BwteS9Gxww7XxY8hHA+Cx544XJyPx0FKrx0o78UKOvev6mxxtEVVk9b6VtKJ0Zz56J15H4lVx0fSGZBOg81jq2hQGkco8KH/tECEwYbgE83HCeFHEkkSdz0qHasAeRCvocmPwn4+Eh3lEYcLkO61TlHhI8IplPU9AcbQqU9YeeOaWFHep1cqA4w9kYozoZy3i1jGPGH/0CJxo5n2HQ4eITzoDjwB55kMqVtCyBb11NDUretEgBwMY9Gyg3Qhhceg9XYk6dfBQd9Apc4cNYP7ThhxY5c2WOSgznBghPBTnD43OfJog75zIgOMuHJbxxvbqfb53GwaAyoSCrcARpQu+IVyyQowJDhwH7uC5ImFHFLAwvd8khKUokI2jQv0XG+CiQi5xdVwUXDEbF/d3+gMsLw6oBhxFWhcUcoXc5RFY3GJb0vGhaJjl+eShdPA1tCMPiCy+EGgQn8tkbPFC++raqIYmLkOMINqh+GY8pLhV0yqZgadsY6oD8NR2diNU/4DLuxwTEIGh4yXNLvAqa88fLAf+tcA1x5SDFpjWX2ruKrJW5a8I2IGiRji65FcmYeeZsCV7Gildiuq4i/NjGi8tfMuMqhLxF+8vVh39Xw1Lzx9todcJvxKk23c/y4Xafj1YqRPURm+ie4FKXXLyUeJVXjWvNXG+IJ0m8len3cnB2ul1C9THwwC3Zbi8PUbIc40nuUb5BGbBzceYo35Ls2Pi6+z9vGHwAi1gxC97du94cb1t8PzUp72/ds3SY9SMeChBZQwt2NdZacMKSjj+DwItyoAk22gqxA2BIe7rFK6BpiOzXnlBO5qyitAppCYOSWl5GAKWPaE2vmIHoQNVb7498kJRVY8osXkonde4Vi3uHa++lHo/HhhqTX2/ZI91cuQqaBJ7ipR5QhDB3PcZLqHm+7xptv6O1JYRJpxh423su1JmEc7qEBUcByxgG0ObV2KH1GTT3c2899B7BHnckJqeoydzEO6PvKcNo+fSj3fdqI1JX70u0mMeUBD/3PHp9JDCpoo9QPSSKylruvdQf14iniD6HzZIlVkKwH92xQApWIf/3dH3jsJ/OjW3hBGBoqXx5w/mfonpH+90R72zGfWP693CPp+36HusLhqvezb1m5qShIIfIPMg5LJvzRBeTzB3abFsvP97bzian59aBY8oH5978vF8C9/2jncD2L0/FaBhdvNB19zYIjS8KGYvQZLL/l9/DebtjZX8LzZecP2XQXe79Rr6213F3GqqKBXPCYAigs2vl6U7a3YtbdeTwvXvVLv1zHteUTTIUKShlxTSkZY43oiL41G9fo4PzGDofnFG+8Bv3zGYROHCLG1FqeW371l6i96GQtbK3zCGt8BTbpcmWJusKJ0pwdyHlzXsw5N7LU9fKTPKZUeWg7mDf3vrXfr0ThdTvbirXX0b0ehJNldGqFKEdEvcVa1ISZpLSrbD+tcAonysPZ+5JXLSuP/3JeQ7218rTV22+2Q5CN55c1GXRv7xR3iskCnRakvgKCnxaa2tRPEtPvLZQaaMMH2gyk7j6LZHpqgQaf4AFBwsqGOU/GfTUYF3V7weOW9wfDWCARoIKg8GoeIBtEpsjMK+7weIU8M+uggS9vIGvys9BEPAZQ8Qsv+VTji3oERjf3eU32zCafq/JZMG6Imz0V9KgbiKq6ovy11+4KC2H5xDFSxl9W/Xl1RQ1c8F3D+/i1K4v7pBDD8Ea96DPe8Jb/D8BBpyJP458sbKcRadaDDLtu5vM/vMQgD9jnwg32bubM/LvdPyX4hl5+C/xXhBtn4kBxnEvAvksumDbkCXG/Tz7SNX/93/1i/9f3P2X9790BS/LPn5hwx5vd+P6WB9zcgPicbukQUsatiP6DFCBZGcweRvqfFtJqlJDXhPVrzSadlgyHHoiHEaQqKts9vZQ301Qqpl6kJ5v2qjf//G8bgy2ejuTz3050xZd/WNQextCpt9RHMTJ8g98LyWAQ11AAgCUQ8jdSIzAk0PHHm/83/ZchtEtHY/1vUHxBrlI5j/cIBqpAZfFgK0L/PVVI8H/Zllwo7PdAL390KbAOccamCD1QwH/WjWioaAz7X+g1KO5QYCCtJgOBVsAsvQhhvaVAI6AkAsUngDAZb/l1Jj/OgO0oEIQSg0A+mSDg0VSPc/QL4xAhAN050AvykECCAx5RvksA9QI/cPGS/ySo0Axxg8YdfJQI4gSPUxgV8lAhEVU1zA2TzUkYIfTQ0YpWDqggCa+LOz0VWAoTxsCI7DwIfoegPUxHY2fV5wn8Z+ESSwxHmBZ3O1ZqHlEK8+jGv2uYReWiGYktyIL0nYIgriWSDxfXB238pfB+Cd4KdV/FXgOPSDyU8iaF+G0ciIOFQpoTHJ8hx178O4GqDsPXmkIxuHXTl4crLIHm0cyPYR16hIed20Y9unPLRoNtHfoPjxgBej3scr3dME0ANnch3s90wcyC0ddPF9zzoVwOxw09agsPB9AGgioLoctg1py2p99Fv30c8g9Chb9nHTZ2A8W/Bp17FJaPYL8dqPH6mAF4DGShT1bgtmDCcRDQj0/oLPAhCx4RPPGlMYfgtWAhgkPJ2jGCFHFOCPongoJ1pdDgwYNrdYQxmhngL3OHkuDCgshxBDE6ZoJqdssOp3qD9ggjwCoqg/YK6CB8bEJR4RgsPHRD8uAHjigRnH0HkDaQmjwGD3oNYNwU2g39HmcypGqiuCuQnYKaojguxx/Yu5OegZD2XYUMuD4SFKlqFEYKEMFxfXDjhFCwQ94KCFNYNMWJC4hWUOjp8Q6GBT8MvCUA9FKqGBgZDfnNYhEkzgmIPZ84g90TuAjQ9AhnhTQsrnNCHQ6Bx3cnTDLQ8MCedCGjFQUfYLnJlyQRFu1CcLxzSIP2X0PuD+ad82KlWtMnnJUBOaMP2CUicAKuRjadSi14TvUKiuR8dHEJAFoxeKEDpUqL0L/Y1ZaWnY4CeDMMso2kD4KTCWOcKFd0cQ0GjXFAwiXhxDIwj9mbCxzWkIrClAhxnuDS8XpQekGtAHn9DAZXsKCERwhMOmdtmQsTOhFguHglpyxf5QVpVHMUmVJmxf5TVpRufZw38ovHzzDUy7ZSmDxZqZIRSCcCQC0M5ywfaV0hLQoIKXcCCbYCPC7qbeFkAJjc8NPZZqZ8Oq9t3GPUUk49MFycsn4AHUMZuiD1njpwHL8h/BQIe40NQkIOxhLNLaGCJzFIIj1gisZnDrXglQI+hyu1EOZCMtpFUWCLqZcI4Kyes9FSCIA1u6J3Q0VIxW9V6sI8ACR/AFYNEwfxmQ4CMQwcTSiNyYjqYdVojxELpiOo6A2iKiExmJ8CcCKItCJwiRIplVVoTdFpiD8cTSfEe0MI+4w64KdQJhXFuYNK0htVLH8A/AJTbfHojBNfIVQFj6JDGYoiIx614iBOcyIZsXkUcR/AGARVXxplQU3Xsif/AsyEi7GEokJNZeGSO0ZoiASNZtSIp8CzYOLWXgyMrI6CEwDwaHyMUj5fVekWICIvyNbhyaEyw6VOoTCL3psI9DiUjbrY1Ep0XxDSJMiXIuKLkNtwgIKC0QARd3okzTDZmiIOCR+l9FN3V0J/Dd3HIIDhZeCb1CJ3fF9zVhfiG2Ud8TtXqK4QdWOIifBR7QUh+MwEEaOUhseBJz6iuou9FBChovbDldRo3PGwihojRGtc1owVHCihorIh9hkjfKFM8ho/JnyIaIBVEHVuTSC3ikCCA6G7UfjZ4mKECCSGCqpmMOyF2IDfJaPG9/JfIkMjvtNWAk5posaKK1AY4YlCkFou7jYosTUNGjZohbqIF4bvX6PSJuiNkzEcgY9IRBprQaGOC4QqOIjCjmQoaJ2N4ZRYnCBmhH4zOj0iLYiJh3yCmNqlVpEGhUVCwkGl4BDorGMGitTToiSN2YnGKkRaKfGNugRsah3miBYsIAp0hoqaMxipUN7QljkYgWO2ANorU0qI1o46KuiOo/mJmjwIE3QDgMY/Ilowh/A4iRjpoyfA9QwYp0jhEi0GWJRNYY3oT0xxoxmEejkISoVZZxYrU2Ji6iDriZjhYvJEao4iT2KFjNo4yCSMXY2mPVjdiO2NBilYm2UtjyY+kmNjn0U2KVi5Yt0EWjuqEWJTiFYqqjDjQiZjHujPYH4y5ijpTOkuiwYH4xpIRyGRB9QTdImOGMSYquMY1HY87wcFi4k6OtjjBD4lzi9o62I+ic49aLejho9IX1jQQvUMfsJQQCAhlv7GaMYixfdiXHiJkSeJXE/wLzWajAg6Lwn8UTKDTwZWcLRWZ8m/Zgg65ScMMkXibqCMA79avLIL/Cd/GwQJg8yO8hT56xEfARUq8e+N6CjXQCD6pYmF4j8MlQV4GUURuR+JUU74n+IvcCYQBMIpklXcmAT0FHSGfElQd+I9pymQVB14uYXgGfiRea1QLg8ycBPQS1KK/EG97KWJm8x9eAuA/QIlbgJbCI4LBMQVhnCnmGc74pfErEJEEEI9R95XFGlVGkchIISg8JBMaN/ofXhWJj/SvA/R68GHiapBE61Q4TBtAKkESeE8vDMMhY9BTagyjKhNYTdONSmoAR4wv2oIeUfZC2BQgbSAkk0XZgDUE2TTdjIAu/APiMSnwpFAcMP7ECl0STEgxOgdzExQT3DXNVzAnsPwmxIkkdE+QEcTHnCLyJgLEsNQ8TdE9KW8lDEoly8SIk5xLH9pudeP25PErYGCi5/J6iS1z4rf0vi2owVG1NKSGiBkVK7ak1FZ+IUO2eNX9dXhB01TA/STJKk3JIP0iYHFk11oTftmxchWTXT09yWUsG/Fp7KBWgF8krNTDsUSAEn6S9aaHQJNiSLpKpYxkjaFTZWkxbVdAGTV0hHtGkhZIl5qk4xhCA+mMpOJITcbpJySlTSkhxwaxbFH2TLjQ5Imho7A5KtJoiTIWh1rQInmuSQeMNmh0AINJkeTMIe1heT5451iOT1WY3TOSrSLYmVVK7K5PhYbIaOyWECWeFmtBbfdpIvV4WBpIlY7k3pNxI96LcUrtdRYNl84EFSuzVs89bFLaStvAtgRT0UnJI2F+2PehPlkmXzhcRAUv2VhTtkykhBpbkxlLpS4oZ5JpTUU3sU+TueMtkWINkyu1hE0+WXmOTcUvnzP5ZeMsRiZW7NnjpS3Qdeh6ToNOVNFS4U7PD0MBUppJXU9DfFRBSAU+FnZT8ITROtCL7PekhhZBC9ECBBUM9hd4ckhWGXxV2JK3MhqAG8LXj36F5N2dZ2C1Iz1rU8+3dT7Uq9jwhnUleM39Y9X5ncNfoYOk1N7cTDmyc1Ak3Fg4dnKnmvF3oBCLyQcxaNPuMtIS/zPEU04iMfAOtDNOIiaacxkLTYrTGjXFt40jgTx1dLjiWpETRVCACQNNFXJoG08AP8j2IjfFkDgowk0VY4/ZckE1BVAGjpgk0mXFpVaI/NMQ4xNWlTlZGJR7WSIcVTSPGA50yw2Ujz1H7XtwoucPEbVnFKnA9R22HWjbS70QA3zoILJdU6YyzIkFUsl1XcWPoJeJKnjSXjKzDSjS0myJHTr0qtP7oTFOtL1op6dwKD8mIkej/Ti4X13no507tOasTsU3TU0Y0wDLXEV03ULKjxuVeKqjTTUsFmonwINLD1rTVbi3d77FqPdDw0vpwy4mROQRjCgOMBGGZW+NwJjdtCGaCxZqMoIQkg/BUjKuUIhLnC+wxWGMLYy3hKjPyFNQpjIVYGMroTy0MHcljTxUwrIU0BTWNPGzCWhNhGgEL0AsJlDZAeoRdZSwhuEKEpMlYjXYdtVIVEyZSHzHrCOOATNVY3MChO4zEhYFnYhOwnTngtTWV0C4zbQmUUJYhMxTnA1PuTjO04zEPYV4zHMwS2OE52FxDOFjJSomL507DZ0NDnM21k3DaAF4X3MPMFjM+FFEaTKEzVRcRlDxPMhDL8CDnOJONN14+jU6BZ2Jc1vtluEWyX9nnCwVDTrBDw2JRaoc6VxQBSL1D8pdI0IiQl3SCWCWh6sws3TxYsj5TqzgZLmGeI9pZrPOkQQgpEJxaslrLiIO4ZwXuQMVfrNCIZsofFxUpcHyTaJAFP/Epg+9VEgcFaXV+HxgRMx2TKIxsjDT3tzAFADmB2AKABQAiAC4HOyvgQwHBB8gEkFTBvQIQHOzLs67KIAHswwFLJtCcsi3jhiVQG6BSyQ/nzI/TYHOYBQc48FDJRCMGhByPlJ4FhyIcroAiBN2FfzkZIAAoDdCHLD0N+hNdV4CBZlHAZNNREIA/iBQytQzK1YkUNple1Cc1tn7sQdHvj9Y/FRpLb47Jfth+BltHnU0Y1Ur4W84ecwyCVSQ2ToBJzSkP7jAFCOHnI4hOWfnKmTTUXSFTYuctpNJy1ktNg3JnbWQDVzCnWVgJy4WGWSmSqconJX16oPpiNziSMDDts5yfXIpy3dKzAeTSILhGeSq+N5MdzaoT5MVYLITvBDZ57LCCANCzOFmAEh6JfmZygWIvQfVydRXIkxHc5Wz75FUGaAtyTclaHu0lMWVMwgX9DKBTzXGRkj70m2FPITzKSPLQ1yectSlTYg8jNkJ1pgt2HTzPbeZOH5iUsYMJSaAD8H7Zy8snR8x2UdPI0QVkgPKBZc8ou17ziSJaE+SO83EnDzrYY3RbzXSeoPXojU4IL1sPoK9i6pMMveOuYF8z1OGIF2H1LvtfeVxNJ9QtQnVJQHUyG2XzHmcTMXyLUrfMyDMksNIIdodBfCU1kiDBOh0ZEagOihq9IlnwDiJeHVZYtA7/OjsGiJ/3fzK7WUGLDoiSsVNgmksCWqIH43VMPSDVDXQuNwAxeKN0oTMCVl5BxJfh8w1AxYlkSek/jyGJMIdAN/zvKIYgBUy+T/NcoyCzDhfzI/JLiILqmY63IDCC89Iv0leN/Oo94dcLUPTyCyKByTXfFgP/yy+U4w4DqCrgrK4CC3AqQDMo4sIwLYA7gpY5fif+L6ZBNYwMOJeC5JhNxG0sQoK1gbLtOtpyDLQuQLbYI3VxtZC7LDwMnwO/25J2EzQqsd8AlArL5VClFSpwtVPXRxwLA5Eggk7Cu6W8DqiM1TsLkIFwuiJn8wTT0D+048Gr0rCv/M4LdClvDALYipwtrAeCqLlqg9BfQpO9So7LJ3CFjV1Polj/ViGD5INXQW2BIgu6miIXUtxMAc6xUIMILTw1QW+8yikRS/C8MnBxvzqs/HKStH8+PPh0L0Wjmg4rwIMP9z02F8lQx+tfCOgCUdCgsyJ8A80R/y9BWwJtFiC2sGoDyIbMKaTmCiQLRMNi7oue079C42oDtjVAoWLvArSHrCEdBDgvJztWSBTyK2K4qGLTkw4qmL67abBY4ei0O2Yx+i2qgF1c8UQrmLo7Qayf8EIILPX5sWH0OyxYAwVhY5R1HnhUKZiqgv+LhCiPBLTES6fjCjCPQGUx0s+HyOLC1ixFRyTXi+gMn55C9NFkCjipEqVY3OQ/yV0CSzlxMou6alL1QwJRVD+10S/OzGLxCly1IL3ipIrtYqClkqiK22NEnpL2dYG1sCq+GkrFLTiws2kc0ii6GcCziwwvhKr/RTyN0I/LQJAgbdSArZLyqZCi1LGSkYt/8HdJEsJLtKRUqO0TLMkplLvdRDMOcivYIM9ipWc00BkAIR5hFRlId8LuovhVeW/DV4qooPzHSx8IGld4j+2N0PSiSC8TkIa/KqypbGrIgR/pLk1i47UuKmE9X3WLgmQC1Qp0shqeIFMTZpPRkCeNuUndVHVhdSVPiMhAik2e5fiZTEXU1inXCrKypEH17lO5a2xXEGAQdTUksiSkzbKNOK6Wix2eX4iSBu1GDxUw3OSaJrKkiNORMQGy+VPrUcNbMobKPk4sqRQFyrU3ZSHAqcve10y0TknL3FM2gbKYU69SzKhvDCB3L8y1cphj2yv3MAoCy37yTIhPecqG97y6hSwRRy2HldAaSFkkslGUeEzlBWvQGXyZitLjA04AUR8spNYfPMsBlniU7VNRniJEn2lkId7VNRYYiOSwQzMRnnEz/y0OR/LBjL9w7LlHZiGe5FM61yMlKiJTXHiiIEisBknSbXVSxey6itfc08IcttJjy8CqztuWc8pgqiyyzxOxhdCCo3LwY2iqmpsuUitlByKumEPBVNH4BbLvjCSqbijJGkjopx446i00CKtivXL+ZMbUhoiK7irVQtKnD2QqOKl0o0hqeJiqbL+cnTB0q8KwYmkrbcKyqmjAIOfN88QIUMh58rzZeNp8XK25kmMLEGePKzIvXIv9L3nB6US4Gfdyv587EkKu8rvSpn2jLfw2/IjEL0A/BVIgxE7mOxf1ICHTzakLLC41i+G+Xu5FUDsldJ8qick8t59LKpkQssYukyqrXDoIsZc6LiFUDX4tvmW0LwSWVydjsQBDvIJIYITbw2+YPLaqpqDZ2OxqqwarsEdeMqqXIeq7QQp5CqmqmmrHZPqqes4VBaoKrc8ffWmrrZFzCSr0KHqqeEBeLrGnIWEbQj157MO9Af0Sq3Fztio4JgKdh0rPlzvwJTarC1p7IR6tlNTuBqqtJLqtXj6wh84UQnJFiIqq+roXJ2B8iIVLKoaS5xc6vsoeq+b0Y0sxd9kaqs7Dqt+JEawaqURGOLMSOqxqviB1cwolar2NDXQGvmrAFfMSBpXq/6p7FPqzaqJqkbB6rcx2XfbhtpeEEXnw50VWPxZdcFNHli5WqnquyE/DEawPI+alaTbFGYwjx6q5QS/xLFx0EmuA4paycWgoWa5GoR5fibGr5qkeaWuzKPaHqt8EdTbIvKjdw/fPecHuRIKPZ09HxLyQyix3MCBKio2omoTakSRryVlOxMR4eSW6idq4q1qLxzJURkE1N5tUCLTR7YgUzSgUItNE1hKtQMMeVx7WHRbYiBbnnt1Y684lei6TEOseVxeGOoDqyC8KO+NeoOx0IKE0McqeISPflMPdCgnl0IKWI1nVFRmhfOrxMocYzy2Js6z3QEjDicOtO0rkUSKTqso1nRFYJs7olM8uTIuuo5XC7ur3hEIPOq0K/a1Oo/c6o5HUTqBcNGO11c6xxifAm6knRoiZcAuth4y61TTCK66kNAVCslNerO1uI7khx1qeSOpnqrHfetjqUfQmA2t/ax5RFNpxR+o/dZjOevIiy1NuspMh6lMv0SWTHeo2k+TVXUSBbPYBpu4zoeWpdxF6rkwHQoom1D4BEop7VLYFPd+uQaNIonGxjSeXAnnrC1N7Xx5L6oTy6TTeXAmUh7vRGHt0UGr73NhVLKrXgb6cRO0p1cCNtFbUgSCCwO03IonBLjidAt1pYgGihpTrc8Ej2IbcdZetQb760cVfq9a0kH8CkMiqJQyyfe3BF8kgVJKstg0rbgl9sg72pm1/8A/0nhn8p+Fqt9OPylSLmbfAL8oaCrBEQETOCxvh0E4f8wfETG6vQThQCYxrutG9S7Tr5LKJUFgLLtCs20oHSWUu6sWOb7iN1UbMCQWdYAlxuLCIYPAsvsHG5choSsdKxq0DjWQQ0Ah8AtJqgMyuagKSas+b0uYL+Sb2n9zbwXJvNZBDQaxCbym0OxAhv0FgNsa7bUSFEKsmxWyBICC2JqQCIEVxsSbEgWAMbYqmrGCEpsdQfj0bBcR3QjwImpGzwM08fxp6b2oO/SPJZAyJrJ1FmrjiZZtimZvACim0ZO1ZJmvMmqYkqjEsOUaCtVlIKWm+uwyaqCvJpAKjzAJsyJ8S9K1sD1muvI0Anm3pvbz3LZwJ/oF0ppPMapmgfNdZSC0JoTsRmnpo/RiDYyEmb8II7U2aqmsvAu1Vmqkv6cpa8nWbMPlcRADszDLZojwODCZtGKnGnnMFQjmhpumLAW+Sj6yTmyGz+a48G5pcL9GuXSRs3mjFoHtGW7wORbM87ArpaMSFsN+armra3INTm8luJRwW3wJkacsvfNT9D7fGqKKMVLCBXzQyrYnZSo+WVpshbayVuuAck0aCKLhW6VEeZFW6ulmpBGFfLPicc+rzajIPF5BNcReLXJSdn0A2nRqbW7wQHkFy9PM6Z7gs/BDhrW7MqIzEqDjNMZHW4EPuaCXL1umcPWhiBDbGMrGADcHSWJFpCaYFYh6rrVZ1y5gQ8Qih1rUmQsJTaLkQaqJUyw5FsjcTGhTFpCo2v+Asb3sAHjDbgao9G6oimyzOWBIsGzKeC1QPKoxJsysjlvjisV1sda4OeEmQxf4rtrbaOOWfF/ieqt1rs4GQjdCRrYJCcWFDv8RLj5rDwfrnray0Qat0ohKSUEtbjqoRrs5J5UaFLaI8SGhc4O27GEioQ6Mjnwk2MHxsZRz2/Xkva9UC5CPatnE9vTQzaI9tod92+tAKE7gTdodbB2rLkbw+3CNq6F4oCZ3DaQWWNtg1xEWuH6dX25oDEVo2+9rxEDrfcoXbr25oBfxoOu9DPb0O0DpzbY6T8X/aFTWGvDpgOvQVBgt2wcVI7fW/dqQSBhQoJXb086tqk4rLKpCradyfqB/YL2wvJbxMsGjifbgakbkpFd2utuLgCED0R/aB2nYQ3IEs/1r/aQOl1tMZbgFzgw7iqwXEAQXOeDplJe23jvi4S2tjr4xlOqDtU6mOoTv5abq81nLbCO3N0LbpGp+gNrcihRoGNyMjzFXYB0fn1Kymo/yoySYy/8OT4H+U/SRp2dPyiU99U9UmIVsI4vlLF4dLmA2C9DAPwL5xgcqpHpq9dBLr1oaDoJn4W9Fukh5++SuoRSQCLHFy6u9TOl8LO+FvQExYA1Lu9ybOJAI6ZyqnlFKKsdGLtX0eUeLvC64VYFnk42A4Yn31Ouxrvv4TsU/ReZimt+WIgH9ZjFfz2ODRjG7P+KLveUNGCSHozY6Pxkcw6WcsyeqNGUNAC7FSQA2RllglzK66hPAdHQ9Ou+LqWlTPAzJhE868KAi6XMo5mHrTacbvKxy6wRGA94WF2h3VXuqmgRSh8RdUe7ZukzAvdLZW7v1TXfCgT2xwa5LvGkTuubqO7YwJLo3xHleKHs9Qu6WXtzR9QLoU8WVYrsB7oPc4WkM96X7qYE3MAnutpbPbHrpYxMF7vR6bWYboe6TMOvQa7ru+HuDZWu/6icr8i4QVFzdDbogVRdBLbXOdZ2XntD0d81nwqigqw+y56LETQT0wNAfnuLQp5WXpF6TW/DNxzCMjvT3k0i0iHh0nkTXtmMaSp5DLEBFfRPZ0nkG4VPk+TavTSh7xfeWEFQIqdkhgiFO3rsboXc8hMSNI8rSvFHE9nWfCEaNQU691bX3s7wtelCOO0T5W3qscXesIj501BbXtDsDCB+Wd7C9W2Afkwil3rrAOlNIpkQkA8KHN795cEyiaRDGPughENKQP+0bekPsENKKihTT7GmkpS17P6/AyUUs+miPwM0FNIom9FtK8C977w6ZsJgDyNQUAgUW5ATd79ezFvw52FE3t1tEYJ3r+91tavpyUk+1poz69RWPvt7uBJ8wj7hjdbXlTjhb3uSai+pkX976GgbRqTEuQfvYgUIU/pIk0i+iDwNyITXugg+G6vRtFdzFvvxKN+7hVUL0AhCAr7a+2ztka7S2IOCD/lJZX8c3S2MGMTwB0W3z8JW/UMnZQB6JJ2ZBfQrTAHMiKvzgHR4ydkYkoB9AZtScB6xKwgMBv0rtqNWggfCTkBkslQGkB4gfkbx/N1MVh4nXAajUGo8PSeoF/XDNTIMctfyxz7Ow4wIyCHD8jONKKSpEgo9NA8XgUkXR93TTZeAd3XxIiEtMkGQjJfC+MkuUQeiMF1RznUGq4BQdA4lBp/CvV4w2jEZc9EBINkDaMJ117xwNFjmYwPXdFRF5kTIYiNhmhAmDg0fOPKDR4O4CE1y5dnYCR/pfqirhiQlXLhFfkhia8E7CjXeuBU5tBs2DcGRBuQcDh+TJLgAQEneEgfFfOTN1+CPGTk1y4g3Aym8HDiMhGE51YOIaQ51nVqjxVZArYjkAm3SAXcDAash2yG502XincNKdId6QcjLtWbFZBs1yEQd0loeTg61TxQaGaQs7QCH4hxhyL1N+wOoSHrNKMOMG1gmqEdokqCwfZd5tUUyS510WmMm1T001IUcdhynTIKah9eHWGr0kYfUpzNUIYGGe3YQcOIYhl3WfSehxN2MkZBgIGodcBZofHR23VTjXFqhlEJZV6hxDFrcPhkxT3pfBmSm6lXhm9BLdm8x4feh83OYY/YMhhEZCGC0vYdTcpcM4bCxihg4eGGgRm0v1q5GqL0c7ja6CFMtqC1RvNZ1GyrPiqOi3xTlB64A/SlgFPJ/vrKx9OsCVw+sbgyrIr6+6MhYFyEiCE8bk7SvZHqFaonMhvcmoJJtH1ZSFH0uxE6F1wyYullFc8rR9VBg+kqahswZRn8unltre6XFH7W6eV5IC1YUeDZ8kkGzFxXgSFhohBRsUbUTt9c2Gag7RlRVz5zRleuA5GRo0Z8QWpVW2baD9HkaIb5E10cdG36+2wmSJoObDVQ7euyunl2SHdR30k4A/U1gtR98TCBMBfRP70y1F0bghp5dqy08OTNken1i9MtR/50x6kjMwSxjdGv1X/ahWjHs2AUadGy1bGO9yGx0MaVGNRtHGrVNobTKlMzMKH1lGbWVsaE8VeRKFFIQx4cYwVrRvWTa9SIGMd7GFPUvUTGz9PGza9SxqgxVGtPXFDTH1xwmFBlKcRcc/4ukivSm97Rs/jdGFxyceKTxx6hV7JmIYZOvG2vTFzlGNYRxlv9s2r0ePG2vX2tNYGXPca/Hux4vkQaUxmMXVHcSPkyv1Hxgcbn4NxiOVvGQ6dZK4M8fK0avH/iPRiz0+MapMyRYJkQyXHwJ+tS3HcaJMd8FRWuzqJHAq0gdWZi4/yWpAjRu1O800U0KSPZLxHQWpHYHLAZzIqJg6Bonp9Fidp8GJjJtnYeJlot3y2inzqvjPQowK0YZozoB6i94GyAcEENDmJKH6clGL8VI45SYGYZoqBVSGJoBSa4RvonqgaYZYGaNqhFYjSgWDfJEsy7jA4KvOiEaIDREHVQEgvIiMiQVuKNd8oKvCOjsES7kGyHkkyYmQh4E/A5yFosBG+jXBlSbWjtJmVRF4IpmaNEV9NIKZXVpJ5pF4TqPC9WkmMNY8RinNJk3E6QGxcKc0noaDmNATs8uoj6jCY4WFKmBYwhRcHeZeJkrj75do2yx+WUWJI5CwxWD7VK49pWhj4hAti6mUplZ0kndiJGgDi5J9lAamKM1R1MZYp6RStiNJqWNMmqqcwL0m7QVuJ6op8taIoQIINIzVDB42MFGn5p/IjTNtYuSdinjBiqYKm9puQAunfJ4oXeiC6m2AI9PJzOm8nBh853cFjpiCA57XNYbQkYp49tDeZZ4s3qCBK4oon58VekgfVbmCf5WRgwyDdVAKQywXye0bMPBhXFgScGcCTTWyX29qiaRI0ccvBh4jppOgRETDwEg1SCJoqpOh1S7CabeHAgjHamcLo3ZdGjJmUaTrOFoZsn71ZnWoG4VJn6aR7y5mHZFWllcngDi3M16hDFhqGAaGeB5mkWGXMVo2Zw2i15FXHayL0ExMPD39WibulpnjGdWYZ6aZjKTocVeS8H1niZxmg1mYTGWQ8VdZxLqwpuacyG2cjZvbzAjTZ/2kdn7adxU6FdZsbpTo3pSeiXxNHOSz20QFL2clmwIhgGCVdZpICIhr6ZRxJn6CSLBFmfaWOcZoblW4HBoxtCOfBYonbuiDm56Fmb0d0RXmaFz9ZurPZm9ZxmcFnunfOaCltnAmfy4E8MmTno3Zsei4RxZ5uZnopcLInPwxSQIF4sEIEu26cl8UOZEdKMjFgDnTYepx1mx5jMNojKZgUKHm0iWeYsgm5nrt4s2+K1I9p45sRg4t15zOdTmWaNvmXmnaOubEi558/HznHEKeYZmO50ucNpr5sCMrn48fObywu53mccwsisVpyK2JrRP/ojBc0PQMGGNOTKKkWXidF6E1SGfgGA9P+eD4mTQGfPtU6O0LcJGhT2oEGIxPvS0ZCEfWx1dm9QZlahm28VTkBpmVpgSnqUIha0haSGVRwWLGBxj8NBgptXqqF1cVQ2gAmBJmLh1cGFQYA+1Fxj6Gts4yWY0RqnhfFU7QN5JKZ2FybIeSGFgzo+UwEFdWoWuh2lAYIxmchcPbpFxasIjYYA2gUWZFt8V2QE8gtT8pcaqyIQh+NFyFIWxmdOHwWYVQhbGYvhHhdMXFFuxiwQB1LRbUXcFhpiE9msiRd2QaFg4llbliUSl2RNbQKa2CeeXBeXnTc1RaIX09R2hcWolyxg8WuEWRckRApGuoMWL1ThDpmSFpFCVSMl/cyHEMVRiN415swsnRU5NS/20Z2gzGqLzvfSRHLIeKdBeKZal8QfFUKAQxnqDsOjFWsW7GO4GcWrF1xc4QfFvRCoXJEIJbGgGllplnDu1DFQ0Qal/MNxpxVaQVcp9EGBHyn4SIXgApllnXCEW2atpduh5lvrMMXsoyZdtJJ4LaomXBcKReJQulwiOiXDU20uCTXNWrNaBNmRzwiqkZp5eeYpEQSl3iIZ8XoonqCPLQjUXl6zIklAVz5ZH4/KsBewcQ02kdjKDlOsIwXdkYwnp7AoQxgQhE54nsQgiFmWxxZ0pLFaUXEYEzU2l2UahbTmWSL63oXOq3OT+6pUFhfqq1wtHrJguFkatDDRZQIH4W6YVlYoE3+F8k6qGVigXygvFtvmpXJmVqCSWvWMNlG6Ip7phxIipXqGxWgSXFc27gp3BeMgqWN+UDQ+IqNlnxwZfFe6WI8dVc2lpV3ZDGMIlo1YVWPzTwIVwLVp2fCS6Ztzm8WyV8tHqCRFwJZFXuVr3M4oTV1ld1XjV63sw1HsOJc1h16X1biXGQF5T8Y9Vm5drAI1u1a8Xnw9Om5WPJgJbWI2mdKRkEII+KAXCwCe5cwGf50snChgHdHnO1cvK0HBX+eOBahWKs7+eNTwk50uLWPK1fInkkUctYC1qR/gbV678pxZZzGw6bS+s1c8iD28+mbteNz+wn/R6WWcsdecaWgY3NzDbicrVTCwBaObC6UreFKtUpkrMOFyT1AZIOsJckXLjCCdOBtlyTMDdb1QWpkXOXXp1s1HJy51mJn7XycqdeHWZ1xPOb5fyAbSlBjctsJOSR1xPL2xk+j9d/WnZxPRBLi+U2meSzoV3MYRPksYlCWfcn1cK11M4GtvX1tADe47b15/VFRga1vAu1UbBnitIi9BVM8a8N11oxXvpwBy+E3BDfPnZT2MB3bJv7JfJvYvOh5cAcB0CgHo3L8mjZtTWNvbFnYoTU/PbWQXbGcIyBcF4napHkorEXmF6gmWjyYC5Fd8VxLG1jvFTVjUhfgbWDAuU2aNfFzlT2qIUZqR0qOlMlrCZkTdQscx+cQpgUyskeFIVSReODWFSUTaf54xbPr/VMR0KUeTqhPwA1xpEKg1Zx0qeCsAstN5CDcxkVlTcX5HknxHJU762ixzGlNyTcLVgmaARi3d8aBuk3zkiTcDGDEc7202NNw8S9zGSNsqN4kiKCx+TzYIfqJR6zDAVxJuiWuykDRvHjn03AttLZvHefTF3E2dNogRV4rU1Lba22vWkgtR4WRrZ62PJgEny3BvNrwU25+futK3HxuyW0yqtu/pzXCRoAatD1471HyRPS+FjKR6Jws10pzTDbYEg1WyBZjJbB2/SF7x0KMkonttx8MC2J7FBc7XqMPEC6dDGX4jtYvwJX2sdTuGA0vw8QADruUfwT7de2O4LqsIjnt2azxA52iKLMMk8MHYKGsxF7almpmuilh2vTUxlvoPt1IFhp/WvVSzF6IH9OAFz6bRjRnB+LmdvbhSyMVKbGzTHaWXibISxR2NVBiMqb4dn7cIjxRnq2h2gov2SGsKZ5hwJ3Id/WdTbyqJHf1nvHdJl+J0drWcyJ6Iwcv/MuZ8HeyjrjUC3TBIyRpep3s6J4liirHBC0V2Ydo5O/Q6aLZwdWccMFlXhK6San+2AaFK2EjedxmcMdyW1AiN2trOnZ12Tablqp2NdlmjGIsd/4zMpcZ1Hfp23rLMKwCGI15vN2ZnTyNrA6+PXZN3IxSFrkt6OziJV34d2XaSjPpXizV2dFr3d4AF3egeqjdAjZg7lt8jzptMBNzRqyTtGt9kRWOjAZJTbDGbQlGs9+Y1bgTGkrmAb270PPOr3tGZrOeTtCIyeF1lgLg1UhymCyeDrf0WnJ/pbJ5HSnIJ82JuY1qqCfJVMtbLYNpyGEiRYkpPk3FBVXSqbA2SYg8FvbPILdHfaIXG9pFPX2kl2vamStx9JZPxkbaQL1QiFrXjr2UmFvcn2/cx/bv2FcXANv2xmPFg/2QsTiLFIt94/07leVq1jX3qSUJaFd6DPpjFIrUgXa7EvLGJmb2iFuA43IoDqx0MYO5AA8EY8NkCgz0++LA46pxoGjzLwyNg/P9nHeEDrbXfUsg+D1y1Rtd+XDaqGfiDqPcg62tKDptYvsTqlg6LU6DzGdV6zW72sOJEdUZro21FKijKa8jYNAi6kqSvY/d4FLQJkOhPItHabboSnCV7oxb7jqriOAao+VNKRjWI5Wqj5QTQtPDrgMPDlAk2oVPY6CVwgNnCtA1zSJZXALUlDp/3v286uQ7Oa2YKOvf2qCrXmZ4k6pp304XDxxkzpkq+w/54WpXnrKbxcD9yxjsWqI6S2Wh0QoUPqFBI7opAUOI+SOpUAgsN5FgsgrsPato3nukYjxCVb312oIiK40j3w4FxstbwJ8PHlAdKyPWoWzxxwga0b3XId1bX0ybW4Yz3l8uWuxGE4qcao7dtiUIw4jkHCN5qQ9oPHo6+a0KFka8OVSkXltJmj+Q48Or65YO8aVj3TYu7pDlQ41JyjkXjcEZAEg+CrUfQ1pOxbE95cPnTj0NACSavZjYGN1UTQCuOgXHuUuOJASQl1bWJ9L3YmYyE47eOkJeVveXfjvrOeOmNvg6E278m5WNm6iQTT/xptJgKgi2iVesPAmu4fl2c9JlyiX4gjBhwWjQpMklECMIYXCnjX8vvgayuHfYR82/qWLOP8MBSaRmivKToW32YRByMROpqJTEZOjIQmRmjvWZwXZO6QtoS0K7QH/S14+TsomrLk6JnSVnEIFo35SvaAfe4TmT0WKHwsdXFDrBaToFKCQy+VcOVnRYkAlcDfIHEkVPkTgbuFdWiaqdfh1+H+j4hlSAWNE4ZpA+StOjpAU/mJCE6Pt8lPjR8EgLuAtE7WiMTxk6EVpSNaPpPNTqRBmh4ZDDI1O+C2jKlPm43sXnYCdFBI0R4pRuqNOC+DNAeUdTiM4L5/TvonVOGTzRXOdMjZM6hF9FcIBFnqp2E/cZmXU08rj0qLOX0VXTtogwKYaL1Htcyz0GYsRL+FokG9Az3U+oUfQBs57OIzs7Iuyrsm7LuyUAB7KeyXsxMAKB3skc6+yfs0snhJ2IGYyJAPCKHP2SVzsMnsn1z1QRpTDwdAjOLdzpc8hsDzugiPPIgNHOgduB9fyWBcswywDLy7eMm+djCSkdxEm4a85kZMchRixmtG9XrShZm6rF2mN9HJv7JEeFSef0mmxHfF4XeqC9+3x7T7S+tSImC+T68cPiIQvsmuC8IiML1prLAVKdHh/6qWpZd+4P+z5tJ33ubYpWRbm7RgcyXtMxuIvuQ3C6AtsorjHIMsbDgNcwKgnDefRSI5jDJy7tL1ix2UL1po0FGl4S74KIEUFtO5gL3bXNYMS8C4qavGmi5uC318iDRaTavpqZKdFj8r2dFt+895tQtQPSLWuMSkcj1bjsE7/OCHQfDY37NQ/SzVVaebmM4UNVWnJd4VCmDrZ9BkdRjsU6V0EcuWub8cHMA0LxgVELNX6k0cO1LL0RZ5dLhYG4x1WBiDdL1OK8PQUcUSgG5p1N/G0hcmEK/tYH8EwdrUArsSO0Ha1WihTpadYtQThS1XK9kWwuZy7TxLB+FR/5bZsq4I1UuBVITwirkTmcvBdWVMlAgdzSJSGONGqF/VNI6EdeVrejNlgZwRkFWw5i2aK9k15E5Vj/lvfcoS6uvhjTQ9GKrN4emuypCa88vtr5ShloXL8q42NG6Xy5g0lOa2GsuMF2DVw1UIjq9Q4rGdq9cuAeBkc2uBr4i2GUa6bq941hQqtXiuZ9vykquxdFqZevyNcPCkzS7SDlmv3Ub33Iz5NK6+11eZXa62uAedy4lYjr0jW8u5LPa445sY/dJRv4OXDU0imIda/Dqh2XNYgXvjj+n9Z0HbV0rWP7K2hlh6/PLTCAeD8y8pv81huYgcRoSFYZuWqxB2V8MZ9m5hWva9XrRm/2IJDcxxCq/wYBysJlX4LQw0q10DxC01fdMZs8QuRWBOWW4/4CtQcslUO4RvpXFuwsy24pRk8W6Q1/s7YvNvOKWW+PI79I28KpZb+JTRKypfW6+WLSswy+VJ4TuoVvNTWW6agxzNItvBTeWW9NvptOqL9uDb9AIwzph7W/t7Dd6i3Vu4itVayuo76phL63bsO4J0MTR28tvFtHO5fJZboyCRSM745Rd9TCv2VflJbnW6SLzNl8mruPWI46lagSURV80veR5mqIqyXnHr927z4/tK3UtGdbv3NPFg7vFSJ0uHuFcW7f4PhN9KtqYQVcJxs1Z74tWEFO7EP2eq57gSwfClq7/AI1vvEI1zjl7lvCsYLGHe77Mj7+GCXu5fXPDp4qKaq4N9bfarF5gGVHHG7zBSVzFwxjlDwuA1XMeZvKoPTM8G/vcrZjX/vX7iWEqtqVe+5cGVItZJ98t73TG5a7VdUFjsAIFyCSri1d31mrqm+VTCjcVySXYSMzENHtYOJfB6FNwHbVSAfsHuiOfFwHujVVqH7zZggkQVHB4SnXQM1SYenrXB9oxrVdh8Ch6Hz4pg1RdkzU4uN7lxDIfgJA+6vv34+Gv4eCHjQBA4ZMZDC19BcLGCz34kgPg65nSyW6cSsMyyypHQT0SdhXfOiNIhgrdVkla082PI7Mf7jDuF61d08x5sfXhjPq5pms0IZL7LaFx7RHGygrXi1HH/rTk1ARlaWqYyNKoZT7RkxvJY5uiJTKb02YQ9NLO79YJ9rS/ZI3X8eK0xoXIMfHktJuSWw+gndyC0rJ8DurkaXUPV1M4/XDmv0rx7K1N9aYdZI/taWZ3TiJCU0K1TDhp9lMZtco7cfk+5B88UOnsrTOl10np9kuTbJHUOInH1pt9ztKfupz6M8ydN2TC+rp+g4TcGLNUe8sqBm0JZqQfVMvOBsXo0aL4hKs+oGRTU12RHKd2e9CIItYtSNGb3rWOxjnluZm9HFqRAuee+V+WufoWIdMLNnn85+Ii7nwiM+ey0hleyjgSiGJ4jNtJFcBKfaV03ojR1eSofwDD47ELxDr5CqojBimgXauiuexkJLBIq593l4jeh0516q+UrWRw8SmnyjfnsMyzsqI0l80iKwwJjOKQqYm9YXDfHy5hFFI5F4gz/n1hYYoOrcl84i2+Sks0i/AJF/FyWaD8tIj483fn5sWXq0G7oeUVhZueyXp1ZgoXnnVhGvnda59hp3SiC2OxUmeufTLDn1l4ZsRV7KNpeU6bM20is07th7M6dbpkHZK2bFM1eoXms3pptIiQLhj2zPF6RW/UWGl1f3zI59eeCzR71BtfX5V4xpvn1Vc9fu6KQp0WXXn9MlTSIh141pY3viJAgbX9yKKe4XssEbNSxJCONe5LRVrSj7GV1gZs9vZxgLeUXwnueee+KKnbNVX7F5ro7X/KLpg+S8mfrehuIJi5Lt6U1+cUtX9HAjf3n9CIVze34t8MZSc4N7zeXIkd9utQ3ixnijmXnRbFevXjoFFehX6KMXek3qzFa8Q3tN9rfT6LN4JXOX6+jHfA3/V+WeHztPzQy3j9+BF7C9nDOL3dnukY71Fb7RjYh+tdPT/ZxoBgEQuqKJCN7IX3r97GZn3z98Jz0In95d6gPnCIA/MLn70IiIP3C4PWn3mEkIvtIKiL4B1ipxfojQgKJ/fXL1+D5qM79U9GQ+pcFA05C+I1HzYu/3uCNageWuBueeO5B4thhFIuA5e16PnRZA/Q7BCGJfAmNiD+0fgAV+J1kXSHV4NicOjn4/ADBHSg+cPkp7E/v3jbU+0jyDa3fe/tRVjJXCIhcgE+QUjFe0ZVPhnhPeDLtP32O89k7E2fb39orhWtk8++wgg7sHttSyn0+WqIwu1FjhU0i0XN1uqKGqic+2urh/n0g7sLtYe/e7nAy6FI5+O3icuj7zd6QI2UtC+74+kmOKAH5+OkVISjh+D7qhpAM8+lyfgv67GS/KDc+WY8QtEhHPnL5c+pHuCHS/0AzKPQocky8GKa0itoAITZBl7WBsSadz8+1frChVi57Ps9bviTcP/B/1cbcr66/RPmiFyeSYTVsm6mdQb8c+SiT7XBMvPtr8FLXgaBX6+Qddh331qv7r5CAm7jVr6iyirPvqKL7fupEkdvg7apuckwha4kTE0e4VQDv0ICnvwT6jByS6sulhuSxORkoe+NRw62YNwv58Zrgs+SUi8sD9cm2q/CeRkn4hnvyz7yskxoMzsLiZw8bK4ofvOB3Hvvuws9tgx976Z0RIvG0eT2SUO3sm/v2Mch/B+j2GjyQfgrS4/wf6eQB/n3rg3+/8zf3vh/oJ6F0I3QgfaGi29ZUAJifc+GE7aS2LE60eSfJUZP7MMrTH64tkmUn+zYnvkn/Ulg2cX7L4cf73OiJhftQX7tR9DDIGSHCPcfeT/Guwte/Kt4Dgl+lfxTfLGLtWX+K20cNn8TkzRkMav7Rf6vJtHPkgX8/4CCZi5F+8kHn8C3sbLPiZ+MfwLYNhhzz7LHO5zyc+YBnsoQFezOQD7NHPvsowF+y5FF9F22QzeqNUFfkmXMEnhiBP72+i+5P4TJU/t4A4OM/7pCz+hyy8/RyvzngejJ8gfS+CCHSWP5T+iYBP9WVsM+EmDW5AT85ABV/W87ImO16e8EGHj24c/dyrFDAvQbjdKXKlnwWDHtHQOQrhkQTwf9HGHh//v+flVB6iv7/g0TFwLSKrqf5Qx3udNPX/nwSBQKHP3FyznJJDuEygqAIBfkkPHBxyRCIsFV66JKW8IOGP/ZAwxuWI4FOy7XFvS8WU3/x/6Di+EmrJIhIZQhr/94gGvcnBlEMAwtSQN/ucQVFFxwd/tP9W6kkMAKhqAIFCIpeAk5JjoOcQSFCYpn/rRAMAfv8P/qYEoASf9e5GWAXEIQCn/sCYilHcM8ARHhHZKIdMARFxf+qiRRDrN5hPMv8kOMsMlAiP84AWEMNhkIEcdn+BziAFcf/jQC+RL4pK8CiV7/h/JBNLP9WARv9fFLHhRxJtJ+AeUohASYFXWHth6cNACqSv6x2SAttP5vZ1dqCSNYvLeNjwmZAjPvo8RbqgsuUF9pJRNhBLQPFMvbEige7CCoG0jExjFrk8XAdgpsmjk47VArl57JIZbgD9dXAetpjZkhpFWBRkv/LYtkHp4D2lO3plHEnZLQNCYNdPEDjlJwY67OtpdnIXcIEF7QRAlzlX7s2p4LOvx5HD9d0ELXp8mrhBRchmovAcv1D2DLdB1v4CvtLYZnzKUCDmmucVfHlgNoASRQdDZA3VKtkdmrdBogaVw9PK0ConPnZkRHGQIWriIImOMCGgRehEXMKVkRCplp+oq4I7POpkEKMlkrs4DSuDyQ68lBELlIU5X7oS0mhG7YnQCiQLbOhAsrn4Do7HsCO1FcDKchtp/NASoOgRsCYSAkDFgWUCMUtoobbvUDo7D4DyWjMCASrUCnga55GCq1AHbM2p1gdNpbBq7ZJ1PGVlbIKljgZOoDgUilmMPMCYNGkDpipo4GVHcD67CsCTgTiCNvpOxEmOkFYNBtAz8sBwdiLcxSQcJNtnuRNGDqoJiQVHx/Li+EbUuJlKQe5o3aDSDwFpYC7tq2R5tPv4lAlacKnE8g6CqOFWhnlpwiqOFZhiCwtAkYJR3BIUgSv31bKGoFwPAI4NKE74lAl3IG4vsxkwsBxa3DqDawkX0MRgiRRijDMZgr21iwqlw5wh4weAuACYUna4ZQaQVnwvKCieklRnQeG5Rvvpw/pIsMzDMwUrkJYMA4HcBtCv6C1htvANQZVITBmrAO6kc13QTCMDoBqpipAkM3Oi4VvQR5QvrLYEQwdRxSGqKDiBMdRPXOFAcwQe59NKQ1PCpbI8hlTpg/D2EkwYfpViswwxnAmxFinWDPHFY1yAbX8Y3N6UJAW2DxKB2DQOLGCZKNoYYwbpNoYszYwJGaDaYi2CYAQ8FG8ISCcCCXhaigKotjFIgmivtIfSq0U/lvSDbCHODtWlchFwSpl0gqTIbvpZc7vmb1DnmdAXel8CvVmeD4+nO4bFgrxk+ieAkIleDKnjCIPnneCQLkCCjlm+DZLg+DzFl+CUNg7ZPweTwD+lMCHVgdZSLnyJhPnA1KLt1lIIU9Y6LoTAqIo9giPmiDPwQrEjtHkJHweawqPi+D0IgnAuJndowRJq8nwXbkQIYq9iIetpsxD9pJEIFA++qThOEDRDMDEMYdFkhDiDChDtGC41yDN30KXlRRZSlxDOIj1oaSsgI43kjZcWk0CWmIBFBPnRCTVr4cBtFOJelNJDBDIiDxIYLgX+r2J7XiJD8uPnlXwarwecpRDhngpC7bKmIXIhJDK7FJDtDAy0xIW4tzNn3x3SsJD4eIV1bIXxEoIXXlLIZwgxYi8CfwfqsgIY4CjIYG9yIeTo67CW9/IfHlnnvmF0AiyVtImBD+gbYDW3s5CwuoqhGctGtLIMQYlIexCsIQi0cIThFLnLxCs7Ic9x6MaIr+opl83vlCUWoehIUPc97IV3YmIY0s8ITy1HIVZEWISRNABhX9VnlNQNmKbRzAVWsAqp39bvq2QHuKA8IinZoBsEM9BoRg0XlkBlDNPA9UEpk98NG9wkbNOJ7cGNCoTBtZXCqYFdyCKhAodpQlzK/Fo0HYoOoh1VdoQOFSxGjwNoVGkQaBOoZMEV9LKJVxFgng8FoYT1DXCpEoRgHVxob8NZofA9YvqFQHoRTxfPtGJyzCN1EkqvdcuC9CsYsDD8xHI9CxN9CueOZ9auOeo8aokAzoSetjeHoI9oeBYexDV9mxN0R6GhHxNoYND01NLUroaNDQavNDCxPDMAaiCwwMu9DpavN9EnvvhqYVIZ6ArlM0qjFFRiljCQEizCvoc/gVah196AtIoKVIDCQnkJofqj3Z0uDxoZVDzV7oSQJnxHvQyntdC0YWrxjUFGE+YdqpfOJUD3BjJpM9hTd1wYdtXeFYhainZ8JJAEJlwQbC+7sAMA+HrDtWoDVDYSVt9wVbDjPmJNskj40tGKCAHGKMkf4ogp4tFMlNWBQpAQk3tkWD7D00G3s4IfvI+9F3t72gvAa9HoEEuu2pT5D0EQdN9w+1OXoI8rGx4mEnCp9j6g3kjXodfH6dZ1MN8Q6qAdx6gSwH3s8lfWAHDgmPvt/YTkpfYcfsFcCupQQLZM5TkI1s8C7C4/Dftq6lJAjLhXlvYZM59jgfhUDmQ1eZlPk9dNa08Njk81fMspR4T/RW4aIFN1EixPVvOtS4ZM5DeBGtRAuRFdZtwgNdAj5s8O6xPklaw3kkiwC8snkU4UvDzWIRsuYPA1I5pH5UzumpI5uPD3YV7Ns4Z/FZ4dN5E1k/CBmEixy4bbp74XPC3/NfCtGHPCnfHvwL4Uiwo8mF0E4X7N5Qotpvmi1MAEV3COWCfD54QgdQGujRXHEHCg2LzQX4Rrpj4UwAMWI/DoERRQD4XfDBcH2oD4ZH5A1D1CjweoweUAnNw0EyYkMDpAn0FmwAznQj9oDVtP5NKgJIDgiaIITxX/pgFOEWHgnyBDxjIB7ga1itsRUHz5jEpPJdzuwc00NT50CEhJQaGYk7jsFVxEWecHeooie5HloJEVsApEauDUyC4kObrWtvUHIi6CAojpEZFUtEWeckWCOg9EXWQDEdrCqbm/JJRPGR1EeYj3lpYjnzmYjbEWYJ7ETs8TPkY8NWLbAQOJ7QwjoywasIcE/5FWl2qnPRLDuyxfBEY4VdCzQTqrM4pdJDxA9E3FX8KkjtpvQQngLo5Zeu48JoLw5YkeCxOXODc6wI3pk2K65gCLCJ0WITVtnHVccTDNkfqIVUtHIHpE2CXRwgVEjdhOjQlPgUjzUJPRekYTRokU7ROkTCZHqpQ5x0K0jXBKcEGkYddpkY44NoXpFxkaHRBcB0ES2Pxwu8LUiYRHU58kUMjukebQNjnwVhVBEjDkdE9wtt05dkWVotEcCowrjr1exDcjBkWXxgBHDE86C0i31uYFeHLTpYAroFmkSUctwnpdFBOH8vsuOdA/t6BpzhsBZziwAgUTdlFzvQQX0NmJDzu4oliJqBP7IWZUSJoQynMicafKijrhAijtzkihkUSDk4URxA8UV5NCUVecvOjedeBt6AWofkVWuuijAcoewpWG+cGHETAW/m39qUYowKEaXt1evhF0KDEJKvtP18nG0RwgYJ9aHE7JFUDJD+qjVQYhDMsrchw4BUT/pyFgjQYhBZAMurU0DyDEJOFu3oQIHLQYhFbYNdLqjzyFsJzDjzlhdg0IZFis09BCqj0EEgEvWPPoNRJzxHATbsspHKjiDOKiHJH4peilY599I6jwoXqh+UaQgqvqywSaBCJGRHHQw7PjtZUczwzcqHshRJ0DTIXqj34I08PvPyjk0a09i4hRx4RKEjMvnqjoDKV9rUe4JK1OIUXUUqIZIacY4VH6jqmNTFQ0UGizbumgqaI4Ja9ItoTLI2iIEOGt51jWj7KCajjiknto0eIV+8H1R+0Vll9AWRNREW6kkToq48GGpddvln1IUMxJ4RO35eDoYjggpOjbqKqi/wKPcrZEsQ8GHTBN0fbDDHuJMH4KgQGYStpkuH+I87HB4ARiEZuERwFJjBuJb0UpVr0bi5hBABDnuJmoJyK+iQGhuJVPnejn0bxBjvN+4MkBTxwnHqpmGqwUhyJUCz0QYhMagoj/3BFJBXJOQhvqzpuxABi9BEBinONqpf0U+iQhn4Yv0RA1cMdMJQjOVCL6ueidBlBie6pmI9WOdwP0QANxWshls9u4lG6iwczwJ1D6DjSNRbnflFYBDxX8MDZgmOyx5vK5sMCFOhK2JBxVAAKElqCkt2WNkIs8GHhJMQyc82DuheaCbgLgeyxckZIA5MQfUeTukitYofheeg4xIIG0jZQN05VavbMwkRnxEKKTQlvADQYprpjqaH4AQSDkiZPH3Q1OnVJFMcdxh6Dx0oRCWw1QvJR66D0Ds6GJiXKKTQnUgpimqkJjMolgtonp4IxNhjRe0N8R64Q2gViP5ipMVlo5QBFiOWAydQQJqILUCG80iLbozerpA8aKTF3FtE86INGwrMRLRh9NlgPwJvMfIgPNonoJj/aKZiYZGli7uCXRUYnTMmdDVACTpvM+MbIAysSTgnaCpjNANE8ERKJxNMaFinkbsINMZdYAsdViLMd04RsUvwjAmLFz8P1i1kJdoq0AKETLLMxj9JLVgsXNiUls/plRN6wq6KpjE9Eljz8L9ZlIOOsgkRlievMIitYQwcdYfdpzrF84iWG4iqBkSlRpEwxZxt4joVi9jjvoqwwiGTJ0CGxBoTBAMakQC4IcdIj2Mdyi9nv8wVkKY89jKmk3/G40uwZFA4nFc9epu7MieKBxUcX5Zm8s89ccWWk9AkRxCcWWl8cdBxKcW88dfBTj6UjCYxXms1GhPWkpXnC07Bi2l2cfQFfJgi8ruizjo+mWl6cT00CztfRPcumlJZNk9aXgWlJcWOZfqEU9iUGR5DrhzRFIqTiscUthqnoApyaIGYr0q4I9Ii8xsWl+5ZTHFimnOsdMcQWZg/KM1zcfjQwWpGD56BLjWcTG9xciYoYpgBlEemuJ2Qia93cfGE6po3Rkujot9YErp7cWMx+zjO9DGDfIUouu9SeAUsB3Cbj5Pmrjq3qbwClt25b0iTjoXDO8FfC0xA8SzQSuqelfcQfRc8YcNPcbm93FLrjhKo69ycWC1LBoniBwoIwP0jt1FAbTidPhP4zTAcxiUG6A2McuieQV38IxNFBi1DBJF7n3jd7qUgiNPpB3KMPir5MlBD7lfIXIKEASKPOYtxBIgh8WfdF8VPir7pPjJqDvw/VN+Z6Hk+Bz9AQ8T5BLBBNNKECHjkJ8lpJYJcj74z8ZTBMJMA90LLg821CDd/7kXgJEIRYYHh6YN8fBIuqP8DytkFAooOVhL8aI8ZFI0g58Yn5gCf/iY0AQ98VPjAc1NgcPTN+IQCc3k4CeoYaYM3iA+LI5QwCaFWBg389Hl1DvOoejzWt4t+lpNE1fN0w8iHYCSCYvdtjBgsfjLSonYDP4ZylHDqFsQSSsX4Zu+tMwy4tBoJEAwStTOwk7sFtQaCZFjMakbDyKmCN1VkQSOCWISy8Kg9Kavt4AsOIT2CUN4iVNeV7GMQTWWBOQcRBwT1CW3gGRCvsi0JKsTVv4t8eJPgiHrshckUBUsOvVBffhH8QUUYApziH8ZzksA5zn79I/j4BfsifcI1GXZHCK7wSiI7wB0gjkuIo7xOVgETB/kEStrGjli/q39vztjknRIxiyfONB4vN+Y3zqAh2UdES+BoJtKEQnp0LK7ZMeIq0GgTJZ8gWuUDRGVpCLPPZk7NR58idbQyiUUT57H0xhBAwA6TMRJKiQ5M6THkSP9pFhqiT8Yd+B/tOkDdwR6B8CCioNIxyqWJOgQTp/jgkDaCT0CwuuMS5tPOIynoydkTtd4lzOkCCil4ZGeFjCGYYycOiadoqtpUDnfi0TEOGXZfIIHcK8I8Dyid0Tgzn9RAdE0TQ7CoNIUJ2Qy7BcTp+HcTsGm0TgziplJGrgVHgYycvaLjoOosg92TkkBAdEoVX7jfsUiBMhSyhUSdAu4pRiQ2Uniamdrpv9wfjDwILdMF1PbJCSUSXKsqiYWUhFFatBTu9oNif0cfQGsTvjPGJO7H4xeiesTGhIzk/GPiTtdCEVPbLSSX5JSZooEgjqNqDZHicUTL+AcTSSVCTXAuMBRctTxWSU3xTJsLoGSR/NSJkttubGo98iirweNj/Y/1p3jhbn4iHYdo0teMQ4/YnZcP9gmVVpAADA7vntNUa6AaCgaTPJs/Z4dLeNK0WaSP9iZVwRDM1SAiDxfUeJl8SuqS00dSRtii6Tg4ojAXtIwZfURcYjdHKTG0T5hB0oycobBXE9STcUTSfFJwyZtju9r6StScGdUEM7F4yZGdIbMCoU4vQpXAjqT0iFaTXAuhV4ZExVaupkQVUSXhYAmKQ9UenZYSinw4TDEJROG7CwDpUI7SYYEiye4IcyX2cW8DKjWySt0zHDWToVPowo0U6Th6v61G0YP9y6kOSh0RWSHAijtQ0X6TXAsSYO4smS/GDaSZiEaT2es9i6Qa9iaWP8QQZjaJNAOEE3MEVjzTPCImVkd981rExyyBGRd0ceBdyTakZsgeTLyb6hT4l3iVSQQSBDk0humlUI5VNUhGpHwEIhh3U+dB+SFhCMspLFcRMAhOQkLr0Jt4J+SFEAzsHBGrpORPRClLvUQNsHFQ3ySqjUuCKJOEOjh3BNyoyxNBTEKQOh9MNUgYKVcRTAtqpwKd+SF+H4Y/yeqIi6MYx1kPChihDhSXBmpcs0TiIvBOsgxdsNJoXJTAqLkAQMiDBApll000KTVgQFDOCJCCEtHwiUJKBqsxJ4KBBPSlJSTybWsMVLmJJKVmFvNLJShTCDM1KQejOMRGJlkhBFQ8S5gGXIVRk8U7ARklZEE8ZNQF+oRFLKX9su5p2RTKahBd+v9xlKYEABHKgQ95DCotQflNpAXYpIOB1VfKbXijQbxBfklGFu9sNUccEb0emvJMdeCnYFoXXiKeI78HcebjOoCKonlHIMEiVeIPlPaCjKcwwYmo7jjxG/o/KQVTIJIf0P2AlTcqY9x10rTi/yP4odDhlTB9Es1GcahRcalU0CTjq5b/FC1OcUOQsqWcoonG/cyDFU1BcWJBuUuhFbKZ1TeVmrixKa7ws3tq0mqhJJ2YvuD5qabDltgHxZqUkEnlG8tgvPtw7uEtSZSoeCeURCc53Cr5SHCic06PsD3oNXoh5iapBnO8SNgpaAPHMGdvqEEDLqbyc/2E6B+HF/49/I7dsgTl0jZpKopHJvCfXL0DEzpcSr3HmpKPG9SkNHtp+AhW4SgbY5qmLih7qQqJaArd1WRFwFp2BcpLJCoFjqXYCFRJQF0EgDSdEPiV/sj9SEaSiciCmMDfHLOSLurWpHqZfwLgR1QFREfoU+Dp58aWYFMaRFcHgdYFOac0CBgUilVArJ58RPR4kFJOZbqW2TzqbcCWnPN0jAl6ppaVasiIELTqaW2TnqRxofgECE35A5i7VOrTbPMKoTVMk42yYzSFgek4iSSYVVgYDSI5DVA2aYU4gej1isVKdSIBDVgbqa9TNacjTxaX4wBXIXd3aW/IegZcCXaY4E16qcDU9NNTAZHZISQZZJvNE/BcakkFmaYpSVtnugmip2pnau8so6aEEk6QdTEcdfF/WBXtjwKYSYIjXtqPGmsjnnupnYDcIJEAmxD9m4EXMPnSO9ikY1sIQh4wV4wbJrzAnYL/86VoHBMmDxT3LKXYgxEkxCEK6wf6kMYGYAogiWgvt/xBdA8KSvtFYC3SFEPCgdFq4I3GLPSS6ZLIKeEhcxmDF1j7pIg56Y0sTqkXSVDJft/stBRmVDxcv9mpDHJmvS7GNwEQmB0g6ArXTQJMPT+6WhoI4J3TgEE00ilgIF2oDMgQ0D1dJCFOJ3KSk07GDHgFUv3Tb6evhJRI5NeKfhdhTkXSfgBfDhCAKlCEDVZGlinpF7jXSwGVKlgEHjhT6X/TdyBXTT6auJVYIgzc1DfEX6Ygyb4UK4ExHoDJScoj7aoIgWDmf9ebkjNqIVwcttELdfSg4j81g3T4vBQdGGdtTYGSwyS1jpSrAS+xx4p3phPsCJGHFLoIPLoszkjrFslojsioZ45krhxcJGTG4eUMjZWFqmIlGV6itVrbBGHC9MVGXozPHL5wTrEa9zYGsEMhljtNSmsNTUiio4XiikiYqwZWFoEDY4u9ArGRNAFHCYy6dh/4gnAYyFGbnTuqOoyl3gaJOwgXFRrJoyzkrLF5LoozxKOpECVhGw1YCBEOLjJkyHP198LuIJegmXYCDIq8z/LW540u4y+2J640mREwdGB0kAkEcTsDKwtaWB5Q4mfc8tGbEzcICZTVGQ0ypDDy9zGTUydGVZFrGVmDkvnO9oXDy4uiXjYWmBJVPGZ0yzGSEzDYvF82mSawSqLQTIxukwEofLVkSU6NWFs4j6qJKRA9rkzZmcUzxmYslEmW4ylliMy6MV/NfdHESnOj8ANmHTAr3o1Ei9hYDnybpSuUGDtp6PCopDnb4QeO/inFpXBIoE8yK1MBkJ6VkZnmXmoXlIr5oDr8yhDm8ysINVcE4IjUIWfjo3LkdU3meGtjlO1oUIN9tENsZxFam8yxjPKp04G0w8QD0JqVNCyH1HiBjRNrSfUFYwSWUGFa1GDpsUD8yWrhtoZ6XSycWYkAvmW8zzNvCot6qbBjfF3R4VOCyNfEukO1EtBiWW+wYrjPA8Wf9AlMvtcEWQ9s4WXxwYWQ9tF1nx0FUgCzjrpyz1fKCz6WVrp4/PyQoWQyzfGDKz0lrBpgWYizJWeh0h6FH4ReDtp0NOay3maSz/gWdBr6SSya0neo9WZVU3tuUs5uOvRtWVY4PWR6JEqFyyRWaSpCgsqzu9u/ihWdbB8WVay+OEdVpqVMFsvKjYnSgwx0ZGV5I8Jxs7meuSqbqUEItAmzGNuwcs2SmzjqIuwhGbyCE9HBhmCkhIbLjzkGzMQFeyN25QdEXwkqLeNvUYZR3DpbY7bKWYAKEWI62e4hiwm+MPGvR9RioPocui5VwAlKYcocEh6AhyZxmrJZQqNGMrUQMhoxP/U31lpAEmmOJIwfdoW2UK0zbN6iCZFQVt2XbZq2fpxZjP6jTzHYDDxAGCw7EY1SJG2zpihOztKE2yPijohmmmVx5iqhZUjvuzSWquzoGpldQSr+hiwnOyRAsRRR2bpxKyaiD3Ah+yXboezk0jeyXbkh92Sg+zjmQYCvjqeTJLLUVjvKPd82PuD0OStTbwvkVUOdq1ZjBhzQKRGpDxADiKsgji6Rt4x2kZRQtottVNRqMUdaPQS/ZO4EXmGtUm4IoNnQKVUNYIWJGOcAg0cIoC/5HVVdFpvh2uD7F4ar/07FA5hIWW2IJOQOERUKajCEFLAowglhhqsCIVoWngZEBNVuOb/FdUOsRMHuxzQOArk1qpjA1xEZyuOcmNRiqTlDXLD5iwmnhQkWVgg4Dxzm8mjxFMitDAzNE50qiJzKKNZgXBkxU7FCpyeKH5yBwhakeXJ5yo0nZzGaq5zFAVZyfodpyD/GZy5oYjITFAlz4Hh1IuODFyXMBo9wAhFydXOPZmSuDFManlzLOSdhhqllybBkSBEMcXZzBnuVqHh7YTFPJyToXFzKKM4Jt7t2xLKD5gzUsBJB/lGkfMPhCUsJrI5OSAh5asdg6wJJzYwCAluufMM/FGlUoueWJeOY/cdygf5WOTfckuRFxluXNC0uVSV5uYjw6SjmgDjlDw7ivRwQEkVzQqEthhuWVz6Ar1yKEpJIqkcOhOufA9VudZxnOYhyx0chylKenBaitEF2JFvT+aNJIvuemzx0SEkPudq0ZMhJImpMuDQecWye8dYCRrOQEPTM+AsdDzUIPPDzs9L5xkMVfiy9CYysAh6YcAtMVBUPx4UeR/kFcO9SQigF870I7d/CiF8nrJKpFnhF9qeZ/cnBNMVUVoXdqygl99bEhpJUil9zWATz+UgWjApHapqxOIV7gCapBeS59L0R2peedWiLlir5cClV8wopKpZefWjmealdJeYjyxVmMDReUkUh7KSpNedPwlqFipVeT98dEELTFeeHckbMjyMCtsVqiDZ8eHpIEYmNzghaf3U1SgEBJzDCd4dNbzkeW7zQ7Ab4Keb2J4dBdEr7rjzp+KWBGcm75qPNXopBBqp4eUf51QBRiffO3w++OqBAoZOpaeWz92VqsDLeYtpY+QbyYRPiVUcCLzlAtUwQ+djzdeVr9Y8uw8g+XYVleZOpDeT4VT0RXz5Aln0gYaQ8rAmF0zfK7zGeXrz6efr4tqDy0feYXdU+YV15fBiUPTKBSrfr+hseazhfMOPzhea5QPTCAFCutnymafGIeWknzHeZ3zpqXKVWGRGo4zFc5fUlPy06dwi46ROinASSCuxMnSqBgfyiinBYVlPDiMiYdSIxBDAMeGC1Kjifg1AoDskXFPCkIh4xX+V/yS0h/yQjAYs08X6hOhtmkX+fKC3Kf/yMbOG4P3h7jBcD6Dyhki1WDlmDAQrEclhO1MBgVU102OTE5NE1STYBiNYBT7isWjiNiaVAK8YN/FKPjLjkSqEzqUHnjoBTCNEBdscQBTCMUrsM928UKYs3N1IRcRwLfgimE50j/EFHIU93ArJTK3Ah8WcfVBZmWYgqIj6AxjCcMhBXxFlzt8Nwro0te2u8NjJBUt6BTJQloEnif+fKCpTl29VBWbBjhq29FBaMMwMFBkABd2CxBUgLmBf2CkUIc9dBSOjqGbESZSe4lMnLNR6iUqT2GfczhGapJuiLjDBHOJjdNshBDuCWZZrCBoSMde5+7FfVbwJVowhfN17ws1oFyEEK7Rjwg6TPELAxrELTtBkLaxhiQhtDj9HGGu48TCHzpdkThX4LR48oETsyhfXyDHBt4pukULrvAL9AxgIAbuNz9+jmbY4hTE911C3d0hV0LphGkdm+V44Uha94YQVyZkheEKYxI8CHieMKP3PKYX6jkKvxrLCiPInIC1P44SGvWZQLAD5RhUR4qpKUcO4JELahbVYFFlkLKTDMKktpyRJGmr8BvOw1zPP/wFFoiRGhRDJ/+GgSw1C7hiII7wf6F4K1wT4KS2dfFJtJ6Mmfup0YVMVRgxnDAmFux1AJpkdAVMeBHaNUlQOuKpT2Bb8wRZSpU8s6wUPr9VxVL5gvvkrtxVC+hlRqjAEeD6AM2mBNyWWCp6aDqMOjvUsZSnL9cIJYsMVIiLGSIZFY2hip3KJCx6jtCLP/Gfx2RWSKQRSz8kIBTx/hWnwzfGbRj6XiKEtgEBYOo6oKReOhmRecJ4Jtdt4RW5CkctXluRdUhRHNfomRavS4dJgJhRTq4i6GyMDfA+1OELyLMqj0cEpu3RCJtPJvtNUgmDD2MoRW3h9RcGMMjCEY8hPuUFRYO0jngYw+RYqLAluDB7xs6KXuVKS8iu4kQOtZkisg2iwecZpg+PqlWMThzgxfETQxVxJAtuytIxdNRoxQ7yM6ZRz8THvIYBAHVuTOH1cxWM4BME9wXWHmLixYJlH4DG4tiLQpSxfozc6ZZks0nWLsxBWK8xYvE0xDAJP6pHZUJNplHEGsMqtl3pd5AMz+xXSw6YEQF9md2L8BLGBRmQQyZSOEDfGTVgSxZKiKEl0SaxUuLQmaTzlhAOwN6o8TVxc3k1gjCc+dIWLPHCnYqMpWLxKJhI+VB2L9xXoy1Ur2KswTaNpDIOLPXA+KUsgwAFQgeESlCXxT6mXY42DlxaxZ44XxdplAzGM5+IB7otxWsNxIHOYrxR5RQgCRIjxeJR5Rh0p4JTJRAAouK9xTBK66f2w7xc65X/O2KnxYWFcJbeKNtO+KoAlClPcgo53XHqJ/xQhKbxeSxgJU4LmoS4KVnvuF/BfRs4Gl8KRJt3jeoUjjWWiW9Saic9umo3A1FnKxs6adpvqmBEarOvTZCahFLmocTxJfQ4FLEJK8IlY4kIvxK/ngxZG4GcseIupcZsmzjiKQjAMahrRYWtFQT8KdVtJVREuaupLSIjF0yTIqh+LEa4NagpLnni74pIh95FIidV5Ilpcl6tJLvTP/hAmLdV+rkBYWmG9V0WMdZ6IiFLNkiG8uLLXTqhLlEgpTFK1Fj2YtLLXSSUbxZwtNpFLJQa8fzClL1lhPNqYvm9Bso5FFiPZLMpe5FopV7BUSAe8eLnxF2qt7sfIkNpFYEHiEoiyZUqgu9JJYPTsqvjQiLMjpYpY9YNQKI1ZCT2Z4pXvhKqiZF2Gq1LDjmuTDAWcyz3jQANmCdUV8te81GumyKOaZ9kkP3jnOefSyMfOZWVGvdAliI8sLGBTtpQJYZ8Q8hD7qvj1pcPiLpSMsRHpZsHRVZg77nzEXBmYhDWffjzRbGAcljjzg8gohOiGMDALN/cbunfirQLg8ikE/id8c9LCMWHzP8egJ38b/iUHuGpXpYqR5HoEhZxAQ9rpf+iCHl4JOsBjLSHhSJgJMBjn1PNFnxC9KGVOrEIZTBjKzIooQZcZoOecDL3pahj2Hggpy6cdL4CWIolkIn5D8S8KQxWVJMCTxJsCbo8zLt4KOMb4KPDE0tyviWY0qsGzRYIr8xob1BHPmmoPVLSKwKGoIzxRyps6ukp7Jj6o2YH59W4EJzAQgP0yRq/FFOmF8IZB1VjZZ18pxWSK1jvn0QEMNUxgjrKosDrw8tLPh0lCbhOxRip8guIpcporKpDjbLVZQoghYsV83ZYa5CMH18b3AdUHWRbLQPHqKVDkF90JS5h/lC/i/ZS9DAwhCpqvinLWoI19g5VqLBjgIpt4ozVLnCt9O7qFzC5dLK7PgqEmkGjU0iqZh7pVscI+v7LCEIHKLeu4okXIagXZcnL7uKQhgVOnLO5UekfYNV93ZcYsJvuHKUKe2is5WPdMatkCqaE59OGrosq5ehZhuWPKCEn6YQEkPKRyIr98YZgsjKLIpNZZgysYBJgVZS9C25V58FZRoTtZcH1d5TMwBqhvK0qhRsTZUOUL7mNoFvlMRApk/L2FAhoPOXfKLZdxhJ5bHKu4GkVo5aPLz5U3gB5Ya5j5Wl9vZQxL6MRwylKR1zENC4iv7tbDOIGd9EFXGKJeodQ4FcHx7voKgkFQv4llITtMxWtLLZINx95EQxb3BFIVvvTw0epHh15St4keiZg3PnQqP3LgIvPlQrcpNRyX8u/hp8MQJ98M/EFkr0EeFZy5Bkrk5BFW71i7MZ5bQgP0LjDYcbtH71D0Ong9pCwq0viWTHGMj03PoP96FTQqxEhormFRDIVvioqselaByvunYRus2VGviQxBXGYqCEkwqktt/AKFAWSXJEIrqERt1B1sYrYzu9VkKHS5sdGd1UMOFx95DoqhPD3xCPNDp2qFAqTmf3dXhcm8V5MYlPLF9jVmFCpZ5DEqQWHDinyRmzOGZ4rolTojPgudsF5L2JElVkqCPGRzuoffzM6cnwc1PzFWRGC9nfnalL1BqB1+PWYRonmpxWAAFjJI0qqRIaVqlZDBV1AS9nfo/BgrlGxWvDfKsaSICevlLhuWM2pK4MnlALLHgJlb2UZ5dlxm1KkBRlW+KsrgMrM8sXLj1CIZ4jAArqRPKofgB0qdlW0qgASXcx7psq0AevxqiLkitblRc4YnCVxMGBpuoBPkNlYBoRlYKVPsMyy5sBrpmiG0qYZha8g7qxgXldlAydJcq4YvCoobPncYSE3EwVXUqB9k+AlEDbc/pGeUtepLVXlGsR5KgT8flRAD29A0r6WecqQ/NXK6IH/chyUikcVUZoNIEM1t4iqpdetsqV5UzSCOCRVb+tUIFgejIdypvzLxMA44eNT5pKUIItqByqtcZCt2MYDz5lE59D4ps4uVaPdN4iHx+VZWs7+SXtSlfjllgH2xsICWxDON3RmsqGh/aCfwBIM2w+RAKF2CEvEbMS/K/MfqrTYjkjsxLzQtVdvQReBGw75hDJFuhPMHBkxlD8LRkTwD2wO4KmIq5g9KKtMKwPVU/MXhgwB2WDERycLzMNiOThA1TaqS6KuFF2uTNa9pNMvZmu01VUar78Evg+WIFipcAFNu5phi01bVANVZGrcMVjpFVfBZX8D3MDGBfpIBPuZM1UJxpsTmrnIl7NU1dViliMohk2CugCsbhAUprzNHSJ+AysVOJj5v6rqsQ/LN5h3Bt0HroloLmqi5tW0CdKOra1RY8Zuo1jMAoOrgZRtBu1ZlNeZjxxusW2qKtLzMq1QtiI1Vur61WcjfVauq7UGciDRMlilQKqrn9H8QrtHWqDVcfpG1TgiU1berUBnlN41anll9LkQdIJHMR0H2tiJV2gQ1V+gRAiyoK1R2qQuDVpbZUhBB4SdRmDIU8hEH6qnxO+rjoAPhLVcfoa5R3CTVSBdXlsaqs1WBqr1XqqakEzp0BCuqVVY5hj9AOrnVTTLoNan8E0OOqG2oesuEERqh1UjkcNbqrz5n2rj9Jhr78D/QW1ZAVQBi+rm1Vt0eNTCQnVSBqIeqU9D1eCxh1WBrxMBBrA9BOrN+Up98lSAsGHFDik4PIAlNSkrlSWkrjUm9juMAYIO9BojfUgfdfsVsBDehpqhZatKAkYQgznI0s8sHnSkbGit6NYJTlHgStQIJvTAImQsW5dXT7NRy9HvDshmbJSteXjPTH6XStOqsutKYHhDmVqOK+6dRCKEOoshNQ/TJEPN9eVuvNr6W5DbFA6tAtQt4dVM0lhma0r66SMsAUvUxNZl4hCtToxiXuapi4Ekt+5nvSMSJftbNSpB1kLpAFVuJgste5rbwSiRRsIEtaUo3K7nkghQpspDXNY/KUYWBdGEIvcItfhdCNVMsNwjktqIfytAkGUy0oTyQtpQxxmIbrL4almEFVj0R3KRtrbwVFh8tRBso3rbKstWMQ6tcRKJ6W5CUUmEsMwukgsOvc8YiAlqXGjA9AlmFqR6dsQSmd/AgteMxxUoq9LJIvTG5d9rcFltrdyONqSmdCzgGW+SntaNqtpbZx9VmyR2oCHTHVp8t8WI2sXaszZPltIgBVakqhVQmKQeEjrfudyqJCDDN0ddHSflqkqLNUejYUGzBlKLiQtEcq9EcleUx8rpNoPLXsf+HPwzQQp4uYC4gfhI7lT3AosoFFRKoVHTqnlqCrHcmR5oRXz46WAe4hFltEbWOzqhlu4pE2PhsmdXBJiSYrqu8j9JcXHcBwcM6xBdRyKGdUrqxdbi5qUCNFRdRrqOVNdM+8jcFoRfzqZOjfYnZWpNuddhwRKjCpLwNTqsNhxR1kKtNR9Lrr7pe0pLhKbrCjFvS0CAHqjpXp5gaobq1RYJh+2ob0zym5CHKnPwndTxQZZFngW2qqdpwVNK3uQkk3OnQBZ2KbQ7QKmLSIPRt3ohTB3mDQzDqNnqi9T10CdbrCpqG7Bj8lHNHyTZYy9SgQ6YAGdXOuVh89d9yK9bnqO9aTqm9XmslKa3q69cCwG9dbDtpO3rA6H3qpGL+cH+dYDlgGf8LPlgYzyAJjD/qfIs0kuqjCKkBtFc3leqNJjKWPJR8DBNJDVSphJpPgYvDGpiSAWvqqiR3xA9E1YBFPGVxcIZjLWeLJEFIOtzEOZiMmuAlpKvcBDVeSr/5SepQKBfq7YKfIxkLLgY1W7t3IMdpXJLDQlQPvrxFK+Vd9ZvqjsvvIEDSi8/KKvqUDfTRyKNFiF9YIBjtCjIugTaDliMN9UDdWqMDe+sj9dE9moMLgBtAKTvWGVi7WG7BaDcTNW1d1ADTrQa67P2ryrPfq/FP5RGseQa39aPwstAIaTsHZRGsdwb/FZfQrIDXp+AYgp19VnwALttJD9bvrQQLVJvQpIbFidNjsoITIz9Uur64fCgBEkvrGQM/o0AaApSDWBqM9KacKDSob/lODY8DWcVeqPJqbfGDislcxwclag5ymsZrE9K+c0Ff8sGQc4a9NeIi4ldcwjNaIJjdEehY+CSAAAELTgKLzQo27IB/OwlB/cFEwgN7JQo+c4woqP7GWEzDGJWXgI5Tgm5G6QD5G0GH1+XApEo86HuaMo0UorqHXwDlFl/GfXyq2fEg8BK4gEFNJ2sFCR52f4GRUWOy9ZQg6BSeVRn7HbCb4/o2vKQY1g4VyAjGkFSd7FCnESGy7/WPvZSGOMQ3BMzjzGkfZn/JymCraKhaPB4X4wFOzhXVY1tQdo1WU3SAcQA40FIImCNQOwarGn6SDWDo2wCqY1dHFCk2je41mWGjzTYJo1qhJW4eHTrX6JFo2S3ZXB4wNSCTG1o3rkFyzWQKJj/WYNllgayAyCeGyEYRY1yQFmDycSE1rGi436QcIDlDFE0JodY36QV9iG+FE03GyGAoSVFYRMNywjYaE1fiF42S3UE1xQS43q0VY3ORLLWYSKU6rGjIz5akvopXVY1vG8Y13ifqlcmwZBHYI5LiML43i4TrUwnTNxcm+xA8mtKYYLf43lIcmzDGv4196fzQYSZo3Maak3MIHZCzG2U31BUXJHICY1/Gwp40kxU3qmolmFUtU2k2VjadA3Y0Wml6xWmvGAe4cnXZJVjZOqXSBjK9vQumgjQZiPMrvrTph0aJMQiVd9ZZfV5TempFL5QtWZmYSFUW6cM0/XQLyDKvdCezSM2JYCfJWNTJjz3d0198HrSFzSM1TRdWy2LK2Y5mgyTMGHj7TUdM2CYOIG0rdM3Jm5PJDMV01xmzPK1mr01Rm23RtyydShm+dYlm59QBmmmAnYs1ADGvcWjJRs39mmkjvgvs2jGjM1gEBo2Uc2rJ7qSW6Em6hQGLYtQLHdEmU6spAEaOFDwg1o7vqDc2qaK1gSLW24yIYep8JERZF3KU0Lm4nAW3FQ4foClBrm0mzxaIOxEoRc2hWQYKjE7ryzmqE1ECGx6mmq83yoKeE9XLKxaIRZA6HIgIompDzEJQw4TqFE2aUGlqGHZ/pQWuUjJiYlAeTLphZWaXpEof/ayLAC392I7ytQaZhlWYyDCJLc14W+00plDC1viRqxngXc1fvFC2BhAEmwWnJYDWEIX8yY8313JrQOBWNiX4gay/we6R/m3jQUWzc3CtJ+nVWQ80plL82Wmn81qob7gg3LC24YBRYEybyioWh833Cy/r7WHRA5EvnVwMnywIWynCRUHU2DacC1XLXNQyWoC0zm4i0SWhRa3mu02TIo80K4UqxgYAS26W66y0WrTRwJb3yMWw4H06j1nuW9i3FwGB5cWui3CtUBn8Wqi2GUcS0Am42COmkpXTmjYl2MPHZ2bHngOUwMJpMSVD74mFRRCYepcYcfBmRZ2WuHAAkMwDQXWoWQ5s6abAFWuQYVoJJY5WxxgdcfHEaC9K0plA+LkBD2XdUsOoCgqxb9UrBTLOMyKFBBurW0abDRrQq2KHKzCNWjcIIeD/zBIi7WeHOChOYCa3zdcQQt0tKEDW6hRzWinClW8Tx5WnPXAin9lJEK7AuWDQW8PLTSHoTl42UuiKlHZN59Wha1lWs61lgVa0fuOYp4wNKEw8fCogIaRlPBLDyIi3Cj6IclyRWuVV0jDAgxEB2Z+KN6yd3d+GG8HqyXWWBDrw5dQcWfOV6iDFgdmcmgw2jzAHwmCw42VpUhqkARE2FDyzOf6DT/DAjBEbeF8JL0zNHGBGE2h8x6eAhGsSIm1CagG2ZXB8ziYAljWIkSyY2wTwPqgLDS7cG3x4RZRE7Dm26zdZzo3YG2zOHw4R7PG1L6a2ZvmMCz/W5LFB4Z+CI2cm0SYWWYy20SBzWOW04I0m0WRZ4K6zWm2PWSW2VqpCy2vFuU/CJFha2hmwqeEuhq29XEG2pHRwonfBkveeLMzd6CzWcG774621rWfG2xoI2022ql4n46xEbmcmZ/yUJYgI2vBHWCeIoIhD4XWWnQwIym15pT/zFqh21Fpb21C20q62yhm2J2uSx0GTm3uoISy9i2G3S2t6xpAz7hIsGFze7fO2/xZG2a7bO1I2q1i67ehwQ2uFG42wLUM2822CRd628zY208RIfSt2+u2ueAhFV2+uZjIEG1x2lua5EFWhR2luYzJYWjsefMyM3Fu3WIpMJgsQdbxMQO0K7UoEU2zO0tzFW2RzFG1gRRzw9wn1DV26AyypOu1JzN4hlzNu0aOZ21N2jRzz4o+1gRKLDo2/e03uHO2twTXbDYdRKQ2nvC322u252vuZY2k+FROFuZu2ufCp2iebq0gO3AOiSU/BMW1CWBe0nwj1w/2je2F2qG3OQCmai2j21emUAb7w0e0h7Vu4dwye0WzEO0YItm0/pMDCR2mT6K0IpBrJD+Hi2u2aUO//aa7Eh092ve3O7He2q239A+0AdAz2y+1mIB5Iu2/Wb02+2A32imbX23u3i7O+1l293Zo2xB0f2oR0D2uB3X0IDUp2te0h7HW3WzAfix7NSZEhcB090Du1UOoSwMO+W3f2+R3pqoxy4oJB1ysNZb/wrB1vMzTx40Ju0ksyjya2m22h+QLyH2ux3+DFIi5Y823OO3WV5zQe1UQLIzf6DO1t2h7b/+XWZuU38h4gFEgLwJe114IBgaYXLEq8H0yTmiy7zcIhUVsl63ZYLNSg+Zi57Wkmy5C27xFLHrFZOt4WCS5JbwHLMarskZZmYeCroGOna2IRNajeImDSM84SxrQFBOxFa0wqVIjD1JfBSXTpZ5OhRZytbyjzZZGwKLD8xLLbbRKrfkiB7Fp39HHp3yXep2bjYbwdOqp2tO9J1gXIp3IYb613vNaUmrQyDqmxTr3Ekelf4clpaPc42kUZRzspcc1XaOR4KIGIjAPSeBMW8LVCa/Z0w6GHi3O2vDXWe83gW/RBQaTKweMQC03a0RSx0VY3tkcRCz03tTlUSW6guubLoCcWSrG86CyWzCkN4O5TV3NC1HOjPrw2Rv6d6XJCmTa7gPG652aAY+l3Ou820ivL7AIYl1WW6F0wYcNSXOlE1Uu8l17Okl2fgPL7rICl0oms8gAPW52Muqy0cu7SBbO/xEU6tQTKgO8zc89O4BAEV348sV3Cu4fF52JIqtLP1RiSPYkd9OlxqWNhBD81qB1mEFi5PZ37CLMYFrubV0qytpUofckmD9L4pqWKTIRkvhaIPc3ky/K13/Au6JlAuErSus+762Z37OukM0T8rPnZLJDRISROC26OA4RmFXhqu7O7iups0l2XDB1E0N39mwKQQq910PGmN1hdfsxC0/Y5Kus3wRmH+LlQt11yucc2yjE2D8u1Ukz3WJrVXHc32DTIhLm6y0oU/kjluhhERwfroPGhF1AWsigKKglRTw9S2NwB/KTqWNjYum2Apycc0/6qISf4ArpsqBZzu5KwYwGC5Rdut53CwLhXEWVt0wWyWCVmd1XYW2OAB+B401uwOCrusyxsmplwZ6B43Mu0t18yFVTdGpqYqYUlTHu/JYptGK7nwx117wKqDPm151QICOCbuyW4VaKd0buvC0h1Oi03xZ92funs23u593p6Nt3fusy3QWh1RVu6Gw1um+J1usGwiWqwYV6XJjBW0t2fSVi2t7Jqa9u9l1MWx+Knu0k1sWt+6yUulb+WpqYcyWbyIewYa7umD2vm/91mW9d3z6kD3aW/N0vkme6FYdc0MsxF3pVA4Wy3bLT94X7AcermCwerLBbdFj3hW/U3Mekl39uj8ANYA4WS3Al29G0T0vWOWUsPQbr3u8T0iepT3iW+l0n3KT1wND4GP3EWEomxk2NGEVDN8wj35LBzDl8zawyexTBx87y1v3MTDjWkz2UwLjD6e6hCGetT1WW7d1A4LT1oUMF3PVTciKW7512erxg+WFoXE8az09LUd0yYW4AYlNywqe9bDGe2rRTu1zAJzci0phJS2ae5Kzee14AMeh5kJ6DaG0u1V0muvL3APX9FG4fZIuWM+65ur/xFeir1MQUiCxoo+AnA3sieQXEEXQRr3k8zSFo8/L1umiUb7FRIBde1xwO2RkoM0Yr1ird41kpfgH4ugBDYlPQRy8MyyVe7Up9e+520rCfKdepb1pjTPKqw2b3a3DBx66YI6LVB43srAfKBoF2gHe85ARo1h4k8eN21QFEFSoOF1mWYXk3ewWBg0U73zEu5KlNOdRTwiuz66SGr1unb0L2cr3jm9b1X9ar3jmq0YT5MXQ/eub21eyApS6dZaTe3exTm0z5woq2TPqOA7LuuFHPwYB4r3dS0Y+lo0jmNV2Jqq07XXCHF12B1V1gncgL4s71P6tJ7PegSwPe0bE5IlGTaWGQScuktjeSaYFSCWOzk0XmSMuecz0+0TEp9BiiU+8OYxMQPHSWG10toUED4cLH17LJdBS+zH1n3Y2DdujkDXTRiw3oRZAcgMmTcWJ6yHOtn0/sxiy1eq1VF9D7g7SypCIQPpj1KPH2gYm524+kb38+6J7S++VTTeXX0YwK306+8RAW+6uB4+2Ngi+wNgK+8c09eoVC2+4c0E+wNgo+o93LezdKo4in1ze9X3U+08q0+p26G+tTFM++H3CJPX0m+syyordP08+k71Q+l32C+2bxO3OP3RY1X1bu8yA0teX3e+2X2IIKv1LewP3JOgx45emwRYmddAUKB2jUrMGJ4QD+Id+/uJKQCOF5CROZmxDRD7yShDLrIaJt+nJSm0BcIT+rnBT+joDEvORnnIHJQ2iYl5gxTyBpfQ1DBSFZzy6Mp6YGoyBZg4G7PxbfjFalEw3oO+In+jyjiI2EkcG2VZgxAKBFwrf0zee/1z+iJSr+2mLJXMokDaE0gyUQ9BhGe2Bfad2TqUa/3NwzUpD+s/3rocBLbGTv1n+iyDPxaAP9xPaDSJMAOzMhzB+u9JTJvNcJgxZf1v+zJ3iUEw512TA0MkVRyexBmGYGqUjQxWXqVA/f07ZcplFoDwG0GtbLABqXCM5ff1MBs2JTemgN3+62Ij+0/rb+2f1f+9/2qOF6aCBvAO/+1uBX6pUiBMtXAABlAOtUBYaZofAxHZHf0BodeUIB+qhUB5WVyBugO3QMgOABrAMbxZr2YGn/0h04UJfOLsSIQCYwKIwwgWBqfXfCrTX5ZKxo2BqRCIzYLxOgXubg4lwPH8sNT+XPTWXiVwNxAdwOsEPRK987wOuaMwO0EFWVzkKwNhYYxL+BsIN82cJyhVVo1ToR5g77R44SALR7oQBIOGXJIO3MTWCA8Bhh5B3mWpB3w0bgjnQXCbnwFB4zFFB4nD5B3Gzb5QVWZ6t1LpBiNRZBkXqhlVoOhgBoM5B+BxdBzIM9Bm1IjTWpDdBwoNlBnWHCYpzDYAQlyVwLPxaux4DQHRoNY65oPVRLQoEgc4Tb5Bm5rBhYPrWXoM2ESYPrBtzCbBwXwJ4NMaPADYN7BnBjbB6YPz644PN+a4MWQZ9BLBzTXY6wy4PB9fZ3BhBhcPIICPB5iCXB2vzzB6YMXBsvyeWAkCLB/4MB6aQGnbLakIMKEOrsGQUQh/+hwhrKrV6vhiL+FEOIh3wBZ6aEPV6jAjohzSyYhtEOL5BEMu8IkM4hzEN4hkYyHoAIOQh3Tgp/A6AUh5EN8mAhhkh9uStcQkPYhsMjUhhhhwhlOKd6gHkrB+ZSsh6eQMh0kOchvkN2BziVA4zhnzaEf08AaQYTGXqDf2aaDe8PAnN6jiatcb+yPByIiKh4nnMAbUPGwTEPqFOUMGhi/kXbXUSPAGeC385YMRKx5ZS6LUMKhnuTZAh0MvDI0PCeE0OOh2nzOh/UMs6t0ON1ZUNWh3UP62S0NggwhUBI0oLvk/TFC7SMPPoVJiVsQjCEeGaLbkCpHftdIR3RAeiA8Q6IXRS2hZhUNHZhrmjOyuERRhgHbmsTVHFhxnbUXI6IkUWNlkjVGb00HkNcIVc5gICkMkMOsMfHeBa1ho+L1h8YOZs1sNdh9sN5svsPJGZsM9hzm4gQNsMAnZvysbCcMUh6cP9hycMIMOcN0nRvVCy14Np+IcNYWBsO+IfFEjhgUO2hsnzzaNoMR0oGbAcUMCogo0PTLaUDHhpLyHh0MDXhtUMD6hJLOyu8PGSUFZSoM8OtQN0NeDF8PrUWnwYuH8M3HVcOChxRr/hzIP3hyKqgR3DDuoC8PPhzIPnhk8MdoOCOfh0cOwKqxxUbGkMSEOq7oRi8NYRsQStwa2GhVEfWSh2kFrh+2pEsdAjQsgiPPnSiMoRhJK4Romi1QKiP2hfCO0R2bi/XD6A9VYP5JediM7BuwRGh27iPACGC/ORgaCRsEAupeI22EnwD2ElgCh/ZwkR/Rc6LeaRgN0xLzQ5bXobMfZVzyVSNKRk/AqRxSPPLN9g1kao1POUPAl/dv7l/JiWnvYwGZO9SMhZN84NtNEjlZEyNRE0v45FJ00CHaTQKxLW79md0YPELK5sWBho0Qm25M/Z75cNMhocaYKNtjHjHa+lIhNjcTEy3Z97Iy9cT5sBYFJ84BmHiAqAnAkoX5jKzAacAh7u5TIXJRh3yNMrTRsQOKMEqQCyGreixosAh6dAwoXD8PGI++Sr5X1RWm+mNmAhR3dJFYudTBRNmU9qTyO5mMZnyAjKMp8sZkakQqM1RoZmPqWrHTAkSLtRrGHdsGqP9OmwoLKxqMTRkZ7j1HvkzLYepKFHcoH4kqxQAzqPlRoQwOBecRQq2B6NjSDSE8DtQRRoTzbRvyNtR+bqE9cZVnR6I6NCUFh5R48ZuKEUirAskYP3IYgneC5TNHKTTnQ7aI++MRkbSFui5Rq/EjOpDhjRlaM9RsIZTR/qNNRm6P1Rn64zRoq0tRm27dRqq0WFAfkjRwTjrRoqNgx1Q5O0hnmtLA624x1K4/Rmup8XRXWwPD6NJ1MKPEWBwgvRtlykqFmMoxjCBvRgSxyU/o4Qx1YH2TSVZ/Ry6PPmSwxEPYWMgxsSwaQVTz8xzKMwkII6vRpmn+RwoaIxnaWLR3MhMxtWPtR2mNIaZWOrbDzGTqbyMKeATCnRqWPH3b1B/gU2NixvRhcYZaO78rfbucQKOix+RnwVEroNRyMxOjEOlqyCxDuaR36/hmRHex1J0CWCgBuhqHBTRHPxlcKJiR0x0ZBxsSziIQCP2B0iNBkJQrUiCBzJC7zS/cCe6gQP0MAEi0M93JFDeaAgjuaL07tkUOMow9shZxhcMtyYuCVxsuNtACuP5x7OOaIxGDFx1E6lx1iOvCouP1+EuO3gQuNoQD8PEQN0P6wVuPHE3uPNxrpVIRweMdxx5ZdxisBTx2nyZxyePK9G0Nmw14XDxpePRxoPRzx5eOaatyPCbG5yZSB8Se/HYTzwWdluyGzJu0ZdbJpT2xJZXkipHdH47CEIipPG+M7tEQx7eCIooyL9q6ce9Ks5MoRQqB4gPiM3xGig+MAJiIqx2ZoR/OH+N1ZV+Og4ktJhCujpZ2WVbJpA6TyiS+Pvs8+PTCD0QhEFgLwJpEjlCbf3IJmQRK2loRuSaDjHx1+N3xnBMxPHYSUJhZ7UJ8dpvxmaEvx8IToyalbJpRIxkcWhPXxk41BCU+PbiehMQcXX5ccNiy/BSWRIJscSCwdSiwGzWbQc/BAnDaRMmKDYVXRMRNwZdSRVUSDgzeZNKuSWZmA3Yl7IJ5CaUiepSXELhpEJ4TK7jUgpq/BhOIyFSgDHBmgEdVhNUFSKKaLXG7KBiIrLSPETmyGxOCaQBBxUCIRABj+NYrULhGJ0DgPxoISjciJ4CJwNoGScp6fx0YaCMNhMmJ8tp/BYA1HsmnKUQFxxCJqkrkJwROYwPdmRJ2wSuJheo8Jl4KZJn+PMJjJM8wLxhZKYpPlBFJMfx4pMZJ6xMRMaBo1JuTxT/ZpOhJ15Dqh90RU+NvFLmdw22ESm2zUfpN5+cyDdJm4C9J4ZPjcjvHXOSZN3UEZMwDMZOPhtiNzJ6irmQX5yrJh45RHUZPaAZZP7hIZPzJ0Q0xBzK5TJiIgzJ/yr68cZOQeX4B3UXl7XsY5M3JtZMrh0BiXJvZM/TA5NPJjZP00NvHxlZ5NXwJZOrxCSOJGgPRMBOP61gFZSvZZMDpGlwmLnIEBBk/P7hNXgAg5IEB71WlISACZpIpqHIop6+pophkAYplhiGAOFP31c0x4pyFqYpxoBAgOmDkxzQikp2dTIpqlNzYGlMig5yKaRylN8xTZDYAIEDMprGD0p9lO6JLlOFmY6Kh6QlPwpklMHsIVPIp0VNB/AwqE8XlPrEDlNhMZDAaGQlNWchVMUwlkEUphlNK+6VNhAYJi8p1BLapn3AHrZVNsp8lRrcRVOyprFPJvSzGcp8VM7ofVPUp5gACp5dT2pq1O1aw1MCpubA8pt1MGpkRCcpxFMEpgVOZxByO0pj7jIpp4iiZJ1NPENynIpxeTWyKNOayN8Wxp8PZYrBNMOyd3LJp/JidAIIACp2CDXezNPGQPFG5pzpDCpvFNpzI/ICpxEjWYZNOZXIPSVpypDaPQlOTyfuAJpxbq+ocNN4LCIgJp/FjehDtNpnaVCtplRR7YDtOiKIrCtpsGgl6rFNB5VCwJp9ZwvwDtP7ZL+gCpgOZkgqdOY0HgQJpq8zjkEdOdyUKoCphNCWpDtPlIu+22ps7h/BrFOEYJuDUgAVOua9yjJpshDCuhNNiuMmD3ppYTmmG+SbGC9N5QKqSaEGxhYrH1JNp5IoA5H3AZlTvQ1pypBBAaNOhoDtOHSfzxQZwNPxCO7jSpgkwCuI9NCIL7AgZ6swmp63o1GD6Ao7QVY5/INOdIL+jwkfvAgnQlP1acXB4Z3ca1QbDMOk8HDSp4VyorDtNNapkRGp5DC/hijMzOQU5Pp3OQIZmjOL+fdNCJOjPJlUNAJp15rkprjPIIcTGtplGSqtNdOsZkyOeptqalpwEK4ib+y5p16LDptdM9p/zy5pyUS8TLjML8JppppocrjADtPBpj6BBptOj8ZyzNOpgNMg5f1pMrKzMOZqHJOZzRxpp7mC16RzNWYLmPyAAVOA2RiNuZjnaF62dM6wS8A+Z/ng5609O2KMvCRZrtAv2G9MZ9RkA+Zi4T2pK1zWoFFH1KNki0ERQUpEHzMtqyDMPAjE0FZogoTxkTQOMZVOKq+ZrSp5Ug4KtdMdEo9DSp0orQZ4LNc6m4jNZmzM+Zy2x9UH3Caco5g+Z0GgKxHVPpYotmNAY2WIaaVMkcPfmPZVtqJnaVNbp6IPBZ1m40kaVPPEStA+Z6LDPe09PCufmg+Z091KZnx4GIfbNEFd4Wnpz2kap2bMkKCbziZ8Em7hq7OL1BNPzAvwA+ZsNCbQNbMm2ZnyzZ4iAUQBbPh0DiA+ZqaJbSaVPBEKwzBZhPIGIEbOoWHzPtUa461ZgxCaRpaBSnb+zwZhHIaQ99O54GNNQ5PfSiQDHPKgSfZo5k9j92HVM6wbmBo5n/UEyEHOsYMIDk5jOzUgDLN4QNHMXQbKBPpmAyWB7HP3NQ6Sbpk41Nx8bNAkGFy0EZdMVBdsOzZ8zam4WTO9qRHPchQtMJphmBwwQHOW2AwT6Z//2DZ+GgVp3qAq54LO8AZzP2Z/FMg5KVP+pvXNQ5A3POpvaCNpqNhC8bnNtoZVMW5tFMWp8jMG5+3PKpk3PLna3P654lO65slMEp1FMuZo3ONAH3OqgP3OGAA3OuZilMh5vXNo5F+hAp9I0PZf7S3ARFEIoFI2bAMfAZgEADxGhSMZzZaSzppeKih9QggIV2D+ZhkLpYglNEE2mxrZtkyTpvPN1LB4A+4N9P3ZxLVMWX9OkC3POu8fEYY56hCeiAIl7lWvTl5z1CYZUsglcpLA7ZimDBrBHJPEfzQ5p1AWd57HOZ5lUCnp3Zyd5yPOAojI0JGmPOTsYErmmPhyGQJPPQEdMBh/FfOLnWCrgpGlM4aDhFfZ5RlZ5zlOXOM8iaRixWJCQ3OokKTLu54OQYZvFPxAC6Du5hFAbeXXMLsugAg5ZCrzwXXO453VT/5yIqX5t/OPwZVPp2klE/5wbDjGKHIL5KqC65uFwuwUAv80LtOG5hHPugBAvlqJAsP5mbNH5xdpOp0/OL5iIBR5lfOSRrQzlYTfO6ohwyvZFPP75mFNZGoEDiQWOiC52gU/wZFNsWLFaF5562IuLgtSoZqBWZxVXzeFFEsFuWqEBp6g4kFgYUp47zK+BbMoIAHNYpkcYEZhbO4YfbbKFt4b48xjPh0FvNAgUx1sF3XN0ZB8LIpjrZj4fzMVXfchfZ/QvtkwyCC52qGn4AQsrSGTOG55LPHncQvauGpWG5klFRxrFP6JNqAkpoDUEnAQsxobQunpmoacFpfOApigvApqgut4BPPb5hwkQotMDMgNPMH55gtKgPPDuQHgAMK5hCxpmArukfUO5FxtMMgAovp4J1PVW5wQmpzIuHWCovFFk1PSDKUh1FvZ15FzQsKDTWDEF9io5q0wuI9ZhCdFmTSXZkEBncVm79FgCAgFrFNmDJotX5wJwmFiYsiGWovTFzhGcFuYvWyejDfAUJxiVHou4fWRDrFx7jdFzQvbF3LOZO1AuaFwZA7EQPOrTXwsUpqUyDWYBwhoC4FiF0VxutC4tSkb3iEpmSxeUeMhLQLCDXhLFMp2TJDyAYASiKDRDIpwyKgydvML4OsCgl6jylFMVP1xSvOEp/yKHmjTMo7LFYmp+X6xCuEvvEJ/N/Fo4jGzXXPXCOxDQlsIxOsXXO+CaEvLSJiBGFgi0fgaEupEc4vTF3OTT564tAZiZCdFxIwnUEIu7RDovTFxkSrTAQvEmJvDTFj0p0IHovtF+MhAgDfr7F2QsvDKYtEploslFkHF6UElOVF1ouapy8gjF4Uv+nADNspgaYaZ9BDPEVlMd5TQA5p6AwZlMQtFoK0adFuwS3gE1NEMZUue5gWD8hkVONlFwt4ptMaeoSVPrRfmg/5jIzYFsPPelgdO15gZD+lwlM9lOsBfF3nw4lilPhlldgOaHhA6ljmgboZ0p/maUsul+wRBlsYgjoawuZ0Ifpx6Dh1HwZFN7DYwTMALGwAIfvNAgXMtZUD6An+2YsBljMvmmBNjbkC0vwjMIu1l50u6lhmArsMsvLFgMsAIMIsFlj/NYppMualrMvjF+suRkFMudCNMu6lp4QTx+Mszl1LBMZgku3eUMtspwaxUlw3OOUb9C8p9soRlowsJQPQualGIj2F3C07lrFNb+vk1blp2IIlyUsg8SQKdFloh1llVMUNOwSjFraImppUualu8t7FpQvqlytDfl1UuNpqULlInNNAVqrM6IUCv9F7UssZqqDZFn8tjFjssx6z8CPl/vRiFnGheZ/UsciK4uAZx1g+lrct6UVdMUpw3Sklw3N5ERwtfprbSkVtIZdydCu8VFws0V6MuAZnUg8lhct/lwDNUVoUtsVnUskVritYQiisUpmQUPKRsswkpiv7pmNCZl1MvsV1Lg3UUyxSVgDMyVogvBl2isdp0VCalxitrloSvfl9PR6eCstbBK8t4p0Gkt5+tppjCwuYjASuzZ3kihnIwtkIUMvmBddDXpywsnFvnNOxIUwHlkjqA5soG+5spDnloQgj7URSOl6YJfZllQuUGlMFgyMJo5tVGuwR8uJwBEtPEaGCC58iAPkrLOQVoRTQVvwDsVkCtpVzlPgV0AszLcAu5VnAv5VufM/lmCtQ5YET/+/otSZdiu2LDVWmlkFgZ8G3NEuMmKdF9QucZtOSuSRyutcMhpfZgmy8PLqvTlmqtau9kjdp2XCBQNAscIpdPTTVvA5/BKG8KWdMbCcas4F/JBTkMLPJjc/Me2e/MCpgQCbF43ObV1/OQCY4ju5mN0kZhXWgSUAv/pviAKFjnKgFmmj5CBbM7kFvPZAm9AKFjKsAZqkCmVxjOnmd6sTQIXj05sA69lwwDxlOqCtAVyY4Vnvj3RQPMc5Wav2FcovopvKbwFxoAVkgWAXF/8DCp3Kzymi4uZIEEt7VmRbZV3XpvqkHI0pdlZN5uvMEp7MxkxXgvqWUMsU1hxidFm8BMVu2LLSfzNv60fN7V/DgL4fovyZFFGSo2v71V38sAZ3msFV+osg5a1VfEZovGiRtNi1jAs/lrnAt5oN22KFmvPoazBfZtrKELeqvWgWUY5/X9HWVh/OCUUMvT6W/hhViGSjjEHJc9WWxdV8FJ/lM2tbWPli+5/nXkZg1zf56Yu36diuEWWuxWZ7+BLpYVOSWTK5K1yi3OVwwBKFCNjXphNgq1kHK5TFmCJVqChwuCOvAZAKtbl0zD7o/3NZ2SquG59YFDlxoBix7Kuep8pFLVxoBinOmvopwasAZska2QcsDyVm2uHscAsyC80tEon1yX57iui1k9a61putQ5ODEjV09NsbZ8uZOU8A5ptXQvyYVP/7Cez91mpBplm5QYGUOst4RiL956WtLpsOuB1uev+ZwqsSEN0lF1+UuS15VNNIO7g150qtvVrvOJGKGD9FiewHgLvNTWUCD01+VK/FmMgdAbs6LFqKL95jFQHReUl3l9Wg0QsfNYG5pCdF2ijmbD+u0UdetfWcCC3AZus8CNytkVk0GaRpG6d13NMJUBEuuCD/izptUDXkm+t2sFqunpoNzOl5PHRsf6thSJNPY5uTRRe/6vjJZOsD5o3jjkaVOB0YOBn12hSrcOjCI11vNOSMBsjSTQDSVgimac0GsI1hSsIGsPXF187wvZmfPuoX2pFZ27xLZvPMJ5e/POyhITCpuF50CQEt8LMNAI5KphbVm+RwuHP6dVIbO8Fx7jnp90RI2GZYollu7Mlm4B+yaQTG17yahl+bJdyYXCG5sxsoo+bIQrX3NqohpJd566TUarcsnUDQur1nfj7QT3PJSLvMeqqxt4p1BCB1swkWIF+uvdNkzBVpWx4FvFOHmwxtwvaWgBN7/UWVswk8F/mtFY6+ut59y7r1qUusNteu71letGN6YLr1gpv2RZCnXpkptlFm5MlNw+Zp0ZIAi1lYtZF80y5VqItcSzIk2CeLhktHnYqQBBPesAg4+RPYnNARiZX+fbjiITzjPhHvA87DjOewO4QMUuXa33fzh/SIvhJRcfChcJTgEHYGxIiLNbX8Sagh4HYSicZZ0qY/wHGcbXOzet3hwPDTqdNnGFHNm65AWHnZYwL+O9N0naZRSj1ZcWSU87D9BIdJ2xLLCtH6aLLhoXJ7YNoozg3NiOyJJRWEXNxARdN5CAIJ/ZunNhKIMwntrfx19BXNzUIuUMC5o865s2g//h3NprVBJjYz4XHmrfEodr9SlpjUxeYlEto8yTN61DTN+IQTNwXjTQsTqYt9ZvWosjiotj62HNzUIuwJFuRic5stCdHZzNxF34Jq9DLN+ltkcRCgXQSluDekThEtCmA87CCAQJ26TLOgltdcEUH2obFs6ewYTxgi1DItwDiDZb9A87XZuqhPC4i7XprTOIZuKvGWE6e8ZzEt95sQwlZwSsisyytor6BtMfDQXHFoPRQBQUtuluZugpNLNnZtAW27hGtpKIGtwRPneZXYmtoITpUEq1+th2Lyye61ettUHCyRVtut/OKJt2FsgsMltAcWuxxtwPi2tqJMvbEls6ODyi6tsS7htp1o7XcVvatkpNmt/VtwPDJOht2SKltnEL1tmtvz2ERHARk5xoVIFY6JT4M4EVT5I6/hsXJgFMwKxwPuKLtts285MyI/y5dwN47dtnZNXJqdtArDh1VxnpOjtmyPCLURs1GodvSh2tZeObnyhJHtvqEPtszt8dt/J8jBbthwNLuI9s9a7dOzxK9uJa4BuLJ3ZMroy9s+odqGhOL5PeYN9uJnOdtkFlfzCARAAeAOcDbgAgBjnHACTgWI3CypECUcp0ClNek1hlOMLQiMBApUUhXMubtTzqVvmSGoRQDCISmpw1LCSbKdTf6TDuZSaESl4E32E6cmRidWgsU+8jszzS0Bv0qAPrRULhZpFqiYd44gocchZMGTDvYJroQcd573wd96owdwaCSGorFAt3l4Q20HTEdxIEYd0HTcd9js5NODueWAwMwd2/iSGg/2EMmDtdQSQ0UByqoPU3HladouSZcM4rhULTvlyW4S1NREUmdkUi3CGWwWefTsId7YEI88RQslaUiZcHDs5KXtI4kbUT9zZDtvYoAOId6TtUp8f3bAzwTudqzBGbAjt4ujdkUduDjMdq8iSG46JDG04EZ8f/ViBuTv74E73f+yTvuBwFgWfCQK0d9wPCBTA3/gUTuMtU42Zd8Ltid1/WpdqTs+d0dRBdmDsBd1DvTN7zsKdpruudncytdhLtg4TtQhd3AMuoUbARdg/WT8fDujqGfTGBrLtRK/E3ldpjuXpRyjGBtjt0diNhf60sMDd2LsIJFyq1ESkRrdgRTICOMIxdsixxd47QpJtLsL8zA22QBrU1duDslQgoSE+WruA8X5stdg+VUXU57+du7taxLGD7d2DsHyuBowB9Ds+dn7sXd5TvidgHscdW7twd1jb2dhrv/duCGMaIHuIKQMJkrOTuvNMrvT+iBNXgQruXaYg2UdhYp8dx7CczRbsWdy7Qv6jTJYGWKij+xaL+cKjsCJOsL8zOjvHQanvY8NDuk9ubtTsfNiA9qnvDfO4AGduTvN8Z2Fc9yHvDpWzs56cuSGdkFjT88nsjEMGBOgJdLUdtXS096Xv09znu6NtHti9qbu5h7j2JAlTs56bnuXd77v00Xj5I96TstOynsgIYHvUkgRyCdl9Dk9kTsEddHsqOcntwCGbuusXHthdmbv0d+HvEIkruNqFnv+g/HsfUxXvW96Ygk9zIif+CXu8kKXvM9tEja9vbua98TuG9Nf269iJRpuX5tg9g+XCqfLuVdkOHVdjTsj8LPv9d3eCnA07tZaCMgF9yPsew7Psc9rPvFd23sh96jvJ9wUgfU0inl94gNmdg7sIJJ5Dh91vvpd4r4d9g3sPUnLt4GqyycIrpMWXWfXguFYp79KNilU8N7pKdFbH4UIBVI/7Se2/SCGlHg0L4OSDNKkA01gyqkZI8gNb2/SDwoaRIaRxyZdiDhW//IvhyQVfuYG7vAI8BfvQKQxo9WAaDwGpGzdmdE2LczA2gFP8Q2vLfsIkZ8Sq2N/otghKb/9yfsh9zGrsOTfqX2Oe2lUmFV4Glxr5mJ/vk9x/AjU00qID5fvjQQ/tSQS+xM2wPAnFUPD/aOAHvHd/tL94/Ba8LxVz9yCgoD/AeL4JkrH+7ft6IdfZ+9GCIIWdfCb9/f1625PBX9mbR/rMaCZON3odghHikDohQP94IYz9zA1hSLDGQ2CAdUXNswgUNrkf9tR2NIY7wx9QAcDU3AdVdhFCwYifs/4SAelC947ZcU+RwDkDEY2Vfqo2EgekldhSmDyCisDrAeAwPBJ6uVAfH4ZvYD9SwcGDCGKz9yGwR7AyUtuY7QKDvuCL96QdP4SgcDgmVw0DlLs39tsROD2gdBFC+4ptPgd0Dvwf3930E9u7wfkD8VxyD4gc5GAl4kGpIdPuiiSyQjG1pGIIeJ4cNxNvWRSpD7wS6C1frlDgyhuDhwfhub/vk99/A9TNQeYGv/DbDZUplD9IrrtM7T6DuocwjUQeeNDPDMNbN2NDpm1RgjEh8qHQdZgg6xCD0AeFhDcKJD3/ucC8wcCJc/tVUGYfNwpgdNuMYiTDpKu67J7Rn/dv05DoHS1DjIcwjBodnDiEYtDqgfjDrIdEBjG23D+wen9ffvZuDVzX97geDTdazLCHweeDgtxPD8ejN8eYdClJXtykaYfXDwwcVOMMEQDlweitNcDCAOYCuRqK07OmPB86DFhoDlEdMiJkxID5PDL4LEdoD2VzqhRoq0JdxQ/UfPYf4IVx3FEBZB2gAgd4RWbxFJ/C0jvNXhDuD2UjzJzD4AvClI9fZ8oAuB0uDFgEDoeZezdEfgWTEc9O8IWyUVkfFDp/Cn4S4Roj8IWgJZNWSjquC4jp8j4j5/AF2skfIJPRXHCKkebCk/BosTNUgEacG0o9xLNHaQjjYSkaHxKtZ2gRH2Wa5IiO9UqTiyLPCgke0fWSXVQHQQaOSzEikaYGWNhd/KQEUz8p3EEU41SZ4hGKY6jxSQRCsUMHCEFL9xN4AqRujkAEt0T0fHSEMet1F0fokJMjtUckinuXYhjuFCp3ELUEUyEHjJlO4gVBFozTTGsoYA1U7wycwKgZ+nBKkXOTokK2ujHfXvWneIi9EFygakV9i+yHyTRsUaMhIAsh5jyDRpj+IgZj1TzgFJMciglMdBED5LzSSMflKD/jAya3rcYKIgtjo6QEcFWt1jtsFlEK2nlmysehnOog7jxGQlj6M5TSeMf5jgObzSRrAoYc6HZzWcdJ18kjDjycfGGu4byTZWQwl9KjOjz0ckkWXTXlIYhpnN8eokI8eHqLjwywdmS7jkDQzjiEhnjocdfjyDj3jmCfgkGosd8CCchIQEiyGEmQwFDwPfjlCrQkf8AikK0hbjKcfzidZwVyHYjMwD0eITg7jMwB8ewTqic7eRMfgkdgyhSC4BwjhEfpEzRoTx20cdcdpRPSH1FOjsOqOedMcMcBU3EcHNVmyO1odjsOpiT3iejN20gqRePOfEQzg7eYqyJdeaS2cIWCfsPTzGTJ4gBj4dB/EXyRLDXM0r/WLUOCQycGSSdBDJQsf1QTMdbob5K+yJeIAwZdCgefIjv8LnV4YFu55wHaTzfFioeT8Sc0wSSfeoDomEVEcfCTr/4FID2DpjqUD9C+TlmcbccmtwhmiTjNrokXZvuj51CCT22QroQYjpWBtoeyfCDmT/9jQmNcel4rPBj/BMvR5B/gy6p9BlTiuTdNiOQXGNSi4kb27tZydD9axqckRXsfDoEye6yfyeLqNArsIXWSpMSvAr/fSeZVZva1jlq2LtevhjT0fhh1HicDTh8L1WjEjx5wEg9T//46WTycrT7yckx8EkbTkxq6T4jiCTiEi6p7hXcTqOa6yHcjesNtv7h+44slfMg6V3b4VUXVSzsL/lcgtBjPt14X08O6fE0h6eoYJ6dhke6el6t5OKNW6dHsF6cZxsqShkJkiYUQGfvTu0MQz0GffT8Gck4CsgAz0Ww2jinWHMaYheggNE33W4ug2NWQERBrCkJ8AEAPWLmr6kzh1hLJ2cXWgPgAwtOY1TOgEJ0/5CPBmeaJ0cIRdBrA0zl0r5BBrBMBpQLWoTLm/FCQFzZMKVQZRCI33O/X6cMWdzQmqxRhNuXqYIuT6BdNCxcrfWTpX/6b0lSIizEzhUXUwkazndIAjoR6ssPjO0zliLyz8lRugkiK5clSVRhL6w9Rh7hYz8AEeRUiinGTWd8zllPS1FWdEcOWfSXdpNaznGc9iXA3CAubLOzvWdKz6GHcG32eOziAntJz2d+ztXjo4IWcERf/GX6yWexzvcR1J4MohRyCIi92mdb1aWqyGojguNb+6/Wd+PD/e9xNGziTCAqhKv4jGwT/WOf/4+Oe1zqueEQYmeAyfhK7kO6IyJ7ALVzxg3aA1Oe4m9OekeQmdv9jMImBaucVz12cfdkChDSSyhWNWNZ7kQ+OCgsHRNGvGe8BR2enkBecZzyChIAztludMTgsT+EeIjjidxgDGfctxMa6oUojvENOcKmc+de0VU3NtFUp7o6zA343lWmcwWJJkVCBmpddKt6qaIfz1EXv+GEg0kD+ck7e8gF0I/GZESdoXkNwTspD+deiyygtVRLBamn1Cwi18haIAbGC8P+dXFEIUcQD+dLxNgVWIKLAhUl+fxhL1hPzvcTioq4pxkcYBXzqDL4LiMh7icHZXFAUlKYCAkAdB8SPz9+eTUcjrlidhfjAf/F7eXUo8L5+f8L+LmQ2UheTUFNB4L957iyVCBpzaMTvwVzVLGrhdwLlDw7Ef/EPKbkpvzqheTUMrPNJwReoQExDELqag/z7RexTthcmYDMqqm8NGdszlbg4fRfxtJKiE+LnWNIQyJ+jV8gqZDQHaL/DpmL2LNsnbRfkLrigEL/Rd6dV8iUL5+d9YZLmiLjheuQYBcBLuheb4r0X/znxdhL3DpuLwTBgL6ZCGckSGPcEKAJLyBdD4Agff5DRdQL/BSb4ozqQL9PAoKbRfBLh44VLm00zeB+eomaBeeL7Sq6oWojLEOxeuLh46xC0NBXT1eMmj5EpnUNUsyIrMSxEW5NoHGGfDtgPjgmW5hWUbR7DL6ZeDLuZcd+K5MjLmZd2S847bU0XZrLmEkTL7dsJJLZcLcOZcu1BZdjLzpC7LyDvQ8/5ikZucwhvSJnzBGJSe0WRlw0fxS3Ly2hPIF5c60HMOKkSoKzTPh34qR5f3GQtZ8qOLFiTythU+HkJtfOMNysY7pWYu5eUIIpG6Kd2ZxkOhy/LmFjSVDpQuXRExb+5vBQKGEyDrYFefLk57h9QfB3LpfXo0F5hVpLNIpI3CBs4o07y2iThMRBw0EI2wYgZKleTOY6Zj2+ymwr5SV0rnBGori20dEokKErstKUN5LHCrt57inAR0UrpnEQyJ7iYrn9K9pDFfvRHHinBrlfH0WLW0RAUkF2oqYHzTGiw26oar0FkpWY0gHtXF5f8r2iJxnKGiIriDKCrjuGLEE1fUh3RwGr9V5Io9leW1YV6urvleJKb3aOr9GgZDMkyHWr4Icrt56Wr5eiuTJO2Sr+/CZ0UdMTzI1fqrntJ6rpG3+rteaxgDXj10N7XIOl5gEr61dkvUVfn4cVeaRUNc4rnLWFr4lfwKREy5lr4IMrx16CnP1fhrkvG1r3mjlmKWr50INfur8GgTdXhzOr6V6b5YRz2r7XEd67Zzmr1WhmrnNfE3MNeiKRdI29fGj9axdJqrnVcdrtNKG25tenXJddW26NeORRiRpr6tca0C2iw28tc/pVrrFrqtJZrhm3ir/edsTjv5Ij8MPoCH6hhgr5e60SRxluiR1FryOj7chiPErgmzk0NOS6OZmyppaWiT0P9dIrjZI2OCvTOzY5Kgb99fKOQ4IAjoPHQbxmj3ronGNrvOjZ6lubNnQ2gDoHgVgRV9e2GnEz9zO9cYkFVf4blWihioOgP64Rx/SLFeQZYWgpWSleX0dGiIbstIAbvGiMbt55BZOei0bmVcRnTeaUbhVcwkQ4KkboyX8bhDeEbxWiNvI+i4bvnHsbp2iYbxyJ0GPEJ6oBNfIbqkKKbtDfErpqRkmcjdkhQ/TZPYjfdOVGwtrvTfx4WDcs0LTeH4K/6u0ajeG0L9e0RZTe+0Xw412upxAbstLSb4zfh7WiLcb8zfVwQ1fCb/2gmb8GijigTcR4Ftfib7UI6bmui8vLEIiGWyXGSBTfNQB0Toz7JKTuIhY+bT+kLE/paRicqFZ8OAxJLSJ6I0/Xt8RfuryPY/xwuYT6LxRph7+H+k9ldvSknb5u4hGrd4BuwH7cSirq2WVyIrIrceNbgKsRR3oonc7th7K047YQhIZb1LeAms8mnN/wrX0s8mQ+o6gm2GJhYnJTRHUV+4SnBf2u7OkJgm4/y+oIpYYZLK0hknZZJRY6h+oRk7FoQre6TYekFFM5ZJRU8oT0gorDbusF4wG/ZKkEttrb2k1jbgFsHbkZi0uIhZApHbevb2VuvmqbeIrb7frbz7djMIHdxQNuEZbweywpEHd2MbngfdobdELBzKgHPrfYXLOygHHPicRengR5L/SurPi4Vb13terOHeaQo2aX4rV615S/go71Znk71A6hFgXbyK/LdCKLxhJegYldb5S6WNr/ww7uLVfudvSc72V5DfAvgngYd5F9C7RtbxpaKoancbbyqU/PPUEg6SU7+MgbfGGhHcErBXfZbragealXfpbhVbR9O5YsAVieHzrIIe0Uz73xRkCkoMbBmoK/rBdW0vKXO23xnFIxJkZS7MQeOF2734CHMNFRL8S3enN+BRX0AbqPK9JjHWTl4KBE2CBMfWI5dfVXspZS5/EdY3EKWvBiZ6rCR7i43EKPZ1oEOPe+NOBIfmVHfGEQbcb0i8mHMeAwDdToj2713fq0d3d2qwvd2zxp7Z7iMpjYCzypnC6ArUM3eX+G/YF7l3ebMSQJM6LmB4wFvfFWFFoL0svessb3e9L1alrx4fifLP/Pjx0yxu8HePT6oGcH5fpyj7joPuIkffHtsff+VK5MaME8AbMGlJ7k2NBvHLfdozmffwOOfe776uDb7ife52c5d7xqy6A3TAJMpeUInkHJ4B9W/edbcHcP7m/d0pD8BAq3FjUkN/d6GZUgs2FODPgSLpPWEf6BsCbxqbBXDkq3lhNO51gR+Sw2BIqGBakXOKWG5tgUwMLK4Ww7ev78EhIHsE1GEVA90pIbZhIhA+ukbA+0mzA+mZZ/fhIA+GP7lzLxbQqBUHn/dJVXA7CsIfqMke0PtsQRhPCeviC6CCbgsI3gCsH1BajNpFZsfg8EHsn3MwAM5zsJYtG+gyTWnSQ9MHowhN/FzKiHlA8dF21hPlgTHUHl1gizS1jf7rA++WpJGayNA8/wGA26/RA+BwyuBymXQ+tsID5WQeg/gkFyqRjZg+cHqjLTBS64cHyaQwCaOYcWfYUngT1jEfa+is1YQ9UZVTaGq8Q/V5Bw8xscuyyHiI9yWDRNakej5pq0bmTiuyS8Wa/f2HoT7eHqw9+H3Lb9YXA+qHkHGPK5tiKHs1g2Hwl5pHqgS0H9UztUcEg8fR5WBIySgNjkXI/Z3I/lHhtgZH5B17GW/gqkND7e7XBSaiOfi1HyuAXr/Xdb+Q3cBIjvSpSlzL+mZgyArfxYuZP1DpJiY+okeY/lSEQLPI5Y9WZVY8rY48AbHqXSITVQ29SqY+gyZPJjBaHhTH2qOi+mEtxdtdjBwGY+lIS703H4sbZY5F38HyEF98IvJwutdjHH7Y9SkcOhTH3aJX9WY9/HzY/Sxz33cIZfBzsBUZjYyY8usVmKCoME8wnsqGZjVQ2OsYg/15I7QiaLapKH646tqsjPX6Iz1eWaJ7MLfE2wnvcae+rpAQnuYGfjFE8bH5+wnWKg2QwPF1msH7MW6LREYuqjLQAm4rOytmq8ZfySAn1nKnGuQSbRq3ogcvSi8ZLpAnHl3krGuQQSn7Y8L8TlhHkDKxjYwni8n/Y9PIGE92ki7Tqn2k/0aifTAmIfjdQd5F8BBU94LTZ3jJ8vSXsXJnnsbmZHsahGnt9hgH7w+w2gy0+F060912I9hWn/fewzwBzSzW0+9iavX6Gy9h2n85dJxydjOnv0+uwa0+lND0+unr0+tNsfst+2j74BDGvutfljtc5zWAcSe0RcEax+hWRafsWRnDhPM881ahw425go5nvsKSgsDiRMlHjGC9LiGcHEI2XFgIywuqpY8Rs8qcQtPFDFNVaBXz4JOMUiVnhSLkxUs+P5Ac95tFpxrcjh4JOWNhfMyigdnpEjjODx1at1bYZrhs/MBQIZYQXbo+CLglJces8A8Z65VnvkKVn8s8MJjBtywnc/ChHMHNni3t97agJo8i9zChUsEOfZROUClUoMzp6qZt1c+bDdpQptwJxP+YuJLMznVHNT4rLigC/slTz7FDPj0EFHs9ZuOFCiFEc/FOIAVUFOC/ttUsFQX1NB+aAJhPcgB7ytgIAccrC9hABFvgjUTlNalFvaFS8/T4XTThgsDikAvjRbnpDjVnwoTTMfc/vKejR48bc/0XwjBucjM+kdRgW4cdi9swMCQmHIUKJy4sJPQv+OA20C8vtT5uc4pbnPoQVzxcNQL6xXjjxcSi9gXvBNSCzTjX3eUQcXgTmaXzBMWOKDJHn+kRsO9dLFn6ETCm8sRlfULg4aRGFSgfzjWXqbkPhVBN72nS8w6oy+sC/TioXrkTNMB8RIX0rjKCzC9DJDTLKOarnhlAjpRA8rmuX6ESZDdM+OX60T8X0Yq3nuy+YC3mFH3Ky/WC9wZnnmGmgjLi9eXuEbEXtYS/Uo6E5X7YF3pEQaBXl4SKuQbn5Xoy90ZAtKCXgoSFX5sSiX3xOFOHrmVahq/P2qq/0Xxq8rDWrUC8J0A8XwOqBXnnuVgui+sZUcXVcyK+WgQi8iDGNdyd9q0eX2S8q9vc++Xp0C1n2a/RONa9xhxziznnjsK4BMGGXuDgdc59KrXv+QiXpa/4XofxsRernFXzQDXX7M9aRC3toBwEZnnz2LGFaq8ocM69/Qri/DH9ifbOyzVAcS50fsK2nacfWDFhEG80ZdiolpAwhchR7glpCG9rCGsdr/IxkMJ8FIFpBG9mJuG+gcDG+itvtLhJEtd8cUa/ECB8FlCHceGgwpmpUTjrBgtzByX9ceTguNgMJjF3xhZHoUqQoRvpBnTmZJG+TpDm82ZP6SnpHG/qcIm8C3g+PVPf0GbXgsF2gua/HNudKpcJS+WcdwIs3hBMi1Kko4UsZvUkWQK59O8/y3psILi1ZvAcGW8pGFzizez9x8XpHjmz+pmkdcWQ7pBODUX15unpV7q4JUrhM3guco3oy/kEzxQw35i9giUW+u3kkRpMfTjC31uRRpbbSLBbrhgC9KS4ifrhZee2/dZI0ej9xo2RMf2/lEhuXXPby/J3l6GGVHYnxy/rnvEAkkjygrCNlG7jFy4Qnq367wfy58SD/PEwLywKZmVIu9UauCTn5d7QSyujlY36niXy1O9pRP2wZ33sTTDLu9rVIG+O2azBVVUq+BCmbkXJRon137gmNCWhrV3saB/+Ge94lmVRyVCe8/y9FRD63HT5ynVwQVd8xZM92UJQ3u+QKq6rT3wHTN34zBo3w4nt3hzBxhrkynyjblb0Nu8VcyL3X3ojyuagWdW3nhq33p2fH3szwty8WcjpPu8hGbnihC3+89iHYjFaQ+/wPKXeY8b5U68enhDaEFU8UBzKVacuXrtBiIcEkoiIYqfnZCkB9f31u/lEoNXscEZv/3hwhCc6sosmdu9G3YoU4PnBfAPlO+LPfjziOMaFYPykyn3po25S/HjBRfmFHJTu+cP9JOTUM5am2ah/8PtO+R2FO+tJHDwQP369Xro+eUcpmpgP3uwJES+c4w+TgP39cg6dt3hGEojzzsKJc0pVJiO2bR9aLt3hBuQR9qP4mEPg03QaeQ0/S1J+djlVHyF66x+ZuB4mCIoOKNIYI5mcJx9Lg7JencGx+w8OjxxQNBf7ccx8ck0/vp76WojGwR+3z5AGT7vR9EeZXA6PvcUueOJ+GPtHkqP2J9TRKJ+mpcA7kOTiDML6S7Q8VR87GSmDlmdx9aPwp8y8Mrj6Pwp/S1K3f2OfyTJPobnGoBzzg4bBcfVSGqCP5Oi41ap/rLDx+ngHYiD73DlMYw/Se8IkAW1OXgBeEZ9xnvZdrUoZ8/2XPPDLpXjDP/kNdQlZdGkxZ8YRhiQzPvoLERh0/engYwPcbnyh8OZ8u1BZ+zP7Z9vT+M+NGuUr487TI3dFFWMlfXgYaJXUj8WPBmfXh7YIJ5//gJEpvP6PVfLGgSatIew/4dPI8CTFwGlYXmJcR3Iv8EQI1ox58QvjNBl9KwoyTafJMnaQ1jRF+QykfUVG8h5+dtW59/P6Ii3YlUCO5FARI/e2bYv5F+Yvkl9Iv558lE7lrKxdPJUv4Pm33Us10vz59d8z1Ceza2q/Hhl95kJl83ac1A6u65+gbJAn0GtQSN4YEhK6l9DCv2YxAkyki8vwqD+9fF9IvrqjneZ35Yv9F/PWoQ1ruGSZqv2XSZj+V+EKJF/6oaQ1Svx0hPPuATO/UV+MkHF+2u8fAvED593PxX7lkftgYvrX4hkRPKGvzbEPeTH0yvh3Q/8Z35sv39YsvyN3+v71++YOV8LkR19IviV+26NpzkKcV/FoCNHymUKaZVQ3S+vkrd52S19Cv6N9jNCMocv1bwhk1Fbev+l9twhPKy6mUrKv0QJK+hLJq6VbyoHZDA8cO19/Pnp26V4Gr0vsfjpv+vj/C2PBSPrlEZEzieCu/JJcKU8Wjcrl/OIpAT00edaO/JN9UZQdjuFcsaftgdjesWd9SnAKbTvyQBV83EQcZIzsTIHwqpiMTIkjhWw+FKcSdtKJW16Q9+IvmtguWcOY7v66YykdFaam9d9ovmtiAlLHTa+RaasCc7y13Bm8DHoxXXKLX7ZiZ1iuK398yyvnzdHp6y45rl/EQMV/z8UTh3aDMaQ5kNjo4SFAqv0CRI6Bd+UWvgrPvE0u4kBNjzrEeznvs1gngc40qvyD+MkTUrnG1A5VkUpjTvxd8Mvqf5Mv/yzXKSN12wWkjUf9D/O/Zj/QCQD966Q2u2vr/jRsLHTyjG99PvySjTaRfSrTV0jed93L9P+MWkHe3I0TSVGgLUMrgFG5MlHmW0hn9tt9BuT+zsQCKKflAYq8OmYb5OB3qf66fwOZT/yfwG2zosz/af+AWvTw4C7P0z9afwwQ2ftIOOfkNjMcWz89vn61rSjTyuJyuLXLHEKcLcVt+f4SWQeWmSRRfYK5iYaYOLbwQ427mRaTHTucqslZrRfz81n3z/hf+4LCusCjxf6hyG8K+NxTLG9Nt7jtrRXuadn8V1Zf7eL5uFNVsJmaJcOQc/ZLJIzxpQVzg8ML/fpyc+XU19BTxKXfOtkvuqTQL+tUXL/eGfyIbnjowLhSKYJfznX5SdL9hJtL/RfwNqhnIdGAxub+oyFk66RBNvJRUWBxTd29zfzvuBnd++BtaxZOyIb/ut8dB5fo7/fn5hYVGLyLqJtmCjfrk4a1WkLE94r9df2kIUd4r+5SwNotZVaSNfur8Hfsojff0c/zf8EQVfjXsRCXmc1fsyU0Xyb/tfy69+abOfBf0G8baEUh6TVb/kXspaeTRb/GZR79JhxKWQ/v6LRfhFu0Z44TY/hH+E/n/Dw/qToEJ8n+vxkxtJnRJZfxtVEfTMEFiX42YBUTWI7LDTpY//78aZfMKnPYr+XO5TrTzp7+s3lMKaJu7+c39b9k/oPxqufy4Lz4n9JZOSk/CbL8ucUn8zENN163wH/I/rb/qccPt6TFhtaXiX+q/vhZSiBX9I6KeLvf/VSy/rn9ciMH9W/vy+U/4H9hXxH+VCZohKX+IHo/xDDmZN3+3RL1FJXwL8tGNX+UiPbSi/jH/M0mRNy/qUSRfjzDh/8IT9zM2fJfnH/oduP/g/v7gvCbRaJcKn9GXg7/RCekhChWP+XCUGaHLEjs6/m05aSp28Kzm04J/vP/p/lcSHLT7v2/6H/B9vX/8nfH+JA+v/SZuzjrzJH9vfza97o3n/J/lXszLPH+1f9jhOgTL/9RVr8191paHRbnCs32nSJzeP+sZcRGgJ/v8j/z2J9/rn9HXvhZwiLb7fsXrlh/wyJ1VO68lfj4gh/tANd/6P+fX26Dr/6L/dvxLcCHANsCvBwTelPkJ1J9oQhfzNvEz1VE4/j//vxt/+sZBxMTCJysCP65JhMIz/6ahLAmwwi21uABNM7tCKX++Cai/q3I4oTW9Of+/rA8uOUIcP5JVrTepSYWovz+LQgwAb/0rN669L/+hXDi/iAB7IioHrze2AFf/l5kHtgPCEABzF62GvgkKwideDsIlSa/xH/+hwioyDMQ+yqh3msQSf4wRBFkz4QuzvCI8j4vCGQBzAGV/iDwsi4SAfVwvYjL/oT47XYuwCsImtZpXtEmuxBdsL0EyIj4AUCQuThaAUgmGojs/kMCYP6IAfyIjCaQAazEHV7tWHqIHAFSiOyQ6ohgAVKI4gGwAbn+tAE8iCYBviY4iHVmSoiGAQqI7shCiC4+Rl5NJllIFAFxXk4BMti6AV8Ixf5bCOfeft7yAZkQ8tTIiJ/+4QFmiOXYhIjUkJ7+iCaoiMFuCW7x3rI+mFRVJoN8bHLh9Fw0Q4RBMKyoyCYxhGUBCYL+CmtUx1D3xh4OWnKnlEAUL/aBcnlS0YifGLCUhzAQbpBoJTxdAbYEhQH73G0BB4h1RJVyQwH6cBiYQnIOYDUIB/iyOHdUFySLiCGg93C/cAmCAwHSziBuXDTI0H0BfhT85jSEuvDKqB/GRmRu8GgoC9Su6OU+rVKTsosB5MLnARM8lwE9iGf0NwF/4COieu5/XqMex86EEmgG4BxvCmeQmwGSSPxcZCZlSLaWkXqQWgD4P0iGPlMBMT4ggcMYjnrG8o0+gEjCIHMBbLhQZKj4nECXQrnCyaRIwGA8AWAlPu+IkkAlLj/c2eQzASREXj4/3GiB74hTkAE+hmRv2kTgMuTSLtVg7KywgS7gUQhxLpJIhJb9iDwYUS5LYCIsjIHUiGCBguCpPtSByuBRPh8Bi7Infr0QZWDLUJOkb+hQgYpgTgT/AahMvIGwIDksj4i5IsIore5LxMmkU/wZ9Ipge6iPiLLgoaCKYBZM/CY5ONbIMoH8gY+IuIHA8MiinigqjhN4cwFWjIoCgAQm7naBOoFSjOo+/tr4zt940oF3MOmoR8a54F6BrtTYgW8K8IFQ8DdQkoFxMO8Q0n7oKkJI1JDrPHgMSXiecrGBRAyTPhe2ISQreB4KsYAW1DK23EhJgavujp6HUKES2YHV6h4S6YHmZsmBoZ7UEAWBZQpFgZxcJHIUeBfu164U6mDs+OyfxAO4TYGNfCoMby6ylusw2TD6CpWwwAgXIOkoHYGE0P2BWVrKKOS40K55QNOeLYFfLt5gEcLsEBmGeSwWfHCgq9DxltLKHe5B4quBxXzuqtk8UwyKBkOqhJha6sEiB8iZDHTQjpCvoAfI5l500IYMw3xcajiY3mTitseBjkRAaPla/fB5DETQ4gx4GtuBNdCgDI3gn4G6KBI6FCw56sQolbK4zDpgAijzgVeBScA3ga3M+sxngRag04Fc0Ceo81oXgXhuD0orWghBMLD3qB/Et4GHXFhBCCRwJGsiOGgrfBBBkdDNtOkopyz/rr9UsSgwQQA6UEHKKCniSEHoQcuBfdqojGIkOEGNmP3MjnwUQYhBrEHQQf762G7Ngf4Mcm5/mGuBlQp84tggAAbsQdvQdBgmwNRBJ7BJ2issSsD98OCMs8w64LIo3EEwsJKiXnxSQZpEDGhbgWJB+F7tXNzsogSx4qTkbnwEQRUidnJpyiRBFqSNfBpBZLx6QafI9kEzpD8MoCj2QZpEhgzqQQZBMGDg3N4MJkGW0FJykw49zCeurkGyKP/siJgHxNAowUE5WKFBqiQOyAmYsUGAHAGC8+C30ChByuKYjP3KzkEpQdZBipCEmHJw68pCQUy8A6j4Qd5BPZhkQQEol4H10GjAZCTGSEVKXYHUQVr6VUq6DNRB8UEwsG7KRcI6QcJi05SaKFtaFNjlQfoorApgWIuBB/grgCBkS5i2BGssOJh9RAmCk0GHXFTKqRyjQRdY7UGSQatkQ0EakhhBDNgLqNBBrUEM2GuoB+okQfNBB8rMQb28AUw5KOuBOeIm1mdBG2jZPIdBNUH8QYeY5kG1QV7iW0EVQTiYkpDlfJ1By0FyQZkM45jGaGl87kF4hhw4/kEfGH9BkBo2PGSY7hBTgeDB6SZMmHBBNUE7QZKYk4HngUOBMLAoWDlBCMFMmNkQFFCfxCni5ngUKMdBiMH8aORB/4Hg0PUS2kHXQTXQeMFXQfdBdHjdyoVBclhowZlBpUFMmMVB4EHMwQuQ60H0wRPMdYhHgfuBypiwjCtBDRI10DBIHUEkwdvQPMFzgTSusNAcwR9Bq0EswW44G0GIwTwsXkE7QZYeWMFHQTRB6phEwfRBJLAj4tIkFkG5HkrMwSoowVji1qoD9CRBZgzsKADBlpxjgQUis4G/xDjB3PpEINwoBsFk+ouBTkGIYGSYo+Aa8I+BkR4DpmlBjZiWwQIknUFmwWgkT0GxHh9KwfTQwQEekcEgKg4M0jjxzEkM2TCECrf+uQFI+sDcUXwvsglBZCB3xMXYq6Q5weAkRDABrkek0spFwTDB+sQrfLFwseIVwaXBWcGLmHgg1ip1wQzYcqAHynnBt1j0IpAaxVj14uTAmA7R1E7iXaB8KtfUitBgjGIqZhjeRGFgmcEXCBdBA8H/ypSkM7zswCAqSZSR4h3B6ShVwY+kbcCyKGvBt1iA4IgoS8EFmDxACCRzwQu8HqDSys8YF0EnwcV8K3gJwbIM08plwVVKO8EodmrYj1gbwSh2o9he4ivBr8EngXFiNxj35G+BsfhSKh6MaUoTwYXB1JBeeHf+wmwLdC7AxJBbjPPEjtLDGECwgjB/ECACQJYm6lW6DygJdFAhpE4WIBGimRY7RoCQkFgebJ/El3w2sGPs0Jg+7szAzrCIIbnIN+y3ePQINQQ5qpTgKCHlJN1AEtA0IfxyKpC1skghi5IGcgROHOy5yB7S6zDd6PYgltJ/eECwXvDp4PBUTCHQIWW66CEheIIhUpiOeKEwhG4tJGVIDCFACPEBsyQhoINqtJI2QJoh2UAizOoh8CHhjPohR8KiIcYhCJCmIUYh5yR8yKoAqcFN+gcAfb7mtJ+4KkBjjF7k5KgUCG7q9eiCnCJOOGhoqLwhwTD8IVBUH9xjjFEwOJAeISRk3CSOeF1I3+4Qng1kYJDZyKfcvCG3YsqQ2cj7NJlUSNJRYGqgH+jAuvno87C0mgNIjeDksNN4cOoUCKMS/bBxIakQpSEitLwhpgRwuKUhwSE1IesCDMgu2PSa9egqZDSs6JLSIQaIP2alIdDAJei3QGQh4MheUK0heAS1EPUhfiE36N4hKGBNSOekvCF9sCLM4PRP3GwYnISC7uD0v9y8IXTMpRDg9PrwVBgCjFtqqSFFMBshUyEeISHgjJDhvvPE0yEZ5GOMtLDSkOEhGWSqfDEQu5TYWtHkXvBBTrx4NOQjIQFg8SHD/BEhOiCZIR4hLiG8IexAtRDgyA7YGoz45q0QiyGzIWvoXtCqeBFIlYgH6PkIsiFqyIUhMpCCIksQWSGxnCb608g3UGMhyMh9IUskbgTIoUuERKiIobChNqAwzBMhcByPwNEhwyFE/FKgMyTUKtUhIobtIcT0OrBXjCawJ3jjSOPgNvw2+LchBSHSqAfoIZD8oQbICKEihgKSKZQzIXN2LKFcISbIbHBwioyhayHyoWvoBdAkyAWC4TBkoSUhS0jMtIiheSEUoUIYpJY4oViimKGBQsD8d6AYoQChX6C6oXtqdyEkiskhqni+Ia0h1KGQoUEhVKEMoWEhPyEZZAv2sqHOIVah4qH3aichg4hCoXGQEchFICNwwaH7IdqhsEhCoRKhlyGs6juMASE0rGChJIqhIcIia+4nqBYYznLrPi6UE8b4IUPgxn59Loo0m+iZobNkm8a5oTmoMhbLPnmBqzAZoc9OWaGlrF4YdaGloWWBGn6xeMWhTaH5oT3I7aFshs2huYH2Ib8KNWTFxPgEh2QvRsEwFbYaMIQoD0Z/IRFwEUhp1NOhQyg5rsRoFIgOztRe9uBl0g7O1Z6uFP8uA0iboTX+WgQcOnSQxPKpHEuEmhyo1KIUxaF8xngsToL1rgkoEzDgAt5INdQqYn6CNiSPofOh96FS3kEQ7ZSLnhehfmzm8ki2rUgiKmehx6GIYLt00mjTASuhdmxOqAbIT9RUUPgEs6GhjCksQxwHodWoUqTgAq7qAjhqaKhh6UjtKNB4xfLeBIU8cYYKaNuhAsgbdNr456EgYcOUL9wEFLgIUDTt8uyUtMwUJGBhg4JeGP0cVGFP+EXoTRxHoSwEDmiWKgHyVBQ8YTXUeGFIYTehd9SzMDOhL6H1CuahvYISYdS60DTHAROhm6HeoYaC6GHcKivco4JqTCWM4GE7oTBhN1DSYZOhSWyAYooC8GETjEPYigIjoROMPjBUlOZhTWxRMKMU7y551MvC0YgA4CR4pjpHNOZo5dSuYfRhMmEzjMUBgirGeEHgvVI/oU1slmHmzi/I+EzoYkZheUBquE8oNvTaYR+4Czg+3pOuhhxRUorIt7g42sHe7a42oOlh1s5RYfWoTLArQlrqxngJYeukHGE7qFPCz6QCYVN0vcImKJVhWWE2+JOCq0xlYYHC5N4arh8otmGZhLlhLJDnwuphOGGqeP04uoL3yBzq9WEq3hphHyhiYRTOY646HLFh0GEhGH3sdijGYRyoXWLrhDJh9ixLYUlQ1mFCLLQomtIE3rK0JEia0mUyuIqeUhowuK4uYHNhA4QbYV5Se2HHYWUy9iwhYfehw14u6koocWFG6sNh5s4UIGSKY6H0BKVhlCzjoJaC3mFWLFBhtWHiqHosQrTfYY0glSzNJkFhwOHlAc9hpFDRLFBkQOHqIL5htWFEunVSCmH3cJMs4mEqYY0gcyw63klhn1q6gvphaorI4TmudiEXPtFaZ9J4Dkg8MGH7iM3K5SAJCguKFChISJuh0ED/yIP0BZ7QNLQoGASKYfWKX2Ds4TphbOHU4aGMM4oR9GFIr4zmMpP0ToTdOuPS4CR8AA4yoPjt9Hb0lip7IZLhd0iBjCLhQrozJPBUqEoUKByYjGFz4nkOeuGdhICgv4oqgPzh8WES4QIkQuETjKYE3ChEOLZ4S+DG9HqgDuGYSuIoIT4TjBrhi+j6eCdkVuGJ4Fp4PuHDfG04QPQf0s3C4iG3uAUYRcLymPuMp4bc4Y8o0DKXCLHhswpxGN8OUeE9bGMoBRT9aquaBSjW4eeax0DfDjnhclrp4V7h/RzoJHOYQrqtYX1SSSj24U1h+Qir9NXhRUh34In0z6BFYa7hEfSHmiXhtEo7yn7hEciqBEQoQeHM6q3hGeFpYYzhOSip4ei0FfTM4T8ohdIJ4ZPhFuF54SEoY+HEoKbhEShh4XIY4CHd/K8hJqhrEHHhgTgVtn82CHggfM+ohjQ74R+8LyowcpTqp+FVAvckCixuUu0CTcGjOtuhsVxT4c+m/wJZeNHh13rUqDiImhz/7BwEYXAqQR8oL+G2XG/BDeHpGHPyTUiWKl/yKvjgEaksMnwvKsARklqHwEi2f+He4YgRWrYBcCIqP+Gf4TQ0HirsECPyb+EWWq6ax+HQiuxkdQL34ZSo3QFpXFrKFfrDKmTE7lKN/MjyBNggJGssStIUNI5MWwT60tgRJywSBlgRl0TDlA86BPL2NFA0uBFjApZwjGHCEX/cEY4oEfpkxFgFgrZ4zWS/4dARhD7sEWAROEwuDMwRqwKyERr2LIp1UrZkl4GdOq6aihHUutMsxwH74dCK2ri9ArQRu5B96GTS1+F9LHgRZBHzZIQRTcHH0tQR/3BP4UdKrhGTqNvhR0oeuFlc3hH3SjUYhdwgdCHKuEDvUlmsjNSloCIRmoaY1JEREhGqEYQ+5gpIaCoYaqhvDEERgCH4yoDafhFlSNdyUOAbWGFwlV6E4M9qaUTuEToSxNI/aJQRSCApYSFct8oeDO+Y/lzGCkggnlL5EddyPWh5EckRpRG34cM8tmQngccgsWG6EYhiXOTUWIYRwCC+EXOomhEyqOk4yLJjwaURgRGpXKIRfhikIGTSU8FwSJMRlZh/zF5qoxHAgrYRZhI6EUQRpRGX4cRYexGkUJwYIdxHEVlgftbHmIYRMhIXEQSo/hG8QO4gsZjBEZg8NxHoaNXi1CxNEU8RdHIvEYM2GVInEb0osGgBgpEwT2H9Eb5ymRFzqEcRMhKbES8y5YJavCYR4xGXYKERSRHxEVPedGQfKnoRSXr7ATMIPRFJejDhyBHkPHvalqjOERxIfRHDEbnuYRHIkWVgC7B+qHcR6mC7EffU7lJLXAyo+BFm7kTSMHIDYMUBJRGwjgfOLwEFuoIMylLHAaHwGqrW6lhhgpHjgTCodQF3KH8EGVLTTHeiHchikbUsIqhSkRjhM/StCqIaR0oSkao+GVLcqN+4GLghER8krlBeOG8RiWrrAU7wzVrGkZJ4xGQJEaNSV/g08DCR2pGieOBoZFLCVEpUHWw5ESqRjPCukREM2/DfuHKRvcqO9KqRQpGlEULw72iJOvzC49CKkfp+aPCcgkx4/mQTEfMB1PAZiJ/KTyTeULaRUZEwlg6RGGjaqGCIYGLphB1U2ZEGkSqcq8rpkdbYdxJeagak5LR/BFO4JqxOqEqRZ8rXAde4gZGYIO6R3xg9zK3SZ3AhkVwg87jr4YEQRDCUaAASOMYm+KiqsKgXdhbGm7qnOL9G4mSqstMBVU7NuvCoUFJboB26YKrApLIioBQIqsORvTCyIqN88vBHKBtIvZGnaA/wReA+1FuRymg6pFhgM7rbXLqoNsap1ttcp7DGHMBwfZFUqPBUe5FGaBvANMbXkYqE6KSB1K7425EIKJKgPiBKVBXgRKxmeiDcgN7HJJKgg5Hy8IRSgxCTkfuRx4A2aLagm7pw8FuIZOE/CkambwHuRvauToEXkcmsrCip5Ft65gQB7iIoPIGTqHJoh9T8pFCBF5H45j6OeFEwaM8ixzxGKBTm21w/wHowI9ChZsZkpUz8KC4+TFGzqIehPkiPcNxRH3CHocmMuNRMURxRrdRKIKcamP5QNMyk2fRjXPJAgJqpjhRRymhUUTagLdBKUfBw88LkkLUgVe6E3IRRf0aaUPXu8HA4UYSQBlEkURlwC3h/RtpRclGoWDuoalGF7hEIa0KfRqCBZlFXmPXSllGyUdtcBZT1qCDQplGeUTHCWY4qAZ5R9OSiHKgk5xaRqMFRdxDR8LHuHmj+UURR6lG6BLe45FH2UUSKnLyEkM5R25Gd1IpRyVECHgWoNaLxpoqEU+SRUU06bKh97Dkc1YqMniuY3GIsUTDkGfQ/kUD0QKTFUduRmlHqFBVokWAZUYxhSNBcUajcQ+xGKJkg3WpAcM0gehyYURT4qNyZUSwUNT4DUc1RFdRKUQNRKlFGKMRR21zbCIuopYg1PueeZVGhOCNRwoRT5JGBfhphaFnYHwodAFtsVjYtCPae5z5TPq8KsfgHURO2kVQYFFdRp1F2fpMuF1H7Uczch1ExaDogiDgTtssu1aEahnPmJ1FbbL9Rmbb3UZ5+/14U6hgQeXwGkXtofxg8wvjwkNEgwTi2XJiHzFDR8NHvooNovJjKPEJUXaCIwWc44lSo0dnQ43wGkYjRhNAXRFgE48SY0aIQ5O46VD/qFSJ3RHei7HwQwa58KZFdyinQ+NE2kUMw7JjmfA8SbNGHXGxAZQIo0c5EzNEO7Ei2kxg35tfQUr5C0WPK3uw00UpULlTHpIIiGJSk0RrQe9xsVEh4RrCEPATRuNHqmIrCbtgK0brBRXwCmCuyayLymOp4nBhB4gvcjdiwwIRhVI5gYjLR7bCevtLRYhy20VQ8r7hTyo3QctFL2EPKlMF3oPLRdNG8WDaBOHhM0QzBYjzU8FzRjZhtOGBiIdHiwQjCjdgB0ZQepA4smBHRX+5wPCjRyuDf4JYeULZzaLDR/MHp0eDoBtEVIuvs53DvwLrBvDww+BrRidGdEoTRMLBj7A/UFdGGqoTCPPgq0WmqNMJjlJnRhqqfQjDRDLJjIol8vPAUbIiYkVDe0drKQdB90e7RkyJzIl3RApjoIISYPjQ0Yq3sqR5SoHiYHtE6HnXRwtFBFHdoHjBlAnxUpdEuwsg8+tEPaNE8S9F6wgWqUdFg8CbR6tgMhH7UC9EKGlpEkjQT0dNi2NHDPJMY/NGtqvDRwugJ0Qce8dEj0RGiOVrXeDHRVBo1Cg/RpXQd6CNCPPhXaFqesl5a2CfRdx7Z0ZjwB9GX0U3RaPi70W/RSFSb0WvRnd410RhsasI6VA3RYGoYwrDwEdHoMSQ0LdHH6ODRhxJPytUw37QEMWhQoyQ9LOfRHdFY6OQxuOiEMTnoGDE8+O2QWFCs9oMKr9FwNHiYaDHsMfPRtIrvgn/RP9FTsB6UxWicMdfclJiv0Zc4JNFCMQCO37g+0QgYmRDfuDwx7moWPpIxY9HJ0aN8T6y6pu9ojDGwMiyYudGRAkrON3CF0ZIYf9E10Tv0A0KDGFgxKFEXLtxKTlgKuIc8ZZKW0G1kb7xOMWjRgnqX0t/uRNFuepp8XjEwsErMzkp+MeqYi3TAfEExidEHCv4Y8XTxzG+i7FAZfHCizfI3xIAUYSIbYMJ8GMBMRIBRqTEe2KPRG8CcRPsKk9HonlZEgR68WKuEqkqsnMLB9x7oRDFM8txhMO5KWTGf0c9o89JBMYEicBb6QkvgGtAdMBlK7io/6ESK4UpdMZskWWgRMW4x02ItMYEwQzENqgEK/hgZfNlizDGJMfiUImidMWPgep76YPlEeTHTYssxrbywGgb0sYCdMbacl9EhMThESNxUGhMx1+7ePJ8oLkQnMdWqETGHMQ70enqVTD70BTHZRJsxgfQPMbXS9JyFdKtojTG6IRiePjEIwNyc1WJ0YOcxTtisnjCIhzwcHsCx+zGPMWVwyTzbMV28RTEjqnBRKzEu2N7o3ZFz6qwcafA1BC9oKOyn6OqSn2j7MODU/9QCYqC03eiuwiKemrZ9bG+MrTzhEC3owDTJ9GLsQqEqTEQxdTRjjPdEbHzf0pohLLFMXPixGCjZNMS2KaHBTOtowew7jJXgg5qgXDmMi+jQQmf86LFuktGaaLH/6C0oDZqisekhL7J5mrxKDBj22MBC1Fz16NpAKGw5OvXoDLEDaFhc/iH6sfY05VSMGNOs0rYAkCOM9zFYUs6wTbLPMTHsg4zysVf04TTPjO5cFujRNJKMh+jbFHhChHi5jJ/CpGoJNLmM/LEGsUyx9LGfaOis1LE7XHh8eLSOsYhQqdFL9pGxbrEtmnJcdCFRsRGiHHZTjHGx6bFEXGeM0rG26Hb2MPyJ2BbYbphqsa9EGUKCsWqxltiYtLyxvCHh1NP0skrF8GaxPORktDgY3LGtNBaxHCFtsbJcDrFqsWyYsaKGsTfooCIl5M2Yg7H8sP7kszaNsV2xw7HSGDSx0xQNsWGxTwHckdI+Bu60EOMeRdDlVDCc0i7CMSdoKpADpJVUrPYo9NICbNR3qle412zMwHroS4RAEAqK+7H5hBRIgWw+yO+qTdT3sbkmgmrnIJuKjvhbVMfob7GdtP4UevBfsU+xPmzrLF+x3dTJik3AdDG5GP7qizz8/qz2p7HxpMexB7F16HBx6tDsajuxjyS1IGE0jQT18CpiGLpPrFac3OowFHDe/4Kb9GexbNRPrAFAj3wCEuaxA9SY/FDAxZphYFL8t0DQ8E+sRqAObO9A8HEUbODUSHEKMfJMUKTu+CLUGQK00oFsdgjLdDNoIPRB+IYskhiwcYhgEnHX9IhxjQh/saf0+QRhbOEmS/AP9L6xH7Eu0Dv0gcq8/JUmkBRDMKfom7HYLrJxNIqy4KpCpIQTbMEIyHGicR10R7FWcRxxYvxSoPuxkQGXioZxI/b2fofYpbjhigo2rIJL7v1s9WZ9oY9RwqqecWyGieZcbL5xGBQJxuQw7nEatJqUXnH+cewcX2iaEFaKiRYBcedRwqqxcSFxKXEJccFxyXGRcbqAacGWav4Y9qzn4G7QgFKBNIzQpXE5GMagkzjuqLAk80KAbpwUdXEvIHPQYIh5nK4MG8JebtKQIQ768BVxHQAqiEzAQ+w2OIrSMQ7ctNHQmpTFnK4MJLGcOJugVMDj7GU4Y5oFwPPCnDgLcexQIZDdONsYlMCksDw643G7AU402zjI4sSIpVBrcW5uaRAOgiMgwtCVccaC/Fz34JdxWgpjNHQ4VPjwUiUMU3G+0FC2zriY7NHQDIgYUiUMHXE2OJkUE0S07C1xeSrZUJ/Cy3ELCD9xcYZg8TG4auz1IvVGwoLgOCrQG3E9uMVxUPEYjMhg28JI8evU23Fw8RcMfoGw8ZTQMbgW7EY4t3HjDmy+MraH0M8MPXEFONC47FI8+OIgJVoU8VYK1qCOOCTxLDG/cWvQHlDelKPCB3FZgtoYJCInqDcIasDazsTxwPF2CjDwIvHDcScMfPEDIjjxQvH3cQKEmPE+VOzxyAjg8YhEAjoq8c2CJEQM8Yrx7Hwu0HPgO3HqUOisxzxDcbZwUvE4tPda2TgMcK1QuvFOQDY4XXFznmpcnLx28cGacvFRCAI6tXFZuL/8kPFxOLqmnvHy8SVxovFy8XI8DXH28WLx13E2OPDQvMABwJys3PGB8VYxc3Ee8b8E6PaUOofwuFKDGFjABCIC8bTE9qKZ8a9GnrjJ8SLxuchZgi1U/PFOvB5QMfFA8QTx4lB2Sk2ojPEyUKagQ9i5Yo9x5fFa8eswr3GHcePEvDy28Ro483yFhJRE3fFZ8ao4R5BO8XE4655lhA3xC56ROL7xSfE+otE6rXHV8Q7sQPFEFAvxwfF40Fv6mTBqwAXxfmLmiKMI6fGgIhHxD4T1UDnx8trAiB4om/EzOEY4BvHn8avx+vHE0OfxzXEjIjTxnjg18dE6GvEL8TTAr6BlOJugojLBUTngg3gVOP3xSsDOWKbxxTiACXPg3AhaiOfx9PFt8Tvx3VAT8Z/x6/HFDC/xMsCM3MGacjIZ8fLab/HiBhgJOCK3cXIyN/EH8ZAJKJjQwK/xT/GAcESwtfGp8eTEUJgwIhIEwSjtRBLswtBYCRP6S3F18QwJ53HWbgioxQzFSpQJXAnEJgXEPeyo8TJQPAlz8WQJ3gi89PvCVAllhAi+vXEizOTEEgnCOMwJkdhU8R0iYgk2MeWB6hBi6BWQ+WHLtrYQWgmrnIl0zwbT7tFx+8RQUAIw6GK6CbAGFZAUeFCWLaEmfhNQWJhMIAYJaqKLgk96zgm2CalxKYE/TPoJ+KKGCbqGI+buCUYJoDBXJspUfqDmCUPYlgmOCTyWkTqJGAWhQ+4/TFcy/njJGH4Js8SJCUgwOglxCQM+B4YFgmyW6xgRCRMYOQm0EMkJLgl2CYWhTnSFCYEJ/gmFZL4JJQmeCRoJthAEcIAwGQmzxD4JMQkzQJkJMn7vONm41QltCZEJFQl5CbEJpQnxCQeGjQmVCSeGAQkDCe0JQwlZCU50owk1CR4JMiLdCU0JFgkdCUYCY8RMVIbufDAmlhaOn3CeCZfu1GDtXIrUOlSjPPK8wLLHCQ1oW6QsmHA+CUE5DIMYJwlzWLcJN3gL0LnE5AQ3eOY8F3oGkdcJEGTEOGKY+t7E3PvKchLypBUiRaB3olfexcE/CfCYDSRMvLlUkIklPCLQIRxn+nCJe3pPeFCJDa5fMnISp5RAIdVBchK9ED6ut3pKVMsBxuJi1EvYRDCR4rP8bwmPpDCJc3iPpFrUxhJ/CeuY/hzwmECJuR6/WOp4CyRNSqjwjdjUIpbR+NSfCTCW7bCkxKCJ/InosNTEDD6D2C2uxInlUFiY4KR1vILEJIlpPEAhEJjC6CQwdUEmIJKRQZJTQctUfIlxPJm8nIna0SqJ3HrCYkU8jglwiWNEQ3g6iT5B1vKHuGZUdNoGHFSYxaQTzO7453CkiRLaScrUiQ+Y5IlfCVjiL0QP1F6JYFi/qPjwNol40Tog3DEVPADQPNEF0ereMJhiSIdwxFQ/pCh88tHyKkxECYnyiRaJiMGjVCiYeRDBiZ9UmYn1hLDBm2jSiUGE/omm4h14QxQgLELov5TmPA94vd4uiSzBJYkomI9wdFh6iecY8xbMWM2JpYnZPN94volJPMGJWtACmAaJcliqfJ3eGomHXOE4Vwn99KOJIYnXeAOJ3MF01HNoUwGEmAhQzokXJOUxOYn0mKbRc4ng6Eg+0sFTiWOUtYljiUD4YYlf7pyYyolhiZYezDjvlEeJ7rAkNCOJhkF6sCQ0QYnqmFxoslRRiTuJF4n2VIiYeLB+1JXeMJj3ibjoj4lf7u+JuFT46IEizNSwiY0iu4mXifcJybAFiQuJaapA7C2JqIlk+hmJJokQSZ6JE4mBwTLUKZEzidJi28rwmJiJMcFL0JCYZ4kcgBWJiImYscXAh3C3iTBgUvrGiQBJtEnjicyJkBSN/ENoLon1wnaJfomggChJXok2MfsJJxiNCFPUltS3WKc8vPBkaPcYu7yUmMnqk7zi6GJJIMGGvKzo7SgPmPJJckzmPJpYsOiKSUCY7LzTuBJk5JgFiUHkiJiSWIe4ImRMRIZJc2jG6odcd4h4mEsMhJiRUg1KrcBkmGpJ7dQEojSYfbyHEg5oUkQKuC1Kq2Tc0bO82uhSSajBJmC93nJowphOvIDom+h6RE+QdonhScbik7gWPrJJ/MG8fIXUQkn8wUO8CknT0Nl6IsoRpPRcV/jV3IlKVtAM7MZQuUnQRGL2TlrMcnjigMDwusJKpwYVSZtYR47fOLo0oFp5SYJcrlBZWE1JCxQKWkIBtm6hsZtYvJCWQWyxKLpm9DFuLbEMmu9+TkotSSzcHaSSsXYC/xpmStVJ5FpEAUnaZLHyepkBYuKtcNOerRoqceC8/UnLSWjgxuKHNPnYPlijSoeg2cCNSQFBObGqWi+xpwmyeIdJA67k7LhQMXoFfuDcV7I9SVt+4NwlsQSae36wMA2yqxq7SaFK20k/SUzeFq6rstSaMQFv4FJc0nqOSvtJkLqDSSmuOOx8WgtJ2Nz/Sa0aW5KNmFCYeqgzSZ5KFbEjSWzwLkGiXJi6PBhzQTMUJLooyT5BYUp0cEVJCUH6Sg9JayJcPIVQN0mFruDJf0iPpHDsp0lc0FXBG1itSY+kd0mFSQ4mFkRotBTJj1g9sfC6WkoMiRLc5gQVrimx0MlSAY68HbGsmrNJxc5fkJLcBkiCyUpcrRpPxvfB/MnYcDdBorE8yUImjJhWFGlEnMkPmFNJfnqdSXjatViFSZBSq9DW8q5YIehB4jbJ75gQydk8nxgcySKCNkmysX56CMmOiSVJoNgYyRZJXkr4ySTJYFgTsdjJENhUyW7JQJhCyRtJjkrgmHTJdsks0E/0VVhWyWhYYH4IembJqhSPaEbJQJicUqzJAUnEthdJeUlIPKbwfsmGQUXJdNi8yeGJObH9WDaCVaRlycjwULqF/rAswFKtGh1I0YlkXGNYFclY0dlKrRrskLbMXYiayQTJjZj9yQ1YTMlo0SHJasn8/liOgFxKyaNJ33hiyYPJkdEsycjJs0lKDgpaXslf7ka21ckrSZrROTqbWJdJlh45ycvJOJiksPPJJMlp0eVKAslawRfJXPaG0dVKmVhmyQwkScllSfzBNrGmyc/JXJGXrsDRArptRDC8ftwryglBSTrPmP/JAZhkWMPiQ5QJQb2Ygfip/NGYVoCxmPH8CUEfDv1G4CmPWJApeUZ5SRTWz9wlcjCYD0J3RgouF6SK2pWYaahu4gQp4voELrqJSDq/mE4uBrwaSmJYXX7qruRYkKpfXLApSZj9mFJEE5h3RsgpDNh62tr6nClzWL7aK5jwKTTYy5hoKTSJFsl7mCTwzbzP4P8R5SrDwXoqyFh5QLCUfFgSunlJfpix3MApyljUFnURbahVpN+YIdwSyj+kKljyKZJUitCaWBBYYliTyaYpsFh0ePbJcinAWChY1snMKcOYWFgI2popeFjQKcGJTNrEWIIplcmoKSdKo0pUWAq6YypNifDamFjOgG2JISnzmDSQ3uwBKaj6xEq+0aApZ9xUKYjBnimKWKNJvtZ1ETJYjkToWHApDT4aKdwpilh0KZYpQ3AjmMreGUkDoRGkLKjoyQWuDEZoVv9Y4q4TgfJw11jDrsd05Fr1KZc85Fr9rmBEH3BKaIZAY64aOP3s/1jDrsjiWAS9KZOuwdAcBL0p2OG32tU6L1jJrjHMhZgjKRuuPsz55i1JL0yoQd0p00lrKYdcW/odKTehEDrrSb0pLGHzKV/gSLa9KbYo3uxU+BMpsXBfnpFKZH4HSZ0pZTgrMqKgfSm8vOjJw64f+NdJDynDpBB4kynBELke3yn9kL0pvWHSQQwqEdi9KQ0Sl1yvKaspFGHosIMUVykwqVziheB8WiuuB9B3KZC6pqRS4sPw0XpzKW88SKkAUL0pjWFp2uO+dFAEqcNeDcwDKc8pD6GNmB8pYKlLKWeAd1xDMoMp3mFEvE8ppKkp/m/gJVh1KS8pwxBVWFsQfymxrmcc9dwPKWVC2Kl9KfJyoVj8ri5BHjqjiKMpdy4dcLgchUnVKRV0CHpKqYKpolBhgCdhvbwu0IrJB64XpIR+B0k7rpHi+qnoqcypVZaKycGupa50yTipmkRX0Ah6GKlMKdKp/3BnKYskc1iNKb7Jw66BdD9ooykmrul0MqndrhbilBilWAuuHbygqc4wzqnayY6phUkWqfbiXql0qXlKiPRU2FspuomOULspVKkhqbap+VhxqQWY13DkydGpS5hWqZ1hvbw4nuqpwanZqZypzymDYb28GaljWA8pHUSZyR6pCanuqYuhf1p/WM8pROES2q2pbKmp0S2pxcnVKZcqVdzSrinJV5B02Lqp6Nh7Oo7Jg6mY2sOp9cl9qeu8I6k0rrbMrOENWEmpqNrVqUypROG/QWupzynvYRopOalbGlmpwljwHEypaamIwYb4pNgrqVjRlTKUqXNesCymMkypRymVyerQKlCyqfcYXPSGyRepSmoS3CupN5gPPK0pfSkWBvWpVOoVIpFJrVgPKSGYvKl9KRi4X6mk4UIAzwHLsd/JOMySXLbJ09bERBBAiskpWJmkkg6hWFRcykpOQNDY9OGaQciUUVg4acREeMBRWBhp2cF5OlBacqkY2DRaL/YxQcxwaclS4UVY/LTkyWMQTESVWGxpaBzpQYxp+VjpghBkCx73yYfoxcF4aeJawiGn0H1Y7LouqXFi4TJBQChpEGQfWKdYJGn1wRdAC1jKaQzYqmk6cmFYZ0mVwDKpIHStIp8UxckHWCqux1j3WLYaiim42JnJFGmCySdYcJryabtBbNibWO3hVUqKaXZpauEM2LTY9cludFkpZHRU2N5pENiiaVZa7mlgWHDY+npa4Ropgmko2N3h6NiRaezYiwEJyS3gmckE2A4pgWlxaQiQFNgg2MxQ41iPpJ5pY1jqaQWYrmlpaT6pT1gQWIFYv8Br4QVxoNGWGPcS+Vwr2KepSvo6clgm/gJ0IlvY51w1YDCCSsH2zPayzLjeMVtIZLLCuFzQHYGEkYLub4ldaVUCkKGyzMrytWnNaffshRLMgjNpYsirKryqX+6NzEfh1tCZuiAi5ZDMsqkQ9+6PuM+YRdDkktYix9hwdNnYK2lbaUORcAiK0IsovNGDNkP4O1iJOmcSc3AXCDuJKMhIkQNpWdFTaZKAdWlw2tQGT2kfAhiwJdjTAnL2tsxDqtUS82l7IpTMzLLvacfqn2lNaXsikKCEst8mndF9ad1pOfA/pBRBQbICSYPRrcyY6b6go9Eo6bZcnCJpqgjpdGjHdJsSebCw6e3QexISamDpVOmB3NSgv2ng6bfRx2lM6UciMTxZAj1pazF05hyydWlcSUysYxH7kkaeq2m2XJdpax61Qehouohl9IU8sJInaSsSNMj0si0Q7rHi6XB0l0QRotrMoli2IACS5WhANqDYWXCzjCusyul3CF5mP6qQ6UORmfBkMRtoMulw6SBcr2lrkdDpd6qU6Ujp4HHLSMyyaOk/qiTpQ5G1EItoluSI6aLpS/BlyMyyeOlq6U8KP1zcqF96icpzaT+ocumW6WBoROlSaudp8KhSkEdojMiJ6SPmNxTq6brpN3QGuhnpMhG2wDSS5Wgs6YP64HGm6flcffDS6UyRnOlgarbpfNL26az2sOkO0Hes+IB7KsPwjJLCMbdipOl56c8xHukNXBGWzrFN6UORwpDcXBCSoekkuMnp7qCR6aUgddi4cQ1pK5jA6dNoukga6U7p5QIl6V9pDQLK5GkRtemVqHv6f2mjaCHpHGhz6QTopCCEBoM2+umqQi7pF2mS6W4Ce+m56XHpKGz88jXpvOlH6c3p0On+5NXp8KhB6Uzo4QJzaW7QtRIbssvMLyqQoWfq2FovMpbYSqL96SAZDtj+5HVk/xH89tHYntgb6SvYsaInsNNpEKQs6bAZ9wKCzMBYWekbeqzkV9gzCL3p+KreJtvprOl2FAdIo4is6Xcq/+njabzpQfg3adbpXfLIGbdp3xKA/DVp6HQbCCIEv3zkGcj0oJKmuuiS7+mnaYfKwBlwdGyY/rpMzG4RDOivemEKdRGa6WToUhnumP6C8IIyyg+ac5HG6QToaahCGXcIz2ke/JUKi+m16ZT8YGh6GVjIUxHm6QJ+7OlzEYWY/24YfBPpXumJuuPpSJF+6Sq+3Okq6ZIZRhmVmGHpFuj6GVrcUem2utdIi+m36YIZ5RFk6UdoOPxcGTCISrpyGW1pGAiZ5BEZblxq2MwYIRluEUXp2hmuSOURDemdKnwZ+qi86Z4ZbKg/6RL8iRi9AoAZnvwc6SNp2hlv6aKo+elWGUiRURnj8vAZ5hmD6Za6+RluGaPp3H4x6V4Zk+llaOx4GRn0GSGSCemr6R/s4cxgaCYZqu7EzFkRbuljEq4ZbWk2GVdSZhleEdR4X3o+HIMCtmQEGYycjRltadHM6tgPaUtpJRkhkvjy1yrLaSVuvRkkGRgEOumHEZXpCxL36aXpc25iGbCCLenKnDTk0hmd6fEZrcDYuj3pBroYHC8ZwhnzGfcZ8hlY6dMS1xkqGf9udYgaGTdoAxKdGboZiBmAHLPyLrJjGX6cE9iXEUvpAu4+2LMZtemg6fSyKJmtGdCZWhlN8PzptxEWGXWSqxlgqqfpIpJvAtwZAtKLaQLp/hlDacBYuRmuBASZmRm/6QYso7qJ6anYbZKMGTc4LJnqIQMZexnome6ew5g0mQzSUJk86Uc2jgS7GS6y0Om8Sb2+8ZDjHqOKN2mrOCqI3QKymazUxIig6HCZmPDoJLhSoOjs8gKY1rQh5A1WKZHWqvKZc1awUcPahXRaQVrYOpnS5A1pwujqmQs0MooAURck0ULt6dTwsTToiP2xM+ny8E00hqIK4B8ZcplemQyM72jfNIiIukJwmbDwNyhdzIS0Jxny8AsEF2jEUJ0SHFoxmTHY5pkylG+sf/qsGeM4GBg2QvVG9plRaLeyTpny8FbWUILkstg0NpnneomZ7PAWmWJ8cZlHEF6ZceAWPgaZfpkhmfmZboC6QlQZ+ZnnKPwAO1HlBpJcHKqPuLOidybX2IWmHQlRgdcw3ZkfUURWCXGjmeM+6wJDmbtRG7Iv2O7Yg5n4DNR4HKo2gTOZ5QZoOD/Yi5mGasuZY5kefuaeG5m8trOik5mHmfWBXn6Wan5oH0Yr4NWegNGb9PPgBZ6/XOqEAmAI/qxgGPGfKNM4mmCTOIdac4SQcEquW1AzBC74t5nycp0BnHRUaQ/gfF4vme7aMmQ0Ae2giPEQlF/GBmAD4IVgYl4TYIbQZUJoAc+EVa6FmOLerwhCrnBRhoiQUgiu42ALNiDUwjg2cCdwpzg/UGJgmXCrwBoyd5kk/qBZT5mahLBA+64AElkI5Uil2mRZuLYvgFbaDXR3nvVou5i/UN9qqQgKqc3gzyhAtob0gFnD8GgBZvRprkhZviZ1CLDaV2AFCD1icq5QWV7eW1CUWXzMECYO0JpZdGAMAdsi2o6j5BAm7dACWS8wh/5F0JJZGBjRcJlpV5k0AQqM9+CMWcb+4TLz4LbeOlkq0JxZhOCdqAxZICCs3mCIQBC+QWOx1XB/WHRZSWQF5olwYFnacHrYIzhqWdI0cGlfyfHwjiECHPRoZ+JDcZ/qb7RprpP8MoTobiXQJZTIcXxwV4jOWAzAeCbhEP5ZmVmitrQo+Un8AlkIJSj5SVvqDLY1gssI2Tj76kiIIoI3LtAYf7FyZOqEtlRmcOVZFEjY4pDUorYkSImkuAGcdAVZxyrFWVZuOVkamHlZBWQZWXkgI1lF6L+u95bXcG5kiJBEhONZpHQVEO7aG1kucMxuN3FbKleQu1k1We1Zy3SDNkoojNw1WNM2ZiACWTBEEnHodHn0jNyQtJTexmnrWQdZUvagDHNZnyoNiPFwaq6cQeHQGnTgYc5YaVn3WbeZZVnodFFShVnHsWdZIzi5WWpe09bbwmDZdwgPLkDZ4shxZIDZsNmkdJGuQ3FFWeEIt65PrsCQM1l42d04O1nGcOdZVIADWfgZXVkj4j1ZMwgvLjoChvidmTrCuNxBAKRBGy6BBmNo9zg7LtMJnQkTULD+iKJ8Rtc4/zqc2Wcu3NnDmSu2yiB0EGhUbNmOgBzZ55zycWuZTNkDcCzZf/jS2e6IQtly2QLZewkNgYQS/EpNUIS4xVA5GEVg4rb62bqouLj/ZNzI6tRHNifg1Ugm2bUS07g22TF0DsQfIpmgltn1Dq4mrtkYjNHwYFA61OhAscBFfom0HjF+2VfG01QpMXdxXtnyUD1UW2g6TLFKetncBBm2ztnVoHHZOAq7CJh0UdlZuGO4w/aDVL5gJAq38K+ge1Q5MeUytVQUUKO0rqqoCCToj34+2Q7ENFmXEB7ZVw4x2UrUBtn9Djt+ldnjDsJxJUC0ZN62QOjLfoNUO/DbDgzUfVCjtBpgpcSQUmwmJdmSts24wdkJBOPZVtIjzntU+zE9uBXZYZndUD1io34h2ZsSJOivfpHZHCLLDr4exdlJ2WWEI9kjkJxGEPQH2f3Z2tS0uCbYgYLBCASwx9kZtskINdn72dS6pDTZzrbZzwxG2Wm0HdlqghGOeiYt2U9okIgBULXZcvGsYJ60t9btgvJxxwiAOfXRXAGzuI3Zdgr81Am0DWRHNsLRgv762QCxhvHhIp3ghLgYGLzxNWIAOUEYm5qTGP/ZJkCP2XLxdECYORXg6QLAMSg5lpzr2Q/RBCbTVEpg3VC6EhA5S9nTCOPE5hKAdKA5C/FKID8Iv9njxG3ZU7RC5OpQ7OSP/j3Z6zHX8cX+DDkDNvw50DmR2TLk9fGFIrw5F9kJOFXwoCa32eTE4u4yJuo54/EdAJomW9kV2IMY79lbtLH8CjmS1FXgUjlwCXLU5jknVMaaojIv2SgkjJKGOfQ5jtnn8bc4mHSwOefxHDmvgC74dtmOCeX+kDl+OXH+2jlP2SQwQTmIOdoyMdl/wCqclrahOZcIWDmOYM64ZnqiOag5MTmvCHE54Tn4Bmk587T+zKMScjLwOUrU3ZDUCbo5BbRcOd4IH5R6ORQ5mTlGOYNUadm/BAJgvP7BORP6lpCNOVqY4dnPtLU5Q0S1ID7Aa9ncCSDU3Tk+OVWKKdmcOYU5ZYRmbOQ5Ulmp0ZzEvM6v2S0y0zmf2dPgBcQ0znw56mzdVAM5DTJkOU3gtdkSmWeZGM7+1Mk51ylIOVmEDTkHOYTxf7JRwEH4hzlnOSHAJzmAcG0gRs4HQL74b9lHZH/ANzl2CgMgUcCvOXLxpuCSuCNYlrY9aHo5WMSUepMYpshptHypBDmgoF3+sCC/YeTE/zmRuGFElDmTGN85Abiq1LQ5e6DvxlC5ZOTdUHc5BLio1JUCAcBs0csIULmuMDg5VCA4ufKEnPF3oPs5jzkL8T9IF4CfOYMYU5A32b85LfFIuS85bCzF8VBQcLnvBPnxnLkJtKTEHlrjxKy5dLnAHlYK6chsYBc5z/G8ubwgErmAcCDiitLCuUFWmTlCuVC5irmmObI5LQwGOa36C85QufjmCTjiIui58LlKudM5KLnFDBtCSCZQuWUgqAbE4JK48aS2OYLoWjlLUI45gpjEzg85qFj3+tq5MrkKOaS5w7ieua45fgEXgNzgDsRyuX24jrkVaf2hly6ZaC0M04hB0uIUeECbmAnScRTkcWsR5qFPKhto2PIJuUkUhuD/Au4gn2hiSFHyDh6mGVm5Kqj0fNUq+3SWgHZIEvzvoDbcObl6/FvUngJlBLf0vkQOdhl02vgRmMYsOXSRRFuoQwTKurWoP8BJFOlAzenTBMCqauCbKtGZ9SpIoJOY+HxF8vCM0NKchBL8ZCDw0hW5trpFuflcLNJ5uYSRDTBsMaj4EZg1uba6A7leXEu5zxL0cWrSc7nBnLjAdGhTuXcZK7n6qI3yKvC00qyI0oQrGfe53XDvWjsZ6bkqhEe557leXMEwR2jWBvDShORG/N6ZBGhtyvLc7qrY8ru5R7nN/OW5T+iEJODSMbnddH7AqVwZuZfwDlbgkQFgsNI9wGtpQ7kiBCmql6h28jfsIMAV6X25l/D7udSyQIQ4wdSyr7nAQcURe2iVdL0goligoNsU7BD5XI3yDzptuayE1TDNZHLSh7kUkvZ4Fv4aBMe5pxlIfE2S14DP6YyEjgToeA+5o5KIYL/htHlaaFKEwHlsLDXUjfwE8rYsutIzud8CH7lZnIHSXORG6Gx5ink/ucPCUuBbqN/iA3SVIAx5SfiZ5HCgNHm4Wq1uxnl0dkf4+nnyqCW5KfCB0hB5vHnvUu55fShluR9ST7j2KNUc9blFBBJ5snm2eap48WghefjmejAKec3pAHkskCp58NKGeW2SVbl80sR56iFxuY1pTiwc0uZ5uumXuY7SpHn8eboqiHk3GTx5Ed7acfqoeHhhxou54nnp6Ip5qFiqaDV5g7l28rlIPnm6eVasLHHPmF550YQEaBB5oFQaeXzSrjA11KegnnmnuUQIUyCbKmUEA0iqRKuogTpXSAF5QwKBOr15AsD/Ech5T6BFeflcT+hCBCuYnXl5YOt5o1qHwBeYpCBQNB1yKzarqNPyIAKrDIp5JXmrbDp5I3lJ1JXU5Xl51CYySxHieciMs7l1eeDGsWB/3Gp5tlGfeSuYh3nVUcl5/ahFOIICcHkFuaIcSbnoggIewaCEeVrcnXkXec55t3kzDMURJbmB1KhxDnm3uDoksdztokD09AbkGf95vU4BoHj5AyE7qJj5qRlPsqpovlzRuZl5GVr0eTl5HHnGxkB5z+kbeX+OLKanGcR5RihTeXmoGtKEFPg0lHmWKtUMftxyeYUcgjZ1EYx5qmikxHkR1PkplA0MZPnCeQp4PQwWeVd56kTcece4qMRE0nL5KgJweVL5K46A+VJ5u9R9eZeokNLIkFr5SnlTdGr5vQJe5D95MPk5GVp5dwys+b254wSEFJz5VIjPBEYovPnVcKZ5dxBARKd50lEi+e6Y2PnQeBL55Blg+Rz5sdwo+Sz5yPmI+T5obnlR+eb5lZjh+V18jtwh+dEo71IB+WOOBvlDAmd5WJAm+bF55SgQ+b25rvlCkHLSqXk9qPb5BXm6bPl5Mv51HJgQFeka+Qpodbk3ucI0PqBE0u955DRreVz5YDS9YBzpkXmLqNwiRNJlILhhE7l+0h5MsxzW+fW5fnmtud15sfm0+cRYnXlgluURCfmE+W4RyflZKN752wLA+UUmpxGWeYuoIkRb+Zb5Amh++TBoYvkbSAOkkvmWMMPU8/ldEbl5GuBl+VX583QofLGY2vllqEt5x5jX+dSB7vl3+YGMlfkreQD4N3l1+aD4Dfn+XOJ5qnwt+Y+5oPj3eQNwTXkABZO5tvkySKpY8HkTjPn50HkH4boGSZi1HrM69nku+YFZZhxfKJ15QbqxmHgFqAV8mVH5/+wq+auSuu5LsfFZikihkLaOOGjUWDUxWnh0BX6o8WjcBleEWKhr0TP6UFR8eUZRTyHI0ijs4AYjlBGY/AWMBZUKhdx4qLuUGJrBXBwFg3lYgRJonsHD1FmacgUJzFHxnASO3AwFqFRauuQZ6gUoYPzk2PLz6kj+ClS3+S8AiPYulKCEBKhBiPZ2nZRNuR5oysy7lDxx61xa+imUFGwh3NIFU3RWqO9S4gUKVHwFjPgiBdFgmNwWICIF5nHYUbuUVoybmK4Fr0gb4L/hLAUKBZEFcgUnsLdatKxhBXzMehzOeKlcDITP+q3OSDQxUQYGnZTeBQ6cX5QM9Eho6QUFqM4F/xFpDLT2VgX0BbVBuoRr7nl4UqqJAKWsNeZm8EEJUXGBcUWhILBleH+WAcZ1BQDwiNZVoSYJuSpNBa2eB7alkJV44z4Dtv0FbQU3TltQwz4TBZFUYwXNAF0FX1EDBTGQCwU3OCMFyMjxsjCIp5kg0ea0Z2gMrLnJddkHBS3J3/5QqLJBH0mEYX/ZSP5ZaZ3JVwWjgXvJ7/7ekacpo8lWCtv6WWmdSSwx5WpQWhTZ96LZrFiaWv6/BT8pWslMORGMPSkRyXYKbwWhyX7xPX7LSUHJdPFxhB3JC8ly8dx2usmg4gk4aHjRMAyauAHC0ac8nZBOySCFKSZ4hfHJZvEUdm/JYHHoOSiFUFoJfg/0n9KHBXLxMIWHBdHxh+jzWkfJGjnMhR06WcneCMKs10kTSWyFxxBu2NTJaoLz3oCpHwXKVHc8dIWDGFj2dmmXSVAJCIVUhdQ4dJ4chcnJwYRBkujJvIVlhKqFLUkvBWU5hMBqheXYmTlABl8aaIVZuFfeQIVIhSiYvM6shRqFPd5RtjPJ+bjvcG4wDJrPfviYvmqMhdbEsqw3BeaFFMR/BVaFT9n7nGvJ78mdOU6sWJoFfq05iUnyhUTExwWchadEPoWchQwJBnZRaTKFWpgJhXLJKf7JhXB8JwV1ist++MmtyRU4IqStWOLJPTLshflYNckdMimFmYXGMvMWKFqFha/wWTLhhb6F+zKd9omF7/6LPBqoSsnYhVg+40lvxgk44ow8hV6F8vz2euqFxTgNPKcp68mR2FKFToVBODCc5wUPBSBKRY6fOl6FGYylScmM0MSINPZ6jAG0xCD8PSn/xsWCIpjXSQRSTX7YuG2FB4XkxAO+JKk7hTVshz6dzvTJ7tjTzkSFgYXu2MoGBcmWOEH2dmlATuI4DxAousqF2jgtzjF6AIW2/CS6tHGGxGeFA0n6hShK1cAjKWOF2tgirKmFp4WghdNJQ4XDBNeFXsmEOLbA/HjRhe7YtAaehfvJmEUehZOFpX4MhWrJUu4VJsP2VlpJhQTwpEWVSWM4TATHhQ+FqIQTKaKFIIT4aT8FAgToRcSFxTisRfDJeslSJo6MTLrYhSnAEylQRTRFz6mIRQUmfYVwhQ/+YIXdhdBetepBeuCFgbSWhfiFhsTd7Cl62UhNuDFM64W7jBU4rNTkBDeFR3CsrBKF4PD1hXGFioSfhWRF3/6qBGxFHthzfkj+94W9SQs5gNzRehXJCLYUdpbJ1kW8tiPJD4W6aM+FKLYzePeFQE6E3NMMgoWo/vBFnsnbySy2fkVQhfVZsRANhR5FCHqiRfgmdMljhegB88nqyWYmKSZhRZtJLLYcfADJ2nywaZQFKLEiMv0SDPIpfl0S2HykPNcsDAlGQAzyJX5znm7KnvKQVnw+u94NRaVF9UUXKDv+gHCXiCbys37jhcbcQBLf/nviNPKNRXVFG+C+8u3+MlCRUiPyDv6/BG2oUfLTRT+FxwWj8tiFXUXfRsNF4EUvoADGTv6tULASm0WD/icMK0UnAgH+C0VYqBj+B4T1hR/iA0W31n9KPUVeEn1Fp0WDRWTGkNRlKRG5NWQWBpVo7aJAvO+I/8iDGOYgI5FvRVxUDuBm+VIgiPjU4EDFLGDXeO/ANAhcNFlS/DmjciyQNEDFAcpUUMAbkWpoWmGTGD9Iqmj/RRIxPqBNxHfUr5FSibYsWFRS9E3ShMV6MKfYKNHtkNlGg2CnaHtoVbxfRe9FoMUINB0AKNEDICVGcOja6PlCuMUGaLcopGJs4EVIWrh/oumgIFT0xU5JKCAdlN+YEdRCxeLFwMVOSazFtiH5RZ/Jv5xjHhjOaRy3Yqbu96Lz2aN4MySzeveisXwzjOeS7dHcUMOUKehPzhTFUXoXePfs4cYsMenRmPitcKtmLDFb3LbFNcrj0TCKehwdbE4uKNFeUDiaJuFK+rHuy7g1fCeMAWLJ7su4yXo4Wicad3o+VI7FY2xRMFXuPlQ2xWNsBogu7j5U5sXoWuBqScUnqJK2RYgxxcHRULGkWhD4vRAo0aewI5F3uW+KXJhWNI45bToGxSzFQjkUoIAgOsXDYB1pWsV9sAOmblSMOWiaaRzNxS/Rv6C5PIzZjiIQoGimT2hnkN5obCQHPnTRCtl9xVHhLBxDxT3II8VTxSlmotm7UbVsA8XC0fPFf4YeDiL408V1Ca2hnPjrxQz4m8UBxpPFNBz7xcsF5OGmfCE6T+I+HvqyJjwXxebAHZCh+LRkG0pwxXNAJLKAstrc3LC6+ErM5bqbch/FmNBNmk/FmyQvxRtKFnJJQHwwBNBO+vRyICVDqpDxkZoAwJ/AoCWvxfKMiayAJcPitdhR8fiyPLKgxglwtrKm7v/cGnDesmAlUClKcitAyCVn3MQhW0D2OuL6VlaFQPiyDokL4ta43rJBZBcoIphpbpE6zrKKWO/FELJRsnHGjLL+zCeazCWAmnwwydB3Rqty8fgx4NVcR4VxYPAlh9xkJcFAUiVX3EQlILKdpNviWdhIJYF4iMpFmgpwaIaysvASHCVohoqy8BKgsKpAciXW+AZyFvifxTH4esgnkHol1VyDlHiyaiWkyrr8RvgqnJ9KTZxmUDL4MWSMynglnCXAPNWU9rAkJVApuiH/Mg/FFiWoJbwA98W/xfKoRDB+JcEllDyBJRTA4SUEJew8sCVmJRElryjE1nAlI8VZXGikskHqsh3qLPLMcgIlKgzgHKI8cSW0suYlkSW7jDtgxiWvKLnY+eDWJX6oJirlQFolhrKzclH4ziWpAuWMEbKrhD1ca178cG8y+9AEqEFyz8UJBMtck3LEJdaq11ytJdglMGiNJeQlMSU1JdlIcCXzJSCoQZI5JRQlKyUFJarA6CXXXFVyV8VPpCr4F3LO+Fgac/Incm0lkGQ/XKcluSVq0McohyW5JV7QDKi7JW6yYiUNJZslRiXlJQslpiUJJa/FhXDCsqklngIUIdaAXyXFqN30ayXvJZ4CpiVXJSBsngImclslvCVe0hNAjrJFJWECUgF+oNs5uwU4zCyokYyn4oNwdNDpYsvy03Ivruwg9rpyASnQjCBQKRvqeEJYpY1GbLAMRkD8zMZhdqSlPXSyPFglDEZEpWHyMKXsOsBwgvw++HZQ6LCYpWjGalrG4vylHGiSkBNcwqXEWM1K5DrmsFSlojzMVBFahUWZaKXo41rBkG10g+i2cuNytxITQAmCnuTmklqlNibk2f0ZAIkmBM26R27typiUHboLEpY8eWCVkm+wjYJTRHfotqXSlBEQodhpMeCU9qU4Ib+wci4baBl09rbslMOkKXQbGJkuzqW0mXhJJlBtdN3sLhT+pRgh4pQwkI7ejgQtHMhQjICm0v0UZpQrlHw+6+6mHDql0JIppXzOPirACNjUrc4B+GilrwH3vJyQzgSPNJfOQ25UgZ+w7ZABpbjmiF6m9u/OZ5L1XBhw0oFnkuQSi157QPuxNLCfAWZ6KIGAHAURlFCieVcZcNRzcvRx+CiAHLne6Z5FqNkuA6UwPMYivggDYmeS8j7NchJRKHkdpc1yVlGImeksxiLOUQLutV69XkbATaW0uNWl4Zh0LoQkhArNcqZRN+yxClBkS2BtpWPselDpngPwSZA3peZeTXAPpZaRMl5HpVQuB8jHDIterrBbsf4MvaXN5P4+A3TUIDpeVpyqLssojF5GehQBTfC53gBlW6WFMCBlP6Ul7tFga4jX+selpSAessYiyGWFSk/4cGW9EHvwW1rNcuLgGgIpMKRlm5HGCEgiyoiEZeWos6W2YgxyjaW/pdXsGl4vpeMAvcWnkpPAUQR5IC5+beLyqePF3GW/gGdQ9EB7kgJlfGULxeUGS+C8ZflmNqQyZWMuYmVSZa9iCmXOoCMFn8SiZS0F+XHhuXYxnoTnwreZXPaw3t1KFNAJDLpasziQUmyEtloM2mroawyLmtvCYt6euM1kIzjcqPm4TmXbOLn0/564WvZlejLqRVZl7vFzuNpFlLmzOA7QJZ564LDabtBchKeyU1nRuIxkwFJn0KFlA5jhWRhCgWW7sl9gDEYNEbYI8Uo90AelgbSaII1ZLmVtfqllc+AOZZm0jHEyjjZlWYIdGKiOFmVFto5xhtqGZcxea9FtWQFlhia+WokI8WVkcHllxWCL0MAByUodZbjcWWXJZa1lXWX7WTFluNmrIg1xY2WitumYPWX6WQuynAlTZZKA3TQmZTQBd7IqboECyrZeZe7aqXARZCHUcq4s3uu0CognSe+BehFHZcFlRLj6WdIg5mWRFMZZQWU1cdOwFvaPYMCuIWXK/s2Ys2UR/stlEWW3xgk0/WVnZfdlQT77djOyh+DHdL5ZYWVI2iDlfD7IiMZlX2VSiFQgsNoNZR3+xOAMbhdlsVkFRRZcysXmtH6yo8KArE6BR7Rd0CsErQQ6dslZ5SxfUC7AWi70aEkxmwRMlBwu9Git0CXQLNyAgSxoAdrOyiiBcrKUOloi9j58cAKyh+BjuC4+N7RPpVTlqQBePpx0K9H34P60YGXntB4ln9DiHlR0dOVU5Wf8cS4U5Reon9CeiOTl4eS7BLpMNOXG7G/aiDCyUS5w1yiihIfAYoFnWTw6y0xa5eSKRjhm5WrlJBjajqceJoFPaezlYvbC5VDgK6jpgHSEWoGesjuQr+D5pRVRLnC4nLzQeOzFUX7lUKVu5f5okWB+5a74BOWnuE0uWXCR5VTlrxS23h3UpuXgWEo+rzaH2gzlROV76AXaeWhk5bcILuUM2jnlXoGaGY7lXHiZ5TblP+CA0E6BbmTOfJM4inTwZeh0ArL05awciuUwbMLQVuV55W1G28Lt5Rp0RPTy5YjIyALxcFqU8uWcLL4u8l7J5cdQDSQadLOR3wQ0ZRp0Q+Vu5U3A+oHodMuEPOXU5dblnQLbOIXlSZBcZbWshQgYoh4wjoR+plMEQmW75QDgzEYPTnvlzEZT7sEJ31E2hLhAV+WH5fvl5XjKZY4itmRP5RflZ+V0EGlAOwUIacJsZdhOpFUmVlhIOYDULfAarFySDAm7RDYmQBWVhZAVTBoWNMAVtcILQd/SvMRkNE/4OoKhxNjwTmFUtN0O2vgOtinwXJL7MrAVXkFEtABKVcQEJOgalraDfLc2mih2FjhKegjbNmswUxItBBDwj+Q/8pq5qOAQtiF4QILaOOJiSFDqnrY5VBXeBFSxFTjcIli2GqyUAgeEaNidKCQV54qIFSwE0BWyFagVnbLj5vsypbDslMIV6lD/RFgV8KBNuAOkLAhcFdq644XvfJ0orzQ9hZgVB4gyCgQ5HhS1WJ0oCKBZgi/cdfDoKDjsHlC4FdjB8BUxuCvc+hWbdAQV9jjGFfgVvjmn9jYVBhVVUOG+vrbeFb45oRVUFBaCcEX5sHZheqAwgsWlCVnoUX/ld4gkQC7ewwKaFSIYLt5JkBpAAcCaWIPwJM4qZJkVx5DKYWlmqhX6CNjOtUiGxFRhOWHCoQs535jtoObOMGInDKkVyN4YZaXErRXc3v6e5UiqFXagy2F1QKDIqhVIWNpQLSkjRVOIJWHq8BpA+zIlFV9hkxX0qYI4FmLmzhkV+zIZ9KaCIILBhGr8hRXOSJHYdWRoYWUVOxWdeFjhUwgOxHFEk4I0eGBukdirFR1hf1Bb6Dvl68Q22L/E1iTXcK+EUtxeJM8VL+Uyhu64rQCkyMnWiwlfFW8V67gfFTu2mE4AlQ9OZdgINtYkiuQn5fcVIJWQlb8VdiQPFd8VWYR7mZVpP8lHkFjs9RKu2mcJK/YsNiAptwl4uLiVDkEMfH4ojtrIiS0w9+w+0C8JC27S2mtYVIkElWtYEInCEGAg/wkcXGYWwIn4ib9sQJlcvIyVyLhcOIjJdJXvGelBL1TwfP1kuon4lckKwtqosOtJk5C5iFVK2Im+MS/IeIlqiSp8uUFEiXKJAuwUlf680nyDSNvBRwlgMoSVBWlo1EyVPtCsiWBcbJUsietUZpUALufBRpWSEGTIl1y8icM2SYh3CnlirJWqlSKJILD8eO8cxswF4uqVDlKsSGDakon+lR7MiolmpbyVkpUcldB8zxmEyQKV0ZW6ibSJvjHeSIaJKmLElaKVqNqz/ONAaZW/QQhJ8Hw6lUCYOZVtkKGcuR5OibysmpV/Wm6J9JUeidqVhJW/QQGJvjF5lbup9YnjQA2VWNEgvJiV3jE5ic2VhCxNiRmJ6A69zGCwKYmwHKtkQdCDlQ5SgpVDyZRJEEQcwUJYEYmllSGVotGQSb4xXhguSXWVIFDMLIyYQ4kuRDSV3jF9ib4x98iIwauVoRgORN3QqPiOMdaVpMHtiWuVYNpdiXZE05W9iY1w6+BJlYOJSC4uROOVkdG4aC0wb5Vf7mBJj5V8lbOJBZXIuImc6pidlQGVq4naHJIQMkw+sJuJhjA+HNXavrpURGWVB4nIMiSVqtEnifWVNZXXifJC25X8wUBJmZW6RHeJ0NTI8M2VBpWF2u685nhT2n+JRFVwHOzaX4k+vORVv4mEVYq87ZU4VdOQTFX4gCDpi5UfkPhVRvo/lZWVldGcVYBVQliA7PREEpWRHr2VX5U5IkhEElV8eoHsolURwURJS5Wyla3RoaV8VWzpaFVcVUcKXEl5HHhVtVie+h+VuZUGlQxJLHxYyB40LEl8RJqV7EkiVShVWhraVdhVH8kjHryRBwnevCW8UJjbmCJJwe6Q2KSVCKig7p5V0klIRK5VcknuvDLCVNrKST/cJFWOSXYwAVWaSWi82BRT2pZJmO5+yOzapkkmSipOQdDJVYYwrdhHCrpJVEQfeEJYtknoXMrWiNhTvPs+YNr/qM88RpKc7J5J2lzdVj5J2awFttQgaNHUvMpcv8BY0aq8nxQulZFJ9ETtVTFJL85mRFFVT4kxVb5V/MG2RX7uaBwp0MKc+bxEsMLaMeD+Vc7hWdFpvJPgb1gNZLxcZhjSOstVfEQMzprs3CSKRDSkcFXeVbDu4KZf7gG8ZkTBVarRoVWnVfzB5WrA7IdVRtr5vLtVYbmnxQDebkrpCHPi+Pb4mJghLkwy5PXSVJjJJS5MWuQLeFSY7VgfEJFJVnZmxGQlLkxRzIduWpgXQOdEJ2AS0L8Ezs5JGHKR8NVDROdYoRAhmN6ExTjFSujVcTAP0gXEH1XJGP9VCX7NSi9V4uSjYAIJONVI5GqClpS7EOJAJgVlxBolLkwGMA3EMsLjKqMYL8BiOKrCUVBM1T/AJwwysLDVVNULOSzOFRgDiMP2LAl4xITVZOTE1QiwsNVLxHjVXNXeGBjVUNU/GE5AWYZw1S5YVUWg4gtEO5BgmpzE6zAmTKhYQsD41cDE6tX5IRTVLkwNtM64NNXa1dwgZtUk1Xj+OtXg7tDVSnJrRGZwasQzFJd+DPRNuFt480Z0nB5MCzmfFAsqy4ZGbDd4PMD+/vD0FTisPKCqftVvVdiwRYZe1ScMz1V4/m7VpcRJ1apMi7TSBgzA8dWuqlU5QNXwxNbQtHah1VCqoMy21cU4gdXPTKbVZdVtNKz+WMKF1cLVYZz15A0yMNXp1R/ukzIy1b1+KCClxArVX34J1VjVKxTlfjDk1NVBWId+EdXqUIjVjpyj1ajVWtWBnP7VCNVWOJDEvNV91emwaYaaMO7Vy9VD/q3VY9Xz1SrE+ObCCaSUn0QF1XNEEw7cxJXVRMTIxaKcp9WtOU/FKsQLBFm43dWqTDnVe9XN1ZtMm9VyMjjsrP6dUXmF1dVSQA1MXuTBhPXVZUyT1dbE7CECxELk3tXf1fsIhPQwBo9EwCUCxBnVbdXP1ZXE4MC9OWWAWX4ldJJsDNUWsALEj9VT1RrEaZhBdubVSDWb1ZtEBNVQNVnE1OVHTL3Vm0T61Z/V/9ULFN4YZnr2dtyYcSWakqnk7xqcxATVrXSbdmDE69XpEFw1QxrvVfHE8DWTShQFisXo5ckVggyCmGTIpKBTxP2U8sDRoMrgxX6nQcwGXhj27lycPxYTRILo+5CG/ow2idX0FXLwXJzbqCoG5dY6NYwsKJgFQDnqXJwZ6CaF9cQHgD6cs4HUOMlcKCD51b+KCX5o6BjqrtXWNTPxI+ZwulycZjUUVNdIEZSGNftAKzh9FNo1rtViVCcMYTVqNZ3cziYBNS/Aqky6qmDgFFTYxCtQsjWMoEyFmcS/ADV+WMHn8Vk1hv7QVMk1xFCaIOScE/JFOcdEtVGaxIhUCpqt+onIYmaaxGMWhsSHWglQpTW0sA3Ef/pTkNCcK5QCNYGYAyArTLeUKjXSNStMikFgxOJiBjXy7NIGqjXZNZKQN4A6BlM1hv6QWP3EYzV6TM4IANW52A1Im0xYwZk1r0TZNUBhzrjRNbs1FIKzMhakCTU2nBJBwjmZOgXFfn4aNUG5WEINJALE+QjSBhU1DwA1nCFg6MSuTOCkDzVvNQ7EvTWW5jWc8iwomEP4FPjXNXE1CjUGNSi5V/rvQOE1fn5waKM1BBozEHs1czXh1DGczYoaBtXAGzV+fl41ozXQGjGceiwTiK36E0gX1TRUzAbPNZA1glQXNbtE9zUF/pYsKTVMIAi1qiEqOcMQpzV+fv41BzX0tVgs8qW35ZuCWdiTxHvi2aF2OQvE9x7QlUu49oaA5It0u4LoQGK1QWZbxfYJ6wk8tXWG4rUtCU+yCrXStZMFaXEHhqK1XYaKtTeGmrV0nKq1J8WoUbplx6LAiF3+bkLgfnxywh67LBugKgUvPKa1sqhnmha1drW0bi6KQSLCfL1ABjm2tW61fCG3gOsg83hetU5I+Wqk5Ha17rVaESrZNiawGuvZI1SeCGeyKCQ92FVUGfARcINkAzZBMLAIQrRvsN3kU96JnPi0rXAZtTlUvh5DHEm1bBK6OT008nDw1EG1Q1LcWhLA5bUmSmEwKpqOtV61LtCtaq61POI6btqok3Y04hDICtj9cuu2wpSK4tL0VbXVwKzOiuLnGv1yJGjzHP6eRbUpsEQKpbX5TMKso35tYVKa/XJ2COG1rbVdcvJx+Fy1tUbginKWtT004dDnajIyprWHKAha/BKKaNBwfZ49GllgPbX3sjVgXbXnEVKwVJSO4XG11CwwQPGEDCTJtYF20YhvtUW1WbWJiPeRZbVZFTUcN7VDGtc8HRZbmhe107w7ta0cx7U5VJB1SFrofvwS2Qg9NGqAUyywVLx8SHUEWv1yP7Vm4i56THIbeOocCykV3jx0cAoMUIR1H5gs4oJAWWpYGHGE6HWOOTowb+7JYZK2B7VVNHu18SUQdYe1/jhPtZ619AQdbLk8MhIyaNx1zDDXKF3SfrUCdTgg+7W1NNzIo3j+aCh13FLOHFtYdbXULICwKpQ8dRd2THUXAR9wGoD1tRcBGkDiddbQxibriAhaA7VXtdBy5Qr9cmR1WSZBbAlq6PbiJoWoi7VVVAiIB4hIPLe1QJF6Jpg0lbV5tWh1mDSmdTlUoHUGda7YA7X8dWyBOnVreFx1bIEadUfIIHU/iDeAlHUAdUMcRDiJyFlgWHXJpOag6bD2dbz+74gnCllgU7U5pEcw7lJaQPe1UXVpCkxyxnUCgQl11rz6dSvcCnVqdWF1LQoXyPYwgB6AJoAQ6OAwdYe1e+L+db61vnXfmJV89xEg8GuEERTXHApRKbV9dZBoUpqqeoF1agzcWlPeUGiP5IvE3XV8dbB1UHGQtFp1NwG1IEt127WHtdF8TTSXtfR1f46GdZe1+LC9tUrwCJr1MAV1E3Wx2FPeYjBVJj5E53VZYNew7JRHdbca9VT9HkRw6mzNdS4w0bUH+Jt1vtnvdUl+yJAiWpsk5XV6DFhCj3XVdZsMApqjIM21W0Izepp1gPWBDCR1Bd6OsA9ex3CNGMgII85IcP91t3XXCLqUzKThzAiR0gjZXkogutVtvCXOYHAY9ZEwJKJNnlkuz2DFtSrGZXWhdckMtXUtdYoUw/DXKAF1vnWdxCD1qHXeBKiCN3UuMAm1T3IzQLz1I1T89ZsM6H6yer5mw57yddrmTPWXclL1boC+tbB1TPSusFVUH3WUcC56wnWK9W4yg1jzdYe1VzKWpP1y03VnsvHk7uQA9fT1W5CAWo0gJrVvFBDOyvXrddb1nQKlNNt1+nVV8IL1PXUldeqgwXX8EuZ1Di4K8DjsWXUNdZlQ+vWY9fO1HvXwdbd1z3W5ULjmHIw/dbsUDvUebDH1RvU29TZA6gmnMq4K8RKA1H4kKST8ymyg6SQKpcnwRxQzKoFsUER8QM2xYNDEkG18H/DO2OFQeWw4Xlshb2J68fXw1QxT8FWyk/FgpN8skBS9pIf2dKTrOCkh+eR1KnSkDkSAGTtaT/AV9YAZh1olWmCk3FAstKno3fXt9SCkZfW37vE4cr5GeoW8BmyGvtKkUlmukOpEMaAw+r1agiEgRMWg/bFO8URGO/WmQmWwqIK98PP1q/Un9S0QZ/UUpKfyVUJTWi5kiri39cboC/XP9ceQ4O5vYq318ug78LqZ1fVcHgh8vfVjWj/wLmS7OGMhc5lclDQep7DOovC8uJCy9Pnwr2iMvJd04A1f+GcUPbxgDVP1n+kO6IX1v/ULIUoG1/WC6O5QjgJ4iv2wf/pCKDzk0/J0Sg/1HfVuYBm8VGQv9dmxiIrd8M/a6CGg6IJRKpCbApTQVbIN9UoeOr4t9a+gWh7EDQINfWx4DcnknfWZbMCwPfXMGAKUsmJSDXP15OhXkGfwCA2N8Njoxe6cDfxeqg3j9YIhb14QDWhZaJ7SDUzoK/W4DWxE+A3GDaZkXDjuIQjo5/V72oQh2g1onsX1+bEQlGJsc7Cf9dgNLVBn8GjoElbS5HpQorBcDU4Nn/jR5OQNhCGe5IINRA0RbAQNhfWSolRWpfXX9TbS3A319YOwLh4xoOINMIpnYluKXVC0GNsxfWykOCKQVbI7kNHksMAUDX31E2IEfgL0tA0pUE/w8Q226PYNwR78DdYNWEpsOnkNb/VxDdLSDkI4Da2wqA279TP1JfAYGMv1e/WV8BsWiu7mDW0eS/V25EwYFR59DXwUy1pn8FECeg0dDW0eHjhhJewNFOCgfksNWQ0WeFQYOtKcIokV1AUSNXd8K3jDZmuw6kBGDatk9GBWZMHcStohKq7YaJ7tlGnMldhIWLcNd/SAcnIptw0QUAPsCyRBCkcef/WFJGZgT/CGZJX1hSQ85nPwvXK+QKcN5MbV5KCNvfXHWNugrx6JnJmZfRWvHtn0yeTnTOcNUnLjkB8NZw2sHt6lacz1ejcNSh6eCJmZCFponlOQrCHXDUcNZULFUC8UQ2JKHjk4adg4XoJALmRh0jUNzIWSQEyN1wjzrL9Cyg1scWSNOtBHDZORCQ18jV0qzJ4gBPXY2u6gTshUmQ2/DUViY756csD6UrzRVkKeI/BE8iPw7aDinj8N9+RI5M6w6PhmDQy1e76yjGEhISoSjK2wco2YjZCIs4rUZO0NxI0cnqKNgqT4jcyeYxgsjeaNHJ5foJyNnpikCBpyPAhYFHqNFo2qnBLQuKRajZlUfRTcUJiNqo2isMGNo2wv5MCNHJ7GFiqNfw1jvkh29w0v5NEK9fB1XPqgG/WPDRyejo0aJOaeqLD+pGf47Oa+pHmNsgjUIoWNarVeCYA4v3D5jQ8E6z7jetWNp7hnPg9R6rUH5MWNvGxyAbWNVY0lje2NwrV0og8EXY3tWB2NfY0b5A2NP+WOVZ9Q6JV5JqS5AmnYlY+IVUl/+iYopjpnSbcJs43iSS+V2EiTIgzJ5bJ64AgpepUQoHlJOiSpNBuNg+BGpVrFj0kgiakcSQbclQmlryGbrlqJynUCHkKVCImXePLJa42kSH01aInrSYCg3zlyleiJlEjK3iyVF42rImqV5NT2HKNKJlglpIuNupWdHFONm0FGlW06YE2WlTWyQsUVIqaVSE0mSCu8CZXreJ9JjpWNskBNHpXKldeygMldSg0chlB+4n6VlEiOSkGVb410KaKJcnXvjfGpBE3gBZqJVInPjZqJmE1fjblKv0H6VUxN/skyAqp87KlWiSxwcBxI0aYcrjhrIiWVv7XK4K6JRzSQTdnJ6aSyTd6JiE0ESNuNQJirlSuN3jE/lepN2YnaHI+IIskxiSKBGOoDleRNAPjs/nQibomsTT5JGYlfjZPJs5W/td+NlcmaTQoizslKTRRNUkSblfjOCk0HlQ+V8E0hSWpNAWGr0KeVUYS1HG2JWtTXtXS1p9A3leWIrEiEmNWJ66Q3jeNVa40PiPxNk4ncTRZNodGcVRxNjkRNeuAE0U0pSTpNTk1gVVYc6E2R0QWVbToDWT7asgTZHBvJCuKeTeWJz6QKTeeJrFWkSDBNgElNTTxNBFVASVpNT4l4vLpNVaSUVT+Ihk0+0LRVH7Dn8n1NjFUagXlJ/U3ogbX+MEmVTQ+NmEmOTSpNpsEZTblNhqqlTfFNEcFWTclNmEl8TfNNRvqMlZlNkR4KVaN49k24SQmCDU2kSfVNe03RPFtNe016VQriwk2nMalNYk2mVQFg7gRVTZZVxRwtTVpVvbJLTbsNzfp7gHFipjxTATlpljwgzWzJ+1WBDDKFIby2PODNbUGuSS91gYWXWD1NcM15KbDNSM35VUYMnshfmNy8W3IRjAYp5WDgBIPYJkmEzeVyQcnZVRpeyskaKVpJ3HCFKZDNM54xyQjNDM0eSb5JT3LkzVVVSPVVSeJA1TwWKq1VV6R8XBFJpM2y9b9JkUpwGKekGjyfiaFJxOiaTmNNCry4cJNNnBR3pUjNM1UccrmF3dDbVTdevclgsOtVWM3nsRrQOs2OcFYBSbAazeOeVM0byXleCs00zUmU7PR59bkEp/ZaiAfowbY4hOUg4rZGjLW2mEUf4XMhPLaCkZ7Nbs0RFS3c5SHMtijwWiDJ6I22ZvAkEV7NSDmZODrMVJCIugTw5hHXISK2FIQJzdUk2dFNthcRQqGfQg2eEc0ihk62wc0v4UKhec1/BL7NC/aaufyQX6GpzbQ55c2CDf3J5JLJzWmaOKFUtgD1t3CuEXMh/rYOkOy+jTjTOAHW3BhOzS9c6WRqsXHN+jQkzDfoSc3kZFSRSrF5kL5lIWBljNZOpcQ+NA7Njc3j2eXsmiFTNgllsxEH6JRA135jFqmx/k7KRVtYZYiVzeBeeQpIilnNtIQpzbnNGbYLzQ6McrajnjPNCaGfQgi2hRBQpGu4ZLa6aDegeSTptpM5EQjyZCSKfc0/zapk/jjetn5onRFtzS1ZB830CF3NDCaIkNIhwbYuRVSRg808tuUICC2OzUgtYYKvzH7NUnSgLbqM8NF+5WxsaIqJaWJeO833jB82z1kQLfeMt83c/k6EnrHQwK/GgyDPjN02cNnUID+MEk7MdBHgpTD0/HvNnln2NDSIsc1oLQkQ3OrHeJs27C0BZDG+et73zcshU83rwDVc9giIoRjC0XAoLUGxlDn2cM+mmVSlzUC2PC1USq/N2lmnEC/NX80j/szYGC3qLY7+Ls0ajLQtbt7YLaf2AzZpXDzMkyHGmgqIv80bIZ6ggf6eVbAYQc3+XJfhkc0nxh/h9fBQLTH+wmn+6n4t0IiHmv7q2i0w/klWoWSoLdc2C9YcZOw46rYRLaEthC0eAcyYJGRxLR1eIS3gvqjg0S0BLZktSS1HIO4GWmSQipQtcnbMLdpkfi37dqUtkIrmLSUtji0soQY5DXaUZJfNKvYwLZ/NxS32AhnNdS0ldiEK2bBEOOvZToDdLdXk5S2WgDwgWi36LRpkxdiNLWEt1Lp3Xs/NKiH/zbnYy6GjzcAtFxg5CGAtl/6mLcsh8y3ULbaxpbb/TZlJRGQwICRkiLzTOBRk3uTHLTq2OGX0ZAK80zgmZH4e1y2I3rz4lmQOZBi2jy2bvuS8/GSokXctSC0iZKstzJ64LS0IhS0cnoWm8llLgiOKJhQeJqCt0AhGem/N7y4YLR3kyi0/LWqkhmR9Lf2BzGRmetYtNFZPLW5geLm02XCt7y0UJr4RaJ73LeNlGGgeZM8thwhwBv205y2W3ootqWCEtkjZkS22sHfR+uWErbSNoJKaqNq4qY34rUZedmQ9itytaWSyLZxkrba2zeDIaoCsELAsOJBwoTN64q0G+CLIoq0bePfgIfI5SKHSCq0CIsR8BQWCrKacwliC7tQoLjQ7ZJpiZSAzSHisbPbrYpS53mC9eWKtCo6G1TZU0q2KrWatpcgy1MLgmMHCkAXITwb4TliOlNAOrbKM5KhqrYatU3QIrD6tHtosyEtIEPAGOuh5Icgumk6tvrpUyKUhqBWx2q4eaqF01Cd4uswJrdEhEoyXED7aMa3prLtEYToXzmj0lq2OOsGtPCqqrSzBrRD+rX165+CCIiLIzXmWkM6t8pAWrSWtxrAxyLat6NprWS5IXXat2iLMGgUboNaccKLRzDSsgaBlnMmwea3g9LViWGrWraLIHsDqGjBJWa2kyDb2HaojrRHeu1KsOqbgX0jZrbEQ1tpFrd+0GkjxzA8o8FTbreKtTa22SDwqOa24IlrIS621rXqw1a2VSPOtpFUKyCe4xmJ0jvjm/UiWyGOtCo7PrYoq0qVDrS/CdZz7SGLEyqpXrarICZq1EA/C560weI2tp8LAkLqs4mK2Okn4L60HrZxqcG3KQKChoa2sOh+txPTerVhq3CC/rYGE20hGENKQ/Mi4bQGcHIA6raOtRchZ9ike5KyOrUn2rITGyMWtGkhS+l2tduAIbVn2QHwKeKmarBDPHiEKE2SRrTRtbG3OrNRt5ParrSjFLG3C9mlI4G0MbT0sjRB7LeUpoq272XUYJJVVyPUEXWRrEiZae6AqbRvlvWQ8KvJt6CWGSOmsOm3BQRhocm2jZFFh2CDtrSZtzJL3IM4ha2TTZB7MzSDZyKlKu2Q2JAFM2cgx2QptQJKnZCKtCOhJpEX1gu6P9T5tvznt6CpECPTPrarALyS2gjGKhR6RokCwjMTSjJeywKhgpLUQLLRfoNmwgW1EjQKC0KQ4kH3wxcRQpFjETx7BHLP1cW2osCWKJlhRbcVtMW0QHmduBW0bbEsWC3qoyr5tc2BmfPVtJB51bfAN6B4jMOVt5B61bZl8XKQEHpl8WqQtbZl8Pm0tbf2xw23mHv0NEBR+Hs/upw2sFIANJmw/6MFtrPS0bTcU2hIiHuoe8W2psMRQjh5jJNteDA1SHoKkGW2MHvbcVFBQpFttFujVbX/6WozjeiWK3B4XaJ1t/B4EyOrYF23vBGryzW3jbXwUG0J4Su9tIKQYXlRkxh5Z8DXgaEqPbdP1Pm0rsqqMxui/bTAI5Kj0jVKAREohHjc0A4pfvAPk/8RBjUjtLI1z3AR+6233bVRkpR5DbWhKoh5NbT5tgx4TbUTt722xoubusw0DIR402O0hsKutyw2CXvQIPR7tDcoS376VHjJtaFH3vKKifg1QUJi0tx7YjQseVw1c7U8N0sY85Pck3O2cLFaiYu1onl2gmeTwLs1ARx70nnOZRKXnHiuMG7LnOFQYWgm87eDAkI087TINvlqgyCrtOqL8bkENOFmpDXztc20AngPsrepqgIANEu1QkG9ixJgMDVCeDu0RTqSe4+Cv6Y7t0WTInsKsru1InjC0r0Ys5rawxami7bHY+J5q7kik68wAnkyNcJ79MT7t4Y0cPEzkfsiu7SkyXfTG7X4ehp7r8FcytWLp7XjWYqLprYMNgSbzrJysd3AF7WylguS9YnctfJ5W7WntvGTCnoLkDU6yjbKeVbJmcPqNTe1vYmR4Jo117W9iWeZyCFXtVbKe7ZqeNxRC7S6NhJ7d7QS+Ke3xQq1wWsTp7ZxAykB3FW6kK7KL5MGePnEM0MONpYEytWUJ8DgK5Evt/p7kgqvtx+SRnkCV8+R9emvtAZ7b7aftPY3pcVaAF+Sxnr6k5+0H7TmB5Y18SQno/EDKpdcp7vJcpd9eWDGRuq+wNibv7ZW5qOw1pf7y5sCwXiocb6zMmvRlNHjDueli0YhKHEM0FbK2BDok3pKCdd4E/+3UvjAdEgwf0WN8n+0HiGjyGXQ1BEc0/8F+vquUYHCqpQcEf+2b0bf4LhREHRgEbjiFDK74D27c7IJwSaV66A1kRM0z0VcNbB3M9VgxjJzq7bL1PB1nyC4UKuiLsWI1OmWZEPe80+jYHPbgPiB/aJFJ1aUbNvuxU7KOJpdSTaXn8juljX6qHYu8/TzWooodCcTtAaXiWTA76POl/gr2PrH01kKWUNcYfOVmHQLlAuBQRLOlRh2kFOpEEuXl4Z8BRtyhPkK6sgqwwqGc56VqHW9CceCaHXikL55+gQEdBxztDN4dEChqCHKAUh0riNelyAT9ao11XDiaHSPmigIaHbwuyASBXoNCxFFbEhkd3JB7pd/4PJBsCm4dW7EYHK4dyUSdPt/4MRAWXoN00GUX+D1cPmh5HeE4dKz1HW2l4iGMXrXVJoEFFNZC4wFOArOl/xyfARIJWoG0Heodt9yDHc6Vyh12HfqBJW48ChEUtGrh5SVu6Wo/xiMg0C7zHRIsG6S2gbtudR27JLjlBxm4ZQod0xk0xKk8iR2/pX0d+h1HHZiciQBNHXsdCxKFatIdToHz7bKSuOrlFDogugjhoE8dNtRH7S0Gjx13DOpljBjoZM8dHx2c9F8dS6jqZfokUyYTBQa1FY0H5KCdhyZzBXp+QJ0YFKONjHoEOCnEf5Qu2QlgvZSVxDCkYQmmQEIopuTpkmqi2tSGZMq8lcSO9LbxDkCYIer4zKRJoOMAFhlfbIOUmqBEnVHg/zXX8DSdmfCUnTfYA9kEno3oNZwEnbTAtJ2lYEScLAisnRSdgp3mOR52qdGinV3A5J3EnVPyBRU4wMkl6vipbmKd1JJ60FycjESbOezkQLySnXydOfBMnUqdUp1/+LcqyRgOnHLwpkBGQDLQxp3GgSwgB8RnlMad/ZW8IHpgZCXq+P0kZJ2/cHmUJkxSnBagNJ3mnXHQSYb6CPZAHNAWvFpMvJ0XgG6dQlCWnUK2rJ1WQEdE3ZV/wIydr2wcmsqg8Z3+OneILJ0d5Bb4kVK3NjSdwrhwJb8kMNRlQv14WkxQRGiQpkAYCCJgwZ1ZnfHkNAhaTLRmJUDOdmLQSYZFldogPp2yJS6dFsDinb6d2LiRnfWd9KnJGCBOetkdna2drQRH2cmdofhv6Es2pkDCkK9sO+hYtpOdwCXOnWjuosBmnewhC50xjm/ApSBBnQKMwcDrnVKQDZ3oGKq2pZ1xJbklpJ0WwKOdoCXrldjAyZ25Jae43tmDnd46N50R2VWdr2wp6BM2c510vIIlxZ2hYC2duSWondWgg525JWudKMC7neZwWRienazAGaDl0KBd5qAMQGedAgTQXSjAEF3SYA9suJU7nfOdkTr2nfzAK53IMMegmF1BnQbcNhVvnQ2drNSOFYedVbz4sn+VoZ38nVjivUz5WlGd3dCh4itawp3EnaoE8F1MXUyddUxJnd8m1jr+nZRdtkDcnf5SaJ0L+pBdHF15oD2dAbK2wKxd/50t+FaduF2HXDRdOeqEXXJY6Mg7oPZA4ghVvHGyKl0owD9mbiUCXX+dmTrG4jHqA9lSXYZdhJ1UXeY6HJ3a1E+d8OwZVkudYl0CzE2dsl2NmDRZ252OXdvQ22iSQA4gJLiMpSadoWCIXSHsPl2UXbqdmEHNGsXZUl2WcJqgd51K0D6Vnl1BXdg60V28XQZygtCfnYFdth659GmdVF24pQ5dbF1orv303VRXnb7QYjBptBDWPEGlnN1Ual3wOrWd/mB+XSJKi50lQPld3AgsncVdhGmvjrFA+V3CrC3wdF20RLX85jnulOK83fRynQWduq6lXUVdIZwRbnWCyp1TnWxu6p3+YMBdAqktXc2dK52nBhedrl2CRPFdil0Cqa6cJZ1WXTxEIZ2lnU/FO11ZnYNdAW5F9PmdzLiw0OLuE53pnZquy13ZXW88812BXZghLkFYnZs5+V0aiXldXF1EvMaBDp1q7uyVJp0xXY9dfNDdlZedH1147g9dwbxI7hA5r10nXfO0V12D4D6VcZ0/XbkeFFwEuOVd19CfDXE5dl2q0LWdfJ3fnSLQNyBSXXDuN9mY3b5w/ZUxYH5dPZik3Vpdm3LE3PDdKMCpEPDqCsUOVUid92xa4t1URejMXbldabQvAKkYQDCFXVSgU4rCXbVdOUAiaFFQ4SU2XSVA7N3sXULdLcAq1jCwuvSznf86Frxw0MldpUAA3TKRA8ArlFzMw1383StE7bDYcBC2hIC63WmhqJXaNHcmSBX4CiRCoxIPiB32ffRXmOoVTJS2mcicWBWUsPOyljELdOgKgnx23bqUWLH9ApCCyhXwCq0C3iBIFbYKLfUuFI4KKUI28m/IbhpCol08nSgMMtNoCuTKpXjsGzSKIIAVpJRWojkCZ7KF5baZDkx8FbWwjEICks4E6p7jNEHd8hUlacQYft3W3cQKeuiDFG5h1ApD7TvqWBUuWLLtjd0HiN+0gkK8+F5hTkD1sVbd4AKJ7aXd0HAd1N6ihd29tUPddti53cQEKViCfJndB/hQjtP0hQIsAu3dmLQL3VXdzd2FQrKurBX13Y4CE90B3tXdduQj3dpQxd33AgPdJhUyQqdOUBWaChikcfKOBE6iGKTJ8nHdOaJjJJHd7t3bFDrQzBQ23QPkM93SFQVCmI073eAC7vAstExk+GGSDmPYqa7OBFPdldjZpjYmY92YghTRN62vsr3dEd4LbZ3dupRz3QDtrd3YzgA9pw2dIHEVa92YjTg9oVAf3SyNTt0WFem2deRe3SNByAqFmZXdJhW33XckcD2OBDGi+yRAMXOtQvIsPeHdfBTZmHXdeD2MlOCS/GGaCmZ8fD0qlNndEaJpmOphdrBWEozdPJF7Dfe88nLuBK+UVg1lQhICXdz0qQjoBaUjlIo9NOTgPTPIK217lHmEOj3oPTMpIxW4Ws1A6nwa3pvkVUAgpGvUffxeHlY9Ct4SXT0VxugafEEhwrgL2KYcAqjNDe5y4JQqPd0N6j3JCNKQ4SAvJA35Gj26Pf9QQxwKPXdo6VgSApJUuj29oNJhncixPZiRn7jB3JmZoiQqlNCymfBE8mE9lYQICFvosaKgPNjOCT3oPdnM3GEGPRikMOGfuEp1u/VaKube28ynDazcwD0gwGBuYdiMiS49gxUtPbWCrkhzYBikBkWh0gPw0xQv+eIE0q3lPQmCET3oPXnVvAQxPeM9VqXDPWMkxtwweP09LxT3eTB4KOCFmV5m0JQS7KNIDw3zPR499I0FPZqCrEB7PS8i4AKVwE5IIz3QPetYZz1h2KCEQz1iuO09v+TeBLs99dgjNCnOIyCjSPcdwqq0yaYCD7Z37cyY3z3GtBF4+5kTNF4kIcZLmZC0/z2X7YA4MzTc+H54ugmE6CZG2qGQvQfk0L0gvWaGIRrAvdYkoL1a2Ts5TiFOVtjF65CqKmAcXFS/RSJtRL1sVIDFv/BkvaZUjMUCrOTgY5SQxXD0BZTgMasi9ajoLcVoe6KQ+Eg98Ew8+BjFrq1BNtjFvL0A9cVIF8EUxefVqSG/VKK9WFQuNF3FlMWhoVS9hcVHnXP8F5RofDXU0r0sxU6deKxyoCjRgr3gyGMWOGJ8xZiher2SkRuEwsV9/BeUJr0dlARw5r1SxYMQVr2yxWQl7O3z6tOariojUUrxAVqv9PXFLvxDGvh4Q+DpxeB0AlQmwIXuy7jiOZiUNNCY8OrS1ppGSLh87dHneHowNIUbWpMYvKDLlEmQ4e48+N3kFlFFsPxRab0Qwu8h/eAiUWm929l6VLGAf6w5xbG9tZTptjnuy7jArbuUSrR+vb3ZDqFPJEG9sDIeWr3Iv/Y5xa7Y3r2DEQXFbPHIPL15gb1+vdmWUY5qXPvg7dFQajIgfb2+vaO9BdkMeI+Afr0f8L4FNxCSUfeiCTk1vXdIwcXfwIYVvciB0O8K9dFjdOO9rc6zve3R45ACVLW9R70n2REFEECVvVjY3ra9yEFk9e6IucQxDHhrvWXFv7AlBfPVWb2IuUI5Ub2GjuG9eggVxS696sWOSIS2+HhhvSzFhb1RvZO92r2B2ZiUkH08vSG9IH1w5jy9zyiaVEYqrr2+IXOUdrSW5jy9ocWceEukdjXYfU+1pHgK0G1RPL3yLdgEv8B+xQKoLb3ZkbVRcH3GmgQExzpQfTe9mb2UfQ7oyb3EfZzRr72nSOrwqb2fvQj6XLV8At5UtFrRxvuWe8WrxeWN9QkAVHGWODTifZFUv/RCfa3sSL3BVPJ9G8WyfSnS10GqfSiVKwXQ5A0Smn3Rxrp9R8XifRCdz+3XxMRQwSLp5OuwS1SjVBZ9MaLTvHhJNn1rVApV01Sv8nBgwKh7VP1m1PVKiQ60w1SJCeM5tUioPhYMVNCJtOGiZ1QJlQ59gwGjVMF9owHWffrAkwHkTVlUP3DpoJbqln0fQvZ9y5xLAYRVNOrubnHuaNRZVAcc5T4QiXzU93LVPrzUuCF8Pjm2XejpfeTCOZXOffmIzDhbtCl9jr3iHTs6BAaf8DjQuOVAXG0+SupKYnMBnkB56M2mHIElUt19pRC8gZxIqH40WYzlkkgrpRC+BUDQgeEMorBW0pzlP9xTpcDU36BNLst9AuVAvkqQS+U/3IOl6eSQtJ0+HEjTfX/wtIF4PGDQNVS+gsyBV97wpGb0/oFoBuUsdL67RLyBZ/xUSgBceuVAXJel+30Q8Lk+HiSZDFhsGAgCAmNgf30QviN9dXUc0H2ozL6TfVQGAWRLQHZAloFM3qt9N4DSoGVgGVaQsAN9vIF/lNmw6P3QgUpAaqQTfW6BO5gLwBC+mfA/AYHVwbCLfeHAnFykZUC++0B4gaiCDuRO6pPlz1S5Slhs3304/QelWGyC7kKB3plqpLd9g31sIFCkfP28gaj9C32Xfdz9ELo5jCHU9eUPcK5c+313cB4uMv2B5JjmxIE2cCwsQL65yAQOSO6QsD1ifOVx7nlcQL4izJUuXWD1XAb9crSWYH6NZ/A6/et9ZP055Ffw7S7PVNT90aaPcB896fVzSu3qan3bUiKgPepGfYC9An1u8LOwImQLUm79MeRafVMFxtRe/e79D07v3AH9lfgAne4kEf1d5FH9vnAx/Uui/epiHQmenoRKFLpFRYxXRDAUv4H/WDn915STEtdJg+iMOFVsjoVqgNlIx4oMpf1Ypf0xuKzh9np1/YoVfioyCF6S5RXXSTWMaoKRUh39Vf2dRRYZ9dxN/eBFOfD13EBMkzna2IdyagAAwKQVmfDkyX3YGErD/eqpv4z3ivuSislz/SIV/f2L/b39Q/0T/Uv9tYU5bhyFo/1lhPv9s3rahh59OIT+uGNYt4wzBPUYFf2PBrohu4UnYAcpI4yHheVgukXP/XBFxriFSSrwHaK9ZHkELIWPBh1OXjj0Jf9Yg/3aOP+AQXqgA7p4Lf0AA/nEELhgqQKMZDgKuCioagA6bPtFYRkdUGoALsDdUHADAoV8mBRKIZyAqfok+biABPZ6h/0cRS3ptvGV/cmM5MTH/aVYRAMa9gl4lxRUAyF9TbZMA48GU/2ZniS4LUl4A7a0VmzClCkAWG5m8NADZAM4hL24Bf2ajHV+KLjw2PQDMkWC7pQDmAPFfZs4wAOt/RwDMX5zGQpakAOA3glw4gPUA5deWgMjKTwDgiacIs+pMgOiJugD/AMiAy9cJCrMA01+rgjkWqYDc3612Fq2CgMwhI/9pymD/URkuJ3OAyqMAwhhMDOFAgObXva4cbZqALoDGmQHsJiFNgPYXpVAB0kOAyeR6EU+AxNZcAh8Wh4Dc3AhUH566BjUWRG4J/2QA5x0TgMvWDkD6fYQA239InDWAygD5SIhRT9mPSkJA+lFO5RZabEDuQMHKZYDTWkH/RIDI/5y9vlalf3MwBotK/1CQJX97Vg9NomweIU76LoB7/DZ/SolAnZF0D39oQNG3hZQIANb/W5kn/3iA5JQMCbCA1IB3QPgAyR6TQMCqP4DWwNq7sED9QM/6S0D/QN4JocD2QPzA/coZrohAywDTt61AzoDIX0vCEO4Y1hdJLIBjwPiA2jgFvbmiMgDGQPBLdADOQN5dkUDqgMVLXSU7AOVHNl2VVjPA8xegxTgg3IBAwik5D8p1QP7dhVs90k5A3CDhAPnA3deSQP4qTkDZnoS3N8DV14L/V/9t8WhcOmds/3f7v5wJINbGm/o5mREnSP9rXBKXjiDq/1rAwR0Np18Wk0Dbp0KWmyDXAM5SfUDDXTIA4YDl/6LA30DfXICg7MDlf2oA+Mt5gOlWAgDxINcg5f9xQN3XiG48NjYgzX9WWkpA6I8cLiKyTkD2ZhVWHiDojzCuAh6nf3kXtikDVgQg2sI5f3kWrqDi8RzA6oDKHAdRBzJWoPmA3KDHU6iPEO4/ViGg2J0pYhV3NUDtoOOg0sDggOiPEiDhUlNA1aDkQMj/uaD11j1A2SSKFregz74/rhugyIYugGeg1FYiCUM3aI1TN0AzQ/AbGRVWFxgCP4z/VsaeHaNZd8m5Mk2nb4DBAP3SSWDxCaFCNADOYPgAdADBYNrCPz2CHr1g5jZdYPHFtT+jSphgHC43QPGA6SaOIPdA3wDpVhX3nLeC/pgqRWDLYM/KY6dugFZ6YCpIrzEWYKDYYA/ZnreA4NcqR6h8XB4JVypqRBSdNRyFYCbg6/GeYODgzVgmQP6g/lYYmBdkSbdECFqXGBitSUfuC1UITCKmLZ9YVBblFv90njjiYCDW6AsmNzwlOA7VKISz4O6cnqV3JiVHKhgLRyPRD5OjE0wxOUDn6AnjdmK+nhzVNhJTIO3oFSJ0onXAyuQCIlIQ5Yq841PeF0DRUg14OtJ0EP9HDhDQtH8Klp4rn0EieMDZdlaHPLRn4NkKJVoxNZFWohDtEODWphNIEMkxhlU8JjvAydOiE39iWSDqniBfVyJph5ZTneNl4m12MOU543qiWRDJMZefQ2JP92toG6JLoWMYf7E8onHAxYcnpU4eMTNJPmRlR14yEMfCTaReXJvkUxDakPzFU4Mxom6Q1N04E2/eKED0JAFlVI1c6FWQwLNGGGC1FrYVEOt1LJDDEMZHOSJrkPQkKuVAENzoV5D14O6bD+V1kMxCtocgpi33ZBoeRwmiSR4/kSJiU7Y+vkgTRvEyEOO+FRJdIObHMFDpY2sYZxVckPeUS5NxAl9cnfU6lXeQ81GD5XMQww09YmPRPtyImxW6DDEsgrObKFN8JhYAyyQPomSNK3Y3RzSpT9orJiCAw2oZEloQ4JhfXqHidMDBmiwSfBDTYwcSclDuQprie9w+uEqQqd43ENMxVZDrPC3uEnyeJhOQ2poxomuQwpoXUMeQ4BIbU0FQ1/520MmQ7JhgiI3ib+DuoEAmLWAedSHQ7joqyXD1IFNYPDSKnVGQEmBQ7tDR0NNwNeo8FXTia0DNqBvQ8MS5wMxiINDywNNbLZDQ0NYTUlD/UOqxUN4oMOG8CTRBkNqoB8GpdhpQzU6Twal2JtDSFpdQ/tDclrhQ/tDlOrcTY9D55rYw3ZD3CqxsENoy0PCVbMSx0P7HIdwrkNNfRn9ByhDgzve7y6eHO5VGOgPg610ksUrREVaU7zDaA+D5bx0mIWsc6HKSZzDc6Ecw/TDL0ZaSXjoj3m4zbDw1KDF1ELNuWgFch95ZkVnoj5ypkMSw1XUCnJ/jgroCimXoRzD3UgdUUzNT2hzEMbhG6i0NFLDF/l6w2LD7oypSXvAbMPBCkzD1fl1VRjooUPSaPtoJsMWbCrDJOge3RrgBYkOaIfUmM3fGLaELUNXVShigEPxVWOUvMP3+TlGkjTCw+lsiVAPElHDuQqSw3zEdUZCw2Mq10OszcjoTpCYxau8jPBa6p35osMsqFA0HM2wNONyg/naw9Ny4jTb1Haqz/kxw0HDMGEjVTXDoYxyzU9oIchauPbotHLUNKysRcMREIP5gcNPaFzqZMU08Uw0OcPxjFLNg9Ryw+Q0/MMuwyhgpUYkNJNo50MRw0iSccPPRUa1TW1bRCwCAgRAbPKpf3ytHE1A9wJ6eDYm68O/AvKmOaTwKtMU+r4sBJO4z/ph2FNEnbK3+Gv6LyQ0VAEcaKJDNDEdPPxSdRtFTOgvw4B1J8OcPZbUn7VmZMdt7Sh/w9/wX/h8qbgcpEiQiAaUXOpntbbAQGyyDOD828OwI/pMzgRBGAPsn8NDHEPMDxBOuvkwQrRGzOP63nzq/Ot41UV8FHZ8BCOHKDvDXfLBEEJNMCPJ3CtEvbWv+Ht4TX0Y5do00NDBzOi0neislLoGFgpqjtXo50IOzePh6bBL8D5Rqy38I02lbXzeYG40DRg8I6zi+HWH9oIjpvZAtD++MTDXKRwtJbWIUBOlyiON4oTlkx03QgojHyTlHemUlGSI5LXoRnFiI9VSDwTnpUIjcAo0Kr+lvCN8tNYjciMJQFwj0eURHSwj0xxKsMwumrTaKPjOkuKiI1LC5Yg+I2kdCUSHzSIjNiPxFeyUHTACIwaUv4puNP/6JiMqSvh1eiNLpSPQKiNtYS62VJz0kMuhbWHddQToouw6zG1huiF8KCd8YmEltfr103qt4FAKiSNlI2EIPTTSjhRl1ZQkzIjkkbZyI2SmabXmIy4jO5gu4rGAkSP3fHyIRAr2Iy98Bojjtc4jLtwgwE/4/TiMGi98ODI1I+1QdSMICCzilSMvfO1hJSNVWfd8gyPbHMHggx0xHcIjiuLZI4yUSHadI6Xl2iMYpq0jIxRzHfUjSFB8egYaeyPVI+i0/dgoKCd8NyPt4v51UiOjZsQE1nmVpbkjCiOSI3sjteE2NGjuviOc0HAKGVYAo2sjIuJ3eIsjEZrt4uwjUiOl4ALizyOTI6/MtyOusKgjmBBjI18M7S6rI3wjiuKV4GcjV/BwCocjZAAu/Qfk8aSXhK4IcL0ZDKSj2WAAvWn9Yf2H2CSjpxxtoKPcKJBXHD89En3bxZOwFKMso+Sj70CUo4yjcf2AOJyjd1D7HHC99KNCo6J0iJ0Zg3kVxb156JxBpBWg8DK2X/CjQIBwkliAIByeSqMTRc90nOSojH39PPAF7TqgofDqJFUN2qPgRUTwng3Go9o4T6Xx7UIgFqNdOLxkx3ALOTuIllRmsFeoc57iQLCKA7B0pcME5C5bikweung27NO+BUBlhJFJqqMeo44eC5mUQDkNPwyuoze1gg0ymbMyjqOpsJ7kGViNJvk4HJ76oxmIhFTMnuqjOYTeoxpy50aMA5aKVkFNtkrsdqPSjHk4JaMlHpZAJwwx4IWjesGlxOmEGExfikqesYROo0mjD0RJiCKM/qUhFQsp9AiNvBBMcnipo86jhPxVtt44076eoy2jiaNIwUf90qNmo2eB06MqPlQYMkEMA6uE05Q+o3V+bPB+HnOjT9mj4O+MsqNBCPKjQ/DZEGt+hvij6EWjw4SDo3mjpraDomqjToxEZHo+gL6Xo0EI96Pfvi2ox572Lk++2aPhUTqMvybKWf4w3uQllKTePaMAkFgYf4xDtBejU6NhA3+j2o0ZcAwmJ6MsDS6jZiZpMHyt+aj7zc+jVGQoY55Zrk5USo+jmN6GOKjt1qN8aJGQc/BmQbi2C6ND8KdB0i2ArOR06GNl7YRjEC7Oo9PtkmSbQKjtkRDiWZqjCWSOIL6juQOro5xjt2VIY5OKrGMEdFrq74y7yCmMhoQ6jH2j+v5wY8Rjl0HSLcJjYK08cHre/GNpo2YmXuWNDa+j6UWsLjej+ll/cOC+OGMadHO0AmOBo9MtP6jTIB+j50Y/WXu0F750IHreumPF8ABjviYtKSRkP6O2Y4Zj5mOsAW5jCH7m8K/wNKh+jGujBi0s9SlkGmNxZO+jDGNiY2hUImMvDEC2VPiGjLxjAWMbowGjXGNWqO6jS6OO/kjk2bC8vJmMFwMxjDhjqf5aY/5jwfbnfdBjW6MVXmUuiqMWY1C8ZErAyhb2ybxuimejhfaRYxpjJS24YNBjGmNUwwneTvA/tKO0n6Otni1jOUDWtLejMTgKdC7strSVtN1jg2Nw8O+0wNS0OEEI1HQOtPmjlrILlONjNy16dIm0NmM8RQfgCbTItJVlPqKrOQGijmW7Yx/Zd1h1fptjStRx4JG0KHS2NMfNlbSMdLRjk2NWY7djV+gItqdj02Ofo8KE/HRdtINjP83hLq9jFmOqCp9wy2OwY0Rjg1TQwJtlTTjztD40Iu2KhPx0fNQM1r1k4nTUY8R0YmPCdMO49LTdA8e0ObTGYze0rHQLtFDjnHS3tGB0UQifNhjjibTeYxiIKOMftOtj+uVdYwNjUnRaY4Dj3F64dGtjFozodGUupOOfjHB0q2PN7KBjunSXY3a0/XAe7DfZslJcY/J05nRKpkJjUzTWdH6BFCY049LjVHRTY7DUw6OPtAx0y7TyiCx0f4rLAJbt2OMa46HscmO33JuKa9EVjDRwU2OutDqgCOMkZJTsdC35Y5bjjOPDYy8ghnSro4bjtmN6dBZ9VaNULZp0bHSITKzjjuO33Pr+Y2NXY3DZ0nTeOXLjS8NtNsnwKcZkDRnChXwT3XwNv+lI0B4Cah4NAvHjeeiwwEnjmKiQsCuyzBmVcIQGA7B6QoyUzyi9o7o2FKqwqJOjG3iZuQQ96GOBArbo/6h7+s6jkH4Rohuo+QK541rpjeNnLZlibfJYWYXjoqCjJDAUJtjBHr5CUPyCnIUNUeNJFLLon/Cp43EU42C58BJ1UroanEaj3eNm8oNgRP1WIIoZEsXL4zx0w7nFUGnw/VSvesfizgLp8FXjkBR74uCC6fAOYl3yuqil42fjdhTVlqR+4HRHaDXjheOVoBdorePQY1+g6yrkim3j49Tq2A/jwGOlhi++dA1LbcdEg+NkBonjcRRj42Ht26CT4/OwOYzFNT4Uc+Njvi6g/+NL4xKNtcLf48DF6+Nv41f0k0Xb45eQz+Nw6NPjd+OzvuATQ/Bl4xh+JePD45ATtrruUBljI+MMvsQT/eMDElL0mAjkLJYZ+BM5jCvjXrpb40aj1uaiGVwTY76YEwPsCrj743VcFRkb4DCCe22t6QOIJ+OwEyYkHRI67ZQTDL4X4ybtChPmvhXjtrBFKIP0MeOSHpITH+OtYzFCvSqZ3Tjt3BUqyoYTB+NfevRYTeMcE7YZBeO/4wvjahkAE7fjjrDTuUoTfh4KE6gcG2Cno2p0d+gwSNECVmT14zRJPhOeEzwTkBQuMYXjJ1DeE+nj8e3hEwm+2zEp46J0FcL0E6fjKxIx4OITJfByQqrujDnME6gTzBhKzCfjSVSt6emECeMyE0bM1AagE8GcNhMaDSoTgxK+E8U1YJJD434e9aBHaHHZKWSNE1cNzRNASrQTAu4L3XUNDQIdMXETChOMI6ux/b4r6FikuRZcvlkK1mwTDoKU7uTe5Ol0VnHy+L4TcxNLviF63fXZ9Du+TJlgpPzwRvKtLGqkI1hwUD4UDwpb9YlpmnFZ9IcTdKQN4CJxgMa7EySOPVlZ9GkKMpAldEf4KdgvGe90eZasvtxaII2XPbO+MxPOsFt4KVA6uhMT+B5vEzq6mpqN9TMUK1m0/MAZ8LD74DuQzvyu2NzqSxNkEzR+bW3XHBHyxkhW2EcTIApPGSJ+NfVYkzRJ0+jSE18TDL7DvhrtRJN+vv21QJMi0hgcTeMsztdwfr6AWpMTF0AfcNkdtePpSo5QLJP0CLWYTrD0k6wGYKSQsqIZPxOZVOdCL6Dkk/vjzs5okySTc/CIk+x+LQpcpB46VnGIJfikUxNuurB63fXGiLR+DwoPE+u8/1lCuvKamJNmpLh+AQC80dCTedZokz/wqW0IsMyTQrqqk+90wayWurXYSpMu0JAEwHCEk6c9okBEo5p+J1DhinbAo9xek6uwg5TX5a0FzY2ek2dmp3QL7lQMCFD0bAGTSn10o2p03pPZBjak7viV6qnkMZMatEmTbY0pk/JlcZMH7S+myYEmfYDN7joDhO6oeyKK1sthGhSB6NNh3Kh9ImjhCSqd0VAok4IS0MqwcKC6ggK8itDzgWsVw3GGqje+oVAJ0L0erngbPWnM9+7nquQCIpAVIpzqc6TeqOGqz6TFk2mqpZOKzrwUnvpfyKrOkRRnIilhvcg0FPpJEgIaFNliaVKTkx3oT2GdlM/kAODgBF9xp9H9k3f8ucgT5PZhXHCVcfye+r7xhL2ThXSbk43OY6T1wnn0UFTBkvXCR2EGENCxc5MnPbYULsJbYZtI/8R70UBTRdDbFKRm82FcCdNo2QwZYQwUh9FcKGwKVZOnMbUoE2Hbk8eThoLwU5tiB6E1YYeDd+g4UwwCiRR8FIU8Pt4CuMfoTijSzc3xd2J7wxeTsO39MerS2/x4UxGiDFNbk7Bwv+hrkwzoqkJMKJ4oVFNn6QeTvFP+5Hz4DIHIUxHdBt7bk7vIGWHehIxCWr46csk9ffQu7ibe4zRNKJqCn5OSohOTxNBemahTSgRcxpi0ylMulM/knuR8zqkUo4oLQjOT4w0PLq3ONBRYGKLOK5ONArQtSgSZFJtiyVz2UwNIEGII6DSIl7jLFBRTaFOUtIhTlRWUtIAj+M61k6A9ClPHdA807qCMU5HxPnwRU9DehM03eqFTJhQJ2DkIB/hmUxik30Xrk818BKLCU0RTmXxeCKgCARRkpB5Th5Ps6MdMhwx7kxipBaSpUzkkflN8zjQURUw2U2RTFXwzzoFJavJ6U354BVMGrrFTC5NylEVTt5OwqqtkADyCghTtcJQyUylTOVPufAtCufRpMO1j97ygoBAOlpzbbXNTLsFvxiDob+FhwQxSNxTfwEkoJ/CyXKbhLUEIWSECXvS6WjKxJJZuQSGckhj7AcQoYVmSGGzBoOKrUxvgASgIWf7k78TngcdTybHlInuBlLncejYC5MHSIIxCym72nNttrV7KykOqSp7f+iBu/fDXU+X0ssGaIMMUl1MLU4xCb3Fgwfr2jEKzEWzB0x7uDTf0exgi7eTo9fSA7NSeTuiPQcpgmLQgCdRBy2Al5HjTK1NgGew25/Q/xBBM5OhHU+dTtxS/UwdTKeTw019TAQ1Y00zTnljmwanJDd000MtTd1NgGbaIxMHk0yqZ5MHE03rtAtNI6P3w3oxZDdPx6NPcWVWyXNMY09Lk7NPxvmeAoePUwzIS0V0/xtAJ8DxKVRYdrfHHEQwQEXC1zVxyQN1uJhBcev2KJrJeA2ANSe+IDLF3MN9JjtMZff6dJnCn9r193UmMgT3skXre03Et+JHu01omYlGbMC7TDagwHGdUwrqP5IN8owGW07ZoIdMWDJ+NAdPiPPte/6EQ4gdCDwLoJg/xpvXBcEc0ntPVPidJrtPkwrrTGoFO04kk70lkgcTC3FWpJiQJVYgnfkhQC/bswqE43gRy4ZcFuvBh08a+l3AV9VnTJLEEwl+yPNHDcrnT7JRIPNdyQ9O6lMnTavCk3b6BuGDSwpnTVCbj4C4MfKn4BDHTi9PN03F11qJaEU4dttML04Q+Uv4LATvTRhFdfIek+tN7iIBcPtNCco1+oxT505wuUly6gfdwe9P/AfrT/+LcVUaBZdMH/ikdxtMoSGi00mhl0/YYrMJe0RTw7hAJFOjxTxq2OOyUNNFgDmAz49MhoIhiQDMigdVxI1J/lfwmOAlf07IEI9N+GO/T5YjoM0RiKFjPpObTf4hR02wK19PNlWIpAoFpVPUSUaSN0xfcFDNRhNgzeiCvoitCqOBo8AG666Q8OH/2ptMegTAzLgwYHMukXDOEPhzBaDMb0zKoryHAcggzyeBIM8mk4vG+LKxIYEhUM3BIIjNUI27x9A5rnMImdtNcVbwzJ9M3kN1KRdO4uPfsdij4M2hiF50/iAfTOA5GM1bTxLjRXURw99xGDmYzImz+sfqVUaTWM6hQtjM/0xYz3cm7pJ/CeCTf0yvThD4mPIIzT9MRwN4zCMLiuGfTbDPRTN+mIoEH0zbAhJUVAYhiDgxaBGEzkiS8nTmkKDMGSrvJd9OAChwzvoFRM3vA012pJiYzm+yUwpozksDlSufTaoLVZqomnLp74KEzn9O5M4JKGTOo5aIdj1UnzvucynKvRuTCoOJepVzGgD4RjKrNZdMyUSWkf/hIuP3UoQxX3vfTlvxEcEMzuEhY/Jku3TNESEWOr849AolSU+3pcoFJOric/Pb1x3H6LmfT8eSYPiszVJTIVGjwKvyvzg8Q2qjS/AMUTtIYMxMzF5CWxhEMGJinpFMzf4ho2D71czMjUu98/87w0OwzSsC6ciHTQEwRLg5iTzMaSragQ7Fj4t/TqWAdVHhMeM2IuNQzCzNYzYiB9DOajDdegQKImo5wrzPEmmNyaLNWUsNKn7DasVZSyUrDoFPkOA4zMxczmLPvHH5KeS7EuN9YH7ASVIa46Bj+cmszoDOm/NLNc1Y8UL2MhwyHM3+I2NgqcNCzcEg1jDuklIGoUDyMk6Rmek7AyBhTcqSztbInXu0z0RjEs7hwuLMQVaUzArPKM3z8WM08sxIgjBjuBOCzAg6IsxFwELwSDrKzunIF5Mng33xmLp8zwjMQRW0zZrOKDtczhrPMM6z8zLOEzdqobLOeKFqzmewird+QGDgEvjeNUMW2oAFAZS1/sj6zVKa2KEqx5iD0GhVQJyat6MXmCENc4IHNP8C7wDpQYRhFIULFyr5bkH6zk7Ef7jNOvrOxvrKQr7CqeM/YQn4GkDJ45aAN8eJ+usgvwMWzaBxyyAGzgSqJVSu++CFdyDWzzC2dtHuaFbMFlEIgZbNFs8/IUmTNs1RQy+p6To++BpC86sOg3bPFyNWzykNtswS+LbMr/COzHbN9s5/IM7P1s71QkqDMIIPNDbMZHE2zMpDes4NaIc2OsaGzRUgMzoO+kbPtkG4oz80vIe8E8bPhaPq+/iEZVq7Gri2DLeOg7+o2KN2zm7Nnlj6OE7Ojs3YgUY67VSa+g7NLqoIc5yAayCGWg1ohLeSwONq76lhgHrimkAIer/wrs7Ozz46EFJBzriEEnMrD3S1Qc0BzcdTO4Z3N57MZHAHWgc17s24oIWC8fne5yuCqUWAc2RC1schzzmw/FlB+QbrHs3WOsVbXs3wath0Mc4uzLz5VHGK4jrGKFr+h0WD1vm0h/lC+KDxzCWRgcz6zq9TNvrHNa7MKaABzvi1js4wj+w1UIhZ0nRCZzV1QLEMMMvXwGHwxoND5hH65sYt0rFCSHMRAkRBCoS/1RKBkKvB+6nN+ecYMbghqLVPtzZnMHWlmwaH6oJAolcCAvih8oDaOc7CI9PxC5LLokhyF4FeMBjCYUJIc3d1Wc01qIpOCcBTgqH5LiH0NenP3JGihHv66c+5wWnOQinr+Wi6rbKpz/3xL9dD5keDVjNjNuT65kMxw4YxJc44oteAJZFx8x5COKMzmMXOLLJkoqsLGiCqQSbrjYIICX+BmoZ5zS+WgAhsIkIrJjO5QggJFc2pzV/5ZUF1zUWZCoeANh6EutnaKhVqbAU4MjXM9cxd+w3MtFrVz9x5xcxrGlnOGc6VzSdQeOs5z7qAac4IceXOtLTC4hkCWQz5zhKE6c8lz2eNZEMtzC3MjWNFzQqHvEIehuPWgTo3T3Oit1GWAZqEs/jooDHC8fi5zfXOt1DLadoqBfh4ullEfU/98BeisKNxQGxBpc5FzdF6Xc+T8beisKIZwTL4lc+dzdA20vhFzp7A2KE5zQXNA8zYoV9D5c+PoOiiCqMYhW+TXjjogFohJjHSNhPNZUEjzvXMlLlReuoiHc8X1rxAnUAZzIoZ08w+OCQjtc3bAVPPMpADzsYyk8+SQ33PtcwTzHpOxeFNV3EyiLj9OxUoqfuw4oCwQnZJ9OaAnJmyGUCg/TsLzNfxqfvyj9xzi8yLzSwhi85WzKfwK86mTF2ywc/LzKvMLxtrzhvNS87796f0dY4DKpNVdIF/ZNSCk1YUqNTVFIMuhhNU8JGoKLxC9CNPoxe5AOe4sMxCRGE6wxThU+J7MlRhscL8E3+pI1bbAsdCh8ybWtNXNTMrVb+ouTCTgeNVrFCEI8oyCUciFumHpEE8W5NXx88kJEBSu8VgsTNUBFDz4TGTh81WgDcSRIGrVZfNiOJZIaZqjGEXzwLkpLC5MNvMLOa+Uasx9neueu8CIuUsjLvNp825UjfPDhoOIDsQ184rVsfNG1RXzfRCv+JHz+LnR89rVIfPIhY8cJkwjcAHzdvMO1XPzdPEL888azrhmlgfVkkC61Q/RGfM7RCHz0/PuVL1+KW3ywK3zntVqhE24nbY11TseaoJEQe7+YqCQjqIazv5pTM/z7vMn/nfzCzlO8/HVV/NyCivzp/OXBaQ0B/M5NcuKP/MH1TJ4MIwf8/nVO6AJOJQg9QigzAukpH08zIgLTX438z/V/dT5uBfzDdWQC2Lx/fOLPMuKgfPJ1WfzcvGREIN+U1AohGMgOsx+1S2eSEEVxLMaFThh8xPVT/PoOQFMB9XN81Hz8Fg+nPXzyfMr1SRAV0S8C0P+Y6Tr8wU1YqhpvQXzmsS2FMXzIOHyxEgLPlQ9MLILaAvmUeP+sAt+8WQLPdW4C6QL+AvQuGq4iLmmYWS1LAvn8d5gH9Vv88GE2AuANYYLPPjGCz/VMFzX86O2Jgs4IFVQ5gtwNcILDfNB8yTdQThUC2g1soRM8TILJJ1iC4m9EgseC8UMOfPYpIQLAAsCxI4L9VCCC1TEFAt2C1wLDUzWqMfzn2GakizAD0TD87qSunCpUXTxIAvvcIRRwAshCHkLAjVW83rEOgs67iAAcVlKxXJzIjLdSEHAekwEg+MO1uTjNQiYxQvMMCuFrtXtIo0L2QjTNSJCfdlNC7r+DtgrOGGCo3KeNUQ8Z2hTkCycmIO8Cs3kysk+nJ3YagrxAPxR0kzzC7cOZjmQxC8itw7KiKcaVjVjCzRZW5Ku1YMLtw5s4Do1OKVm6McLHQu4rAW4wnGJNVlujw60cUo1fcJnC+0LNX6WtjjQzwtYwjklVOgO4KU1rkjkxMJjlTXhg+UyIei9SSrEWCUVgq3JKsQ2fOMOi7Th7prEcrjqUFbJfzUfC60LYjDAtf3UwDJnaKZxoIuSrPsF7wsUA47zbQsxNfQV6w4B5M0Lx4NqCqiLMjVaFJPOuItqNXaDDcTPhM8LbZQ0i4yLdIu1wn8LBdVsi4TGxThF6FWQsQsbA9MLQcAiUaDMGwtm6Pkg7wqgzBDEgvNjxE8QIMzimv4JEmBdhmR4evMuEPhOcMw3BAqLcosai6rzXQmyi3WGyouzxPU6+ot78myjsrXQzDlGxouq2bYQRovqiwaL2L3opYRk74HEwHnQhFhfLkKmhtCui1zQKVh1OJ6LjMzGYpPQbMJ87KGxXUGtIsbsujgTmFKl7osdYoqQiikUbEfQlyqoQW2g0dC+i1jilzi8OAmL2ylUUOmLhP25HvlCXwRtqN+u9BWTOCmLt9o5OoepqaQyjcNiZxzOzO9JcOS4JPQ41jSaYkmEP9oKxCrQCGhjsc5YszTliwJKP1CBiy5u1Fxg0WossnO/WoXKc9CCIrjlDEb45WqtteijSkSydDiRSdKBDEaU5ViOwRhULqyl533Ti05AGYa60MLQiCX5wNzQouVqreVChmKmDtqOcBx85dzQ3OVqreNg2S4Hi5Q6XPQS5dzQUuUr3KE+64uG2lITdC5Li8rlGHyLi3OLAoQ/i+/Ok4s65R+LECip0Gt814t17tigqdDPMkyY1ppriz1owEvuoIuLr5QkIuZ4vuWR0Fwqr+BoS1qBBV2H2kITt4sjgts4wwMmgb7QceWYwe1A+CikS4hL8BgmroRLyWLji5fOuEvo0ChYgIEYS17l04uri2CuGlm7iwASgEt7oALlWI5bi2BEjwHFi1h07xA1XTcQzEtIS3xLICAsLLBLne5cS1gxR4u8wOHl/SlyS/hL+oEaOM+LnbU4Sz3R28LYS3woOzi95UyYN4uaS+f2UkvcsKpLtiw8OueL0C47ONPlFgbrHTs48+UMSwvQXwjGSyxLo0p6S+7aC4syS68wHou8S/BLskuM0J5LhYtKSx6tdx3jJozcGKJykQwwc4bywSqLv8zjoJ4G5KZ5skMwngatZhvtwwmGXPFLsUtl+LlLQtg6i/sGBUupSwzc6UtILKlLxn3a2e5GtexfbhsYjjC1Sz5VO5QoxY1LB1U6sFN09+x1S+1Ln0NvDJxE/KRFtHT4zk7GtqzqLJB4sOAcWYjiojeaOR07ckaKZyilaho8FyBTS6TuZCp6MPsclKwrS4uoHRgZVfIk/uEw3GMw/Cod4WEY+0t0gzARC7DKXKFWPFq3QIisC0vu7QAR4WmrMt44Azr3Sx4SuNCU6kdLlTDf7h2UnUvxMpa0qcXvS3FqF0vHwFI9r3JmiwCs5sCb7i0ob4aiqu/c+dami5vt9tRjBBDLvtRQy0Ws4WjUo8YJtKOHUIrAo+6wyy7UiMvL7rDL0vPso2DL85kwy5YJ2hFIy4TL5vOtNkwjM9yYtiNRXWDTzgiKLJ4R7lCc8urhzH3uGDlv3P86SlFU/SYF9Iosy89UaJwHZM9aMrbPVDC4Yyy6NhtanFwUdpiK0hZ9VS3cWWqkZo1Rz1TKzFQRWsTJ7jLLtHbKUjRCklGcXBLLIsvm/FXuNYGedriKoP3KXLLIK2SioJzLGzkdZJL8xstcPNw1MKgvoN29jMuL+hwsT32jVVsL4xo8y5zL8Dmm9b7LXe6TIoSKf72cy8rgIcu+1Hd6HiQ7ZCLLLjaay75cMAYFLExmHlX+y/Ys1stBy5mRKFJCVpzLAQVtiCuAHlFAXAic8uouy/XuvwEvds7LqRA8bBxIOTi+LI38FVHKXG3ZdstVSJ81HEjLfgiKUmDdajdyBgb0iubwpu5ly1ksJ1Ce7lZgp/r0ip7L50vbzDsggcujVZnLk8tqdEPLAgDBLFCxDMuexNrLLAVYfa7UGQX0iuwgB5x3MJJ2BSxwCA8Au8tGbMpSlcseVeCS9uoly9PLssvOy4TwDst5CovL6cvTy2ichKPusxOhz1xM1DJEfjAT2D5VWuQjkYMEXUuBynvw78vlUQ6l5PJ9S/cergSy2LysuBRhwvjyEEQdREfSmijvpRxIJs5OIu/LS2CHkUgry0suBlF5WrpM7jZw4sbOyttLEPRaeP/Lx0tvqpIhZ2zHS0xqU3REK+dLiOge0nMaKCuYK4wVINxBMMsEFJJTXBYwBqq/jmQrH0s8KyXu38v8K0ToQCseaqWq8sVpg9I9b0C0y938WaxYUYcwFqXYYUcwxCuj0AJteRg2y6uR0SHqK0HLo0h49EtOQ8vZiApRuYIeOqNV4jY0rFb4HlVOkJ90CoL4fZxcIJRo9Eh4Wb12K73z0YRgZRbLJoKYocegesuoglA0tWg57l1gU2jE9AiQNssrZvqhwSs6K5orzXkFy5TwelHdSBQBDu4durq9CkvKXMGlaivJK9XuglFJK7zLRLAiKmGC2Ssa7Fp4z4Tp7tbugBRBKy5Y8cuKbnowuAg0ZdbuCipCvfmE+Sv5MHocDSs5ywwd2GHpKzdylip5K5zLtpaqvYJ1UctoBpoc6ehuK5195PTnqGFRiPCu+NKL8SrvhsvuAyYDSM8sJN2JSwWsMwVzK6WsjxXVYB42cMvZS8FUcDRIy/MrPCqLK1tQyyvprEcrWyuRVNtoo+5FKl5txkl3OG31cW0phNnYhW3+wF+TpmxwbWFt7kmdAnSkFB5EMfvg1+gHOabkBek9CM/13W2J6Cd6I+qtECMwjys544NtYKtvK31tQKtsliPqoKvQq11tcB6J6B46pmTA7QRqIGEwq+GtfenNJEyN2h7L6LYoSKviIsiehWE95uoT223WSf5oe21MHqoaUGgKZJBt9TF3OtQNyh5vk6PYDg3rbfFoTytaHvTTvKt4q64ekp6g5pHj2Ks3TXs61A05HsxJ+0zhzNANFYwd6L2o/B7/bd2qoBlgDc0eMqs8kHSrUg1JbeuquLrcjcKr2x76q2geSHygMVqr8hM8q/pMnegEjTSrrngpEPSr8bGoq9keGqulPJirm6NdOtOshKueHuDt3UjAqzAIxKvkUz5zqO3w7VloDeDhHmjtMqvbEHKrBH5+bTKrbKsWjSGr/zpcq6eK0O3VYiaWOeNg7b3ouKutsIrk7ehJq57Y6GMuq3zpIhl/bXC4ezFMqwAIGAhyvseT9qtpE1Ft7mHWqyXwZatzqndphatxbUjm7uQuHlltlx7Gq6eKXh6TqkDk2qs5ud8xoUyNqwke1WJ6eLWrMR6BPU6rN/BVq2mrbqtzq3UeWWhf4JTt0quuq3yrTO1lqhPEdytbq0Qx8nBbDe9tw4tG7m7Qh5pTHrceTOj5QpiW8x5OSFcNp6uyICCeZOgfcg+rZ/5Pq2CCL6sPaJnkZKXZaArtE+QVXNQgGg1vHo3p0Cakk6rTBrFVQDrtYGsCqJ3Irx4XHutocrTKIF8eiu1XqyhWa7Ba4waxlXz87VseuHE7E07tqu33qySNMe04a2erXu1j6d4dDg1gxqRqGnWZVIDtSulCKHkY7I2j7YIR16pu7fCe4GtjFhaNrSwKsVacD6tz/g1qWA6/4yyeybFTWMGqzJ6z7QPsWNjAFnajeNjTKyOZfsjykiXw6+0TmfJryZOP7UTLoMumGINg7Gy37cprgVF4Riawyyu/6Pc1D+0Bnjd0CmvL7VlLMwnwOGZrqmuma8DF2msGa3mT1UsQIcdJasxj6CmY584iyFZz05hECM/Yvy34WDeDrbXksPeYNbPNQOUk+5iZlDm1oy3YIFpoVKbiI/Uk82XLs0PgOyQLmMpD9MjBa6lrkhxrWTr8GqoDkUUQ9PydCDT58chWc9WYu5E6Aamx4ljYQ+VrFC2pZdD55khWc0xYPEOqIc+MtFiv/KNI+IoUZHv8/muZaxBzzGQBa4NaW+ijLZ1rdaCJEHNzrWutoF5riKGbsq2gL0j0/BlsBPn6IetzlWtRoBqY3OppqFUKFaCja/6MHbJkKNxtWHGiGjjGYWspaz5r0JAqYI8kPmsYAp1IrpAhaxkcMBimsJ+Y8vk0AviKhWvS+c1rNrDra+L5EAKesctr5xDFa4NzF/YjPPlrU2vMDqyQ2WubzW+yhAJGLZ2Rl2uLLf1rGRxna+5rGeBkFFtrOKHYWK3Uk2s4oRDrrdSza8DrgfkVPqktH0rVUb0rXqEZcD95i2v0/KVrQlEY6yWYpQrI6z5kbvxw5cwCBvwnaxEKgq1w6xqQr+QZZDdr8gLU64TrO/lBazFzLOvSaKSQMXOREK+hxOspoV1lx6tcTukBaqQ3JPxOFsbgMm5s4AOpoLTNwcyBbBnwLJAOZOrrD6Ra62VIjS2666/8Q5QUcdswpj3ucICtgWxQZU1rqB5y6x4MMBh1a78txNijcl/8DxazbFhZgxXucLiI4oqYuE+R+us0iufIVWshEA78PHS5FYcQEPD3axNACusMzhHMGusSuIwoH82Y/BK4ggIJ65brSypJ1EgkorBrBtlAjMaLzRuouiGHoQigOoq6hXk94lGqZPLrLJCx+CPN5esTZAYjqbDV65woF82G65woVvEykFnrJMixcGlmOvxl9baQlesc/MXrxPhr7oJyp2x54FtsDkzD63X86mvwy0GQQ+ursKvUBysz60X1E+vUy8GTsXj2rkEAi+sHK2vrp2z3RCcrhBQS2fexjhABxgvrc+sSo/stJkxmOI3A1FDFCXeDl+vS8MkY1uTeSvTSC50P68FK8tLfMm1k72grgD/Fk04UEmssWNCVGBfrGlBX646BKZFf6wudTrBKVNee3J3Bo4jsEF6QXSAbtuy17IqoABtY7FtLFp0wSI1aaBu+nR/rO9KZ2nudO3RctnAbSF0do4QbFQJuJTAbv2wPOoAYaIYROHvgg5CCJReUf+tMnSujBpFMGyWGJHTa0WAbkTrvbBJQHQTcG+p41WZNJdwEsniSwHiKiiUQioq8VBu9wDL4QOy10lKc0htsJF6V7BBS1DQb8lxwJC2Eqhv52M7ArvmCJRw4TMBAhDIbHFxYG7IlLBvDNsYbELJ0HW/yOMn4sviV5hsa+KuUV+wp/vY6vTFP684bZkm2Df1gL8XncFwbMXTy0Wwb/jon8GJKb+vmXX6KC8Nv61zMoRvpMFxqnYHKig6s0RvDgeLkwBzk0vRdkQUQRC9OYLD1aGob3NIa0JkbWhvmG4DQb7yc6oSY/YEmUkQb8OyxG5IbtfWn0MSS8nzqG3LiA9ZxSeEbFNAIAp5QGYaRGxPsHHilBLcMgcDA+V0boLFVG+Ls7RtewPR4zRvTDFYbjKUv62ZE+Ru2ILUxW+ROXTDkuTF4G+o6iXSZMaDSIexeLlEbAxt00BsbyOjF9W3Q8PTuG+U44uwVGxPsg5C4zI8J/hungSYgvezBGzfQM8NNGx498kLGGzVdOU5EVfEbjMwQipCxYjB4rgXVTxvfTvPaLPU+vP4MVaSPG28bDxu/G2CbblK2zGDkixtzG9vQMJtJSfTSNV0nG8MbhJhUgL0x8TiBzKkbXqz5G2sUUkpwmw/MTB3jG1ibUcz4XGUbAkHfuP4bMkrXG68xr7nVpEP8jhvdqY28tTFP6984FxseG3NdBQytG5qumJiXG/Sbh3D+GzNTZ8X8kJLsntxS3cKikzZP6N9sshum7FfrgOwcXM9sd+tXYxDsme4lhknsH2zUUFMEMpuw7J2Bv0vZRKLsVaSU7MM2g5SImHjsdjLi3EHQZptMtppSFOwu7MM2xNjFGw7s+Fw+bGSYP/IcXOKMGhvKm3M217D1G2M0QzqKm0GL8lwBm4zM5qJo7FWki8hlbvrruOyeGhDs/JMR0GnsYbbAk4rs+JVp9CzQLHQnbkbwzuz67Iq8CdyR7CZST/RfLikuf2yamwHsQzq5mz7sjuxZFc7sHqJJRNr0AEEX6/ZEQwQVm86bzDBkmKWbtuwOm36LDhtaFE+BMDO8rD2bjKXZm8nsIxvpmxDsWxPX0AmbDbaXDW6z54Pd/NPUkkkjuQp485vtvRF06iGx1CjRFcAepeubblSAK/gVK+ygoNmlwIH3orUEtJKl9C7FCUB/y3+9S9iEYJhoy5us6BD56iHtwg8St7G4K1+gTdIvm4uo6p5not+xlZzbm0DoYOiRrHuoZ2iAK5rSuagHaAwrmtLkMgW4LETqISmwkpHxeViScFvU8EHk6rCjdEBbKFvpwn+bGFumIVhbXfkSKxULaOViHTIrd3zfNPIrzDQWpQfI8IFpSQHur4EzUQdYvri0W0G9VZN2eahYOsWJyvRRB8jmoAQ0PrJWeTztAphQQqiSSOX4fVVo9isF8DFrfsUHoQUwo+AjK3Q0eBjT7BHFmG497kQglb3sW6Nue5pMW5wUdnnjIEnF9FtkmfuYKlvJSQN0vh7dveRbyVqMWzpbb01Z7hlwGlv7QKV6jGo2W0O6Au4LUb3DjltnkuuQS70d1Bxb0lv5vV3ZSlvR8GFRQOh1K23CmiDL4GcLDFv2WxZb5KhDNOXNbFuIwCTSwoh5EFXUVnyk1IlbJOjpSeaeZZJTxQMmgByeEtSghmsODFlbLn5ZgYPF1ytctTlbjvB5WzeSMJAVW1Lg+VvVWyHwlVu+pAVbR8WlWxbzWYrDBnpdy6wdFQSi2J2KZCdYDAkyTJydfbwNMsMC7Z3DWxqjW0wI3dSsyqMRU5xd01sao7ECdV1OvPsyg1umXa0QXf0ALkZd41tSo6ZMPV3jW4QVhhPLnbgcO1uHW0881f07AiNdZKwVOA4Q0QI4wNNgdBV8+Jg57OQs4weEp1v7WzsVb1ubdrWFWFgqmphdvqMaeIUC1p05RquFfQKxEN6dvMCqOOfyM4uUXY94E0TkVXnZHND/WxR4rAbenbppxTj9mOIT3p1oab/9P1uMXfCt2jijW1NbKkA0So1MeaDIraQVi1s5QPjbt4VQPVxAGrzr/cEQp10/eGgDjNtbXdy8wEWbW5ZdzLw0SpTbQF0U4Fm4GHzlQn9bH/1LAjFgw/ZBo/pMjF0slJGMGSYmlkfZvaT/W4soHgLCnRNjStvy29zbVbYaqmzbLnZZuB1szgJHWzQDaky1wArbhttQKCVac51ho62eotsIXfhAc564oNbbKtuQ3rFmEdnk2+OEI93C23oD7jq3nRrbuWVyEzFgOttmA6zbX51o2wpF8BMe2/BeRtuoXZbb64F52eIIWWM+CEIgXp2u22oDNUxenXHbx81m2+swFtttftdM91oG2wD+OQL+YOLbkGOrTAA50ttsY5Nb2iBrhBNZldsPXV9jSOa0XdTbnGi/W47bDCap2zBd71u6aBECr4BN2yJoKNvQrVee+0yCXdXbZiak29ogAdt6ZJakrMDF26K2gNvh2+e0hdt822Gj9GhO3apdq7xw2Y9bU0AQvJ5wfduCXZjVZdmwaLTb89vg2ZjbydvV5Ufbk50uWNxe0BMzXfzbYnTsW8qgJtttA9UC650z28ZwkIKeXRPbxnBz24edWWNhcD/bZ9vo0mQG+dtBXrNbol2T6d/Ne2jK22dbjgFCPQldZaNK2eCCUZ1GXrzbrdtGXmPbddvqWRdbQNvzWyR2Xt3awMTb/i3YOzbbf9vDpPrb6duVg2Q7S53J2zz2N9sEO19jvTVTVDQ7V16b21Tby1vDLYdb9NtbdkDk713M28H2xDulnZ5pcna7WwadPtssOyQ9S9tAtow7sUBP2xKDztuv2yHbV15y2wOdCKhSO8R4MNS7M3Zw3E6Y24i88ojaO0NbfDuX/kHbvF0MwJSI8ujK203bvXLUBmg7l/6122g7cHAvTPkCNjtXXgI7ljuS2wm0A9vkXgyukbgwO+EIcCM32U3b0ihsO7g7pDyLW3TbndttfC8ZyDs+g8o7CN3rW0aDIGEo3evbXQiROxjdqjsEdEVMEDmyOz6D88TH2wGDSwJR20C25UySuBQ7KTug2zFgn4XXkOqDfD0xYPvb63zAy1QFkqPdUUnYqt0LYzw7XN1EgBNjwXQtOxVmpYOoO707lYNiSUudReh/Y5bUS50vAPXb7Tv83c4IgGMiO1xAxJIs48lZe/q2gIQ7fuV+2zLdqzuDNlrb0zuU2KZ0q1vzO85yRC10O4SAkRCfNv07qnC/NmYgmNuSaIze3ROtO4cIxzsjOzUFs5v7uJgQluwGy8T0IMCW7CjgCQV7QFtuCHwyBX87Gywz/lJUablh7NicTgXAZIjsjX6OMFzkzKxdfO1GtCALbgi7CQVKQGG2ZJzsbWrgyewHrEZIXzvgu5esuLvGrMFErTrtoqxEukQiBWi7DbYfO+DIeLvXVTXLzSG0u/q2AbxGSEC7J1UDAsuUrLvvNhWELLvOTKdwE8t2BfvxfLs4u63O4+wR8My7mJQqUUy78MbGLIDuLTgxBYnAdzYYrIS7dUvjzFR4jLvDiE6suLskrCM27qxCBBtMk4gMrDS7xqyy9Loq6ruTK79GOGhJLL/1qlTksgVVvcyguwAgwnygjW+9nLt0gcK7W70esj/c7rtIu01uzrvcfZS7ylz2uxtIpLsNy9y71FTGuwC7bgVvO5FVN34PlFi7Y2Cau3q710snfiIFDaa+uzhecb2CNgxc9LvvIa67Mv1prDB4x3EO7rq7f62X7N22IgXroNVViZysvdG7qO5QnEQIoKCk7ofMUmjPVgSsqru9eV2gWhu06AW77HwBahUCw5Qhu9O8Jbutux9L1bsFBWa7e6JErIO7oWpKrDK7Yu5sRH+6nZSCuzsRCQVIYIjs7gLbTOG7CqzRnImtZrsbu7u7xqxjaBuQQpu2jupEsrsQuyuO3kiKu4asv3w+Vcyc/Mi3uwdVz8u3odq7mFFZQ3XYTO4tDOLGfUQharIMBbv2rsysfUTwUdDQ/CxAex2U5ZiurH+7w5SmpF4sX7sA+Rvs5dNCxtGudUvPu0nUxqwV9cdGHsw6LLnTuVHqSBtVcrvhHG7Ix0v8u3WOEbuSzL+Oj7t1u7asuZARu/W7Nigo8Qm7SHsZSLysvlzfu57BEETGDKhbNHseavuOPo4HSHu8BLviUT/S0Q1ZQ6bMGyyTu2TrvLszu5h7ntj+Mqq7Riiiu/YwgnuskJK7ciyYaGe787vye7Yd2rvrzEqslHusLKh7th3GrN27lGE2JKwsO7s6KKXMuWq8ex2Za+6G7BswLoSeVDkabxyOe9srVmuxeB/4DnvIRk57R+TyDOjLN+XafamMb7ZTCbT49nsue957bns82UGQi+gbMP8c3mgxe28c6cC76557fxzdhrT4CXt+e6frsm0onUpxlf3+SBGylXD5/Xl78YJ+5OmSOngAA/F0SDUm6PGDd7qvbCzEKFocdXSdnphFA7V7/jrTQWiDGejsnTxwYKn0IdydHUQ9/a17ofid3HTJjXsJnRlwtIO9K/he6jV0ybI4/+vNENCDU1h1JcN7tIOQWKqdlyoS3IN8pHDTe7SDrXuKneN7m/2rewSQ9+sF1HQD+Oudnbz4HIXiIVo4xp3hRHKDyHq6kMad1XtzA05IErBeTE/9Z3uyJWSMb/0fe3t73XsChZwh4Z30WP/9BpILnXlM3zMVe3N7zXskeqN7KZ3mVvdJIPtaTOV7CiG5nYogGAMqjkroWkw3PUsDouW/e0j7q2uw+7Bq8PvydQ2dmZhBembYa2iPe7f95PsWnUD7LQP6Ib2deMHcAz97fZ1o0hD7X2yM+9yD+PsLnUWqFgPE+yBdaMFog5N7Q525qtIDzPsywbaFsxjIG3WIVPv3lpBd0vvyAzD79533Umz7z504ZRyDH3tK+wYDXPtohve5IQMeK5ClfINi+52RVQNG+yL7OgP6+w9sP+reA7L7SF1P8u97g3uW+40DNvsBG0QgEvt8++Jdr0xPA8z7jGodA2oAQvtYsmV5evvIGw4M8QPO+1iyZbkq+9Rd+3t+eiD78wQne3MDu3t75lb7+QNlulLdA0x1A0CQnvjG+9NJvXueG6csYwO1SILd6fvm+45EIhanKdT7tptXmC0D/vtTBN9oMfvu+1zM3iBhCZ0DLB2M7EVoQwMFK1jgxvi5e2oAxMjGRDsMPXs/e3DQ5XuK+8P7UwOldKjQSnhUA/r7iuwnaBn7NftTDG77C/uwjPsDDfus0PH7Lfttmxd7ZwODe++Bknl++6N8dNDF+5X9QvsNKaz7s3v6zBmqnPvEehPMhayG+517dsw/KTD7R/tz+wn7Afg1XRnWWxrP+3o4C3vv+z/7pIOF+/MphPv1+4AHqYtw++kDqfstzMAH4gO7+zKZyQOQB2xufHkoA0JuMCC0g4e6XV33eWoAuivHXZ/7p3tb6GNdqAeb/b26s8xIB5L7SdqZTPipFfsgqU6qJzpUB4JE5/tr+4ndaPtc+0ZBPf34BxJpY9a4AzQCuq48+6d76AfVpAwHD/u9pCMp3/twB1iDCAdPXUgH3/u9ctCDD/sd5CaDzWtI3dv7Xvu7+2I99gOZ+wWYJH2R+zap7vnaByOuxcmx+zrQXoOKBxPMRgfJg2H7+gd02GQHiMmE+0GDQ/u5luIDNftqBxGDa/u+cGvUAgNkmG4HrVh29AnBZgfxWDvoeUWSK/BpY43/IHE62YP3kVLduAf/WDBRAp3AZcWDQWyC3dAHFYD/kUraxvhT+wuDlXvsED8pMQdR+0kHGQedgVEHc8Z/+yJoEynPkeUb+/s5B1zMFAdZaYpkrSKHVjqpiMAqrqRm4QcAzKNwXm1WsKas1NAJzEZboPNxYhpgX1Lc8uKtFNYJoDnCt3hV0BtgFu6wYfmuCAgjYGJbzxBSrlwgk0xiW7DEYq7UFm1AY/DpPpkihfAMIsnBkLI4IjZwTfupnHakTtBiYHlMCgTOCCsiutBdqsbuIG1J0G1MWZzLYFGuSKJXaA8HYwf10FtopiEJ5LcHlXDgkp6cxPK9rZvQG0APbr0HHUSHB4Acjwek0JzQAargh28HbsqZTALuvQfNELmqTludB3ja3ZDMGPlhya0i2r8HBfD2zITI2IfZaG2+82yaYgrQSHgbB05sk2Jj40girjCTSF1B8IflMIJgXq6l4LMHuwfurfSQSwfZMHpyTwet4OsHKTBsw9di2wfzrD/EKdyk0GrQOwcPOik9pNA8hx6lXwcoCeyH1wcWNG8H20Ish4qHMq20HJ8HzT550JcqvweoHPjyaodih0KHgwf34N+YYIeqh3atv3I3FAYslqxqrdswEhxPwtr0JdD1mMiHxCjHB/HgMlhFqgl0+TDy2kuIOIf98JsHaq1BZISHhCQrB5Wt56hkh7B54ax2rQk2eBxTBzaHjDlCnEaHaq0Wh6rueofGh4KHVJzGsG8HSYgehzCH4q1+PuTguocQh0pq3kyvB4et1tAlh/aHWq0hmA5MRwdmpG6HawcepS3kDY6Ywaew9u1mh7rM6uhIQKWHiG2khzkTiYcA6ZNMBHlFh7RkqAfdh1n23ByWIVyHW6pL438HY6EH6mEwFYcdGHsHFG0TBwPsCxxNOhRt8YcBpZrY6Zwuwh8HJe5D2Mmte4dV+yiHlxBS+luHCIdiJMSSGaqjB5xtC4cZGLeHiG3J0GGqy6V4ap2HFpw+oKiHI4diIIWHYwc56BeHuYfiKP2BqAe/h3eHiwcKh4mHNegzh+cHDodZ9gaHSCIl2OwaImSwakAr17B5wiQIP4eAR2d2q4ePh+T2S6RIYKBH4ihgbLyH7YdE9mcHlYfFfECuL4dwJHWH5Pbvh2uHv2ENjqgMCOa1vltEi+rqh+cdsocYBs8Hkwe6MPF2vmCWh+hiR4f4bhBHDTDdnLJCGBiGh2JHqw4QyLBqhEdEBq2HJe58R3wGFapzB5GH+/qsUCicBmJhDphQrgRRMMRt/OTdezBHVhofVkhgWZyah+QGuqgfh6mHCkdOqmOH3/oF4+ZH1oeABouHUmHFfFSuLwcpMAbDsihnFPSH5WFpzBoaAEfpYdzIZ+o3h6+Hw3zJvBWHmYecbcDW0IfRR8/2z4dth5BH1IYpTPZHvaSjhwyHG4ff9QjmnofLh29iLGBwnM1hB+qtpJjRnIfIrJh2jkesh63B5YcPh5lHNBopR96qfocUh8boOEeEJDSQoCiBmGFHHQdnhw1HhXSbksN8h1pRR5BHFqQ1h1hHKeR0YGAisYf5RxlH3UehdvhHH8yVCy871gKZKb2tHhS+h0uI1od4hg0wifKQqqatDz4/6Bh8ddwkhzdQlrpbRN2cl1j62Ay+Z0fJYipieUyRum+KaodYwNcHrCmmrTPThpNJ1gI6lh2lR9YpAUdg0XUsjcIq1njQEgldhxgEDR7RiyMgpUehmigJGzY7Bz+8sIc6ONcHcMdqh81xhXRQx1qHepkJh3MQWq1hFM6HHMFcTHPgqhQ5hz9HA+CEx+GHFHjqR1tHzocvR5pi+0dokw9HaYcox/YT9MeTYprYqj3dmsqqsjgoRyVu4h4ui1wzOHnESnmHwTMxE8zHdCI0LOMZbk4oCZq+dofsx1hLSs4jB8cZIocmS9tHVxng4M2HdvRUxyVy7q1UM8nkz7xvBxdEqkcivmjgdq0kCY5UIq1g0ejykYhRMaoUN+uWx/cYGDyNLFIISNE3abbHaNHI0Z1AitEc0fB8QUDeMcQxbFXexx4pofLwfGlVQdFJRJXA1NEhx9ourfvJKYHHm+Iz+yzROZsTDj5Jd9EOUni+7NFux65AcceC0Vq2OkRRx6LH0pVrR5LREcfFm7LRXtFaGzHTB5XVEiBIUTFh0Ussjseq0VrR6TDlx9Yikd0viDO635Utx3dEG4kNx0lEeMCXXDXH9pt3WI7Rzi2/bE/0gs3ArcC7JWmu0aXHAuyqFJ2J08cpx/PV8Snjx2ZEVhSORHbRI8eJx+lNvsf7bof7Rtr33bHHOMkfwrcxR1C7x6SwluwU4N2pO+wGRGR0qtFQMaHHbceF2kAx8Ej6zfPHXsfVx+IxUZX+x8tNddFVxwUiP8fA2H0iCTEAJ/DpT8eHNnWTljFB7L3Rr8fiLmFI7THQJyfHEEkiMV6sY0T5MW3RtZu5x+fCVESzxzXQVdF2RNgnq9Ho0YG8dce30dvRQcdhdMuc8nyyOKb0R9GsRN/gZ5Na0WS7OPsuwksKpS6/k6QnB8fAsc/RO8cUSdoxYbYXx/UxcDFJRJe9rap3x6wnwzGgJ+oIoDFoJ1ZSoSu/0eh89zSH0YIn7sekscfHxCdpq+vRb8efvDgxmif/rDMxqceOqyjC8kLAJyBcxDH8tlMx9DFEVcTY+JTUMT68YCfgcdonfrYu9A4nkCdsMVwx8eybxzirSie/x9eCXicoJwIx18fCJ4JqSCeBMPonwelJ0ZNQ/CeXqwzRHZsVvcJrMIJzNtNg6EKKMfhcaidPrFwnESeH+7JCECehJzRJejHp7DfHrTS8Jw22YceGMU3N2UTlx88O8idfxxYxb7xqJye7oNE+E+Iyi7yq0ee9gTA2iPcYjsz+MsqQqtFCOb9s7SfOPC8x07xRMdwEwkLdJ2mqvSfS7mMnoR7xJ7gsAryd0fsxP2qv/ejpYhMEHJPw6TErJ6TsYAaj0QsnDLwT+x0x6TLfJrPREyccvDj70TFLvLnI9OkVMcM2cdunMaHFuWpTJ5765sUC7Dcn02JPJw5S/Se30U/HdAlGngXZiyfRzHqedydVMporWtONGqcG3yVPpICaYKe/MgrQO2D0m9VcVPgyrvcl3Jm9akZBn0poVI9cCWA9JWnIbVwd5L6y2Kf37gfEy1zopx6uNNBradOESgdLpHTSxWry4tCnP3g9rokleagIhXOuR/l5INfS3pgYJSWoSTDemIzovbm4hSq8eKedpDgemKf/udcFPESmslSIfKcCB4ayH1bD0nCnmyo1hPuLiq6Keb2sIfjsp9dcx3Q7br9QOCU/qL+BU67HXOroOB6zpInpd/pqpy8qBqekHnbQzLLmp5QelqdyUeandVh/JU9pH3Y0p5jcnNCN0EqnRmhup6ip1+1ZEV+stESB0Bvp5Wr+px4lTqf1zJfkS9gn8BGsLqeUmJGnMMHhp0Sq5agurtmmUgWJp/SnOCVEivI80adyUY2oBKeOpwNR7qxap2qZ1BYOqRglmbZmRS5BgpwukQgI+NyVp5KRQ6qyQS5BDKdHcHSnmq6Ass2nOSVQp6do/szJ+A07VQu/WnwYm1FLDCqumpSrUUU6sKcL5NlRpkzo3BOnLu6cdAUdIKndkFt6HbiQp7qiQ0A0cNJDfDgMUPtpeymFWV1R9Gj9ZoWLMyPRUaW4afOVWSMrSzvLKT0aklEsXoZuLpM57vRoYRzkzMCU8VFAkHBugUtmUVOnSbBoeAXLIFkB7rVZ8Sv5Wcla+UmcS9tci4M5zO+n21z6YeBnLGC0fYUILAPOWDLah8uaZHrx2G5n/NFRBNY10JJcFgGQZ10d2G6OUPh9gwiXGGJEtHDdaoRnf6cDp+mnYRn37iOn+FEiGJip0bDZUSdhW0kMZ7OnAFwhblJZtGfXTL4wfDjTYJRnYGc1XRgY2VGcIu2wz6fZUTJM9+7ElLBneOxUbjBnSGdiSaZu3+5ZvahwIGRYZ/lR8HDCg7unqb0aUWkiAQi2gReRlR2GYhRntFHmLmNdi6fGZz0I06dekmJn86e2bukr3kXCQWZnTFGzrjxn8iu6aNDismtJS2EkRumALAEAiDgbtpPrOyv7Bt30ZXgbtmVLvmf1+GroyyvZONl4B7BzBo2gL1H+Z8vrkJ1p+MFnCWfrPvQ4WwWJZzSjhrVh4/jkhPRR8qPg8xRGRFrchWe/Ar9trxoCRJwqXtyWyvXYigQm3G5E+yTluh+qtuhopNjyHTDO8oSW0wKxqh7cKlotuqbKGugd6yaowXQ0lPlnIkVIoCVT3RgBhUPejWfKevb0AmBVWMSSRWd43nOaHvQflJnJhaodenwE80njZ2ryxWdbydNnnPLbZ/7KBJQjpCtnUiMxwvjJr97TehdnBxqh9JpY60my3MdnpPITutQ+QdxqFI9njfQFFnPyXGr4lFPybWe2ysO56ah0aO1nWvIfnmZYD8offJNnJzobZ0bynWf7Zx70lPIYA4tnYBM1WikG8dx4SKOFj95a9EDwl2f4wln0ATDDupPecBMV/bbcIUQhuo5REfozJPfjGOdoESDnXfK5wrO6i95H440IWKgGmRbo/6gFZzVndhTwNJTnlWeLPL/hHe6GqD/tYOdaPPb02LgC5zg+kbpw53u6Kloqvqjnoue5uYXSwVyOqnfo4ufUqOwQcYbS64K6XXyxmCbFNxRYwuma8LSqPRH4kqh659N6+PLHKIsoVg2oxLHcVuf651qE7pg4SF/4/goh3F/o2h52FCQRbKgIULY9q3y651tYwpAhuncOkZpJ7rO+Mnh1ESOMzQ025+URcpIBPQMjpucIPKo928SO3G7nlj0AKnSUbppfsM7nb00MqHbnRvLfiCuYuefX4x/5TufM571QjufrtZDn0m4EqN7n9utB3Hthbppl81gT0nHh5wwq7T0jYj66eSr251Xn6ZoMFIccuY0MoRPcA4ZKfpMig+f+e0GTyWfN3BCa+cYgnAlxpMTc+N16Y+faZZjLk7CGRPPncXuJkyPn0+d5cTs+y+fXMKvnE9wz5wq0A+db51l7L0XHoqW46Mn+gsqRytBiy1lY1tMjLN1BgViks1fnpUmvM41qj+dR0m2RbLg9KV9xZ8qDeC1Jv+f3SorSClqf5yPSMpvRWL7TmFLgF4PQTpHAFyc64FPPiHkIl+fMvMxS22zbhSgXhD5fcaVJVrPkutVB7LogsyaseBebWBcCCPA23hMp0GvvVEc8tBtP5/KzEgTYadKzbvUX60/nZdMq8WCpoBeKdT8pj3F5dU68gKkRZRfcrBcChUgXjkzjcQAX07BOat6EJKkUF5dwwJRWRYrSr8rkvAdJr3QtEQoXkLowF8BIMhd8WggXcZESF1+FGBdT3v/nOUnt0IhiAhduRVazOtO3CdVYEdNZYJbGYVoR05CRyJh352tUN+elWFwXu5C7M/Xc7BfXPNQXgBc9dTYXL1g+F2VgftCFST4Xl0Ih0G5FpLPUIp5FERfMvCh6SzMCzr3Qb8kneJbOAryKF8uZhXIqF/eFVWKEPh+UEtweZdLOJuwDWAQXkRdMabczvizwrXpplzNEYumUhskhF3y7CAI0F8TCQRdpaYVREfC3DGVpc1GtF8hppRdQ1E0XTmlGs3UXQUVaF64+r0Z+aXoX7s4WF0YXq9NEFExpOBfDiA4XeRdq8BLQKHrdF9TCBRd8F3BIpYhVWMjizMJ5Kgh6nhfViklpDBfVPjSbcmlv5zs2HAKnF2/TxNB02JMXl16biEZpRxeC8Iv8ZVj8secXDxdJFzMaNPGOyTtlyzMGqDcXjxf3F/8XHxf6mjCcnkVZF0viuxf5WAEX2i4n/I1Y/Rc6RPMXfXHPiJFSuRdjF6bsq5SWF3szcBduab8z07DPqWoXI1IT0KSa0JfvvCcXmJfcM31x6Gl6F00aAriqRaSzc+KHF/liu5CwSpjYNN6X9g4XtRfoDkP8zBfkBQRbTTM5Z9rT9TDImFOYLBdPBkwltbsyEpIm/pq1u1VUMpsil0i484055zKXj9wFDPKXN9xSl9pYtLvqYKjsbpqVuwLOXIwy3Kp8jNRFoFiorEihciaXTNK+uqMBBpfV52C78DzbjNMCd7n8wiYcv+H4BX4Yipda3G6XRGIvCWAp/TNJfXPyGBz5iBKMHeesu9U+q5QZ5yHTjMTY8j+83NRauqSoTpcqwv6Xhpe5GNzCNpdVmh0XuvA6l3iwOxdyJv8CfZ7EwsUm6ZpalxHwJ/xumsWXgT63CWWX8rM+l+AllLsgp79absp/NDwd8lg364JadseA9CoKpdF/WvwKGtE/qeVnBSwex074DlL3mt4xegSKvCOXHiktHAOXIUnNML9sDIRrIoRYiRwcHZXJ+/h/I4/RE8w5qH80KdETlUOXJbW7x26jibUSigLRC56Lnt0a8Sknlx215ODRKWT0iOz1tCXHHvjDl7vR8sEh4l2XMEhY7BOX6pjZPRoKZNEdo+s6LLJ50Q3iH1orgBuJX5eXYZbRb5dLLHeX7bBQabeXDtHosOBpaKPZaFPHD5c9NCAxEU0xo7qUZ5cLlXH4jjRHl8+Vs5cdtduX75W7jXx6x8k9owW1eFex0c7ih5dEV+ExFSOaMYXaphw2PM4x3OLh4v+XhsEPPJNST5dDzPJcH5d0V7FavZcSavHiXZdDqitCzFd7ItteTArDJ5xXoVBLusjpljz7HFAnKFf06usnyleK4rvHTU4yI3snMlfrHCLRx+qbaIZa2TyiV5ojaFebYlMwLkR8V/XCD5XTl2ciTZVYuofRYT1sVwEWdx6OV6hXTCfZDGJX/DFpq95NjezAsRheuFe0V6oaCuKkV/E8/OJICuuXY2JMV15XY2I6TQ86PLSTaCZSwFdnk6uebFcVaIonILxShKSxabyWV+ZXgbwfl8/o5vjjl5vRN2jFUkRXBVdtTW2X/6w9TXJX4HGFV9FSSTHH6K5X2VLmJ/4wQVICHSVXQVKsMV0C7dBNUoFXPVecRPlXrPYGVxuaGGpRVxFXRPb5Un1XcNUE4lgd8GsJpb5XybEK+Azield36XTsg1fJY1wjgVeAvAkjmjEcGj2XAh3SVKri7Fd6cd7i2USZVzv0sLyWV9tXXqwfl/UnP8n9yYjCoSopSZY8RtwdJ0G0ISZhMSAstjyvV4Np6gh5PJ9XO+xXDJ9XtbSgcD9XaapHVIjNylCd0dvKix0NV8mwzTy/sNjpAIk3AYjI2TEGV+6c4NftPAils9H+snQmGJyn0IDX/1f412ZXMDPlPKjX9TH+HCZwHdgDJ8HksMKIUHEizuhiaGt8e9EI1+d4rTzt3ak8T1fVYslUdCZc1576tNf9dW104RDVPGDXE6umPJE8SAQ55a48Z0NLMVa8S6jAp2bHE43DNo6d4N2biaNVArgwKfiVBxc3CYpEKtcQzVrXPribjQtu2tdsvHqVuvBm6sTcU5fnQj2ujE2B8GAapgcaQ89UBFCW14HsJsbQiWbXYmBK3VSV6bsPEITJ+JVu1x+NXLa0xliJv43ePglQHFiiQ9dViLjATRWV1tdalT5VGtd8yUJckRS3WJhNO1Ib6qhNakSvRihNnEPvNnJQhpUiG6a8DpWCQ/q2VCD4TSeNRwFdeMRNRSwk3Ru8VE3ePrylFuIVlcHXVUqSQwErdLyulYjsntcxlR7XhM2EyWnXAdeUHimV1VW+142YZokxu6PXlonQVSkrFtd42rC81Rfhx52VcdfllUGbKddyTQnXZuq1lU2VJteNlfJ8etfBibxV+9ePqeBVX9htyb2VkRfxicZN0cvQvKOVEe44UOmJ2lVcYCi8tk2mK87X+YlURLmWOLyNQy5Sn9dy4u5NbLuJ15XJu5XSXBvqkU3Gtj0CTYm1Qx9U+ddYjlbogT6N13WJe9fZYM/XrUP6QoPXx4lkSV1g99d7x7rXfdfpTYfXTtIJTQBVT9d5TSZSv9cE11NDASwd6/14ICLz179WO4m8VcvXSFUFtoA3GDd3VWvXWOJTTY2Is9dcN1g33bCNTUniR9df7s+JKSuP6urN401jYP+QgElwN6fXb4ltTZswPDcSNx4k/5CgSSC83dcLTSC8O9eqNzlVyDfwSbC86DdGXG+86jdG+hmVxjdxIlOXBjc+NHTsLdfKVXTsWjeXTS5EZjc/TRx7eDc0SQyEuDesN0ZVJbZcxq9N59D6m4bXn00mSjvXN03aVTvXd1c4zM5VuyxHpTTY2lX1BBc8EknS7tE3XClXPHE3gVWvgkk3IWnuvKk30FgpN71gZNpovJvoQLwUzaBCqMAEzQrDD1plUDhYsLwOsv7JiUlkQrkY0VWkRInK6l0RVdGsdUAuSaFVcDRosD+pPcPJLLPX8oyIQnk3wYlNVYEgIlCEwWlCh5aB0fbDbkKIGqfYTTeCNvEpdTdpQkxA15dLN5hSMDdzN7oy66BNidM34zCgN/ww/dL9N9it8kJ7oMG8VUZdvPlCJ5UDw628lrv1zF/op4INN5+XWTe6BglNHcMTN9g3Ys35RCmEIlRG2la8sqiVN9Yiqry0zK681iLPNwAgDFWWw303wbwTVS5E2Tdawbk34Lc7ibs3wLc/pAbNFTfQvGi3ziDHs5WwJs3nLEhgk4nFVbexCU3HVQtaiBr3Nz68l7H8wZ03CzfX0P8ckUIBoOUxvTdtIBu8nzexQmrgUFVvN43K2Bqgt6+CAUAraXA3pzeq0SS3hzfQt/TNjcob6ri3gOrct5i3TSAwNzK3zLeN0JK36iAINyrN+qxwwMUxis1+Qo839ZdI+iYdSywSslDR2dGbGwck2ZWymfswTseNMSa3Eq2f69XAIUnJxxPsdy7xxw63ltDE0aAbtrf+iXA9NkziTUXHuCj00Vl8QzpvsGvHatFmG9iYScex3UzAZKk80Y0xmKSB0S8gpBteZueXU9uERLAaCcFS0ZQbwHD3l+Z6slAmrkrRyFu5JMeJ6PKyUHcuZtGcG+63zccCGzQ0AFd60bXSQqTg0CW3mxsRln3HwbeVG1EdQ8dwPSVMY8eIPaAkQlkerVkbRSRXN8XRAuy+t0vHXbeBtwLRw8fJt6G3W8cWx93sZFfdx0zAMa4HycfHs7eTieEnQUzsqVfHmTEHJF/uoidetwBX0ifZt0XRWbfmt6rR4SdFt9Y8V9FhG9u38Ne1G/m3ebAJMQa3ICelG6Iu4CeFGwiYyyeDtw5S+wqqV+Z667ej0cEnKUoarr2wz7cJtzHBXieZFkZXl7ebG/23jycaJ3vgkTJb0UFJ7rfMJw/U+sDUJwwnNbc2Z7RJ/Rv9tyzXt7fjJNVid9H+SpqGnCdwd3+39TFFJ68xw17PHhZKJHciJzUKzsAaroAxz7e4d8x3SRu1t+uqu7dod4ongwr1KConXknbt/XCcHfnt9eCDicidyBczicrt/heTDFJ4o+3Jie5PF8bJa4yd38bBx0/qhh3jcBKdxYnlRuCd1p3MUo3YbwxsJvUd24nSUkmtwZ3cRs+sv4nmTExt0EnECdSdzira7d2d/BrMcc6Rvf0ySclMsO3CjHrnj3SuSRpJ2R3jndZJ2+3FebSd3knuBuCdyF3o8OXRB40PHx2SUKYpjFGSfm3AXfFaCe3jTPpg/stJksTMR1ELFfIfYTuS4LuMREx35gutz8xIzZPLgEx6EQFd0K3Cnc87O0hL8kRMZl3eyKl2VZEShRdIr8nkzYHYcSiopsw0NjpodmsRJ0g2TFAJ1gaaaoNd3M2TSG0t0V3ndzZPKV3EkTfLpcngKc7NtR3NTH5J9V3y00jMVV3Jq77J3x8JRCNPD0xwnybd5SxY3cwkqFXHjHM7Ll3VyKyYHZEiiiksYlC+243KeRT/XfZpvDqXm0SwhHC03hFZwNC1JwQXGSkMyfvd7l8X3cGM4KkFNHf+MVxAY1efOG+CXwAd8gE88JwlN3HyARWF9V8993fd6Uk6jEw9y9ozDwgKpk4GXR0PNIk+dEvfF/6L3eJuV93ePda8hRi1JzasXD308o77LgkDr5ufIm+1Od3xxgEoCJwlHT3hPdd8nT3f3cqysT3BjNa59kk8LkEJOw42x2vGHXhWIH7sRq568o4qqEjTfZd4Z9g4vewSHThtaWQI6Esg/QU5gaUpnn1ytloSiMa7Hv0nPrLHcVKAuWHykHlBJQq9zLKzh32rgr3sjjuHQlEG4tDKu0jEvcR9IKsviM9+cN8F0RtpQL3HmBW9y7c3CC899OwYoH3fJA6ivx0QAICPveypBiqr6U9I4nCvfTC9xAemvdEuHkQpBl0U/XKzkTI/QAqZ3m29/73sOfJ98H3aR3tQYoG4feClIe58fdw/dzn3Dwqygn3OY1lWyUaHfTqZY74xiQl9IZr5ffPvHq0NcbJJGVIhmtV9033CwnD50Hohsct9433XfdDBj339fdOazi9zCOP/X8e4ZBNNBr6yxKj9yNID4KBPRN0QaFrSJ7SkyPz97d9mEdz91P3E0A9AjCjrZNcUlWgRsBL9+v3YaBiIC98g5P7CJZw51J7Iw8QsY423lrSjJTKjS0YBhCKger3x5BSTA/3Owd5ErBS2WA39xV8WqhcUiTgpUc3jtbkmkhEtNNoAA/sAalwm/dNbZeT7kgkQAlAgqTb9w0IKuAa+mv38Mg2iPDQ03oYjd0gTaLd4OvwJXRtoBaiLWZSIxtFbgGf9y+HhPTPFhCIpTRQvtSSDbT4D+f3/BSDeKb+aHhsuCijElbsAagPZkff96mqCA/xgp4gFXwCuA0IwcB4QPc+nZMCD66wqRRfEisajwhBFFAgmrQ4kC0YDIjfUCijglCklu0IYg8woyf3Ag81WCig93zwD5MIh7AfwyP3KA+p1kf393waDxQPWtJmfM/36gHGD4WZQiij98hUntJwlBgPdRBn+PoPjJQf8AYwygFJpRJ61VMIFA4IqWAWDzoP8/eOnRcC6vd2D/DIdp5giqYP9YisNTjsXz6X920QH5RoD7f3cg8OCLRcJg/9EvVMe5E4D9QPZP7ZDyijRA+9xIf3IA+onApOSQ8cD7mWAGqxD4rSuIK6D5EPQCAhKnUPOx57QJl8UA+akrv34g+lDx7EjQiKD0N6jZO9xP+RPg/plNW0mpL64LX6mQ+lC2MP12epD6kL3g85IzVg4aEpxDAPMg9tlDEPKcQdD1v3wQ/ND2TAZnzhD4A10sDyIEEPo/cRcRkPG531TOLwiLhyI0ZA5w/+nlEP7/fVTHEPkHI/9w812uZq8iGNpv4nDyUPhQ8PNcAP8w++QApOkqTJD2SkbQ+VxOagpsSND/P31Yh2Frv1ew8CxIMPfw8gjwxMdUCZfPDQ+w86FbsPug83JJv3+/cN1YgPYQ9mDzCc0I8X94sP0gLhACkP8qFxTI8Pwg+kocGdQI/DDzQPtI8VD0gSqk6UjzUPKI94D3FMqQCtD1UPcUx2FTCPmI/bDxv1sI/STGoP3I/J/Fyccw/sjwpOPmwGqNN63w9TxBk09CDVUwwUCzU6FdSP9UwEC4cP/xLAugqPXMYu3MoPsY4yj2Qgx/drD7JsSkA4j101Gw8Yj/P3b+hkj0cP8MjYuIYonA/qgXadkH4LejvwDgiOj1qPZw+w1VMP6o8C1eP36vcej59VfI/3Ps8PfZ1cj/QPa7SfVVSP+yT9DzGPbI9kpKiPn1WRj5UP4o9PFlEPyA91EHPioQ9wDzaPgnXGj8CPPI9ej3VtyY+uj55A4Tfq9IPY8/dNSHQPsFS0dJpIR6CT7SpgCk4WWS+H3tg8j7n0j/dVsqchv/eXoAENvY+0iHagppk5teKPbtDPUmrTHI84iL7SJeQ8oVlIOCDORBikg49+SIi4VJyw+PP33Ajdj29iy4/AiJTSVbIuIS4PsoSNR3ZKHI/bGJbG1e2RjIABhMAzj94q0Y/6oqWwmZkZWC0YV4APjxv1INixjt30N48qRGsPyAgTj4Mk8/d62AaoVUKUGEYPifMsjdLGP9WbjzsHxViLD6gPL4dTARSPanGlRzXgoeAiAXWPmfuAD0eSX/eD/HePUE9F7TPIDI+/9DP3EZkjD1sIw49ZDexZpv6/j3aHJeCftCsIGJryxyhP/g+Cdc5EOrenu5b8PvUZ8C9GeYxiyx71odRgcDVJxHCZ1NbNurOR6wzh33y4cBg08tfMFBo81flCs71eXE8oxu78kk+HoYTYLASGZKehAIGpHDJk+nhuHRouCIjtHBxPF5AL8K+hqPzGT2OKIGiCT8hUnGHiyP+hOk/pQ7ZPi56KZIBhWk/qTxyIHiqG7IBe8nGaAoXTQk8wYfJPlHCZ1EeM3PXeT7Zoz0mfyI5R1ajhT0GSQPTBT0McRnqXBQ2oYdNlQqRhrk8qcL4epnuFWJ2y6di0YayNAi41Yt0KU/x+pSJS6UNZT6aznDR2PKIU4gi8YUZPPzM1T1Szyi4GT4ZDfzOiTyZPkmGpwHVPkzmMgTszYk+BjDxPonLXCBhhUoHMZXYIJYy307JPoYwdT35P83RwGJxeik9NbLyQ0XK9T8FhYLPLTzOMqske9Z2KEKD1MwQI0uFFT/lPyoiqaIROxU9tTz1LnTMHiOJk/mE8GMVyMEAYBc8zClBjUbNPS0+QiMbh8SZKzfNPN+Hks/+wUk80RTpeTwhDYVSzA0/YwsMczckrkGNRv0/cLnLUCSzvM8ZPFU9vT/jO1U8wEcmM/zMWT2coq09NTwgR/U83M6fUOyP5ci9PXWHXT6dywogD4VjP/7CbymjP1XKjT2NhirNrT9lS2jPTTy9hQcCDch9PXlLuM4jPdxdZwMFytM+ytIpKm0+GuJzPzYi7T1nLFrPUs0NUAoovjILP3M8Czz71/QjHiECWVpSnT0ws39MTTy9h909bkKfU0yw9TxjPLSw7T3wEahG6/Jkuis+dOo2LhrMeclbS2qUlT0Ko9rOOcPNPx9Ims+ZPiGJNSOqlp09EuqUzElTKkcjP456DT8DqsLOos2NC/8blcizPP3LnXvNPlY/d/N4mUaTVZm2M9TNRz0lscUSxU1BEzUb8WOvu/E9M/KEMDmgwYZYzthVBT2CC8N5OAknhn51EcC8ADmEqM1ZhbDrS4UpVh93fpkdPv6DgBPFoyuGlz+thrwKIBUCzqArtCrnP2N43fvWoac/o3l3P/QqJOvze+c8JLMIsXHCxz01shDO73Q5EO6gqDCYVFU//7HOkZSzDz63PAwId4SPPZc/MLLtLa89Nz6d8fWFOApUoYIIXjJVdC6G0Zm14viB1rDvhLjMZz0nhvJ3Hz1JPA8+HDFaGNIQzmumk9c8wEU2dg91Dz5+a9dPaDp4sclr4s2/LT1R+LLIEdCwPd0tHCeiSa2T56zjZNBXoFnlQL600n0jKp2g5ArF6kw75/26GNFbp8jiLaB/8S2kRFsmx2UDD+fPZv+iqkw9S4jlGa3QZzbsasWDpuns6sV0ZE16YXAC6MQKm2RYa2lrQpb7ZkA4fGTB2X72XaPcT4KWkL6jYGJPj+dnpT2vUmYR8SuksIcQFiZze6RACy3n8XlQx5Wv++QMCu+lTWJAvTC9PrO1rwFgUL+UC4i9sqNQvS/YCL9NeTC8UQmc6rC9X6eovxblsRAf0Zi+ML7/p2rCd2NYvVuRnmvYvZWgdj8ilcC/73Zh61LKGLzJ2bwI60suyFT4V6dq4VqIIL83pMLhDNAskx+mLAq964S8I+W4vSBmOL0MC5703NFQvxNIeNAhPfqi6LzBPftJuLxikHi8GLw0CH3h944kCbC/RL68omi9mfCdISHmUfB7cMC90+XRkix7haLQvCHwufDUvpxnZLwSUoJOeL622vafiNZztSs5M0nqtlaXe2LRQuek8kPuxnli+xOpwvaC/pS7kYGjehE2lrerDIW5c8b6C5PCq26egVrqZLyB2qIRqSUCg6HD4sxl/EMsdElSs6g1cl6CTHTHxWy99ceUdo4p0xrZkU6BGcQsvgRnMvOelMy9tGfPE8y8NVioRby/TL1Pti+kS0M8vfS8LAk1I/NTDFCRzsxlG8MRlKeQSbLZcfy8RHbBUEMTGp+NUw7GYuLPpE8TvL1rkI+kwr3bkIRBZEeCvbJzM6MMvDVwf8BRllESL6ciNxEAl5PN4Aumtk2cv7IHbaVMvupm8PIvpcy9pHX0UmKq4r7qZ3h0dqEYX/y/MjGuRXy/ejXmQYGj8r6ZCw5C4mZivpkJ2CPvpWRUQr8dJO0a02dHwG/UjIDivO/Dkrwjokq+56dSvGw3beLMZzK8Cr+/quJm6rx5nF9hesBA45mkQDP9IKbKp/RjLK+sxcamSHIKX0OSCFq8RZ61wof02r9gMdq/Or6/A5q9cVmSoVq8Be7vnHhpOrxytfZker8Gvp+fLw+nx7Fmr3U7TD9FHqRqs1tPjxCNgF93Fl4mvd6mueYw4H0VIFUbAw4Kt7GgVqMDjghKKWBVkIN0O9rlCFQ9oRTnP7JZQsP0xuGtQ4N7lrzo5zkRYFR6gQoXWHPbdicDn8Vdonc8pr8RQM0HKl865Yd1q4HC1E0HemaMMtgxaBMbKprmZHCxwE6/8CUoc0699r3Ov2CR9ryYydkG1u1z39/5rUFIdBYIdfaIyPoEkzh+WrjmhgUsVdT7ywOLuO6VgYF6Bc8RRRNjOHpRuNRud+j0Q9Gt47Dnh8SGtnOXsOe2oOT1vcSUu7682HSihQeWDGHJmoOFIS4d97Dlnm2hhheotPlevG4vIyLaWyAJzxKDxmwWXrw2kuGW7rBwuu6/VpUuE732iMlNxe3QUAUyFW0iRYd6Ovi6d8aJEaGGwb2q5eZ6ob1ouFFRGTLPdFMJobyOS7GFtRnEuFFSkgSe45cSnr88ZCOEvtEz9FFRT5A+IP6iz5bhUbG8cOv+vnfE6gRevDG9cb0FTjTKvpRAGqx2Sb9Rv1IaMXopvF8hSNVwslsgnr6M1orsPrZevgZiUb3SDtIGt+i+vJ7hBxGguBLUqb2zofT4hCWgGbxWRCevMdm8nK1iYEtnYYZEJtm9PFYvnO+dur7OCG2iOb6kJvm/WJPJmlmtRe8wQDm+Bb25vAW+ub+GvuWdcTTBF3TBWxzCINse6ou2XIvWP3AlvqW86MH/7/EB9Mg/7pUaNWq5ro5dxb0l6UTE2jJsyGgeiEGZF5nsPx478yTIWB6VvQzqcrEG3SnXXJ0P7eW8LbgoBlk2dziysQbfHQFy2sPj00b1v2ccnj4XHiGhdJ2t8P6mWtQ5StE8HlSXOxW8sV81virwFb1S3vT3pVC/HWPUfWkxUt8nrbzS83Ad1t90YILZ+a023C2+yvMzXLMGVb9O8p29gBEUs+EQtrjxMXbs5tZ7Rk2+sLKAHSsF4RS4wmcejb79sHW/pTcdv9KxkVzfubtjdb4aJwpySvDX7KCMfS6f7sszlRZlvLFcU9SZKm2/7t8bcq29F0bZFbO7vx5CIMbu7+zcoSDeJ+9jvdkTJbxJXzj0w7/DpSO+1NF0iDnVerPl1Sleo76Ssqlc073ysiCciSQZ72lcL8MlqFge4KIK87AeJqutvCzIPbwQn/PUKy7t79cI5RSfc5CdoovjvX2uX0QDvQu7YB+uq0u/Pb+5X4u8uUnFrryci70DvraoC784ymScZ2X0y/vvZYkTvjW/AsXDvQu7EB/pqJlIdj1InpO+7b5x30O84T4onBu8aB6oaAbxo73cimu9pb1ona4SLbwgH5FOe71rvKf7a9kniBO8Sd9SsZjKLe/Ynvu8nddYn+28lvGTvFumptURVQe/YMRHvcLxJMSdiDu967wRSOjeDewexgrym7+3Q9ESG77boufRvvN9v9nezb6Xv8GvBhe9vrnf5tSUy/W9JJ7XvLFwSBzNomsxmRBXvskJM739v8bEjCH0yQu897/O7N/uScUu8nXun9NDvS2+yXBTvHlWte2HPBwnUoWFSvRZUt53vfbVvV7PVx1qHdOqYq+8ltX/7AWFp4uvvO7ch71vvBSKb7/kjdsEZhYricTHHmgLicNcLONi0TrBdd+VFtWQaV7RtDqxWuPkxKR4WUiSOONfifM7Lpyc772NSxOJy4lVlReIL79VipqtICnvvALBjG7W1kR4zsF5S+vukSUdX4dDTYu/vZ1ef7/CxYB9FV2DQWasYHxoKypZ3HigfBVpWfKVRAeLi5AJiRVcQH3x6OgogH2pivHxZ4qQfOSLKfIQflPfOyrvvQtdmrfpCVGOnMYateVekHyurTB/gcRzVnZdXkB6axHwf71gf7zGiH8tXsCfTrIIfa5cNVw703+/n7+gEyISbV2wfu9XlUtQfXG1UCqkwQTxCxTuk56pzMe8EwB9372Lvi9XHWkgf3Ne0HxoKhvigMWB8qB/iHwOr6h+pV0T0jWKt79+XLh8KH9/y/jAa6M0EJB82H+npkh8aChYfbE8nzlSAb+2X3ZhSvmE81K3KsW4UHSHdVmoVPS1YdZE8xZRwZ/09apBe6d35LPCusB3z1ag+oW7xTw7dhD75H6eetn26LL5hbkqoF9lZyQwQQ9t1hB2JaecRUGHRH1xyzG6IzfEfnVTrAWEMl3DFH7lw+X10gUk9YUpttYsHEV73cjISj64pXm0fGnLsHW0fS2BCHZoK669MegfUpx0k/cV1fwGDQsdwxXXAgfbgoP3bdRCBWx/+gUrYDIG7JJN92QLyHd3FIXWSXKsdkTxLfYVwgYH91Lr9wnK3HydtxIEXH1xwEfgS5Ypy/G9JcDwIp30HH90guR3vfXR1ux+DlP6BqeMJXjtcUS562GaBN2LMgRJ131512MblnVQ6gcCfEJ8WGUlwiFAon06kDIHQn1E+3fTXcO4M8J++LvYwDHs+aC0QAT6Z49agMx3bfQXe6CIH+P4K6x3vEZcfDuhKPgW8px+SAOo+K+OHH6HLhj7WdfjOfGIonzXcdCZsn0xy2MQf01RWPwEtVGaBdJ9C8Ld1soEzHbT9CJEin+WIn3zh5fVUOoH6YsSBPJ9hHQrEqoEcn38fPmjanxd1e6+2HVSfWXXEn8qfU940n3KfLj5Gr5EwJHK42BJI2K5vHa6vE+f5gQ9TMJ1R/UauTp8nK7sg0kj2n99yjp93DM6fkn0+nyRyHUTWwtJIYZ+D9w6Ld+TeJjeWSYe5IvbnRONO0KUSdpxm+J1EBq23eBcqN7UzKhVv1fRa/EogvNApnw3jvFQTYsJYCZ/aGUUwFeVpqOUd2YbYxDaHwroTviWfeNBauOCkzOd6IwFLdUB1SA6+dkCH4Cvc1fRS58HAAUvboM5Ig/SjQN6HVRJ2nBDi/ki8YnrIXZ8uc+5cGZ95nyYkKoH1hx0Sk5+CNmdiZZ/+kfsSheDdZdWfS6V29Cbudq2IuEaQJiQ0QoWfMpQ8nIr3tcTXi73M47kEmAyMt5/9n8gEfVFph0bH6/Acwd1A6Mfvn43Cr7ALn4epwZELEq7AokvDnzcUjTiWYnxY5R23w5bYaq3/SM6c0F/7IBKt+pELEtqf9YfPgOaQgxJytFwiLq94yDdunECOh5Pp5x2CnInYT59dn+G+6Z8mS3efghMQAq9Eaq2cIkvwSZ6SxzhfO0c2FwFL6F+iGZC0leABh+PU4/KcXz5LqZLOnIAEheoEXxQgB5+UCrzHoF/aGeVItF8AX3ac5F/8xLmfLxD9wlxbBF+MRGNI73f4X6RfyG3H+LSQXF+wwaxgrB3zWXpfnvytYqQOheq9n4Rf7JwyLOFZfZ9kXz+e7KCUX0ufbCSoHnPgA4hZMC/C/598mCv0N+yCqE2qSfJ1AV0TrMT1hwZRmkJenCQoWl8MRzFAW+CO/Euf+wouX4ufLxAz76ix0nUTCPAob4qXHpwsCKIonb5gcx3+PAaImpKKuOgCfOliMBfV4jAEAm+TmQKRCzQi2x6WpN9QkQtbdIUjayzSCHCPkY4yq3JSFwJwj41gzbCUWiIgmJ1dXxTpwiyANZo4cbBqYjSWjZwpL4ZL1qp7AlVfjsqBqgEFpV+LdJpLDgwlXwVfjDmgS1NfoEiakjUM+LBqYrEKhWTpkhD0xECPJ6ggviBLD11fxV/5XynEYjB9sBKrK198hhvAS6X/OpVfMQh1L9seKV/vCPtemAR70YiQKoA1kjlf66qeiA5iKwjbX7lfIxPH2DWS42DmKByAhRAL83MCGZRkH4mcaQ9OAjgCY8LLvqMP1V/dXyjg0QhS6IlgRvq16HYWqQutX9Ji5SD7CGgG3GBxIoMgzfxnX+TfDB8+AoTfNcrhqtNfV18NX0b63PT9jsdeJrBzX3dfXg3oAhWTTN92cjE9nvps33MI3NLU+sLfygH9X8tfl18nEQkyfN+bX1sID1+Jqg71I/oQiBtgAvpSGJKIFqKQ32T6sdgPghai/1/RYjDf3AGEfDtfgFPNX02i2t970TwgxA+vXweqz1820jgCF1/9jjLfpAJO3yLfDkQKoELf819XEPIbUN95X/2OwV4MKG7fJwgaYGt38saXX6egH6qjX6ECVwizYNT6Gt8X1o8IRN8lsCTfAg+6qCkQgSLi3xkQC7DZiFzfl1+9QA/Kt1+XXzpW+QiZ397f4ZAYGHaAed+oTs1kQao6qliCQcgs3/XfBN9QyKHfTsG6371f154EAqjfh7DokFBEjt+Kqg5EVbOFXxEdystp0OdOa18LqzC4hY79349fiP5ZX13fkx3+33FOmVwJMsHfbY7p32mrJ1+FjjnfzJX1wgvLO9+V3/iqy99ls4rfRd8133gbdoBe3ytfUM6439XfecgTXyY3Y1+6yB7f8d/2IBfW1pB6WYmqneiNoCSQR9/X3/lfN+iLXwOr4t8yGFlQyCAAP6hOXNojX4Ho3t9UkMNflEu17DHfreib33Ei79/Sc7vfYSI/352xoNIQP6oae18WcSPfO6rTX1aKwD923wiiRoxt399fDDifzW5SKShm37zg5PznX01fjD8ofFeqkD/tc6g/FV8UP0z82sVW34q4hKG4PyKe1yiIuNUkg2CdANJiyJafzYEvEj9mqsg/FDOgSIzfm18iho5gzJWwPzff/Zg9EL/qcD/1mK/eSj/zcJQ/Ud9yP9oo/oxkPyWwUj/ba9HKDvq45vsgVopn3y3CAj+mPzWq5D++IIY/a98n37qMcd/n35w/Wj9l3zffCLvsQPffvPxH3wJiBZQzsNds4D/t3z1freuX3+Aa+N8Pq/5EV6rN3wk/tjg3X0YQ0T9ocVQ/Pd/hPwE/9yOD3x1fRfVkPy7CP1/nJGVfS98n6Gy4aHHdkHk/89+uP/GkUd/B38mKXj+NP4k/fIguPzE/8ThV3/vf09/vJJE/SV/gLyGgdN+qovkuUSfboPLfrg8giJfYNswfXw2gjt+R1OPfMQhFYGvfdYTm3xsJN1/CMYw5h4+SQHGwZHHKBSLfwiD0PxFqWV/p2OTfRGx1XynE7aBtP6z2csyk3yDUud/AbKMCmpKrdXvf37Qx3xc/9OHL6GM/83B8hrg2RDF7PysIBz+FI4UE3N8dAK8sRDH6YN8/4u5WP0wxbz8TP/7p9mqQfisIXSBfX9c/oZz7CC71KL+4bOc/cL9Ua/bfWQuO35c4IL+a+PcjhL/S35/3pd/ga3dfAIiTP6S/zt8aWaIClL8R33+1v6XAv0y/sECc3zC/Jj/mD4c/8hKa31sIvz/laHRg6L/0vxMgIR/c971aC5+LPwQVjWeZ8IePdH5IlAr0+RDIVAMShPR38MDftBXzDzrcHxDdci2i1JItbBc/h+PuD/iwbQimhTgZWr/Y31PtT20WGRrEDoVq8oq/fDVvxkN6mARR/kaSaePjkJK/rr/R2DwI4V/pkhoTAmBwCGUQtr/oPQHcqV+Wvyy0EKw8iKa/8o0Rv73E8QAD5CG/H19SwHXk/4C0XzWSGr+CpHOWzE9B669t1whUT8yFiPcxv6w1ioFVI1KQFr+g4uSPj5/pktK/kqTl1pqS5b+yD/+AvcT/ELtnWUBFD+AVO3zgA3W/0r8bqIQIXb+/6aySGmJVvw0CA78fj/m/SRSm3M+PAIHgHVLcXF8vX3njaee9vz8/PBkPixagfIb+E/sSvW99v9j8+vYzKmu/Lhn2v6w1nkLVKpqI4cSOvyK+xr+Bv2O/dBOeCLGOnr9UE4hoEQ9nvyu/Dr/Nv5tiJO5eUKMPEEJHua0oLr+6hYseyW6+1Fu/wZw/v3K/0r+SnGdiUr9dL0EHjTsOIdULmWjRQJ5G9E+m4H9oCGjm8IePLB6ClLceEqJYgU2lH7Gzv1YgiK8iqhDwIqKnnPuxHQGDv72KWTD+FMlGKwgm7jsv2od1nzEIH5jLHQx/ZP7uIL4eIbokQLJiWwg/wEul5H+jv2nQW7HgFMR/vwgvwBEdeH/YiIqsuH9TUHFGDQh39NJ/AtNR/i5UudlI/FNYmRiFOMCvTfIeYr8I4J7bE/9I+ZI4f5n3zuETYhCIf1OBFD8WbH97ijH3pxOIf0x/yoiJ9ynYTqTZkuNnEK/gmO1ion8qfx30imNtEDis0n+aYJJ/8n+/pWMcwWJbCGJ/rL5Ho4ePrmqufxHz+r+6ogqvf75rYr8Imoiqr22o2n9Mfx5Mkx2SWHZi+qIEyEF/MX9tCAR/2+XmnvVFRQn4bvz0MBZhkGV/RUtpk0gSRQmE+JZ+tX/ToosHhmuwEqV/zX82pK1/l5INEC1/jX9hkPV/TKMVf1qiGqZP7c5rfJE4iOHR7ilNkZSFPPi8KQ3Snc4BNb3KloWEOSF+KbVIMcYuI1RfBbhUOP6qEtbRk393tSTRGnIrH3eitOhCcnrYx39xKWu1r4WYMeb+O3/q0WQpU3Wbf6TREP6rf0JU3GCEdYRF/DnPflUBQtHDpB1UZ3/20ctglBeV3iXR63/p2FxUnCmXQnFvC3833PyFgYnDRE/extFtqgyR095weEZyF9wLiebRfiht05qFNpHhAoAvSYkA/4DJJ9xvb+w5MQEeEvLRo4rXcsD/UokpaoMfWEXXfx5yBP+SkenaUDy6hXd/z38Y/9rRg4paEQ6FSDH3f9Y+Jc5Pf2mFlPCHuPGUGX3cdtAxSP/rQvrezL2g/+reJdEQ/94+gv8WpEi46ZTV0Xt/H1QLhO3Riv8jNs49y391fcbchDml/tjssYnjZ/DCIvYPElmkoXKUPiXR/P8fbJ3v/Dm4ARNLkYmlxcBISvChicpgAtQo/0iSlP93M/OFHJIq/9MzIu+d8eo+/hTq/2kuSxr8hZL/K0QX3L2FO96+/74sYf+SNLy8RzOhRQz/yJf+/xvRdv86RM7v6fHPf55PEMVj3Bn/Ev+YMU7/KdiRiZ7/if8y/+zwaP9wSHeI1olBKUsa0c7wMet/0gL6MRr/ExqoMZN/TRpABvAxOv94fv+JrSqTOQkSEe/6/5+ibP8kMVgpuVK9/zpUeCnT9o+8M3/G/wP/kvBi/+P/M/+DGHP/TRrN/zpU2f9ifoX/s3/oDnr/Kf8EM+VF/Dk3f1KM7L1D//wzvEXUvdn/yBgpkdz/5rNNhZgxX3+zT6XYgf+6M5n/O//Pf20xpv/3fzgO2YUUaI6/yr0EgxBBcu5ABDDGMXh/iwOU/+H/80MQZRSsqEOLbpebVsWvqQVis7tt/ROmYFwHSAKl0ztJAbMXsN9wSnqTtzqsl/eC92yOgiAEEwgzCifgbb+TfVYDZ4ALuAvWFE/Axv84PYht0usihSKD2pOwfGjW/37duwAiZoq9MPnY1tyd/oDUOnYFBVEy4EAN2Nvd+OR8dklGDREYhRdp4xMgB/D5jgqUAPGZqq7UgBQ4svNpZpFyIHmqDYgvId1AHTrTYSGJUCS4IQxuZAmSy2eqf0TWwVtof3ioIE9ur7FFNanEAodBJo34Hi2HfQBIBRApAXn1oRsQYHjgmao3AE/w06EPiHDmCzCADB4+AMHmM6AD1AsaIS+YV5T8AbyHDmgj8BD8D37B4QLv1aag8NAOw4mAJeYG+KPOgegDwR5ycCMAekAvHkJdgpbR2qgCAcLyIIBH5ZNsTTQQzWux4GDWvD18eThWXKASNgQR6VQDPAGMNhduLSQS2MR4tGgGTI1A8KGHLwBVMN5ADSmR19L9Hf9QN49N16Z8BJDnngSce060LnKlRyU+HDqEkOQ2Y89qPIRGAXaPQ+YSCFJsQupjtyFF6WkOwNhEx4vj1A8BfQJoc9bFcgEX0EEoNoAknotId1FDXByWAc2HflIdhZBcj2zA3WqVtaEOUwCAQ77TEmARrsadaI0wXgHM1jb4vcArFeLeQrVxD4DyMP2xPOwTwdtiDITy1dMMA+egdA8qcjpnHesM3wQsyUNgfsxSh1hAVVCIXIga05iSRAKxkFqtGI6QE8eno8kCeDnsA4p6DjA2+JaFC/7vKpGlCk2Jg8AojQZ6IGtYG0pw14QFACQmAdFTGQQzYcGQFE8ldVILuBYBpw0d0CPRwpASckbMwGgCpQ6NqBARv4wcYBvvgu0CQD3u1KTQdygpw0nWBqh27ILVHJMoS2pNMRygNlAEavU/oN1AmGAl2GytvOIKxEvlwzNT+r283lQWCEkz5xbXBgOCNARqA5TU1X8OUZxMGfOLqArUB1oDPAzvnFr7vaApBYjoCbUjQGCsRCaAqM+v+UrLjiZHfLlg8Ml4pSUNBSn3AttL9VTCkMaRakqdl2DAXNYUMBb5IjVLWAyaQOGAxxKwzY8IRnSQ0SucsGloqtAzXTUQjz5pmAji48nQuXhpgLShKihB2u59V6m6/3BDUjIlB60C6Rj6Dwr2cQLYUY+geQMJm7BkgbAdKVA6wvgc34yI7Ew3MekRuo8zo/QLuREaVAmAmkSTANBwHCSVFBrGA7NSLf1swFrIkXiM06EiIF0EFErLNxIFjCArHYXYCBRIdgN+2KuA/Caxz0LtQSiSn2lobD3Ysokw6oC7HzAVVKCZ6RYD6wEipDzAYlpfuuw4Cp7qEyQXAXWAw+OFJxVtTlgMQsAOAu8BhkEbkj0RBY6MbJOkoU4Dw47AJXSYIXOMCwR4DErT+gLfAb+CKMBuZ87IgpgIfMOwhdJgP4DsxK3cmKWIV3QCBaUI0kJXNwBSoEwXdol9dQIFpQmCQiFJPCBAyxqwFEA0zWGM0YZuh3IdVDNgLnsJxEA8Bp9AYr4wQIQeBuVRZKWrdgwHHiV6HJhSTdINYxGIGKPCubkQlXZYzLRt6C9jApbkxAviBcg5nEBiqBAWBxAoCkWU0WIFdWmvAfg3FtwxECyK6bcnqbsWAr/ccSVdlgitA0gZRAuiB4jc0IHGigCKHPCP8BqNhV6BX/VogX2A6xESkCRwGXVVqHGGAt6uT8V6m5sQIxYPqOKsBG7cBuREVUQgeqYc+qn4IMIGASVcgRksCDEVB4Hm5+QJcgVQfZyBbTEk8Q4QIJILweQZur4DYoEWQKggZfFEpu2kChDywQnUgTkibcG9rUIJIfVWUgf+3bQGj4Cjprrg0CQM2A+WQE2p/QF6VTsgdlA0KuWEC3IHxsXNkCQfNiBLsJrIEqGAy6KwmJyEfYCuJImQPAgaoaLKBsECUu5SKzS7izEShmOVMwaLbg2gaAmkFoY8k1RoFTQLgTERTbMq9g4tYoxpCl/AWkFkuZNoRhxlCmWgQwQVRMWFMcLC3ckZAkFAhYmVCMoqYuKUF6lQjVIeq6l9oGv+HdkoQsNcQGLgHJJRumgRgwPeiBHv4C0j1GBZmvK6M2mTFMhIGNMgXGvNA2CWHEDOcJ2tzeHI06OimB5VduR0tx6qmqiB0Co0C9GaFiDWgR9pZLqN6RTHTppC56JLNT6BHtM+uJB0Cq/KomKSmz5VboGvtSf4gfQe22c6Qv9AbiTjdIQjMyBEMhSJBkUyodAtCCaqPSdxIFpHBjSD+8OxQ31IVtKLQJ9ilTAy1IO6QyYEct3HcG+NCna35UBYEA+HrAb66K9Ip9gmIiLKFCGGjA1FuiP4BwiiuDGmtDArBmRFMxX6vkkfcHhaTywuDwNYH0FyvtuBAK/AQdhQrAhWGiMIbA0mwxsDSKC3gSK0pnOfwYeFptDBUzhtgfQXbG2j8RrpBxaXutuEza5QQXoYIhWDkHSK7A86MBJV/zRFsGfEPfsTi0sDJtYFISwOknbAjqkrOQ+LTM2EznKY6aS0TiwcRyMPDk0tEYOuwGAMvYFm2UqFFJpBp07eAN7iNWBmUvXgPOByHQEpiWwM2sLbbUt0HsCSPRZhHEJCY8Ny01cCdeDD1jBUvJ0TQcacD+AbFwNUHK3Auy06ggNBgU7X09A7GX+ktKhs4Has070OeFRmwbYhpbT/mjrCAYSYOBqRdNnahGBxUCiaJ2BHA4SHhlWBKsKYzBeBm1hNNLWs06BAdJG265X0dYEkuj1gQAQSuBnoUj4H14DDUjpOKZYDsDAIqmMkLgR+6Wtg5X1r4HLSV40qKzdEm97oX4FDkBEeOgacHUSYhi3S54CLpIsoQ1k+jRTCQPaTLuGPA6gcO8C/7jC421ZhCSfs0ZGkeBxGk3Vzv/AqZY9tt38TfwPhqKgggMKL8CDYFfwKw0uMaUuB2twMrByJETkM+ob7gn2pa4Eq+EWxvu1TBBXRpWNIhdUC8Et6D+B+pUekof8kG6jPAqBBeCDlWYbwNluFvA5eBPSVFgwYIKeFOAlM+BLA5B4GRmk80oMMA6QKvhSWBF0j4SNdcY1gi9wCEECIPymE/Ah40vCDG4C4INE0oURVRBwedIxgSwHYQQXnCYcDMAcBymwI9dHfbfRBGUg/VCkDl1TuvgfzQSpdzEHGs1RlMHnNCsn8CgEp6IONZqwUQ3OeiD14GAEnz2ODqHRBU5hcDi9GgYQWfcNG2FiDu8g/XAe8IvcAxB85h4EH4wBiQcHGAuBzCDIkHz1SDgYggujQd/ZaphvwMV9HuMIwiCSDLzAk2C4QYASaZcqnUD4HaWHUQWRQCAoe5go17nwPF9BDbOCQASCO5yOTEaQURpYnwSADmmbvARoBNDYcdSnWAuHj3wOrUuU+UaQ0Ngz1LwPCGQeJaEZBgyC84GYnnR/l0gkl0GylQvpTIOJxHNCBJ6C4VjVJnVHKkNWFMnoCUwD2ZgIOLUkU+cPYYwIH+BFznbJCS6bVSb9wkyjSWitcPQ8KuCfloiRTVfTEQZLceZBZwFuEGj4GZnLMgvt0H0YysAhYHrdP3sd2ccfdXjQ1IMbEP8gssu8zI1YF0ywZZrySICqnWB7Kx53gvOlrKV5m+D4nfgcLGlWP/lEZoCywN9hZMi8aAssBDeWTJNfgu6iLdl2KIsw4qhvqDgPkbni0sXl2uKCINAP53QfN/PG7UCKDCUGj4npFCigjIY39xZaSFlChQbwsU5mkpFBAHw1BPBN2UNemvCwrWZwkgbZC0sKqYbsQHGjkoJn2KakXB47/AQKIsoKpFCQXVsotc8YiJEuB/BpXPBRA8LMGyhIMyVULkSCJmb9wr86FlCnpl4gZlBN35ApjnCF1QRygjVB+rsC4hGNDtniig7tsvKCGC51QyMaAHKX7imYlj8BsoN+8IXPY1BWhI957HiANQepUEVByKCOCRKfEQVn06ECioaDF5ZcoJzikfPO1BHBJsgS2zk9QTGgriw9ixwS6exVuaMSgiOm2r0iUHOIBRQerSGrU9KD0YpFmH6flnSTQUyOhVbhe9WqhuWgrlYpKwaCQ2giLpOj2WWGaEc57xloNyZom7TqozPAxAH0PEbQTW3MN29jADjhyG0E9jI2GpY+jRxCR2wKklCncZDa9VRO0Hr4EnQdT1WwUtdIK0EyEgXQUK4W1YXWpK6SWrCbImFzczupWxfFg8fFdWIIwOzU02A0jZbWCMoGCgu/Iu1UCyJUvVv7r8LA3gVL1BHonsC5MIDcNtoCtwC1bBzWsQCNTR9B25FDh7W8lYDKjcaxAHucGiQ2kWfQfj3X7SA1FvR48IHtMiFganaLdx7TJGvS75AUgfUyiVV2c6nEANIqRbO/Qv6DyKjoYOLPhYgRG4yGDq8Z5CiFopayd7ATnxlpBatkBvKLgbBUZAYAeD+AKh0OCYbfS4GDmc5ykBjTteglWUQGDQzKsYPYcOITVG4hw9qcJweFkpBiKfnC/GDhNLq2C4wY3YRA4E+QukgeAhowbPAW/opkw605oHBB0C9EQpegN5FcAd9Fd1FKJa1oMSx1MEMYOIwdTnLRAOHgsDgoYMgwQpg/QBEaIpMFoYPbJKrnTyq4mD8MGBPS8vgGZKzB5mDqSDH6XTMiHQSN0d0gYyL8vVo/L8LItO0GCv/Be4STMlogdj8GmCHiQgYNtdMxg50y96DY8KSNHCwUe5cpAkjQyyQvoNaDGOUJLBH+xDzRa2GgOLEgUQIq0xeeDlzVGSD06XTBpxBFtCFYIjTk5g5bc9iBitD7CgUwNSce+Q5ZkD5q/uWdwtd4LTBF2hJ8KxYLyFCcSRnwdZlWMGA7CEMoxg3EOiJJ8eDDzS0jiaWMHgsBpMsAHyFGwUWnAQAIu5p6ztYMxLJfwMKQbUMjMFfwi6wRySbDB7e4XV6OYLMwZtgkIUzWC7MHXwgmJNVg1wIGWD6sEzYMEjqdgobBImCMQ7N4Tm0MNg/PcQxIOMHBYOyYIQoPDB3mCm+CPoOtMveglxQPpk4sEUkgdkJLwDbBj5sAcGw8DSwVasQogdJgssFNkl/gLjofLBKZRXcw73ihwUubcFMuOgwcFJeRBwR6ZDuC6iE9sFjlA2wV/LR7BTVFvWhOIgJwbYIHiAfjBPMHg6BWwWqgAC4hRI3MHKeRcwSxgnbBAqwZJgVkSpwbS9OxeFbQC4Ls4MhuN9g3MEn2CozIXwVSQrTgoHB+KFZTJo4N6QoqZZkwGGFMNwy6X6wSGtI7B16C8Vi5YO1MlS9EtByfBsiQ73k6ohL8OMgxWgtcHUvm2JCySeHoevxmSQ5lCNwdS+Hkk5xIAMGx9CAwd8YPXBR7kDcGm4MS6D0SEkkcJIwUCDEke0gXEDuCR25fMEzlB7gt7giYk2oCIiaLEm+hgJqb9+LuCuxRc4OQCCbg8okrqpAPIW4K7FIDgNuEJODHiRW4M/itcSM3BfBQXiQ6chTwclgzsirxIM8G8HUGwYuUOl6jcJfiSS8AQVmToNPBPDQlCgG0DBJKKSOEkAGCBoKy4LtwQiSZQyWpgo5iCW3ZJBiSGeCTJJOiRLmAGli8AWUytdVTaSUkl5JBvAUhWMJI67yOYGg8IPgvO8QuRkcEO4POJIcPNEkFj44VQvoM51EyZZQSVuCOmCCkiXwX8HO7MYpJCgp95zAXploRfQCOZNSSMnnXPtn0JDAXb9wGSRun8fHtAFYQxggGL7MMGaQL3EFgCB0dXbh/qnWHrQCfpi6ToyECsNRf+CGSXVUZb8H/i0HTfwbfgrLE8phsEAOv2fwUduR5qTb8gCHgEIAIVW/O/BYCh21SoEKgIVkVFhImBCOjKKrE/VLgQo9yd/QCCF+aywISI2Sd+t3g7L6d9G1fjoBEEg1JxaIClCzlaNkQJvc+LBgb7/OFt3EbwHAhMzQvEYKBDaah9ffyQeZx19xxsB/qqQQ8HB2ihnP4TeGLOKYoNqYbBD76R+MCH6BkYAF+vRANpDLnG8mBfg3QELZxawAyEIufu8QbkkoEhf34CEKtWAoQ6OIOm5OhDY4NYIYQQ/HBbVEpX534M1pCawU9+tpY11rE3mEIbc/Qwho3l4gJtQAvwXbAWhWw3hbn6sxHyYPMfO/I0BxUA70TwJkCmHUu2tH9TcBsxz1BAxrHL+p5RGTh/lFiIcCIeIhOVsm/ZyfyagCmHGqYT/4W7gHvknSsBqUL+f5Rltx39DEQL8IP1AyeRgiElEK2EKDiVGOeekINRbCBcsIZfUyY3+DchpEENcYKO/ZBqWb5EiHqf1LxLHYHy+VkcRb4SjG3fG5bKv2oRDTyhJ4LH1nEQoYhFeAJiHJEKmIQsURQhWwg7Ugxh0fANeqaIC0eV90ojEJ4/sCjG9KjNsSP52IFFyGPwVm44IgZbB6IzH4LdiJ2QsxCBuhIYBQrKZ/FIhruICCEnENyIda0YTUBRCDiEMh1g1KUQmFIJe5dnDNEPJZO7kJvgr+R4pAaoiA/IIwItUoxC5iE/EMnfoMQ4/B2n1BEhUfkq/uwtAM8He5RBBNogFgIZraW0KJDdPYBngxIUgwdFYyDZIvZi2Vz+J0QXEhiJC9yTEkK6/hcCOq25JC+v4PAmxIWpMJBgWJDot6Cl2FaJ/4LikG6Ak8Ij8GwpEgueboXpxDoiXpgtwr5AQ6Ifewd8KYUG8MO43VYUCw8KjBShBsONE5dwQP/JOgKP7xamJWQF1QgpC+iDCkOIIoE6ZKc0Kgk5aQ8ShkBBiFEULCwEZDNpARFEU4RscUgt6RSmkJHHELAg0hG355VgX3DSGLqQqywaVQiRR4bAyIIKsIRYNBgriDskISWKKQ1aQ/JCEliCUAqMIUEHS0ABJWfxOkKGwpyQ2McdpDd57FUE8mIMEIQit9Y4yGUSRrwnbyIOQxpDpFgt2j1ISR4O/AsqQoZC9kgPImKQ7khL2FYyHhjiLIRyoEshMxB1SEvYT6Gj/VeMhZqCHdAVxH9IXDhBshTsg16KIYlM1EmQ0aAkj1oP59pyIVFaHRIQ/FJgtiqLA/7tRMQyGP8QlUiDkPcQui0TnEJFJsThaLBl7rOQqchVyx9BQf9zlRATDVRC+f5juju5wOWCejEikFPVHzR4LAHIU1IAPOWiwakS/SCmIB7rZchMT59JAkTnnIRuLfSQ+McECIelEqEDkJUPWylJwrgzEGPIT0VZ2WH5Cfb5ybC8pK5cDIgyxBFsKsCiAHkltXEU5u5ohDF7xUwDafJ+sbX8+eg9yH0+AiQhChwW9CSHikSKEjLIN8MBghQhC76yQoThQxChjfd2iBaZS83i6fGSkhFDMKHfckBCHgwCih9otvQERiCvglUmHuYfsDi7C/TTdTkfePkszSYmKE33A4ocfDJks9pcUj6g+ADzpZgEWmb40AnrQgUs5geIf44XlhBkHdARjEPttDU2tgQuKG4uCrgr9NaWgq9MJKGPwzVoO5SHyiMk0dzB/IIgmnb9O4CFT0lKFq8Bppte1JDsmtRZKHdp12AmEUQ8ajYRgJAum2KOPZQ0igjlCBOpsUMIXPzwKhG7lCnKQdH2rDiIdVLusIBiLZ9QhYRjIjZcqxMIEoDAH2FdOo+XhG2bUIejxPm7wPPvOKh9T5PIAMgTgSK0sY4u1aVMiycLGqfGxvDvcclIC6aBgQm/Ot9DRG+yBEcj9ZB2QDojJAUGmBDvp210yoRTCU76piM9T7/ZFq/NLUBKhGh8oqz1Pl57LJXK/88VDVj6I5CTKmrwJMI+HVmYAIn2SRhSfRHIQ/hCT7ViFWOs1Q5kCEvlOq4RlnqfOJoXCuHVD9kFYMhmrvpgOaheCBNEYjUKmobApYA+lXwmfojNllPojkWcY5K9JxCGgWmRqt+d2coYEGcRJULWoSdQ9vEDRJOMorLmuMKccNkgQf1DdzSLE+oklnYM+b1CxUbB3AkkP9Q76hQNEVlwMzneoddRJhk4NCAaE/UOyzqRQ6gg0NDsqSQ0O2pMDQ4VosNDrV62MRi3lwVMPyJ+RoSTVNV10l6wATyFJhSl73/CbJN81cxemtZByQ0AmxBPJ1HmkMlRBkpWOHU8vTQzwEQcRcFZzkjZUK5rGfBzJgXkqQWGRwcTQjZKFxUJ0InFyP/IBDIEssdw+NjQkhtJDMlbL6fZIQ7i52FvcEQaJMwnNCwvKJVQvMNqwKBo6Mh4Ap2SnU8qGSYcwjW8eaSNNWPMMKsDmkUtDwUqOwzFoQv5XGhSWw/pDwBXloYYqXWhHNCZaE20IvMBLQuHokTVilIXGAcVrwCGZa5UNSZDe0NdoQ27VWh0wIA6HbIQjMAHQ3ryNzVnzAh0NP+MN5FL6HiFhS4KAQLUPwvGmhrMQtNAFgh3cveWU60tYAp/LDGBrqF2wAjQ4dDMSiz/Gl7MhDJKsYdDEYCaHCjYNRYT2huLtSy7R0OQoEP8EWha1o8yTEWBroR6zAuh3m4n560T3hSsYIfo4+ERI/K90OITKhgYWh9dD+6GiWEJoUVaFuh4KVmeCBEMCILIxJmkD/QOvpXhCpAsiISCw7yEsvhz8kWIhwuT9wC2pM/JegT7+NBvVehjOVKnrFJWgMKzlT9wiyQt1DNQGiQqNyIny91sqeZmSCJ8mEYLx8F9CPmT8XkO+ifQ2dy65QWnwH0MgXuk+XVag3QK9IU4G3oVIxTehEw4QGFEgzp8nAGOJc+0gblLUshyfBfIcDaNh1uuAIMO9kG/Q6BhyAIYPBOompZFpvUcIfyk/vLgMOS5sjiLFOV0sYGFGCH3NPzkevKIVQV6GhwKZ+tQwizyH3AdiBXSA8+r25RkOOgUt/qneX3oVRcGhhbww5N5+eAKODcZYBhRDCKYRLaSEYVR4UXId+FKWAe5U7KLvQl3yvuVW5wA6nuUGwwmd6JDDT8D25VbehQw1JBVPM9GJLaXMIquhVuQJDDo+hKPl7kIowo+hOnYZGHSp14YcIw9O+r+ErGFUeGqvKuoNehLLsBGHdKkilgJ9S2QzpRTVDRxmyLH5eRsaQYo0KEeMPtXmWNC5Wz6B7V4yql+ocTLGMgCbAwmHZoXw8J4w4xYu+tomH1+ASYV2hUJhyTDJ7hegJCDtfEUnIHBIxvIt3kK1D5UVc2EHV40G/eUwZAUw4bA9DwH9Tf0RiQEtUIKc7PAxtAGEiX1KIxIgKe0p19TXm2b8iXeJbu95sYLZFakvxORbUwkkqJ6Fj9MJrvNftBSSF3QYOq5MJk8oMfLph+sMQLZqvDPREV5RLq/WpumGYK3q6iBRBC2CJERu55twFQCoSHJhQRsdmFd0hmYbG4ERWhCAjmH6VlQJO0gnLOQVC9uCWSDItgoZeQuzyhYrZQLj81JtWCy2IpAnNTByDeYbAnLukjzDvza66Ah6i9Tbi2GkkAWHOCH4tseAV+Ir5QuqK4EDtZC8wgGAH70YZjycBeYdGwHy2DOgIWEr6AUtoZbV+k5G8FJL/MNfpIU+MZhXvNG5T4sIOHMzXRuU2LDe4Y26FfpBxvHuoRPRPdTEsIO0KJbIlhdFtElDichRhPlRTEWiLCOkCa1gktiyw/KYDtB65b6w2XCBLAflhtH0DtB3SGj6rsgOFhPLCkGwQ9TaAOywkPQvfNJWFcxGF0BM6IBUWeAsPp1uBpst4sWqQ6sUFWFNtV+YUlbGoinzDuLaerQlYeQwjS2SwgEtTEMNitrYoVlh0mZXXpq6ERYbBQ9OAhVsu9StQBqtnIAb0+kQFXWHxgRdYS1bb0+frCx6jzK2rIh6w1q2Aa9XeDesIatrVbf0+E0AfWEjfyH7oW6YnEDFw997xUGxKh4kd/2BkodqrUH0zYVW7DNhJQws2GnWR6oAiJRJIZ3RxRzJ1xTYR3SQPYUPRb3QV13S6OUzG8uv2w0zBBOFf3v6bMnoOkwxy4Wy0P9nvAXcu4ssmvy5Vx52B90dOyeSBpSpNsJIFBeXO5sjlsa2EKmx26O9UebQsddSD4k6CQiLD0K4cHbC5i6TDHIrsa2QthuAhpGR1sO/5oBXLOueB8eRYbsPebCV7eWAtoRk67q0AeiDjQadhl7D84iGThrrgspJaYGFcHKRuB2XFMKoVeuheASBQ4VwHYfr7M4WHFwJuhNfnPYQxca44HItQK7wNxxksjMBaqZxwORYjpH1lmmFUho+jds2EIcNFNh46W3mPARN2FAjmUriWw9dhsHDl2HT8y4JMa2CthYyAkG5EcLCrl7vUjh6HDrdwZfGAYo/XVD6W/Nn2F31wGZC68LQ2AHCYXKaoxy7hYfdPmZDc0D52Ckkrvq2HH29dFt64AHzYch/4dhuFbDeXhjG2rYWf/eT4mPQLmpNV3TriiESt4PrxX2GWOQI4QOw0roVjFrK5VlkZav5XTthTX5e0i4NxA4To5PjhDdd83ADvEjNpxwwxy4FUVOGGxBHeNArXHoUTVWK6ytjB6JKFTRuC7DQN5ZsPE4R2XQN4eHCz/TyN2XYWDEOquvbCx/od5EEbkhw8VS6EQmeiQtSC4Q9wBquZ/oZG5XdGi4fI3NnoETlkuF0cKOQPiYNRu0HDrQomcOw4WoyMjh6nCFHAG4gs4b+wm7wtHCjOFV1Vg4axw0ZygWNbdjacLvqqXifFsPHDOnIqVV84WXETBu1XC+6ro4j04WP9f3EjSwUuENMkj8AW2VDhQtVTq6ytmZiE5wtdhlYVuuFTcIGgcEHZm6fIJhhawQjoQM8MF/E2EDLLa3OXTbOu7DbhVw4xFAbgJ24dPzCGuuCwVuFWCiO4QMsUthocDOwE7cNd4ipVdPQawQvYHjOhEhCS5AtK2WomOF2tAIOBuEJQWitR6m6JQFFcrdwhOIIQstuH7cNGgCCFM7hW9JRcpMhRhrsdw0th/VR5LgCQklclc8JxYCoUgeGJNxc4XPEFSq2UIG4j4RBXAedUY5qf1dkwGUSR5cojUT8Ex3AOXLJVHOWKDAFviuTcTuEKORdlEBA67hDLkQXh3cJZcgU3J7h+zVSa41QkJ4X3xDnh5yxfuEKOTB4XWEZcUK7JBm6bQDx4XTwtKElkAqqBUpl/BJLwo/iDaIhnS4bTx4cTwtKEIPDbOH48J+4b4Uc9BBwlx0HN6S10OBnFdB86hFag1XQN4erSW3wFMwZ0FUiBfxETMFhh1XBnvhOixPNBPRb8CuR9NPJSHAnAgbw1jYfDoLeGJyjN4dXA6kif8p4wxUPRdZGDoDMMEEApiJbHEFoNMdQZsUuRaUq+slS9D+kKxoy1wjTTKsFjgYCqbnIvtBAV7+8LDmF7w91AZvCdeED6Tt4VRcSIyRVRb7QDoOM4NvKMCIWD0XmSYshj4SoRWoIGYY5cxSrzr4dsbD26VfCcrg8MjaMkToTlK0d0gCLF8PN4fqnMTgxvCLeFisnbYDA9OSidfCJwJ4PVAzuXwjRwQ/DgFSxZCVoCF9JiixeRU6DBrBOBMPwp7EPZCel5I+mpQD6tVFQuqcIaABPReZEm3cy6Av1bLiqnEuuPLPbrS5/CVoBu5QO6icvNLcbuUJZYarwZhH2BJCWSBYsSJcpy0RF4eBq4BtBt6CzHnKkD/w/fh8ZCDdof8NlTiJkfCcMwgX+FczEPYH5AGYQDPByZj1aEP4cZwZPkJ/DsTiJ6SJuJP7Xfh8XBoLrw7AXwEORRvKPtBbvoozDg6EQgrmYyJYKTIVmFf4b3QuIigEFDMRf8JgMOhoSGgdAi3+F40gZ0GynV608u1OcYz0lv4VgI0AYi9IeBHdaTUYbkeDgRRfouwH37nLyO/wm5wJbFoBF4VlmMm3FdFgwAiO9LyCPJoIgI2ARUgiH1DK3Sy2ugItq4ocILV4naUzTroItciBAiyBF1hxRXpqTFQRL4I1BFsCInpF9QUtgHelaBFGr0/oBA4HEQVosnBFleFqQFFnKjQ9q9SzhJskb7qyIf2MAWd3PY4MEU6O4Iw/OJwYvBHOrw8EZaAgPQEQivtKuCNiEb4BbfOZ1FMaHa02q+I8CbJmCHd/QyRM1kZEUjFYCM/QXPhRHS8TPkIpEoXKtBCj99DfWCXUZoCMKQydBZCOGAmk8YvG2dghjg3JHq+Gw0FumxQjiEaahn0OvJMDDBnQi6hFfuA8aHvUYemZ3AfCjVEgbUAh3FOweQjHehxFDT0nQjYYRcmDbAhJUk0hFOyCxMfY0WjIsmRuAqe4RY8iDRgORTCNtdOsImY6CHcx2TOBDy3P5QwaBgVC4P7q4LWks4ELCw2x0GBacM0EoGR/GUEeSZ0T55fxpoKomF4RS/B5fjQby+AoCBJz4/8R0QL0Xyh+Cr3QCQtRB7eQb9xhgcqNCdKWI8IRFixEy/v7nUgoCYxyjqO+E+ArcKIT+cQsiGZqJHPSqh/HaB2x9q5TJ92pAriIu4RvoFK8BYiKuEbMIr9A3vcn+jVpQxYtJ/IIoMMCPhFYI0vxEGBNtK6FgmREPi2k/njgVhmTwo0RFl0BFAiQoJER8RUIRHJyzhKInzM+Mx5BNDpiIC+geKIvL+RLRbaYfCNVAew4RMC4ZMV86Q2CVET1/OCAokg2YC6CA1EaD4QMmS+cDQHp/B1EZd4ZURe+dVRGaiIizNEIxP4ZoiyhQmiIaKNaIlpMTJCE7yOqGVSlmlMkUf85/5zBpVIoEsMC2enojgcKAHQNSmSKCA2LAR2rL26ganJ2yOsoVIp3RFKBEqIKg+PIQdqUu2HjMDoOiqlJFwx3RcSjDRAhlFGI1pcbcd1EC0Gw96uioG7ogzMNUpAF0AOq6IpsirxtU0p1nETETGlAUghREJAgalDTSuoXA429AQsyjlfXRNvb1M7oITYTyZFiLd6vjsQtKvJdFo5EWwuEefnankOR9XmjMn1fIZ4oXf06j42kBcgXvSlEudugux85xGGPlQ3HqfKcRlyAy4b4zj7SiF1OBoqx0pdBLfVk3ONQz+QeRg8QIHiNKoZ/IKKiRqgGUIaXn3wDVQjh0p6UFiinfRXET5eMiwzIEFxFTcjQyrPSIaWzXI90rGinwhNyzLdKhkDUMrXpXWbuDAZ8RM6UdvoO3iVmjrAD3Ks2pdxHJFFRINBSUdM36VF0olIH1sIeI7q4R1D0BBwSNzZoSfSCRm4iXxFRPgsWAyBLDKy4jueT4SI/EZhSG46Z6VCJE6AUgyqZRV+kDJhuWbkZWFYbBhQ4Y8nJ3j5NIHMOs1yVPuI9IqJGlN1VAnhCdUCnU5/16yt1AkUOlC8R0FJ4jpDpVaohVqKaIGl5LmgEDkewIGBQzIZv1EJHKSJjFtKfeiENvDP2AyHXXEf++fCRXaV1xElvlXESxlJ50VQDnxEcZTMkXxIwyRI9IuJEFTg6+l9qM0CUnJ6T6OSLYkYKmcFItkjf15oyXt+k0gPiRkgUVT4JgKEkeeI4qisFCo6SyZQ2ClU6cKRXrC3MCaZQdPjFIu6ggmVLRGu8HOEFFIt1h8eZFMrEUOSEcGfFKRGUi4pHpSLUyo6I2R6tWpo84lbDgMrf5AUY8xRHZzpmgBLKA9UmcXZoBCQvAksiF7naUQyb9AArf/TwMPrEScwWehSoQWzk9LveRdWwCkQrEGf91AelVI8RByD1+Zy66RBCPMUVBI5REppEAFDX8mWXZB6cjx/iJBGAZaGk9ZqRsEABpFaRAvMN1Ijlo20jgLDtSIHyOtI9M09whoqbLSOPMJO4cKmpCRy841SPQejNIroiFUjEe7wJAOkcNI6b0x0ixpFSI2ekRH6VjAzS9z6hFlx/0M2eHaRr0j88bUcTMsD9IsrQxNhOc7gyJduKNInhBTD0I/DvUjmkUiUT1AHedoZF7IwgCnAYaQovUjmpHaCBqEbHOdM0PiAhmjjfHASmqIZzBeXx+zTQyMZ7lkFN3OPQjYZFDzBbcrJeIaRkkAq+SABSRkay+bgKbMidXQ+eQECGiTcmRHrphEBLCL9AoXcPfw5BhG6aiWBFkVsI0Ock0jSpFUE3KkTLI+3B3Mj5ZGz0Jh5KfCJWMcFEPkaS7y8UlIBCPuZitfzDHTlCRoYrLyM9G8DZErZmdjMzACPuMYigoxX/iyYCi5a10LlAdl4g7HIMvxAKw6jsi3CJRt1nSrbIn/E9mp9EZOcF1jHQNLdiouxD6FIPD1yid8bRKO9gAUYTpDoSs73TWRC+J/6EDIzgJKlGSkRn4cnZFE82i/hsQa10ZzhSRFh7219Mawj3OxaQBFKvMM+Ef0yFJBmcjxP7h7GESqgwuHuK9DDbCT5SrkaJYLj4s+VqvizkQEsE1qWdK8uxh8T6yKLkQ0weuRxsiTkgFFmtdJ3I6/GbCUBLCDyKDuGHI7WRgpR2yjBXDnxLcI932kSlr6FQ/ChSmpYCvQUIi2Fh3RlCkLXIuqIPSVE5F4rxuSL6yYORpIjNbCdmELkdfjfRK4ci8v7WZC9kaXIihGCKAroypyN3kX8hGV0dkAKMrc4EPuK3IuERTSs75GXkWn+EHcKlky8irDoTANiUlbxe5G7vhDWRiSFUkU58SOR/8iWP5zyLUsBsQH+Rjvh9zTuyJ6XP3nDZWJ5giOQRxkrQoEIkLe1zBSYgRxijKH33NBROahu+5EKObyBgovvweqASFHZeCIcA33UhRBCjaKFZMNFlJSkTo4g5FNahgQVIkIORcp890RDy6sKMbEN1BOnwGbDXID8KPt8KhAMm4MbUIg7zM1X+OO1XhR0exljhhoD3EDKbc/eF9Nf2CpHCaRGczFpQCiNBIAZ/ykUdscWpALgx5fiFNBBqPoojBQh5ctFEyqBhOJ+NNRRDlDYzj/oVZqAFSFRR9TQdjyUF3vCMS0VOsxJoyBQdiJHsH80GRRZtgmWjoqH4gGU0c1A7lIAlEXIyyFjCzb1gbLRqPBt0y8UXYjUlhIEhFFH/ZEAXjaMZQ4wcBApguKPCRj0PK5mB1xMK4JB2AkMkotFGZijECSSAFUUUYowh8MSjx2p6KLKUVCxSJRhSit/7LjVuqC4MdAwUApKlFGEWn0DlNCRRI1Jb/h3NCCUcyXHa4sVD/FHkcAyUTIoppRM1dOFFtkDCLqhXDsR3/0VoSPtXwoEQCWZRGgwTdh0+Go4ZExVihcXDJmKuKJ3QC3A3MRDSjr/5o3APEHsYNHgbTFJmgpBzgAUQCA2413JplGaIxgHkRiN9gz6QfzI5GDEURIjUt0CgJ/EagvyZcBEojQ+yvgGkHVKI0Pjco0wYWqVNEY4ICfwE8ouZov7CdIz3KNKUUwkHCYnSMWlE2wC0BNscQpR8KjHBiHKOyoEsoi5RFApEKDZtW+UdCorpRIuIXOHdtzwFKW6egEfyMZFF3KK4RmMonqgFxcrlilsPRkMVSFpRaRg8bjNiAWUXdxKRRRHA2mI+giZUbhNYRAKApflHmUOo4VSotmBHSiDKDUqNWkYjEAC4TVI4VFj1HOUR0otIwCKi5mgacMPDNi0JFRJOgh/jDHC7YQW4Eg6uyij2EFXDBUfm4SCkCYIrFF12UAOg8ozbh3CjvEZQqNJ4mqo7VRV9kSVEcKNLYeARA5G2YjswTCCjcUYPFFFRwqirgr5UkHImrg49EZdYlYTyxnH/sTMb68NeVSKDVaRmhKGouSAicgS0gFfBfRECgImunij41GTpFjUWhiaNRoNdA1EmwP3+NDQWlmGUhXj6d5RQpNdpZnq3eRNBxkyGZ6q0sRpRuaiqSjRfEzUQE8KOOa5VXhju5DwxEmoyGuEPCwGRgAlL1jkYZuWVaiM1FoYmgTIUdIQwdXF8PqskHBUbeBbK8sdgGRxZqI1dCEOLtRix1J2FUwCIBM0QEBINsDUnj+aCZcNdIcp4V74hXCNdUjUbOg6lRk3xvYFXpDs+K/AiEkhwwg/CO3iaMAZeHtRBlAiAQpqPhUb38fdROQFkAEy6yEeuYFWmeNHsb9a6UXm6DZwP3hLM9uOB0GQIolOhAp2hJlD0Jf3XQ6MJPHSwKhFf1Et0Gx5P6CG7mcD0jdKaTxPuiJwFuof0YY45s3ls8NDQE1QhvR+fIb3TxpNhomuomXd1rjazxGeEm3UDOKGjpoJIERnslp4Qr2iOkMp7kQw3UCPyWDRKmx6WS/qIQ0FvhN9Re+IhaRMaJlwJHdBDRGGFvEzI8hHspMcHDKGhFe+TSxRfUbyyYrOM6gFCLuT0WOCFkEfSS1Ez1AUPX2uGNRBjRYwJhVD6eHm9j9cQrEhk8kNHdCEsVGxoufk+GigYpAPTX4Ty1DXsAxxbmL6aJ6hhMCOSiLs8uGg1Ck/UYGMeombWlvZ5RjBhJGkRKmeWGhGNFvqIKJMyyW2e1IEWE43XBgwhPdMyiv6jdSJZXAA0SZhIBiqHAS54kPWfMHRRaXCymi+NDP9Gm2CPyYzRPUt4tGgZxxntL7MQKls8mth+21fUfjPahooWiVNHRYULIovpcLRuGjt05eaOltG0RBmoF4xTNGuaOBnkrMP24K9lwsKlaJE4Dlo6rR21xiNEQoDg7tZojqWm+RmAp6zyqwlUSSLR5miQCIuaOy0S3hAh6H6dwZ4eaPMMtUIAfC02jbtLD4UK0cBo7rwVmj0KQckIG0Tto84UYD14TK/qJ3wWUFUbRsmETtHHmCi0bnhSruymgtp4XaNfUbLPFDAtGQ2tFizyGwiPdV9Rx2jDtEPaNvUKthZvkg2iVsgbaLA0Ui4MJgk5hsOBo8EHwccoHTRP2EstEnUXbId8uIzQRs8n6xoaKh0eDhY3a0wINNHaqDk0FHyfbRXoilwSiWAy0QogGHR/2j7Fg32ypVFLPYbRLyo3NHA4RiYnrpdcRq2jgtFHSiJ0Tjo31RvihwPxg8HgiFfUTD0Cj5E55xzydCF2nT+eHOtOhQ86KIEIkKSHBAuiqjg3aPEcDnPE4UD95hdFf1BiYow+OeGmpNfHzlzz/qC6vCoUjERM4blCm3sGxEHqGyuiiPDSCGaFAroth+7c8ZdFEeGNmN0KNIUF94+54TZFIHHiYZIUMGFj2pjCk/nlD4KYUUQpM6hzCmwaBzokzCLCc/bC5wja8CO1FXRl3V7pBSmFoaEnyBUh1WDsHyaOBgImbozpw/E8LhRIkgcIO/hK7utT4NugdzUeFLpEUBeT6iT5w9YgleuKhNdBRgRDRiwSiHWGlaWI2MaEC9HKBAc4oqBDkUKxtzkgwCMaMDYwEUYd4gE+xMoMNGJJYU54x9J8hBF60tjBDKLvRCaF63Z2oLb0U7SCGUUrBPWI9Am21B4yVNiBogFEDWsFaWnR7dRAZej89Gh6j0oFlzafRxopSTYec2zmOsgfFgU4w06BZkTRRM9rIN26yBCSwajGr0R0RYkUOnE10GIBGD1mfo+yqZwiOdo7Oj4AsHrPPA44ifLJUSg63OuIkACxfBrjCRIwGWDTOIvqqLYnnTPKHw4ubAY7UWkQaRSQBiAMf4mDbY4HVHVDqLm+Vrj1HHCyQVAXzFzmJAlbJaVgyJRbxHgGJgPOVgYGysqhq3ZCkyxaK+IxqK5LAMCi/6JGWK4mPzi5BjsehUSme2E9ZLxABnYDNhW2B++lmseAx8LA1XS4SNq1BgYwEoNEiIX739WBRqRItgCkxMBDFPOgu/DX1HgxX5JbApMGImRuogBec7Bi9TSAujkMajUW4sM+ipDEbbEu+BBI8uYpT9ADE/SjkMT/ouTeiWpePbabGoMSdaI4mIhjZ6S8zgAMQIjZ1hTghwxQQkjikZ4IOwxVMs4aHZSNsMbPrSGWbrDHDH+kyeFNFIrwxehhcZZMMmSELtsSeovhj0pGW6wCMdtSGiywRiPDEMKIW4SIyPYcMqNcDGSuVeaK7NYEoYzhaCzqY0qOImvIRyT75bPqt+hyMXIIfOIhzQcCb6c0lcq/kOImpRiF+JBFAzxg88Vxyodkcdo1H0lCvUYhjGQTh8IilEzhUoy1coxZqMYSY6OSJaDgTHoxVdUEUCNDQuJjY1P/AsaMYxaTrzGMZGjK8gSvDmjHfKVnYfJOQvG7JMLQryOQ5PFkYo0kCeNXTCSMkTwFkTZYxMMRQ4oNGJbPJ8UYQmiPRwGrp4CyJpHgK6IGxi4iZrc3ziJ/kUvG0OIwYis3GDYB8pfuINxAwibCgw3iOe9Fw8igNWTCFvVXfPaFWGsw+MBjFd+n2YqeKa4GodVUiYdGPmKtyYNBy4JimvyN1AzVqBlXrhjLQJ+BJGIaZCkY5lWjXNRuENEE8JnsYkQoheNKjF71XjBK2wIkxEBVkvQyYyJMUNEUooAWQ0jHV/VAKFwIdExGqNcTE2sBdeC4Vf3O/6NHzD2FSWnIXjF2gRTIeTG2EwhMXVESwmCylZCosmJkxjLaYoYZhRXxSfGORJBSYlw8uUMFip8GT+WmX9OS43OoR3iEFXlMXIIcqGTdgh7LkY2qhisVPUxCpjlxQvRGUMgOwBTkkhUoSbQmN+CLMBbDGyJiJbZJpSqxiCYx8Ke70BMaCAxtsE8nad8FpizbC+E1eUtgDCQonhN5OBNuAhxEnYbUxiAN4igpZD2MarYY0mWxjSCpDGI4xkyY1CKC+B/dSxmJolMmYvTG9pin7IcmBeJnSYmiUXRjb3w3tQwlOmY+zGXJi6CrnGIyyGyY9f6xZjcjGWOGrMQh+ezkcnhXTHwmMNtgyYvlaZJjGzFnEnNMR8ETExQ/ARjG/BAHkCKY50x8c0kTFDmJ32O0Y8d8vZ4eLg0E0lMXbbKcx4at2zGTY2VMUZ2Or83eA28YDGKIyI6YrVGVJjegpwmMrRi2eMfYsJJCjGhZR7MWsYrkIq5jWsYz0MuYSkIjrGMx8mRCjtHWMVfwcZyqvA5GSdhz+qDpCYgSTC90ah5GOC4BsTRTodYppaDBtD/BJzET8x95i6xTJ0ElcAscCxkhfASnLuQitqtQWPbGN4BPXBKFBadu7CVxkatASnLJQj3quBYhDoaEI5zyliDKJIrjZcUP5jALHcljYcvDMQlyDpA+xSxbkAsd5CfZkgYcrWhAWMeJJK1UCx1f0y6BC40FiOyY7CxlOMqLHoWK2xrd6fkxvFiG7I//VUKgk5fdomFjGwptxW46O+YmuwTZjXWh5GJzULvgtbGEEpcCxnYEgsRhKBWgcTl9jiWOG9rJw5aSxXPQCLFqWPX+mxYzDosFjymR+PggsfxYgiU1+0LLHm8Af+sZY59o4lj3bArEI7fIxY8yx5LA/zHPO2z0WiVEuuVsMMUKnCRv1sNoPyxFacAGgcPB1rja3D0o+tcQrFmoCNrhQSOsITsxVaD/gzisQlBRkqJYI/bSO1zoaJzMY8agsV34hXjRJouQxd2uYGJjdgz+nhEq8JIqxftcQrFtAC9xPKVQVh4/o+aCh1xOHEP6LKxOGIVtTGRHrrqlY+OuC5sIrFJ1wNIklYwWSRpV2rEMiXU8FwxHOurENkZiKIXTUv1Yk7UxddEIYHanLroLFFqxZIkzUqBW079EzQWSGq6xZRJxQx6HLVY2iar7h8rEl4jAhmVY5NSiVjCHj910mscNqelSRokQrF5fF4mpLFa6xn4Dp66+WPisYJNcHQw1jiyqUN24ttFYleu7TCurEaKXJEr1YxSaXkN/rHFiVQ7qFYg+ueklQbHH128Nlh0M+u4UNwiAmp1vriTobYgHsdNrGHWJ+gShJCdY2k1zuBhglqsYtDa7w61iXoGA2KPuH/XRKaKGI/LFeTV7vP2sCuOD9Q3OiEzFgbn7UabUIU1Kob42L4gaVDDGxQDcioZ7WNnEvlDVGx1U0rrEMIUjogFDTmxK2kopItAFIblrYZmxK2lgoYM2L23lZDGmxDDcvYaxhl5se9oIGxdU0LHz/WIEbrjoFWxXDcC3D82I1sZLwdU88VjpvDNaBDqNSnbWxcNi5YFQN39qKbYiRugVjDbE22PNsTFAqeE+9Q7rE8VQVsT9Y7RueNjRbFrTRFsZVYzaa4UMebGSVScki7Y8xueVjzrFk+mOmltY2eiEdj1bEONw5JDzY5xuvPBUbH3TS8kj9Yh30xolXrEyqz8bihiGp+stiIbEhN0O4P9YlnRQM1DniUSmEktpVUux9cFiqpf6HisQk3eD42ig0m6hMXrsbDYMiq3LgHzDFVQrsdTNNF4oEocZprN3GgHYWMpusLxYJQGBSJMIPYl8EtTc2ypuBEabiR8crAtVjWm7wfGzEB03FuxC9jGTCFw1zKvzYwmCabxq7GNVWsrqVGcmY5zc+Ph7IUdouU3R8qZCFRZppwwGgGTYwFu2kQO7EbyT+bpFJWqxdLcu3iIShSkvI3GtwxLdMG5v2OfKu3YyexWsE03j32I1blpJTMqLWohppZw2yiHAYRHsUO9FIhq1iRblc8PAIR1VMG5b2JfsUniRBxn5dVXhwON+bpq8aBxMJCOkHuRmFOMgXTFmwxxalJ7yWtpgIo8i0tRdSHGv5xIcT+ZfGwbJd0WjSxjxCuQ45JEohcCHExTBGUuwXJfCMyk0tKQFw4cQxFR1m8FRWHEdSSRLiARakQWoU0S5PI10ircXOrCzFkcS5yEXCRM8FPhx55o6IDyOMVQU9owpEkhcxC5l2RjxNF6TwuRgR6C6kszHcOjJTkuLNxrpI6OIMsvdJVwuqOjzUC8F1VQSrqYIQbBd6oxsESiUaIXWpsl3APkTqOJccfCgy8yxBcj16YilyQey6a7ivjjovQElxNIVZFWYuT9ZOHFg2CsLvig5Au4JdiUH0GH09KVMEnRjKlInGOzx6HrYXYX+22gn5LP5w0suTJCxxhOj5mRxaWRZgMsPxxlxdlSK2jEKcffnEyyMqlOS5VOKdUgGgssRsmlHC51kQKcWXA14uRBJUS7AlyQQCU4s6wWzMrNTdOMkcUggONecJc0yIIWTcitGg1+kjTilC5UUjMcWM467i6yBpHFZaU5LqgPL1SnhdzRAcyW2LhsRQNScWk1WYjES2cRZ6AJxiDIRLJ9FzTItxZN+SYTimB6jF1icdu1KzSaJcdGCTOKEcQiRGCyWxoFi7nERacQNYA5x9jI6ZLrFwtPuWpaKwLRc7nENWFWcTF/GhxpLMLnG+yRJLglCYuSnJdIXH/F3BLpCRTtS9TissAiOPisD8XOjkYVlVLSdOMiYHs4l4u1nJ/Tz/F1JZjC4rzSEKCHOT3OKucczuQFxDBcSXGeRQBZgbTX5xQxdIf6olzJcVfeaGwTLiZP6COLCcSEPfEuCjj1MB3qVKcYMBBZxKJoyXEMTCpLnC4p2uNzjoi72WS4caQ+ErYKFp9i45OK2NJyXYVx3lgfC4s6LStOWpNUu90of9Til1pdiToiJxZZcy6YzwF/woGXEIwS4QvlCkBSOlOLgY+R5Zd04BGuOVLl9qKPkyQowFQ4xTn5EaXHVw/EtLS7wjF/lAemBYEVpdUC4/SBdcXaXBiRDrioXYZEXXINSoL0uJSBLXF9SIioURiayWQ0ixEBuuI8OEqXPUuEPUMjDHKGNcaURTtempcy6ZTyjtUI64zB4Sa9HS62uxQpBbRANxjrs17zOuOTLsWvN+4MtF4y6BuJmYFRpcRBopd/XHJl1pdlrwvqEVqhycCnyC3+GfKewhrvce3GlESaEBQoBZIts5zRAspk/glTOG0QL7hH4LyaFOYQNMfeQrPAhHjcCHCMLakCzQpzCKA4LuLDGCsRXPkRcJG6gU8C39AF5WkowCA+3GrwW/+OS6J1Up8h+pZnynEIXgOYqU0CBvJjDfD3cV5qFjUm8Et3HMynnVCEoZhRDzCq/biKEXcYgXbrI38gi4K/ynYgAnhFckibib3GIKBHcfu4uIw3CgB3Em0w/cb+4kxRo7UM1SvuLcLt0Yb4cV7ilqhKqjNwne45gkCaBEPHmqKy6j+4zdx4gIj7wfuNQ8QEMRLqvwcIlCYeJNphGqS9xZ7iT7hN+27cYx4kbkbUxIPELXBR6uGAZuEVCpWgJDuJyUCt4FA4YdcWEghKmGuMJ4nJQtHiysD8eIiUFt4Ph4eEhWvgu2GR/qYEXdxVjgBsDzuIJKJR43z0tRgNPGZzlZ4N9oEjxwxcGCE0eKQ8YMgyaYAigaUhzzkVaKZETdxxSjiEztiGs8Tp44umCOZ0lBweI/nIQHFDspHi79HzcOkVkOImQkUsBl5SQqmZPl6kVfoIRR1v5MVCWbKRgsRcI3ISUSgKDxfFF410wVaBbPgN1iY5IyvEBUjvhAFzTvHm8AfqPeRlP1Vch79H8KE4uGDqDaA85Tyaw1PogmZWUuNgFFzWF3myjbKOYgp30EvFf9BPyDCffa8zcIp+TxeIBAuvKNrxKJ9Iaqu92JsIEuDwkWLYAFQyTB++mD/fLxXyFiMppbwpbAAqe5I3P1XVRFwi68byBRYWDsEFvHQgS4cBAqJrx3P0M6oCJH15BN49+442JXZTdZCOoe6Ub9AB3iHGBMMM2Vh/ubbxpXidvqHWhOkpF4wb6vJAQvGEbgMMelYCFsSfcovEa4mkSCt4yL0V2VTvEzeNS5JCIMRIO3jCT4HxEcKgAqQhQCv0JZrvyhpvDBIqHxV3jbSweSMLlmD4reRmkjJJCA+OG+CUQCxcP3iZUBOfHvkL19atkNspWYiDfTkeNn3Z7xo30avG4+Ll/r3MCrxgXjSfozODLlLTQ6i8P9xshA5KE+MKZgSzAh0ga+gw+NVAtgUa/g4Pi0lyXQiy8V7KcbxIPiSejB9D68Vd9eaEpPiN3wvUL9+tQiTPq2ot4wIJQgV8XaLAkhi8VlG4K+KNgBbUVghTfdVfHYKLQoVq8NqiuviTRYu1GV8dX3XrA3p8zfFN9y18d9yeXx5vibfGxGKadsdhByYREdhRCJxDWYHqhCXsWeAktiydCYjiPZd3xvvirw5u+KtWCdQH1aiWI/AryEIoyDRtVbw90gGQh7aiz7FcqNhEm6ww/H5VHd8TBsJiOqfi4eghcDLOM1An4sAm1eUBWGh+REf3YMo0wCuoGDIDR6GagEDa2WJLvicyFjDFX4sHRLwcS/HWnAd6KFIKVaBfjKI6UcQE2tn4hBIXPZy1qdMD98cH4gBhofiD9T++LdoVH4oTavr4l1qDaiE2ojIATaUoBdw7V2TJDumsbNMICoG/E0rDaAOoaavxmJZuVie+LL8ZjRKfxp+oi/GSoSPuDQaeIQefiOBCB0HnDoP43ryhnB8Jwuwm98S+USrUxG1M/GP+N1TEhHV4QZkdW5zJ0Hb7EFsYvxpHhVUKxwkKRPv4wecpfjrkRdqmwCOShKvsuiFy3rt+IMHCVsJfxvchv/ECKG20IeaBjwTSEPexw+AUqCGhWRQo/jH/G3+L17EyqON2I6BT9S9+IiCvP4zAcKAS/2ZIMM38Yv4ht6K6AAo416GgCbwFRRCrG0a/FFvQ38av4oAJwbsWgC7hyP8eww4gJkBoz/Gf+L88EFkNPs1/jOqCMoQT8SJ+G1APNN2DS4BLH+PQE/+UBjj1g4xUBYCQ70B0mt6AOAlwBMwCVxQafxnvQnAGtLkv8a74wgJS1pW2gD+J0CcGQdAJM/jDzR/kVECXxtZSgvusj0DiR34srUA2cg4kdcAnLoCCnOhHEwJE2tlgH3+P0Ad0A6c0ufQ1AldNBnHktIP6g3YFCuBkj1cpvyA7/0xhBXVrmnFy7HnpYAJyPR5gHf+k68BwIVlCRXYnYj7rV98KfqNYobI9KpBvIXIDMHce2hxQTaDRD9HLWtMEfIJnshwAmkyCyCcdoczYaisJULZDkz4AGqUXBzfiCbDn9xiCZv4roJKQSawTDAKgNJB+cHoMNAUuwGw3Ihmp5MPxyjhD2BFvTcQkN2ZIJ8J5Rwi7+IT4WQE8oJOH4Hw6tzlGCTwaBmAGRhevK52yj7H0EjaQvLxFQHvrHiCV+DHq2MsA4gnnUhtPiuQR8ASSolmbeaA77GoiGlmYbCDRHOoDuCVkqLviFXhDyH3BLskLvrJ4JLiIXgmPBObwi4iJK0rwT4aF7MBBCZIiABm3wTxGzQhK+CZkwuIx8H8KuSwUSzqv/jWW61lFz6pOD1ygQNRFc6hVNGlS4hL+VJk+CbRzdV3B7g1UjUPtdaqmAKVtri+WF6YNVTEBqNZ4jwGkGRxCT06XGK9IT5ozDhDFej0jVaInITBlQgRCfQZIOL5UKISWMGusGpzhiEhsieIT+QkNkSdOjoPCpUWPA8YDu7SaptzVTpw850lQlVp1KaICrUVK/OiNQnJ5GjXASE28Ycyo9QnYPkQ/PhbAcRNMtfPHqYI2asOEFpiVfImQJRmSjil5/cJqBSZDgSOhKDel4MfPSlIoi077QFG3I5/MWWt3BH3od9GNQCrgsYwKGDPwC8fXJhgUwVkRH70IwmPCLLoD5bS1kX3pnCgRxQSCAa6TSwpzVMsqRvS16DDwJOK7oS0CbOihzCZXcE5U6uhK3pO2MG3KSPEy2exhe3pa9H14Pe9CVkdbUtejM1SiwZTQFDB+YSrsFqgAGEVCKAsJZqQymBphJLCVMYPAmxXjawlILnb0JqKKuWk2Nb2ot9DsQCrgyFkZYTr9rRhOHCX3wMkYToTweDOLSr5OivK7BM4TFdweFG+cte4P4gJypdaBBvRTVDwZMIoijUazzjxx3fCZIBsiXC9eTSpW2GCsKtMq2JZgezLz1V0EHJSA6i02Bu+7MwGGfO+Ejr+2Swvwk+/RcMZEwi+wj4S3wke/RVEZ+E+oK34TUKGzmQwyHyqZ8JG+dwIl5OH/CRjQ/Mm+ORjyw0BO5aMcA3yAvQSyOghALjzLAhcnssKRpKhskDgCSEwMAyxaAaDStQIBAfX1cTAGAT8ICktGj6JAaDmu7gDPmq+mn0AfV6N6sHvYQOClmW1LFV2acg9wIWiAGqAd7CbAUsyAkTtBz2NDiAXfdYiJrQ5evT6oHlcqxEjIBctwQo4J8IUifSWGSOsKQ5+46GgBHDYE2QeJwSuwEshxvHC0A1nsIeArhoGRPP6MpEpEoMaBDIlMRJGRtUIpXsfESvPEwfzrIL0vBs+SGoH2byxwbSLiA1dUtkAq2RX1jNtMyFF4BSYRe1qwGnQnkViWEgvbBFgExi2bDpzqPcer2gGIl50BOqFsAk/I7IDZNRAj0JoclEv80xwDtBC0hyZYMRPDdkUwjWNQ9ED0NP1UeYBB8JBKB25ECiQBtOS4LwDK0C6AKqic2PZLMCo5H8xYrwaSK5E8cgVEScfBlh1lEdFTRxsbfFjWCQgOFENCA/wYi/c3vQXIRA1MNEjR4ZCEO1Qokhm2uykTVUjLRGo5r/nBAVPZDgei0S2+Id2XgngwqLValB9GJ6FIkDWj40O0eUT0EQElsHcoIyA/KJq6oTomsgOqEXBqbyJm9g3xSDwgzQC/sbFI/IDSER0D1zLPH4l6JoIDUDy3B1YitCHT4oywCt5h/jzEwB0A1u03FAWRoIiHFWhlE0sy4MTENo6vheGvpzc6O20TKQEyLGyiTxcU4aX0SUBLBRP/7gfUIKJ/kT2viwCGnWvtEgweyLosNQf7nljsFwMkBOSJcSRyI3b/HNEqfqdr98OBYaleaI1HJ6JBMSn2S8hzzGjjEqLAJg8zvC3ByGidzExJYKMTULDogPhiWeqeaJ7Q1oYnjqjQHqqArf0ViJGqR2gMlqJ4iL304IT6hJ8BjUREXkYI0hoDPmqmIiViU6AhWJ8iIdYl99z1iSZqQG0ysTAIlFIzViSbE00BWsTssSQ4kRCU07fkiKW5XIKGy3fls0QT4WWDZ8k7nNUxFC2lSMQZEEERQzkPQXJvSMdwP9IQIjg6hPBK7sRyCwOFjBTLNmIcK6g9rco7YJ9GbXx2bLKKFHKx3dmoL5OMdideBQnRjlwuIipalqWEwrI6gTAjI4k1LDhVDYgj2UHP1N8QDgSYWH99CuJO25kUEzahLiVDVApY3sSENDRahvkLluawYIXV+zgZxKggsfSIJ843Da4llOgBbB+BdOJCddK4mcIETieXTGOUfcTGxBjxOSWMArPWCTtU54mI7gXiRVqMbK/HDJ5xLxOOlltBCChy8Tt4kcLCoyvrLRe49lZ7OHDQWxQeNLLwOuwFnkRNu2BlE6RNeJ07wgdi3YWQVu/cZOJNmZZvDPxK1FBPEwMwyMpN4mY7yJuOPE9+Wl6MxoAh3lleMw4WOJ87t1YK46OlcH0nT0wUyxAVhsKxkguw1H+JcWo04nOywASfVBHeJt4I9oIiNT5LgFQh/RhXEiWTLyyfOEAkyDIQ8tQry8SPyVsJDS7gD/cNFaEsKaQMorVmW3u4R6QmKwj3ERnEekW6cI9y4Zy0kV1RTi4DJhLxGwQCcVkBeHE0W9JylYtMHp4K/Eey0Ays3zLjGgssv4rVS8JSBk6A0JP3akCuP2WjxjjRQU4DvlmQk38RAGd9nyN7kokfkrN1EJSAPLpBy2YWJ1qeFcQ8tlgYSsIISX3LRiQgC8oNjSy1ZYIqw29cqb10eBasJu6IFRb0CriSawSuywcSWAYq9Ad8tBUTyJJAzncwB8+1SAFElBy2OBvIk9RJqO4DEkWGO0Sa10cRJhfB7mpA/U5YfRCNDOTe96oZ8JJUgBvuMbABmdoKT4ZwVljEk+iE9UAd5bKN0YSUUks36KSsQkl5JO4SbL0SWUXhxskkMPEcSfeRARJTINQpGrKz6PnFI7SM2ZgA2GzKw6STGw7SMHeRopFdJLS9sMuPZWx+4Bwz6+PV8WMkvl25Mtpkk/3E83skIlCJlOppsBknRGThbhDUAA9kAmKvTxmKHvZevIApCWTKzuFdVHPhGmIeaB6jBT4VSAHnZSdwedRxkbm2wwNjZaFZJFsAXGJUWgeSVE5e3Ip0tzbDYwA1mAksC5JXp10wgoETP+MqgLZJBM87WDF2SBSRNkExoyzszknQigpwLXAKFJL2EywBH2TWSWSKBFJetk4Um46LxgOM5I5J90oQUkSYGPssqRIKA/TlntCE6IIMrO4LboCcp3LCbJPKwAkkv1AS50UiakFwxsLSkrCyKqCNkna1DuSShSKEcMNQrkkfxNeSKPANFJ0OE+8aEuCxSebqS/Ss7gN4Diz0GsOY5NlJs8sTYDdVCeSaUsErSsqS4KKBiPYMlxAMFJBCwRUmEuEYciHLFywU1RuEjDcnbut05PVJ9ZCnICcpLEJvSkllJqqT5ua+LCHuoyk/TAmupQ2C6pL2SUGRA5JgqSMqQJ8MNSX+ZaDxKKTeEBSpKQQKAZFhAcqSv86FCMtSZ5zOMiFqTZ3Ay5AeYf6k2dwdDZt3HepNJSZWyR+kdi9OIxVkQBHMA7JFJ1SAdUmxQAzSXhSJx2wsxoKQqpITSXUkmVJabQF5gX3C+sGcSTVJOWVjRR3aR9SQz0YmUCqTS0lMpPzEVi0SVJMwsY5QYpM2clyk8lJWaTXwBopPmcRqkr5JU39T9KzuFDSZb1Wtgkbh9PwDESZKJK4C/wqnIZ0kBuEDSZgyWtJoqSjSLDvUVSWKkrzUnaScoB8pPi3sA7XdJw6CPUmbpLM6iSkqNwRpF/LCmpOeUCXeE1JJZ050mtAXjSYS4PzmRR8yOgepLHSZe1F1JQ6TgEDbpNncHak4dJLTs/kn76IZgJOkq1JqbjVDIRpOrST6fMDJWDkMsrF0krSSUxLzUJaSt2gJzC/SRqknNJe6TdklCpPOIjyk/doyGT6mCnpPgyaO1aNJ0GSJuSSDlNSZGkltBD6S1UlCl2TSQBktdqOKSJ3BKpJNpt+k11Ja1Re0mHJIypMdJfdJnqSBZzM5gjsr6kzZW2GTZ3BXpPRUAcUI+yjsxauSUZJBYoFMaNANGTPlAzIN4yZ8kwboPGSXUn5pJPuCIZYPGmGTuFaoZKdST11RDJg1RcMnXPBXSTMGRNJWrwoMllpIbvPPVG+yRqSW0EPJMUyW+k8nqsJJCXDCZKY5EBkhBy7aSS3GNpIDSdxknO8g6SdMlSeK0MuBkwem8ApeHLWZL2lGFEf9JOmSZFxxGXsgAekn/RoKT60nmKJWKGJkhLJzi4KUmspMYyTIuMXaO6T4ejqKLy5tWgOlJbYh3fAo23MyRCXGlJJUACMmoQHDSSmku+cp6S0MnNblV0hTUTTJsOxbraqZJGbCOk4zJ56iPChwZMiyQNALLJ7GTxmaVwFRcClkqNRgmTH0nYkXAHKak39JckAqsm0ZJGpGVk7LJWqS2xAQ4n1tiVk6bJwaSi0nT/yIya1kx2OhKSmsnTLkxSRlSF+4KFiiUn8PiMyQRkkxB62Su3A5qMkyU1k/xwXGSmslzyTwct5k9ect1t/ji3QgeroqkqL0rLMJ0luZKmyQf2M7JZqSlsmeZJjScoKF7JbaSo5jBKN+KAA5VrJd2SMMkNUhfSaPAOrJzOFMbYw5IZSeVkpTJyjN5skRpMQFOIzUbJBWT9TT8kHuyRlSQnJ8WStciOTEWDENkiHJ4ACocnEOROyb/SdrJSOSF0k4ZPlIt/AobJTWSHSDZZPZyRMOXNws2S+4Do5L+yYx3XmiY2SPOTAIMwcuJk8JmbGTCXAC5NZyQxkm2Yc5559RcZMWyYXZHZJuKTVsmlUCeVh1knd06mT9MlVkVFyZs5OrJsQ52LFc5KXOq1k54hPOSMckp9Q01slIxTc9GwE2CqtRdqN3qJz8klQgz6ARPUQKFmPCMjIhqwKO5Kh2ks+SZJG4I3cnRZgpYLCIAvUgeTjpJqawiYVbklxgbepadrtWDH1NHku3JfjCVlxD6iS4mHk6sCyeS2xrCZ0KkUbuNCJICoxMD+ALNRL5EzdxxA1eniKRIADNVaZimG51EgFxj0sAZQNK04xniXZZ2AKvJPwPFp6TgD4Oyn6kdOq3ktS6j7iYRS4RI0iSAhHeG3ESOIlF5PJUPxE2aJAig88nogNEieZ40WWVXpK8ky0wAHg8NL9wrvdqxSt5LzySFHFfJKkTbImbuO8GhCPHQ0LdBtIl2gx6jiP3Xb0JmAZkgDR2PyT/DSyJ5/QN8kWRM2Eefk4vJNkTgYkt5I9QIEE7PJ4roGAkSeHciXoqQYJmpQIok1RJAVFmkdCeFUT7DRYe0n2qFE2IgiXEIoky2iYjo8Qmu6rwgagl12HBHmlEuXgWSdUolJRJQKQ1wQIE2A0somQGjByOcAyKJYiRvSjXAKi7GkEoOYDwDWU6dBJJ6NVEwvJv+g7JD1RM8iexTYYJDNMQgl8gXaiYqsGKOVBTuokNRLEHHQUrJ6pZxMBz+sHGibo2BEBp/QkPiFmQxqPMErjw6IDGXTFfHNENiAl5I3BTUCkrRKv/IMEyS4JIDNonuR1AMTtEiQpTnZ68i0gNPKEpBQApoIDcxBMRyMKdFTAy+KBTf8nYDTv6JxtT/JL+wjSSSBNoKa9EwHgZ4co6T9RPRidxHVyQXaBpYngWFBCS78eWJ1sSDcimxKtyarEwEJ5HBsrYyxL8Ka7YYIpU+srQFGxKnYNEUhvu8RSVFS6xOtiSkUt0BvhSklRQ11L1NEaCDsSySrrx0hFmcCCSXWq6oN1fSv4GKKfkhEpKnAZ3rDkyB9BsdQSEOeRBo+qiPEKKZM4D4WOJpmimv+kmxOH2JEQ4vBoxZwuFt6lUUgtWeNpiDQxOzKKU2LHYg8fUFQadFJbUj9mPx2wlRNMRNQBKKd9uWZws0VHuodFLKJLDBbopdRSR/SwLGmIB6DXSYAjp3XCjbFIeDCkRxwO4hZik+gwxNMmLV3skxSSboeAlgWCMU0h4jvRJ6ClRjTmPsU2isfmJ6LACvCREHxcMgMh6llSAYiGAqK0UvAMTRSsdzo0Ab+r4mJHcwtBJLAo1SuvNH0NsWctwSinUIlhJESYWopBRT//Rvn0aKV0IKHcszh3aztFJxKaJLHPgXI90Sm80ToRBMU8IQvxTV7TCuBh6qI8D4pCo5+ik2QB9Bs8UvGgOO4Z2jYpHBBHPCckpoxTWAyclIuKaE7aoprJTtRC9FJTWnsUn0GLRTWbSS9h6Kc0aXEpiJTKikElOwvosUuUp0pST4TUlKPkAqDDEpYTpUZASgzI8NvCWo6AxTPhoj2nN7NqIKEpdI5KoAztDBKYQ6BkpYnQgSkSlK1KZf+CoIVJSi5C3CEpKeOfRUpaF5pqG6lI3OgpRF0GAUB3bRR3CnQYMUgAM/ZxyVC3CGFKVL6I7ImXBlim72iw7ESaUh44pSt1RolJKSjsU8u4D9J1QbQ+kHhMFISMpdYIU5helPU7HDuSegC0p66R3Xi/cLvaFogRZSdLjCOCjON6Uii4tcwSXALeHVKaSUlMp4cApikbFLvwFyhAop0xSH+DRzDMdg8EIuE9rhUupXXh1KaAoYMpGoAHHY3BGbhEYEP3sHpTQFBJuHTYGOU+Mpl9gsSlMlItdK74tTsa9x1ikUKF97E9eZUpESgtyleOx3KeT2YgMPxTeykABlR7EqUocpOAT2tKQlKL6HfEG28mfBsSlcpWkSHeUik0xZSjAyXaETKS6U3cpspT3ikrlMPKUNIKUpdJTrexY9jHKfUU2SE/5SxSmdFL4DC52CCpogZQiwF9jDKQyIKcprOIB/T7knJBhJdbGCUdITAp3XlVOJv6I0p1pTHykCFNPyQN2Ihge/ooKn1lItKe4OI8p9pS/vREBmANBpkfMpTBoCglQ1T1Bmb6KrsDJTplphlOc7PWUqMpESgz/DrWxgqfYqPCp2xSr9RElO+slSdWQM+vZB1ClFNYDG30SHsrPBqAyyVLQ7DaUyQ0kvZnSnchGUVBYZWHsJFTkAxCVKuvOliHSpZZSFTTYVPQDFp2TMpIFTeAzl5IG7DxUlDsZpSEnYLlN6umh2MMpBZ1POAGIwjhM01PR26FTqo5SBik4BRUlDsgu5PODaVN7gm12S/8+lSgqm2VPwqThUzuCRFSC+yflJQ7L6gRLsDFTZFCOnSdlixU8EECOggAyb/lCqXgaHMGdnB6kbSJByqRSU9SpUVSf/QhVLO9HgaXMsSnZAqnlVMkqVL2Xypvg8sKnKVOVHkhUwCp9A9wuxJlBkqYmOULg4lTEPHhVOEqZu49ipAlSJPE1VNDKQeU4EeSnYnKliBkyqWVUkjxIvZSqmkVPL+ioFFspCnjFSn0VOQqZcEiopq1TQKnETiKdqNU5YkAwhrKlylGjnPOUyCpMJSIEyxVI76MT2EKpJlSdvjly2wqdNU7HOBgU9Kn3VNZJLv+IqpB3jHeyBQHMqUl4lapg1SIlDd/X64AdUl6puVT5ikiqgATDE7dMpb2d8EiXFJqMEHKI0pq1SrTgBeI+qfsU19gnXiryTfsDuKajUlvsTJTg3Q2yhWqV9UtvCTMs4ymQVK56BkFDcpi/RzFx9VPPflDU/kpBasRXxYzm5KYoGLVw6i5lykKVKZqeBaV8phAY6amyLiuqX3jKmpPno7qmkVPEgMaUgipeBoSaldcDqqRC4P90ZNSV8KoVKAtEmU0+Q/xxH/zg1KFtuduM2cl/4Fyk5bhh4PjU17cS6Aiam490f+uQgaWpqiQMBA3OlCdrwGbhIIpAhSlrVMHAnWUtHWxZSaKmCJGCkICUt6pqiRhSBkuieqaRUlU43oQ1KlZVNUSFh2CKp11Suty61PtqXoGEHcEnonik41KV3OHU1KpXCRbamEoyvMfkUwG8kFTe/QcdBvkOITd9YygZOsoQ1MH9DvbEGpY/pSwYLlLPKZBjQupC/o/3QDUTfKUIGeWAdUxcKnadjtbCLUrgMO2NznC0DkMqTxFeEpy3YW6kffl9KZ0ONTs5TITqi80TIqfi1cKkRw4sam0hGTqdV2LQG/dTMAw1tHHKaAobQMebYk7BKBmgai74aIEi9Trvy+1MS4uAGcjI11Sp6n7zRLKX12Bbs5dTOamV1Lm/A7Up/0YONfym3+kAxijUwgpcxlf0anFKSCR3U5TQnAZL6kgrVAqWfUmdoPuVh6mE1N00GPUkqpt2jJAx+difqbTUuepLiYZKnqBm1EEGIBgM4DT22gX1JAaQNRB2pO9SeIp71Pm7GkQaT80eY0iygoi4jGcARwkaRo0ixMFjcJLYQT4w39gzt7BVlH/BqIkhpijZa17m+M5oPkaIhp1DTogxGRgi8FSieo0J+D8+p6pUpBiolafogMtxAZCGgShC0uLAOqB53AG2o0r+kkeCFo/i4sA4jj1hzFwHGQ8aA1yOBogzJypmZYZeOftWTiIFBjsCb7UKQCdgS0aV/ThYSIEDRUg/tLvh+L2almNYDuwrQJ0qAkqRL6EngFPIo6NxMSGHndRA44QqSJjSuGn87H+sDFfNhi36cmfaiNNkuFI0uwOQhoZbD1lDy9nf0RwESjSO/bpUExaME0nQGJu5NqZyNKJ9ho0rxpv0txAb95XepuI038Y0bEzGkouhSaRXkpuIlAcPbAnU1TRif7IfoslxhkLeWGdkRdoVuQ9rQ8vaDOiiTt1LcQG1WxygRZNIz9r40hMGJKkagiWNPcadf7QRpBgC4YibAxozBXkrppDTSOmlkcT7aPP7Apple9GRiV/USaYJqbxpCTSmnTB6UASKSaDJpOKs0mkvWB3sErpEKgyzTPZBj6TWaTw0gZpOegI0brNMXysHpKKg1vtPGkYbD2aY4HEZpOegAOgJNOz6EXvNRpyjSDmnrqm7YLz7B5pDBo7KjjNJuaTKrEaWovsOpDfMS+ads02awvUDymllA3ZtJsxdX2RsdHbFO2GCBhY0ksmEzh4bDQtPBrlc0mxp1R4TDx9NJcabOfMFgzCQTfbRsGxgdE0+v2EzTE6JaNICBo3QTFpyjTQmng0AAPGT7ThphPpEWkSNLCRCnqdZgIjSOmlOHlX9p40wNUqbQfGmZHgulvX7WppF+o3BIVNM12I6lcNALfsL+w5IgocBn7fFpmUC+WlqAGxaXAnLlpaLTwWnmYnZafK0w4qiaoIYgxRQKDCc0qSBYzSBGlemBT0IGgf5pv1c1Wle+1ZaSAiKNoxjTbGnqmE3wLfnG0YB5hGDBStOeBldpLFC8YMx8AXWGGBoNYA1pwYkjmn7NJmaT5BN1pXSpxmk+tNPUmc0xlpjtoLFGZWHhab9YlrGeIUI2kS2iVaUi0lVpYFhsuAn/VcaWCwcUYITUYA5qrA1oD5sWZq1zThbTZtPkBkQDRugabTV/ZktNRtEm0072PLS/rRxtNpaSBAqNpHrS8lJCOHracHJCRwovtR+DkmFvaPGDStprIw7WA1NMqaThYWhweAcxnTkzGeJumwXNpYcktnAqB0zaS4pEaW/VgU2no2DSaXC03Q8KcksmlotM1acykI+A0zSsqrrtIrbDq0iGaIVBprQatNCiDtcDUA2PsXSrMKILaXSDVMGOCT79HLw3vbmjAaIO+8BG6JwQQfaZ3AKCW+jQN2lQRivTDtYTBOpylhVgK7G+4IRMT9p21hVU7jkOCBjZyJ9p97SoIyvtMDVHtBB9p/cA3OLhsNNaaMuE4KLn4LdG8ymtAFFnWtkyHSCgzYIFqDPckfIM6Mh0SFdz3Q6dlbHw4UfAcOmH6z9ySplYjpAwZYRh4dLmIKMGXDpdsS0u65EzpYLo4mBx0sZpsYR0BVOFilV1oyWtvIGVEGjyNNMTIQW8wqfiutAjoLS4V34PyIxybN5C9+Co2Icm5Io0+CKwBVEMmwVZqFNQScDg12JIf1jbZEbZM/zID2ULat+057QiKSnFFviUE6WB0VJRCUlr4bB4ws6fC3TjpibQrtZHVVhiEdjakQtswMXBidOE6fXHR0gVBhzAg4t1k6bnwdjp4jc5VBP8HiEGfxQFuxehBqjbPwobshSduyNvVNaJedKRqOy/fCucxBY7LI1B8knRgXZJSz8JyqDYCmqD+ZAWij69ackadMrkuNgcZykXSrm7FdOdYCF0tsS+XSUqg9DybEtl0236VaBXt796Gmxvx048SyXSW2g2dJ/Uo8wvNA7VQk46rwxcsZ102GC/XSc2haIAcmmp0nNooTYNy56dPPsql0seurqhEcmzdNXUmZ0ibpCYgqm4ozFhqA0Qa+gF+I3zH8dOzKstgL06vXS5umOYEEGh50+Gax3SDumxdMTaeDgByxk3SQtLjdOFqLhSMGitCMt2iZdJDUkcoBbpiXT41LgxQjstMiIBC33TVOiDdNwKLj8Axxh64ISja/SiUbbMR06Feglag2dKpeFoA59osPTwbjXdJ7sg502Bgw3TE2gi6xVeOF0nWo2Wt+rhadJW6Uy8aLpF31sawH0A7yOF0iz6IsgHU7ddJcsYYgHtcWVBW8gb9zh6c1AAHprXTBLLQ9Ja6SJ0jmgoMgE9SM9KNoOSqATo3G1ibg0VBq6cCoxdc+XSXLEk9LSseL0gnpiMlyukU1FmfruuMQmtF1kkSg9J/HDK2ezpnIg2el521YcUTiILpNXTEemk5DmwBz0onE+mB7rR8dJE6VXwdnpo7RWemd9WNsgZ08mYPRRsToxdEF4kZBI3p6tRnhD5SUE6Sz0kTp38BHlSrtHlID5BCQIKex/emPdN96Sd0mT+XotgYoIdER6RaKJ3pEfTGZhq9KRqMi/Z3Y3o5TToq9Pt2Kb0sG2Xvgg6CpBNWSX+1dR0rFBbeKMdEaIOTMBnQ7PSKemhdNAGCP8AXp3mJBN6uzR86RXQf6Q+vTWelma3csfH0kPY6XThRoN9KXFnBWGvpzux3ukttFF6fCbIzp1bBi+mQCRvoFvoLdon3Sj/bypiVqAr0jMM33SP2iY9O5oF70lHpmvTW+n7tEG6f2BbnpIfS5LpWbwVRqd03IOXOonMCjtAjoKW4NAEwNRLn4KCMxUEX0oMQolIE6mjfwOEguJKOAPNMyJq36C5tsdOX0quNRH7attDqlG0LZWAZnSCzA5mVZgC9TXUSwAzfYBdlCglkmUPwQNJ11zzKsGgGVHAZaEhMkucw0nSUnAa8KlQlF0mtRYiQzMmw7P00EdcAQLdOQcSauuHscabQiBmk9IdMgG4YLaeIlHRy1wEEvEwpcAZqAyoEYeQU/JLxdSAZHkFiunA3TgGTtYDR4qy1YBnrZkpKkWOMq6FnQYoJT/BDgElUC0YADAdZh8DM/GPPgcGKCN0uBlpWJWkCOdNlhwdolBl62XSsIIeenghcwaTpW8UCuO8Qb2yVAz8BmiDI7tp/054Ajgj4xBghlxCA2GV9gPoYN+5RZwsGbYMqtADDBoaDUgF+DOCdCPJsRSA9AuDP1DPbbEYKpwYpgxuDMykU2NCEJk/h3UCWDK/cNYMufMMwYGABRZzx/j4MttUcwZlsA7BgiGcx02Tag4sIDCdkRTkrGren487A7unlVF9InTaThxY+hY8QhFA66CGYFxST5YdxhCIHDjlIeBrWoOS8Qz0OMG5qm3BFQUrENTjZySCQQlrFVcxEhvujra2VYKUMh0YHRIcZplqxk2GqRWGwl5kGdZQ0WyGf6MO3Ec0ZntbJQXOhGUM0YZzcF4nHuazJEh0M1HWM7wxKFzcz3BCu8LYZSYwCiL+vHWGTuIceClQz6fjeIHfggMpcn4lUEO9YJbQ+LMgM8YZrZgvcSuPXvGG0Mk20R6lYxgHDOPoO8MiwMHIlnhljaxAgtqDC34uQy4sRFDIKGdraS4ZYIyLbRCUJ65octVGSYRkifqQjNxklGvJMYb4EWYZSsXOGYjJU4Z/3xKoIHxC5YrCMh1OwwzP5oYjIdrnxQpMYKkE0enlJEbIgypac8VwyO0jzq0/mlSMoyCNIzjhl/PBBsGlzYSCewzaRl84mJViSKfEZHm471Lk/C/gn/4VfQ/ZgYty6q0JQoyM7Ywwhh4sgAm3FGRshZKCd5Szel5mH1mBqra7WSwz9aB6LUGGc7saEZ/oxq8S10FP0DmoJiIUelgxjEjO2NkcMy5aB9AwqZSsR2GW5deEZd3NMhni7D/3BKMlPEptBzgrFDK+XB6rSEUjZFhJa1KVWGcJLPRBm80QIIN6TCEmvoBoii9BRwIihhyyuGM3a0gozHIjBjKEgEaMbqkqdAAxlWij1GQKoO8GVoo7cSKjNiIBMMgsMLQyn+CQjNPAseMJkY44FFdhEIJLGZ2BT0Z52tY8Q40AzGb0MlWYvKoQxlA+ylSpk9UXW7VpzLrDDIlGa2BHamNc0v0odjOqdIShPkZ9htmRlLDPCSq2M6sZ/+taXD5/VzGewbX0ZpRI6koCBHmtKmMxFQWRhyxmJjLRMDL4PGwMXNTRmbjMdCpGMlQ2WJwzek/DKaSouMla0GwylkoGFFdmuUMxFkXlg5ubejKAYMWM90ZUt1OxlMjG7cN9sYvQMXNTloW+BTCT200MZGPt0EgqQBJFAJkVFkAEzR2mxjKIujlGX8ZhoybKDvjKCgDFzGUZDCUBxnTDK29pacW3WVIzKjBrjMLGaAlK/QOQzxwJ8MHHGU+M1X2BEzlRmq+xfGUaMXqCPhgTrCQiivMLE6Pfw+EB6fjrAnT1JvwryxOMxZhnSnGJpFkMgpxmJ0F6AbqAdRG18JGinDi+r5Q0VKIBXEa5SFQz4nGVxAr9DUMjoZSDVG8qIWEaGRnEZ1k8kz+USce3aGXGSD1wJik5jLjkn4vH0M8xcYZIEPhDDMEmc9eJSSl5kzr6TDK4mdxOHRSl4yWjCexGKaEzQAZSQkzbrBYjO4mWsM31EsfhNhkKTNNSByJPYZGcQixJT0DjJDUMR6wzky0r4XDMrRGdcQmShIy635IiW+TBUYEKZJeI/hlbX10yF8MlVEF/VZRKQq1jHF5Mi6CCUzJJkMlHeDnxMtiIQAzBJn8TPbgg5M4qZICkdRnpkjhEryDBeAjkzypnIjOyvnlBfMZrhD9Si/UAkmeFMuEZIpBDojtTIJGUZM0IiTLxSRkonTzEsitShqH7wicT0jKimXSMx5UsQtRpmEaXGmQ1M1kZFsQ+plEqR8md1MzVcTjJKpmTSTvUgdfYSCcozBplijMqZLVMrHEUozGfxwBnj4QJJbwWp0yYoHZjMvfjNMjvphSDUhbmPAO0qe/dZw+DoKpm2TOIdE1MzUkUTgc+mT6Q2/HFM2/2v0zfJAvTBbXFaMouILTgJHQVTPcmcw6NkZLkzcUr3TMOmUf7csZCMyb6B3g1hmcmMzEKOUzV6DxjLJagw4BTOzwzAGpiuEboD/pXa020zllLpTNuft9MjWgg/p8rTrD2zCCjMoL8lkz8HRVjLMmXmMnyZZUyQ9jjjMOmeZdZmZ7MyZdhIzOMmSGbWpSKcQF2DKsAmdGEJFOIGkyz+kxTItfnTcKQIUwQkJkIzOHGR1+bqZ/Yz3PwTTItOj2M1d+7MyxxnFjJZmSWGcmZD0zJxnWTOXJAZMjJKeekVrS0zJXGYeMvSQZ14YJlDzEdCqTMkC69szbeIknQnSABdJGZmUzyEqnjPBahxM78ZxsyWr5Z+wNmYrM1CZHxBeZnfbAVmWJMt5kuqts/y+zID9vVAC+quMy5kp6TOrYK7MlQ2oEyU5n/TLjmT204WZUTxYJln/HaHtmEcOZasz1h4SZAfGbbEGT47PtMnT3WkVmXRMk9pXMz8Jm6zLDmX0deckt0zckovjOFmSBsXJKnUyOiwSzJXytedHCZrDUlngP9ITYZI1Zmw/MRelIMjAEFq2bRgAE8zPzpB8SxjkwAUZSF5155kjREmUkBVUgWaBAgVLTXS+clHqc8A4Kk+bpAOQcqEBAM5SX11xhzlIh9gGcpUm64w5NOTIwEvmaUKaFhMuoJgAnzPJHMw0UDMJMB95lVCiB0CtEe2AW8zQCCt2QXmTPM/0M/Q4AFlLzMf7F/M+Fes8y7hQHDmTKHzACeZvJ18OEgLLqiH/Mtyom8zxRifzLHmT/MnzYL8zHJBYNWqDFfM91R1UY8Fn3zILBDMqaoMp8zkGjWYHcgAUGe5I+YIQOQBUAKDK8kYsEBFJ5owFBl1EDCMBIQS5ACgxeZixcofoUhZRyQP7QELLAoAUGUewTgtbW6ZoGEWdFdUgW3GAgYDCLLXnhvMmRZ0gIwFlv4S1gKws9eZ9dFEFlbWGvME3DZbAUkBJ/pA3RXmSos1Wwtg5kGimYEXmUYstMEdGdOFkMuGIWXQs3RZIphP5nMLPoWYg0I4UFCy8YgpADUWTg0OCoZizr6iA8Pw6bfM6MYTUVHFm6LPQMOUyZRZt8yQlm2qNMWTPMkJZ18zKFl7zKHZM8MLzM9Cy3xhgjiSWcEsl9ktMRjyGcLKtYhyLNWwFFBHgxsmHRCkntFRZZrEGAbelFBVL8GeG6cvFXkjZ4BSINiYBgGf0hV5mA3ES8f/MkaItoBjyrTCzcEDfZepQQw5giKSuHNbhYs40Q3VQb5A2LI4WbFAeIQL8yKri+xBOduQsxFy7WZqoD31BwcksIWuAAyzGBbTzMJAJNQqwUfiyeoA0NEItPeiEBZzSy45pGCBkWVDcGC0wLlpFkzzI0pG+6HBZ4izYDRpFStUb7EOpZCQhdamkNDiWZcsujOLyyEWF3kCeWVUs6BZFSyrlmPunAWQSwOpZk8zkxBA6AOWaAhCN06iy2lkGqJwctssluA3CzAgAILLaWY0JOOajSyo4CorP9bFmsHaMY8ACTpqCl1EOY5EUE9yym4ba6mFuqKeJFZ0KyD4BsLJbQNos+aMqSAwEBX2TSWTdAalZUfN4Vn0rIy4eiskOADXA80ytLKjgElWYlZQKyDUAejDOWX0sgNw8n1wLTQsMkqGm0QrgLSzXFlTVCVsD56FggE5RgYBFlWX5kKYF2yMqyjlmiLiFWYtQ7/ixyzFIB4rIMWVysr1iA7pKVnGrMRWWLxNAgb4AWVlSLP5iNasvkqaqz5lk4QHDqJ6gB5ZR9lylmm1NeWXjEUOA6p0z2HvMm6qO5LMNAVdlNFmSuFbkGKgI9hXSyhVk2rN7hgAsxiA65VvBAkLLEGZqGY1AsSzvVmt6iDWeMOJlZpMBfVnjDgJWaI7S2wVTNJVlQqhxgFHTNQUNSyA3CcrB3QH6syNZ650XVlOoHBWW0s72wLMBOlmxrOfsAKstYg8K9TICgrLLWTAsrS62N1c1lSrNCwCPmNFZmoZlTrDrKxWbYste2uqy/VljLO0QN2s6+ZUSzSzq/LOzBDMqM06QFVphZ5LNxSems11ZgizHzqaLM9WVMs9W2BazcWZzLKwaiWsnBA1DgMFm1rJzWSgs2tZ+FUh+bFLKTWdGs/ZZjayTVnh1OBclas8TIJOBL1narPXOtOsr5yTqycToVFTdWSo7cdZwayojre23/WYPFLxZWl1DVkmLNXWW2sqIQqrjvFjvbneWeueM+UTCBO8BPLIcmJ1gRjy9CyTGiwRGgQOfwmW6AUiucjJpNuDGfKWXAMNQKNn2pMMoJws/kg1RwZ9FfENgWQxsnwitfw0SB1LJXQFqKD/cfVA6lltABjlAlQW5ZJ/isj6UuQXgHUszpg90ppEBibPfaeWk6w4QmykEjkpKoQOM7E7aP0p2Nn83XQ2b7qK7cOyyNNnVIDo2eMslTZf+i9/R1LIU2SUgTDZTeAQVk0Bw1QahsupZvKBzUnc7kEAHUst/xGRE9Nl7zK9aJpssgM4mzCA6qbPBBJ5sgGIxopSzhwQHE2UZHY0U2u4HNkOkAumIGEIW2Nmyq/YvywE+vyCF0MTwhvgleZniGYlspKRFVAdiyPBlS2U57E708oZymjJezJ6PEM7/A3wSctljwENDGls+LZIYZkMBBhkPiJls1UMVHS+4q1Y0q2WVsm8MAFwAww4tCzyeGGeUwUkwo2AaCOZwtkQsyhwtjNJj+sDDYLQ3IbZ7zIqW6ZGEMaHWwcRCTag/JDFsDacIaQseZyrBvvCdTEYIpfXC26JwgCkiwSxcYVUIbpIdCIWGFzbJHKgHdS0QqJh0bjLZJNEONsx9SnaCDAIjbJ5oklMJKsiLBZjDpTB62abkUbZ6QhHFzo3D62fRPHFIzccpJgkLmVYMd4PqYXbB7LgqjjWSEx/LbZD1clX6iLmW2fndAz+nlCPY7YChEIadspNgRDgJcgCohE6af2XMhdkpbtnl3Wc/jxQpWCfXIn8E6pCNtFWgxZ+xOyutnWD3x2dYibohBJhVxLXbNh8KrRBdBQ38UDgmS0X4Qa/NmUb2zShZCmGdTpDsh1+3Oy6unTHR0ISDswo+tz94dkhSUR2X4Q6cimMFBdmD2F60vdyL6ZPMVBtl7TBp5kraVnZaOyGZxK7Moan7kZ1aNw8b+GY7IqMLykbxiEuy4GoQ7JF2XCPdFI0uzcyE6ULS6fLsrqYZ+JNdmxCxFppYeeO6MczWeYSejnhKEibgWQ9Af1JM7JL6E+YRGCvuzX07p+ju2XCIfJIdvCntke81tbm3JUPhLRgjFnrbMF2ZLzGHZk/D79Z7bMB2eHzTvWIDju7o41X52YF0zIwYezGdnXbPvCGkoB3ZyX5zejflUyME/0HLQ7ccpJiG7DPwBvJUnZ/CyB3QswR/umtEDihVzcG+FdNTb2YjBGPZekw3dmUWED4ZFMDsQAezsGFJhj7EAHswvZ+usI3Sc7PSIK0dOWBTOzDz4vIEsPPPsyfZiyAm5KaTBqCP7s/bZfkwp2QZgLv7J5MIw6Tey7eihLD7OuEoJfZ12zGDC0LUJgmzs/kgP6ljdmgJTypiXshVkPuzrtkptGU4OPszSYEHdD9nHbMWyGPBXfZA+zLfD4SG72S3w7lkm+z9dnwyGaWWC6ZvZ5Swwdj2Unr2X1MXmQm+yKdk/7KiOsQkanZTm01bAZgKa9B/sujOTeysDnpCFf2fbjNA5tm1JawtoF+2bsQGKYHGY4DlJGEtZCs2Lya0Bzv242+jAOXUQBg5DPpX5qVCBoOa6s0WO6UwKDndoAlWklMUNkKay19n4HJ9ZIvsrg5XeUk9qs+hD2QI6G0EjeBK2DnbNrykYuXg58hycEQE1i/2d3wqnKGByuIED7NRoEb0IA5SqRUaBl7KVjszlFfZhmJedkaHN0OdPsqnK8OzyZh4HIUOR9TMmARdjqEQqonLDMTcGMMZqBLrjvcETDOCYGmSujkHapnG3qcmrVCCgEGQhfGejxO2jApaoQEAtNTZn+DLDGEcstIIRyLarVhiilgb4NsMaL0kpZvln7DNaGACJVuSe+IjGEpSHFLMtYXYY48BRZ0LWHWGIo5+UsCjnDhgWScEM+oSRJhDySCIi3DIeSPI5SUjtHRNhl0ErUc1o5HWzdnKv2lIQRIWUuIv2o93R9JUE4eW6eJEhsR+7Qsel2VGLxCG0JtxOhZWC1ZIfW6ANgPL1QnRmWG0ENDEQjUZ7o3fHOuELWPX6NlgyMwHHTLHNdcOMOFR0ZlhzkRqCn4dBH6VZewayWbRrujp1EDoefEW7owRYQ6D/gVCvU45qVp/bgWUHw4XcchuSlwt+jktyQWOcC5GfqrRoVjn4tTQqG5aVPxmxzjHTQ5w2OUCLKYgJLogTlDCwIdNhFP45B6Fd4GFIiYWRo6KWSExzM1mQOmXkjiLLY5xMkvEolW1uQbo5URZKng8QqG9DGFt0cwOSBJzgXJTHJmkjiLMY5cyCbjkMnOWkhccxlZLdoepJluCD4p8c0gJZgoYTlWWjh8M/zG3c7wUoTmZrPZOVlYJE56Jz7wqreFPskKcxeBNxz9HTuen6KFycsy0n3h+BLInMhdOGRZU59BdIYC2qI7tHJpWMpVWhsTllaWzdKKckOBIpym4ZinN0JJkshE5cWlpTlHsI3tHJpK5UfvErjmOnJeRPhw1K0gVgifDvrLG0OksQWwTpzU0C3HM1gZ/3EdZLpywwAAqnIQI8cv9S0fBnhiAOi5UgKchEW1ZktjQxT1SWUac0JyqxygcgtSTTOcCcy20eIVkzn0cPk8PDYd0oPUYaTkHg2jOVssz456dhi9lDHKNgcGc/1sPxzBbAoqjBWZSch9pUK8VnAgnJ6UuIIGTgpPF8RGC2H6RBwgQ05/5pjeqfLMTOaVYTs5pqygdAenOQqHXs3uGotooIyNnNOOZ8cgIeUKz70SfHLRSFk6Fc5eFp3uDKcA+OZuc2s5lxyKzl7nMOOcs4FcGInJc1l7HI1Unq4XNZqZCKwAjHO8EMycplSExzphY4OmjaYjANk5nFpFWiX7OrOaTYSJ4V9lQzlHsXtxr3DT45kVIuzkznMwtCnYKvZvcMPTms4UAOQcOE/ESLT9BxYnP/NI78F/A3ZyvLTIXMVWe2c6aSmEh/dk7m1lNNBciVZ9ZzwLlnLPvOTY0r05oSzf7QvWH/OfqjQi5USiU1m4XOusNFASg5VgtTSE2NOlOcGst2oOUkbkiyHMQuXxaLi5B6yRzlotLYua3ZKC5+yII1mznNYWTqwTpZQFzghCL7MAuXhaQAIMFzAzmhWH4gNxc5BoGtoT/YhUDUFCw6CJpqlyBzmsg1EuTxc7JpZFzr5l6nIkaRBc0ho6lysA5tcjPmZ6QsUGCFzmLluWkiMDhc/45spoFLkEXLRtCI0085X5z1mnGXO8uUsDOGIy/M77RUA0TYOfzR+03zTNLnIbN+hN5YRPeA2BLGKC2Hy9r0g6BODZzsxE8JJrOZ17bx8MycKwC7ewj4NZ6cfeZWA3Y6C2Gyudc8OK5MVzH7jo8kFsPT7BEiE7cH2mVXOsLog9Cq5GnCRuTmej9OXWo4q5Etxht5tiEVPIrJWxe/Bckrl27x8yehFabeamTSg7e7zpApHdMM5HYjXvFBeiGub8Bci0/VybT546BfDKyjCCMsl4lrlVHP8YYvFCFA+ZYaC7DxRbjGBGakgSQjqjmu5Mu8AcwQKwv9YZ4p7XLnjIdcja5/uTFrmTxitFlbDU65UdJd9boGAHjA9cu65V1zOjmEElAGOesIhgtBy3IRTXGhJp7vT3Usv0O9Y4XMTEXCwP65O6y84mQ3IpBNDc0twKLAGahQrPGYAY/XAoW81X6Sg3LhuU6gCG5QLA5ti61JRuTr8ePeOLo5jSgcQgudRCKOJyYotf6z0l7Am5sKm5OYiHvp/Z3ndMd0CH6tPJEvQ/qDVyHjcjhAPzpz1jziCYufogBK4fnFVLk6qGB+pzyKpmN0pYNho3PdqfgY4XIktzaoCE6JN+qLc+Vm22gtUiW8lNqTDciraL7Uh0Dq3JS1s1vS8Rx6Tabn4SBBuXCwY/E6NyMliy/RNuVLchG54WtaD5ZxK1SNi4ac5ySwTfoMuDJuWroYXIWrgYLk6qHfSrqMOm5/NzOWDO3KZuTlk+lCRNzVDFq5ARioMoEO5bIpEt4sujNuXCwUVw7UASkBCpN4QtLvW50wP0rt5a3OR6GnkAUYb+yzWqcsAvhqas7m5qbA4DAO3OZufWMaPeekiKbm3wwDuWSk1tiwdymWFzIRD3hjcuFgWdyALk43PDGKzvWguz2h1ki8wEvEdXczCY8dzRRQm/RT0PHc225UKQs9Dd3NdQU3cvgIYtyrbnSIVG3kgY/W5BpAbbnjxJN+rS4EC50ty6WBMBGLuW/oyhC3FI2bmMZN1kLrcxu5YiFw+TvxCPuWhzYG59Ny89CDZGHuZfc1shLOcPSh0sNMnDy1NW5eQhNJgr2Toua3ck4gtdyCbkgUh9uZQgF/uSNzG3SvdD6mP6CFC5xooabn1ED8ij9KDn6SFJwbkl3L6IHBSb507Nysvxc9i3uXLk3icc9yZ9EJXE+ILKsCrUY6TZxz/XPFuXKQ5+5o2IBlgzkLWkELc20I6UxsOCEPOVuXCIDTR3aAY7npCCtpIRabW5JxBk7njxLyuJA8l/AvcTAKH570tuTpkhoQnB4gHkpZKuIJg8wJAf31eRBr3LL6ZABDh5BdzVpDI4g9ufA8kKQHHxJJF9TFTpGx6f+5J2yed54sOyIXI81+5F2zD7mNyj4eVjcliRCcxNJAZhCMkXMaIChy6w9pTt0GgOYgEae5UmTsP6AHiMIjPciQhuDyz7l87IbuckgY/ZSTk2PQGPNKFg11apAidz8Tr94FN6oE82IWxu8I7k2yHTKDw84x5hUxe+T53PceXA1Hx5bDzRYhQfBHuVF+A7q7KT3MkxzOe6rkgZzJDw8qUEzGxMFtE8nO5lDUCnkz6KmuKCPYV2+iBB0oNTEyeW5CBp5JN0ZOC8PJymIA8m7UoTzooCZzjoeQfVHJ5l4jJqzN/nKeZ7ctHZkVIAZSyYG7ROM8pPUPXQapkW3PRUAKoZH8dTzInkz1UznCs8iUe4NzFnnFfkVuGwk2bZK/JknmTPIr2RyIfG5pTyMBbHPK5uTdoPyY+zzw6llOiSmIzch1QKTyNnnI3Meee64MB56TzkhLiu1ueaHs5QIOvBLnnFCFPsBM8p9J+wh5RjUygh6N2iEF570oqcnZjynufksLZ5EY8x0GCPI+eaO4xF5rzyfPQ/3Pv1n/c2Z5xkx7bl73LBeXnspJ5NzzTnnAvIJeYM80jKlp0t7n63IxeUo8lF599zXgBG3PSEJXch55iLzGXnriLJyeCIEHeWopQnkYI3/cVy8kSkWhF7HkVxANuG88gV5AoQgxBtPISeddlBbeXjzBcoBvHpeXYc2yKE9zZnA0PIhlEM88/A2GiZnlfZIHwCzccQkNBjDaA67wWjoRbcNhxxyYzz25KRmPiIXbYaOgjQwDXk0EJa865wnKwKIwsRj3DJ4M90QBtwHXmmvLcDDTcOggNEYVpSP9L5BL/k9IQVYQzllQWSSMIG8sFZhWBdiB1hEUuV+ZH2+qjzzGomPO4PnU5RF5CdJD/Sd3JKEIJ7Cio1jyetDAaE74lHEqoQIklz+KhPMY8iWvRF5l7xiwRIngu2U4fORkoTyHDySuWreeR8WnhZLzsfJ7LPZyG8kJtEsbzHf7H7MO8nHgSHh9VxZUSe7yMFlw8tag5lz/XlQ7OkQHHNEd5Dr9ZD4DvKSmLdtfFqZxR0phmuR5ckU8q6+YbsO3nuCDF0Nm8y3pXOz03nlvKh2XYfe/0gFCN3moEndZvDyd+8Xs1UtSnvMh4jIYNcIF8gLoqT3Pf3lbU65YFHM+rQocCm/GOMUuq0y0ufwH3KZTj74J959bNP6RwcBd/GhzH95o/IWfr4IUTmJlwL95TJBrtSvvIb/C/fbgMoHy08gLHHc/LB82qKFchF6oYiDfebrIDD5gHy4Pl4kF61LGDU6oaZDomBjlKfeZWQFtOV+Isbx93wo+f/cAxqxB8jKlYfNbvkFqO95zDz0PLGINBjHR8yDaBfZGPk9BAt7Dx8h9maHZAYzokE7qlU7A/8NUzwQjyiBn/IWQxeqlIhporCfMSkrB84f8HshN6qQfLg+Z8QAj5iHypSFcfK6EFJ8v0h5HxZPlbRSgofp82D5jjZMjASfMwTF+89ogtqwWPmlSEe2uEIID5JxA7PmofJZ+u0QMyKinyiPnZ3wU+YR8tHZobzbhByfP4pEGnHlKUu4fb4afMY+Y9gEDguHylPlCPIVeb+81xYSd8mnC4fPGitF8h+4mnyjB65qwI6JZ8tTyAwhMvmCFkNEP58rt5UvZdPlCiFLqkiIRj5alwQ1ixfM0mIVUNNYo/Jgvl9vJq+f58uDARDx5+QefKU+JKsFr5aOyamwQJka+Wx8qEgHHzmJ4qfNg+WR8uVynnBGPldfLDBo0yUIhwGgceRUfKY/oJ7eHkiGVaP7zfLO/MxPW+qQ4gPTCLLGw/q4eCb5m3yRb4ifMw+YZ8lYQKnzcPks/nBEBYMMB5l7yh0QAqxh/Ix81h4MFz+oqJPJQPkN8uL5eW0zQbRfgeanTcjr5JgtS6q3vKl/N4LH75qHzaXR+fljeal8wBqUtV7kBffJsFq3Adz5YzyBDyTzlo+b3sz75jHzDIjTnJs+apMP+qYnQhPl+NSYuTN8vZ5vvgd1m1fKVIRc5An5/nz3fA4/Ms+f5EQi0kPzSmqb1W1EKT84A87NSivnJfhB+XZ8TqYsq0BWwrfNdqkj+eHGjHzX0So/KZ+X2dft5PKUXPkr3BAudT8pvmynwYfms/i4+P9c0H5Lkw1vkA9QR+Z9VIX5aPym+ZL3NV+ckYbb5pXzJvn360sebB8lH80LzV1py3JWjIaQq3A7tSNvkI/V1+eE8kz5594XJha/Jt+dAchfs4dz4+TK3mV+WfgdtxL7B8RBZbkouicJUUQBFivRJiAXvuhi5LjIDTChrb3CTm4IHHHVyDJQ5uAzJwxcpsBLLgQfzByg0ATgDC7ZJP5Owg6oB52TIfEbeHuwbLkmJJG3kGFsK5FN631lS0CMXRN4GreYN0LCBoBkwJgL+VC5fDgAuM3hhknVZ4LwBANACNtXxJ7O1jujSdX35Wzsgvp+iRj+RCoGk6gTw9bxlFOBupRUfq8O/C8bahPBBWqxU766g/zWsrQ+mBul38+DgNvJO/lcZHi0CTQAf5EmQh2jIYgH+bJkCIQsfygHwQrQr9N05AlIvzYFPJH2Sr+elFF/hwrlF/n0EWP+WeJGjBpGiV/lchAFgJxdLv5L3ANqgreEsys16Uy6o/zk2hAjBhqAf80rK14Bz/l5Uja/MACvWyuZRrvwrlMr+a2JeRMabkB7IYFAxCIfAJc6WfyHvzBImD+ZFlR/5afyI2w5/Ov+ZsBd88tIUo/lIAor+cK5a2Q080r/lQuSVaPVQfgixtlKUiuZRYDKX8g7gB2Np/mUXV/+b3Uhv5p502/kffkf+QH84OaS24fflkZEWUOv83v5CXhvflQuSQkjmEdIRwrkJAVk8GX+Rf8gL8ifyFRKzmOgBcK5XES/X5//klnXzCk24GMuCAL2KgVODvchtUVAFBPApAUYAvuCCQC0wFtrR0Aw5QCMBT/hbE6iALRhiMfFdOkeJXwq054n/mkFRf+WTbLgFt4UO/l47mX+mVU6wFTAKrLHf/K4gHQChJwz7wgvqQAvqoHm5FAFsAL0bZXS1T+XoC9SgTPx0AVGAr7Ppn85wFBqNcAUWAvAiuYC1IFSDhaAWJAvKCLNuUgFjOhygj8AsoBW7MzCK5QLQgUC2zVwLRdQAFLQQ/vThOzYBWADeYWrALN/mZAsdCm4Cma213o7AWNvXWZB4Mb2ykQK17i0EiyBdgCrCxWQLeAUq1X3+RkCsEY/fyRAUiBgAciICiwYfLhP/mQtVYqWy5P6s+LUzrhMuS99B/6dFG1zkexLiBmh9AxAMv58gYOAXYwCuAe01XpAPzkOgBHGPyBaC5P4S0NVy+TZAqJiDMC8P5c8RIhREAoAEhcCvAFyPC/vQwArf+WjoeFw4wLRmoEWKMBR1yeaoZZQ1QRi6H7+VcC95q4ALeEBnAp0DIiChVyumRYAxwgr2BSQGQYFEdkm/mUBnSMCHANYFPwLegUvXQyBXVcVYFZILfgUb/LWCIVUTtwvgKIrTDzOjPsjgGngA0IEXCCAuEqJg5Pe4V0RGDDi1H8cC2eF86Q2TRUANnlj+eE4fYIhRDb0nPrG8EL8aAByqOBLHAtbmrQLKCiMIJgKiHBBOFf8LtUF8WaZig/kL9mIBq0EYuy2oKwgXmI1igBqCk1GLwKVQXFDEQaPC4fuStbgLQVi5JO2sGY5o0T2T6AlJAsNBX2kv96nQQKaJRuDIyDUEIL6ooLSCrygpiyW6CzpwJgK2nBngxYmeCgibwjdgg8iRtRzygXUZHQg0haFiM0LdboQoEOWwxhcAFWyFgSX94XABQJJ7SGJgorIjxhU7Cim5S7AcYRaWHnEBZhr/pCdGW2G+ZgdocsF48TKwU51A9mNCKCMFpbdXJDW6mTqAnDLww4s9moDed2ukNgsXMFo8NMfRVLD7BcjoBokWSwuwXW2DI0B61XXo2ERSAHNegIWNw0UgBf3oKwXORHrBSjIcr69ShlwVV1BrBe+QjcFe+AawVXLHnBUGwxuKS+ESFCvuGJJMKZa1o+nivhZ22RNwieClVhDYLh56x4HIwVrqa8FMCFq7DPgo5IaWCifYe4KenQm6B6lB4C7rw39RhwUp/IPIVhfcjB/zp2VpfjTrBV+C4Uy+iQWEi7gpghcFuODwE4Lh4bGCFYNljIYeG5l8KyJjBEoctA0dZ62zDFwVlCiEbHGC4N0z/kiIXuw3o+pb0HDE3khy4YGxCLhqtMSsY04KrwXC4XcuEXDFsFiAUIywMtILcBogRYUO4KC3BTejEBLOMccF94LnRiPZnghc1GQCFdBsdPQDHBYhT1KLupCmgOIX9guAhdWoKCF07hZwW2aBUhdm4Mop8kLstB0Qqm9JJzK3295tuIVVHAkhdWC4UyhuxwoibgrMhYWC62wxYLN6ighHvNnpCk4CzIR04ZaQqchbgA5MFzY5MIWjw1XBb+hMcFK4K1IXC6wshSpJAxyAxwTIXIQv5ivEBIWi2ELnNEKQoXBevZNTQGkLDsgqBT/HG2C6CFL0Yvz6/62Ehb9rGSFkkL3RigQrzbj2C12GkFhKAY9UCUhciQBkYMUVY3ABQq0KOorFyF9H1dki8QvzBXn5WKFZugjIX6nxvwUxClGMTYKTWF7gpFSIxCriFOig/IUOQorisVKeyF5EK8dZeQuIhXXNBDmsYLp3AEQpShf1C6KFt2sDwUlDHQDNlCjqFq0KQoWRPB0hTOCnCFDUKSoVRgvShkefSqFSUKwkrY6ze0J7oOSFvWsiwWVCmvUMD4Xa0nULlIadeAehSUMMqpkqBnoVCtKqhThC4uwOkBY4boQqq1p9ICtsr0KyWzGIkShWLIN8i+ULy0FrQrUyhtCw6F8FQS8AbQvfBUlsBGF3kofIWmBJcvrN4TaFO6h1aFIQvBhVN0WCoi0K8YUyBNzBfWCxIw2MLMwX+tOOYfFC72wNHhWIWv+l68hjCu8FbELTAmQwtahe5ORk8UbY+IUVxSp3gdCplq0HgeYVVgqLyAM2bTwO0LVIU4Qri/lFC/6FRb1GYXloLKqaRUFaFBDYZAqoQptIuFCot6Q0KxYVxu0mhZ1oFcpnHhaIV1QpY8NZCv2GNiRMXbKworhvRCoQIK0KkYWP+JlhY9C0FCn4LHoXbISChbJQemF4QSnYW2Qs2kKJC0yFCQVWYVewrjdsVCqsF7sKCbC1QrN0I5Ch6QWDRZYbZgobej2fHWKQsKMPrHQoThq7qP2FYMKyYU8VB9hYrC8taQcRcYXEzD6VtOfYUoWMLDIbW9Bx0IZCzQh+F86YXCmSDBMHC32FADDAYV+hPdhZRuDoG2bhofQcCBpiAm9OGF1cKmYj48FVhdysCqFCcNs4U+ENLhbLCkGFhcLyKhdwtG6J7CtuFkaxx4W6KEKVqV41uFNK4PFTpfQ6dM7C4Uy64LeYXMwp0QgZC3KFKJwB4V1M3+3IDcWCIw4LIAwBpQyhX9ClOFfwcT4UY6HABVmcMKFfMKbsE7wq5hQvgx8FpGJzYVeKEahVlCvpQ4cLLIXQkk1rA3C92FNoJfoXDQuRwR9Cm42kcLKXpBX3rBZSWT82hG5GeCjwr7JF2gG42A4KVCEVPmb9kAbSj0jgQW4XD7A7Bcjg6OFssNmYWquJ/piNgI96JuCNcCU0nbooHQYTReOAl4UP6lmONIPSqFo6hdcA8D04hcm8KyFlA8KCTMIqvqKAUaOikGRH1BcxjzhdQilQE549cGId6mE0d4PVmi2JJ4jjJFHVog7gjAEpCLZ/4m4MJIGgPORFwplTjAbQoFUMoitaSnMLUDR7SCCRnG2Gk5AVp0ShAwtANKUcR5ocHhIkBvkVMKr7YdhFSWxW7Ciwo0IDf8GfuLsUy8EkxlERUIipxFHvzVJDPvCAQRlIGzRs5ztbgcK0waHcc0O4AFsAkXDHJOYeuIXxFy4FB/KxnKz9HP7L+ocFz/bhuzjKFNechJFdUZtLkxIsSjGJ4Fj0J7AHAiZIrgQSymO+o0SKX3T3uCbGOJc7IYv0ZMPDvwMY2SEi+90g0hhyhLiEwtNtkPQ4niLNkFWyEH8sPaLY0DOkhp4n2m8sJ0i1TCfJyGTTczik6p8cyaCWmhckXLSS2kP7AapF6npgkXriG5OVTqbKMZxzBXE3PSbGB6ciKQ8FE2LAMWjLkE0im05TmlBkXgSC8tIXIaDwzHhppJbIvh8GFcwVxYSKePBLIoLdmMixeB4zChkVmWmJmBgFIK5qFoiVjseD0tM0YIbRpJyoLTFIoB8D2c7WYbMVZTm1SQgtoeIOC5PlhfkUGdV9OTTIHxFmFoUwhErAqRdMil5Qd9RnzmuwOWRQ8i+gutSLyIb1EjNOcUYe6QrEh6FjRWBBRVciuTS2SL+ZC3ItOLv4iosQnxzdArhYReRerScWM7yKaHGYoqFelDbElSo4pWnSsopRdIAU6Qk6KKzYEezALUAiil6w3KK9pCCorg6RF0fBF2rBZTTOYX5hX6BBk0WugqpyLIJRkHowNB497pEjD1qFZXvC6SlFMzQCUWkZiVWBPxQFSIyL7pDjLzGzl4YVTQ0qIxPSoK2SoCIsF90IKKNUTxRVqgg4EFyoDSLPYLLlGDASC6E821FRFUXszlgoM6i5aQehxdUS+nOlRfDKBuhUKKoWpmotvuKpFXFFarsi4HeIqjdm6izawrupiIYRotKksyi6TwniCwbBhIuVRFxpP1FJMh7URUlxzRe5OapCGaL4KIqovGQbnOAcgZloC0Vj/CLRU/nEC2XS4A4GiBSNRQpAhhxYaKjgnvNHVUmhUQ1YWaKFXH8or2kAGi2VxraLzgkYQLS0iCiyS4tsDY0URBXjRYFYNVFLJAnUVkOPH0sqi+5oA6LU0UsUAYtO6AjsowvCPC5PCg3Rc2i1FFBbsWqgNoqVRYuoc1F/hcsZDqovIgaeiz5FxMLoWgoul0kLFrUSB2zjLUUg4i8tJ2iyLWgkDtnHlottQNw8FOBT6LZUUkottRf6AwpxdaLS0WnopnRRWzR2S9KLF0W8QL3RcOUYfiP+dt0XQUQbRKIXCEkO6L4WgnOkrUPui/lo6jij0XbWgvRbac2oINwTbqL5xnOVu8sO8QrcYtlb1bPSVD0sCe4JGLgvC7dRoxTEUwLOQZBqMXEYoOVgyEcjFjGKghE1oWbyAfnUkaBytXyitxk0cEx0qCJ/uTNpC+ezhkSB+TeMYz4wZGY+ko6R4MpjFqzAyMXdxmOVj3IJTFFYBlQD/BMSABxi4EJsMx1MWcYpwUZCE3TFGqkDlZqYuMxasJGaUHns8kChgBA6KkkTgwqQyz85wcH+pPvPeyxKHBoGTzr1fMV0IbhIIfVAVjXNn9mFfGJxESC9xEHAOM6UIJY1zFRjJhHrgR3W+WNkbR6jag7ODRYtHuipYjEQH9J+Hqg0Fh7AUYC56d1ZyLx+YuAwiAIMLFh7AvMIeYryxYNqT9ehi9g86MoRdvLli4PONKE0KZfvSqxZ3OYqQ071IzSSiDWKkWoRapXPg87qFYpHkUjYqueHmK4OD/2NKep1imiwb4oy7q9YoEsJHeRe61FiOOiheJ1vABYjci8/I9tS73UGxVZ49zFqi8KorDYo/nktimexSBVRsV3XiaEPo9HSxl/58sWoPRIECFU9bFDs5SsWvlPn/K5Ta5sJXRPOonuG+6ixU37quYJoPqiPHGxQJvJ9IsPZCeiSdQaxXXNV7F+ETwkjyOUuKR0Aqu6Vwd1vnYpCexZNoelat2Ky14uYpcdsFipxEF2KxMD+YonQojisex3t1ZI4FCHpRNoVUSxm/5qmS9tR8xd+wVLAV2KUcXXNldMMji5CON3Yf7EhYtEsXJ2KcQea9W8B4iBChF5hdAsNfYjsV0b1mxdqIDJkTG9m+Am9nyENJhA7FloBIPw5YoexUTii56g2LwsjaPXFxUMYJCgOqdbHbjWLQwrVio/8wOLwAQ84ukWoZkb7FcStDRDq4vEwizi/Cpb2LOlAM4spvO6UCHF1ljrymgSA6xYFiu68eOKesWrYpg7B1qZpQXFiSlr/YoUwuq2ZAQJuLBsWT8GJxQTiqUQQuKRsWW4uXcZ3PR3FQwJ7tQg4qeTsEtEPF0hVsu7BLUVAQDi5Raf/hNuznYuyWnTinecnaR1LJ8iHEwh7iudwwD1BsWe3nSeidiyZexOK+BHiLTOxdhhHD6cAj9Oo3aF+xZreTuehuLMga+4odxTTi4zgcOoF0Kw4sJUAkmEnFt8Z5cUI4uyWunilvF/uKabz/oXeXC82BkQCeLRuhh4t8YaPi4m8gOK/Lz24v/uvIIrkQzuLK8UpAT7YI/kTXFHHRc8WhYU1itioYbqP2Ly/kl4p4VPPi8vF0mFYsXjZWtxf/dUOyorZm8Vz4oxWlti0p6rWKqnZm9ArxeeoNDsj+LpMKq4sgxvXihXFjjlyhBX4uRkA9iiG8eeKc8Wt2IZad7Ga5sYt4o2wd4tfjGfi7vFmoQI2AX3VbxcKoHfFQ+LAMaf4rHxZuacoQ++KlhgeWh/xTvi9r6bGM4CWQ4UvSFAS0+x5+K+lrgEpAJVrqeFsuNwMUITYQ5xZ3U1zqrUheOq9BQWxYniqcILBKYCUXLXNxZPdZ4Os5iZmSzFRWIfwJNzFsxVOsUURUPat7iqUFC4pSCjiEoJtjHiyAl4EU2cWdKFhxeQ4DQBu90g8XkOGKxQbi8fFhz5usX3oXA+n0EHQlEd5NYrqEoYJcj0AQqeEh9sW1YuyfCH1WXFunhZCUap1IKsvYibCIhLcJT8PUqxV44Egle3QnXJtuGAeu/i8/67BLGCXdoy4JdjOXXFrYREsBDHD/4J64Q+x+OLTcVmWPCxU3PJQlqEopCWp4r7+ivirO6MRKeCr+Eopxev9aAlchLVCqyEukJeOFfmxihLAsW3RXS6sdhRvFXhINCVoEv5Mc1iwh6j5iJoj3Z30eifi7Rw+uLrsWsWKqJaASwZyChKOCUTWy7xbkSyOwrRLBFS0OX5zqvioglGqMHwTAPRCJUrEffFeBKGuHJ4vexc0SzmIRRL01gX4uAsWUSpfFrVBSxDrEpPWE24XAo1hKyaBf1XmJWhhb7qk0QZiXJEvGJWESkrFSDkRiVnshsJf/lZXFnhLRhhopB+8H3dIwl1VobOpr4pGBVXwIdq9hKF+JaMkAJaViiioSCF4iWrYsTeioS1glC/FBiW/ErvOSkYMXFgJLPcXwEsBJQEIajqmtJXTEDvMe8Abim0J6fEHiWbdGy7sfzHEl0JLSBY4koKJRLobYlIhLjuhlEvEJaq4rLgdFTr2QPYqhwC52UiQ2S8+OjfYsSdC8tS2WdJLwFpKyCQmpo4XFskUh0EapP0oxpS5QDqq98pewa5iQoFp8Q0QhrjH8gO6LVvFOEzGBhV8pOBSbTjbC2IVYldwhTOzogWnxbHlSmgqSZcF7321WRM37Wca2BKjnKGkooZp82OGQG1oWkwvNkA9OOhNh+8FkY5bsJguxd8WAoCTS9Gbw7fjHEGg5Ai85MhHSUvLTpasbeNklmoQEmqLnjgOAK5B50GJL1vCAkv0ygiI10lZbZvXK4TWZJeM4DUlEZLfHI9pQi4AGS2bG1UgJExIOTA5hASjD4hLYVwmedmS6liSxMlVnYJpqv3BtPmSoBFMNTx3rnM4WdKNWS05gCcwn2xGvMrJXWS2GAlgkWyVTJneIA2S2xQIQlayWdkqy4giVPslYy4tYjdkvGAL2S9skZ1ARyWzJhDQK2SquIo5KmyUClwTvBnnRLoRAobPiUiCNmAokbKkUHAwsV/UAyUekIzzF1ljHFFrkrCxQzi5pMU18uuBFJTsRt9KcRB1uRe2p0oDs4ExQ6Y4yfIksWLB0grt3FNLF8FiSmRNXwt7CPFWCuSIhP4paGwyeA+StNIXFd9yVhYqCyAoKdQA4FLXVSdlxFhNBS8dxBywGnQN5wE1OscZ8ljmLyw6hKLApWpYGhWYLQoOB9YsPJcdaLClcFhVugdtX3JfhSx8AVSYPHhTYtklnAKIb465SsYS/gq3JSFGEpKOFKmKXMXgu7n+S7clLfISKW4UoH4QUU+fBgTBlZYyg13JQLsDxgAoMeKUcLC4pdhUwhsqB8iKWdrhBbGJSp4pMuQmtzfkoSdhRSt+JWwRgGR6gzfVD00Z8lPoNtmCHlxIxPpS6NUuFcrbojVNixeIo+JOwtSYaCRKOPJXpUmSlvFLXqngWKPJVJSi2ge5KrODq1IEpdFSQjg+3ZOaDTHCIpa6YWaFglpmKXb7RKUXZS/paBqpvKVZOn6WuIrGpG3ORLQAiUtGaABCbHsiVLdKWYsnsBLFSm+Wx9wIqVwQoKWD1GUf8ElL6RRydlPJbJSqSlI0cCDhAUofKegWICuUFKWHbKUsfLnBSq686lLsrTqSDQqQZSv5GdFLbHY6UvRaC7KWx2JlK4qUQaCtxfVSqKlZQhBo6YUo8pcMtW8ldzQyKX99k3hUvhKXI5bluqXCtAmpY32IuFbFKfcUOUvWpTytCSly1L8qXQGDghfNS6KlW/pLwVnKHipfiITKliuJi8jVcEipWwjQnF1FiGWn0iikpcdSwp0J+h1LLtUo0FERS+FcClLXqWvxgPCcM2RSlYXBNqV5Uq/jM5S460seRhFpxhMvLuXwxYKN1LTqWDUqBXCUoqDE5ONoLGtI3CpbeuPloRFLsU6P5AceLfGJal7qo9qWf1lPLvLGUwCAFiQCUdGEGpZZIUWFUKMksg7aCJpV08Fxa71LEKUpAQspaM0Tql39tGIWTZGa+W4khRGelLabLOQu+oe18iKQB1L7yUsJiv4NMcMoEE1l0LGtI3ppZJkfmlM5okKXIRwErqHyGUIkNLrD7JVFlpbBXRqlVYMxoVFUpE4L/LIqun1L7qV0H0NpaTSv5GRFKsCX+UqkpRESs8llulf0ZS0r+RkjSjWljijydzKZB2pZzqXFY2tKvka9UpKBkFSkWl57QpqWoVwBErtZe1UpKiARIItlNpWlSsYWEyVs2p0Up9aBwiGqlWFKkKKMUuCpZDeaqlbjQJaUlJmb4FU0DOlGSYs6U1tR+pZnS1ilKdK+/r20scpTRKVWlW1Lhggd4NGaHZSw58XlKxsILUpocChSgalz4oT1hDUm9pTQ4IulVFKVnBsWAp0GrS4+4ddLajCUqGLOQOIC6FHCxOgg3UsepSFGA1GM3RjaVcUoBtoxC3WlgpEA6XD0owlDZSwHe+cttAUYUreRtM8FZwGLhk6VwJBM0KKRUzwLdKrLF+UrvJcTSssx+tKwWgTUpnpWNC4ulEhKWaUjUoetvHStxotdK/TBBQofpdMVWGlONLZCqpUuarsWcuFUQ9LDqXcmLurN1Ql2lK1tm6VtYSupSng4BlftKnLH9UskpdPS1D+oFK8KVrlGrpWXS8Ylw1LK6WiPkQZVcsIOlhKC1qXU0oaZOvS9Y4yVLlohu0qNJkfVYsJnbJ4GVlRTHpfgy2NYXRJ66Xy0tmZP3QAykrVK+arrplEpeiTL+qNDKWqUOxA4pXOXAul1JiSFYIQJEZYQyhbcilKsmSIMuBpU8SpFElFLd6Xr+hXJQziWOlP0VaNQG0vnpZMfN8lidLtGXjtRmpcu4eulU9LJXLNUo+pWgy4WiQNLKqWkOU2pV/Smb+K9Kl8IC5A3/q/SmpG15LBXJ4Mvdpd0ONCoB8KkGWa8VMZTgy6FhRjKrGW7HLgZQXS6klU91m/YgSGpxhVodA4M3pYCV5+LfjsxSgC4a1LImUtCH8AZx8NcaWQhCiCA7zuiNlSm26ILZtfA2aDgzoxSk9EzXykmXIu0Rhg/i/+BYbYfhJ45WDhTpEAhlHogYNbpMHHrptZTEsIScVIYS43agBEyxKGlztEtLdMugqrtZNplyewFqWNMsIRUG2Falxuw6mXA2ESZciUJnc0zLwAJZMuaZb1DGkIfmhoMFBtitpWR0ZZ0Ughp6UWNE3hUdQGBlAgowLjbMpWxjrS+ZlnBKmmXDMvXOUywaJl4zLizlFNEoBpbHaelDCRkmVnMpKTF2WbJlyzK0wjqCCZbH43dOai9LnrE5fnnqq7saqoTbZEKik7BaZYG0JyAHQMq45PMqBZcM2Y5lj6jmyUJ9E+WA8oY5MfqY7mA05iS0I2S+dsyLLEvbCaUdCJRUFFlmLLHIw9kri2XAYM/cnBQ0WUT7gLBLZ+bFlZLL08RvtkPNASy7cMv4jaWU9krILMUAVv4KAAUAAmAHMAIB2JwAD2RQACkTBAAAAAKWwScgAdAA44AMGmBBnn1JEGK1Qu8QRwBzAHuyEYASssbEQ6izXSBJAL2AAAAXpsAAfMpxo6CBAkB3zDgAEEAywBOWVbgAgAIKykAAcwBhADsADAAB4AB7IIAApwBCABiNCSAZVlOBABfiFGhYbJqyggAOrK7CR0hhAzHQWHBp2ghU8ywAByAMIAVPqzEoovD7ACEAO2AORgobLw2WnABQyLGytfw2rLdWUs3GQzA4YFAAEBAICC2AGuAMyAZYAv7YSgDWsttZfayowAjrKLgAustiLLYQD1lWhAc2rest9ZVJGf1lLNwjWXfAErIK4AMNlEbK5lC5FGjZSwAZNlcwB42WdspNMH2y1NlfrLF/DNsqEAFmynNlYAA82UZgALZXqAYtldrKHWWVsrXzGeENJ40hA5iD1srTZfwweGsgbLkiytstSLAOy04AI4BKgBWEECqHgAWIAE7Ls2W5sr9ZU9kMSM72RiAAaJANqAuy0tlPgAQADLsulZauy08ohRpnKw2AB9ZVuy25gfMoZIxBsrbZbUADtlR7KwAAnsouAGeyi9lLABJ2XXssbZbey57I87KbWWLsrLZe+yt1l6hAJtzGJAWNJuy0dlUNZd2WpGmDZZyAQ9l1gBj2Wnsut4Oeyi4AcHLp2U3srWzIWy0AAz7Kl2UgAFdZROcZggWHKslQvyFw5Y2yu4scy5XshEcvbZQmy0jlEHLyOUYMEo5ZeyqdlM7LEOX0cqtZShyl9ljQA32XMcqrZZHYL9lWwBhsC7xBHZdxy/DlLbL+OWgcsE5eiAMjlUHKKOUwcpAANRyyTldHLkOUlsqY5Sxyh7IynLchKyQiWfBpyvnMPHKCOWbAB05TYAMDlQnLIOVCAGg5VRyq9lNHKEOXmcv5AIxytDlinKV2WYcrXZVsAWCo6nK/2V+suc5dpykDl7nK9OV+BC85SwAHzl4nL4OV85ik5RZy1Dlr7L0OWscs/ZXZyrh40XKG2UuVi05UkWQjlCXKSOX6cuE5YZy0TlxnLTOW0cqNTNJy4LluXLQuUfsvC5SpyjTxxXL/2VlcqA5XuytzlVXLkuUicrgIGJy2DlfnKzOVNcuy5XJywwACnLrOVscoi5cmwOZ8jnLZswAct45cByg9lHnLquUpct3CKNykzl43LGuVzsqC5bJyqzlSnLwSqFcuRKFxy0rlO7L4uUbcqS5TI0bblaXKxuUScoO5WJGKblJ3KwuWENIi5ZroBzlMXLNOXXcvK5a5yyrlm3KhuW1cpG5fVy/blAXLJuVHcss5SFyublBXLIgyOIG65bFy3rl2DT+uVA8ru5QZy7zlRnLfOXPcsh5Ydyotlx3LYeWncvY5cIxH7lJXLZsxxcoB5ZSAdHlihBMeWpcux5ely/zlmXLAuUE8ph5a1yuHlHXK7OUE1ku5RTylHlfHKaeXgcoe5Qzyp7lGXLZsxZcuh5Tly+TleXKbOVncsiDDhy1wAv3KruWb6Bu5SGy4Hl93LhuVCgF25Q1yvHlr3KJeXTcvLZc6ytrlGHKbgATOn1iR+YHnlq8BA8y32H55bdyxQgKAA9dxY8sUID2ykAAw7K1eUoAEQAHMAG7IUAALgDDssV5StywPMEYBteXM8qh5azyyXlM3KnWUsAGl5fNyhc+TfdIUAW8ozAFggFXlxHK3eUO8vp5U7yvIAMbLAOwpsrd5R7yr3lPvKs+X9sr95XloQPMKygg+Vi8pZ5Qxywnlr7KI+WzcqU5ac4b+wc6IkeUWgAzAAV4KnlIwABeXWAHt5QfOR3lpwBneWu8ru5e7yz3lswB8+VxsqL5duy+KAJIAy+X5st15aHy/XlNfKo+Wrspj5UbaStYy3LLeXrFhXyDby1XlA/LU+VRsoz5b2ygvlg3KTOW58uH5Zny0fl5PLi+XoplL5RDy4Plc7K2wAdgGIAFAAB7IJIBn2XWABiNHqAYVlAAARDRIQgAJWXiAFAAMby35ihhAQPhLcDAAEqy/Ll6pYzKyoZgV5eTy6IgzABCnAtstNZe9kPoAlrKWuXycqnABzy13gqth9YkfvB55ePQUssd7K+uWpGgYLAJy2nlNXKe+Wa8vB5bjym/lBAq08wPsp3CKgK8PlRvLwBXWi3dQNgKlRo0ArdWV4CvWLFg0+gse+YSBWC8o15eQQLXl1/Ly+WTcrv5cIATsAj/KjADP8tk5dYAKcA7/LZGggAAAAMIOHJ/5agAP/l7XLSyCMnTwYFKEYb+irLjeUxNlSdHimQVYPPKUvY4aBbZRyAM1lyArYjQMCvLZRgKglmoy5yiCdMHj5eCAZHoFgrbeVHspQAAMAGIAdPL6/i6PFSdDtyygVovLp+VYNPMAHQKp9lVfK0BVMCps5RFPUZcgJA7EEuCoD5S5yrgAUKZEuW08q8FT4KsgVOjw3oABCse5XtyqgVogrb+WZ8okFQ/yp/lQgAX+XogHkFfyAYVlSgrpGi/8qlZQAK+yIyHSHjhk5l1MGAKh7IQaZcUz6ynj5duGKjQLbKGCxWCotZTYKyIVjAr7BV/bA2pCrZHnlQJZkMyNgF4FR4K0jlGQr2wBZCr8FWygOMAeQqp+WzspoFWEKogAj7KiRi2CvQFUpyrMQKxAxlya2V/Zefy1rgMwr+hV8Ct05ekK7wVSwrtuVLSj0EOQKoQVQQqmeWFCte5eIKyQVZQqWAAVCpYAFUKkoAwrKAACq4rL1BUNCuYFZc8B15WL0ZGjtCpVZZyBfhEwpYZ87Lcs6pPCKxVoCAqwQCDCpQFSMKuwVVbKNfCtLHMErSQePlK1ofcARgFD+Fvy24VmQqHhU3MjSSGnysHlOPLghWbCtCFeEKvYVWIqDhUfcvxoOY8jWy8XFV+UTDimzGiK5PlGPLFhW+CseFeaYQIVdIq3hUhCua5SyK6IVCDAV8kiEEQCISKsZ8pjA+RX8CoWFXcKoUVVIqfQDPCtqAMIKgoVEoq3uVlstZFZoK9kVqTpoJYOGG5FUSKpUVbfKjUwqiv05YKK5YVwoqtRU2AB1FfSK8Xls/KHWWGiuN5caKkQg3DoFRXUZhJFTg0+YVtoq1RX2io1FW79UUVjPKJuX48sr5WzyqIVGAqvRXMRm84rUAP3lOw5eRVWisDFT0AO0VlIq2BiaippFRQKsUVkYqZ+XRirD5diKtkVsormIyioF9FamKwgVmwB0xWkgEzFVYQB0VuYqXhX5ipe5UhyvXl7orpRVeDNdiviKrkVyYqeRXEiuVFTcKzwVwYqsxU4EhFFesKkQVeor2xUGis7FVnWZcCIhAhKyVioHFWmKskVw4qKRUNitDFeOK4Xl+QqXRUV8pk5TGK0YVOIr5xUJit7FeTylMVy4rqxUOIRtFRmKkcVG4rsxVhionFbqKhkVkoqDxUlis0FbiKsZ8oEEzRV9iotFQZAQcVaQq1xX3CrvFWOKx0VsABnRXiiufFfqK6vls4rfADHislsjAzJcVlorLxWBUOvFXWK28V4BBNxWgSvAlQWKtsVboqZxUYCo/FXKKvgIiEq/xUriv5FeSKoCVGEr7xVbirq5S2KnXluEqixVz8pglYRK/myp4rdWXniqQlajy1I0tYqPAD1iqolSBKpsV2orXhU4SpfFcWKj0VzAqWJV0EGOkt+Ks8V/YrOJWkivIlYBK9UV1EqsJXCStbFaJKpiVcYqyxVSSpD7CRK/0Ve7KeJV8Suz6ryAVSVdErqBVIcs+FaUK6QV5QrZBWVCphwDUK+OpLAB6hVgdk0FRR5Y9sONY/Agwip8AJ0K4QsKhwehVN5kyllxK+kAlgqkBVDCp8AIxKjsVGAq3JWbKxklVuy0Zczsok+WoSt4lehK4yVSIA1hXbio2FVJy+9lOwr6BVSiqilcx5Y/cp9YOBV+svilVKgRKVQ4rVRXriv4lbo8ads4YqReUQSqy5ZZKrsA1kqfhW2Sr+FfZKxQVAAAle6AagrJWUuSuN5dMxIM8HIgQBVeSsErKWGWdMbEq4gDusNW4NvkV7IJrL0RWhSsxFa+K8SVseZAVgunnjBFMKyAYIGZ9JUVcsMlSlK7IVvIA0Ux1Sp3FQ1Kujl2UrdhVgMH2FTBKwaVfp5lsCbSpuTICscqVAErKpWUStSlU9QI6Vj4rdxViCuKFV8KlqV+4q7WVyCo6lUNQEAAAAAVAAACrcAC4AzkqSgAACqRsgtwFZQ+grmBV4pkRkASWREVfvLt+D4CrBzMhKo1MGIrhhXLSpglXNwGF6yAh4+Xc+DGAP+Kw/lKGRPpWnSqa5edK5+gTUqpBU+ABkFSWywGVCgrgZW1CqhlaCK/qVzAq+XYHPnqOW0KgwVuejs8yxSqmlb0Kwz4VoqBhWLSrxlWJKgmVx1CBzIr5GW5dMKkDMswqcGnECoqlUGKqqVb0qZBSmSojFepK2mVEQr8ZVjCvgUHLK+6VkZZD9ZzCtXFS9K5SVY4r0pW0Sp1lfRKsgs9MrvhX/So8ACzK6oVigqVBXf8qclZzKmGVzAr/egGfjwjIKsErIoAqDBVtIF9zCYK4qVPgAzBUFxnFlXvmXGV4UrnZWRSqrZdzHFT8yn9b7DcitcFWHwGOVe0qNZUHSthALkKjKVk4rnxV6yuZFQbKpOVDJJzPyBysSFeimLLi5srFJWWypDFfeK/OVtsr6pUiStbAD9KqyVjMqbJXMyrslazK6wA4Mq6hXeyv/5dzKj0QjgrvRD8yqRlUIBVGVwsqfAAYyvWLFjKoKVDiE45WNAAilfhKuvlm+gvRBWOBJlYHmZIVKEq1ZXSkkjZVTKkSVxcrkQCOyr+lb8K8tlvcr0QBKCr0BNDKoeVNnLJlbpgQmCojKjoVgsr58zGQH8lc1mCFMKsrY5WSyvjlVdKw2VwxBH5Xb5AVlRcKpWVVwrs5WvStzlU9QG2VtIq7ZXmStdZUyKy6VeUrDhVo6CAVSbKy4VWcqLZXqysgVSsK3kAMCq8xVwKveFRZK9uVzUrO5WtSu7le1Ky+VLAAAAASZgzepUaCs9FZPgYxI8EZPJUGCrn/E6mOf8PPLYJR4MGo8HyKpeVxgAE5UzisN5XGK1h4Syg+LgRgGW5eOGbAAIEByZVq8splbtQPvlB/K5FWMYl95eTyqRVMirCFUSiuPlW3K/flJQrSFWNACZlQDKnuVbsq2ZUfzFvlZoKpaQoZMB8QKsuDlRPKra4huZw5VJirUVc57cwVVor5pXmRihRNYKv+VyCqPuWWKvo2PRYStC6cqkhVPSsP5clKnOVuCq85XXwEPlbrKqFEiCqoJWxiqU5cD0ejYo+BAlV9iozlTXK9blWCqbxXhKseFU3K2BVLcr1JU6Kpd5ffy/RVhgBDFUuyuMVQCKxQV4MqXEAcyr6lT7KmIViyhjEjWtBGlSHKj2wU8rcBXMHDnlTvKnGVv8rl5WCKuglfYKosQSygWlURyr8rKTKnpVtYr5FXNypOlUfK2JVOUqfSCnyrIVc7K12VVSrgZXgyvqdl7K+pVd8qUCBmIEQcJWhZ+VKrLJ5Xp1jRleTy2eV2/A+FV9KoEVf/Kw4VeyqXqKpKtklRMq2RVd3LplX5KtmVTEq2gVCyrhqBLKoMVV3KoxVlCqTFXWACUFcggOpVDCruZVkFB35I38VpVSMrX5XbVnflWMqpoAjYZVuBfyr3Ze4q/hVK8rBlWJKqRoFdRJvlfOZSpVmysyVXXK7BVVsqapX4KubFZoqouV8yqLpXxKsPFb4qiFVH1FGwAgKvxVcrKtHlECqSVWrCu1lQUq+2VRSr2wB6KoZlb8q8hV/yqL5WAqvRAODKzWAoKqwRUPZCMuCwcFfc0Iq2lUoypOVdPKxoA5yreFVkSvRVQMqhJVbIqkKFU6BF6NyKp5VZErUJWvKoIVVyq+BV2iqflVlKr+VRUqgFVayqgVWGQAlVVzK2PMeQhTtiulHHlR0K0OVQBYTRaSKpcVdHK7GViArPFVhSv6VTcqj7lOehNBB1RCrlW4Kg1Ve8q0JU5KtDFXkq41V7yr7ZXaKunFZiq4NVybxnVWMqrSVcEqyNVz0riVUNypwJHGq8lVJqqiFUOypIVfyqi1VgqqrVXCqptVeiAAAAmp7KkAA5iqABXLuDW4FsJOTKrCqkZXazjMrN2QDNV5PK7YjSMFPQJ6wzBVHiq08xeKsDVT4qixVtTU3QB4MCVtvHytW+geYGCjgKqyVery0Hl8arMpVnSqpVblK0uVviqxWH+hDDIDOqhFVtoREIy1k0XVUSqkHlnKqE1XwKp5VSUqstV5SrVlVCsuqVWDKzWEWyqwVVSqvPeOILaFVbqr2lWKqs6VRDabpVlyr/VVLSullXGKt9VgQst5XopkmVUuqo1VhaqL1XFqrNVaWqp2V58r/hX3qvWVWDKw8A9qqGlUyivTQORixaUtirP1UKquRlacqzgVXSqLlVqqquVRiqzVVRoqTLDYarA1f8oZ5Vg7KV1XQarXVTTKjdViyr4NVnyralVWq5DVfcrUNWbKobVYPKo0VDXRQwBUpg/VUcqr9VBGqlVVA1mI1aqq31VC0qANVSys0lVWy/mwQmrCpZOKvYlVIQcDVdGrE2WMYmiVYmqljV3yq2NXLKsQ1UDK6wAgIreNWNqt9lW2sg6iRvM5VUdqpb0rrmGowPPLBdBwCszlTJq4dV5rLANUKauDVYIUg58GYg05V9ivuSMhmTTV9crRxU1SqiVQXKp8VWUq9NVIKq3Va5K7zVVmrQFjcioC1SBmILVuaqQtVHGB01Zeq5NVFGqBpVxaoSzuOZRLVqTo8tApauyVTgq4UVYWqZlVMaqjFRqq2lVrkrPpzz52aDvHypLVRWrs1WhKqMlVAq5NQGWri1U0qrfFQNKurVwz5HMCNasK1e+AYrV0arStWbivK1W8qyrVHwqDNUCqpWVZUqrjVV8q4oDoap2VY6AQp4nNkJ2yHKu8le6qhxVnqq/eVRyt5zAvKwKh6qqg1UWKo0outqiRVmarq5UQatPVaNq9lVojAJtWrqsLlZFqz5V1KqstU1athlXtoc7V4aqXNWHautFVGqsJVY2rG5UPasY1U9q8zl5qrb1XzatHRKDKsGVjlR6FWSquYIACIVdwnpURNVbarE1UIBH9VNZZpNW/ar9VSOqgNV1yrx1VNqsR1dMGNdwfmrHlXbypG1VBqoSVZkrYNVRaqvVXyqhDVHGqkNVQ6sBFXQq59V8Orq4z+eCHaBGATbVFKZB/T2av9jMtypzV0iqftUKSuO1QTq8FVQYIg4yJksG1dRmXeICkqkpVtaoiVaC4TrVWiradVvap61RLq34w9WqAsAy6sC1S1qtXlAOq7tW7KBV1ZBK9XVK0qZlaVBncEcAq/zVQ2q5dUBiqXVYbqvNVoWrz1VTaoYldVqjXVMQqP/DSYsaZbrq5LV+uqBRX7SqV1R1q8LVX0qqtUnaoAFR71FU89QV3jqqaqmlU1q4bV/uqKJVG6uV1SHq6mVRQrdFW/SsM1Yzq4zV6IBqFVmav41U2qyUgvsZkFiuqpVZewqzlMnCqEVXcKrDIFjq0XVZGr3dXz8oJlVkyCBwlypTBUZgA0Va5qw1V2mqFFV78uKVXGy5RVrgpVFW6svUVTQK13VCCqvlUnypm1eWqubV1qqFtUsABUFctqixVJuEHIz10XE+jzqrjMEbAhZUfyuRVS2ytFV9erw9XgqqDdAc+Qeg6CqwFVWioG5QbqxXVwoqyVVU6opVc9q7YVr2q8JUpqqX1UfqkXwIRBT9UJSvP1R3y1LVwErSVUu6tB1d9KjPVHcrZtVGaqoVSAAQEVjkq+NXbKqNFRFIYvVa+rcNVl6pCyEKWUlMAuq/eXU7CFLOLuXfVIUq5NXeKpi1Z6Khrg8+d07CzqqrFb9qi/VGPLlhUm6vv1XEqs3VMEqwJaEGvNgMQai8VpBrv9VnqsElU6KtSV3KqaDVxipZUPQalChZwq1NUY5h2lYDyniVFBrU9Wtyq4NYpq3XovBrdVV9isENSEqg3VohqKtUAGrD1eLqqVVUhqJ7hy9APVW79eSVhKqkpWKGsm1coawsVDeraDU8Go0NTIa2SVchqv9UiGqF5UoaiLVe4qD9VSqoecGYaxg1OhrWVUO6v0NY9quw1IfLyNXvavBFQQa5w1WhrLDXYyrINaQKmw1BhqvDXp6uKVfTq9jVFCrONVQ6tqFR2ZOHVDqrUgjqAF4yusmUvV3krYVXdCq0NaLKwKVtcqxdV4Gt9lSfwNI1F2rzhXMqpPVQrqwPV1+r/9URGq2FdQap/V2WrfZW4eQSkTrqhFVisrP9XYytVlTmqkrVyeqtZVsGrAlRway9V4OrLVV3qviNWEARfVsMrnwjMRnnlevqnyVW+qcjUBSpRVdxK2TVuOqPNWJyt8VWzeaY1Emr2jVlSsT1UpKp3VHKr+jXYSo+VQ/qzdVQGq15UzPjdytsa0BVHRrsdUO6qv1ZuKm/V7BrqdV6iuGNRWq0Y1wrLupUTGu5lU3YJWA1iQvMwo6rGlS6gCaVEmq/WFDXBPVQUa84126qG5GRlHy1WPyh6VG+AKjX/aoeNdRKj6VYhqTjX1Gp8NR7q+blmtZYTWk6rilUQ2IQ1u+Y2VUHGsOlcDq2/VRarXjVT6oh1bPqqHVYqqb5UF6vBFW+qo6gdfxZjXHKvE1RjqzGV12rITWeaqNFcyauqIPaq1NX6qs71VGqynVzxq79Xrqpe1XTK6k1IxrIdU1CufgN8amXlx0leWqEPEBNRvqroVfkqFjWfyvcFSsa9zV8mr1jUTquVNWK1ZSAH+rdjXYytSFa1qqo1jxqajWh6rqNRPq7rV5uqcCBGmqVFg8quKVpsqWVWpGgtNZfqq011EqnjUDGpeNZBKt41M+q4jVAisSNWzq5I1V1BbazNKosMmqau8sBpxpixBb34NUYAf+CRRZB1XYyr31TgasdVhRr75UZ9TiDNBGNo1/cZa8x26rcNTdqx3VaWqHEK0QBtNWnqu01j+qsTWOmokIK8hTQgV1NrjVFZg3bPLq5E1PpqcCTIWirNeIaho1vhr75WNmujNTnwTaVrZrizXLGtLNSiars1lZqjjWDGq61RIa3xVk5AN9xbAGm8C2ahbMY5qaxX3Gs7Nbo8bs1M5qAzWuirrNTLKwc1y5qYzUFmtHNSNqss1v+rpFbTmuOlWPqh01MsrqXB5mrhNecKs81VhrNzUxqvvFTuam81hhq3dUOGsWoFGarYAkJxOlUmRnyhPIa8g1YRrPDW2mp/NVKK4RVhwqV5S4DDIaPdKnVMoFr6NWOisUVf3ql5VKiqD+Vj8pRzOoASfl35qNJUdipgtQuauC1AFq4ISIWp9wD0qkI1WmrXBTdst71f3ylC1+/Kz+VbspwtSL0W81NBqiLUWKua3PFnZs15FrgBDIWuotQfKnvVI/Ls+UYWsH1Vha84VLFq8LW1GqgtfjKji1jQqYjp+JBXNbxasmVr5qbtVimrQtSJahi1feqU2XYWpBzFJayC1BFrV5ULmuG6LgMYc1p5q1zXnmsnNdua681lBr7DWqGujAkcweC1rQrY9WNspfNSKa7o1t2rSTWBUJsteiazg1fZrsTXaJCMVEOa5y1SZrXLUWWr2NcFqy81FZq0CC7molNd4a4w1ACrHLWkWoQteZaos1llqtzVXmpitV+a6S1hlrn9WNCpMtXdQcIGI5rwrXuWstNe+aqc1WVrbLXxWt/NQjQs7Ys1ArLDFWrStapayo15VrrLWVWt8tZlq/y19ZrMBVRJEKteawRq1sWdmrUdmtatZla1diVVqVDXZmpQIEeavpQIVqQFVuWruNROajK10VqxrUdWq61UGa0A1IqqWADdSvyAIqa91eQnA2xqUgljNUP2EE18fL8/jgmrcVdga1Y1+pqjLW1aswxMONRUkBZqETX8+E35Ytaka1ZJqezUYmvtNfOa261+1rj8ggCFxVbNmJ61RJr2+UkmvLNUiANE1thqDLV06sz1SAa7PVYBqxVVhmqgNS+qhBgb6qslA4atGlYBmfDV6OqEVUqqvnlXXqzM1+OrJrUB6FRtRhkGjVKlrSrUD6sEtZDa6s1jIr7TXrWrhtZta6HVfEBdrWrauuIOGKaGcGRriKxo6o9sJyav9VpGqCbUHmvsFbNZdm1w389VXk6oitfpYGi1q1rVdVSmtY1UAa0pVNJqQzWKCofACzamMgwMc3Xnw5E5tWGWHjFFer2QwHquTZDXqrZWc0rLrV6mtwNVCapfV6tr8UQmwFKNURq8EAWkB+LWecsEFRSamDVMtrTjX6yvNtRHqy21YNFNoBAWuc1Rvy3Q1/2qPDUg6pytdDa4A10+qNrXVqq2tXy6JI1GGq18iajAOtU/KhA1mRrxpXz5kmlc3ys61hrKrRUm2tHVYTaj21Fmr47V/WoWEkyqwk1OprXrWA6rHFRDa8I1Blqk1VdWuulQsvYcaXQVi7XIZmBtcbEsu1vRrbW4fWu5VfTa2I1TOqahXR2vDNbHa1QQyQo/jqP7VmNVkazU1Llq/Ky5GqWNcnmH+VAtqErVJyo62CPam21JUr3TVImo8tRea6qVhxrsrXV2rV1bXaqKVTPxl7WmmoJVXuyro1ZVry7V/6titZSawM1Mpr3jVymsUFdQqoGWA9qVtVzipT6CGGZUQsZrf/ie1gmHI5qvR4ucR/1VXWrNtUxKuS1EkrVAiaEEJAB/anG1ZkB8BUemo3NWpa7vV6fLhLX9ssptXMoIfVRgAVkAwOv0tTTa8fV1Kru7VCqt7tV1KtDVMdqX7Wooi4rLAwo61Kdrtqxp2r8rBnapTKnRq57WAOqzNXna2PMtDAvShxgVCtXiqku1Q6qWrUX2rZQJXaiC12Dqa7WC2qTlXZyUwEj+0m7XbSvXtefa9u1YDYd7XYOtDtQra2U1tJq+7Ws6qRtezqqJhJLgRfA+IAodZvqt+VoJqkVV9CoutTjq021TDreTUR6qf9FPFa+sHDrAbVr2qGtRvaqy129rxrU1mrONWY68FVFjqGfDv6setbY64I1LBrPLVg2ugVZ3aoY1t9rgzUEOrZlSkQVW1Gz4j2A9Yh0dRqavIw2+rDHX0OuMdTna4R1C5rueAx/QTJpPamx1GCrEnVvmt4dXgqwJ1NOrZbUlyuYddGBaRgNP1j7WwOuJNbk6mR1fprjjVd2uCdRHaufVIABqFUMmugNbDKq2kH4ZUpazGq/teyWQjVRgBc4hFFni4vjaxh1udrgHWR8oJlVTeTp1KyhluUYOvWLJU63eVHlr1LV0WqUVaJayNlaDqZ5XQOrmdVg6uZVRTrJ9Xy2pvVUo6pW1KGqFYAROuRIMo0IRgSdqubVY2p5tVA639VJGrXNU8moNNZ7at36djKybXXaq71VLa6m1Ozq3bX6av2dQzqnu1Oer59WMgAidRp4ylG9hitbVzGr0dfE6sWVOTq3NXJOoXtcGq3ZIYLrYZZMqu8db9qs+13pq3rVpSoKda7azE1CLrXJXYpGRdfLK+E1aLra5U8OpqdTi6m+1fzqYjX4OsBdUzakEVbTqfjV34F22MmCWM17JrsbWZOtxtdya/fV9lqcCDMup71EEUN51FOqEHVV2sEdbTqvB1larQnW2qp2tcQ61yVPNEoybdZDZdfYq4wVu2rnFVH5FcVbC6x51N1qBpVNegVdXyIb7VGSrT7XXCvsdUtayJVlLqqDVfWv3tWXKyiS4Yp9XVaGvSVT0qjF1AeqsXW15nJNeKa6+1jUqGnUM2sjteAasCAILrdUTRmqU1rMaugwpFYUDUSavQNd/YTA1/NqRnUpOtcldb0XAYwxgXDWkSoptWBap217rqXbWUqt2dXeaqKV8brSLUcIiTdS3a6w1abr/TVxWomtSU6/dgPMpSLX7kALdeeaoO1ztq2LVWuuDVbm6uRC+jqgjULWr0NeBa4O1UNrvrUDSrR5PVa7EwNbqJbWsGrkdb2a2N1vbqtMVVutmtbIakg17ZqN7V1uvTdQ26sd1vsq+3V5urmXNyKtt1s7rQlXzupLdR66uy1RNq9zgTuo23FO6iw1M7r7dWlmu3dXU6oJ11Lqs9UAuvhtRDK1R15mr75WdhnUKA4YNk13NrEZC82vudQtarV1eVruZV/bHJGKiKrQ1wpr23WimpFdQI6751cSqJXUfGvdlQwAU51Tgw5eaxjEGsDE63yVcTqtTU76ujdSY60Z1TzrwVXqMgl5oLEfE1q9rsnUgepNdS66vo1I7rPrW1mvxdRHq5LoIvMpMAEesbZeUaod1fjqorXYuqvtRm6z1117rYbW3usZtdfK+tVj7rzRbMo3VFg74mzVL8qUjDzGsydegIbU1WdqknV46qXdTLy8KSYrV4VWZOp2NSfaz01oNqWPUBOrY9WPqoR1VHqfjUKeqVFqgaso1pLqcGlemuddXk61j15Hr6nWcevDtd66pp118r89WMuscNdC4TwMGmKIXXj2tQ9RJ6gx1MLr0XUMOsw9XJ6hBgDXAXPWCmsI9Wfq2F15LqvLWaess9aaqve1/nqA9Dt0CC9RU6qR1mLrzPWReqcdcQq6z1itqpXVXyr9dbK6xoVvbQkdSwyzHtWJ6qF1aHqEnW/aozNTG63T198r8vXHthvQIl6ux10jqIvVkerS9Tg6lx12HrqvUt4CRlp+mZT1NxqzTXMGvU9Vva/J1Wnr8LUKOoOdXfa5R17sqDwBwerWIEjqC51GNrIXVwqv0ddParA1Mnq1jXaus11X8agTJ9XqfHUDes1lU8K4b1OVqdPU1WubWJt6t3g23r+vXVOqa9ft6qL1a1qvXXcep9dd1Kp+1ajqIzVUFklEQnagvYlzqN9W/qqodfo62h1s0qcGkVer89VV69fM5LIHNaN2vhNVw6nb1l3r/HV8d3NdZKan510Wry3WvepC4Bnkou1EPrm7UO2p/1YN68G1brqd3XserB1Xd62l1YBrupV8esZNTEKtMwNExX5E6Ou+9ZJoU61GOY6HXfup5dfu6rQV/p5TtgOMHulZD64j1jXqYfUd2oO9bvarN1PbrwVWkxEp9X8hDn1GPqmPWb2r29bI6lr1o3r/nVE+sZteDKh91ZPqi/DxSI/IB96+b17LqbnWcuqk1Xjas91P7rGjVqGtV9ZmVa3VZOqNNVMerFNXj67T14rrCfWSurpdbUKp71/HqmDi6YvBWch68T11jrJPXoevNNat6661v7rY8wLOCniud6yFMu3r2tXXepa9Ud63l1qgh/fVRsLlAIH6kz1wfqg9Wh+ultVS6qI1MNqbPX3eqaddQqxG1jvq1bITxHftaPaz71d5YiRWF+r6dT4AAZ1ORYhnV6+qZ9dLKkB1NnLCM5tbMP2tr6+QAKyBhXWfOt75cs69C1Wlr1nXKqs2dc360t1zjq5bUp+rDtZl6u31PUrn7VL6sWICiymxV83rWujf2osQDzy/wYqZqelWA+vhdcd6vaitzAH86dKtSdF+6l614XqefUFqvrdfha8P1zPqRFAGfBNNVA6rf1teqA7UkepS9aRmOH1gBrB/WKOvG9Uc66wA1CrSfWOepV9Ub45IOQcr5vU9OoTNSX6pGsf9r+rUYepX9dBa8Z1cYqwmAfhisdTM6nv1ZgJzfVgevRABpa5B1qzrUHXiWqI1U362ANu7rmNVZuqg9ffa4GVAABFLP1yvqeVRmgK/ylh7WM1nBgxnx3lm69dY6qkRj6ZpgwsBibgCt63U1IAbmfWatGNEJzZLFY0zqx+VN5mt5We6jt1xbrL3WFOoR9dm6pOVsjgJGD5SVlwJtKngNtbrO3UH+pDtYL62PMtR1iGnGLDgYNY6p5AFDYkvWpuoY1XIG7t1jbrXJWv7OfOCoGrgN5wrpA0S+ovdbOaqcVegaBpWd7GojNKlYwNW7KL6xGpn9tSWaw1VQwATAAoADwAOOcfBpjQBfsgmVnXVWLykyMrdgCsxC8GYkDKkY2YBWYiiyJuqxTJnQSINzlrtbXHRHxLDkWTFIcCx4g2BBr1tTGWc6gzmrbvBFlizFokGvzkvRAcg122oBAl6WJLV4XiSg2pOh74JlLeINzmrBp6FBpCDfGQHvgxiM6g0fQB74JJmVVlgqxMZXv4DqDd4geMg0lR/gGFBs6DW0GqYCmOq1GHlBtJlTcIAYN6KYJg3RBtyDUkEXWUkIhmg2B5kbUYsG9FMmPoxCwtxESDfdObFE7QbA8zhDDGDbsGxVw+waQMyOeEmDYMEH56qQaeg3IZkr8TmWTINIGZwXUZBo6Dcxqi4NiQab0z1BsmDa8GiCs4IAPg3BBt8lSYK6o0MvqcA0TepQ1W/65G1IKY/BF2KyVddc6j91tzqRg3cuvntav66VVx7YMnXu+vU1bRquANrfrwPUUeulNRl6w51WXr59X/Ime9YPa6m4J2APqJT+oFlcV6xb10Lq8jVx+uYDbJ64H1UCwSQ3Or3SNT16xj1XvrofUaeua9Un6i11lHqEQ2jqD8zvR6vFVxnq92WmeqT1Vd62qVAIabfXQeuBlZ1KwgN7/rTRH5lgbzt/68kNwJrU7W/evp9f96gyVtIa1vW++qtAUyCIN0YvrJHUS+ocde9avn1YrqBfVWBt9laoUCe4Z9g1A1bSselUaG01170rcfWCBqpNTiGp/1eIbodWtOtBDRIQDR4JQZX3UF+s19dCG7X1dzrL/WahrhdXSG1f1QFxNHgrgCFdeiGqm1orqIPV02slDbgG7jVyfVcvXgirWeNxIWVVb7qoQ3/+sk1SGG3X1YYb9fX9moQYJmGk6a5hqhTXi2pTdVpasP11vq3Q0hOrpdTUqhl13oaP6DMmsveJCGygNHLrrHVcuoAdUD6hENbYan2SxhurDQJartlXIb4fWQeuTDUCG1MNDvqiA3/0G1VZmVBGVAYb33V5hp7DcAGiMNEfqP6Dzhrylp564D1m7qUHUmmFrDdgGycNz/qr5WdABBdW2UPM1kOR21Wiet0dZSG0r13nrhnV9ho3DfwUD6A7PdY/Vhht39RyGxP1XzqsQ3u2tcdbHmG5Il4aV7UMeqFDeOaz8N2PrUvVjhvv9byq1P1w/qwDWAitFaNn6i+w7Hhq/irsEtZKyagv18rLUxD2ascVdY6wXQJKJ5ADibiYDeGG7UNBvqUjU3oEz+DfoaoQm0rIyzMhou9W3aq71yFop1WmhsTDTyG58NXGpUI2fEGojQWa2iNLdqqLWRWogjfW0cR+d/qy3VjOtr5cGqlCNlEbHcKuep69f9WPiNvjqlnVIOoplZhapi1yPKfcCsWpG9exasANScq+EioRutINxG2SNp7qXA2geoxDQgG9v1mlqRw1DstQDWpGg/KffqZLVI+uQjR4MSiN6EbgvWNst4jZj6ybgbgaPA1eBvkjMwWecucpZax5BZFUrLu6LcswUa1uDIyscVZZWEKNEUaZszzl3trKlma2+EpZAo3r7VmzGZWAjwEFYK0y1jwyjZtuLqsBHggo1a5n4HqFGgqNSmZgW4QVlV9OnWSKNxuogsgElgSDSlWa6YvuYc/jG6lJlY1G1bI1Ub0Uw6wHyjXzmcqNpUbBsyFRp6jcVG0mVBKYbGB/VhL5bVG3qNo0bYo2bOqyjQlGxVwAHK8o0pRrijSXymaNzUbIo37phCjf1GsaVWrilo1rpn7dKxWT4InUapMwTRrozL57T4Ix0aco0TRoOjdtWPqNRRo10ywgN2DatG43U90aZsy5pnkghGoVGAl0amo27BqPTCemAtla6Z6o0Elm+jSLMmqNf1ZAY3AxrOjSVG1GA4Mb4o23RvOjVuWMaNMMacI3PRvhIIjGi6g/waoI2iRsItdpG4NV9Zg9I0uRs2lXJGjyNlUR4A2pcvMjUgGzv11ka/uW2RswDRjGoRVWMbXJWSRvz+BCQDVU+MajI27Ssg1cTG2HASkb9w1KRt0tepG7Z1hSqFA2TsFL0HpGjFwdfwQFXuRoa9cl69u1TEbanUWBtN1RaGxQNT/FGY2ixtcjVdyqFVksazPXSxtogMxGm71lgbYvV2iOj6FJGvTqqsb/eW15nkjfH6x4VMsaRI1GGtX9aa6EWNxsaaI0LZnNjeyGwSN1FodY0y+sFjTyqCiN+fwuI1ixrH5RLGqH1DEaefVWxpYjQLGhWNk7AZzqZ/F9jSbGi/l6sbA43gRr29SHG3WN8sb9Y2ORu9jYeSUhYMcbt2VxxvojQnGkP1ScaPY3hxuuYMLGqONmcbHY1mxsJjZL6/ON2sbZY17moJ9fWGxp1dJqIZUzhrlDTGQEwEbDq5vXyqs7DVr67sNOvq4Q2VesjDUWIckYvfqdw1Vhq59dzG62NtNrcHXHho9DcCq2UNLYbI8imr0U+m56ikN2RrPPXLerXDaRGksNcdrkDLOr33iqi6oj1e4bNY1ihtrjXZG1r1f4b2vXurwbwFV4cT6B8bQvXjxuPjTz68UN6MbptUNxts9fEa6VApzrO+KXhDc6K76kr168bFjUQmqr9f+G0wSm3qCZzvhqIFca67n1X4bn40/ht01eaG1ONP0U6yW/xq8dYfG7+VFsbrTWhxqs9Q/6sb1DYa73WwevTDVKqmKYb7Z54wietE1bmGiTVq4aHnXAJsvjWCG1is1EIKw1TSt3DXwGkyN8YbMQ3wJuEDYCGk8N8+qlfWtxpr1NO2Ww6V7wC/XueqU9SiGjeNmrqaE3revvlXBgEe1jCaQI1oJqNdRgm301k8bz43FOpATdQQGCIsiaIE2z2qUTdbKlRNsvqaXW2+rANSoK3hNLYaAKjsBtrZeroTuNtmqo9WGVjzDRkMZzVLiAgE3who3DVuQCxNebADNQoht6DTdGsL1gdrZA0LusP9TF6+kNkITWaFmjk8TdyK7xNM9qqnXnuv8TZb6kb1XCaPQ14BpBDeo6i+wFKw8UR75iwXNzqgv1FAbv7XUBuW5bQGtlE9AaBfqqBqD9VqGn31ZEa47VNCFJRK8UsnIUgaNA3cOr8TQIGuWN3Ia2vVSJpB9Vzqe+Qq5wy1b8+BAVaYG3xNc7rYk0uhpTjcEm1JNhKw5kD4om6TcBGvnMfSaH42hGqaTXXG6q1G4aS2CUEM0IJr8szAPSbuA31Jv6TVu6wZNzSa93UORqMuAyiPdVhycNk3nCscDYqqUu1rga3ADeRrkjAucLI0fgang0PJqCDcFmBINoQaSO4pBuZAH14SYNXyaZg2vJvjIGEGlIN7Qa0g16FmLiC0G1243Qa8g2ayAKDb8mrINGTqXSylBuKDcOWJPaNQbTAiTBsqDYGmDYNzEhGg0ZNBWDa0GjFNtwbpKhVBqBTZcGueVSFd1g0J8sAIIGmYYNgwaqU3IpqmDTTASYN96hyU1/JqWDeagQFNoKbWU3bBo5TasG/uwEKa5g1Qmy5TS3yoIYRwaavItlnj1b8A04Nv2EKyyYptNldcGlYNOeV86ypBuozFxGZ4NzEhXg09BveDSZWCIN6DZJo2PBu+DWjGuBNV7qcE1y+qMTTx6j0ghCaVRFfoDq/hpZP+Nd4aAE1SeuoTS4m1gNawZrU3toG0TVeK4a1N/rvw0Jht/DWom2hNdoih7CupsBKiyG0CNcDq840J+tgTT6m7BNMEah/W4hsbDWDKyA1SEa+FEsYnRtV3GhqNK4a+429hpYDQ5G5NNNBxYxSjxrN9cOGw0wpkadA1mhs4TTPGu31mgAQXXYFCsREuYaRE3Tq6U2GVkM9bqy97gNQb+41PhtYDVGwJqgdBA600mxs30PgKqJNCzroE2uxv39QEmw71QSbbY1HdWfOL2m2dVmOrB01/auv9e3a0dNcSaQ7UJJvjTUEgCJ1reJTjgbaqXDRQmz91oYbxzXFhoCtf/QLAVYqMJ2xi2sLTbMmyyN2gax038+vLTW/G9P1TcaW41mJvgkG0GLAk14byE3dxqDDb3GgsNPSrs7XrhuP9a+mkoMJvrKw2XptKTfA6ktNt6ay00ThofTfL6n11gIrkk0vepmpBO66Gq1iaOhWuijbkO6WNvVoUw25B2cm0ddJ6spNQDr/U0+En29aI+ewNceqoayXJsaTTemldNd6a8XWRhstjmESXcMKIaeOVUZoGTfMms+NIgbjLUBYCYzeRm5vlrGaCM0xJo4zdTGm2Nrib8QJ+EmhcI1qyjNgmb+A00ZqGTRx641NhiapQ3catH9YSGkh1Ol95SR+ozJDXYqvdNMIauTVZpoAzQ5GjTNK5lYFJDhqvTcWmthNXbroM1Jhtgzaamh71AkAQXUV4CN8Ux/ahA1PqUPXUOsRVX96gzNW8bj02ORs1EAyQ3lUUybAbWc+qPjaKGp+N/DqrM2sRtaTTqGpg4Y61LyStECCzSJocX1RaasfVS+oizaWm1uVa6bifXPppSTRS0EYwdYQ3M0nWq0NV5modVR6burXikUX8PpIAG1SWbDQ3bJqljWKG9LNUGaos0XxraTTmQR1U1FCnrAGhvtDXVmx+NMCbGs20ZvkdVlmnj188bcs268BI5OfCLJN83qRE1LesATaVmyRNMWaJCAG5zFRlaMd1NKRYXY1S+tPjSJmqeN0WaKk0SEGjXKccFbNqCb741kus9TRS6rBNRqaY02P+rwTcNmr0NuWaHpDxMM3lSvG28Na8axE2zZsdTQPG1xNxCp7V55JpJdQomsCNp2aT40qJqP9TmmuQI32biXVGer+zWGmgHNT8bNs34+ugjdeqk1NymbFtWnOqVYSwcDDpT2bYnWiJu5FeIm37V/6afM3lZtRzUfFVbNrdrw03VGvOzUIG+jNYmaBMXR+sSzb161T1SYBdE2X2uTjQpmy7NuCbG43CsvBlYhG2cNKxhUQ0jVCETRr65cNlCbM02bxvKTdvG9QgFzIL3jFwDMzaFm69NQOa6w2KZpvdXBmpp1nUquc18JrhoGV4RcNU2bKHW0+uKzeqG0u1ZWbaDXqBvSYQOGCR13Wbcc2M5r4dc6GvZNWAbhA2exp78NIAK3VXWbETUyZuhzX1mq3NCybIjWs5sRzSmG7L1iabuc1Z9GAcI+IJUNMKrV40T2tezQ6mnz13vqiM2tZrtEZmWIPNxOanXVhZpgTbDmq31CCaRk07KkflQKGrJ1x2b0E3rZpD9ZGm9hNF2aEc1KZp9zfPq5sNo2bAwglGttTS9m7HNb2bI82EZtMdcRmqzUl4QxdAJ5qgTfVmmHNcua080MZo7qFXmo7NtxqTs2LpsBzeTm10NCuauPVK5o/jarmheN8YgI4yJmqK9c9msPNteaI82PhuzTeomg91TIJ+IDE5otzUN65nN44bLXWpxq16LPm8HNbprIc0epqHzZ3mkfNyfqvc0l5qnDaKqiGVfua+E1gMjrJZ4KCF1gYaM02/pu8zaLm3zNT+b0wIeSpRDcwmj8NrCbRw2GpopzTZmsfNafqJ80c5tQ1TlmpDNIIiDqJoZs/TemmoXNH+aRc3R5oWzaWQSKS8Bbpc0sJsWdRzGgbNzWbfnXgFrgjcNmh/NL6alwi7bFWHtXmxfNfYqcc0r5sMzWvm63JWsR2bWsozvjQPmnAtw6aNs1d5ttzUXGiQg1l5mC3H5pC9WwWwAt5+bk836JqGzT668GV4QAv42sSgFdQgW1HVumbgw2whs/zWgW3bNn3KTMzt6kP1hemtENKWb95XAFqjTdF6o8Ntmakc0sADFVQ56lsNNUQ3jgLSg7DUgW/dNhYbD03zZtULRYWpmAcUBsC3CFuUjZBm/Atvqa9nVEFrjTXe6kbNsBbqIQC2BjDa/mwXNthb202r5qbzYEWv0Nrhb/s24Fo8LfJmvfN08ajC2l5uUFSc6i1NgVq7JDm+IH4FQWjz14ebPfX15pIjV/mgnNS1wsi3zytYLX16wfNHBb880p5sCTd3msTNcGAFfHZFv7zRUW3PNQcbRC2X5pZzcXmxXNdma7PVPqrUzUvqqOkaiJ/WD1pswjY2m3vxv9rF/DfwGcTR9m4/1OlBr1SqcuvqH2mhPgrfKes1J5pHTe7ms+NwOaGC1j4u7TaIU6RE67rSZW8BsUTXnmhP1y6aEi3w5uiNd0W4wtqRaYC1Ehqz6HKGXoK8Bqtc0L5tyLUvm/Itxtqo82N5pjzen8D0oX4SoA2/ZpzzcZGkQtrsaC82RZq8LVxm1yVL9xYIlGQGJzfxG1LN1RaxC0VpuMTRhAatNHLBnzhkILkLbzqsYtDKEJi1gpv9jHQW/HN10rLwboloDurOmgdN6VrSPXqCg6LYkWnbNYuaTUixhhJLW4aMktuxYKS1eprOLdbmz3NXRbx809FviNVPmivNSKrMZw5FqxzTQWuvNHxaG81Yeu+LVpIz5YgEBYS2+OqrjRGmmot46a6i2AZo99TjCWUt2+aLPUShuSLbfmlgACGbEM1EhuUjNprKx1DabLcyuFmbTf06pfcUbr3s0dppzTcksNVYi+RgrxZxu/wNRmTYRMgbhM1w5t+jROmsTNQYJCo114xHNbqmHVMMyQ3S1yZo5LaJmlUt4ewTIxWZFNwP6WobVrpazA27Jo9zWGW20t1P82xpR1hjLS6WoMt8Zb3S2LupGTeT/NbgIuRwk1j8udLYGW34qMubHbUhlsTLel6nwt7obK02kFpSTfroIYtt9ZMS2EpjfwmSWc0tpfr/WV0GGULV8W9AtWSddi1LFCWLXHociArJal00bFq2zaomxH1DBb/nz9lqbLcyW4ctDobKS3slsrLSWq7Ut3CbRWW3FpIdfe3TR4DRalXU08w4VUrOaPoFvL1Tz+pADRIeW1AtPZaohU1+vdXtH0UMAmXcsvjx8q7QG9Gx8thMbFI2n8osjRZmlANqkbm+WPloODUprHMtV0qry1ght5QMpq/NgJMrBejgavOcC36yzNJMauY3IBqsjV+WvysGxADmCdO1vsKnm7gtB5rAK1UFmcECBWv2NjyrwK0bhBtDWWWyW10FbOY1vlrJjbLmxi1OlrZJVIVpeLI34f8toAbxI23WpvLZkGHctQHr8K2XkCOLbEW9wtJFbEA3cVs/LVRWtTVNFbeGx0Vs0jbXazCtQESOWA4VqWLZWgZCtMlaoK16FusALxWieNlFbC+XUVqhbLRW1Ct8Sbjw1v8sZtSKyvktSGbt8D1gEUYkq68qNQxY5/UIqvF3BswV8Mc2anU3V+rpjYwqg9oIYZ1zzx8rkrPOmxPNAgqb01KVrgrTzG6itFxZ+Y0cJspzbJa+yt4IrvgyPAHVpCBmqaVrlbNA128p35bRa2Ct5MaEK2IqozlVg0+itQVbGK0OVu3II8AO4pLlbto2rFtOAF3yhEcqFrSY18VvgrQJWqaVyVb/K2dWowrcFWqVVoVbidX3tByrZfy6Kt+VbYq1CWrIrSVWnytgla/K2cZq4TTpWn11IrL/C1EhsZuDftGIZELrqQz7lpYLX7yydws7AWi3HFsKLSoWxgV4lbj6Dr63XmD+q9ANxLKCi0fOp4rcVW5St2lrVK1qarejYHy2ot6FbjDVLVuJJBvkUatwYb1q3zOokAO3m7ytRVb4q0UVr2reaKgPllVbQC1JFurLcGavqtTTqRWX6ls3LYF6rP4hXqC/XjVt1tZNW8nl01bV2CzVsgTZ8WiUt0Eqlq0rus+IAIWjZ1oghYGTNVo/LQeGtqtKlaOq3tVp/Fa9WzYtXpa0q0L8vtzXY1QGtSNbu/Uo1pBYGjW4itClazI2PVvRrZ1WqaVh1a3q24urALdfmq4t6IBvq1Q6pFZaYmu7NmrVHNnMZrfdaZW+CQeYbLK23VrQgMRGg3N4lbh0CStR4AL6GLQ1UVaNY1zJs8rTtW+6tWNbLtWrwGZrZm6k6tAFaaq2KYue6LYM++QjVbwoCExoKrcrWumt1NbSq37VvKrd1W8ctd5qpa1o0K1DHLWzz1Ctb441RqtNrQ9W9qtu1au/VJVptrR6WpMtYkaia3W5PXIAbW5jN3IqXa25xrdra1WxB1ntbVa3PVvVraPq0St1Vb0q1/uuqtI7WiKmRtafE0R1o8te7Wtg1XlaEq1lVub5RVWzjNWkbk61PusVWCHWvjNflZw607+sjrd3y3OtKtb861W1sLrb7W1KtdlbS60oEA6MGnWw2t8tbcq1Z1sP5TnW3fl5tbdC2W1qCVcXWTWtnRbLi3cltf5XS6kVldZaDK1SKuXDCZWowVP0K29XohgwDeV6vHNRRaK2W0GoXrXCqDOt86a4S3DurirTHWxuto9aNa341uVLW3WwOt89AxWpBZvCgL3Wmut2dao61t+qHrUTGsS1iVa1+Xn1ttrb1Wmett2bYC0skOU1eOZQWtRgq6EkSatFrSNyCWtDhbFq261razSAgQBtWeb761NVsVrR5Wj2tWNava0UxsQrS3W46tgVar60yyss4PA2/etJtbn62KVobrU9W72tn9aE63yBrErTA2n0Nfgi/TkINodzUg212tT9a662D1pPrWQ2jBtPtax63F1uobe3WyM1YmYWK35mudrQ/Wq/1/dbiG201vYbfTWnGtvlbuG221pLrYHWiNuBDae61MNr7rSny1htx9a0G2x1vIbUKmlKtWlbVy2c1qBFQ5m9It6hA7JRNf1VarMah509mYJQQW8rgSKWWM3w+uaoG18NrvytuGHugZNbEVXUZg1DWp69w1CZaL63a1qxFQo216FkIq3G3/KGazGxmnZN2ZbE63u6oUbWRQDFEX1gwNU1QDCbQoanxtcjb/LXRNo7kEE2+Jt4taXc3sZorLTw2rE10TbvEwZNqA9aE27Jt4Tbcm0pNvybTLK9MoRTaC00JNtKbUk2iJtVDbKm0AKpJrTAc/R1Hjbgy36JvV1dE2wMw06rJkSZNs8bVDmnJtXTbUm0yyt6bfiiAxgAzbOm3UlsWTa+Knpt7ihAchCmCmbVmW8ptftb7I368vmba02iwY7TaSm06FuXVSM25ptdfKL+WuNuWbWyGoTNqzbW60bNrGbQs2mkhsdBTm3mZq25Y023QNhzbuM2tNrfwvc2oitR9aX43rNve5Zxa8ZtbpCyi19io6bSs2g5tUTbrm0k1pWnMKW031dTa9m2+CsLjS82v5tNzatWI7NtW4NM23fNszbixWbNrBTAsED5t7BaGm0XNsibbYKrFtItqUW0wtoebV82kAtesawW1jCuqbcfkE3NQLbdm2qNq0DaC2oltMsrCm10tuCbepqsltj9aym0stv8bfeaws1a7BOW3AtuYbby2mZtNMb2eWncsB2DU2//NjLbwM2yZr5bXM2mWVTAQ2xr0tuhbVk20Vt+LbFW2Ytqb1XJoVVtwra5W2iNq1beK2/2tvzam1VfWH1bbi2oEtYrb0W0Stql5U3q4EQlrbim2otuQbeWW7VtVzb7BWOCR32mq20DN3LajW3MtpNbT82onl26rqYhOttqbRq2pltStb3W1mtp+NUpioVtVra2Y3nNujbcG2idVHMEw22ytpdbZq2gNttrbTW0ptqbVdK2jltCbbhDXeNqebfI67ptEzqL+XxtudbX6261txrac21BtslbduqtNtXrzn0BFtpSFUW6gltTTbqW0XGu3DFW28NtgzbqeUdtuTbY22idVirRLyRk8q3ZUVmAdtINqS22dtuebd227dVQuqTUQDWojbTy2utt8LaF20TqqSrOO26rNhZqa22JtoVbYG23K19rbPW1jtq5DFNQFdt07b92WztuHbSe207lS7bx7CXtsrjeYG5ct3WqAm3btvPbZrAJ9trrbHm1ztrLbaM209tXSq/Py7tqnbc+25Jtazbj20zcoCbUu21Go37as21RtqPbW+2h1tMz5gO1wdsjbSg2xDt5bbPW1KYpObdW21dtNIak22YdoA7ady0NtLbb800Ztv3bQzmm9tRHaEW1Nqt65DK2i9NlHb223UdvrbZB2pxtPObggy4dv7bYk27NtG7bWW2etotbWR2g1tmbbzc0sdq1LZ9W8+VBjbFBUisrMLblmp3gyoY6PDkBophN/WdstWdZX2w5FhNFvkaxxtjeqhbWDBCR1dpmHr1h4Rmsx1lk2rUAWjGt0dbNG2n1qLLQ+EYztSz5Lm2YxvY7egynYM2QgRzU2dpmlUs+Sotu1aNG3PVvQbYlWoa4oZB/O27xHs7bTGxztZUVHgBrR1c7QF28jg65rok1bVpprTBWyRtFtaGa2uWrc7YF28et+yaPW1StoMgLxGY91W7LhI19Zg+oQ0muItJFbPC0BVv3zZu2/Nt2Xb6q3j4CkDWyQWrMhXa8q1SNpo7RV2n41g+gcu3XGvy7ZNoCdsnnbY618dv5bZ62trt1XaPM1ddv+rOI/Kmtw9a/22jupa7TLy7Xw7Xbau3MRpG7eN2t+tJXbzi12tqg7U3q2btQ3aOu11doK7d121otcXbzO36Ftu9fo2ul1CGaNy3j+sj6LVEB1eELrxcQMa11tbqmHnl3hy7u3ANFyLVp22ytmXa6VWkDgOYEisVV1eXaa8yaBCW7XC275tE5akO1DKq+7QZ8UKQUgb/u3dGEB7S+2vJt03bVmDg9reOChYDrt0PbMAiw9vA7cF2kdtEeqke22INUDb0mtHtA4Yeu0IdtY7aD2xJVuPbeKAx6ttDfdWWvMRPb9u3UZtvbet2sHtnpV5pSMtCh7XI2dHtRXabW19dqVbUMq80Q6/qmkTs9oWzHT2uath7bSe1YdsSVfz22L2y8aevU09oB7Vz29dtwPaye10qql7al7fDNsvbCe3OBuhrWJ2pXtEvaVe0vggM+PvG7gNmvaMe2ltqm7fx2yXtBvbke1BbCF7bT2rXtOiade2UtuGTRb2z7tLPbJc0K0Ft7fL2xrtv7bGe2OdrkCOv6yKIbjbH8XC9vt7bF2hntzXaXe0DFqt7eIuW+NxvaOe0i9u17YR28XtxHb9e2932P3NIgT3tMPaFe28dt17Sn2qPtafboG6o9vj7aH2tbNSfaee06tr57dH2w6ocibpk0m9uz7ST28vtH3b8+1xlkkkEVKjXtxfbTe2TdrDjbR2tx1VfandBZ5uD7Xb2zvtvvaFG3+9suZOeoTPtnPbve0UtqO7VS2yPt5jqq+1jxQLNXL2rPt0/b9m0R9v67Viqy7tkuaAbUkMDkrLDLYntGHbk+099saVW727hWokBJ+0J9od7WX23PtJ/b9ebaRkdHr/ammIkQaReiH9rdbRv23nt5Paz+2t9qD7W4EEPtw/aP+0V9q/7RFOY9s79Zl+119rX7UD2p3t+5qEe05kAp7dQ3S/tJfbbq1DtsAHU32nHt3/bVaiV1quzBAO0ztwzbUB0xttP7SAOmPtEVbG2Ur9qn7bgO7ntt/bYB1txu/7YH2xAdAA7Se0/1uMTSqA4xtowUrMWZBhsxWNW5V1IOIJNXoJB4VWty1FVm9aFq1+9uHSAfnE2NirB51WVxuNDWa6o9tWxaCB2rMFEHUhGLZWXqrSZUxdpnbW0W9YtiJaTu1gGoAAMoAAHU/q2nav2YDMubicweb0M19cTSjbX8HnljMRbqBjWhbtRLK97t8g6ZbJqspaNRhoe6V85YGqwMDsPDX42z/tTbb1tKyZRtDUyqjwd+vAvB1K9qYHYza/sABABEAADAC1ZVqyzwAEAAUUwfvCiNNQAAAAorJ2gytoKYU/i/wFjNQHmVwsdKYD1VcQk0ICWzSvMonb5q2zarZrVPWjmtdLrIh3RDtiHfEOxIdH/LTwB1gBBdRvmBIs/oaNfWVNnKbPU2TJ1wtIfmnoEF+KDKWmytIzrwh0+uv0HYNWkh1pkVnlhUOE/tRYO/nVMkbrHU2DupAHYO6YtNpa0B3Dyp60PWsaYdj1rgh10Rrf7T722QdBNagB3QmvBiOP2rhw7g7ZK27Dvp7XgOxgd2laHoAkgAcAO4ANYA7gApWUmAAIACYAVI0Daq3h2iADAAICKuYAJgBegCekDXAAQAXsAoHYWAAXAEqAB4GrcAHABrAA+8u3AKcARlwXKZ6ABcphCABIAZ4AmABkECYAGT6pyy1AAngaXJWoAB3AL9kGblwKqagAheyJHQtsNvtRI6n7XBpqJHZsquFNygrWdUDtiJHSI1KoNygqcvXTBi+zKyOz2VzWyiR1GNukVSqm1kdT9ruvU8js2VUFvHkdrOrQyysjscldK1HkdIjUz7BEjs/jTMYEHINxaagAo4CVHcCqzZVMhZ5R2OSsCkGqO2pVWVa1R1nht3RAaO3wI2+YQcg8jpqAJpGZQVjkrlUzKCt8CNcoNUdetRhUypFpldfMmNUdUhat4hujoW2OwK+TlwKrfAhEQF1HQtsWksUORlBXmpslsmqO8Y1cArnUhmjuUFVWmuhguo7WdW5iF1HdqO0+s0Y7r5UujuQbGSOrkdqOQociUjoW2Dn8ZQVS2rSyzZjp8DayOwMd4khUx0sDotMBSiX7IMY6RGp/5lTHQQm6YM5Y6cx0hjpdHU8AasdlI7PZVnsFTHXaq1UAhkYWx0mJotHc9kHsd2o789TRjq+NXAK/MdnUqn7XbACVHSrmkkdqMaWx0yhpqAKA4ccdbI63mBrjq5Hd2OpcdvI6oSxrjsDHR2OkAAj3qagBkgjXHSKO4cdO47xR3NjpLHSrauAV246Sx1f8pVHYeOhDNFo6UGDRjsBFWGapxN747NlUylvfHazqhhpLY6IDU1ABtqO+O2Udz47fAgd4nfHWyOlwtUE7PZWuSGfHbyO8GACE6n7VbaEPHXWqlUd946ax36DrgnYMO+TlYw6VR0ATpLHUkmi0d/eYQAAEBpXHYuOksdv1aVR2NplFZWGa7zAh46RWXkjpSzNGOkVlKE79tisToTHVGoVidyY63x0tjrFZTUAYcdmrLIh3mAEsACWQckYjvBQwCqgG58JoQBWApZZGyxN+prLEUOyN1RQ7aCBf0B5LHXqe1W0wZNBDggEeKu7UUGcOgrqKHTolRmNOqw846BARCCeImYVc0q+q1x4RVqBRBEuZBVbR3gnhIHDCyMFAFQGq0AAO1rX2WAip0HVEaeAASgr4ACdSog5WAAcwA7gBI2XeTt8nf5OwKdlQBgp2hToWAPAAAAA4koKkGV8ABwp2b9yBAGIAIEAAABBeAAh4AwZXwABBlSgAcwAu4AnADwAGoVSgAQDsWrKbsjuAARHCSAXYVM3KdB06Dqi9BcAHQdu4Bsp13gAcwECAPQdhqAgQB3gB0HXvQIEAnUqP+Vtco7Mq+ysCAAwAa+X+TsyQCEAeAAN6AYMDTssA7NUAEkAYBBX2U+gHGnRcASadoNAcp2CrF3APNOucAbXLj4CvsoAAJIAADlMp3LqAuACDKhqdAAB5MGVpRZ4AAdcDQACEAPAAeAB4ABgypZuM9Otrl63wVp00ADWnUIADadkWAtp36wN2nYtOoQAZgzRp1I2H7ABcATqV8ABIWT8AEBnZskYGdbXLDjjfTuoAL9O+fVMM7Np1v8ARnf8OvadJIBXkDgzpCAEQACadMM6QsAzTqgiDtOnGdIM6WABTetGnWjO5QVGM6AZ1YzopnQtOtrl90BaZ3EzqmnWTOgSAzM7cZ1CADQ1ezO9adDM64Z1MzsRnbVO5Gd8nLWYjmAA5naTO2adPM6qZ0gAAdEK+y5EQEyB+wDUKq1Zc1O6+V/AAdB0sFjBlROABWAYMqwZW7gGGnctO+Tlu4AlBWoaq2kCDKhkAxhAUh3NTqunVbOwCAlZZhp0HTvk5WNO6Wd4EAuZ1zTspncNOsGdps7zZ0XCG4AFbOgEsts6hAA6DvtnZKWWgATs6SQAqgIFnX9OoWd8M65Z3DTvxnfJylIdZs73KgXTuunbdOmQA8ABaABoAFoAM9O16d707PA1LTs8na7Oumd/07hZ3bTtFnUIASGVKM7y53xzpFnd7OpadI07XZ35AEhnUIAaGdsM6E53VzpYAFWm19l0EApZ2Czq7nY3OlmdS06vp3ycpBlQAADSiNA5WTqV8U6a1WdSoundPOhysbXKUS1KzvKwO3Ora1Dc6q51NzprncnOmblSHwiADUKouABOAVDVgqxupUDTu0gANO/adpc6ZuXCrE3nUeO7edQM7d50sAGT6rHO9Gdw86d52jzqEAA4c19lTIAH52dzsxnV/O3mdr86XZ0HzvrnZ/O5+d387X53jzvAXRzOoBdUC6QF0gAAsgGWy1Gd8C7GZ3ALvlnU8AVBdTIBB51xzs5nbLOnudIAAltWvso/5ToO6H4gIqAADUGc6w51ZzpznXnOgudb07dOAfTpJAJeAMtlbfAiZ1DzoQXdjO6BdxC6wF0gAAHneguyudiC6sF2wLoVnRAu7hdic7WF2+zrgXVwujBdIi7Pp2Eo3fnfTOyBdPC6kF0bQDLZVt4ABdT861F1YLv3nQrO/KA2i7VF1SLtBnXVO8RdQi7u50vzoEXSbOu+dz8By515TpSHYdOzKdLBY9oCUpmoAPAAAAA0mAAB4dQIAP+WvTr6AJZINAA2/AC53UKpmABAAHQdF2QIAAAypJANzAMtlSgqdB1f8p3tHgG3jV8S7El1ZUGSXW1yj8AZbLVp0WLpHnUgu0V+r7LFiBGLskXUQuvbAqC6JF3yLt0XW1yt0AZbLwZXkLraahdOsGV9S6YEDVLpkXSAAHJdci7hF1VLpJABQAcpduS7MF3VLv0XWguzpdli7eF1MgDLZbiIcudmU68p38AE6lSEAcGVKQ7cRCtTonAO+ywKAcS6El0r4uoABkuv6dGy6kl3rfBJAHIAbJdP07+l0KLoOXfwu3gA9c6Pg45ztLOCYulgAYCAJl2bJDVnRcAK6d3wBVwD5ACBACKyq6d1oAgQBRGgZAAAANUjndQAIEAIMqgV13gENFc0O19lRnpil2VLtuXSAAbYAqC6251Qzp0XbCumaAfS6Rl15LvlnUkAI5dwy78F0lLqsXehANFduK6YV1ELsFQAiu6FdXS6UV1tLpxXR/OvFdvC6elzKLornaMupBdREBsV0VLopXUQuwKQhK6aV3ErqsXUbAVldJy7ul18zrtAAiu/IAly6X5DXLsPALCulHAXK6VF20rqQXbmITRdZAAxV1gQGuXRA/Dld7pM650CrqlXX6619lnUqQZWti0pTLQAeKdMnaoZ36rsyQIau41d+y6+Z00zolnUqu4mdVy7MYCCrupnQ5m19lSgqbshEABhndQANAAWEALgBBXyi9PlAVmdtiFXV3urs9Xd6u+tV01BXgAMgEDXWIut1dRAAPV2gQDDXRcACNd/AAo121Tv5nT6OkNdCa7IYAXADBlcQAahVYAA+gB2spynd6usgAr06qQAFzr+XXay14dlQAD5xprqUXRmuuNdoa7IsA5rrzXQWuqJdHgBi10Azph1bGACtdVa6gOw1TutXeLOokdma6vV3gQBbXUfOttdRa7R13TTu7XeMAXtdXgB+12Brv0XSkOnQdEMqU12NTs6nZ1Kq6dV07dwBRrqEACuutddQIAN116Dq3XTuu1NdfM7P425csA+c8AeAAeAAUABRLpdHW+y69drM6pC2vssmXRNOhxdCwBKgDwAGqIGgALsQL66bF0gAHinVbOkGVSgq06C/LuoVQnMHqd1ABjp3NTr0HX5OnQdW2haACZTvinXrOzCAfk7OpU6DpfXW0u4DdwK6wN2BAAg3VBuh8AsG7Q53wbviXUhulDdaG78gAYbqw3YWy8tlBDTUi0kjtIndfKmidBo7gJ2WjqUFbSOp0dSgqGR0AZmUFcyOglMrI62x0cjtqFVyOwTdCRqagDPwAdHYKO5jd/drRR2sjvFHSiiSUdJI6RN3Aup8GW6Oz2VWL15R0oTpPAG6OjUdIm6iYAqjt5zGSOzZVWMrKR1P2oM7ZSOk0dlE6ax3syvQIGqO60dao67R0X9uDHbUK3wI3G60i2ujtc3e6OuGYno6SR35jt9HSSOjjd/yIgx0+jtDHWmamkdn46ox0DjtjHVJK+MdRm7gt3Jjui3SWOtMdkm6lN28epPHcWO2zdqgrvgDhjs9lesmVMdo/qQSwNjrrHdeO2zdjY6Isw9jrbHReOlLdaYatgCHjpUFRqO/sdtW7WdVMgAa3U+qrnAh46Jx3SKqnHTOO/kd847cjRdbrDNauOncd6Y6TmCbjpPHZhOmbl3UqwzV7jp3HQeOtcdT9rTx07jvPHV1uoh1PAAyt0zctvHdIqqbdIABHx2qgAQna+O58dn46bN0zctM1cBOzbd4Br/x3jbsAnY5KkCdgE6wJ3vjognVlus7d0E7kt01jr1LTROmrdNY70J2qgF23cROiiMSo7yJ1FZAiJIbyhjdwKq6x0cECgnfRO8YwUE6UJ26tGjHdhOgidTo78J1+EkYnXBO2idA1aaJ0vbtFZcxO5rdNY62J00TsvOPxOridN26qJ28TsYnSI1ISdnLKICBVTvgAE8O4QA44BOWVRDo8DfAANcAi7KQOy3ZHRAGuAQ1AYIAHoBAAA"))
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* Utility functions */
|
|
|
|
var storagePrefix = 'KiCad_HTML_BOM__' + pcbdata.metadata.title + '__' +
|
|
pcbdata.metadata.revision + '__#';
|
|
var storage;
|
|
|
|
function initStorage(key) {
|
|
try {
|
|
window.localStorage.getItem("blank");
|
|
storage = window.localStorage;
|
|
} catch (e) {
|
|
// localStorage not available
|
|
}
|
|
if (!storage) {
|
|
try {
|
|
window.sessionStorage.getItem("blank");
|
|
storage = window.sessionStorage;
|
|
} catch (e) {
|
|
// sessionStorage also not available
|
|
}
|
|
}
|
|
}
|
|
|
|
function readStorage(key) {
|
|
if (storage) {
|
|
return storage.getItem(storagePrefix + key);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
function writeStorage(key, value) {
|
|
if (storage) {
|
|
storage.setItem(storagePrefix + key, value);
|
|
}
|
|
}
|
|
|
|
function fancyDblClickHandler(el, onsingle, ondouble) {
|
|
return function() {
|
|
if (el.getAttribute("data-dblclick") == null) {
|
|
el.setAttribute("data-dblclick", 1);
|
|
setTimeout(function() {
|
|
if (el.getAttribute("data-dblclick") == 1) {
|
|
onsingle();
|
|
}
|
|
el.removeAttribute("data-dblclick");
|
|
}, 200);
|
|
} else {
|
|
el.removeAttribute("data-dblclick");
|
|
ondouble();
|
|
}
|
|
}
|
|
}
|
|
|
|
function smoothScrollToRow(rowid) {
|
|
document.getElementById(rowid).scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "center",
|
|
inline: "nearest"
|
|
});
|
|
}
|
|
|
|
function focusInputField(input) {
|
|
input.scrollIntoView(false);
|
|
input.focus();
|
|
input.select();
|
|
}
|
|
|
|
function saveBomTable(output) {
|
|
var text = '';
|
|
for (var node of bomhead.childNodes[0].childNodes) {
|
|
if (node.firstChild) {
|
|
text += (output == 'csv' ? `"${node.firstChild.nodeValue}"` : node.firstChild.nodeValue);
|
|
}
|
|
if (node != bomhead.childNodes[0].lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
for (var row of bombody.childNodes) {
|
|
for (var cell of row.childNodes) {
|
|
let val = '';
|
|
for (var node of cell.childNodes) {
|
|
if (node.nodeName == "INPUT") {
|
|
if (node.checked) {
|
|
val += '✓';
|
|
}
|
|
} else if ((node.nodeName == "MARK") || (node.nodeName == "A")) {
|
|
val += node.firstChild.nodeValue;
|
|
} else {
|
|
val += node.nodeValue;
|
|
}
|
|
}
|
|
if (output == 'csv') {
|
|
val = val.replace(/\"/g, '\"\"'); // pair of double-quote characters
|
|
if (isNumeric(val)) {
|
|
val = +val; // use number
|
|
} else {
|
|
val = `"${val}"`; // enclosed within double-quote
|
|
}
|
|
}
|
|
text += val;
|
|
if (cell != row.lastChild) {
|
|
text += (output == 'csv' ? ',' : '\t');
|
|
}
|
|
}
|
|
text += '\n';
|
|
}
|
|
|
|
if (output != 'clipboard') {
|
|
// To file: csv or txt
|
|
var blob = new Blob([text], {
|
|
type: `text/${output}`
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.${output}`, blob);
|
|
} else {
|
|
// To clipboard
|
|
var textArea = document.createElement("textarea");
|
|
textArea.classList.add('clipboard-temp');
|
|
textArea.value = text;
|
|
|
|
document.body.appendChild(textArea);
|
|
textArea.focus();
|
|
textArea.select();
|
|
|
|
try {
|
|
if (document.execCommand('copy')) {
|
|
console.log('Bom copied to clipboard.');
|
|
}
|
|
} catch (err) {
|
|
console.log('Can not copy to clipboard.');
|
|
}
|
|
|
|
document.body.removeChild(textArea);
|
|
}
|
|
}
|
|
|
|
function isNumeric(str) {
|
|
/* https://stackoverflow.com/a/175787 */
|
|
return (typeof str != "string" ? false : !isNaN(str) && !isNaN(parseFloat(str)));
|
|
}
|
|
|
|
function removeGutterNode(node) {
|
|
for (var i = 0; i < node.childNodes.length; i++) {
|
|
if (node.childNodes[i].classList &&
|
|
node.childNodes[i].classList.contains("gutter")) {
|
|
node.removeChild(node.childNodes[i]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function cleanGutters() {
|
|
removeGutterNode(document.getElementById("bot"));
|
|
removeGutterNode(document.getElementById("canvasdiv"));
|
|
}
|
|
|
|
var units = {
|
|
prefixes: {
|
|
giga: ["G", "g", "giga", "Giga", "GIGA"],
|
|
mega: ["M", "mega", "Mega", "MEGA"],
|
|
kilo: ["K", "k", "kilo", "Kilo", "KILO"],
|
|
milli: ["m", "milli", "Milli", "MILLI"],
|
|
micro: ["U", "u", "micro", "Micro", "MICRO", "μ", "µ"], // different utf8 μ
|
|
nano: ["N", "n", "nano", "Nano", "NANO"],
|
|
pico: ["P", "p", "pico", "Pico", "PICO"],
|
|
},
|
|
unitsShort: ["R", "r", "Ω", "F", "f", "H", "h"],
|
|
unitsLong: [
|
|
"OHM", "Ohm", "ohm", "ohms",
|
|
"FARAD", "Farad", "farad",
|
|
"HENRY", "Henry", "henry"
|
|
],
|
|
getMultiplier: function(s) {
|
|
if (this.prefixes.giga.includes(s)) return 1e9;
|
|
if (this.prefixes.mega.includes(s)) return 1e6;
|
|
if (this.prefixes.kilo.includes(s)) return 1e3;
|
|
if (this.prefixes.milli.includes(s)) return 1e-3;
|
|
if (this.prefixes.micro.includes(s)) return 1e-6;
|
|
if (this.prefixes.nano.includes(s)) return 1e-9;
|
|
if (this.prefixes.pico.includes(s)) return 1e-12;
|
|
return 1;
|
|
},
|
|
valueRegex: null,
|
|
}
|
|
|
|
function initUtils() {
|
|
var allPrefixes = units.prefixes.giga
|
|
.concat(units.prefixes.mega)
|
|
.concat(units.prefixes.kilo)
|
|
.concat(units.prefixes.milli)
|
|
.concat(units.prefixes.micro)
|
|
.concat(units.prefixes.nano)
|
|
.concat(units.prefixes.pico);
|
|
var allUnits = units.unitsShort.concat(units.unitsLong);
|
|
units.valueRegex = new RegExp("^([0-9\.]+)" +
|
|
"\\s*(" + allPrefixes.join("|") + ")?" +
|
|
"(" + allUnits.join("|") + ")?" +
|
|
"(\\b.*)?$", "");
|
|
units.valueAltRegex = new RegExp("^([0-9]*)" +
|
|
"(" + units.unitsShort.join("|") + ")?" +
|
|
"([GgMmKkUuNnPp])?" +
|
|
"([0-9]*)" +
|
|
"(\\b.*)?$", "");
|
|
if (config.fields.includes("Value")) {
|
|
var index = config.fields.indexOf("Value");
|
|
pcbdata.bom["parsedValues"] = {};
|
|
for (var id in pcbdata.bom.fields) {
|
|
pcbdata.bom.parsedValues[id] = parseValue(pcbdata.bom.fields[id][index])
|
|
}
|
|
}
|
|
}
|
|
|
|
function parseValue(val, ref) {
|
|
var inferUnit = (unit, ref) => {
|
|
if (unit) {
|
|
unit = unit.toLowerCase();
|
|
if (unit == 'Ω' || unit == "ohm" || unit == "ohms") {
|
|
unit = 'r';
|
|
}
|
|
unit = unit[0];
|
|
} else {
|
|
ref = /^([a-z]+)\d+$/i.exec(ref);
|
|
if (ref) {
|
|
ref = ref[1].toLowerCase();
|
|
if (ref == "c") unit = 'f';
|
|
else if (ref == "l") unit = 'h';
|
|
else if (ref == "r" || ref == "rv") unit = 'r';
|
|
else unit = null;
|
|
}
|
|
}
|
|
return unit;
|
|
};
|
|
val = val.replace(/,/g, "");
|
|
var match = units.valueRegex.exec(val);
|
|
var unit;
|
|
if (match) {
|
|
val = parseFloat(match[1]);
|
|
if (match[2]) {
|
|
val = val * units.getMultiplier(match[2]);
|
|
}
|
|
unit = inferUnit(match[3], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[4],
|
|
}
|
|
}
|
|
match = units.valueAltRegex.exec(val);
|
|
if (match && (match[1] || match[4])) {
|
|
val = parseFloat(match[1] + "." + match[4]);
|
|
if (match[3]) {
|
|
val = val * units.getMultiplier(match[3]);
|
|
}
|
|
unit = inferUnit(match[2], ref);
|
|
if (!unit) return null;
|
|
else return {
|
|
val: val,
|
|
unit: unit,
|
|
extra: match[5],
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function valueCompare(a, b, stra, strb) {
|
|
if (a === null && b === null) {
|
|
// Failed to parse both values, compare them as strings.
|
|
if (stra != strb) return stra > strb ? 1 : -1;
|
|
else return 0;
|
|
} else if (a === null) {
|
|
return 1;
|
|
} else if (b === null) {
|
|
return -1;
|
|
} else {
|
|
if (a.unit != b.unit) return a.unit > b.unit ? 1 : -1;
|
|
else if (a.val != b.val) return a.val > b.val ? 1 : -1;
|
|
else if (a.extra != b.extra) return a.extra > b.extra ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
|
|
function validateSaveImgDimension(element) {
|
|
var valid = false;
|
|
var intValue = 0;
|
|
if (/^[1-9]\d*$/.test(element.value)) {
|
|
intValue = parseInt(element.value);
|
|
if (intValue <= 16000) {
|
|
valid = true;
|
|
}
|
|
}
|
|
if (valid) {
|
|
element.classList.remove("invalid");
|
|
} else {
|
|
element.classList.add("invalid");
|
|
}
|
|
return intValue;
|
|
}
|
|
|
|
function saveImage(layer) {
|
|
var width = validateSaveImgDimension(document.getElementById("render-save-width"));
|
|
var height = validateSaveImgDimension(document.getElementById("render-save-height"));
|
|
var bgcolor = null;
|
|
if (!document.getElementById("render-save-transparent").checked) {
|
|
var style = getComputedStyle(topmostdiv);
|
|
bgcolor = style.getPropertyValue("background-color");
|
|
}
|
|
if (!width || !height) return;
|
|
|
|
// Prepare image
|
|
var canvas = document.createElement("canvas");
|
|
var layerdict = {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
bg: canvas,
|
|
fab: canvas,
|
|
silk: canvas,
|
|
highlight: canvas,
|
|
layer: layer,
|
|
}
|
|
// Do the rendering
|
|
recalcLayerScale(layerdict, width, height);
|
|
prepareLayer(layerdict);
|
|
clearCanvas(canvas, bgcolor);
|
|
drawBackground(layerdict, false);
|
|
drawHighlightsOnLayer(layerdict, false);
|
|
|
|
// Save image
|
|
var imgdata = canvas.toDataURL("image/png");
|
|
|
|
var filename = pcbdata.metadata.title;
|
|
if (pcbdata.metadata.revision) {
|
|
filename += `.${pcbdata.metadata.revision}`;
|
|
}
|
|
filename += `.${layer}.png`;
|
|
saveFile(filename, dataURLtoBlob(imgdata));
|
|
}
|
|
|
|
function saveSettings() {
|
|
var data = {
|
|
type: "InteractiveHtmlBom settings",
|
|
version: 1,
|
|
pcbmetadata: pcbdata.metadata,
|
|
settings: settings,
|
|
}
|
|
var blob = new Blob([JSON.stringify(data, null, 4)], {
|
|
type: "application/json"
|
|
});
|
|
saveFile(`${pcbdata.metadata.title}.settings.json`, blob);
|
|
}
|
|
|
|
function loadSettings() {
|
|
var input = document.createElement("input");
|
|
input.type = "file";
|
|
input.accept = ".settings.json";
|
|
input.onchange = function(e) {
|
|
var file = e.target.files[0];
|
|
var reader = new FileReader();
|
|
reader.onload = readerEvent => {
|
|
var content = readerEvent.target.result;
|
|
var newSettings;
|
|
try {
|
|
newSettings = JSON.parse(content);
|
|
} catch (e) {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
if (newSettings.type != "InteractiveHtmlBom settings") {
|
|
alert("Selected file is not InteractiveHtmlBom settings file.");
|
|
return;
|
|
}
|
|
var metadataMatches = newSettings.hasOwnProperty("pcbmetadata");
|
|
if (metadataMatches) {
|
|
for (var k in pcbdata.metadata) {
|
|
if (!newSettings.pcbmetadata.hasOwnProperty(k) || newSettings.pcbmetadata[k] != pcbdata.metadata[k]) {
|
|
metadataMatches = false;
|
|
}
|
|
}
|
|
}
|
|
if (!metadataMatches) {
|
|
var currentMetadata = JSON.stringify(pcbdata.metadata, null, 4);
|
|
var fileMetadata = JSON.stringify(newSettings.pcbmetadata, null, 4);
|
|
if (!confirm(
|
|
`Settins file metadata does not match current metadata.\n\n` +
|
|
`Page metadata:\n${currentMetadata}\n\n` +
|
|
`Settings file metadata:\n${fileMetadata}\n\n` +
|
|
`Press OK if you would like to import settings anyway.`)) {
|
|
return;
|
|
}
|
|
}
|
|
overwriteSettings(newSettings.settings);
|
|
}
|
|
reader.readAsText(file, 'UTF-8');
|
|
}
|
|
input.click();
|
|
}
|
|
|
|
function overwriteSettings(newSettings) {
|
|
initDone = false;
|
|
Object.assign(settings, newSettings);
|
|
writeStorage("bomlayout", settings.bomlayout);
|
|
writeStorage("bommode", settings.bommode);
|
|
writeStorage("canvaslayout", settings.canvaslayout);
|
|
writeStorage("bomCheckboxes", settings.checkboxes.join(","));
|
|
document.getElementById("bomCheckboxes").value = settings.checkboxes.join(",");
|
|
for (var checkbox of settings.checkboxes) {
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
}
|
|
writeStorage("markWhenChecked", settings.markWhenChecked);
|
|
padsVisible(settings.renderPads);
|
|
document.getElementById("padsCheckbox").checked = settings.renderPads;
|
|
fabricationVisible(settings.renderFabrication);
|
|
document.getElementById("fabricationCheckbox").checked = settings.renderFabrication;
|
|
silkscreenVisible(settings.renderSilkscreen);
|
|
document.getElementById("silkscreenCheckbox").checked = settings.renderSilkscreen;
|
|
referencesVisible(settings.renderReferences);
|
|
document.getElementById("referencesCheckbox").checked = settings.renderReferences;
|
|
valuesVisible(settings.renderValues);
|
|
document.getElementById("valuesCheckbox").checked = settings.renderValues;
|
|
tracksVisible(settings.renderTracks);
|
|
document.getElementById("tracksCheckbox").checked = settings.renderTracks;
|
|
zonesVisible(settings.renderZones);
|
|
document.getElementById("zonesCheckbox").checked = settings.renderZones;
|
|
dnpOutline(settings.renderDnpOutline);
|
|
document.getElementById("dnpOutlineCheckbox").checked = settings.renderDnpOutline;
|
|
setRedrawOnDrag(settings.redrawOnDrag);
|
|
document.getElementById("dragCheckbox").checked = settings.redrawOnDrag;
|
|
setDarkMode(settings.darkMode);
|
|
document.getElementById("darkmodeCheckbox").checked = settings.darkMode;
|
|
setHighlightPin1(settings.highlightpin1);
|
|
document.getElementById("highlightpin1Checkbox").checked = settings.highlightpin1;
|
|
writeStorage("boardRotation", settings.boardRotation);
|
|
document.getElementById("boardRotation").value = settings.boardRotation / 5;
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
setOffsetBackRotation(settings.offsetBackRotation);
|
|
document.getElementById("offsetBackRotationCheckbox").checked = settings.offsetBackRotation;
|
|
initDone = true;
|
|
prepCheckboxes();
|
|
changeBomLayout(settings.bomlayout);
|
|
}
|
|
|
|
function saveFile(filename, blob) {
|
|
var link = document.createElement("a");
|
|
var objurl = URL.createObjectURL(blob);
|
|
link.download = filename;
|
|
link.href = objurl;
|
|
link.click();
|
|
}
|
|
|
|
function dataURLtoBlob(dataurl) {
|
|
var arr = dataurl.split(','),
|
|
mime = arr[0].match(/:(.*?);/)[1],
|
|
bstr = atob(arr[1]),
|
|
n = bstr.length,
|
|
u8arr = new Uint8Array(n);
|
|
while (n--) {
|
|
u8arr[n] = bstr.charCodeAt(n);
|
|
}
|
|
return new Blob([u8arr], {
|
|
type: mime
|
|
});
|
|
}
|
|
|
|
var settings = {
|
|
canvaslayout: "default",
|
|
bomlayout: "default",
|
|
bommode: "grouped",
|
|
checkboxes: [],
|
|
checkboxStoredRefs: {},
|
|
darkMode: false,
|
|
highlightpin1: false,
|
|
redrawOnDrag: true,
|
|
boardRotation: 0,
|
|
offsetBackRotation: false,
|
|
renderPads: true,
|
|
renderReferences: true,
|
|
renderValues: true,
|
|
renderSilkscreen: true,
|
|
renderFabrication: true,
|
|
renderDnpOutline: false,
|
|
renderTracks: true,
|
|
renderZones: true,
|
|
columnOrder: [],
|
|
hiddenColumns: []
|
|
}
|
|
|
|
function initDefaults() {
|
|
settings.bomlayout = readStorage("bomlayout");
|
|
if (settings.bomlayout === null) {
|
|
settings.bomlayout = config.bom_view;
|
|
}
|
|
if (!['bom-only', 'left-right', 'top-bottom'].includes(settings.bomlayout)) {
|
|
settings.bomlayout = config.bom_view;
|
|
}
|
|
settings.bommode = readStorage("bommode");
|
|
if (settings.bommode === null) {
|
|
settings.bommode = "grouped";
|
|
}
|
|
if (!["grouped", "ungrouped", "netlist"].includes(settings.bommode)) {
|
|
settings.bommode = "grouped";
|
|
}
|
|
settings.canvaslayout = readStorage("canvaslayout");
|
|
if (settings.canvaslayout === null) {
|
|
settings.canvaslayout = config.layer_view;
|
|
}
|
|
var bomCheckboxes = readStorage("bomCheckboxes");
|
|
if (bomCheckboxes === null) {
|
|
bomCheckboxes = config.checkboxes;
|
|
}
|
|
settings.checkboxes = bomCheckboxes.split(",").filter((e) => e);
|
|
document.getElementById("bomCheckboxes").value = bomCheckboxes;
|
|
|
|
settings.markWhenChecked = readStorage("markWhenChecked") || "";
|
|
populateMarkWhenCheckedOptions();
|
|
|
|
function initBooleanSetting(storageString, def, elementId, func) {
|
|
var b = readStorage(storageString);
|
|
if (b === null) {
|
|
b = def;
|
|
} else {
|
|
b = (b == "true");
|
|
}
|
|
document.getElementById(elementId).checked = b;
|
|
func(b);
|
|
}
|
|
|
|
initBooleanSetting("padsVisible", config.show_pads, "padsCheckbox", padsVisible);
|
|
initBooleanSetting("fabricationVisible", config.show_fabrication, "fabricationCheckbox", fabricationVisible);
|
|
initBooleanSetting("silkscreenVisible", config.show_silkscreen, "silkscreenCheckbox", silkscreenVisible);
|
|
initBooleanSetting("referencesVisible", true, "referencesCheckbox", referencesVisible);
|
|
initBooleanSetting("valuesVisible", true, "valuesCheckbox", valuesVisible);
|
|
if ("tracks" in pcbdata) {
|
|
initBooleanSetting("tracksVisible", true, "tracksCheckbox", tracksVisible);
|
|
initBooleanSetting("zonesVisible", true, "zonesCheckbox", zonesVisible);
|
|
} else {
|
|
document.getElementById("tracksAndZonesCheckboxes").style.display = "none";
|
|
tracksVisible(false);
|
|
zonesVisible(false);
|
|
}
|
|
initBooleanSetting("dnpOutline", false, "dnpOutlineCheckbox", dnpOutline);
|
|
initBooleanSetting("redrawOnDrag", config.redraw_on_drag, "dragCheckbox", setRedrawOnDrag);
|
|
initBooleanSetting("darkmode", config.dark_mode, "darkmodeCheckbox", setDarkMode);
|
|
initBooleanSetting("highlightpin1", config.highlight_pin1, "highlightpin1Checkbox", setHighlightPin1);
|
|
|
|
var fields = ["checkboxes", "References"].concat(config.fields).concat(["Quantity"]);
|
|
var hcols = JSON.parse(readStorage("hiddenColumns"));
|
|
if (hcols === null) {
|
|
hcols = [];
|
|
}
|
|
settings.hiddenColumns = hcols.filter(e => fields.includes(e));
|
|
|
|
var cord = JSON.parse(readStorage("columnOrder"));
|
|
if (cord === null) {
|
|
cord = fields;
|
|
} else {
|
|
cord = cord.filter(e => fields.includes(e));
|
|
if (cord.length != fields.length)
|
|
cord = fields;
|
|
}
|
|
settings.columnOrder = cord;
|
|
|
|
settings.boardRotation = readStorage("boardRotation");
|
|
if (settings.boardRotation === null) {
|
|
settings.boardRotation = config.board_rotation * 5;
|
|
} else {
|
|
settings.boardRotation = parseInt(settings.boardRotation);
|
|
}
|
|
document.getElementById("boardRotation").value = settings.boardRotation / 5;
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
initBooleanSetting("offsetBackRotation", config.offset_back_rotation, "offsetBackRotationCheckbox", setOffsetBackRotation);
|
|
}
|
|
|
|
// Helper classes for user js callbacks.
|
|
|
|
const IBOM_EVENT_TYPES = {
|
|
ALL: "all",
|
|
HIGHLIGHT_EVENT: "highlightEvent",
|
|
CHECKBOX_CHANGE_EVENT: "checkboxChangeEvent",
|
|
BOM_BODY_CHANGE_EVENT: "bomBodyChangeEvent",
|
|
}
|
|
|
|
const EventHandler = {
|
|
callbacks: {},
|
|
init: function() {
|
|
for (eventType of Object.values(IBOM_EVENT_TYPES))
|
|
this.callbacks[eventType] = [];
|
|
},
|
|
registerCallback: function(eventType, callback) {
|
|
this.callbacks[eventType].push(callback);
|
|
},
|
|
emitEvent: function(eventType, eventArgs) {
|
|
event = {
|
|
eventType: eventType,
|
|
args: eventArgs,
|
|
}
|
|
var callback;
|
|
for (callback of this.callbacks[eventType])
|
|
callback(event);
|
|
for (callback of this.callbacks[IBOM_EVENT_TYPES.ALL])
|
|
callback(event);
|
|
}
|
|
}
|
|
EventHandler.init();
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* PCB rendering code */
|
|
|
|
var emptyContext2d = document.createElement("canvas").getContext("2d");
|
|
|
|
function deg2rad(deg) {
|
|
return deg * Math.PI / 180;
|
|
}
|
|
|
|
function calcFontPoint(linepoint, text, offsetx, offsety, tilt) {
|
|
var point = [
|
|
linepoint[0] * text.width + offsetx,
|
|
linepoint[1] * text.height + offsety
|
|
];
|
|
// This approximates pcbnew behavior with how text tilts depending on horizontal justification
|
|
point[0] -= (linepoint[1] + 0.5 * (1 + text.justify[0])) * text.height * tilt;
|
|
return point;
|
|
}
|
|
|
|
function drawText(ctx, text, color) {
|
|
if ("ref" in text && !settings.renderReferences) return;
|
|
if ("val" in text && !settings.renderValues) return;
|
|
ctx.save();
|
|
ctx.fillStyle = color;
|
|
ctx.strokeStyle = color;
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
ctx.lineWidth = text.thickness;
|
|
if ("svgpath" in text) {
|
|
ctx.stroke(new Path2D(text.svgpath));
|
|
ctx.restore();
|
|
return;
|
|
}
|
|
if ("polygons" in text) {
|
|
ctx.fill(getPolygonsPath(text));
|
|
ctx.restore();
|
|
return;
|
|
}
|
|
ctx.translate(...text.pos);
|
|
ctx.translate(text.thickness * 0.5, 0);
|
|
var angle = -text.angle;
|
|
if (text.attr.includes("mirrored")) {
|
|
ctx.scale(-1, 1);
|
|
angle = -angle;
|
|
}
|
|
var tilt = 0;
|
|
if (text.attr.includes("italic")) {
|
|
tilt = 0.125;
|
|
}
|
|
var interline = text.height * 1.5 + text.thickness;
|
|
var txt = text.text.split("\n");
|
|
// KiCad ignores last empty line.
|
|
if (txt[txt.length - 1] == '') txt.pop();
|
|
ctx.rotate(deg2rad(angle));
|
|
var offsety = (1 - text.justify[1]) / 2 * text.height; // One line offset
|
|
offsety -= (txt.length - 1) * (text.justify[1] + 1) / 2 * interline; // Multiline offset
|
|
for (var i in txt) {
|
|
var lineWidth = text.thickness + interline / 2 * tilt;
|
|
for (var j = 0; j < txt[i].length; j++) {
|
|
if (txt[i][j] == '\t') {
|
|
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
|
|
lineWidth += fourSpaces - lineWidth % fourSpaces;
|
|
} else {
|
|
if (txt[i][j] == '~') {
|
|
j++;
|
|
if (j == txt[i].length)
|
|
break;
|
|
}
|
|
lineWidth += pcbdata.font_data[txt[i][j]].w * text.width;
|
|
}
|
|
}
|
|
var offsetx = -lineWidth * (text.justify[0] + 1) / 2;
|
|
var inOverbar = false;
|
|
for (var j = 0; j < txt[i].length; j++) {
|
|
if (config.kicad_text_formatting) {
|
|
if (txt[i][j] == '\t') {
|
|
var fourSpaces = 4 * pcbdata.font_data[' '].w * text.width;
|
|
offsetx += fourSpaces - offsetx % fourSpaces;
|
|
continue;
|
|
} else if (txt[i][j] == '~') {
|
|
j++;
|
|
if (j == txt[i].length)
|
|
break;
|
|
if (txt[i][j] != '~') {
|
|
inOverbar = !inOverbar;
|
|
}
|
|
}
|
|
}
|
|
var glyph = pcbdata.font_data[txt[i][j]];
|
|
if (inOverbar) {
|
|
var overbarStart = [offsetx, -text.height * 1.4 + offsety];
|
|
var overbarEnd = [offsetx + text.width * glyph.w, overbarStart[1]];
|
|
|
|
if (!lastHadOverbar) {
|
|
overbarStart[0] += text.height * 1.4 * tilt;
|
|
lastHadOverbar = true;
|
|
}
|
|
ctx.beginPath();
|
|
ctx.moveTo(...overbarStart);
|
|
ctx.lineTo(...overbarEnd);
|
|
ctx.stroke();
|
|
} else {
|
|
lastHadOverbar = false;
|
|
}
|
|
for (var line of glyph.l) {
|
|
ctx.beginPath();
|
|
ctx.moveTo(...calcFontPoint(line[0], text, offsetx, offsety, tilt));
|
|
for (var k = 1; k < line.length; k++) {
|
|
ctx.lineTo(...calcFontPoint(line[k], text, offsetx, offsety, tilt));
|
|
}
|
|
ctx.stroke();
|
|
}
|
|
offsetx += glyph.w * text.width;
|
|
}
|
|
offsety += interline;
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawedge(ctx, scalefactor, edge, color) {
|
|
ctx.strokeStyle = color;
|
|
ctx.fillStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, edge.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
if ("svgpath" in edge) {
|
|
ctx.stroke(new Path2D(edge.svgpath));
|
|
} else {
|
|
ctx.beginPath();
|
|
if (edge.type == "segment") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(...edge.end);
|
|
}
|
|
if (edge.type == "rect") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.lineTo(edge.start[0], edge.end[1]);
|
|
ctx.lineTo(...edge.end);
|
|
ctx.lineTo(edge.end[0], edge.start[1]);
|
|
ctx.lineTo(...edge.start);
|
|
}
|
|
if (edge.type == "arc") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
deg2rad(edge.startangle),
|
|
deg2rad(edge.endangle));
|
|
}
|
|
if (edge.type == "circle") {
|
|
ctx.arc(
|
|
...edge.start,
|
|
edge.radius,
|
|
0, 2 * Math.PI);
|
|
ctx.closePath();
|
|
}
|
|
if (edge.type == "curve") {
|
|
ctx.moveTo(...edge.start);
|
|
ctx.bezierCurveTo(...edge.cpa, ...edge.cpb, ...edge.end);
|
|
}
|
|
if("filled" in edge && edge.filled)
|
|
ctx.fill();
|
|
else
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
|
|
function getChamferedRectPath(size, radius, chamfpos, chamfratio) {
|
|
// chamfpos is a bitmask, left = 1, right = 2, bottom left = 4, bottom right = 8
|
|
var path = new Path2D();
|
|
var width = size[0];
|
|
var height = size[1];
|
|
var x = width * -0.5;
|
|
var y = height * -0.5;
|
|
var chamfOffset = Math.min(width, height) * chamfratio;
|
|
path.moveTo(x, 0);
|
|
if (chamfpos & 4) {
|
|
path.lineTo(x, y + height - chamfOffset);
|
|
path.lineTo(x + chamfOffset, y + height);
|
|
path.lineTo(0, y + height);
|
|
} else {
|
|
path.arcTo(x, y + height, x + width, y + height, radius);
|
|
}
|
|
if (chamfpos & 8) {
|
|
path.lineTo(x + width - chamfOffset, y + height);
|
|
path.lineTo(x + width, y + height - chamfOffset);
|
|
path.lineTo(x + width, 0);
|
|
} else {
|
|
path.arcTo(x + width, y + height, x + width, y, radius);
|
|
}
|
|
if (chamfpos & 2) {
|
|
path.lineTo(x + width, y + chamfOffset);
|
|
path.lineTo(x + width - chamfOffset, y);
|
|
path.lineTo(0, y);
|
|
} else {
|
|
path.arcTo(x + width, y, x, y, radius);
|
|
}
|
|
if (chamfpos & 1) {
|
|
path.lineTo(x + chamfOffset, y);
|
|
path.lineTo(x, y + chamfOffset);
|
|
path.lineTo(x, 0);
|
|
} else {
|
|
path.arcTo(x, y, x, y + height, radius);
|
|
}
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getOblongPath(size) {
|
|
return getChamferedRectPath(size, Math.min(size[0], size[1]) / 2, 0, 0);
|
|
}
|
|
|
|
function getPolygonsPath(shape) {
|
|
if (shape.path2d) {
|
|
return shape.path2d;
|
|
}
|
|
if ("svgpath" in shape) {
|
|
shape.path2d = new Path2D(shape.svgpath);
|
|
} else {
|
|
var path = new Path2D();
|
|
for (var polygon of shape.polygons) {
|
|
path.moveTo(...polygon[0]);
|
|
for (var i = 1; i < polygon.length; i++) {
|
|
path.lineTo(...polygon[i]);
|
|
}
|
|
path.closePath();
|
|
}
|
|
shape.path2d = path;
|
|
}
|
|
return shape.path2d;
|
|
}
|
|
|
|
function drawPolygonShape(ctx, scalefactor, shape, color) {
|
|
ctx.save();
|
|
if (!("svgpath" in shape)) {
|
|
ctx.translate(...shape.pos);
|
|
ctx.rotate(deg2rad(-shape.angle));
|
|
}
|
|
if("filled" in shape && !shape.filled) {
|
|
ctx.strokeStyle = color;
|
|
ctx.lineWidth = Math.max(1 / scalefactor, shape.width);
|
|
ctx.lineCap = "round";
|
|
ctx.lineJoin = "round";
|
|
ctx.stroke(getPolygonsPath(shape));
|
|
} else {
|
|
ctx.fillStyle = color;
|
|
ctx.fill(getPolygonsPath(shape));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawDrawing(ctx, scalefactor, drawing, color) {
|
|
if (["segment", "arc", "circle", "curve", "rect"].includes(drawing.type)) {
|
|
drawedge(ctx, scalefactor, drawing, color);
|
|
} else if (drawing.type == "polygon") {
|
|
drawPolygonShape(ctx, scalefactor, drawing, color);
|
|
} else {
|
|
drawText(ctx, drawing, color);
|
|
}
|
|
}
|
|
|
|
function getCirclePath(radius) {
|
|
var path = new Path2D();
|
|
path.arc(0, 0, radius, 0, 2 * Math.PI);
|
|
path.closePath();
|
|
return path;
|
|
}
|
|
|
|
function getCachedPadPath(pad) {
|
|
if (!pad.path2d) {
|
|
// if path2d is not set, build one and cache it on pad object
|
|
if (pad.shape == "rect") {
|
|
pad.path2d = new Path2D();
|
|
pad.path2d.rect(...pad.size.map(c => -c * 0.5), ...pad.size);
|
|
} else if (pad.shape == "oval") {
|
|
pad.path2d = getOblongPath(pad.size);
|
|
} else if (pad.shape == "circle") {
|
|
pad.path2d = getCirclePath(pad.size[0] / 2);
|
|
} else if (pad.shape == "roundrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, 0, 0);
|
|
} else if (pad.shape == "chamfrect") {
|
|
pad.path2d = getChamferedRectPath(pad.size, pad.radius, pad.chamfpos, pad.chamfratio)
|
|
} else if (pad.shape == "custom") {
|
|
pad.path2d = getPolygonsPath(pad);
|
|
}
|
|
}
|
|
return pad.path2d;
|
|
}
|
|
|
|
function drawPad(ctx, pad, color, outline) {
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
if (pad.offset) {
|
|
ctx.translate(...pad.offset);
|
|
}
|
|
ctx.fillStyle = color;
|
|
ctx.strokeStyle = color;
|
|
var path = getCachedPadPath(pad);
|
|
if (outline) {
|
|
ctx.stroke(path);
|
|
} else {
|
|
ctx.fill(path);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawPadHole(ctx, pad, padHoleColor) {
|
|
if (pad.type != "th") return;
|
|
ctx.save();
|
|
ctx.translate(...pad.pos);
|
|
ctx.rotate(-deg2rad(pad.angle));
|
|
ctx.fillStyle = padHoleColor;
|
|
if (pad.drillshape == "oblong") {
|
|
ctx.fill(getOblongPath(pad.drillsize));
|
|
} else {
|
|
ctx.fill(getCirclePath(pad.drillsize[0] / 2));
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawFootprint(ctx, layer, scalefactor, footprint, colors, highlight, outline) {
|
|
if (highlight) {
|
|
// draw bounding box
|
|
if (footprint.layer == layer) {
|
|
ctx.save();
|
|
ctx.globalAlpha = 0.2;
|
|
ctx.translate(...footprint.bbox.pos);
|
|
ctx.rotate(deg2rad(-footprint.bbox.angle));
|
|
ctx.translate(...footprint.bbox.relpos);
|
|
ctx.fillStyle = colors.pad;
|
|
ctx.fillRect(0, 0, ...footprint.bbox.size);
|
|
ctx.globalAlpha = 1;
|
|
ctx.strokeStyle = colors.pad;
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
ctx.strokeRect(0, 0, ...footprint.bbox.size);
|
|
ctx.restore();
|
|
}
|
|
}
|
|
// draw drawings
|
|
for (var drawing of footprint.drawings) {
|
|
if (drawing.layer == layer) {
|
|
drawDrawing(ctx, scalefactor, drawing.drawing, colors.pad);
|
|
}
|
|
}
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
// draw pads
|
|
if (settings.renderPads) {
|
|
for (var pad of footprint.pads) {
|
|
if (pad.layers.includes(layer)) {
|
|
drawPad(ctx, pad, colors.pad, outline);
|
|
if (pad.pin1 && settings.highlightpin1) {
|
|
drawPad(ctx, pad, colors.outline, true);
|
|
}
|
|
}
|
|
}
|
|
for (var pad of footprint.pads) {
|
|
drawPadHole(ctx, pad, colors.padHole);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawEdgeCuts(canvas, scalefactor) {
|
|
var ctx = canvas.getContext("2d");
|
|
var edgecolor = getComputedStyle(topmostdiv).getPropertyValue('--pcb-edge-color');
|
|
for (var edge of pcbdata.edges) {
|
|
drawDrawing(ctx, scalefactor, edge, edgecolor);
|
|
}
|
|
}
|
|
|
|
function drawFootprints(canvas, layer, scalefactor, highlight) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.lineWidth = 3 / scalefactor;
|
|
var style = getComputedStyle(topmostdiv);
|
|
|
|
var colors = {
|
|
pad: style.getPropertyValue('--pad-color'),
|
|
padHole: style.getPropertyValue('--pad-hole-color'),
|
|
outline: style.getPropertyValue('--pin1-outline-color'),
|
|
}
|
|
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
var mod = pcbdata.footprints[i];
|
|
var outline = settings.renderDnpOutline && pcbdata.bom.skipped.includes(i);
|
|
var h = highlightedFootprints.includes(i);
|
|
var d = markedFootprints.has(i);
|
|
if (highlight) {
|
|
if(h && d) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight-both');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-both');
|
|
} else if (h) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight');
|
|
} else if (d) {
|
|
colors.pad = style.getPropertyValue('--pad-color-highlight-marked');
|
|
colors.outline = style.getPropertyValue('--pin1-outline-color-highlight-marked');
|
|
}
|
|
}
|
|
if( h || d || !highlight) {
|
|
drawFootprint(ctx, layer, scalefactor, mod, colors, highlight, outline);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawBgLayer(layername, canvas, layer, scalefactor, edgeColor, polygonColor, textColor) {
|
|
var ctx = canvas.getContext("2d");
|
|
for (var d of pcbdata.drawings[layername][layer]) {
|
|
if (["segment", "arc", "circle", "curve", "rect"].includes(d.type)) {
|
|
drawedge(ctx, scalefactor, d, edgeColor);
|
|
} else if (d.type == "polygon") {
|
|
drawPolygonShape(ctx, scalefactor, d, polygonColor);
|
|
} else {
|
|
drawText(ctx, d, textColor);
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawTracks(canvas, layer, color, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.strokeStyle = color;
|
|
ctx.lineCap = "round";
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if (highlight && highlightedNet != track.net) continue;
|
|
ctx.lineWidth = track.width;
|
|
ctx.beginPath();
|
|
if ('radius' in track) {
|
|
ctx.arc(
|
|
...track.center,
|
|
track.radius,
|
|
deg2rad(track.startangle),
|
|
deg2rad(track.endangle));
|
|
} else {
|
|
ctx.moveTo(...track.start);
|
|
ctx.lineTo(...track.end);
|
|
}
|
|
ctx.stroke();
|
|
}
|
|
}
|
|
|
|
function drawZones(canvas, layer, color, highlight) {
|
|
ctx = canvas.getContext("2d");
|
|
ctx.strokeStyle = color;
|
|
ctx.fillStyle = color;
|
|
ctx.lineJoin = "round";
|
|
for (var zone of pcbdata.zones[layer]) {
|
|
if (!zone.path2d) {
|
|
zone.path2d = getPolygonsPath(zone);
|
|
}
|
|
if (highlight && highlightedNet != zone.net) continue;
|
|
ctx.fill(zone.path2d, zone.fillrule || "nonzero");
|
|
if (zone.width > 0) {
|
|
ctx.lineWidth = zone.width;
|
|
ctx.stroke(zone.path2d);
|
|
}
|
|
}
|
|
}
|
|
|
|
function clearCanvas(canvas, color = null) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.save();
|
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
if (color) {
|
|
ctx.fillStyle = color;
|
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
} else {
|
|
if (!window.matchMedia("print").matches)
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
}
|
|
ctx.restore();
|
|
}
|
|
|
|
function drawNets(canvas, layer, highlight) {
|
|
var style = getComputedStyle(topmostdiv);
|
|
if (settings.renderTracks) {
|
|
var trackColor = style.getPropertyValue(highlight ? '--track-color-highlight' : '--track-color');
|
|
drawTracks(canvas, layer, trackColor, highlight);
|
|
}
|
|
if (settings.renderZones) {
|
|
var zoneColor = style.getPropertyValue(highlight ? '--zone-color-highlight' : '--zone-color');
|
|
drawZones(canvas, layer, zoneColor, highlight);
|
|
}
|
|
if (highlight && settings.renderPads) {
|
|
var padColor = style.getPropertyValue('--pad-color-highlight');
|
|
var padHoleColor = style.getPropertyValue('--pad-hole-color');
|
|
var ctx = canvas.getContext("2d");
|
|
for (var footprint of pcbdata.footprints) {
|
|
// draw pads
|
|
var padDrawn = false;
|
|
for (var pad of footprint.pads) {
|
|
if (highlightedNet != pad.net) continue;
|
|
if (pad.layers.includes(layer)) {
|
|
drawPad(ctx, pad, padColor, false);
|
|
padDrawn = true;
|
|
}
|
|
}
|
|
if (padDrawn) {
|
|
// redraw all pad holes because some pads may overlap
|
|
for (var pad of footprint.pads) {
|
|
drawPadHole(ctx, pad, padHoleColor);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function drawHighlightsOnLayer(canvasdict, clear = true) {
|
|
if (clear) {
|
|
clearCanvas(canvasdict.highlight);
|
|
}
|
|
if (markedFootprints.size > 0 || highlightedFootprints.length > 0) {
|
|
drawFootprints(canvasdict.highlight, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom, true);
|
|
}
|
|
if (highlightedNet !== null) {
|
|
drawNets(canvasdict.highlight, canvasdict.layer, true);
|
|
}
|
|
}
|
|
|
|
function drawHighlights() {
|
|
drawHighlightsOnLayer(allcanvas.front);
|
|
drawHighlightsOnLayer(allcanvas.back);
|
|
}
|
|
|
|
function drawBackground(canvasdict, clear = true) {
|
|
if (clear) {
|
|
clearCanvas(canvasdict.bg);
|
|
clearCanvas(canvasdict.fab);
|
|
clearCanvas(canvasdict.silk);
|
|
}
|
|
|
|
drawNets(canvasdict.bg, canvasdict.layer, false);
|
|
drawFootprints(canvasdict.bg, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom, false);
|
|
|
|
drawEdgeCuts(canvasdict.bg, canvasdict.transform.s * canvasdict.transform.zoom);
|
|
|
|
var style = getComputedStyle(topmostdiv);
|
|
var edgeColor = style.getPropertyValue('--silkscreen-edge-color');
|
|
var polygonColor = style.getPropertyValue('--silkscreen-polygon-color');
|
|
var textColor = style.getPropertyValue('--silkscreen-text-color');
|
|
if (settings.renderSilkscreen) {
|
|
drawBgLayer(
|
|
"silkscreen", canvasdict.silk, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom,
|
|
edgeColor, polygonColor, textColor);
|
|
}
|
|
edgeColor = style.getPropertyValue('--fabrication-edge-color');
|
|
polygonColor = style.getPropertyValue('--fabrication-polygon-color');
|
|
textColor = style.getPropertyValue('--fabrication-text-color');
|
|
if (settings.renderFabrication) {
|
|
drawBgLayer(
|
|
"fabrication", canvasdict.fab, canvasdict.layer,
|
|
canvasdict.transform.s * canvasdict.transform.zoom,
|
|
edgeColor, polygonColor, textColor);
|
|
}
|
|
}
|
|
|
|
function prepareCanvas(canvas, flip, transform) {
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
ctx.scale(transform.zoom, transform.zoom);
|
|
ctx.translate(transform.panx, transform.pany);
|
|
if (flip) {
|
|
ctx.scale(-1, 1);
|
|
}
|
|
ctx.translate(transform.x, transform.y);
|
|
ctx.rotate(deg2rad(settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
|
|
ctx.scale(transform.s, transform.s);
|
|
}
|
|
|
|
function prepareLayer(canvasdict) {
|
|
var flip = (canvasdict.layer === "B");
|
|
for (var c of ["bg", "fab", "silk", "highlight"]) {
|
|
prepareCanvas(canvasdict[c], flip, canvasdict.transform);
|
|
}
|
|
}
|
|
|
|
function rotateVector(v, angle) {
|
|
angle = deg2rad(angle);
|
|
return [
|
|
v[0] * Math.cos(angle) - v[1] * Math.sin(angle),
|
|
v[0] * Math.sin(angle) + v[1] * Math.cos(angle)
|
|
];
|
|
}
|
|
|
|
function applyRotation(bbox, flip) {
|
|
var corners = [
|
|
[bbox.minx, bbox.miny],
|
|
[bbox.minx, bbox.maxy],
|
|
[bbox.maxx, bbox.miny],
|
|
[bbox.maxx, bbox.maxy],
|
|
];
|
|
corners = corners.map((v) => rotateVector(v, settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0)));
|
|
return {
|
|
minx: corners.reduce((a, v) => Math.min(a, v[0]), Infinity),
|
|
miny: corners.reduce((a, v) => Math.min(a, v[1]), Infinity),
|
|
maxx: corners.reduce((a, v) => Math.max(a, v[0]), -Infinity),
|
|
maxy: corners.reduce((a, v) => Math.max(a, v[1]), -Infinity),
|
|
}
|
|
}
|
|
|
|
function recalcLayerScale(layerdict, width, height) {
|
|
var flip = (layerdict.layer === "B");
|
|
var bbox = applyRotation(pcbdata.edges_bbox, flip);
|
|
var scalefactor = 0.98 * Math.min(
|
|
width / (bbox.maxx - bbox.minx),
|
|
height / (bbox.maxy - bbox.miny)
|
|
);
|
|
if (scalefactor < 0.1) {
|
|
scalefactor = 1;
|
|
}
|
|
layerdict.transform.s = scalefactor;
|
|
if (flip) {
|
|
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor + width) * 0.5;
|
|
} else {
|
|
layerdict.transform.x = -((bbox.maxx + bbox.minx) * scalefactor - width) * 0.5;
|
|
}
|
|
layerdict.transform.y = -((bbox.maxy + bbox.miny) * scalefactor - height) * 0.5;
|
|
for (var c of ["bg", "fab", "silk", "highlight"]) {
|
|
canvas = layerdict[c];
|
|
canvas.width = width;
|
|
canvas.height = height;
|
|
canvas.style.width = (width / devicePixelRatio) + "px";
|
|
canvas.style.height = (height / devicePixelRatio) + "px";
|
|
}
|
|
}
|
|
|
|
function redrawCanvas(layerdict) {
|
|
prepareLayer(layerdict);
|
|
drawBackground(layerdict);
|
|
drawHighlightsOnLayer(layerdict);
|
|
}
|
|
|
|
function resizeCanvas(layerdict) {
|
|
var canvasdivid = {
|
|
"F": "frontcanvas",
|
|
"B": "backcanvas"
|
|
} [layerdict.layer];
|
|
var width = document.getElementById(canvasdivid).clientWidth * devicePixelRatio;
|
|
var height = document.getElementById(canvasdivid).clientHeight * devicePixelRatio;
|
|
recalcLayerScale(layerdict, width, height);
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function resizeAll() {
|
|
resizeCanvas(allcanvas.front);
|
|
resizeCanvas(allcanvas.back);
|
|
}
|
|
|
|
function pointWithinDistanceToSegment(x, y, x1, y1, x2, y2, d) {
|
|
var A = x - x1;
|
|
var B = y - y1;
|
|
var C = x2 - x1;
|
|
var D = y2 - y1;
|
|
|
|
var dot = A * C + B * D;
|
|
var len_sq = C * C + D * D;
|
|
var dx, dy;
|
|
if (len_sq == 0) {
|
|
// start and end of the segment coincide
|
|
dx = x - x1;
|
|
dy = y - y1;
|
|
} else {
|
|
var param = dot / len_sq;
|
|
var xx, yy;
|
|
if (param < 0) {
|
|
xx = x1;
|
|
yy = y1;
|
|
} else if (param > 1) {
|
|
xx = x2;
|
|
yy = y2;
|
|
} else {
|
|
xx = x1 + param * C;
|
|
yy = y1 + param * D;
|
|
}
|
|
dx = x - xx;
|
|
dy = y - yy;
|
|
}
|
|
return dx * dx + dy * dy <= d * d;
|
|
}
|
|
|
|
function modulo(n, mod) {
|
|
return ((n % mod) + mod) % mod;
|
|
}
|
|
|
|
function pointWithinDistanceToArc(x, y, xc, yc, radius, startangle, endangle, d) {
|
|
var dx = x - xc;
|
|
var dy = y - yc;
|
|
var r_sq = dx * dx + dy * dy;
|
|
var rmin = Math.max(0, radius - d);
|
|
var rmax = radius + d;
|
|
|
|
if (r_sq < rmin * rmin || r_sq > rmax * rmax)
|
|
return false;
|
|
|
|
var angle1 = modulo(deg2rad(startangle), 2 * Math.PI);
|
|
var dx1 = xc + radius * Math.cos(angle1) - x;
|
|
var dy1 = yc + radius * Math.sin(angle1) - y;
|
|
if (dx1 * dx1 + dy1 * dy1 <= d * d)
|
|
return true;
|
|
|
|
var angle2 = modulo(deg2rad(endangle), 2 * Math.PI);
|
|
var dx2 = xc + radius * Math.cos(angle2) - x;
|
|
var dy2 = yc + radius * Math.sin(angle2) - y;
|
|
if (dx2 * dx2 + dy2 * dy2 <= d * d)
|
|
return true;
|
|
|
|
var angle = modulo(Math.atan2(dy, dx), 2 * Math.PI);
|
|
if (angle1 > angle2)
|
|
return (angle >= angle2 || angle <= angle1);
|
|
else
|
|
return (angle >= angle1 && angle <= angle2);
|
|
}
|
|
|
|
function pointWithinPad(x, y, pad) {
|
|
var v = [x - pad.pos[0], y - pad.pos[1]];
|
|
v = rotateVector(v, pad.angle);
|
|
if (pad.offset) {
|
|
v[0] -= pad.offset[0];
|
|
v[1] -= pad.offset[1];
|
|
}
|
|
return emptyContext2d.isPointInPath(getCachedPadPath(pad), ...v);
|
|
}
|
|
|
|
function netHitScan(layer, x, y) {
|
|
// Check track segments
|
|
if (settings.renderTracks && pcbdata.tracks) {
|
|
for (var track of pcbdata.tracks[layer]) {
|
|
if ('radius' in track) {
|
|
if (pointWithinDistanceToArc(x, y, ...track.center, track.radius, track.startangle, track.endangle, track.width / 2)) {
|
|
return track.net;
|
|
}
|
|
} else {
|
|
if (pointWithinDistanceToSegment(x, y, ...track.start, ...track.end, track.width / 2)) {
|
|
return track.net;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// Check pads
|
|
if (settings.renderPads) {
|
|
for (var footprint of pcbdata.footprints) {
|
|
for (var pad of footprint.pads) {
|
|
if (pad.layers.includes(layer) && pointWithinPad(x, y, pad)) {
|
|
return pad.net;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function pointWithinFootprintBbox(x, y, bbox) {
|
|
var v = [x - bbox.pos[0], y - bbox.pos[1]];
|
|
v = rotateVector(v, bbox.angle);
|
|
return bbox.relpos[0] <= v[0] && v[0] <= bbox.relpos[0] + bbox.size[0] &&
|
|
bbox.relpos[1] <= v[1] && v[1] <= bbox.relpos[1] + bbox.size[1];
|
|
}
|
|
|
|
function bboxHitScan(layer, x, y) {
|
|
var result = [];
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
var footprint = pcbdata.footprints[i];
|
|
if (footprint.layer == layer) {
|
|
if (pointWithinFootprintBbox(x, y, footprint.bbox)) {
|
|
result.push(i);
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function handlePointerDown(e, layerdict) {
|
|
if (e.button != 0 && e.button != 1) {
|
|
return;
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
layerdict.pointerStates[e.pointerId] = {
|
|
distanceTravelled: 0,
|
|
lastX: e.offsetX,
|
|
lastY: e.offsetY,
|
|
downTime: Date.now(),
|
|
};
|
|
}
|
|
|
|
function handleMouseClick(e, layerdict) {
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
var x = e.offsetX;
|
|
var y = e.offsetY;
|
|
var t = layerdict.transform;
|
|
var flip = layerdict.layer === "B";
|
|
if (flip) {
|
|
x = (devicePixelRatio * x / t.zoom - t.panx + t.x) / -t.s;
|
|
} else {
|
|
x = (devicePixelRatio * x / t.zoom - t.panx - t.x) / t.s;
|
|
}
|
|
y = (devicePixelRatio * y / t.zoom - t.y - t.pany) / t.s;
|
|
var v = rotateVector([x, y], -settings.boardRotation + (flip && settings.offsetBackRotation ? - 180 : 0));
|
|
if ("nets" in pcbdata) {
|
|
var net = netHitScan(layerdict.layer, ...v);
|
|
if (net !== highlightedNet) {
|
|
netClicked(net);
|
|
}
|
|
}
|
|
if (highlightedNet === null) {
|
|
var footprints = bboxHitScan(layerdict.layer, ...v);
|
|
if (footprints.length > 0) {
|
|
footprintsClicked(footprints);
|
|
}
|
|
}
|
|
}
|
|
|
|
function handlePointerLeave(e, layerdict) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
delete layerdict.pointerStates[e.pointerId];
|
|
}
|
|
|
|
function resetTransform(layerdict) {
|
|
layerdict.transform.panx = 0;
|
|
layerdict.transform.pany = 0;
|
|
layerdict.transform.zoom = 1;
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function handlePointerUp(e, layerdict) {
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (e.button == 2) {
|
|
// Reset pan and zoom on right click.
|
|
resetTransform(layerdict);
|
|
layerdict.anotherPointerTapped = false;
|
|
return;
|
|
}
|
|
|
|
// We haven't necessarily had a pointermove event since the interaction started, so make sure we update this now
|
|
var ptr = layerdict.pointerStates[e.pointerId];
|
|
ptr.distanceTravelled += Math.abs(e.offsetX - ptr.lastX) + Math.abs(e.offsetY - ptr.lastY);
|
|
|
|
if (e.button == 0 && ptr.distanceTravelled < 10 && Date.now() - ptr.downTime <= 500) {
|
|
if (Object.keys(layerdict.pointerStates).length == 1) {
|
|
if (layerdict.anotherPointerTapped) {
|
|
// This is the second pointer coming off of a two-finger tap
|
|
resetTransform(layerdict);
|
|
} else {
|
|
// This is just a regular tap
|
|
handleMouseClick(e, layerdict);
|
|
}
|
|
layerdict.anotherPointerTapped = false;
|
|
} else {
|
|
// This is the first finger coming off of what could become a two-finger tap
|
|
layerdict.anotherPointerTapped = true;
|
|
}
|
|
} else {
|
|
if (!settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
layerdict.anotherPointerTapped = false;
|
|
}
|
|
|
|
delete layerdict.pointerStates[e.pointerId];
|
|
}
|
|
|
|
function handlePointerMove(e, layerdict) {
|
|
if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) {
|
|
return;
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
if (!e.hasOwnProperty("offsetX")) {
|
|
// The polyfill doesn't set this properly
|
|
e.offsetX = e.pageX - e.currentTarget.offsetLeft;
|
|
e.offsetY = e.pageY - e.currentTarget.offsetTop;
|
|
}
|
|
|
|
var thisPtr = layerdict.pointerStates[e.pointerId];
|
|
|
|
var dx = e.offsetX - thisPtr.lastX;
|
|
var dy = e.offsetY - thisPtr.lastY;
|
|
|
|
// If this number is low on pointer up, we count the action as a click
|
|
thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy);
|
|
|
|
if (Object.keys(layerdict.pointerStates).length == 1) {
|
|
// This is a simple drag
|
|
layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom;
|
|
layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom;
|
|
} else if (Object.keys(layerdict.pointerStates).length == 2) {
|
|
var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0];
|
|
|
|
var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2));
|
|
var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2));
|
|
|
|
var scaleFactor = newDist / oldDist;
|
|
|
|
if (scaleFactor != NaN) {
|
|
layerdict.transform.zoom *= scaleFactor;
|
|
|
|
var zoomd = (1 - scaleFactor) / layerdict.transform.zoom;
|
|
layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd;
|
|
layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd;
|
|
}
|
|
}
|
|
|
|
thisPtr.lastX = e.offsetX;
|
|
thisPtr.lastY = e.offsetY;
|
|
|
|
if (settings.redrawOnDrag) {
|
|
redrawCanvas(layerdict);
|
|
}
|
|
}
|
|
|
|
function handleMouseWheel(e, layerdict) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var t = layerdict.transform;
|
|
var wheeldelta = e.deltaY;
|
|
if (e.deltaMode == 1) {
|
|
// FF only, scroll by lines
|
|
wheeldelta *= 30;
|
|
} else if (e.deltaMode == 2) {
|
|
wheeldelta *= 300;
|
|
}
|
|
var m = Math.pow(1.1, -wheeldelta / 40);
|
|
// Limit amount of zoom per tick.
|
|
if (m > 2) {
|
|
m = 2;
|
|
} else if (m < 0.5) {
|
|
m = 0.5;
|
|
}
|
|
t.zoom *= m;
|
|
var zoomd = (1 - m) / t.zoom;
|
|
t.panx += devicePixelRatio * e.offsetX * zoomd;
|
|
t.pany += devicePixelRatio * e.offsetY * zoomd;
|
|
redrawCanvas(layerdict);
|
|
}
|
|
|
|
function addMouseHandlers(div, layerdict) {
|
|
div.addEventListener("pointerdown", function(e) {
|
|
handlePointerDown(e, layerdict);
|
|
});
|
|
div.addEventListener("pointermove", function(e) {
|
|
handlePointerMove(e, layerdict);
|
|
});
|
|
div.addEventListener("pointerup", function(e) {
|
|
handlePointerUp(e, layerdict);
|
|
});
|
|
var pointerleave = function(e) {
|
|
handlePointerLeave(e, layerdict);
|
|
}
|
|
div.addEventListener("pointercancel", pointerleave);
|
|
div.addEventListener("pointerleave", pointerleave);
|
|
div.addEventListener("pointerout", pointerleave);
|
|
|
|
div.onwheel = function(e) {
|
|
handleMouseWheel(e, layerdict);
|
|
}
|
|
for (var element of [div, layerdict.bg, layerdict.fab, layerdict.silk, layerdict.highlight]) {
|
|
element.addEventListener("contextmenu", function(e) {
|
|
e.preventDefault();
|
|
}, false);
|
|
}
|
|
}
|
|
|
|
function setRedrawOnDrag(value) {
|
|
settings.redrawOnDrag = value;
|
|
writeStorage("redrawOnDrag", value);
|
|
}
|
|
|
|
function setBoardRotation(value) {
|
|
settings.boardRotation = value * 5;
|
|
writeStorage("boardRotation", settings.boardRotation);
|
|
document.getElementById("rotationDegree").textContent = settings.boardRotation;
|
|
resizeAll();
|
|
}
|
|
|
|
function setOffsetBackRotation(value) {
|
|
settings.offsetBackRotation = value;
|
|
writeStorage("offsetBackRotation", value);
|
|
resizeAll();
|
|
}
|
|
|
|
function initRender() {
|
|
allcanvas = {
|
|
front: {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
pointerStates: {},
|
|
anotherPointerTapped: false,
|
|
bg: document.getElementById("F_bg"),
|
|
fab: document.getElementById("F_fab"),
|
|
silk: document.getElementById("F_slk"),
|
|
highlight: document.getElementById("F_hl"),
|
|
layer: "F",
|
|
},
|
|
back: {
|
|
transform: {
|
|
x: 0,
|
|
y: 0,
|
|
s: 1,
|
|
panx: 0,
|
|
pany: 0,
|
|
zoom: 1,
|
|
},
|
|
pointerStates: {},
|
|
anotherPointerTapped: false,
|
|
bg: document.getElementById("B_bg"),
|
|
fab: document.getElementById("B_fab"),
|
|
silk: document.getElementById("B_slk"),
|
|
highlight: document.getElementById("B_hl"),
|
|
layer: "B",
|
|
}
|
|
};
|
|
addMouseHandlers(document.getElementById("frontcanvas"), allcanvas.front);
|
|
addMouseHandlers(document.getElementById("backcanvas"), allcanvas.back);
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/*
|
|
* Table reordering via Drag'n'Drop
|
|
* Inspired by: https://htmldom.dev/drag-and-drop-table-column
|
|
*/
|
|
|
|
function setBomHandlers() {
|
|
|
|
const bom = document.getElementById('bomtable');
|
|
|
|
let dragName;
|
|
let placeHolderElements;
|
|
let draggingElement;
|
|
let forcePopulation;
|
|
let xOffset;
|
|
let yOffset;
|
|
let wasDragged;
|
|
|
|
const mouseUpHandler = function(e) {
|
|
// Delete dragging element
|
|
draggingElement.remove();
|
|
|
|
// Make BOM selectable again
|
|
bom.style.removeProperty("userSelect");
|
|
|
|
// Remove listeners
|
|
document.removeEventListener('mousemove', mouseMoveHandler);
|
|
document.removeEventListener('mouseup', mouseUpHandler);
|
|
|
|
if (wasDragged) {
|
|
// Redraw whole BOM
|
|
populateBomTable();
|
|
}
|
|
}
|
|
|
|
const mouseMoveHandler = function(e) {
|
|
// Notice the dragging
|
|
wasDragged = true;
|
|
|
|
// Make the dragged element visible
|
|
draggingElement.style.removeProperty("display");
|
|
|
|
// Set elements position to mouse position
|
|
draggingElement.style.left = `${e.screenX - xOffset}px`;
|
|
draggingElement.style.top = `${e.screenY - yOffset}px`;
|
|
|
|
// Forced redrawing of BOM table
|
|
if (forcePopulation) {
|
|
forcePopulation = false;
|
|
// Copy array
|
|
phe = Array.from(placeHolderElements);
|
|
// populate BOM table again
|
|
populateBomHeader(dragName, phe);
|
|
populateBomBody(dragName, phe);
|
|
}
|
|
|
|
// Set up array of hidden columns
|
|
var hiddenColumns = Array.from(settings.hiddenColumns);
|
|
// In the ungrouped mode, quantity don't exist
|
|
if (settings.bommode === "ungrouped")
|
|
hiddenColumns.push("Quantity");
|
|
// If no checkbox fields can be found, we consider them hidden
|
|
if (settings.checkboxes.length == 0)
|
|
hiddenColumns.push("checkboxes");
|
|
|
|
// Get table headers and group them into checkboxes, extrafields and normal headers
|
|
const bh = document.getElementById("bomhead");
|
|
headers = Array.from(bh.querySelectorAll("th"))
|
|
headers.shift() // numCol is not part of the columnOrder
|
|
headerGroups = []
|
|
lastCompoundClass = null;
|
|
for (i = 0; i < settings.columnOrder.length; i++) {
|
|
cElem = settings.columnOrder[i];
|
|
if (hiddenColumns.includes(cElem)) {
|
|
// Hidden columns appear as a dummy element
|
|
headerGroups.push([]);
|
|
continue;
|
|
}
|
|
elem = headers.filter(e => getColumnOrderName(e) === cElem)[0];
|
|
if (elem.classList.contains("bom-checkbox")) {
|
|
if (lastCompoundClass === "bom-checkbox") {
|
|
cbGroup = headerGroups.pop();
|
|
cbGroup.push(elem);
|
|
headerGroups.push(cbGroup);
|
|
} else {
|
|
lastCompoundClass = "bom-checkbox";
|
|
headerGroups.push([elem])
|
|
}
|
|
} else {
|
|
headerGroups.push([elem])
|
|
}
|
|
}
|
|
|
|
// Copy settings.columnOrder
|
|
var columns = Array.from(settings.columnOrder)
|
|
|
|
// Set up array with indices of hidden columns
|
|
var hiddenIndices = hiddenColumns.map(e => settings.columnOrder.indexOf(e));
|
|
var dragIndex = columns.indexOf(dragName);
|
|
var swapIndex = dragIndex;
|
|
var swapDone = false;
|
|
|
|
// Check if the current dragged element is swapable with the left or right element
|
|
if (dragIndex > 0) {
|
|
// Get left headers boundingbox
|
|
swapIndex = dragIndex - 1;
|
|
while (hiddenIndices.includes(swapIndex) && swapIndex > 0)
|
|
swapIndex--;
|
|
if (!hiddenIndices.includes(swapIndex)) {
|
|
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
|
|
if (e.clientX < box.left + window.scrollX + (box.width / 2)) {
|
|
swapElement = columns[dragIndex];
|
|
columns.splice(dragIndex, 1);
|
|
columns.splice(swapIndex, 0, swapElement);
|
|
forcePopulation = true;
|
|
swapDone = true;
|
|
}
|
|
}
|
|
}
|
|
if ((!swapDone) && dragIndex < headerGroups.length - 1) {
|
|
// Get right headers boundingbox
|
|
swapIndex = dragIndex + 1;
|
|
while (hiddenIndices.includes(swapIndex))
|
|
swapIndex++;
|
|
if (swapIndex < headerGroups.length) {
|
|
box = getBoundingClientRectFromMultiple(headerGroups[swapIndex]);
|
|
if (e.clientX > box.left + window.scrollX + (box.width / 2)) {
|
|
swapElement = columns[dragIndex];
|
|
columns.splice(dragIndex, 1);
|
|
columns.splice(swapIndex, 0, swapElement);
|
|
forcePopulation = true;
|
|
swapDone = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Write back change to storage
|
|
if (swapDone) {
|
|
settings.columnOrder = columns
|
|
writeStorage("columnOrder", JSON.stringify(columns));
|
|
}
|
|
|
|
}
|
|
|
|
const mouseDownHandler = function(e) {
|
|
var target = e.target;
|
|
if (target.tagName.toLowerCase() != "td")
|
|
target = target.parentElement;
|
|
|
|
// Used to check if a dragging has ever happened
|
|
wasDragged = false;
|
|
|
|
// Create new element which will be displayed as the dragged column
|
|
draggingElement = document.createElement("div")
|
|
draggingElement.classList.add("dragging");
|
|
draggingElement.style.display = "none";
|
|
draggingElement.style.position = "absolute";
|
|
draggingElement.style.overflow = "hidden";
|
|
|
|
// Get bomhead and bombody elements
|
|
const bh = document.getElementById("bomhead");
|
|
const bb = document.getElementById("bombody");
|
|
|
|
// Get all compound headers for the current column
|
|
var compoundHeaders;
|
|
if (target.classList.contains("bom-checkbox")) {
|
|
compoundHeaders = Array.from(bh.querySelectorAll("th.bom-checkbox"));
|
|
} else {
|
|
compoundHeaders = [target];
|
|
}
|
|
|
|
// Create new table which will display the column
|
|
var newTable = document.createElement("table");
|
|
newTable.classList.add("bom");
|
|
newTable.style.background = "white";
|
|
draggingElement.append(newTable);
|
|
|
|
// Create new header element
|
|
var newHeader = document.createElement("thead");
|
|
newTable.append(newHeader);
|
|
|
|
// Set up array for storing all placeholder elements
|
|
placeHolderElements = [];
|
|
|
|
// Add all compound headers to the new thead element and placeholders
|
|
compoundHeaders.forEach(function(h) {
|
|
clone = cloneElementWithDimensions(h);
|
|
newHeader.append(clone);
|
|
placeHolderElements.push(clone);
|
|
});
|
|
|
|
// Create new body element
|
|
var newBody = document.createElement("tbody");
|
|
newTable.append(newBody);
|
|
|
|
// Get indices for compound headers
|
|
var idxs = compoundHeaders.map(e => getBomTableHeaderIndex(e));
|
|
|
|
// For each row in the BOM body...
|
|
var rows = bb.querySelectorAll("tr");
|
|
rows.forEach(function(row) {
|
|
// ..get the cells for the compound column
|
|
const tds = row.querySelectorAll("td");
|
|
var copytds = idxs.map(i => tds[i]);
|
|
// Add them to the new element and the placeholders
|
|
var newRow = document.createElement("tr");
|
|
copytds.forEach(function(td) {
|
|
clone = cloneElementWithDimensions(td);
|
|
newRow.append(clone);
|
|
placeHolderElements.push(clone);
|
|
});
|
|
newBody.append(newRow);
|
|
});
|
|
|
|
// Compute width for compound header
|
|
var width = compoundHeaders.reduce((acc, x) => acc + x.clientWidth, 0);
|
|
draggingElement.style.width = `${width}px`;
|
|
|
|
// Insert the new dragging element and disable selection on BOM
|
|
bom.insertBefore(draggingElement, null);
|
|
bom.style.userSelect = "none";
|
|
|
|
// Determine the mouse position offset
|
|
xOffset = e.screenX - compoundHeaders.reduce((acc, x) => Math.min(acc, x.offsetLeft), compoundHeaders[0].offsetLeft);
|
|
yOffset = e.screenY - compoundHeaders[0].offsetTop;
|
|
|
|
// Get name for the column in settings.columnOrder
|
|
dragName = getColumnOrderName(target);
|
|
|
|
// Change text and class for placeholder elements
|
|
placeHolderElements = placeHolderElements.map(function(e) {
|
|
newElem = cloneElementWithDimensions(e);
|
|
newElem.textContent = "";
|
|
newElem.classList.add("placeholder");
|
|
return newElem;
|
|
});
|
|
|
|
// On next mouse move, the whole BOM needs to be redrawn to show the placeholders
|
|
forcePopulation = true;
|
|
|
|
// Add listeners for move and up on mouse
|
|
document.addEventListener('mousemove', mouseMoveHandler);
|
|
document.addEventListener('mouseup', mouseUpHandler);
|
|
}
|
|
|
|
// In netlist mode, there is nothing to reorder
|
|
if (settings.bommode === "netlist")
|
|
return;
|
|
|
|
// Add mouseDownHandler to every column except the numCol
|
|
bom.querySelectorAll("th")
|
|
.forEach(function(head) {
|
|
if (!head.classList.contains("numCol")) {
|
|
head.onmousedown = mouseDownHandler;
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
function getBoundingClientRectFromMultiple(elements) {
|
|
var elems = Array.from(elements);
|
|
|
|
if (elems.length == 0)
|
|
return null;
|
|
|
|
var box = elems.shift()
|
|
.getBoundingClientRect();
|
|
|
|
elems.forEach(function(elem) {
|
|
var elembox = elem.getBoundingClientRect();
|
|
box.left = Math.min(elembox.left, box.left);
|
|
box.top = Math.min(elembox.top, box.top);
|
|
box.width += elembox.width;
|
|
box.height = Math.max(elembox.height, box.height);
|
|
});
|
|
|
|
return box;
|
|
}
|
|
|
|
function cloneElementWithDimensions(elem) {
|
|
var newElem = elem.cloneNode(true);
|
|
newElem.style.height = window.getComputedStyle(elem).height;
|
|
newElem.style.width = window.getComputedStyle(elem).width;
|
|
return newElem;
|
|
}
|
|
|
|
function getBomTableHeaderIndex(elem) {
|
|
const bh = document.getElementById('bomhead');
|
|
const ths = Array.from(bh.querySelectorAll("th"));
|
|
return ths.indexOf(elem);
|
|
}
|
|
|
|
function getColumnOrderName(elem) {
|
|
var cname = elem.getAttribute("col_name");
|
|
if (cname === "bom-checkbox")
|
|
return "checkboxes";
|
|
else
|
|
return cname;
|
|
}
|
|
|
|
function resizableGrid(tablehead) {
|
|
var cols = tablehead.firstElementChild.children;
|
|
var rowWidth = tablehead.offsetWidth;
|
|
|
|
for (var i = 1; i < cols.length; i++) {
|
|
if (cols[i].classList.contains("bom-checkbox"))
|
|
continue;
|
|
cols[i].style.width = ((cols[i].clientWidth - paddingDiff(cols[i])) * 100 / rowWidth) + '%';
|
|
}
|
|
|
|
for (var i = 1; i < cols.length - 1; i++) {
|
|
var div = document.createElement('div');
|
|
div.className = "column-width-handle";
|
|
cols[i].appendChild(div);
|
|
setListeners(div);
|
|
}
|
|
|
|
function setListeners(div) {
|
|
var startX, curCol, nxtCol, curColWidth, nxtColWidth, rowWidth;
|
|
|
|
div.addEventListener('mousedown', function(e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
|
|
curCol = e.target.parentElement;
|
|
nxtCol = curCol.nextElementSibling;
|
|
startX = e.pageX;
|
|
|
|
var padding = paddingDiff(curCol);
|
|
|
|
rowWidth = curCol.parentElement.offsetWidth;
|
|
curColWidth = curCol.clientWidth - padding;
|
|
nxtColWidth = nxtCol.clientWidth - padding;
|
|
});
|
|
|
|
document.addEventListener('mousemove', function(e) {
|
|
if (startX) {
|
|
var diffX = e.pageX - startX;
|
|
diffX = -Math.min(-diffX, curColWidth - 20);
|
|
diffX = Math.min(diffX, nxtColWidth - 20);
|
|
|
|
curCol.style.width = ((curColWidth + diffX) * 100 / rowWidth) + '%';
|
|
nxtCol.style.width = ((nxtColWidth - diffX) * 100 / rowWidth) + '%';
|
|
console.log(`${curColWidth + nxtColWidth} ${(curColWidth + diffX) * 100 / rowWidth + (nxtColWidth - diffX) * 100 / rowWidth}`);
|
|
}
|
|
});
|
|
|
|
document.addEventListener('mouseup', function(e) {
|
|
curCol = undefined;
|
|
nxtCol = undefined;
|
|
startX = undefined;
|
|
nxtColWidth = undefined;
|
|
curColWidth = undefined
|
|
});
|
|
}
|
|
|
|
function paddingDiff(col) {
|
|
|
|
if (getStyleVal(col, 'box-sizing') == 'border-box') {
|
|
return 0;
|
|
}
|
|
|
|
var padLeft = getStyleVal(col, 'padding-left');
|
|
var padRight = getStyleVal(col, 'padding-right');
|
|
return (parseInt(padLeft) + parseInt(padRight));
|
|
|
|
}
|
|
|
|
function getStyleVal(elm, css) {
|
|
return (window.getComputedStyle(elm, null).getPropertyValue(css))
|
|
}
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
/* DOM manipulation and misc code */
|
|
|
|
var bomsplit;
|
|
var canvassplit;
|
|
var initDone = false;
|
|
var bomSortFunction = null;
|
|
var currentSortColumn = null;
|
|
var currentSortOrder = null;
|
|
var currentHighlightedRowId;
|
|
var highlightHandlers = [];
|
|
var footprintIndexToHandler = {};
|
|
var netsToHandler = {};
|
|
var markedFootprints = new Set();
|
|
var highlightedFootprints = [];
|
|
var highlightedNet = null;
|
|
var lastClicked;
|
|
|
|
function dbg(html) {
|
|
dbgdiv.innerHTML = html;
|
|
}
|
|
|
|
function redrawIfInitDone() {
|
|
if (initDone) {
|
|
redrawCanvas(allcanvas.front);
|
|
redrawCanvas(allcanvas.back);
|
|
}
|
|
}
|
|
|
|
function padsVisible(value) {
|
|
writeStorage("padsVisible", value);
|
|
settings.renderPads = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function referencesVisible(value) {
|
|
writeStorage("referencesVisible", value);
|
|
settings.renderReferences = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function valuesVisible(value) {
|
|
writeStorage("valuesVisible", value);
|
|
settings.renderValues = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function tracksVisible(value) {
|
|
writeStorage("tracksVisible", value);
|
|
settings.renderTracks = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function zonesVisible(value) {
|
|
writeStorage("zonesVisible", value);
|
|
settings.renderZones = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function dnpOutline(value) {
|
|
writeStorage("dnpOutline", value);
|
|
settings.renderDnpOutline = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setDarkMode(value) {
|
|
if (value) {
|
|
topmostdiv.classList.add("dark");
|
|
} else {
|
|
topmostdiv.classList.remove("dark");
|
|
}
|
|
writeStorage("darkmode", value);
|
|
settings.darkMode = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setShowBOMColumn(field, value) {
|
|
if (field === "references") {
|
|
var rl = document.getElementById("reflookup");
|
|
rl.disabled = !value;
|
|
if (!value) {
|
|
rl.value = "";
|
|
updateRefLookup("");
|
|
}
|
|
}
|
|
|
|
var n = settings.hiddenColumns.indexOf(field);
|
|
if (value) {
|
|
if (n != -1) {
|
|
settings.hiddenColumns.splice(n, 1);
|
|
}
|
|
} else {
|
|
if (n == -1) {
|
|
settings.hiddenColumns.push(field);
|
|
}
|
|
}
|
|
|
|
writeStorage("hiddenColumns", JSON.stringify(settings.hiddenColumns));
|
|
|
|
if (initDone) {
|
|
populateBomTable();
|
|
}
|
|
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
|
|
function setFullscreen(value) {
|
|
if (value) {
|
|
document.documentElement.requestFullscreen();
|
|
} else {
|
|
document.exitFullscreen();
|
|
}
|
|
}
|
|
|
|
function fabricationVisible(value) {
|
|
writeStorage("fabricationVisible", value);
|
|
settings.renderFabrication = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function silkscreenVisible(value) {
|
|
writeStorage("silkscreenVisible", value);
|
|
settings.renderSilkscreen = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function setHighlightPin1(value) {
|
|
writeStorage("highlightpin1", value);
|
|
settings.highlightpin1 = value;
|
|
redrawIfInitDone();
|
|
}
|
|
|
|
function getStoredCheckboxRefs(checkbox) {
|
|
function convert(ref) {
|
|
var intref = parseInt(ref);
|
|
if (isNaN(intref)) {
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.footprints[i].ref == ref) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
} else {
|
|
return intref;
|
|
}
|
|
}
|
|
if (!(checkbox in settings.checkboxStoredRefs)) {
|
|
var val = readStorage("checkbox_" + checkbox);
|
|
settings.checkboxStoredRefs[checkbox] = val ? val : "";
|
|
}
|
|
if (!settings.checkboxStoredRefs[checkbox]) {
|
|
return new Set();
|
|
} else {
|
|
return new Set(settings.checkboxStoredRefs[checkbox].split(",").map(r => convert(r)).filter(a => a >= 0));
|
|
}
|
|
}
|
|
|
|
function getCheckboxState(checkbox, references) {
|
|
var storedRefsSet = getStoredCheckboxRefs(checkbox);
|
|
var currentRefsSet = new Set(references.map(r => r[1]));
|
|
// Get difference of current - stored
|
|
var difference = new Set(currentRefsSet);
|
|
for (ref of storedRefsSet) {
|
|
difference.delete(ref);
|
|
}
|
|
if (difference.size == 0) {
|
|
// All the current refs are stored
|
|
return "checked";
|
|
} else if (difference.size == currentRefsSet.size) {
|
|
// None of the current refs are stored
|
|
return "unchecked";
|
|
} else {
|
|
// Some of the refs are stored
|
|
return "indeterminate";
|
|
}
|
|
}
|
|
|
|
function setBomCheckboxState(checkbox, element, references) {
|
|
var state = getCheckboxState(checkbox, references);
|
|
element.checked = (state == "checked");
|
|
element.indeterminate = (state == "indeterminate");
|
|
}
|
|
|
|
function createCheckboxChangeHandler(checkbox, references, row) {
|
|
return function () {
|
|
refsSet = getStoredCheckboxRefs(checkbox);
|
|
var markWhenChecked = settings.markWhenChecked == checkbox;
|
|
eventArgs = {
|
|
checkbox: checkbox,
|
|
refs: references,
|
|
}
|
|
if (this.checked) {
|
|
// checkbox ticked
|
|
for (var ref of references) {
|
|
refsSet.add(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.add("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.add(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'checked';
|
|
} else {
|
|
// checkbox unticked
|
|
for (var ref of references) {
|
|
refsSet.delete(ref[1]);
|
|
}
|
|
if (markWhenChecked) {
|
|
row.classList.remove("checked");
|
|
for (var ref of references) {
|
|
markedFootprints.delete(ref[1]);
|
|
}
|
|
drawHighlights();
|
|
}
|
|
eventArgs.state = 'unchecked';
|
|
}
|
|
settings.checkboxStoredRefs[checkbox] = [...refsSet].join(",");
|
|
writeStorage("checkbox_" + checkbox, settings.checkboxStoredRefs[checkbox]);
|
|
updateCheckboxStats(checkbox);
|
|
EventHandler.emitEvent(IBOM_EVENT_TYPES.CHECKBOX_CHANGE_EVENT, eventArgs);
|
|
}
|
|
}
|
|
|
|
function clearHighlightedFootprints() {
|
|
if (currentHighlightedRowId) {
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
currentHighlightedRowId = null;
|
|
highlightedFootprints = [];
|
|
highlightedNet = null;
|
|
}
|
|
}
|
|
|
|
function createRowHighlightHandler(rowid, refs, net) {
|
|
return function () {
|
|
if (currentHighlightedRowId) {
|
|
if (currentHighlightedRowId == rowid) {
|
|
return;
|
|
}
|
|
document.getElementById(currentHighlightedRowId).classList.remove("highlighted");
|
|
}
|
|
document.getElementById(rowid).classList.add("highlighted");
|
|
currentHighlightedRowId = rowid;
|
|
highlightedFootprints = refs ? refs.map(r => r[1]) : [];
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.HIGHLIGHT_EVENT, {
|
|
rowid: rowid,
|
|
refs: refs,
|
|
net: net
|
|
});
|
|
}
|
|
}
|
|
|
|
function entryMatches(entry) {
|
|
if (settings.bommode == "netlist") {
|
|
// entry is just a net name
|
|
return entry.toLowerCase().indexOf(filter) >= 0;
|
|
}
|
|
// check refs
|
|
if (!settings.hiddenColumns.includes("references")) {
|
|
for (var ref of entry) {
|
|
if (ref[0].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
// check fields
|
|
for (var i in config.fields) {
|
|
var f = config.fields[i];
|
|
if (!settings.hiddenColumns.includes(f)) {
|
|
for (var ref of entry) {
|
|
if (pcbdata.bom.fields[ref[1]][i].toLowerCase().indexOf(filter) >= 0) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function findRefInEntry(entry) {
|
|
return entry.filter(r => r[0].toLowerCase() == reflookup);
|
|
}
|
|
|
|
function highlightFilter(s) {
|
|
if (!filter) {
|
|
return s;
|
|
}
|
|
var parts = s.toLowerCase().split(filter);
|
|
if (parts.length == 1) {
|
|
return s;
|
|
}
|
|
var r = "";
|
|
var pos = 0;
|
|
for (var i in parts) {
|
|
if (i > 0) {
|
|
r += '<mark class="highlight">' +
|
|
s.substring(pos, pos + filter.length) +
|
|
'</mark>';
|
|
pos += filter.length;
|
|
}
|
|
r += s.substring(pos, pos + parts[i].length);
|
|
pos += parts[i].length;
|
|
}
|
|
return r;
|
|
}
|
|
|
|
function checkboxSetUnsetAllHandler(checkboxname) {
|
|
return function () {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var allset = true;
|
|
var checkbox;
|
|
var row;
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
if (!checkbox.checked || checkbox.indeterminate) {
|
|
allset = false;
|
|
break;
|
|
}
|
|
}
|
|
for (row of bombody.childNodes) {
|
|
checkbox = row.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = !allset;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
}
|
|
}
|
|
|
|
function createColumnHeader(name, cls, comparator, is_checkbox = false) {
|
|
var th = document.createElement("TH");
|
|
th.innerHTML = name;
|
|
th.classList.add(cls);
|
|
if (is_checkbox)
|
|
th.setAttribute("col_name", "bom-checkbox");
|
|
else
|
|
th.setAttribute("col_name", name);
|
|
var span = document.createElement("SPAN");
|
|
span.classList.add("sortmark");
|
|
span.classList.add("none");
|
|
th.appendChild(span);
|
|
var spacer = document.createElement("div");
|
|
spacer.className = "column-spacer";
|
|
th.appendChild(spacer);
|
|
spacer.onclick = function () {
|
|
if (currentSortColumn && th !== currentSortColumn) {
|
|
// Currently sorted by another column
|
|
currentSortColumn.childNodes[1].classList.remove(currentSortOrder);
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
if (currentSortColumn && th === currentSortColumn) {
|
|
// Already sorted by this column
|
|
if (currentSortOrder == "asc") {
|
|
// Sort by this column, descending order
|
|
bomSortFunction = function (a, b) {
|
|
return -comparator(a, b);
|
|
}
|
|
currentSortColumn.childNodes[1].classList.remove("asc");
|
|
currentSortColumn.childNodes[1].classList.add("desc");
|
|
currentSortOrder = "desc";
|
|
} else {
|
|
// Unsort
|
|
bomSortFunction = null;
|
|
currentSortColumn.childNodes[1].classList.remove("desc");
|
|
currentSortColumn.childNodes[1].classList.add("none");
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
}
|
|
} else {
|
|
// Sort by this column, ascending order
|
|
bomSortFunction = comparator;
|
|
currentSortColumn = th;
|
|
currentSortColumn.childNodes[1].classList.remove("none");
|
|
currentSortColumn.childNodes[1].classList.add("asc");
|
|
currentSortOrder = "asc";
|
|
}
|
|
populateBomBody();
|
|
}
|
|
if (is_checkbox) {
|
|
spacer.onclick = fancyDblClickHandler(
|
|
spacer, spacer.onclick, checkboxSetUnsetAllHandler(name));
|
|
}
|
|
return th;
|
|
}
|
|
|
|
function populateBomHeader(placeHolderColumn = null, placeHolderElements = null) {
|
|
while (bomhead.firstChild) {
|
|
bomhead.removeChild(bomhead.firstChild);
|
|
}
|
|
var tr = document.createElement("TR");
|
|
var th = document.createElement("TH");
|
|
th.classList.add("numCol");
|
|
|
|
var vismenu = document.createElement("div");
|
|
vismenu.id = "vismenu";
|
|
vismenu.classList.add("menu");
|
|
|
|
var visbutton = document.createElement("div");
|
|
visbutton.classList.add("visbtn");
|
|
visbutton.classList.add("hideonprint");
|
|
|
|
var viscontent = document.createElement("div");
|
|
viscontent.classList.add("menu-content");
|
|
viscontent.id = "vismenu-content";
|
|
|
|
settings.columnOrder.forEach(column => {
|
|
if (typeof column !== "string")
|
|
return;
|
|
|
|
// Skip empty columns
|
|
if (column === "checkboxes" && settings.checkboxes.length == 0)
|
|
return;
|
|
else if (column === "Quantity" && settings.bommode == "ungrouped")
|
|
return;
|
|
|
|
var label = document.createElement("label");
|
|
label.classList.add("menu-label");
|
|
|
|
var input = document.createElement("input");
|
|
input.classList.add("visibility_checkbox");
|
|
input.type = "checkbox";
|
|
input.onchange = function (e) {
|
|
setShowBOMColumn(column, e.target.checked)
|
|
};
|
|
input.checked = !(settings.hiddenColumns.includes(column));
|
|
|
|
label.appendChild(input);
|
|
if (column.length > 0)
|
|
label.append(column[0].toUpperCase() + column.slice(1));
|
|
|
|
viscontent.appendChild(label);
|
|
});
|
|
|
|
viscontent.childNodes[0].classList.add("menu-label-top");
|
|
|
|
vismenu.appendChild(visbutton);
|
|
if (settings.bommode != "netlist") {
|
|
vismenu.appendChild(viscontent);
|
|
th.appendChild(vismenu);
|
|
}
|
|
tr.appendChild(th);
|
|
|
|
var checkboxCompareClosure = function (checkbox) {
|
|
return (a, b) => {
|
|
var stateA = getCheckboxState(checkbox, a);
|
|
var stateB = getCheckboxState(checkbox, b);
|
|
if (stateA > stateB) return -1;
|
|
if (stateA < stateB) return 1;
|
|
return 0;
|
|
}
|
|
}
|
|
var stringFieldCompareClosure = function (fieldIndex) {
|
|
return (a, b) => {
|
|
var fa = pcbdata.bom.fields[a[0][1]][fieldIndex];
|
|
var fb = pcbdata.bom.fields[b[0][1]][fieldIndex];
|
|
if (fa != fb) return fa > fb ? 1 : -1;
|
|
else return 0;
|
|
}
|
|
}
|
|
var referenceRegex = /(?<prefix>[^0-9]+)(?<number>[0-9]+)/;
|
|
var compareRefs = (a, b) => {
|
|
var ra = referenceRegex.exec(a);
|
|
var rb = referenceRegex.exec(b);
|
|
if (ra === null || rb === null) {
|
|
if (a != b) return a > b ? 1 : -1;
|
|
return 0;
|
|
} else {
|
|
if (ra.groups.prefix != rb.groups.prefix) {
|
|
return ra.groups.prefix > rb.groups.prefix ? 1 : -1;
|
|
}
|
|
if (ra.groups.number != rb.groups.number) {
|
|
return parseInt(ra.groups.number) > parseInt(rb.groups.number) ? 1 : -1;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
if (settings.bommode == "netlist") {
|
|
th = createColumnHeader("Net name", "bom-netname", (a, b) => {
|
|
if (a > b) return -1;
|
|
if (a < b) return 1;
|
|
return 0;
|
|
});
|
|
tr.appendChild(th);
|
|
} else {
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
var valueIndex = config.fields.indexOf("Value");
|
|
var footprintIndex = config.fields.indexOf("Footprint");
|
|
columns.forEach((column) => {
|
|
if (column === placeHolderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
th = createColumnHeader(
|
|
checkbox, "bom-checkbox", checkboxCompareClosure(checkbox), true);
|
|
tr.appendChild(th);
|
|
}
|
|
} else if (column === "References") {
|
|
tr.appendChild(createColumnHeader("References", "references", (a, b) => {
|
|
var i = 0;
|
|
while (i < a.length && i < b.length) {
|
|
if (a[i] != b[i]) return compareRefs(a[i][0], b[i][0]);
|
|
i++;
|
|
}
|
|
return a.length - b.length;
|
|
}));
|
|
} else if (column === "Value") {
|
|
tr.appendChild(createColumnHeader("Value", "value", (a, b) => {
|
|
var ra = a[0][1], rb = b[0][1];
|
|
return valueCompare(
|
|
pcbdata.bom.parsedValues[ra], pcbdata.bom.parsedValues[rb],
|
|
pcbdata.bom.fields[ra][valueIndex], pcbdata.bom.fields[rb][valueIndex]);
|
|
}));
|
|
return;
|
|
} else if (column === "Footprint") {
|
|
tr.appendChild(createColumnHeader(
|
|
"Footprint", "footprint", stringFieldCompareClosure(footprintIndex)));
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
tr.appendChild(createColumnHeader("Quantity", "quantity", (a, b) => {
|
|
return a.length - b.length;
|
|
}));
|
|
} else {
|
|
// Other fields
|
|
var i = config.fields.indexOf(column);
|
|
if (i < 0)
|
|
return;
|
|
tr.appendChild(createColumnHeader(
|
|
column, `field${i + 1}`, stringFieldCompareClosure(i)));
|
|
}
|
|
});
|
|
}
|
|
bomhead.appendChild(tr);
|
|
}
|
|
|
|
function populateBomBody(placeholderColumn = null, placeHolderElements = null) {
|
|
const urlRegex = /^(https?:\/\/[^\s\/$.?#][^\s]*|file:\/\/([a-zA-Z]:|\/)[^\x00]+)$/;
|
|
while (bom.firstChild) {
|
|
bom.removeChild(bom.firstChild);
|
|
}
|
|
highlightHandlers = [];
|
|
footprintIndexToHandler = {};
|
|
netsToHandler = {};
|
|
currentHighlightedRowId = null;
|
|
var first = true;
|
|
if (settings.bommode == "netlist") {
|
|
bomtable = pcbdata.nets.slice();
|
|
} else {
|
|
switch (settings.canvaslayout) {
|
|
case 'F':
|
|
bomtable = pcbdata.bom.F.slice();
|
|
break;
|
|
case 'FB':
|
|
bomtable = pcbdata.bom.both.slice();
|
|
break;
|
|
case 'B':
|
|
bomtable = pcbdata.bom.B.slice();
|
|
break;
|
|
}
|
|
if (settings.bommode == "ungrouped") {
|
|
// expand bom table
|
|
expandedTable = []
|
|
for (var bomentry of bomtable) {
|
|
for (var ref of bomentry) {
|
|
expandedTable.push([ref]);
|
|
}
|
|
}
|
|
bomtable = expandedTable;
|
|
}
|
|
}
|
|
if (bomSortFunction) {
|
|
bomtable = bomtable.sort(bomSortFunction);
|
|
}
|
|
for (var i in bomtable) {
|
|
var bomentry = bomtable[i];
|
|
if (filter && !entryMatches(bomentry)) {
|
|
continue;
|
|
}
|
|
var references = null;
|
|
var netname = null;
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
var rownum = +i + 1;
|
|
tr.id = "bomrow" + rownum;
|
|
td.textContent = rownum;
|
|
tr.appendChild(td);
|
|
if (settings.bommode == "netlist") {
|
|
netname = bomentry;
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(netname ? netname : "<no net>");
|
|
tr.appendChild(td);
|
|
} else {
|
|
if (reflookup) {
|
|
references = findRefInEntry(bomentry);
|
|
if (references.length == 0) {
|
|
continue;
|
|
}
|
|
} else {
|
|
references = bomentry;
|
|
}
|
|
// Filter hidden columns
|
|
var columns = settings.columnOrder.filter(e => !settings.hiddenColumns.includes(e));
|
|
columns.forEach((column) => {
|
|
if (column === placeholderColumn) {
|
|
var n = 1;
|
|
if (column === "checkboxes")
|
|
n = settings.checkboxes.length;
|
|
for (i = 0; i < n; i++) {
|
|
td = placeHolderElements.shift();
|
|
tr.appendChild(td);
|
|
}
|
|
return;
|
|
} else if (column === "checkboxes") {
|
|
for (var checkbox of settings.checkboxes) {
|
|
if (checkbox) {
|
|
td = document.createElement("TD");
|
|
var input = document.createElement("input");
|
|
input.type = "checkbox";
|
|
input.onchange = createCheckboxChangeHandler(checkbox, references, tr);
|
|
setBomCheckboxState(checkbox, input, references);
|
|
if (input.checked && settings.markWhenChecked == checkbox) {
|
|
tr.classList.add("checked");
|
|
}
|
|
td.appendChild(input);
|
|
tr.appendChild(td);
|
|
}
|
|
}
|
|
} else if (column === "References") {
|
|
td = document.createElement("TD");
|
|
td.innerHTML = highlightFilter(references.map(r => r[0]).join(", "));
|
|
tr.appendChild(td);
|
|
} else if (column === "Quantity" && settings.bommode == "grouped") {
|
|
// Quantity
|
|
td = document.createElement("TD");
|
|
td.textContent = references.length;
|
|
tr.appendChild(td);
|
|
} else {
|
|
// All the other fields
|
|
var field_index = config.fields.indexOf(column)
|
|
if (field_index < 0)
|
|
return;
|
|
var valueSet = new Set();
|
|
references.map(r => r[1]).forEach((id) => valueSet.add(pcbdata.bom.fields[id][field_index]));
|
|
td = document.createElement("TD");
|
|
var output = new Array();
|
|
for (let item of valueSet) {
|
|
const visible = highlightFilter(item);
|
|
if (typeof item === 'string' && item.match(urlRegex)) {
|
|
output.push(`<a href="${item}" target="_blank">${visible}</a>`);
|
|
} else {
|
|
output.push(visible);
|
|
}
|
|
}
|
|
td.innerHTML = output.join(", ");
|
|
tr.appendChild(td);
|
|
}
|
|
});
|
|
}
|
|
bom.appendChild(tr);
|
|
var handler = createRowHighlightHandler(tr.id, references, netname);
|
|
tr.onmousemove = handler;
|
|
highlightHandlers.push({
|
|
id: tr.id,
|
|
handler: handler,
|
|
});
|
|
if (references !== null) {
|
|
for (var refIndex of references.map(r => r[1])) {
|
|
footprintIndexToHandler[refIndex] = handler;
|
|
}
|
|
}
|
|
if (netname !== null) {
|
|
netsToHandler[netname] = handler;
|
|
}
|
|
if ((filter || reflookup) && first) {
|
|
handler();
|
|
first = false;
|
|
}
|
|
}
|
|
EventHandler.emitEvent(
|
|
IBOM_EVENT_TYPES.BOM_BODY_CHANGE_EVENT, {
|
|
filter: filter,
|
|
reflookup: reflookup,
|
|
checkboxes: settings.checkboxes,
|
|
bommode: settings.bommode,
|
|
});
|
|
}
|
|
|
|
function highlightPreviousRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[0].id == currentHighlightedRowId) {
|
|
highlightHandlers[highlightHandlers.length - 1].handler();
|
|
} else {
|
|
for (var i = 0; i < highlightHandlers.length - 1; i++) {
|
|
if (highlightHandlers[i + 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function highlightNextRow() {
|
|
if (!currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
if (highlightHandlers.length > 1 &&
|
|
highlightHandlers[highlightHandlers.length - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[0].handler();
|
|
} else {
|
|
for (var i = 1; i < highlightHandlers.length; i++) {
|
|
if (highlightHandlers[i - 1].id == currentHighlightedRowId) {
|
|
highlightHandlers[i].handler();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
}
|
|
|
|
function populateBomTable() {
|
|
populateBomHeader();
|
|
populateBomBody();
|
|
setBomHandlers();
|
|
resizableGrid(bomhead);
|
|
}
|
|
|
|
function footprintsClicked(footprintIndexes) {
|
|
var lastClickedIndex = footprintIndexes.indexOf(lastClicked);
|
|
for (var i = 1; i <= footprintIndexes.length; i++) {
|
|
var refIndex = footprintIndexes[(lastClickedIndex + i) % footprintIndexes.length];
|
|
if (refIndex in footprintIndexToHandler) {
|
|
lastClicked = refIndex;
|
|
footprintIndexToHandler[refIndex]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
function netClicked(net) {
|
|
if (net in netsToHandler) {
|
|
netsToHandler[net]();
|
|
smoothScrollToRow(currentHighlightedRowId);
|
|
} else {
|
|
clearHighlightedFootprints();
|
|
highlightedNet = net;
|
|
drawHighlights();
|
|
}
|
|
}
|
|
|
|
function updateFilter(input) {
|
|
filter = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function updateRefLookup(input) {
|
|
reflookup = input.toLowerCase();
|
|
populateBomTable();
|
|
}
|
|
|
|
function changeCanvasLayout(layout) {
|
|
document.getElementById("fl-btn").classList.remove("depressed");
|
|
document.getElementById("fb-btn").classList.remove("depressed");
|
|
document.getElementById("bl-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'F':
|
|
document.getElementById("fl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(1);
|
|
}
|
|
break;
|
|
case 'B':
|
|
document.getElementById("bl-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.collapse(0);
|
|
}
|
|
break;
|
|
default:
|
|
document.getElementById("fb-btn").classList.add("depressed");
|
|
if (settings.bomlayout != "bom-only") {
|
|
canvassplit.setSizes([50, 50]);
|
|
}
|
|
}
|
|
settings.canvaslayout = layout;
|
|
writeStorage("canvaslayout", layout);
|
|
resizeAll();
|
|
changeBomMode(settings.bommode);
|
|
}
|
|
|
|
function populateMetadata() {
|
|
document.getElementById("title").innerHTML = pcbdata.metadata.title;
|
|
document.getElementById("revision").innerHTML = "Rev: " + pcbdata.metadata.revision;
|
|
document.getElementById("company").innerHTML = pcbdata.metadata.company;
|
|
document.getElementById("filedate").innerHTML = pcbdata.metadata.date;
|
|
if (pcbdata.metadata.title != "") {
|
|
document.title = pcbdata.metadata.title + " BOM";
|
|
}
|
|
// Calculate board stats
|
|
var fp_f = 0,
|
|
fp_b = 0,
|
|
pads_f = 0,
|
|
pads_b = 0,
|
|
pads_th = 0;
|
|
for (var i = 0; i < pcbdata.footprints.length; i++) {
|
|
if (pcbdata.bom.skipped.includes(i)) continue;
|
|
var mod = pcbdata.footprints[i];
|
|
if (mod.layer == "F") {
|
|
fp_f++;
|
|
} else {
|
|
fp_b++;
|
|
}
|
|
for (var pad of mod.pads) {
|
|
if (pad.type == "th") {
|
|
pads_th++;
|
|
} else {
|
|
if (pad.layers.includes("F")) {
|
|
pads_f++;
|
|
}
|
|
if (pad.layers.includes("B")) {
|
|
pads_b++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
document.getElementById("stats-components-front").innerHTML = fp_f;
|
|
document.getElementById("stats-components-back").innerHTML = fp_b;
|
|
document.getElementById("stats-components-total").innerHTML = fp_f + fp_b;
|
|
document.getElementById("stats-groups-front").innerHTML = pcbdata.bom.F.length;
|
|
document.getElementById("stats-groups-back").innerHTML = pcbdata.bom.B.length;
|
|
document.getElementById("stats-groups-total").innerHTML = pcbdata.bom.both.length;
|
|
document.getElementById("stats-smd-pads-front").innerHTML = pads_f;
|
|
document.getElementById("stats-smd-pads-back").innerHTML = pads_b;
|
|
document.getElementById("stats-smd-pads-total").innerHTML = pads_f + pads_b;
|
|
document.getElementById("stats-th-pads").innerHTML = pads_th;
|
|
// Update version string
|
|
document.getElementById("github-link").innerHTML = "InteractiveHtmlBom " +
|
|
/^v\d+\.\d+/.exec(pcbdata.ibom_version)[0];
|
|
}
|
|
|
|
function changeBomLayout(layout) {
|
|
document.getElementById("bom-btn").classList.remove("depressed");
|
|
document.getElementById("lr-btn").classList.remove("depressed");
|
|
document.getElementById("tb-btn").classList.remove("depressed");
|
|
switch (layout) {
|
|
case 'bom-only':
|
|
document.getElementById("bom-btn").classList.add("depressed");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
document.getElementById("frontcanvas").style.display = "none";
|
|
document.getElementById("backcanvas").style.display = "none";
|
|
document.getElementById("bot").style.height = "";
|
|
break;
|
|
case 'top-bottom':
|
|
document.getElementById("tb-btn").classList.add("depressed");
|
|
document.getElementById("frontcanvas").style.display = "";
|
|
document.getElementById("backcanvas").style.display = "";
|
|
document.getElementById("bot").style.height = "calc(100% - 80px)";
|
|
document.getElementById("bomdiv").classList.remove("split-horizontal");
|
|
document.getElementById("canvasdiv").classList.remove("split-horizontal");
|
|
document.getElementById("frontcanvas").classList.add("split-horizontal");
|
|
document.getElementById("backcanvas").classList.add("split-horizontal");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
|
|
sizes: [50, 50],
|
|
onDragEnd: resizeAll,
|
|
direction: "vertical",
|
|
gutterSize: 5
|
|
});
|
|
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
|
|
sizes: [50, 50],
|
|
gutterSize: 5,
|
|
onDragEnd: resizeAll
|
|
});
|
|
break;
|
|
case 'left-right':
|
|
document.getElementById("lr-btn").classList.add("depressed");
|
|
document.getElementById("frontcanvas").style.display = "";
|
|
document.getElementById("backcanvas").style.display = "";
|
|
document.getElementById("bot").style.height = "calc(100% - 80px)";
|
|
document.getElementById("bomdiv").classList.add("split-horizontal");
|
|
document.getElementById("canvasdiv").classList.add("split-horizontal");
|
|
document.getElementById("frontcanvas").classList.remove("split-horizontal");
|
|
document.getElementById("backcanvas").classList.remove("split-horizontal");
|
|
if (bomsplit) {
|
|
bomsplit.destroy();
|
|
bomsplit = null;
|
|
canvassplit.destroy();
|
|
canvassplit = null;
|
|
}
|
|
bomsplit = Split(['#bomdiv', '#canvasdiv'], {
|
|
sizes: [50, 50],
|
|
onDragEnd: resizeAll,
|
|
gutterSize: 5
|
|
});
|
|
canvassplit = Split(['#frontcanvas', '#backcanvas'], {
|
|
sizes: [50, 50],
|
|
gutterSize: 5,
|
|
direction: "vertical",
|
|
onDragEnd: resizeAll
|
|
});
|
|
}
|
|
settings.bomlayout = layout;
|
|
writeStorage("bomlayout", layout);
|
|
changeCanvasLayout(settings.canvaslayout);
|
|
}
|
|
|
|
function changeBomMode(mode) {
|
|
document.getElementById("bom-grouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("depressed");
|
|
document.getElementById("bom-netlist-btn").classList.remove("depressed");
|
|
var chkbxs = document.getElementsByClassName("visibility_checkbox");
|
|
|
|
switch (mode) {
|
|
case 'grouped':
|
|
document.getElementById("bom-grouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'ungrouped':
|
|
document.getElementById("bom-ungrouped-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = false;
|
|
}
|
|
break;
|
|
case 'netlist':
|
|
document.getElementById("bom-netlist-btn").classList.add("depressed");
|
|
for (var i = 0; i < chkbxs.length; i++) {
|
|
chkbxs[i].disabled = true;
|
|
}
|
|
}
|
|
|
|
writeStorage("bommode", mode);
|
|
if (mode != settings.bommode) {
|
|
settings.bommode = mode;
|
|
bomSortFunction = null;
|
|
currentSortColumn = null;
|
|
currentSortOrder = null;
|
|
clearHighlightedFootprints();
|
|
}
|
|
populateBomTable();
|
|
}
|
|
|
|
function focusFilterField() {
|
|
focusInputField(document.getElementById("filter"));
|
|
}
|
|
|
|
function focusRefLookupField() {
|
|
focusInputField(document.getElementById("reflookup"));
|
|
}
|
|
|
|
function toggleBomCheckbox(bomrowid, checkboxnum) {
|
|
if (!bomrowid || checkboxnum > settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum].childNodes[0];
|
|
checkbox.checked = !checkbox.checked;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function checkBomCheckbox(bomrowid, checkboxname) {
|
|
var checkboxnum = 0;
|
|
while (checkboxnum < settings.checkboxes.length &&
|
|
settings.checkboxes[checkboxnum].toLowerCase() != checkboxname.toLowerCase()) {
|
|
checkboxnum++;
|
|
}
|
|
if (!bomrowid || checkboxnum >= settings.checkboxes.length) {
|
|
return;
|
|
}
|
|
var bomrow = document.getElementById(bomrowid);
|
|
var checkbox = bomrow.childNodes[checkboxnum + 1].childNodes[0];
|
|
checkbox.checked = true;
|
|
checkbox.indeterminate = false;
|
|
checkbox.onchange();
|
|
}
|
|
|
|
function setBomCheckboxes(value) {
|
|
writeStorage("bomCheckboxes", value);
|
|
settings.checkboxes = value.split(",").map((e) => e.trim()).filter((e) => e);
|
|
prepCheckboxes();
|
|
populateMarkWhenCheckedOptions();
|
|
setMarkWhenChecked(settings.markWhenChecked);
|
|
}
|
|
|
|
function setMarkWhenChecked(value) {
|
|
writeStorage("markWhenChecked", value);
|
|
settings.markWhenChecked = value;
|
|
markedFootprints.clear();
|
|
for (var ref of (value ? getStoredCheckboxRefs(value) : [])) {
|
|
markedFootprints.add(ref);
|
|
}
|
|
populateBomTable();
|
|
drawHighlights();
|
|
}
|
|
|
|
function prepCheckboxes() {
|
|
var table = document.getElementById("checkbox-stats");
|
|
while (table.childElementCount > 1) {
|
|
table.removeChild(table.lastChild);
|
|
}
|
|
if (settings.checkboxes.length) {
|
|
table.style.display = "";
|
|
} else {
|
|
table.style.display = "none";
|
|
}
|
|
for (var checkbox of settings.checkboxes) {
|
|
var tr = document.createElement("TR");
|
|
var td = document.createElement("TD");
|
|
td.innerHTML = checkbox;
|
|
tr.appendChild(td);
|
|
td = document.createElement("TD");
|
|
td.id = "checkbox-stats-" + checkbox;
|
|
var progressbar = document.createElement("div");
|
|
progressbar.classList.add("bar");
|
|
td.appendChild(progressbar);
|
|
var text = document.createElement("div");
|
|
text.classList.add("text");
|
|
td.appendChild(text);
|
|
tr.appendChild(td);
|
|
table.appendChild(tr);
|
|
updateCheckboxStats(checkbox);
|
|
}
|
|
}
|
|
|
|
function populateMarkWhenCheckedOptions() {
|
|
var container = document.getElementById("markWhenCheckedContainer");
|
|
|
|
if (settings.checkboxes.length == 0) {
|
|
container.parentElement.style.display = "none";
|
|
return;
|
|
}
|
|
|
|
container.innerHTML = '';
|
|
container.parentElement.style.display = "inline-block";
|
|
|
|
function createOption(name, displayName) {
|
|
var id = "markWhenChecked-" + name;
|
|
|
|
var div = document.createElement("div");
|
|
div.classList.add("radio-container");
|
|
|
|
var input = document.createElement("input");
|
|
input.type = "radio";
|
|
input.name = "markWhenChecked";
|
|
input.value = name;
|
|
input.id = id;
|
|
input.onchange = () => setMarkWhenChecked(name);
|
|
div.appendChild(input);
|
|
|
|
// Preserve the selected element when the checkboxes change
|
|
if (name == settings.markWhenChecked) {
|
|
input.checked = true;
|
|
}
|
|
|
|
var label = document.createElement("label");
|
|
label.innerHTML = displayName;
|
|
label.htmlFor = id;
|
|
div.appendChild(label);
|
|
|
|
container.appendChild(div);
|
|
}
|
|
createOption("", "None");
|
|
for (var checkbox of settings.checkboxes) {
|
|
createOption(checkbox, checkbox);
|
|
}
|
|
}
|
|
|
|
function updateCheckboxStats(checkbox) {
|
|
var checked = getStoredCheckboxRefs(checkbox).size;
|
|
var total = pcbdata.footprints.length - pcbdata.bom.skipped.length;
|
|
var percent = checked * 100.0 / total;
|
|
var td = document.getElementById("checkbox-stats-" + checkbox);
|
|
td.firstChild.style.width = percent + "%";
|
|
td.lastChild.innerHTML = checked + "/" + total + " (" + Math.round(percent) + "%)";
|
|
}
|
|
|
|
function constrain(number, min, max){
|
|
return Math.min(Math.max(parseInt(number), min), max);
|
|
}
|
|
|
|
document.onkeydown = function (e) {
|
|
switch (e.key) {
|
|
case "n":
|
|
if (document.activeElement.type == "text") {
|
|
return;
|
|
}
|
|
if (currentHighlightedRowId !== null) {
|
|
checkBomCheckbox(currentHighlightedRowId, "placed");
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
}
|
|
break;
|
|
case "ArrowUp":
|
|
highlightPreviousRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowDown":
|
|
highlightNextRow();
|
|
e.preventDefault();
|
|
break;
|
|
case "ArrowLeft":
|
|
case "ArrowRight":
|
|
if (document.activeElement.type != "text"){
|
|
e.preventDefault();
|
|
let boardRotationElement = document.getElementById("boardRotation")
|
|
settings.boardRotation = parseInt(boardRotationElement.value); // degrees / 5
|
|
if (e.key == "ArrowLeft"){
|
|
settings.boardRotation += 3; // 15 degrees
|
|
}
|
|
else{
|
|
settings.boardRotation -= 3;
|
|
}
|
|
settings.boardRotation = constrain(settings.boardRotation, boardRotationElement.min, boardRotationElement.max);
|
|
boardRotationElement.value = settings.boardRotation
|
|
setBoardRotation(settings.boardRotation);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.altKey) {
|
|
switch (e.key) {
|
|
case "f":
|
|
focusFilterField();
|
|
e.preventDefault();
|
|
break;
|
|
case "r":
|
|
focusRefLookupField();
|
|
e.preventDefault();
|
|
break;
|
|
case "z":
|
|
changeBomLayout("bom-only");
|
|
e.preventDefault();
|
|
break;
|
|
case "x":
|
|
changeBomLayout("left-right");
|
|
e.preventDefault();
|
|
break;
|
|
case "c":
|
|
changeBomLayout("top-bottom");
|
|
e.preventDefault();
|
|
break;
|
|
case "v":
|
|
changeCanvasLayout("F");
|
|
e.preventDefault();
|
|
break;
|
|
case "b":
|
|
changeCanvasLayout("FB");
|
|
e.preventDefault();
|
|
break;
|
|
case "n":
|
|
changeCanvasLayout("B");
|
|
e.preventDefault();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e.key >= '1' && e.key <= '9') {
|
|
toggleBomCheckbox(currentHighlightedRowId, parseInt(e.key));
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
}
|
|
|
|
function hideNetlistButton() {
|
|
document.getElementById("bom-ungrouped-btn").classList.remove("middle-button");
|
|
document.getElementById("bom-ungrouped-btn").classList.add("right-most-button");
|
|
document.getElementById("bom-netlist-btn").style.display = "none";
|
|
}
|
|
|
|
window.onload = function (e) {
|
|
initUtils();
|
|
initRender();
|
|
initStorage();
|
|
initDefaults();
|
|
cleanGutters();
|
|
populateMetadata();
|
|
dbgdiv = document.getElementById("dbg");
|
|
bom = document.getElementById("bombody");
|
|
bomhead = document.getElementById("bomhead");
|
|
filter = "";
|
|
reflookup = "";
|
|
if (!("nets" in pcbdata)) {
|
|
hideNetlistButton();
|
|
}
|
|
initDone = true;
|
|
setBomCheckboxes(document.getElementById("bomCheckboxes").value);
|
|
// Triggers render
|
|
changeBomLayout(settings.bomlayout);
|
|
|
|
// Users may leave fullscreen without touching the checkbox. Uncheck.
|
|
document.addEventListener('fullscreenchange', () => {
|
|
if (!document.fullscreenElement)
|
|
document.getElementById('fullscreenCheckbox').checked = false;
|
|
});
|
|
}
|
|
|
|
window.onresize = resizeAll;
|
|
window.matchMedia("print").addListener(resizeAll);
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
///////////////////////////////////////////////
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="topmostdiv" class="topmostdiv">
|
|
<div id="top">
|
|
<div style="float: right; height: 100%;">
|
|
<div class="hideonprint menu" style="float: right; top: 8px;">
|
|
<button class="menubtn"></button>
|
|
<div class="menu-content">
|
|
<label class="menu-label menu-label-top" style="width: calc(50% - 18px)">
|
|
<input id="darkmodeCheckbox" type="checkbox" onchange="setDarkMode(this.checked)">
|
|
Dark mode
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label menu-label-top" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="fullscreenCheckbox" type="checkbox" onchange="setFullscreen(this.checked)">
|
|
Full Screen
|
|
</label>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="fabricationCheckbox" type="checkbox" checked onchange="fabricationVisible(this.checked)">
|
|
Fab layer
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="silkscreenCheckbox" type="checkbox" checked onchange="silkscreenVisible(this.checked)">
|
|
Silkscreen
|
|
</label>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="referencesCheckbox" type="checkbox" checked onchange="referencesVisible(this.checked)">
|
|
References
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="valuesCheckbox" type="checkbox" checked onchange="valuesVisible(this.checked)">
|
|
Values
|
|
</label>
|
|
<div id="tracksAndZonesCheckboxes">
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="tracksCheckbox" type="checkbox" checked onchange="tracksVisible(this.checked)">
|
|
Tracks
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="zonesCheckbox" type="checkbox" checked onchange="zonesVisible(this.checked)">
|
|
Zones
|
|
</label>
|
|
</div>
|
|
<label class="menu-label" style="width: calc(50% - 18px)">
|
|
<input id="padsCheckbox" type="checkbox" checked onchange="padsVisible(this.checked)">
|
|
Pads
|
|
</label><!-- This comment eats space! All of it!
|
|
--><label class="menu-label" style="width: calc(50% - 17px); border-left: 0;">
|
|
<input id="dnpOutlineCheckbox" type="checkbox" checked onchange="dnpOutline(this.checked)">
|
|
DNP outlined
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="highlightpin1Checkbox" type="checkbox" onchange="setHighlightPin1(this.checked)">
|
|
Highlight first pin
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="dragCheckbox" type="checkbox" checked onchange="setRedrawOnDrag(this.checked)">
|
|
Continuous redraw on drag
|
|
</label>
|
|
<label class="menu-label">
|
|
<span>Board rotation</span>
|
|
<span style="float: right"><span id="rotationDegree">0</span>°</span>
|
|
<input id="boardRotation" type="range" min="-36" max="36" value="0" class="slider" oninput="setBoardRotation(this.value)">
|
|
</label>
|
|
<label class="menu-label">
|
|
<input id="offsetBackRotationCheckbox" type="checkbox" onchange="setOffsetBackRotation(this.checked)">
|
|
Offset back rotation
|
|
</label>
|
|
<label class="menu-label">
|
|
<div style="margin-left: 5px">Bom checkboxes</div>
|
|
<input id="bomCheckboxes" class="menu-textbox" type=text
|
|
oninput="setBomCheckboxes(this.value)">
|
|
</label>
|
|
<label class="menu-label">
|
|
<div style="margin-left: 5px">Mark when checked</div>
|
|
<div id="markWhenCheckedContainer"></div>
|
|
</label>
|
|
<label class="menu-label">
|
|
<span class="shameless-plug">
|
|
<span>Created using</span>
|
|
<a id="github-link" target="blank" href="https://github.com/openscopeproject/InteractiveHtmlBom">InteractiveHtmlBom</a>
|
|
<a target="blank" title="Mouse and keyboard help" href="https://github.com/openscopeproject/InteractiveHtmlBom/wiki/Usage#bom-page-mouse-actions" style="text-decoration: none;"><label class="help-link">?</label></a>
|
|
</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="button-container hideonprint"
|
|
style="float: right; position: relative; top: 8px">
|
|
<button id="fl-btn" class="left-most-button" onclick="changeCanvasLayout('F')"
|
|
title="Front only">F
|
|
</button>
|
|
<button id="fb-btn" class="middle-button" onclick="changeCanvasLayout('FB')"
|
|
title="Front and Back">FB
|
|
</button>
|
|
<button id="bl-btn" class="right-most-button" onclick="changeCanvasLayout('B')"
|
|
title="Back only">B
|
|
</button>
|
|
</div>
|
|
<div class="button-container hideonprint"
|
|
style="float: right; position: relative; top: 8px">
|
|
<button id="bom-btn" class="left-most-button" onclick="changeBomLayout('bom-only')"
|
|
title="BOM only"></button>
|
|
<button id="lr-btn" class="middle-button" onclick="changeBomLayout('left-right')"
|
|
title="BOM left, drawings right"></button>
|
|
<button id="tb-btn" class="right-most-button" onclick="changeBomLayout('top-bottom')"
|
|
title="BOM top, drawings bot"></button>
|
|
</div>
|
|
<div class="button-container hideonprint"
|
|
style="float: right; position: relative; top: 8px">
|
|
<button id="bom-grouped-btn" class="left-most-button" onclick="changeBomMode('grouped')"
|
|
title="Grouped BOM"></button>
|
|
<button id="bom-ungrouped-btn" class="middle-button" onclick="changeBomMode('ungrouped')"
|
|
title="Ungrouped BOM"></button>
|
|
<button id="bom-netlist-btn" class="right-most-button" onclick="changeBomMode('netlist')"
|
|
title="Netlist"></button>
|
|
</div>
|
|
<div class="hideonprint menu" style="float: right; top: 8px;">
|
|
<button class="statsbtn"></button>
|
|
<div class="menu-content">
|
|
<table class="stats">
|
|
<tbody>
|
|
<tr>
|
|
<td width="40%">Board stats</td>
|
|
<td>Front</td>
|
|
<td>Back</td>
|
|
<td>Total</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Components</td>
|
|
<td id="stats-components-front">~</td>
|
|
<td id="stats-components-back">~</td>
|
|
<td id="stats-components-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Groups</td>
|
|
<td id="stats-groups-front">~</td>
|
|
<td id="stats-groups-back">~</td>
|
|
<td id="stats-groups-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>SMD pads</td>
|
|
<td id="stats-smd-pads-front">~</td>
|
|
<td id="stats-smd-pads-back">~</td>
|
|
<td id="stats-smd-pads-total">~</td>
|
|
</tr>
|
|
<tr>
|
|
<td>TH pads</td>
|
|
<td colspan=3 id="stats-th-pads">~</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<table class="stats">
|
|
<col width="40%"/><col />
|
|
<tbody id="checkbox-stats">
|
|
<tr>
|
|
<td colspan=2 style="border-top: 0">Checkboxes</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="hideonprint menu" style="float: right; top: 8px;">
|
|
<button class="iobtn"></button>
|
|
<div class="menu-content">
|
|
<div class="menu-label menu-label-top">
|
|
<div style="margin-left: 5px;">Save board image</div>
|
|
<div class="flexbox">
|
|
<input id="render-save-width" class="menu-textbox" type="text" value="1000" placeholder="Width"
|
|
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
|
|
<span>X</span>
|
|
<input id="render-save-height" class="menu-textbox" type="text" value="1000" placeholder="Height"
|
|
style="flex-grow: 1; width: 50px;" oninput="validateSaveImgDimension(this)">
|
|
</div>
|
|
<label>
|
|
<input id="render-save-transparent" type="checkbox">
|
|
Transparent background
|
|
</label>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveImage('F')">Front</button>
|
|
<button class="savebtn" onclick="saveImage('B')">Back</button>
|
|
</div>
|
|
</div>
|
|
<div class="menu-label">
|
|
<span style="margin-left: 5px;">Config and checkbox state</span>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveSettings()">Export</button>
|
|
<button class="savebtn" onclick="loadSettings()">Import</button>
|
|
</div>
|
|
</div>
|
|
<div class="menu-label">
|
|
<span style="margin-left: 5px;">Save bom table as</span>
|
|
<div class="flexbox">
|
|
<button class="savebtn" onclick="saveBomTable('csv')">csv</button>
|
|
<button class="savebtn" onclick="saveBomTable('txt')">txt</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="fileinfodiv" style="overflow: auto;">
|
|
<table class="fileinfo">
|
|
<tbody>
|
|
<tr>
|
|
<td id="title" class="title" style="width: 70%">
|
|
Title
|
|
</td>
|
|
<td id="revision" class="title" style="width: 30%">
|
|
Revision
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td id="company">
|
|
Company
|
|
</td>
|
|
<td id="filedate">
|
|
Date
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div id="bot" class="split" style="height: calc(100% - 80px)">
|
|
<div id="bomdiv" class="split split-horizontal">
|
|
<div style="width: 100%">
|
|
<input id="reflookup" class="textbox searchbox reflookup hideonprint" type="text" placeholder="Ref lookup"
|
|
oninput="updateRefLookup(this.value)">
|
|
<input id="filter" class="textbox searchbox filter hideonprint" type="text" placeholder="Filter"
|
|
oninput="updateFilter(this.value)">
|
|
<div class="button-container hideonprint" style="float: left; margin: 0;">
|
|
<button id="copy" title="Copy bom table to clipboard"
|
|
onclick="saveBomTable('clipboard')"></button>
|
|
</div>
|
|
</div>
|
|
<div id="dbg"></div>
|
|
<table class="bom" id="bomtable">
|
|
<thead id="bomhead">
|
|
</thead>
|
|
<tbody id="bombody">
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div id="canvasdiv" class="split split-horizontal">
|
|
<div id="frontcanvas" class="split" touch-action="none" style="overflow: hidden">
|
|
<div style="position: relative; width: 100%; height: 100%;">
|
|
<canvas id="F_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
|
|
<canvas id="F_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
|
|
<canvas id="F_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
|
|
<canvas id="F_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
|
|
</div>
|
|
</div>
|
|
<div id="backcanvas" class="split" touch-action="none" style="overflow: hidden">
|
|
<div style="position: relative; width: 100%; height: 100%;">
|
|
<canvas id="B_bg" style="position: absolute; left: 0; top: 0; z-index: 0;"></canvas>
|
|
<canvas id="B_fab" style="position: absolute; left: 0; top: 0; z-index: 1;"></canvas>
|
|
<canvas id="B_slk" style="position: absolute; left: 0; top: 0; z-index: 2;"></canvas>
|
|
<canvas id="B_hl" style="position: absolute; left: 0; top: 0; z-index: 3;"></canvas>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|