From 5090bdba777a8e3fa597a8fd95d53ff3cbe6e451 Mon Sep 17 00:00:00 2001 From: YoumuKon <38815081+YoumuKon@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:02:46 +0800 Subject: [PATCH] Dev bugfix (#352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 搬运了ArrangeCards。 - 优化了GuanxingBox的操作 - 修复了不能及时更新技能prompt的bug - 取消目标后会刷新目标选择 - 完备了借刀的牌名 --------- Co-authored-by: notify --- Fk/Pages/RoomLogic.js | 77 +++- Fk/RoomElement/ArrangeCardsBox.qml | 423 ++++++++++++++++++ Fk/RoomElement/Dashboard.qml | 10 +- Fk/RoomElement/GuanxingBox.qml | 220 +++++++-- .../standard_cards/image/card/collateral.png | Bin 22222 -> 26035 bytes 5 files changed, 687 insertions(+), 43 deletions(-) create mode 100644 Fk/RoomElement/ArrangeCardsBox.qml diff --git a/Fk/Pages/RoomLogic.js b/Fk/Pages/RoomLogic.js index e4fff394..708d7a51 100644 --- a/Fk/Pages/RoomLogic.js +++ b/Fk/Pages/RoomLogic.js @@ -718,6 +718,40 @@ function updateSelectedTargets(playerid, selected) { } if (candidate) { + if (!selected) { + const remain_targets = []; + selected_targets.forEach(id => { + const photo = getPhoto(id); + const ret = lcall("CanUseCardToTarget", card, id, remain_targets, + JSON.stringify(roomScene.extra_data)); + let bool = ret; + if (roomScene.extra_data instanceof Object) { + const must = roomScene.extra_data.must_targets; + const included = roomScene.extra_data.include_targets; + const exclusive = roomScene.extra_data.exclusive_targets; + if (exclusive instanceof Array) { + if (exclusive.indexOf(id) === -1) bool = false; + } + if (must instanceof Array) { + if (must.filter((val) => { + return remain_targets.indexOf(val) === -1; + }).length !== 0 && must.indexOf(id) === -1) bool = false; + } + if (included instanceof Array) { + if (included.filter((val) => { + return remain_targets.indexOf(val) !== -1; + }).length === 0 && included.indexOf(id) === -1) bool = false; + } + } + if (bool) { + remain_targets.push(id); + } else { + photo.selected = false; + } + }) + selected_targets = remain_targets; + } + roomScene.resetPrompt(); // update prompt due to selected_targets const prompt = lcall("ActiveSkillPrompt", dashboard.pending_skill !== "" ? dashboard.pending_skill: lcall("GetCardSkill", card), @@ -779,6 +813,10 @@ function updateSelectedTargets(playerid, selected) { } } } + const prompt = lcall("CardPrompt", card, selected_targets); + if (prompt !== "") { + roomScene.setPrompt(Util.processPrompt(prompt)); + } } else { all_photos.forEach(photo => { photo.state = "normal"; @@ -1014,8 +1052,31 @@ callbacks["AskForSkillInvoke"] = (data) => { roomScene.cancelButton.enabled = true; } +callbacks["AskForArrangeCards"] = (data) => { + roomScene.state = "replying"; + roomScene.popupBox.sourceComponent = + Qt.createComponent("../RoomElement/ArrangeCardsBox.qml"); + const box = roomScene.popupBox.item; + const cards = data.cards; + box.cards = cards.reduce((newArray, elem) => { + return newArray.concat(elem.map(cid => lcall("GetCardData", cid))); + }, []); + box.org_cards = cards; + box.prompt = data.prompt; + box.size = data.size; + box.areaCapacities = data.capacities; + box.areaLimits = data.limits; + box.free_arrange = data.is_free; + box.areaNames = data.names; + box.pattern = data.pattern; + box.poxi_type = data.poxi_type; + box.cancelable = data.cancelable; + + box.initializeCards(); +} + callbacks["AskForGuanxing"] = (data) => { - const cards = []; + const cards = data.cards; const min_top_cards = data.min_top_cards; const max_top_cards = data.max_top_cards; const min_bottom_cards = data.min_bottom_cards; @@ -1026,9 +1087,9 @@ callbacks["AskForGuanxing"] = (data) => { roomScene.state = "replying"; roomScene.popupBox.sourceComponent = Qt.createComponent("../RoomElement/GuanxingBox.qml"); - data.cards.forEach(id => cards.push(lcall("GetCardData", id))); const box = roomScene.popupBox.item; box.prompt = prompt; + box.free_arrange = data.is_free; if (max_top_cards === 0) { box.areaCapacities = [max_bottom_cards]; box.areaLimits = [min_bottom_cards]; @@ -1044,8 +1105,11 @@ callbacks["AskForGuanxing"] = (data) => { box.areaNames = [luatr(top_area_name), luatr(bottom_area_name)]; } } - box.cards = cards; - box.arrangeCards(); + box.org_cards = cards; + box.cards = cards.reduce((newArray, elem) => { + return newArray.concat(elem.map(cid => lcall("GetCardData", cid))); + }, []); + box.initializeCards(); box.accepted.connect(() => { replyToServer(JSON.stringify(box.getResult())); }); @@ -1061,6 +1125,7 @@ callbacks["AskForExchange"] = (data) => { Qt.createComponent("../RoomElement/GuanxingBox.qml"); let for_i = 0; const box = roomScene.popupBox.item; + box.org_cards = data.piles; data.piles.forEach(ids => { if (ids.length > 0) { ids.forEach(id => cards.push(lcall("GetCardData", id))); @@ -1070,11 +1135,11 @@ callbacks["AskForExchange"] = (data) => { for_i ++; } }); + box.cards = cards; box.areaCapacities = capacities box.areaLimits = limits box.areaNames = cards_name - box.cards = cards; - box.arrangeCards(); + box.initializeCards(); box.accepted.connect(() => { replyToServer(JSON.stringify(box.getResult())); }); diff --git a/Fk/RoomElement/ArrangeCardsBox.qml b/Fk/RoomElement/ArrangeCardsBox.qml new file mode 100644 index 00000000..66b937d9 --- /dev/null +++ b/Fk/RoomElement/ArrangeCardsBox.qml @@ -0,0 +1,423 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick +import QtQuick.Layouts +import Fk +import Fk.Pages +import Fk.RoomElement + +GraphicsBox { + id: root + property string prompt + property var cards: [] + property var org_cards: [] + property var result: [] + property var areaCapacities: [] + property var areaLimits: [] + property var areaNames: [] + property var dragging_card: "" + property var movepos: [] + property bool free_arrange: true + property bool cancelable: false + property string poxi_type: "" + property string pattern: "." + property int size: 0 + property int padding: 25 + + title.text: Backend.translate(prompt !== "" ? Util.processPrompt(prompt) : "Please arrange cards") + width: body.width + padding * 2 + height: title.height + body.height + padding * 2 + + ColumnLayout { + id: body + x: padding + y: parent.height - padding - height + spacing: 10 + + Repeater { + id: areaRepeater + model: areaCapacities + + Row { + spacing: 7 + + property int areaCapacity: modelData + property string areaName: index < areaNames.length ? qsTr(Backend.translate(areaNames[index])) : "" + + Rectangle { + anchors.verticalCenter: parent.verticalCenter + color: "#6B5D42" + width: 20 + height: 100 + radius: 5 + + Text { + anchors.fill: parent + width: 20 + height: 100 + text: areaName + color: "white" + font.family: fontLibian.name + font.pixelSize: 18 + style: Text.Outline + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + + Repeater { + id: cardRepeater + model: (size === 0) ? areaCapacity : 1 + + Rectangle { + color: "#1D1E19" + width: (size === 0) ? 93 : size * 100 - 7 + height: 130 + + } + } + property alias cardRepeater: cardRepeater + } + } + + Row { + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + spacing: 32 + + MetroButton { + width: 120 + height: 35 + id: buttonConfirm + text: luatr("OK") + onClicked: { + close(); + roomScene.state = "notactive"; + const reply = JSON.stringify(getResult()); + ClientInstance.replyToServer("", reply); + } + } + + MetroButton { + width: 120 + height: 35 + text: luatr("Cancel") + visible: root.cancelable + onClicked: { + close(); + roomScene.state = "notactive"; + const ret = []; + let i; + for (i = 0; i < result.length; i++) { + ret.push([]); + } + const reply = JSON.stringify(ret); + ClientInstance.replyToServer("", reply); + } + } + } + + } + + Repeater { + id: cardItem + model: cards + + CardItem { + x: index + y: -1 + cid: modelData.cid + name: modelData.name + suit: modelData.suit + number: modelData.number + draggable: true + onReleased: updateCardReleased(this); + onDraggingChanged: { + if (!dragging) return; + dragging_card = this; + let i, card + for (i = 0; i < cardItem.count; i++) { + card = cardItem.itemAt(i); + if (card !== this) + card.draggable = false; + } + } + onXChanged : updateCardDragging(this); + onYChanged : updateCardDragging(this); + onSelectedChanged : updateCardSelected(this); + } + } + + function updateCardDragging(_card) { + if (!_card.dragging) return; + _card.goBackAnim.stop(); + _card.opacity = 0.5 + let i, j + let box, pos, pile; + movepos = []; + for (j = 0; j <= result.length; j++) { + if (j >= result.length) { + arrangeCards(); + return; + } + pile = areaRepeater.itemAt(j); + if (pile.y === 0) { + pile.y = j * 140 + } + box = pile.cardRepeater.itemAt(0); + pos = mapFromItem(pile, box.x, box.y); + if (Math.abs(pos.y - _card.y) < 130 / 2) break; + } + if (result[j].includes(_card)) { + if (j === 0 && !free_arrange) { + arrangeCards(); + return; + } + } else if (!_card.selectable) { + arrangeCards(); + return; + } + + let card; + let index = result[j].indexOf(_card); + if (index === -1 && result[j].length === areaCapacities[j]) { + for (i = result[j].length; i > 0; i--) { + card = result[j][i-1]; + if (card === _card) continue; + if (Math.abs(card.x - _card.x) <= card.width / 2 && card.selectable) { + movepos = [j, i-1]; + break; + } + } + } else { + for (i = 0; i < result[j].length; i++) { + card = result[j][i]; + if (card.dragging) continue; + + if (card.x > _card.x) { + movepos = [j, i - ((index !==-1 && index < i) ? 1 : 0)]; + break; + } + } + if (movepos.length === 0) + movepos = [j, result[j].length - ((index === -1) ? 0 : 1)]; + + if (!free_arrange && j === 0 && org_cards[0].includes(_card.cid)) { + let a = 0, b = -1, c = -1; + i = 0; + while (i < result[j].length && a < org_cards[0].length) { + if (result[j][i].cid === org_cards[0][a]) { + if (b !==c) { + c = i; + break; + } + i++; + a++; + } else { + if (b === -1) + b = i; + if (org_cards[0].includes(result[j][i].cid)) { + a++; + } else { + i++; + } + } + } + if (b === -1) b = result[j].length; + if (c === -1) c = result[j].length; + + if (b === c) + movepos = [j, b]; + else if (movepos[1] < b || (movepos[1] > c && c !==-1)) + movepos = []; + } + } + arrangeCards(); + } + + function updateCardReleased(_card) { + let i, j; + if (movepos.length === 2) { + for (j = 0; j < result.length; j++) { + i = result[j].indexOf(_card); + if (i !==-1) { + if (j !==movepos[0] && result[movepos[0]].length === areaCapacities[movepos[0]]) { + result[j][i] = result[movepos[0]][movepos[1]]; + result[movepos[0]][movepos[1]] = _card; + if (!free_arrange && result[0].length < areaCapacities[0]) + result[0].sort((a, b) => org_cards[0].indexOf(a.cid) - org_cards[0].indexOf(b.cid)); + } else { + result[j].splice(i, 1); + result[movepos[0]].splice(movepos[1], 0, _card); + } + movepos = []; + break; + } + } + } + dragging_card = ""; + arrangeCards(); + } + + function updateCardSelected(_card) { + let i = result[0].indexOf(_card); + let j; + if (i === -1) { + if (result[0].length < areaCapacities[0]) { + if (free_arrange || !org_cards[0].includes(_card.cid)) { + for (j = 1; j < result.length; j++) { + i = result[j].indexOf(_card); + if (i !==-1) { + result[j].splice(i, 1); + result[0].push(_card); + arrangeCards(); + break; + } + } + } else { + i = 0; + j = 0; + while (i < result[0].length && j < org_cards[0].length) { + if (org_cards[0][j] === _card.cid) break; + if (result[0][i].cid === org_cards[0][j]) { + i++; + j++; + } else { + if (org_cards[0].includes(result[0][i].cid)) + j++; + else + i++; + } + } + let index; + for (j = 1; j < result.length; j++) { + index = result[j].indexOf(_card); + if (index !== -1) { + result[j].splice(index, 1); + result[0].splice(i, 0, _card); + arrangeCards(); + break; + } + } + } + } + } else { + for (j = 1; j < result.length; j++) { + if (result[j].length < areaCapacities[j]) { + result[0].splice(i, 1); + result[j].push(_card); + arrangeCards(); + break; + } + } + } + } + + function arrangeCards() { + let i, j, a, b; + let card, box, pos, pile; + let spacing; + let same_row; + let c_result = getResult(); + let is_exchange = (movepos.length === 2 && !result[movepos[0]].includes(dragging_card) && result[movepos[0]].length === areaCapacities[movepos[0]]) + for (j = 0; j < result.length; j++) { + pile = areaRepeater.itemAt(j); + box = pile.cardRepeater.itemAt(0); + if (pile.y === 0) { + pile.y = j * 140 + } + a = result[j].length; + if (movepos.length === 2) { + if (movepos[0] === j && !result[j].includes(dragging_card) && result[j].length < areaCapacities[j]) { + a++; + } else if (movepos[0] !== j && result[j].includes(dragging_card)) { + a--; + } + } + spacing = (size > 0 && a > size) ? ((size - 1) * 100 / (a - 1)) : 100; + b = 0; + for (i = 0; i < result[j].length; i++) { + card = result[j][i]; + if (card.dragging) { + if (movepos.length !== 2 || movepos[0] !== j) + b++; + continue; + } + if (movepos.length === 2 && movepos[0] === j && b === movepos[1] && !is_exchange) + b++; + pos = mapFromItem(pile, box.x, box.y); + card.glow.visible = false; + card.chosenInBox = (movepos.length === 2 && result[j].length === areaCapacities[j] && movepos[0] === j && movepos[1] === b); + card.origX = (movepos.length === 2 && movepos[0] === j && b > (movepos[1] - (is_exchange ? 0 : 1))) ? (pos.x + (b - 1) * spacing + 100) : (pos.x + b * spacing); + card.origY = pos.y; + card.opacity = 1; + card.z = i + 1; + card.initialZ = i + 1; + card.maxZ = cardItem.count; + + if (poxi_type !== "") + card.selectable = lcall("PoxiFilter", poxi_type, card.cid, [dragging_card.cid], c_result, org_cards); + else if (pattern !== ".") + card.selectable = lcall("CardFitPattern", card.cid, pattern); + else { + if (free_arrange || dragging_card === "") + card.selectable = true; + else if (result[j].length < areaCapacities[j] + (result[j].includes(dragging_card) ? 1 : 0)) + card.selectable = (j !== 0); + else { + if (j === 0) + card.selectable = !org_cards[0].includes(dragging_card.cid) || i === org_cards[0].indexOf(dragging_card.cid); + else { + if (result[0].includes(dragging_card)) + card.selectable = result[0].length < areaCapacities[0] || !org_cards[0].includes(card.cid) || card.cid === org_cards[0][result[0].indexOf(dragging_card)] + else + card.selectable = org_cards[0].includes(dragging_card.cid) || card.cid === org_cards[0][result[0].indexOf(dragging_card)] + } + } + } + card.draggable = (dragging_card === "") && (free_arrange || j > 0 || card.selectable); + card.goBack(true); + b++; + } + } + + for (i = 0; i < areaRepeater.count; i++) { + if (result[i].length < areaLimits[i]) { + buttonConfirm.enabled = false; + break; + } + buttonConfirm.enabled = poxi_type ? lcall("PoxiFeasible", poxi_type, [], c_result, org_cards) : true; + } + } + + function initializeCards() { + result = new Array(areaCapacities.length); + let i, j; + let k = 0; + for (i = 0; i < result.length; i++){ + result[i] = []; + } + + let card; + + for (j = 0; j < org_cards.length; j++){ + for (i = 0; i < org_cards[j].length; i++){ + result[j].push(cardItem.itemAt(k)); + k++; + } + } + + arrangeCards(); + } + + function getResult() { + const ret = []; + result.forEach(t => { + const t2 = []; + t.forEach(v => t2.push(v.cid)); + ret.push(t2); + }); + return ret; + } +} diff --git a/Fk/RoomElement/Dashboard.qml b/Fk/RoomElement/Dashboard.qml index e91a05e0..6ab8b42c 100644 --- a/Fk/RoomElement/Dashboard.qml +++ b/Fk/RoomElement/Dashboard.qml @@ -322,11 +322,6 @@ RowLayout { const enabled_cards = []; const targets = roomScene.selected_targets; - const prompt = lcall("ActiveSkillPrompt", pending_skill, pendings, - targets); - if (prompt !== "") { - roomScene.setPrompt(Util.processPrompt(prompt)); - } handcardAreaItem.cards.forEach((card) => { if (card.selected || lcall("ActiveCardFilter", pending_skill, card.cid, @@ -373,6 +368,11 @@ RowLayout { pending_card = -1; cardSelected(pending_card); } + const prompt = lcall("ActiveSkillPrompt", pending_skill, pendings, + targets); + if (prompt !== "") { + roomScene.setPrompt(Util.processPrompt(prompt)); + } } function startPending(skill_name) { diff --git a/Fk/RoomElement/GuanxingBox.qml b/Fk/RoomElement/GuanxingBox.qml index 0023ad34..f3fb69a1 100644 --- a/Fk/RoomElement/GuanxingBox.qml +++ b/Fk/RoomElement/GuanxingBox.qml @@ -8,10 +8,14 @@ GraphicsBox { id: root property string prompt property var cards: [] + property var org_cards: [] + property var movepos: [] + property var dragging_card: "" property var result: [] property var areaCapacities: [] property var areaLimits: [] property var areaNames: [] + property bool free_arrange: true property int padding: 25 title.text: luatr(prompt !== "" ? prompt : "Please arrange cards") @@ -103,59 +107,191 @@ GraphicsBox { number: modelData.number mark: modelData.mark draggable: true - onReleased: arrangeCards(); + onDraggingChanged: { + if (!dragging) return; + dragging_card = this; + let i, card + for (i = 0; i < cardItem.count; i++) { + card = cardItem.itemAt(i); + if (card !== this) + card.draggable = false; + } + } + onReleased: updateCardReleased(this); + onXChanged : updateCardDragging(this); + onYChanged : updateCardDragging(this); } } - function arrangeCards() { - result = new Array(areaCapacities.length); - let i; - for (i = 0; i < result.length; i++){ - result[i] = []; + function updateCardDragging(_card) { + if (!_card.dragging) return; + _card.goBackAnim.stop(); + _card.opacity = 0.5 + let i, j + let box, pos, pile; + movepos = []; + for (j = 0; j <= result.length; j++) { + if (j >= result.length) { + arrangeCards(); + return; + } + pile = areaRepeater.itemAt(j); + if (pile.y === 0) { + pile.y = j * 150 + } + box = pile.cardRepeater.itemAt(0); + pos = mapFromItem(pile, box.x, box.y); + if (Math.abs(pos.y - _card.y) < 130 / 2) break; + } + if (result[j].includes(_card)) { + if (j === 0 && !free_arrange) { + arrangeCards(); + return; + } + } else if (!_card.selectable) { + arrangeCards(); + return; } - let card, j, area, cards, stay; - for (i = 0; i < cardItem.count; i++) { - card = cardItem.itemAt(i); - - stay = true; - for (j = areaRepeater.count - 1; j >= 0; j--) { - area = areaRepeater.itemAt(j); - cards = result[j]; - if (cards.length < areaCapacities[j] && card.y >= area.y) { - cards.push(card); - stay = false; + let card; + let index = result[j].indexOf(_card); + if (index === -1 && result[j].length === areaCapacities[j]) { + for (i = result[j].length; i > 0; i--) { + card = result[j][i-1]; + if (card === _card) continue; + if (Math.abs(card.x - _card.x) <= card.width / 2 && card.selectable) { + movepos = [j, i-1]; break; } } + } else { + for (i = 0; i < result[j].length; i++) { + card = result[j][i]; + if (card.dragging) continue; - if (stay) { - for (j = 0; j < areaRepeater.count; j++) { - if (result[j].length < areaCapacities[j]) { - result[j].push(card); - break; + if (card.x > _card.x) { + movepos = [j, i - ((index !==-1 && index < i) ? 1 : 0)]; + break; + } + } + if (movepos.length === 0) + movepos = [j, result[j].length - ((index === -1) ? 0 : 1)]; + + if (!free_arrange && j === 0 && org_cards[0].includes(_card.cid)) { + let a = 0, b = -1, c = -1; + i = 0; + while (i < result[j].length && a < org_cards[0].length) { + if (result[j][i].cid === org_cards[0][a]) { + if (b !==c) { + c = i; + break; + } + i++; + a++; + } else { + if (b === -1) + b = i; + if (org_cards[0].includes(result[j][i].cid)) { + a++; + } else { + i++; + } } } + if (b === -1) b = result[j].length; + if (c === -1) c = result[j].length; + + if (b === c) + movepos = [j, b]; + else if (movepos[1] < b || (movepos[1] > c && c !==-1)) + movepos = []; + } + } + arrangeCards(); + } + + function updateCardReleased(_card) { + let i, j; + if (movepos.length === 2) { + for (j = 0; j < result.length; j++) { + i = result[j].indexOf(_card); + if (i !==-1) { + if (j !==movepos[0] && result[movepos[0]].length === areaCapacities[movepos[0]]) { + result[j][i] = result[movepos[0]][movepos[1]]; + result[movepos[0]][movepos[1]] = _card; + if (!free_arrange && result[0].length < areaCapacities[0]) + result[0].sort((a, b) => org_cards[0].indexOf(a.cid) - org_cards[0].indexOf(b.cid)); + } else { + result[j].splice(i, 1); + result[movepos[0]].splice(movepos[1], 0, _card); + } + movepos = []; + break; + } } } - for(i = 0; i < result.length; i++) - result[i].sort((a, b) => a.x - b.x); + dragging_card = ""; + arrangeCards(); + } - - - let box, pos, pile; - for (j = 0; j < areaRepeater.count; j++) { + function arrangeCards() { + let i, j, a, b; + let card, box, pos, pile; + let spacing; + let same_row; + let c_result = getResult(); + let is_exchange = (movepos.length === 2 && !result[movepos[0]].includes(dragging_card) && result[movepos[0]].length === areaCapacities[movepos[0]]) + for (j = 0; j < result.length; j++) { pile = areaRepeater.itemAt(j); - if (pile.y === 0){ + box = pile.cardRepeater.itemAt(0); + if (pile.y === 0) { pile.y = j * 150 } + a = result[j].length; + if (movepos.length === 2) { + if (movepos[0] === j && !result[j].includes(dragging_card) && result[j].length < areaCapacities[j]) { + a++; + } else if (movepos[0] !== j && result[j].includes(dragging_card)) { + a--; + } + } + spacing = 100; + b = 0; for (i = 0; i < result[j].length; i++) { - box = pile.cardRepeater.itemAt(i); - pos = mapFromItem(pile, box.x, box.y); card = result[j][i]; - card.origX = pos.x; + if (card.dragging) { + if (movepos.length !== 2 || movepos[0] !== j) + b++; + continue; + } + if (movepos.length === 2 && movepos[0] === j && b === movepos[1] && !is_exchange) + b++; + pos = mapFromItem(pile, box.x, box.y); + card.glow.visible = false; + card.origX = (movepos.length === 2 && movepos[0] === j && b > (movepos[1] - (is_exchange ? 0 : 1))) ? (pos.x + (b - 1) * spacing + 100) : (pos.x + b * spacing); card.origY = pos.y; + card.opacity = 1; + card.z = i + 1; + card.initialZ = i + 1; + card.maxZ = cardItem.count; + + if (free_arrange || dragging_card === "") + card.selectable = true; + else if (result[j].length < areaCapacities[j] + (result[j].includes(dragging_card) ? 1 : 0)) + card.selectable = (j !== 0); + else { + if (j === 0) + card.selectable = !org_cards[0].includes(dragging_card.cid) || i === org_cards[0].indexOf(dragging_card.cid); + else { + if (result[0].includes(dragging_card)) + card.selectable = result[0].length < areaCapacities[0] || !org_cards[0].includes(card.cid) || card.cid === org_cards[0][result[0].indexOf(dragging_card)] + else + card.selectable = org_cards[0].includes(dragging_card.cid) || card.cid === org_cards[0][result[0].indexOf(dragging_card)] + } + } + card.draggable = (dragging_card === "") && (free_arrange || j > 0 || card.selectable); card.goBack(true); + b++; } } @@ -168,6 +304,26 @@ GraphicsBox { } } + function initializeCards() { + result = new Array(areaCapacities.length); + let i, j; + let k = 0; + for (i = 0; i < result.length; i++){ + result[i] = []; + } + + let card; + + for (j = 0; j < org_cards.length; j++){ + for (i = 0; i < org_cards[j].length; i++){ + result[j].push(cardItem.itemAt(k)); + k++; + } + } + + arrangeCards(); + } + function getResult() { const ret = []; result.forEach(t => { diff --git a/packages/standard_cards/image/card/collateral.png b/packages/standard_cards/image/card/collateral.png index d211820863a9888c471caed1189698f018b69002..cb50a5c86642f438fff7a90da4b21288169ba2f4 100644 GIT binary patch literal 26035 zcmV*CKyAN?P)EX>4Tx07!|QmUmQB*%pV-y*Is3k`RiN&}(Q?0!R(LNRcioF$oY#z>okUHbhi# zL{X8Z2r?+(fTKf^u_B6v0a3B*1Q|rsac~qHmPur-8Q;8l@6DUvANPK1pS{oBXYYO1 zx&V;;g9XA&SP6g(p;#2*=f#MPi)Ua50Sxc}18e}`aI>>Q7WhU2nF4&+jBJ?`_!qsp z4j}paD$_rV!2tiCl(|_VF#u4QjOX(B*<2YH$v8b%oF%tU$(Xh@P0lb%&LUZYGFFpw z@+@0?_L*f5IrB1vJQ>S#&f;b8cV}o=_hCs$|GJ-ARc>v%@$zSl&FIdda6Uz_9&dgda5+tXH875p)hK-XG zi{a1DP3Mcn%rFi&jU(bQ*qIqw9N}^RX3zXt6nSkKvLZX!I5{{lZ7prSDAa#l{F{>Z zc9vd*f9@GXANa%eSALld0I;TIwb}ZIZD|z%UF!i*yZwjFU@riQvc7c=eQ_STd|pz- z;w)z?tK8gNO97v2DKF^n`kxMeLtlK)Qoh~qM8wF>;&Ay4 z=AVc79|!(*9u^V&B)*6*lto0#rc5AAmbF{R6Nm+wLWV&2pPKj&!~Ue%xt59A_z}>S zSOTRX8bE#?04OREAPIY9E70$K3&uwS`OS;bnV6mX&w~DaSGY|6$QC4jj$=neGPn{^ z&g`1}S^_j607XCp>OdRl0~5dmw!jg%01w~;0zoK<1aV+7;DQv80Yo4d6o9p$7?gso zU?->sb)XS6gEnv&bb({wG&lz?fy-b7+yPQB4xWH1@CwX85QK%u5EW8~bRa{>9I}O2 zkQ?L!1w#=~9FzzpLqbRb6+r8tQm7oNhU%ea=v(M0bQ-z<4MVq}QD_qS6?z9FFbSr? zTCfpp1+!pJI0%k}7s1K!GB_VDg15kxa07f0?u1Xnm*5dt3O|9T5r7a8I--j(5f;Km zLXmhR2@xTykP@TC$XgT!MMW`COq2`C9~Fh-qL!gnp*EwcQ3p_+ zs6NzH)F^5S^$|@*Yog83&gcMiEIJvTi!Mf2pqtPg=(Fe%^f>wz27{qvj4_TFe@q-E z6|(}f8M7PHjyZ)H#*AU6u~@7+)*S1K4aIV>Vr((C3VRTH5_<(Zj(vk8;&gDfIA2^m zPKYbSRp451CvaDA6Sx_?65bH+j1R^0@XPUK_(psWeh5E~pCKp{j0vuUNJ1)MEuoUo zMmS5jOL##f67`5q#Bid3xQ19sJVZQC93{RbQAlPaHYtH5A#EY;C!HeQBE2A!$wp)k zay(f~-a>9BpCR8TzfqtnSSkc4@Dx@n)F^Z+Tv2$Yh*vaJ^i*7|n6Fr&ctmkX@u?DC z$w-N<#8FzMRHJlM>4ws@GF90|IaE1Ad9!kh@&)Bb6fDJv;zQw4iYWUiXDDM-gsM+v zQ@PZ2)JE!A>NpKUGo}U5QfZ~MZ)k(GDHV!}ol3Myo=T0%aTO^Yp&QWy=;`z_`eFKY z`a4xERZmsE>L%4T)hnv6)#j*qsPWZG)Y{cX)ZVEx)P2;`)VHa3so&E;X_#q*YvgL| z(KxH|bPjEf%N*{Uk~xRx+}4CO%`_u4S7`3j9MGKB($@0R%F?RRI-~Veo38DlovOV< z`-JwS4pqlZN1(Gq=cLYKh6=-zkLZ@rEqJ6vJJH{f4iNjE!Q9HW+moJu+4^4lvF)ZZ*DZ zLN;+XS!U8;a?KQD$}&we-EDf=3^ubjOEIf48#0H@9n1yhyUm9!&=yV>LW>5A8%z?@ zlbOS8WsX|XErTr!ExRnASs7TxTWz!IxB6&pZ=G)4Xnn_qViRanXwzf!tF4(W*S5y? z+FbHn-?^*jcF%ooXKu&0+hcdro@yUrzrnuO{)2;~gUF%HVbamSG10Ns@dk^=3S(_% zop(Yzc{#0iI_C7&*}+-teAxLH7p6;^ON+~+dB*ej^BU)kx$3!cTZVb0Xx4mvs zcU^amdxQG}4}A}wN0Y~dr>SSE=RwbBUe;bBuMV%*Y-jdL_9<_~+t0hid(emC6XjFw zbKh6bH`%w{0a^jvfaZXyK*zw9fqg-wpantIK@Wn>fV8I2F~=-fTgudr?_nHF76Ya z2X6;&lJCkd=T9WLCY2{WN_I`&o;;c2o>GzWRKONg3!bO?r`DyuP76)jpY|y|CcQla zmywupR7eq~3Hvg&GxIWsv&^%Kv!u(Mm+f3OB?=NXWkcDEvb)7J+0WE~#6+@QGMeL- zQhTd=lZbfxFY`c=@XrK@^Z>#r_a zJ-)_o&4IOqwP|aAD6}ptFMPQ!W?fH_R?(WGvGsoITZV0)e^+=6ZO?$0o?WWq-yLr2> z?D5#sR;N{0TK8_RVDHU(zxvJwqlSuon0-0>9yUfd_J7U#y17ZCskG_Ce&K%UfrtZr z&5q5@Et)N5t#GTPb@E`s!OP!xf79K@Y^!glx0fCQha`s{f1CL2^}|7jdylY=w0&pz zU2O-oqofn+T;4g=mC_~cj_V#i8hEs~$EBy^d&}?lAJaWnb6n+k*$Kjlq7$D^=AWEC zm38Xr>EzR6y-RxUoQXYituMT9@NCf8^XGieo$2@NKY8Bu{ILtp7mi+JUF^E#aH(^^ zexTzA`yV<69R@px9EZ9uJ6-M>o;Q5riu;w*SG}*EyB2Wm(#ZUg;pqt>?FMZqM9Va~FNLGD$lbNT*KP&%S`^@CocfWZ2GB6c8HU3=m{L`|I+Sd?{wJo{Z|>UW?q-PQGavbE$eOnyO?(qGr8}v?<+r;e(3oa^zrVej8C6_ z1NVgU`*8t=>i_@%24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2j~U}4l^vU8p_!K03ZNKL_t(|+O)lQoMly&_W#}cq?@X4<|BMx<8LSPyOrWySjhCvvHcwRsd1SqA@y7_a&pZoK0pZ=|x zJ)J)v=De2i>7lQ;-=>sLNpmt z%z6Kub3`A2Kpf)2#hl>~&8HQI9=P~)XdV46YNw4qUo?%et{vQT9dn&RAI2dxS|7r) z2i&)AI=z&FvC(nXuivtB?YfPZZr!T51VYH@J)-s)gp`0l#_zA)u@KZBM@EqdAsa>&BD!K>%rSX%oIqOZE?sT{k*Dd8ru&`m{4nJO088*PMi3oMz+Zq3A-T5gQo<0wE&<3n>v= zN5+;CEd)XcWc(TszgHlIQU4o2N(n;N4NlYZ0va<)NQACU6xlRra<0P*>NiP~AsZg4 z>#$NclByXgGPY8x@qB!ot{GNGkCh71Dg;C{6k!;DW@KEYH7JeNVSIdJAOQyE&Evu~ zCowiUdEpBiHlJpeT(^7Kl71}hv1fP$X;?@pky6y5LkJ@_SY#E6h>Tw|pb$uDG#OpS z$JPE9jmJ_(u+sDzwf|$N5kexVd2eHI5F#FM5u31iN^8(6ni(}iXx%VEdqnV=7LZg)tp`#YjU?60Lj!uS)F4NfT&|J}mau8l(t` zlm=473#p9YLJEm6M2xkfF(9%wKsC&c&W998Wc{4cfX1^#3ZyjAu?I@iB;nYEVMyqQ z2r00HAl;h5NjT(Y@&ulb5YbI#+FEGqXrojtF*`krKqDiphz+W1t7{#Llx{3`8V&Kl zIkp{-S`DT&K@dhzf+h@t$T77>8UZQ{P+>@@6uLG5QbTAUw2TKR2DKOg;*V}MflTcM z85>+0MvTYJ@L@)tZPcJg05yY43_~L7gC^oZlIYrOkPWy&$oj7qAPtjDCPhzgCq}9j zbd}+q`&6$8&G4&ro~@pOu!K}V;V8M7$yQiwC))QX~eKYG#iK(Hz_63FzPocr4c`_ z;dC@8GWP0-9!85VLXv51p}jMU-O>pNrpEVj*N^VxsH2v0#+j#LJ5zKGE@Q(>PjmGr z{)wA^@HG}6aRx98B!Dt+d&lLRd(P?n!)LE$S!W3-GqGD%7S`1k~tZQ)lv?z{g{)^FHGwymAs-ga7BTR7*8lQ5)7 zK9|QZBnn0MKo7nOx%-YEv*x@rn9k+-)AKL0YuA1rdGskBeDH}w#vjodq%oxAf(y>& z`mcYUWk;Pv_h5;sq5bULwhO5>+Rzal6(%T&4g-YH5eX3y8x#@v8D@?2$4g^mOrycU z8;n>YFdB<#Oa%qa3t|&)*StHXd2<#~L(?2gI8Y0>({)Fq^Fq8 z$&$g5ApQVYq{Y3bGhto z7x1>rE@Eb4irmyxw00?p0)$X?DqV{;WD|8Z>z^QH(?Z%R)yvQghG7Pi6Knf8r zl12F2V3!&aVu`W_Z6Uc~VJ{VZI16kws4rmZteZmK}SvH;EY z?YjYZ@uf}m&ooVwqmEp{`>%XE=~N4wH*e;K|GX7|H?BE@@yQv+#wN+n&Qh*;Ois;k z+wH$%+0q4EcKJJz(!ekzIy49kjZ_M>L>Lk+6#}0?%Q;cI**uM;Au-GdLX4OO8qz>Y z6CtAoul6C0K&J*LMgw+?rU8^9iace^xwSwWg2~}wjz0DzetgUIeD&HJ*tlsYSG@Zz zT=%u>fFl3$mCtd-yDwv4pbyJ38C<-Ye4)rKKl&x@9gpzR%bWPq^Xo|_6a4144|DQK z$5F0Sc<`Yo85$ntymLNbj?tTqWW>Rd85vJRxNR5>z8-mc1U-gn)G=Jfj6~M( z+%RG+qaJx`z|scgqRZ^~Zr=O;_j1W4m+)5~`Z$S%1Ekr#{V9e=##z693y(kX951im zLN1pF;2%HtZ*w4^P$=@ZfA^(1&q*oy@a{k2yB<;)XcW_Fffa z4BDrZ%M(`e7|D?9zW)CJ_}`!YFyJsfHcm%p3&)@MI@;Q@0Q~f}8(4niv5f3kkJbul zNVGOV3X~9pVTe#fSg#F)2ph}|jS0HJM5GaWvQgJm4AX3|7ugi-2vLWc8c(l9uFVmt zj2F*_3=nB3PC}BODdW0(>0NLV7hkl7+kWyZ0Df}EJ$(M3zE(G4GMV7&tFGj&7rlW+ ziwCi78zChVYZ zCDe-1-J9`!AFt|T+XnNGIF`GAc{>k2{3LI=cnvF0IFaJiC?g{iwDtD$^7Hrb#FNkQ zmW$SK={x?0>Cu;&nV!WoO$Y-p4Ma%125O@CHlmt_X=27s-SBiojLRmbVML3fY=7Fk+#Ki0Q;^N7l5O`2DruNg5);I2kX=GSXF4ES{7K6`+J|o9x-MADCsy!g&l1 z^m6H?7x1^A{2&Vk2XMoXJv;U?G&IWORE{u=BF@f^Ea#oKnk(P;HYUcW85wup_D=?h3^Gemcjhx%P8jd@pspJ1%S`|!$*N6!?OloBB{U>u;dnjjP+3{hG~j%gZoIm2v7kP)U+Gqz#GUM!G? ziD4SCCmVA-*{B=4dGVEVczQ#_k+HlY5E`@zmTdtF)3n&NXFnr*w({;P-^&GWKA*k2 zcXRVCzu?6eH?m>V7IyC$J}lEX`>a#=_*GZ(uJ>F`VRAFGxe^H{5q-XnKHoG=l-7iP zKoEx5Nr%BD%gE=Zc*|Se2(wg?(e)epCiC_Necbxx*vpM>> zDmm}I%Y3Tm`;@`pzrD<9ZE-bZ%vKBx(~JY5$dhXUlZZW>n)Dk7 zR*j&mATOg*i}cdXvus^(-T;Z#rbbMoBqCTF1dIOU-eaP>#u$Ejz&f$5Q*s8G}1)k<+@h=2da_Zb}QW6hc~P?c%IAjC4G zFkeT}3nCPR8ib)S1QBzIrDY|fAagEH7sQ&15&z%ta498*H0OA=jFrI}q%@d|s52Ml zM5#2b-m$tTKxnWm14578d-gLp(2Jc+QO?gqX*VHRym&r0-}(z~`^jCD%GJZd%hex! zAK(%OM35INh#lP-CMGAywzks0Xel6>ncByV*L|MrZ}=e-6Vm`3ebiF^Fj(a_HD&9O$;IGAwP&nPd6k8GXfRe$Yv=+HL0x!^7J}; zG3$mj470wl3egy`20xDt-7I#AW)(7mnnwPtkqJ{;V;UyP_ZStXZOJ)C#m=|pOhL{vj+{GpbsJ=D(;%NO&bTfV`mt6xuHVh@#aHKNUy z0JD!LpS%m-54h^1?<3XH&G_D37}AVlmM9fMJwFns0EITKTWAR!|T-W>jmxv9B^XUnE+zi7&7iaNYV)4=ls5^WtUS~$oHFKobft7Oti z03MD7t&x#&Mn=Z#fl?xopjxdmF)_{9*dze=-1`tOt$m5(R;|Qya|kK%y#NrLx%wo2 zblY7N3Po(oqOCp4r#|sP{`#-qMQ8U?aua(g7hG)1K`BLdUpvEl*KzIFzX!l4u6{r0 z3W2Y%Eh`>Gg){_F>Qp0@1|d;WBb5O%PEczdL2xZY)@<~K1Z&jsc}}!hUo?$62cMJY ztiy%?Et<+74q@o;t{vCNpUL^D=vMPX`)%ddC~C!M&Gojdo^nr-2j zW0sT7_JH;n-?sxDLNbwzQ-D6wcG$XY6GKCzeD*U}vwX!W^5dfs5|~C)b%u)4l5s{o z3PUu)(1=hY4KvpB!$yudw!;7Y(f6^RzvlhC1xGDVttzEr6Y6~@0x5rzR_;M3pV#a+Mo z16O|JGyiPXOHO1X0IGSm5C*2km36SF?G<7Jc)v6p=MN~`pM^_!qF59;8JfGR| zB8Vbx#lyA}lnPa{9T`GjFg?1LAdI6rWL*E^M@eEdrag;eo4C~wDGW^0jA95t;NW>4 zQxo}mSxv+!B&lRFHexL;8HFwt*F#O0SiEc*Ua?GWdKS~PB5^NXDNxPXJq04pHHauS zsC&JZb#ej+uoqFs@aBcnsKZFDLa0_1P>VQeN@UmaQQ~k_U`+#28x+GZu^ovDqPmkr zB8d=!FbF9Xq6!7maMObty%v&nMmjHSlGBkcsV5^+*T#qx$kNL|Yyqm`~JwQ~h85pfAAnpui* zzyQdmBt?Uz)ZJG%*RSX%<2LG94lJFkU4$V8hHcDwH41Qay}UxlS**H^^ueWWk(bGX z2HOyg^BubUul7)4#JZG;jfyL_q^R*A-54FE;>3K+Qj|s@Bw^_;UR8ZycT1>8bkfLS<^g3VorUwH0MH?3c`cSfNMpS zH4i@AH8ur(T1yaNy;!wguPJmr_=_f`o}0v|=_o=T5a=`qKFnn%b8BbC!8iVzZ1@*2 zxD+@Urylu%K!u91>SHGDIaR)XrHV9-*zkvjnYlA7y0K(yranl1#l@?*4SU2k({pUs zTnQkW;H6&l*~s40WNg_qUF!lCg2TA@Yna}DX@e&ym0g}+yN;J%-h}V_NJCqp;Tti{t>KX0xOwlDp3&!YfvJp{jBL#b0X3@ zq)@BMYEUXIsTUN@;ov&v=m&YYcum;(8qNC(dpraiHg4uaANpISrg9{c2`;|)jVxZg zfNHhM?YG~>%*-q|-uU%bIIlk7VRXNyV<8QL+1UaYUvdR~eZBnrXFsUZ(uN&n-IJr} zSRu8XQ+?ck7crL()+_&otQYUs8H#9RgAT^h|33^aUiG4T+Nme8Vf_;f4Ucf=&+q16 zuf3s(hDsj!!(AM)d?^4{(xF-?9|~LMJ{Dl5B0cD)n{H*>w%xqzU2kjp=%_qf3t2DM zrYRQCQqEc4IgoNF?k)c!Q1Mz}DiW0DCP^&I;-!~2&Us&`6l>PJ zov(iNdiL)hK^hXLCG}^|?_{F)3=NI&-5YNKARA-5VcW6uiN>sNVmb|SBIjbdXo@zQ zODt%T0Yno8Y@}T0MwbUWrT8Cv?yLQ=Qw|S5@;KkP{=0neuRg&E$G@K6{`O(6x#nsf zfBbH~`5#~A#1mKH`vKp&;Rl?)`b})uusNFU3A_G#;PqK4Cssp!uDbdfip6MV-0w^3Fn8YKdCmN;kYnfUVt5&u)DcVqsV~ zzK7@e?B2bPwze#togFM%G@sG2F?Q_O$;?cS$DeqbPkrhmEE*h)Jv@OKE1BQ^&JVcx z=AUAkCcppP&q$?`eDJS6$xS!i#*s%Z<;wTHlT=%l@=PwSK4{7#G%K&-K=vY=YRPL< zaSnBCHm=|>s_lQ%xc|Muhz#zqZQD+MeB002uwe^NJ@tIO()Pfg+iv^iVb8T@%~>p8 zwgjydR-(b_Z~WfPeEG}Q1Mr>iT+96V^8om-AKt)OXJ5oM*L;bD<8b-qZza{w;2OR|hwK_v^g-ijVTiPko*s2)N>kx07mb!*^ZWLXj{~%^O+| zmUice-8C^Q#w0B?vd&Dzf757xS!ikgx%AREqm-hrua^}omUG1NrR>``#L&C2F1O1qW!NnJ!&sV?t1=g+GNU>Dm_~TcSNvF{9CbN@Ic?0|RkJitB+;J8X`_q7!)gPP0)0BUjEvJrB_cK=l+JC!Yg}pcXjg7k9>f)zU4xai3FeiyDxC+ zX%}+S4{oa$^e5s4@#0I~%PFV6k?X#80}B=ma@Lurl1ZoL=rEUDazXu*J389<;Saxs zVHgCihYEGH!OQmn`1mLOrvBcqeDyzg{p&B|o_l^zu~ufK$&U-4RvfjQ z%P+sUemz^Z?&QNC`Fq~g^HhcqQCj#|!h&pyx?SU;c|^Yhx}=rAPkJWSi>OJDjd<71ON@x-$%UAB-n ztT~5Ie)7Y#wr0tf-KI73fU4cPrY`4F#K^#+X)mUTWZ)R*RMP1_-D#;!&$z^{4- zTv~K()nWzG(B78ir$4>vpzHE0EeLGphgn}-P8(0G-_*_T0R_7f2!wA zU;SVl#^A4T8jYqjT_W9)rmL$XGL|1;S|;Ukh5!7|f8(Ny-dNYrQ>g@Jop~yt@G34| z*>5_XraW6Zgao4x**m2+0}RWYGc$a*Lg0Caya)3j8M7&SRELmw5v}D*ly1sX&JpJh zFqS^x%I9=as6mxzI$q4}5z;&eS{!(iroW?rBtKc4b6zP0nT|AXyY$TwwojL$ZSYNr z7=1W+Jn(saXvYv}D#cPfE={(Ix4(-y6>bM&daaZ>(rf1^Y+A=DS<$FQ)v*Fu>-ZpI z*g4qab(}Gg4TCh_g=(HDG7hEZ_FfU9*$i9(}HqJB?0b}4bt z+!Bp`8L{IvAxaG&YO`L~%D;8vHibaws4_qa5tk>*jOJ-uGiJU5?ThZ3b!Jp~pS zUB$gnR6Tlac(*{SASzITXfM4A>kEj{l-+3_r?n zwMA3@Pov_#1!3Uh`vEG{O;l3Xd$X9fg&_^9ZWSRVwr$~-OGs%FsDM;5g)j_C#R7h% zf|E>;NM+(O3yB|ixTR9uS;HVu5QJe|Nkx58ss$S|o^vv80a9;k5^LvXyh%+6upI{h zl*<+TYL!q0(F~5;l1L$=>MR9@X@U-;y-`XLqM~Gmlo)ZR55qDsEgQqMkfw-t@i8ZH zeqcKDV3m=^&M=LRWdM!RQQ?p01yrk5%EcmH)r{N!?QibB|47~$=1VAA-OG~zkP-~KjB(qcF?BBHu5eAe4ftk)ALm&JqrYW&Z z3#24aks~OjsJK2V43OwX9eo&*Nt$F^GNdvsScxPP<73Pg^33K6l-(*}5JV1zK$!7n zHmxvCJ1TYx15iE!jcpnjhK;YI!cfaJXvt*AX4^<*TCvlqsI~++UGc8#nJel%jEb3(sJ0dcZgh}%&L_~FgR}>$+m7RCrQFd;!cnA;vXMl*ZvWN zS0V@koOCO$ubG(1VVWlCWCBA9Y$-@MCP~MlQt_C~6$v~a(~w{}R6U=R2_3CzytsI? z>bgwL7BRJtWjQ1gNu(6mwnHYBz%;b*vLYb1MN!U)r<$>08n$E6H z2KsxMKYu>9Wkfsvjk#-Zt&a`iA&lNEm5R8(OYLZ-LsaNfDVLcV+0WG27^QrUYO#P0 zJ$ie(kR4fsA+Vhk+0I@zuiwCvkN$z3n>T`l$(aHp6M1?%+o^;hTi3t9kxSyegGaiNf?a`I%|7U!|wBo&Np->{J57v`M$LQ7)Bv{J{q}`|QbKZOzj%BiG?bB3>d7gS|FKy`*`-ey9 zXh~2FHKv`UE1keAPf(cFq|!-j6;LV$?5k>0rp7chZZ)7aDRF&CzU+}n3Iac%HJxPj ziO2G~3oc;Qu`6-X9Vi68SD{>-Wp->oqL8OjE|Qy^q);eQaVr$dF8M+cQ7+<7&9Zem zq`M_Wr8A2uLRvFvX8Zc+>M3J+2~3$p%eWnt&=C_8b7igrj2;)TH`f9RUEgJ(Jn5dR0?@?=rcJrLDlt1CLBzmF@<1Wi)6=ej{U9+C|X-G^!Mj+%OxtsLR0}<>y9K| zp#tjQ;HV*_Ytcl_qKzIA<ktV9Mslx*6xjif2)>gr_0 z(SnB_{sXz3h2uB`ZjmJ`F5v8Q&*k2q-%js>C8W}6rt%*1x-$%o=a`zQFzdtcWR=dW z13F+PAJX6DkWQGmp3CHHg<@4<09~!)w6&xe=;RW8U((}==eUm&peBH3)@&cxDne)lPkGQ&j$4M_ONf`TFQkS$DV#Rwg{P-yq&VI zS#!ooOpH$;tOQ$k?58y$=YB%}=vp#nGgaHbRAH9k6eBf~n~l zrt?*bJ}4o1?(v71*tL;`M;*^mr@x+bdp8J!!1vH9#IKa8mI`qnF-dD{E1^O_3PNQV?RePorgfv+L~r!Y?Q6* z*D|%^1$q`8MbCm|q%y56TKGMF|Hn;?4)4cyQur;MoN#g%`Jv6c=?$w{dCW2F+q0Xy zA9$Q~8@Dhy3!^h-mZZ~E$|ZL09pR}L_cH5;V4Aq0V)vBK6g5RCC8lsRzu9f zD=;-&j&^vcS}mf1Wg4`$WKc>|skpda6=6t(5?BZV4XsHF!Vn=eQUPIz($R+9IZB2& z7;emFV~Yb_y_U#`XGbDo<7BgFuNr9!LJ;~Mq3=gksoLYo2k&G5?mg@&j&jVh1)OyB z5~ikRFzggN_6(7>4bD9M6dri&S!O57eEGUF!LrHpF6Q$0eSm#izd&dILfTuB{Kt>) z$B37p=l0ykvc)fvpPFQLY=oY!Bu*m1?j1XL^y!z`Rj85xI&1@_C7!S7P8w|5KgE5| z?x5?088+_tITOPpq+2rd5A?Eh*-{4j`w0dHaf>3_}u5g7&s7D)gDn z7uYpCLrE!?WfNo*27ah84FN*MnvR~EfUD;t)Es(ZzM_n$8@1r3X^=^$@RUb22%>Iw zh9vMkq+yUuq?p{Zl{gg0~XBdW$*A9Mk37z-~S%I z|GgiuYiJUPvhEjL@gatHtj9@rvT5xTeBgCU@wCnFpV-9i@oBb?PjhseSK^5p~flNmqD^{)I zotIt6k;|7vg{9SKp_GQivK_j6dhsiH?z`;;wiPNYYEN@ScY;DCpwG6V9p9+9S67n^ zBJ^Q3Q}d8TleK*{q7h43hKXfbct|h|EX#~~7RLP)g;u=yt((;szLV!4_ywc; z_i@JRQ@G^aSMrV>``EVbB|1B@9JBg7R;*mbZQuPSxqOAe0gLhJGA)Krs>@-^c$Miu z(P2m|t>|kpNP2=vH>6|;(n*OChKv_rV_}qM_l%Ms*~zzW`W~$vodjMLr2>SE`U~_A z^z)OSujO|y?`2-vW<`IJT)v8M6v<=)$4Oz?Nle>rWIsi-2HJ3aeR!kCnq91r=_Z&_ zVbr0=NhHu=h+nN@IY|uDVrpa$&pq)6RxDY-Y{g~AzA-x6OoAX_cyt`cG}*dqn6^xU zM<0KNKRy3ED^?uAr|!R#nVD%;oOT|I&UqJ$&QY9S zo`F;=VDaF8{To00{*73v1jExscJ7@d+hVY=ubmLdSfPr*z^!^@lL{p@6F|<_6#OVW z>~2l5avAHn>E zHrZ?ob|Q&1<6Njw+p(f*o0ATi5|~?p(Uhud7+cm`1FCoiNW;W+D^cHDLy$T28J|;o;|Y)7|Rxv5$Y4AK&>qp7`ThUU$}sY~8&d5me~!?&7L7 z=kcfeZlk@mg$v&KeolSen|SGo2br4AF|>0tQis@1iq2Fg&)xNXzW>dCXU~L2SsK%V zGmcwAOKXx$(qTb=mB9B=LSorTgp|0h$FbF@HQ}wHox#JD^?wc>-h`~kFj80 zFVDWb4Nt+s!G4w;v4XE$dlsMm*hhG2!)B7{3>&xYW5L43v~~4!@|i8{eCa8+uRM;K zp=}JzU&s@`yN9WvofHZcPB`m477q6F{pck%r5 zPjcU{e#rxmts|Y3Bn;THyMW`^tT}BFr=55t?X6j)l_Zhvz)7ZKv5UIoteZ=%U(x8I zksPT1r9#5MC-l8~CuP6tVpgWD7qDmhHgXdqoO8iNRLT|dlcP*bO|fmy2<-{M zrI%hpBGby?;$?i|lUMQGZ+(kmv4|rS#~-_rU7I)HwD;1{*~Ol1o3WD_W(x(jZr@Ey zOAD`m!y2*)!Oh?P4`%ZPPCfN_M)E$7ZrH`d&?J^EFm=>JMoNL}gAZ78hHT1UL2oM= zN0OTwdEv1K`00&b=czwF#g?IfP(yD!phC_* zX%Q=rSV(tQ2f|8F4Im@Hb1PIU6`XVn7!s|+#(pen?Y_mU^mNgb`O%6n@MFC>YHgj& zW@+mkB-PrT=Jf)d1>wQRP)mmrYHE>Pw&LGCApbAuE=or zGrQS4l_L%GW-JU-Qt%bNuP~4#9ZlL01c9bl(QMvZVt!YGBNwz&Di(RuSr_sjH~$pr zq(D^}+Ovau?zojZZ~X!5_m(LFSqUqbbg^pr0E7KK%e_~<8S?OTA{wvkM> z6U$D}nh>lwdKrUDS1`P9AD&x5nkIdN^JwqvVezU{xc$F=K)&oD_w8i+OV6?DytiUl z4wql`8Frs>Hv4vNXGk2&py+F=r2sR|7WttfGz8jENWel+ ztp@BK%`-HT=bdjmi?82)4**m9cX0ntf55NrxQ(@I_cEiv1}->$5o^vlg}%OSlD0+Y zd$<)Bq>oZArD6$bI`vJ&q304-t8vog@C)eSJzX^KZ)&1DN)!4%Vd#@ew;)Z6Y-cx* z{`4oz778p{aRQ~;9OwWmm5xf!EQ7&?3u*7_W8aSL_-=(%YYWn}nVFu(YH4Hj+2@e% zTguK&FSGj6qdDdEQ4)FZh?OL=9gK|L#JtW7yQ&3}jzND`(3VM(uq}#im3+x3v;~F` z*p|RFBr|2jtQ!(&kW$l{F|ZARg=FDCALCnJ;OWO7;il`aW&MT;3<(1RDb^glf^*M1 zladnuQuh2~?!H1R+~qe3t&c9;7sxog4)ersLqbEBx6fiqI#msDuN~J3PV zrG#H9qB^5a(z>Z)qrnUR47|+6@`n0o#Qhqz2H*E^oFr4jdq`V~_U=AP#R8S$G|83@ z++vABK8GPC9bLUh%fYlPv{qP7n%4Gif=UT1ksvoS$@I`J23MRwX?BL+-F_pZ+g_%> ze}EHDI)Q;@D_C~?87RMklSpvcJ9abnpWkD8w!}bp8_NeBw(iYQ^%a&SC{zMMCGf*2 zrH6zdP|TDSnrSGD(t(%cun@F{HgJCneYcuV=^EvyX%h|PcBac1#98kv3a!0Z0OQv30Ab3IF@E~y2QQrJ;1^h$1%8SHKC4@=yoz0 zsoS9 zH&Ac`_KoLQ*w;qB9569c#rLE8&ZH!kEg8)Rq>~BGTGoLKTy~Gm;wghlHQ+mUJjmMT zU*wzu>L-en_=a!FS83z+=yr z4Xl6q(YRpKB{wmIVOb=T33@tO8J~73SK*YS=F!_>Px(3`n=MlWFTFk;!5wQe->3Y3=AD-O`Ga zN@3eJsf2?x3@p>s9j%zVWX!#I;Fn;pNv3eC6}smwz<0}xZhe70+c&d+e40unU~+5}q(io=kK*(=K^S7%Ns{R-`-k>2 zFt~uz&N>&jT%s^DgwRMr79A<3yR(5XRjxbFYAGH$S^OzalhX_N`=?rB*KpF;H zcF(YUu$vmWoWD-LQf*{27qejO{G|7g# zxe8hQIT;{I(}kXo>z1jy6{HZPTeBFJO;9PaaOn{!z_b!{_VzQfbv-*aZQ%Kr)|0Pl zhNt14JMZB1v(F-(bO?hgN`=^oB#Cq@3W4d^boBPKZ__$DIy&iGu!Jyh*|&8)+tAbySo`*J3=TRB?N{cDESb~C}s*n zScW8>GD$lomH}li#1BJST2kyTmAU2S+d1Nx<5{@kI7<0xf@+l@@Cm~J&#i!pzG}y? zENrO>+$yf?;+FGxr5u*yP^0NW>ZbB8aX3sDhmd%q#nbnyluJd*#UhSnQY}|-EQ_A` zO93Gz-r7(~Q7ufd{pII*>aj;yw_y|OcaF0!52qeEKzU}2>%aKF8JNEisTIpkJR3We z#ww>VO%v_=*tWye^c1;?F;dxf!fJ)d(IKX0W|+?9C|9d-?=GL6JGQfI`EvStx_NQK z7D5%0v?MQV8Nsrr2trMt6GezKRYiy(P=casAhagyhXgGe+msQ*QJPG`z%m5SY@6Z7 zx7@-Pulsjw%OW56cy5JqVHOqoprBAFlh4m$88%i|H|cB}iF6B=WuaBn(>Lm*&76w4 zLtuKNvg@E-6}7&(aie-IB>Cwnk}X*hnGE^S-8}fqJGkT4TUh(jI<^l@u|E$NoN@#o zd-ogBQgYw#AK|yZx{ECv*5Ou)Br;h{JAs|dfL55MiLV8@+zh4s3_-Pu>sA??oMAR! zWOg=BwOqvWe1=CSsCpjBq=VLA8&SK}ol_M|5pdQ~T}Y`(C7`cG;s}i!DynEa3HbmD zWsNBXtqBu}pfzpN)n;Lvf?wS8B#-{?KH59l0Zp|Ml{|ZHm3*}-y}4{7b}p?~pm zY{#Kcn59rE*K?|kFTtBrQ+}Y)^~S(GOB^Z4(6!`;8Whsj(X z&sR)LhrH|cCvf=%r?PR&4vNJx-JR_uGA#stmE!CyMxq77v`DqK6Zk%slsKsjqhq5? z4ew`maul~xW^8hXvFTZgWf#9v#&s(cOC4R zl1WMi+YNeCQ9-`1H02QTRgLE>Tt8$gAJvezWvr-XCV-o6{5~Ulchl0=LEw1=zK8Go zR4Nq|8atUrses*EH?w8?4o0W*6sta=ZfGuZ_r&SLv6ln;x9ED&rfpkfGHF`UsR&N0 zRfJz<`??o+_UWgw9EU)`p5YvCyWk|={JIl)?3ouRyB?>VbUf{CZB(jN=JoYcDnwti z5XlI=1c6VfFiUGT%hc2~6XWCT*u07T`-dr(UA#cyc^(SQ%+xe)wTf4*QZAP$x{9Gv z)Wun7!RU0EAk-{d(1UGBl+tu%ZI<>W8ElcH1*D9qjwN4KOyq(%n9^ht4%I4jwVUkO zHNx-ixf|_O@v0Tdl?t=@0{KFbP;2tDIks)z&c2ax3SNjXEKF&}Uy~;O?AH4Oij7pg zId2>VHGN^A8GW}81#cF&L0&Fwl-s97G7SHP;m2eoHF4LNJ=xI-r&7_#lmvKFxVp%g;R464# z*%~hhNhd5q9ep8GON->GC!b*X{N89MU7!fUs5z$}D%`4vFD!(Uz%s4q`}FDzQ6DlO zYW`auN>4u&i_}`-2O%o(DHro>Sht>SyY{eWbc*q*JnwzSg`9r!vD|zA0~k`$+1`%t z`*e18G0@*nODe_C@CcLtUwdcvBinJ`_fJ)wwNI}zJ#%O7zHlc+iXydyk`gPh9oUg2 zBeoO!AxMlM0RjXF0_Y+CL|*cehdkveKmae162q3E&@e+s;!g2iUXpiTW?y<=&Qeu* zsM9??!%JF%m8W=s2D*ECdb;aW{r2zoyR%VJ5%|Q7CF;woNDS3#LT)UbZjb(8K&L-o zn&uQ*Q>!H$Y(3z?z57hEl)b%uHg`Hq(wq<{A{d9RtJNKhNh%dCon9f!Eq6A@Or{0v zD@#0eX`M4Gb*dGCr=0)N#xj{Wbza|>3@3(34!0j{aqHIY5(;S@Ly~r?0Dc%Em50^_ zZ7f+~<})-u3sg#eE)qzTWnE*))084j$+DDt4>$Pu&Ry@XON>FjRL=|c9mH#mL%0=`lxYmv%lZ~u@^x6giO zz$7!I8lotqv$w;;ojo4x^w``zU~6x`B;geJ%JB#XzM#_^VyxxTxpmIABSxv_+TAYO z`yD*xvD9o(iF`b13Cq73WjVd!6eVGt2}Tpac&d5*t)G_Vj0)0I_<@h_JMKqgH4;N5 z5Y$7DBuNM>6_oN83SHs^e&kWf(HxPmKoE(=ngXp0q!i>?#`RkdxOIP7oOwIcR!e`cSY4EmHvR?Xu@Hq$KK{cvhe^Z6*@2Q!wT!?FQTVo z0^jH3yLYj8^u~o7@+=@wg1>tA8dvZ1SZPI!#uKD)q&B96n)pf}LXW-PfZGqYc;VS6 zc=4Ibq}dI&dj%if+ow00(nul(W6d-bBozpK$vCy-MNV26CRi$kqFI%EbmJb^F5l#9 zFTF^X7Zka6zym*^B?H!0+C1~*<2?5KS4mb+liM7fPn}N29QtHG1$L8<+~*7ZQEi|w z2H$gO@4by}I=wzmT|CS0{`NoO`7gf6pa1Apdfg6R`^rn)zWacky$)+DZMuUIc{;%s zDYa_CB+YpE@IE{DZ=nQ8VTo%EmQG(lN@zA}Jlq|zaX26hBwB+u9yji7@RO^zs8<8d zELT`=R8T6Umuj>So@K&nM|ovVhUXlg#pX;8q1BE0|nIEM9nrvXP7LTW3R-q z==%}Ti~SU8?f7LV9Kj|V+dJI2bDzs+SNYXn{uWO^_Z+YNqGpof{LnSdBOVXGTJHzV~1hN z3-CR`&fyS&)zH9WyC$K*qY*yEnE>GZ>7f42I6k1inuadBl-p_?V^w zt)Uu2=tHhytYKKV2*}6nekBBzO2l|P=Fa^Gq*;dVI~AP%V8CQFKud|LG#K?dbhkH< zT4M_{N7$W20@_E#=|{M^1y3tL2|;Ht;{Mhyl_=ng&p*erUwnxhH$LI}Kll?aT)4nX zFTc#|KY5GcFy$*>ev#ocBh3nuS`9A<%6hb7GM#Yy!*?n2jG(&2!S+MO-F;LLv%a>@ z`bvYMfc`|IwZ&JKaSGMQBg--_oj*%=m~*Q;Apm>{sexhYc9=#m8fT8`TWjjIm^ku~ zz$Amr3gQsjb%iy8ehMRFNUcR%SE2OPjBZvinq<85!AFcnBbto{SkT(wM+r%zMK&66 z@A|t;Mt!D}5k-+7GZ>3lTk%@J|yAQehaFZ-6&>A`e!@<}!HtLBW@+7+hL%%R?$^pZ~94V@2Mw1ts(KP4w z{Y|v7tgWt4O)4a{1f?X0n-95p^-YGoL#A2IBrBZxK31vybW1~icIZ+{ff+-t9d4&t zud%$m#Bk8#M?d^iu3!I%?|kRGoV{>?S6_VB^Ild#t>=%!}QN2aYMGX`ZLFWjlv z?PjC}Or{09`yJ|yCiP|uU1;`pws?5w4xMg~6pzAiOhD==aJLIE&&4?1e%izwFB`b5 zGzbIw{Q=iLzQJGq_)RWcyu`2l#<#il!B4q*{T5F?euZ;qPP4zWOFEsBWf^&vy2z)* zGxW9iu#-Ag=KAQ%})eZqgrW1eTS$&r+jGC63tG*yh!@Z{iG< zz>@;6bX*GXeSwnB7ia^MX-;=IB{!Bp3Mx*~lY;>~>}zy6vo`Zv6;IHv3Z|K*J2V^) zV4S*jxOMj)Ew9LE}^N2_T+$Gn`Zdr1MF?~&y>ySw}R z^ut?BGRt>=^E>D~=THCahYTl{OXtrLg#q2}A;a;Q>2ykwrEa!eN+$#F`Rr|Pvb*&F z{21kjM3pM_DhS6lgWHRE~%?&ns({jew;tPQ%oij}}WV!o# zM!5T(LC$n)NOKq&%f!GqgM-wNmC(c48X2G+d#o?}NClnLGR88Iz>;gj-OU4TZya!IdxSyEX_Y<48;>UhnQ@Vb6)@J8-M(Re1iK^4?#M9F?&4@G zFs0J)jMc^fA%b?zqn?B`D^3W|xK1VGOz~hp=jyfVZqO=<@s!IAK$hSj`!kbHEJQD6 zj`O#exsJh%98+8Cgg<%{Dsjvc7fy5QqwDrfD(qplX!EAa#3DD$s~6MXQ>vl982m- z(2PKNf>9xO_5b{o?d@%v%{tXEAduxroAbEaPceTS8S0~wul!l)Zk(!t!{GGCIj7on z!ocJDjho!x*unRGn$?*0N}D`$;aYBBFdDlVNWfDHPq|KgnrjZXH^69a+_=Fgvjky8 zp$mq?0p~AY;n~N}fp$l`n?pBs&TdA<8GEqWP*g%erY)JVZs6Zo3>IxIQaBT|6ewCT z_#RY4NhsZSvQ9>XL`mv_V6RuO*O?GUij|s2BZ5jSNJ3CZKG~V_=KCL0tyQU36MQA{ ztwt3Y(iRJ%N5|acUsros;Fwrsu(lSX3;N?6UkXmOn^<6DbBDAjNRp5^j#yr5(eL#b z3`S(Y#@0UlUI(Qlx+uuCrZ5)Y^AS3y(;IMWvx~Nd&gMP5FlNy2bL!j$o`3ckq=2a| zkkVqrk)sztEtG`5WSCke#x3%sEIAb!X6{AI9|@`)utV5c)oWQWVC3G4wizOtS(D>>l(vJUGCU3O@|Ui-JNM zq^CISbh*E=LnZ?Bu*1&QeOAs~U^3{FW(Aj?dX6Wqta5p+i7*ypXG|0hrYVUb2-w!X*Z8IIL^&53>Qy5@xj zB`wRX8i5~h_rWIp(U>ssn4}q#X~wYMquV{iSoa?Nv0>}seH4ZyNn8SvLYiuZqY=Z= zlrZpl?azL|&cpje)h21KxqbU4`}=z=wOTxT?%G5m0>L@e920R2VTeFqx)gMX|81V!@i*PjQXOlTOxUXLcT>+xZEwgrUb$qegcy zWNZHr&r?*w5N%zpWH=fz9*yV!c2dBtTery5DFVr4nvv!(ooc3ON?L$1IqzS+#*GiJ zF&qvETdN%G?U4<7EH~<0{qPnwU()ow`L3~LH0CLRHWpou{)HtK%EY?NG**yXH>>Um zK~!$4fBx;S^39i?W@HV$)DroEi!Di_1Y>RJPYvm`;H4Ly~+>tInnM z7NbeV)f;!wMUL-z6on>D3kqGhM$kz!Z66h<&lro0IZ-q??h$H9jFcYRdk18BPP1Mm z4Be28#WKw@3awGnN!N@GZ0>e3x?q}Rj3z0@3PxFhHn6swAcSBz)m*!N9U~NvKlLo< z&!6YTzw-)T{o2bcH5B(Z4$#_?m5G`!A@CgePF9wF8@?ovf~m2j#<3b5q=sJM$^)%X zkQu`_&e!;N-}|?myZkr;D2$*pv?vLWt$LhI+?@HrIOomxt|F!6D=)r)(K$+aoLg;^ zL;?49x@;c~9l%Svi#n6$ImT^O*R^WS*Y8)|{P8p7;guc&8tBy7f zVdn-*3yPw^SCYVUJFGWI$)_WxSxQk@bjiG5t5#^Ys!TJ(em7U#4+1v`JQ_P#cC%ii5?AOB z#-y2}f$DU-9CW&Po}`g@ctDzF?C$O`9#8Rog(nRw&4_w6L2H*a4l)p?KmgTNn^YU_ z-MmF5N%-Q6FY(J?d5#w^uG0=Rs|_)yIIJgvrMjy$PSR4rri_^bDM^&Xm*9I&!0(^_ z&M)!pfB8MYqn<%-?TKfYRm8atAE2Q-~1*^ z%^K^=EgBVtG&$4J$oV}a`HX>SK1gvSe1$!V(>=G5T}#dwgD0e;%@F2D=dHAfd6ARn zIlhv#>W)Wzr!#cfYL?OI^c;%XLg-0i0h8&38@KK-olJ-VA72?-HRtJTwQ9-9BFJ;Y z_U0DZsE5WQi~~2macYh8t9yL$@l)KoTjir0w^>~Z@FYwN!*HxgQ%kNPlukv<^C9sC zdG0Vs)ljp(8u44d|F6NTl+{y33P^2eQi;qHS?wl+3-_pLX$ z^z8FI_u`lFr68{F^8P1x9jBKum^?#TdqhvQ7@LYQ|bO=MA_c zR!i7F>@ynY1cAqBnvoR+N=mXUcPdCya?o@0E1vIB7ygTp;{3%62V$sa;oN{oIzSp zm;#$xe)sqP1uy=}Kc0W3PH#XCq&W=61+99*rS%miSCU|CwR7!E!yKKg`IrA@FAUrxvB$F3Yv$aA4R= zH5Zx@SJo@|CgqpD{X2`CrEG2QG65nfm}Hv$?vN-9iGqNw{SH5Q??b-y%;S9Hm%c@N zZH@iShm3k1D$8qxNkTP=C~`NesD&u2IgcEpDA_Ph+H|oHB9=EZCyFd9cQgJ);Xq%V z-jMCXY1vnF!(Vx!9h;r8gh~?mP-shUFe1%T3L_}A69lP55$&ZWwN`^6V65W&Q(vIp zAJX05<@CkJNUAmREaTk8%LHMat*&9eH=#E!90Q#vu-bjrqKw;z;~b+k-+1yg-}$@G zQjZkRyznK?J^kX*F28%7ox9gr4IvC9wIpD#H)gNXBMv-jm5APO!oAIHK6v*XCc_bp zR-0@*rpQuSr_PcjRU%&@R4FJmFQHi$^W7N?)I~81(*SmEdn{I#ba*9sWn!B!#l;}be`hrmkz5ayI1Fes!XO-_^jmB4ocQBz^30YmLQxtAJ_V)L= z{@z<$dh!{PW(!^9ph9Z3I;oKa%0EVRj-ByVn)y_sEwlAwGHNrdsKGcr&BYMXx?xLC zm94SDP-sJzI}XD*c4=>+VVV_GW1qlNbkiIoTpYaDpI~fCmYKQ8wvZC3B%ZWrZ5ia2 zt5-jw;pgNcAWRzgfzQUx>x{+&o_hQ|cMb=bEMsS9pS{kMR^6kKC_<$O1I4M8C9a%5 zOP)@6?d|LAc7{|F$)J14^l*!4X`MS)-{yb)k3Yf>V`5-(I6|8O-&c&%0%I+!VZiy* zs~Brt%kba;KDo{_Uw(xkjv00bjy*3)N;wOALYydlS&0`1w{b{!TwM)oM;Mb34B4|JJQS`jA+Cm zquk;vxO4R_{^~DZW##mFf-qp%?XbLlp25_i*gpQ`HgCLp6;y~&f?7ophd#G** z>ovOFF0a3PgR8guEH~?1Illrr<8bEz0I&YZAJge{XtkQ`4GQ+A1&4#oX@$@9GIC0nczPE%?|XDYptX%6bI0{@l zEj3u35qpp%0dKwW6Rv-98$BI!>)Ly~_x4*L1g+I|EkH&6#E2;DB(@*g1lb5;v z$sH<{5Z}kK)gj0V&CT5bA8d?Blux@AAbp>pQYE*RKmYz8(I1XDI6Q=)!eBa~5_&WP zi&U0swMMJi;{Ns?nQ^8vEexw?&a&I>bJ!p9V0(|oXbQ^53oH0>Oi(I%iL#4gXAB}G zsj@M%gwxEePU%QpIB2vR8*|#oGs0enA@w{DKM1HM3H>mn-fHuByF%9QF&qwQH0pSM zz|=@mJiIWWKocqOtRwyPLyZUmav6|XK`ecm%cr??ICVv)hlf*cbqcEWDodfq%4&k}V~le6)x%Do zG@asA>huRA3K0-jVp`TC3KTL-SY26WY$ToDkVhK)tn0 zyS;=`9wyJJRH|g-A)|51%BdC3Upmj}dccLXCU8h)H86(dT0ncHhNmQ6 zRK-|Bdo7{JGDedrQ|lqMrtVjf)f^=RGO7^P8mz8+OxT7>LW+kj3Qn)DG1hJlCszTn z7a;tAD2k|5LV_?rd1{eI9AQ{6FS<-NPed=aTy&!iLTD!eZ`BY@=J_?Oq)61`Z#lukMCIuEnQbfT3QvKMy*O*tK$0}CP?^lkdUWS&a5nR z?y-wxqaoRJ#JO|lk*sjAy}|Z=kLA@B{>iWZJr4HwNn($I*I*K*G^{4{B!z)i;?qb1 zLSNBJV%Kg|5{%)nHzH`|SOb%^pfHv|2?Ae|v|7~LtJugv7i-lj69QJ2V_vA$*y>Nn ztt6>dNa{6`T8(NoA&EnLPaUTlu}3uLt{`|6y?e~L(cQR%lx|qweNrc79{4`BdKF&^ zqDn+uZ%|39L`g)_8(|R`>1?a9vt&u2wRO%`x+aJ&mC-{_pgiB1EMKwGUgG?jbq1p$ z7tdd0rM=ANy<1eGklOMJ0He{6W;^Hf>IzzG?mS4CW(8*w$*GGAB>U15dkRmvhIPfW zNCZZBNC~y&j8wZ2BFi0%T;RFhtEW7o&?8x10V{}tz=08c!FniJJ1gjpHP#QQ*AiOQ z3Q4s}QmGL5$_*RgcDAvmZ04AGpMpH>IVd!dQzohI(TO zV>GL0&$+5(7=nP>@-i3~6RV_F?xa$q11A?RFmrhaQ|j+Io_C9fc3kkKa)Grc&?mEv zRtjs)_uT?{s4@j%Ik{^LSTDd2LV_T`_x+MFS7WVqr1)j-W3a<>OtgOC zW<{OZ)pj31lnrp_^sFrtE-My&)WW>qBQ!^kJrqB~?ZjKm1r8TR24@OoRxBza&Zkc7 ztZ{Fw3rjKcL`Rp4YK%r3gVt{3q$moCET_obI^|hPo;x^wk!7@3TUamT&9^@^z@Z1+ z`NJRl`8(hE`d425hyUPfTz>qbE6huYl3uCYs2q9kYye))6s*+3f~ZA$`%mHFKab+% zZ*Dg1-|!@S*8SPluyY4G?|a&^8)QpgIKOYonA~kXUF1wN%@6+Mb^h@CKYRzcBY@u) zLj209cKh%D)^~sP(l@^Tk_rOf9g|Oq<~?fk-G1sb+n;OUEdTF*#LuzlKf_;tj@t02 zoWBq#$MY-ycH#fV3vL#6_*S{-d;b@FypQb&E(}Ki0000XSRiGzuW zOJe(i9l&6)jp@d88H4~KRA)vrn%aQ-YtiLIalY$UjdNVxNA1*$^Jh$_PH*u*469Pvm9LN4C zrAU&5FpP=g7_BwN4BtomppVaV_h+@M|7HdpM>S`s#{Xt+X7YC*dhFoBqX&=R05n_e zYb&+Jr*6IV`n}ULQ)q20DU3lNFkUJhgIXVJTCdVeuEw0HET=h$?~{s3)d2!pw3*YH!CO}m5uDMfjCY2{xZI`s5w zo2~ZifrCz|koPAi#@~I*t=H~-*}b<@$S6o+bozo)$N{Z|KnO*;3lIn)?J=VF9fXvC zK&Hp{-dG6w-z`xjLdXG8g|JU7)FzVK^905iJHSG08YiO%gf@DZfZ8&S5JUSlrbqa6 zkSsBEpIAm~Kw~iW+Q#(H*T!Dc^a-4vXY}A6>F-hqkcwva3jB<__rk*RyO&nhUhgEa zdETARyW!<8zxQUM<_1q4owpAvRZ3(K2!yl*7E&UNvBZ`VBLqSSWcnMB9xISS^*;kh zDM83S!5P{wU@)VEM3~-0kwb$fH#5AT|B?(5a=?+M4=a5l=^l|Rv9;EN{poq8M_6OO zYn@V z&Mqt>m5Y=TDMcSTgitBLEL9}J62C`4A&^oH5nZO|_5K%w?^0S=8TyUh|0&c6A(8aB zcQ7~zkq)>>NjN;E4H#`_MvoB242Y0kLTlZh|HkN{<3xXE3==-l8jL2<8j%t?i4)7= zT4QlqyuCnf;b8Rfl|s6Ls}xpl(_c)ltYyz zt`rg}1XA@l*bY{2X3#%xKxio?#$b;V5}}mE_4GWgH9|^c3RBt`QiefDi4ydWO%mP5 zP-!pG=PqgVUC@ztQx*&q`G#u8hIq|g0!rWlMc7_BTi z8es=h7^IdM9TA5CDIaGYpk!~Ba%&G#ghWb(6saJU7A~Za2qjXi6@vkhy#eZBw!I!w zAd&rR+5t^xi4;ibU{Vg0jzh-xNRoskN)S@u3PHY9z|Z(pD|O;9LJ0d(g^?m7Vd90oJNq=a`IMHIytZSY)&OfExtq(pvv1dy9GmNGvK^+d+{jS6lVa3SWezP%1JyUdAhq1A_IHbA0kIKF*a_ z?&Hqq--hR}GqL?L4nOf7-ubS7#|QrGciD6Koj?u90BwHcjc?+GFSwom>(_sW%f?$k zo7MAYY1LaOsVwGdi|Nzbrpc6NAgF+!0kVK52`YT$3-`0KvWDk*7-Nu9GBZ0#A)hCV zB1)wqR~)#E^2`oaFPx!Kt&{HXd z2&+X%<@7mKN|o-D2xDQw&WZulSUI5j!c-1JN~%g~Bbb;OqfjoAXw5?peuJ;w|1JLf z1AoJblV`c@w(EK5p~sonKE>+lNk09VFY%3UewUwr=Wp=(A9*D!E33GkOB95B{tI8{ z(Bb2hM@E^R9;H+&@`5{WMoEWywT@B}jb?IgibyAX=3^h`-h1w3qgv;Ck37lg(-*k^ z>)+-pU->3mH_J#8V+=}4?z``Wy!So7$z@mG%;feK>+=^lclqJj9Tg5}iAiFF zFjff>RvQ!+{FIX_U8JJX5>pLy@PS4w5vYMMO;tg`us|Hb?H+fhYThOxswAb!S?>Sp zSNJ!-{yRMUy@Q)x_U%9U2LAeEALO&2`!x68{~+@VD*$}ys}FMUsbgGw^%W$E=BxLA z3xHa^!Oy?**8uqGx4nTE-}@r6p{7=?qqV{DT=FC1eDKdd$WQ-pT@eUVa z-<|#)q#P2Y10gD;u<#o$G-bHrnlb))VbsK7jo$EF&_EO zXW6-DHwzaouxsCyfQx2>k?}Is^#&Q&1q>%noB`nRCyw;*={OEoUa^?;ir-rT5;+%36ixc}bH`j*%7?%#bk(Bwb-_HXdkx4eP5xfxv7Vf&st zs5hE?@Gm~W=-B-{@#GP{_sAi#*$jX8_g~|do3E$c>F|}WKFIvS68F5|dA#7BJ89J0 z1VM;NVqW^v7x2kXe+i`&cRl}B?z;0PW@o3l{`#vJoty(E`SRa?h(G-AAL6Ip_69!i zp+AHqA`By*I&z-3z5VAobodya=kgOj`9@6Aq0{N&Ivxoj2rwi_1c}k;1f=62jY%19 z6VZo>q*CL^vBVP=x0M>`>z30k^e9L5FVfu2Hm`U1}?5_=&gw z1h09`YxtRe_6uY(K9J|kiEp#8xWb`BPxHVxALhwJPgAYd0r)q+@t-$AK%>#*U;Q8d z&!&A+N`Cgtw}`qSQYZ|XjiqH?@S;2U);B(ZawPfkPM{4YqE)Svbn2*V!n@z|{{iqT zzx=a+&&Ki!W8+0`xamcVjFbWRtB?F4`>(i;#gm6HMkAHP7zd<43qg`32#v*hqYxq) zXl@uBFau3Qs+5ye->0G+XP~{vA!A2~KGgK|^q%E9Y>~=Tc=m`v>O=7}l6s|0w|kE1 zoj3F9SKZ4;{_;}*{N=|!%WwX>-|Z7Io6Ydfcf5_)z3L_G-m@Lg^AJ+9y0S*S-r&iD zPxJmi{}`vwTp)@f{^+j=V{o+rvbNd|K zB;oAIbIi{#v9?|%Nvy>=K33+Qd+y+EKlvl9u57Tpvdjx#d>5_iGI0c+=UGN@BuSjG zwo*lFjnte)rp_|@MA;Me}Ip98Y2EUhy)H;Ggke)m1^2jD;b_OAk~ zY^+ppq(le+tu&Pd^fKBm(nwo)k<3#4*Tj!HRMZQ^9rC-$)L zm7DbRp4{j;uLJ^Nz&PM~E}(H7m(yo2uz2<|%|HH58f!p(y6&!!=V zSZe!Q^P7m}l{Jz?(`a^>MKC(PoqxFh>-_fb{5JsJ@s6M3$A0t`jE|Km6$|z`9EVIU z&l}$GGkoKLhxymP^v^JQje4zx=XfY7NfPS_)7pCd60OlXA)EJ^+_sNaeTg6c@qfwJ zANVegqxko~^{;`5mE|ghLLQ{YAO7)&>2?Et;T>-SGE^&dTt}r`4!UOy>I95ION9~w zEv)xOX^oH$JqKM1FR~9Es>k6y;i_b+ttgb^q=t~?dHKza9kH{3_=)6V+E2pp;D=#9LdzoG>$*V@gooNu3!3h zeCaC>0`ShC`$=wl{!7?cJcUjSqZ1{Xm3jWl@4b)h+h@4<-aFBq4U#y)b*!0hto4FO z1c?Em3`$@%m(;bar8P1)>*<2jr=rsT2OKV?L`i28SIg8h*n^aT<|6u<3!AJ|hNL$s zcYrY9x(bqzGiNWbeQp{ro1l2$u-MtFJW&;2COC5f?+ zhxH(iO%_;PTcunoF}r&oAgQdM=TF}Ko4ofA|D4s;4FImXav%TUxBm?~tWl{naD5lQ zFwKYl*v_<9y!;;W9c6G(KwDoWk&gfKY9;e{NgwG)nEO2 zzW2yMKK?hKLIZzvWrmY+}ye=ks&$}l2 z0 zzhYr=*$S^A4(o-Nnyn6xK7N?D{=_d{G(&vf;{)%1H#gmKHyewm2%`i?Ny_7+%%45V zV~-!ESjcnBEjQAsuJvsbLF!0TAk$c(P7;JMNC!yLN025Zct6HD;PjrLRKo)E5`P0- zec&$WYcHEPJk`&KiQRW^rdDd7*4B6359=w3a2=jLeu^lH`Pkolj&FbG5tdihSy)^_ zYkTbI=my+tS?;;#b^w$k5kW#vf9S<(FST91e-D50!QbPyJ6=p<^(>usVAW<< zfHT8`4}Ov;ih0M+{Uo{KBrE4mqoiYP78?qoA0J6WfWoLWs*(mpluCW@gUH%Idr<>z zq^B;56gK(>kdRgfA2$Ct2~07>*=e+hp+NGcz$QpX5k@hYkui4f+RkH-9VY4q6!KXB zzLq+)78h4oT(nNFY&JtClOYHKR#!JzUS0#>v!DAaPdxer*I#=LVYiBqk|>M;!SnC9 znZNkRCuuaAc&^LHXqjJn*H81$|M{C4pWH`v^&IU+7ti(4S~EE_%EGyW{LXv+6o7ZV z^X*_d#F55x-E4M66Mf)R7I{Y-g>!ccsow3Gf8te1C>8-Ej=9{kJ)Twin z%0;fedO!K{6qt~e^CvM0WHZ?`1Q;PbpJT_5Fh9SMKhY2^`gD8qhW@ znMTyD8DbF1AQFRAPU_E31~KN83jg)cBv1)8Dgo(7S|8ichC z`dn{hUpav-+KcF8_^{wqeHiIw2=%f8dKPCtHzsx4_5}0RO$<`51_OX~nt8rN$2RXI zlgT24Ac+%N4V$6hxIUgQ(!?h_n|et;#@J|m7=fc)9B0UnpWauhjE&l-VY`9KJ7hZ; z`%KD!@A)Kg%=-MgolUOa*I0Twxb>ZY(IO4%=+wO-5z_P`$QW(4Yb zYSz2I5`*h)hB~w5t3;)KDF+XoW^75((}T=lbhKr4+0#e=or)6|B8j0>j!1 zVnA4N2}4K9G>u@h;bR7hU!UU#1l^M6_kFf!oEbwWZ_Y?Gn+Esd)1N6R^#?tOCA=k^ zu)Y;RstSrUHA7oxok%&Heo~HA*tF@>%?M=&MY=;Xy+`^qucc4uVQaF-VLdo83=!V+ zv0Yr^rNkx>e-1C-KW6K3J%#xD5%!tReJ+DA1c9bUpdLC3j4)day`HTj`?GyhR-3TS zxy>pgJ(%hRDA>&D0uYAH{uAp*-mDT{;>E?qFZ0}q@WXCf{0`su7&G|VOR@WY#}65O z#z+uJKUuY(uPIF5__LETg{yR|`hFC#DJf`pw0hh#G_spsYVdgrGW-w(`lr~Q!}Udv zG+WL|XY??a5Br#gb2EoIevkKhj07Ed+Q@wV%ry%%qkp<6o0K_vKyLJDij!X9q+Z`B;ko|OR`p_aVQVxKDA?;<8 z)E&}f`UD+v(Oz0e_Ad876Dpo7O#QIuJez9{e>Htl4`iDd%=#fsXP}%6WksZ?_N~p~ z6pMic+H=G9#K_>L{XrR$>d*MFKXCv5Ou{{zYdnkR+hltTLF=$x(znP{$R9?HR2?6d z0|WC-3{nL8TH>agZmbmGEw%0Vq#*zkBYY*oovajK6GL8nLHSih^Vwd6v(&QgQwExxI z|BruG^93o+^`3lA<5kHHHc>oBmc8s_J76p?4NIlw*7NOpGyY> z7d;EMAI7v>Kko%Oti23OeFWCSCd`oZey$JukJZ(m%YZ!__;|KD`u9I~lP5L($$BG) zQ%}GKIfm+H2WJfQ$W5kx-@_(`UTKSS<%h!af2tYsPk8@L2H-O|n8XmY^u7lFT-wXqOc&_ITZ~6xi*F4Mp<`N%mo#-IA(Tive-dkA5 z`;g2Wb_4WP$(~g;#K9uXw(i$r+6(uv{`;sf{|KV}Fa!0&T<3>y83+c9W<;7k*ZX}? z9&ZO=pq!9qg!PF&px2PQwkJf*mJ19$!l1@}3%xfrhIl4U`+ojybLrhb^kvMYpYQt( z#zig|v-x^k9?SGPLi9tG=3>wnTZ!J&IftT0X43`wsY7Tpe52v#*zz`J%ad>Fq|k#Z zF?9a0KW9rz4Z2f*2DdPL%DabOkp>imaBJ00IajHf5+dXat7jA7fKMfc9>6VwbbTmMaLK4NdS56L|#B|`W7 zEjk?_L9gz}h~A~QYA?OF9#V-0@jru3`xYc|L=?s7Wbj}%p~il7JQpPuK{r51iRZa= z+byJYh;>XZn?oo?tJxsxbnvqoGPy#UW+92CoNJF0zBVG0PS{%Cd5;Mr7PZA1QhjOt%u296yWLaHVrq-xa zt2StN1Cltl423{AX)&A8IF4tNost-IguviA3Z*`X7ed8#m-KbHoH>hq@XjLmDQGiJjTt_iEJ%v9ufp(OI z6rJ$YqYrcWfvbqZE^8~RNZ04=xp}IMHrHNrIor2wBRevQ>u1UMS-Kl5JpQe3aQea` zB5V=IF@C;8H!`eNsyL2AKAS;FfhPqS-y!R}bUGnx)h2Nm;V22NPY_1r92hI*3De}w zpxb4=*2FOpuIrP@WRX(fc|L_)21kMCIwVTb>DYqbZV*ywv}uKgjOW`tN}!a_Gd?lS z-0UHQ>`fe_OsK_?NNcANFZ3#>0M)2deqnhi`6 zGCehc94jM~!1HsI$EP`Z=r9j{{U11W^eK?AR%x)fT4!o}lunXx?9gLev3CbQ`)mIJ zzc7vt8hq{3ALH?d9%N!>jb6L_9qP3zVYf}I-lpAb z&}y{^!;m-#IKNoq%vwO!5oA4&iIFnXb5kTyK&gotyTBuo}_ zbjHg#BB4~sQ=6G#VycZBW^iN{Bhz+N!dOkLPjGoDqNfS$!?}Pxzp(+6ru;@xhz>gB zeTVU}QQS`Rf^HYjgj~LBJC7eaPPI{`Rgm~5A!=3V7CfeA zrg{3|`!Pt$g**qJI>tkf9^r~Tv(y@GPMzyAGf_k-m$N}a#mP=Yh_%ZwE>Ocs3F?GDrB0j)+$#yN16;HzKz z2dY&U-}i~TP4*tRkGo&^LO%C5A7y&yUUK<7>-CUrlLh8is;pN!)FN0|3m7l^U}7ru zgxLw7e8!<0c3G=+Xa*VuOq5m_Ddw4*nxv2sEUi~qT5FNdc=n#HCY>N8>UQw5Ib1)3 zP!3_ci4g|nXHkxWs~nV&bh}*=9pg9-<#L%~KEu>vlOro_n%x}DZU+;Ggxxk_r-@F+ z(`IVD`cjeFJMoaVe+i=Z{@rB!8Phioq!hTGgDVTVo^Hf`1Hfk|5(^H&(>QUN_D%ah9H=anStbLSrWVrXv zn^|31MYtJ`oxDIPBbXd36X9@fVV$LoI&%{~SMJDj;J{VnvK~Sw7!z}TVU_ib3LEu+ zW&~PD9)94fte$>~U02?~mAAi`{OBYIMI40~oe*`}1g%EeM@&*Gl}NNE2t%~iD92%J zWQ2)w0kza7N)lX0;0iVQy#-*hcU4jtsk$qQVyZyN$bsg!4Rd5L3(9%cRH zV@&P7lBu1Skt>wgz3Wf;(zlMVv~U5>&k+^Jx$%|>>hni=#Y^tsnyato{Mj>n=F1Oo z@TsR+tHDyG&E9;TPP@gabBlcY@pIIo1RRHMqB*l3@un-T;P%)2ID4lNW8{eh2+UEa#_w&K^C`|9+O+WcloImz&8K2$7Xfexw{qPr1 zsR(-b?B}^`&lA+w*QhNoGBuIK&ty1r@+4pX&Xb&O1Z03QPoa$@j5L#3#gPl^eEz#9 znYgjSQz!q1)rCd!#R9W))9kx!A9J&_#B5>cx+ zIK5Dzr8Sq8Gn6xmDA71dfUpf7`U#_b^7WiDnql?iB6!)f4Y?^DM^VV<2z5vh$F`fD zlEhJnRElgS$J*IreEe@d&SDK55%9-<{z-oMU%Z|huRB1q8?$rUH0KtUQJFkH{q`T{ zeSi9AoSt6;Z2i!EZ~bR1oIHe|ALq!U-{hxWw2#nueCeAIhb_>eBtYS;tOAAyM(TW0GKF3VQhv2 z*Ivtyz2W6tv41Z{8=}ApN~t8S=QBAqP1LFL`Hwut@kWQ;qj@f$%+Tn>%y_P?_(o%U zbq%>e#30YMPW3LKX^Z9PM>9L)F+4y zYn71qfA|yJe9a!#*H*aW_UAD-HOBblGza$YX3x$kzWUYsdF8=_Ty^cW6hm9bwxvXroDXNIv zgwN9}0UNPqOi5g$nJFr=p&{BeYR-%%Gl?FW3SmL{9m#8nE;*Z|{rv;FKbsIR{~tV@<0AFfBwEd!Odk@*l2R<+#2PgV%N+l36kYTfI!g=Ldsc< zmWEZJ8W|dqH4i6CIj-40NxXKBYp=bE!q_yOPKW&HINfd=*YU`>f=_<#%lye-f0f-O zhn-VCtCf%l!H!)X<#G`(lSMk7Rkc;GVnwHP-pu2h;AMd5gHYXo*uAP~X*=~`dwF%c z9ozR-2{O4nhaUPSG6}hC|6U$Dc$8bO-A}dA;cE|{VX_qQ^S|)3eE8#En#(DUY z@8f;H|6e$}YS6C1apBJE_fjlnDP(*^*GU-#uWm!7?G@tvsFYu91Kgh1B3}bnhy;=yC@cmIDQttP{PR-P>xH&z-eh^xgERs<`+N9`ur&xjSe^7bq~9?&+@+a{wL1NuX5|P zI~kjtrrC{HUaxU#c?~5Jl+20hn&9i;qm251W=8;Dptre?YU@#21!P(z#sirYV`)U-F5?u^@y(@KF#X< z8m=dB47M496m%nq09RHh=M+1qOB8%bb$yvHf9(-Ybm3KZ+{B-L{Ns#I&ysXHOl;r9 zW8e5PfAuHt;oIN(Hc!vTBnGBO0iAI7&AYkg@?A_$j3L|%K@0@}VYfrj>EP#!pd`lF zMibURGD9)cXT#}zv1=>Jk~m8J&9=35wp?apdONw&I7goNOJ;WLWam{kbN0yN%x&97 ztt`nV=D6q((xkn~lQ1L> zLmby9lP^*ln__X{0>=(M!CQasU6f{aB9A{sp*)W3Whi9?2d=t|?fVX}aQ-}Dw}W&X zX0~r*bbN|E*WSuU|Hq$EZ->b9r#SJ%!(4mM>rk%Go8IwjoVoLE&YwEYyMOohXfzF( zT$Y7um##6)D2eYXnvo%B#W-oSC`vSm5*VeCfQujqV$LkpnP05)V?S~i@A>Fw0a(9q zk}v$#pYiFBeS}9JJx4`@2i$kVZti`-t<20!lJ#7YD5Trzf{f6*ORL#JIzGK3;w0>n z1VI`!d1e9n%$&X{t~jLbXhRZ3BuPXrUqm`CltN{2DUl zF&3BJ&$jUbr-KGrUol%2j1;nDJeOuSpx%l|Jb@Ad&lNaIQfX^y-GtbHl!j74;VFTO zWY^pbE5{z=I}hB?```OJ96G#;k}x-y!LFaUtg&sx;wDq~f2~R)% zU1n#dkkX;HwghM#-zV&Li4()<_!PPFDAG|RNldOZMqzA{*2WrPH(+sofw%tnFY>(m zew0ks2Vmv=DIWanM|u3~Um%n5`O!DMkzJQxNg?a;-gm!;$BxXibFNG=@3PSdi6U^6 zpc@+sz9H{{iEUTxY(_9%bSY(Bgpz#dQ(xx2fARNZf)*3w4ljMh?c8?TEnIW;6>QtJ z2MyFV)~VF0bUGcH)hfzy@O&T7amn~Tm3o`7+r=aaai>MpYNE$&C+U8Gdnhg{eh|ED z#`1Kp=(YH^o$#Y5#P_qTFPtUsYDOn#Xf+#jnj2(`V|1G>8ucnlO2#Ipk*<&9x)`Hz z{XC`7N#afmHPcAsPCssxe7bp?%1Orix*VncdJh+|EqtvR~dX1x;u@QN!& z`OV+_HJ+ z0vw&QU6(d7?J$H~%HhSwTORLeK z+wG9gXDJj5^jg72L5LCH7s`0q9NBD!Fz9gfkq2p3*ZB1Ne~*!oGWWjz&6GwaSv-A& z+~_1IkEPQ`8J*t2-LHBRr;k0wHy(VL^;(O$$uc{pvpjvSLEdrjbBb=Lkw^*|MG$L_ zE(O$*E+eksz=(tI8kRO%eD3pKX4ir1*?#REB*q5Oy=>Ncw-ZgaP{hw5|rD+_Gfxs!Zxly<9y(S}?$L%v{%?l>NC&?bo^9M?lAg)1e>@%W?v_;0!I-WPJ^ zwb${opLi#Jah#PiPvd0@G*%X@`yuGCv3QQ{`>$qp#~#K?hiPfmyIFgE@zf&gj&%FV*cC5zQUuAJkG!WPyY`$-SrZZXgi&D z3ojcXgu&~ysID&4ZMV{87&Ji;&hTHFZ9Z{4JbUH-cHaZSD`}AQBedp^IKf^B7)p?ZblFeqA z8Y{7~(WM>0tygYiddwqA3}FNdwV21wcL>6SyAOBOupFM;$aPt4HVSRqal94|{YU*^L6Ip((SalVaoBU^HAG=ZW#K#`Nyz65w4)fQ6i=V2uz&j`S8N}n(O%(fEkPs5 zNlDHX96h^Cs14(#0>0x=&bh>iA<>4(*&=7=tNiYJK1jKg=ap~%XVjZ*;xHs=w*c_7 zd8AS#aYP(N*789^K;IFW61ti_Pqu%B*tQInlZY{rJ^k}#s%Z4-1m zNFm6V$|%<(?ljr8?{YNYxEaQ$XIVUUh?7SS^T-p2s0W6H4fyQGKgR8M-$g#_lf(g9 zCwQ4GnS2S2!0|oCre`^ScEf9wz^4nEG(@+$d40qMAOD{IW3I0|u$ zay@FbCV5{mzaFqrZ!tMJ$;zXPBm#0mpp>8$L0r*P8uPeHlFvEheFs-TJ4}d@gkmwr znO2(*e&C~Ae)SFPI&eL$`UY_j5XTWo5)*bipzTsS%60LiA?^lryIs2NI$^7d>-+T7 zbRo@9de;MoQH1CDtZ%GSU0o(u9wiAn ztS!y6Ua7EAtb5aI~S2QMgL*(D4c%{@@4st#|(yJlCZjM}*xD?M4lqM4+M3 zXj8A(aFvHUF-g8WLMC6tbzO|MJ$-E_?O~E$64M8nU7LUJ)XTL7bR9EZpVs?`dudWAR$=yn5^*DBQNO=`6|LAyy9Ml39?5`-bytdB9^Dcf%K z)OrU;#N2h|1X3Du8JHWjVx7(rF zY7s{f?M{bw5K`|L+7T37$og=@fn8j`e+EH9AuHKFs+i8%g#1Vw+6mMHLl|kgQNnsX z1Yo4#+MJmf-v1}>WAWS>iX&shVMrW>L{UVi(?MhKvU#+QIdkkNPoFr+(ng(T5Rvq0 zEr!+di)cHXhAe4(EophPBXR2Pfq;Zt4DrnT;ptRYr?XB+EwS_t@qIQerR*lCVd6asq zO}!nkuu|s@ufCT%ZoZb!{r#7$UpYz06^mSZ?bTG*SAm4Zb7!~#kkVmdc027*(`~nz zn4ILqQwM3ZTQr+(mRHw^Q;f`HvUFQ5PMtW0*08d+PP5sj8Kf^Ez;mqby|Phf&$cOY z8K0$%Hl@7J)M%b^A;(6&O*f2awhe1djn;ykX9(kje8wd)c0s6OQS$8vzsdd`({`z} zSQ96yW-uQBEzvVhU_k}N`q-1<_lqiZAAD>`uc9vo;$Na(~Ys>TYR>~z?9-}lq zg+x;*&j*l*wgW9BJ^=b6R0Ut=UCMXorGUN6_vj zJovpQQ+GxV=_p*!#dU4(M{N=$nw%#n`40Jf9zT~usoshJ1JAnIG7`>36c|lTOu1sNsT)jcF z)nTJjV|C#IVY`8piX@70{T#D9cawD6c&^LSXU<@7sI_C8Fo#apm>kW} zYIl&rHnq`dsfnuu!gpA$H8^#Ck?XI%oExv&OAsDssTT9p*)?jdF6DfNMmwP!2=Y1b zT}eAIL~%qAYdRQmv0|hkIePpohxeY~_M2}cjAG&_v4sb&$Efs}nVjINEB15Qb^6p4cALulGDwm|3Hvvh_%Lbtl4{Zeu+x0&Xv2j^OiThf$MI#kuQJs zernYUx8HU%r_P*bd9}jK^u)0I!USEv28rZcsYksKD8hr5rRltn1~{1v<&B$){sIl zJ~G10c!7zcB1+)gYJ-C(SD9anND%n0KqrPy$IxmSV%_to8hlrg%{m-8ewt3FOD>ls zPGT~?$9Sp8c)4hc0!kBPMkdfnhz`Sk?UmT1eP2R*8I)~YjOYf4jjhL;Us~q)>2vJe zKE=yk@*)mga}5uC;{hIj@*vN@^G+Ps#o#)E<&7o+$&QH(Q{yG(rl&Z!(x#Kv z0cm4(?^@f?4WZHM(r8+k@m!aD#vz-r9X`5&AW5K*1>c1zfp!AT*lIv7miv_uC> z?KY>+ohJxGT-UCGQ*Sirv>GH*qH<+gwF=dxd1R7cV%>v?Ei@f~%qBg3P&YRuX$2@D zs5DxfTU;TR@wnl-Yql{`7@zs<=h?Mu7dPK>3lBc@J(|sc+ity)W;Y}VWAeo! zj_0NRXho;n;nY))5l10jVT|>q3$&|iC@;(G%q+8$W#Sm>orEMYxXREDppbD0!;n2Y zw^MCKoUC^609Qhwp&3{XOAxf$p>6e@B$SF-vKa>nbV3M?AnU_KNny009zaWL0%J&w z^-#L1*KStO>V!Oc@F=ZTi;;2}3?zxh&E(0KM+sXE&K`M;PODD0(;|+eO@J|6YkP5~ z`VedPi>eqT8MRt%lv3>8xr6Q7wo_SOs_NXEaysF;MI*ZC(c~p%!LKQFeXW$($K88ZD6C67i1jC zN<&kRwas!s)6s(!)kB>S#R;u$#Hn)&B-$`DHAx|#BVWv;lw@P!0w)eVOtZE@H;m|n zv4!tVp4y8;8geVahrbAHF;$e2ZFY&Y!IOfV zUD1>E23)8oBx%lCPj2NL!9+pO4Gq<%W}^Y^z|!I5nX|M58-PjTh-SOXMwrmXAuq{Kc-iXrk^&spA&eqcR@Qj(sgraT?XE9SzTISW$`??S(NLO$rUJ#&k%+oqZ8w7pPiwdSbWu5 z)9Q5SbXpufG0%Lho96f$Tp@6z6{bM~VPs!V3;Vg!i0F1TK?E&r=xAt%upVf_wDhn? zBMnSs9cIT}q=HIdXk%!E(CEV1^GmF+uj2b2QaJ=#5NJV?Ce&_L3x_%U;!SQo@Y3Ie zl<33|1R<4ros~+R8?L*GeY>{tz(3s2(G#c1S_m)8#>x_|>#=Y5b}|Bd&k!Y=GYjjSnqTMSQVWgfw^eq8 zeE~-ZLTxn>BcPoaR_dCy7Ob=kD=keYv4fKsfyVSh3cY6BK7xs&Ln-ewlCui|YQSh{ zhl=xS5r+;Rv58ihERM3a0m!sC=ouV_&rEa!=zg8QA$3ot9WaCxB*xfHd?I<9z)BMC@z?s#Mjex#WNg~O5*8K1JKBRy^8#=M3o@nZk zrWR{r37<-2d$-Sz20RWTZsF z_wZyo(|SqK{eJ7i8oKGzx9_p#2W*Dkss^?Or{0d3o+#ma4o8lk;N1K&uIn;V$TBfG zK@?hbEz;0vwQUY0;3$QoY@|Mj5;m6RK_?tPew+eJve^vdW24k-H5!c;AuzwVM!i-+ zDM=E?L`g!d4X)!Nl88#J!O4XxiP2OR&f@r48udEUJ9cs1)mI?}bdwk<4O$EYy#R{7 z#CIjlz|hf_$eq*yC4h{QWTm3$D9TwoTO%!KhR{q5!@Vv5d?j#%V6__2>O>TB4vuTd zFji2M^A?64Ie46v)pd$R>%+-77G~5?E7(m5&waIVOAwnyIUE+bi)_}tgP4BSYOAH3fK3D;+QzmNJp_zsd8?9 znNWBn%?itl=a}5Ki%z3X5XS7e@)|DRH^ttW5rj5q)9XZG%hZK|N+YHdr7vqN21_9* zDu+T^&*=(7qia}dYO0~35o=m;LX7pRmt9F>1S?&Qt=AH)Rzsu|6f+WO5=IIc_RQqi zR#GgkS9tK@NA04yUKV2ngZFOQcF23jT zz!yKu@`ZC`3L^wj!l_dySX*0VY;=^X_swzj-U$m)X(v5jTAxXj*ou)}m{AHr-cjU~ zg&8HRuRThvN|<11YeP}OWL9Ailw83?)*6B9p`j5&E3geHuHC#x{_5Qd3TfxX*C z@IA$oPoH6FWfkRT=xXS61Hw2SqU#{xd|1GmO_)9eCDuCY)jyhkW|uJr-**@*7pXRy zEUs&x((Gq)R zM`?9J4jn&35=Xd>LmVdrK}?*)HW0KGru#-TL)E9(WbJxxyzx*rziXD6RBY;>7DouluaM_f@_PotAUvEb|{P-cHl-zdX_2?u* zDTf_X6XY`f{5L_Bw1`Mw^4HQP;I+8**L#NxN+3w=I zE|a4r5^XE&Y+`9l9LKmy;yISXYK?%X+oBr=#IYesJMR|@IVMI6bVJQrHDGO{%E(wB$;f6av_5&1k39+T9Lsx8MGMc*CjU7aY&yTBDx;HiSBuKx+q^%3B&g@A^ zUP)XDu45PQd)u4t;nhF;D}X~OpFsegV;C!2oxj};$>p-V;Fhbo`N|!XO9f6GKS7Wf z-uf@!#hrKG&Dcnh+3``zIfc{_-B!!WJtR@D15--lzG4E_$}&UAM#lC{vWAS1X^U6g zS37%FUld0~QG}}`qop!QlCWH9T5B~7sZ?sVirRqhNU{Pt-44f3o~GOBknvnxr5P<+ zNnb1$(w;1WDAFt~EE2YABsln4&!%ro&#-f9l^ga?bMj1qqsLD%HRj<+=*F66J0S=R zQ3AdMgT!$m?+T*G)*u!9gxRSKKl(H804HZBu}}nnObi)EGB%ngF|b}~FgMlZmg}$L z%=rZt=NEYFd*5Zx)z@*&jkn@TLAJEQ6UWZjo?cp`qY!D#pgq;FZl2a@Vaygmx@9WZ zW@y8Tx^*hWu{|b}%}_4pS=*@7YDajUL#rDS#xY7t!Z5;Mh1q(|=C3%eL#*u-a+K{d zk@Y=FISVaTm@eJKoolZBRJUT|LR%2#z6q9s0apD-h=OUG4q~HP2?%GCft_y{n zpqv-XlqAzdtK~F;m{`Y{!0?uz`RCmD(jV);Ql-`)0)hw{?U>P0o;|aZbi#;7kDOqA zqssn0ySV9=o5}eO#~%F-omP|So%@)cnPGf%#JWd>LxQr@+vI97{Z)X?urTd$dT$9? zy9l2xxfa7^c?c4t``zk%*Cmca&Ma=Ak+{-ws;xCO1X0>mNJ;8#O{W`D$od44whh=4 zO&CTL@;M5HGV>d&l!`uKeS?LiRjRcrSM1qC7zT__P19*M_%DC(KAPb?{qu=cf= zAr&$G)4d{qRKV(9|3zWIXezZPOB>xZu4t3LqBybL?6kpGl8g&+VyHD*1Ytm|1#tq2 z*5oo7CdNi6j+SWx+9-Bjc`fyNlj_O#q&!nRyAw24z+e{JJ2}- zlh|jCQ@y>}j?hWMU02NU+810+DWkaR`kUBs;Kl)$pE<(vnIla3;Cqr{-ea}aX0=iy z>p2v28EVZAXBU<@_}HU#nk~ws6NK$HaTqWl&H2!bw2Gr)5Ncinjt?!i-_L(ZQ+kE2|o z*y;eqtip5bw45mCxO~qJX2$XyK5>pCPp@+Q^X|sYmFydbO+NL(KW1tE9CPCtHkvS5 z%Cb>!Qf+i7O{KzOt9D(vF7E1(L;wg8qm|)M@Wk{Wd zsZp9*>plOvGZ3{JjkfD)4y%yHCR;ix4UNT`IMIZW?O~YBTC+D!pc}>%vM!#Zs0I;Q zSUq^P-a(syFx34;wuO{PC2^!7Neqq1aOluc%5Fp?Jp6na*K?UaafDX8!Ik@Wa(bhI z4nvlg*I2D|87(=K^9o-nd`~ewImW)7+lhh>4?J>&l}eLBUec&;(A`)hGd9cVLyz#a z&wUct&yoc?8!ZwYf72HNjfz|?8U6*7e+P$<` zkr+W7gGR8{OlWozVq@@Jf#=$$nVz4aob_o%23Nu9L*L_D-?*R2xt(~vN3&XCe0C>| zuB~Ew`q(MH``95+K0*nKIYriYQLbXNTx7gdq*|@=;A6)*bgItyNQr$rCm{*hSUwNH z{h$97l}d%t(GgY~F{|B}jYeqKwvIJnqzQr;Ka*uKu^I#BfUH-wP5j-rsu;=3MUq)}4fDu-;g zfK)D>FhryYrv|%Fp6fs(G(=i}5)|?t*^FnyX@SNhAz26Vd5`aX_aTlPJ4MoMbMo-x zJpRb{KnO;sX4!lB75vm|UxW@KHmY?BS(h+|DAE+NS#sGd?M|Bq51r$Qvvqt=GE&Si zIX#B}jz01rhadPmp7_oK$XTjIo8P~R9~PE|C#=utuo)Nz4V2s?z;j^ub-?iNGb7L2iNt;<#V*N z8N$Ti=JSkAj-XUP7&UP{7n^J*Kq-Wy@m)!Tp%n=X3fJ}UJdaiovsP;%m11VH%z7iB zC|#1+aQ4L0ES!Ftk?C!;TWy=Yl`nDify=r2ioF~;cA8wy$91vY>JWr+!ikjz2j^Sl zmCMAahjd-MT!F|KzWkX_Qg60c-`D^zN2A*z=R1se2B{2%LXpvtQO+%`5^4*TL9ChD zww;w~osD{v^GmCgTU}5tj-SKLX7N04knb$*sxN)d2{r-N8l1Y1I;kMF>Yz?++L&D% znY3ZAts!+B2iNl`hpVH_A`zLaQ^%~7)lXAI)<9c+pB*4M(^TZ@%6gUQq5x9PW z@H`^v5g0*Mx{QoZvnTdgIWkYvNJa{RMrDm+G0)E3yQ#N2)ECY&Ix~k*l3T97l9LPT zjExl-EoNv3*2#2Xqsz%kOrca@%y*ca$|Kw?TG{&5jY^#$=;Gu`)Eg~g;gQW{88r?W zPa*w0Q+<`ryHe@kt1~Ay+yhtZY=7@3zQ{O_0sHXk!}^%dAIv zEQ8av&1M{F1!|NSd>6ErLuQM(xf11Uo+*4L)6I!A>uokn$k=2Nv}U~MF)>-hQ4%LpKpV}(OrAIlX?41E zje|@QN^SvJh)_ZxGdcWXnW|vsv=f_$6Dg0Z;~`v+OeRAv=i~Vv z%1N^UQnk@8;MjwgBsDg-XfGxux=u7gBz6gSqx$79g+c*2F-6DsaWi?me1)v%kn!C# z$}iCx!bJD`t+zv~`M8cDPNa?MNW*B(rCcnKEf#QH2kqs#)yoqFUA9e*v*WVegsmoF zx5bVfJCRJXzBJF$T8;6kN#6X*7qY&#Mn3D%aLRNt0cDfmJCaz#Xx^oq_wZfCXg+Jh zjY@*nY}8tKqY*|!Cy0r)!BYaymE=c9DNRgaGPZQFSSZlJV{$yp^~EBK^$wAdgIebT;9M?jYtC*Y^W9PP68m%U~ckX6# zVw{DuC&^`eisO?2v|3F@CL-phCP|Wn)93Sa!$h3f9lpTc< zuIo~3wwT(ni#X9tqA^aw8-7g(5Z&D_!K&^m>1ZG=0M$)2`>;C3B%&Yewdp_77@wFzIaX_uLf~d{Xq_O1< zoMAh(rr#j&U^X8ojK)z8LZ+VkbQLsYnmeRz`&Sc3DbdqzP(xQ85~LP~WSpSWMXHTR zY)^1u_t^E8ZIeg`lM-=gv5s{4K{?dIBu&HV6WC7W;f15p1x$=aCT@kegPadX0k9O{&3lo+(}JnSbH?{xUTDTN9TDdwPy50FpE%#B#p1Eqhvug%^`( zOq`?zV%mE9Hp7e6Tx{4bb?xee-h!q|Bp7VxdnFX0hSDBDrr$TMN!{b@OH_AAnZoDL z!kn8p?)%nbe*fP#|6+c?IVn#MrB3vneJQN;jU7n6guQ$qOK6>%_f|Db&?&)n65CGG zMyDvUMNd~!q^rCbw2qND7%i<(5UQ`>gB5s^B#kDiG%2YEKc+8G2fb!5T_@RZ)o!*D z`TG(3xo*#NtpTxn&(c>@20_gMr}sEo=)nLO10*)s!yo`eN^qUTsq--I8%e#VaR3=< zZMjb;B#A(X6rThLZ7VS_0;$rtDbm7?1dIZaF8#O(C(S@u_E<@5j;;(7`_c=|{$mGV zNJUA%Z(1>7`1*ZD6q{yk&t4hG(*alaVP(i~W!r-HEPLyFLEAid8?LmCVK=_}@F6YS zJhOAtb_s?cBn$$gAR*J@JCDXzI3!8j7ZN?EPH(jB1Bf&LZiSvPsljCiKtHqw z;n0VnzfE7ov-sO`iJtz{H^)iMhxB>+PH_5JC#g)g3s0pnhMu95q(s#^A<>#7u_-5U z9218Tab)Qfg#l4y%jx4VWMXO*AKAfNcmmmUR93*e1Hh?h=JOuYC<+vj)CUhRKxKg`zS h@*amTVu`-`{|96OXgyZHfK31Z002ovPDHLkV1n;RK!gAQ