From 3a18f2ad4155a3548daee3412cb43a633f2b8ab8 Mon Sep 17 00:00:00 2001 From: Lupestro Date: Fri, 4 Jun 2021 21:07:30 -0400 Subject: [PATCH 1/3] All functions are working with both 0.7 and 0.8 - light toggle, inventory change, and Light and Dancing Lights cantrips. --- module.json | 6 +-- torch.js | 115 +++++++++++++++++++++++++++++++++------------------- torch.zip | Bin 7519 -> 7930 bytes 3 files changed, 76 insertions(+), 45 deletions(-) diff --git a/module.json b/module.json index f63fe5c..f1fe525 100644 --- a/module.json +++ b/module.json @@ -2,7 +2,7 @@ "name": "torch", "title": "Torch", "description": "Torch HUD Controls", - "version": "1.1.4", + "version": "1.2.0", "author": "Deuce", "languages": [ { @@ -32,6 +32,6 @@ "packs": [], "manifest": "https://raw.githubusercontent.com/RealDeuce/torch/master/module.json", "download": "https://raw.githubusercontent.com/RealDeuce/torch/master/torch.zip", - "minimumCoreVersion": "0.5.4", - "compatibleCoreVersion": "0.7.5" + "minimumCoreVersion": "0.7.5", + "compatibleCoreVersion": "0.8.6" } diff --git a/torch.js b/torch.js index b15a13e..2fecfa7 100644 --- a/torch.js +++ b/torch.js @@ -15,13 +15,17 @@ class Torch { let hoff = tkn.w; let c = tkn.center; let v = game.settings.get("torch", "dancingLightVision") - - await canvas.scene.createEmbeddedEntity("Token", [ - {"actorData":{}, "actorId":tkn.actor._id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x - hoff, "y":c.y - voff}, - {"actorData":{}, "actorId":tkn.actor._id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x, "y":c.y - voff}, - {"actorData":{}, "actorId":tkn.actor._id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x - hoff, "y":c.y}, - {"actorData":{}, "actorId":tkn.actor._id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x, "y":c.y}], - {"temporary":false, "renderSheet":false}); + let tokens = [ + {"actorData":{}, "actorId":tkn.actor.id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x - hoff, "y":c.y - voff}, + {"actorData":{}, "actorId":tkn.actor.id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x, "y":c.y - voff}, + {"actorData":{}, "actorId":tkn.actor.id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x - hoff, "y":c.y}, + {"actorData":{}, "actorId":tkn.actor.id, "actorLink":false, "bar1":{"attribute":""}, "bar2":{"attribute":""}, "brightLight":0, "brightSight":0, "dimLight":10, "dimSight":0, "displayBars":CONST.TOKEN_DISPLAY_MODES.NONE, "displayName":CONST.TOKEN_DISPLAY_MODES.HOVER, "disposition":CONST.TOKEN_DISPOSITIONS.FRIENDLY, "flags":{}, "height":1, "hidden":false, "img":"systems/dnd5e/icons/spells/light-air-fire-1.jpg", "lightAlpha":1, "lightAngle":360, "lockRotation":false, "mirrorX":false, "name":"Dancing Light", "randomimg":false, "rotation":0, "scale":0.25, "sightAngle":360, "vision":v, "width":1, "x":c.x, "y":c.y}]; + + if (canvas.scene.createEmbeddedDocuments) { // 0.8 + await canvas.scene.createEmbeddedDocuments("Token", tokens, {"temporary":false, "renderSheet":false}); + } else { + await canvas.scene.createEmbeddedEntity("Token", tokens, {"temporary":false, "renderSheet":false}); + } } /* @@ -29,16 +33,22 @@ class Torch { */ function firstGM() { let i; - - for (i=0; i= 4 && game.users.entities[i].active) - return game.users.entities[i].data._id; + if (game.users.contents) { // 0.8 + for (i=0; i= 4 && game.users.contents[i].active) + return game.users.contents[i].data._id; + } + } else { + for (i=0; i= 4 && game.users.entities[i].active) + return game.users.entities[i].data._id; + } } ui.notifications.error("No GM available for Dancing Lights!"); } async function sendRequest(req) { - req.sceneId = canvas.scene._id + req.sceneId = canvas.scene.id ? canvas.scene.id : canvas.scene._id; req.tokenId = app.object.id; if (!data.isGM) { @@ -109,17 +119,18 @@ class Torch { */ async function useTorch() { let torch = -1; + let torchItem; - if (data.isGM && !game.settings.get("torch", "gmUsesInventory")) - return; if (game.system.id !== 'dnd5e') return; + if (data.isGM && !game.settings.get("torch", "gmUsesInventory")) + return; let actor = game.actors.get(data.actorId); if (actor === undefined) return; - // First, check for the light cantrip... - actor.data.items.forEach((item, offset) => { + // First, check for the cantrips... + actor.data.items.forEach((item) => { if (item.type === 'spell') { if (item.name === 'Light') { torch = -2; @@ -130,18 +141,23 @@ class Torch { return; } } - else { + else { var itemToCheck = game.settings.get("torch", "gmInventoryItemName"); - if (torch === -1 && item.name.toLowerCase() === itemToCheck.toLowerCase() && item.data.quantity > 0) { - torch = offset; + if (torch === -1 && item.name.toLowerCase() === itemToCheck.toLowerCase() && + (item.data.data ? item.data.data.quantity : item.data.quantity) > 0) { + torchItem = item; } } }); - if (torch < 0) + if (!torchItem) return; // Now, remove a torch from inventory... - await actor.updateOwnedItem({"_id": actor.data.items[torch]._id, "data.quantity": actor.data.items[torch].data.quantity - 1}); + if (torchItem.data.data) { //0.8 + await torchItem.update({"data.quantity": torchItem.data.data.quantity - 1}); + } else { + await actor.updateOwnedItem({"_id": torchItem._id, "data.quantity": torchItem.data.quantity - 1}); + } } // Don't let Dancing Lights have/use torches. :D @@ -157,13 +173,14 @@ class Torch { let tbutton = $(`
`); let allowEvent = true; let ht = hasTorch(); - let oldTorch = app.object.getFlag("torch", "oldValue"); - let newTorch = app.object.getFlag("torch", "newValue"); + let tokenFlagHolder = app.object.document ? app.object.document : app.object; + let oldTorch = tokenFlagHolder.getFlag("torch", "oldValue"); + let newTorch = tokenFlagHolder.getFlag("torch", "newValue"); // Clear torch flags if light has been changed somehow. if (newTorch !== undefined && newTorch !== null && newTorch !== 'Dancing Lights' && (newTorch !== data.brightLight + '/' + data.dimLight)) { - await app.object.setFlag("torch", "oldValue", null); - await app.object.setFlag("torch", "newValue", null); + await tokenFlagHolder.setFlag("torch", "oldValue", null); + await tokenFlagHolder.setFlag("torch", "newValue", null); oldTorch = null; newTorch = null; } @@ -190,34 +207,38 @@ class Torch { let btn = $(ev.currentTarget.parentElement); let dimRadius = game.settings.get("torch", "dimRadius"); let brightRadius = game.settings.get("torch", "brightRadius"); - let oldTorch = app.object.getFlag("torch", "oldValue"); - let newTorch = app.object.getFlag("torch", "newValue"); + let oldTorch = tokenFlagHolder.getFlag("torch", "oldValue"); + let newTorch = tokenFlagHolder.getFlag("torch", "newValue"); ev.preventDefault(); ev.stopPropagation(); if (ev.ctrlKey) { // Forcing light off... data.brightLight = game.settings.get("torch", "offBrightRadius"); data.dimLight = game.settings.get("torch", "offDimRadius"); - await app.object.setFlag("torch", "oldValue", null); - await app.object.setFlag("torch", "newValue", null); + await tokenFlagHolder.setFlag("torch", "oldValue", null); + await tokenFlagHolder.setFlag("torch", "newValue", null); await sendRequest({"requestType": "removeDancingLights"}); btn.removeClass("active"); } else if (oldTorch === null || oldTorch === undefined) { // Turning light on... - await app.object.setFlag("torch", "oldValue", data.brightLight + '/' + data.dimLight); + await tokenFlagHolder.setFlag("torch", "oldValue", data.brightLight + '/' + data.dimLight); if (ht === 'Dancing Lights') { await createDancingLights(); - await app.object.setFlag("torch", "newValue", 'Dancing Lights'); + await tokenFlagHolder.setFlag("torch", "newValue", 'Dancing Lights'); } else { if (brightRadius > data.brightLight) data.brightLight = brightRadius; if (dimRadius > data.dimLight) data.dimLight = dimRadius; - await app.object.setFlag("torch", "newValue", data.brightLight + '/' + data.dimLight); + await tokenFlagHolder.setFlag("torch", "newValue", data.brightLight + '/' + data.dimLight); } btn.addClass("active"); - useTorch(); + // The token light data update must happen before we call useTorch(). + // Updating the quantity on the token's embedded torch item, which happens inside useTorch(), triggers a HUD refresh. + // If the token light data isn't updated before that happens, the fresh HUD won't reflect the torch state we just changed. + await tokenFlagHolder.update({brightLight: data.brightLight, dimLight: data.dimLight}); + await useTorch(); } else { // Turning light off... if (newTorch === 'Dancing Lights') { @@ -228,11 +249,12 @@ class Torch { data.brightLight = parseFloat(thereBeLight[0]); data.dimLight = parseFloat(thereBeLight[1]); } - await app.object.setFlag("torch", "newValue", null); - await app.object.setFlag("torch", "oldValue", null); + await tokenFlagHolder.setFlag("torch", "newValue", null); + await tokenFlagHolder.setFlag("torch", "oldValue", null); btn.removeClass("active"); + await tokenFlagHolder.update({brightLight: data.brightLight, dimLight: data.dimLight}); } - await app.object.update({brightLight: data.brightLight, dimLight: data.dimLight}); + console.log("Click completed"); }); } } @@ -241,21 +263,30 @@ class Torch { static async handleSocketRequest(req) { if (req.addressTo === undefined || req.addressTo === game.user._id) { let scn = game.scenes.get(req.sceneId); - let tkn = scn.data.tokens.find(({_id}) => _id === req.tokenId); + let tkn = scn.data.tokens.find((tokx) => tokx.id ? (tokx.id === req.tokenId) : (tokx._id === req.tokenId)); + let tknActorId = tkn.actor ? tkn.actor.id : tkn.actorId; let dltoks=[]; switch(req.requestType) { case 'removeDancingLights': scn.data.tokens.forEach(tok => { - if (tok.actorId === tkn.actorId && + if (tknActorId === (tok.actor ? tok.actor.id : tok.actorId) && tok.name === 'Dancing Light' && - tok.dimLight === 20 && - tok.brightLight === 10) { + 10 === (tok.data ? tok.data.dimLight : tok.dimLight) && + 0 === (tok.data ? tok.data.brightLight : tok.brightLight)) { //let dltok = canvas.tokens.get(tok._id); - dltoks.push(scn.getEmbeddedEntity("Token", tok._id)._id); + if (scn.getEmbeddedDocument) { // 0.8 + dltoks.push(scn.getEmbeddedDocument("Token", tok.id).id); + } else { + dltoks.push(scn.getEmbeddedEntity("Token", tok._id)._id); + } } }); - await scn.deleteEmbeddedEntity("Token", dltoks); + if (scn.deleteEmbeddedDocuments) { // 0.8 + await scn.deleteEmbeddedDocuments("Token", dltoks); + } else { + await scn.deleteEmbeddedEntity("Token", dltoks); + } break; } } diff --git a/torch.zip b/torch.zip index f00b92df2378b96ab507e88b786815e73b6faee7..b58f46e1a0bddd6e7b2db44e9d907da49777e9a0 100644 GIT binary patch delta 5135 zcmb7IbyU<_yB-*7=#U&hTDqhgMv#^qQb6L+ASog+Lo*;9(kdVfN{0vx%_vBxba$r+ z2!3+DbMIMao#VRa?!A6{uXp{P^}Mn7{^Nb-r7mQNbu@rj_<);%TZ7h1BnHFE?xL)2 zJ|8~<00!0x1^|F%`}6k=@Yc^A4^U8z)=Q8)5JnLL0Pm#%0Ac_=z}wx^#zElsmEXzB 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 From 74f00b306116d1487b9e41737e3ca7271d296e91 Mon Sep 17 00:00:00 2001 From: Lupestro Date: Sun, 6 Jun 2021 10:51:10 -0400 Subject: [PATCH 2/3] Bug fixes affecting non-GM 0.8.6 players --- torch.js | 7 ++++--- torch.zip | Bin 7930 -> 8289 bytes 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/torch.js b/torch.js index 2fecfa7..2fd9e97 100644 --- a/torch.js +++ b/torch.js @@ -95,7 +95,8 @@ class Torch { if (torches === null) { var itemToCheck = game.settings.get("torch", "gmInventoryItemName"); if (item.name.toLowerCase() === itemToCheck.toLowerCase()) { - if (item.data.quantity > 0) { + let quantity = typeof item.data.quantity !== "undefined" ? item.data.quantity : item.data.data.quantity; + if (quantity > 0) { torches = itemToCheck; return; } @@ -162,8 +163,8 @@ class Torch { // Don't let Dancing Lights have/use torches. :D if (data.name === 'Dancing Light' && - data.dimLight === 20 && - data.brightLight === 10) { + data.dimLight === 10 && + data.brightLight === 0) { return; } diff --git a/torch.zip b/torch.zip index b58f46e1a0bddd6e7b2db44e9d907da49777e9a0..77642a4e75400cccc3f20e78a53707f164c5bde9 100644 GIT binary patch delta 4365 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 delta 4023 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 From dc8ba8f2f9e08757ef9faea7ee1d8ea2730d5b3c Mon Sep 17 00:00:00 2001 From: Lupestro Date: Tue, 8 Jun 2021 17:44:30 -0400 Subject: [PATCH 3/3] Added README and shifting manifest/download to the League fork. --- README.md | 40 ++++++++++++++++++++++++++++++++++++++++ module.json | 4 ++-- torch.zip | Bin 8289 -> 9707 bytes 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..fad724c --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# Torch module for Foundry VTT + +This module provides a HUD toggle button for turning on and off a configurable radius of bright and dim light around you. This base function works regardless of game system. + +Additionally, in D&D5e only: +* The single HUD control will trigger the 'Dancing Lights' cantrip if you have it. +* Failing that, it will perforrm the 'Light' cantrip if you have that. +* Failing that, if you have torches, it consumes one, decrementing the quantity on each use. +* The button will show as disabled when you turn on the HUD if you have no torches left. (It doesn't currently disable the button while the HUD remains open, though, after you have extinguished your last remaining torch. Room for improvement.) + +## History + +This module was originally written by @Deuce. After several months of no activity, @lupestro eventually submitted the PR to get its features working reliably in FoundryVTT 0.8. After control transferred to the League, the PR was approved. The module is now somewhat actively maintained by @lupestro. + +## Changelog + +This has needed to be pieced together a bit, but here's what I've gleaned from the GIT history. + +* 1.2.0 - June 10, 2021 - (Lupestro) Updated for 0.8.6, but ensured it still functions in 0.7.x. +* 1.1.4 - October 21, 2020 - (Stephen Hurd) Marked as 0.7.5 compatible. +* 1.1.3 - October 18, 2020 - (Stephen Hurd) Fix spelling. +* 1.1.2 - October 18, 2020 - (Stephen Hurd) Fix JSON syntax. +* 1.1.1 - October 18, 2020 - (Stephen Hurd) Name adjustment. +* 1.1.0 - October 18, 2020 - (Jose E Lozano) Add Spanish, (Stephen Hurd) Fix bright/dim radius of Dancing Lights. +* 1.0.9 - May 28, 2020 - (Stephen Hurd) Marked as 0.6.0 compatible. +* 1.0.8 - May 19, 2020 - (Aymeric DeMoura) Add French, Marked as 0.5.8 compatible. +* 1.0.7 - April 29, 2020 - (Stephen Hurd) Add Chinese, fix torch inventory usage. +* 1.0.6 - April 18, 2020 - (Stephen Hurd) Fix dancing lights removal. +* 1.0.5 - April 18, 2020 - (Stephen Hurd) Remove socket code for dancing lights removal. +* 1.0.4 - April 18, 2020 - (Stephen Hurd) Update to mark as 0.5.4 compatible. +* 1.0.3 - April 15, 2020 - (MtnTiger) - Updated with API changes. +* 1.0.2 - January 22, 2020 - (Stephen Hurd) Update for 0.4.4. +* 1.0.1 - November 26, 2019 - (Stephen Hurd) - Use await on all promises. +* 1.0.0 - November 25, 2019 - (Stephen Hurd) - Add support for Dancing Lights. + +## License + + "THE BEER-WARE LICENSE" (Revision 42): (From torch.js in this module) + + wrote this file. As long as you retain this notice you can do whatever you want with this stuff. If we meet some day, and you think this stuff is worth it, you can buy me a beer in return. Stephen Hurd diff --git a/module.json b/module.json index f1fe525..50f69e3 100644 --- a/module.json +++ b/module.json @@ -30,8 +30,8 @@ "socket": true, "styles": [], "packs": [], - "manifest": "https://raw.githubusercontent.com/RealDeuce/torch/master/module.json", - "download": "https://raw.githubusercontent.com/RealDeuce/torch/master/torch.zip", + "manifest": "https://raw.githubusercontent.com/League-of-Foundry-Developers/torch/master/module.json", + "download": "https://raw.githubusercontent.com/League-of-Foundry-Developers/torch/master/torch.zip", "minimumCoreVersion": "0.7.5", "compatibleCoreVersion": "0.8.6" } diff --git a/torch.zip b/torch.zip index 77642a4e75400cccc3f20e78a53707f164c5bde9..8ccb1147637b0d5e74768bfa01669bba544295d2 100644 GIT binary patch delta 2019 zcmZXVcQhMnAICFM1Vy~Gv1-(~MpZ}jYK_K7tRQN>Rf;I7+M_fsHL7AHYP3OnsTvhC zxfDf}qQlmP(zq14YP?3HV%&KDc+Y!opXYr4c+PpA-|so+_dVawjL{MXW`_Yo1ObOD zlGK|GL-3R5+C6#7)-?l-v9hDK!6iy<4WYmV5uzmTk^sP$)N4=k9gv-X008m4m!bd! zAS@`v8?R%JGQMn$(k5KTIUWIkZ}IAc@Dv^;1OP%dfdByHI$mGTnY9PurspnX}?eo67L0eC%(3_wIvSZ6^*=l z(O5d+OX$vVGe5~VQ{Xmo^?tW!tr~sxfO-CQ)#>l0i<@uL6SM?dJs6745{9Nr>1Uxc z*n;%HqAq>9>POVlsCbW!&x@^XQLRGlez9de4~H>B`<%C=fo*63`}td!c@s zuI$R+0cfZa?9;b*IhHDULW=W|YPi}_7~6djTXC}>%mT7;nT@tGtpIr?i&S6Zw|1ZE zMCGSoUoR_C2@(}YxdI~nFRQW8fG7)@XBh!!pM+lDd4>{@9k+)#5z7OYknGc6Mm5$q zo_b`j+kL_K>$yG%^s-PdX%eEQHokxTsYn<{O}QH}0P@LgV*=^pNV|%0L;T&v#N3z- z6J29h|3u|uXH8q_1gwbVSK!VU=xh+#sVc6oP91^kPay?aIhQNz|G~(Bl?Skg%FXM~ zN&iZ;c{b67--}Zs)?_hIb>V>$u1Hx>$Wy2-4UCOXq5 zEXB5}iDbi_6i+{sPUWi?qozy;yHho6d|I7EAZn!>r zdQ)`Mq(!Yid!1t1RIIcFYUwY^=zzkCy&a-`Rl3FqYF`wyR@aek6o6u zN){ddxJP8Ho%l;Fx-b^w6(3wL+F|Qoi>WP4_ZGg_d|S3Dd-@W=gJGW6KLrqFr)>Z= z?9OT6!$LDRZV379&Yz-6?2%%-9;An@BBSdUer!F{e12whA!C2r^23#SQQUX>mSRR{ zPxNN$Mss(9VVMxOMo&y;i9$Q>qZ`tdf)97&MiQByI90n`92135F^_L|40!k}I^2zI zs=JHzcZ^Ovb@9cUd|E(+!Bd&5UP|Q|8%Ms|2=-5A@!vX-SwEv&MjC-zXUHk3rplv* zlix&rwYab%vq?!ux=LNZ!6Q>sB2(M7{TbQnMFvQ3dK(Ux8L|e+X>MZOVQwaW6}vvw zN!&lPwl5Li!X$Un6g_pm?1R_aUYK8KGH(&~eG+WISsNT+qf^Lb#RF=jM{_it>wF&` z_`}1fR{JT~bKkhzQ&Dfl-22ipO=HzoW=o2vjKOi$PJ#i(FU{uUyg7K{fcK{CaObSW zFzhAa*pkWIhIh+bM(d!u)KO8s&A{LoqSb0<=7P>a(T7vce)1VLw9Mk66>1PYuO@%5 zZ`y6b@LrYfbWKe#E{O}KpL-14o56@hrF@v@d~BE-*_|zJa&+of&PCGvP4v5E848Ky zK4#c2LTwGYXXA0PqyZ5GyD95yX?LV%?8z`x+W5uB=%PUv8%=i+Gh$z-QP7OmV8zNK zE8+L=bDODBR6V2K`Bku%8&xXzc837;tU{8GVAk>-#+K|Z|6!(5R%E3cLd4buCH#zf z?V-Dfi=Mm)lm-I;M*#?mqJkummyrqX?VgD|{Ual*$t^Zrx{}EYbLy4vsvWYL$^$Un z9X&qA!n9Cw{*E~FO*ML~;2aB{|A`q5e;vv?k5!^Sl`!Qa9uyxSif6+SDrsm7vo;9* zn$Iu?f=r8FVW@%M3fE)>(BUy3Ih1Kj?>Su7RkpR3zG;8Ny5WE}@_8@m%9FIYG|b626CI|U6De~E zROpl+_dn|e@rG|zkhXtX?+V#rfWja-@c+O^0m*8BdDNr)CWoM4WJ@TQ|4ri*C<+SF>W9AhhiB|CP`<;@3GsF{&t+;S H4o`mr^fZ$k delta 630 zcmaFu{m_9oz?+$civa`@!;Velm0`d7U{3-NPc(32k~%W6;s>+Hojse28K3iQt`+6t zu3xhGXi)sEl=Xg$3=E%`7#IW@WEe{Fi;^?+bMsS5b5ixPiu3bALpT|jKO5~yh&I`i zP+Gywz{v6isGcPSXwA||)_%-}0&TDF2D?PN-)lJHoGC0|x}Gi2;#|u0BmGm;eOLms z@(zfuc=2*4*CUx5_cXLsC$uGT|Np=LeouP+o->;d74RP25I&)Fk=`#yMNciy>(ZHA z8gp_yqBa{=iJL#ZcS5QtEYZuh>2T?z2H8!HLOYk=+O?whAh*Y?N6S9#VdD7|J1_P0 zhpky>8ao%R$$on##4BlUn6zJMNTg)F#=#BjJg&{#U%lUO#O(F!$A5o+eOf-{M)$0p zx>t5Se)hS(*Za?0v*O2q;jrn`4}{)Ijoy4k zhBM~ow#(mU-s_2#Nd5UG{=&Dg^P4<9bbGJF^{;8Z{cbJq4NgUCuR4a-gC{$i=AO{B z*83Ftk2%1bkx7mj9*2|7m9&_F5jZ(dRc3O7(&EV#$|_7@0+Z({`!mfJnEYNjjHyIu zvb#zc(@v4e^MMq*_~h>@kxY7$lY>+(5;5af0-QR4(Z{f)F-n>NTWqsJVjC@{1H4(; RKzg}=FoKzZ;j;{g2LO$8|JVQk