From 80630a64da5798eb9d1f7e2c8223faa27a6c38ae Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Mon, 4 Feb 2019 11:06:27 -0800 Subject: [PATCH 01/11] Adjust CPU isTouchingColor to match GPU results --- src/Drawable.js | 10 ++------- src/RenderWebGL.js | 55 ++++++++++++++++++++++++++++------------------ src/Silhouette.js | 36 ++++++++++++++---------------- 3 files changed, 53 insertions(+), 48 deletions(-) diff --git a/src/Drawable.js b/src/Drawable.js index d8f6589..1193f08 100644 --- a/src/Drawable.js +++ b/src/Drawable.js @@ -24,12 +24,11 @@ const __isTouchingPosition = twgl.v3.create(); * @return {twgl.v3} [x,y] texture space float vector - transformed by effects and matrix */ const getLocalPosition = (drawable, vec) => { - // Transfrom from world coordinates to Drawable coordinates. + // Transform from world coordinates to Drawable coordinates. const localPosition = __isTouchingPosition; const v0 = vec[0]; const v1 = vec[1]; const m = drawable._inverseMatrix; - // var v2 = v[2]; const d = (v0 * m[3]) + (v1 * m[7]) + m[15]; // The RenderWebGL quad flips the texture's X axis. So rendered bottom // left is 1, 0 and the top right is 0, 1. Flip the X axis so @@ -342,7 +341,7 @@ class Drawable { // Drawable configures a 3D matrix for drawing in WebGL, but most values // will never be set because the inputs are on the X and Y position axis // and the Z rotation axis. Drawable can bring the work inside - // _calculateTransform and greatly reduce the ammount of math and array + // _calculateTransform and greatly reduce the amount of math and array // assignments needed. const scale0 = this._skinScale[0]; @@ -625,11 +624,6 @@ class Drawable { */ static sampleColor4b (vec, drawable, dst) { const localPosition = getLocalPosition(drawable, vec); - if (localPosition[0] < 0 || localPosition[1] < 0 || - localPosition[0] > 1 || localPosition[1] > 1) { - dst[3] = 0; - return dst; - } const textColor = // commenting out to only use nearest for now // drawable.useNearest ? diff --git a/src/RenderWebGL.js b/src/RenderWebGL.js index 05b35e2..1434927 100644 --- a/src/RenderWebGL.js +++ b/src/RenderWebGL.js @@ -267,8 +267,7 @@ class RenderWebGL extends EventEmitter { this._yBottom = yBottom; this._yTop = yTop; - // swap yBottom & yTop to fit Scratch convention of +y=up - this._projection = twgl.m4.ortho(xLeft, xRight, yBottom, yTop, -1, 1); + this._projection = this._makeOrthoProjection(xLeft, xRight, yBottom, yTop); this._setNativeSize(Math.abs(xRight - xLeft), Math.abs(yBottom - yTop)); } @@ -292,6 +291,20 @@ class RenderWebGL extends EventEmitter { this.emit(RenderConstants.Events.NativeSizeChanged, {newSize: this._nativeSize}); } + /** + * Build a projection matrix for Scratch coordinates. For example, `_makeOrthoProjection(-240,240,-180,180)` will + * mean the lower-left pixel is at (-240,-179) and the upper right pixel is at (239,180), matching Scratch 2.0. + * @param {number} xLeft - the left edge of the projection volume (-240) + * @param {number} xRight - the right edge of the projection volume (240) + * @param {number} yBottom - the bottom edge of the projection volume (-180) + * @param {number} yTop - the top edge of the projection volume (180) + * @returns {module:twgl/m4.Mat4} - a projection matrix containing [xLeft,xRight) and (yBottom,yTop] + */ + _makeOrthoProjection (xLeft, xRight, yBottom, yTop) { + // swap yBottom & yTop to fit Scratch convention of +y=up + return twgl.m4.ortho(xLeft, xRight, yBottom, yTop, -1, 1); + } + /** * Create a new bitmap skin from a snapshot of the provided bitmap data. * @param {ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} bitmapData - new contents for this skin. @@ -529,7 +542,7 @@ class RenderWebGL extends EventEmitter { * Returns the position of the given drawableID in the draw list. This is * the absolute position irrespective of layer group. * @param {number} drawableID The drawable ID to find. - * @return {number} The postion of the given drawable ID. + * @return {number} The position of the given drawable ID. */ getDrawableOrder (drawableID) { return this._drawList.indexOf(drawableID); @@ -543,7 +556,7 @@ class RenderWebGL extends EventEmitter { * "go to back": setDrawableOrder(id, 1); (assuming stage at 0). * "go to front": setDrawableOrder(id, Infinity); * @param {int} drawableID ID of Drawable to reorder. - * @param {number} order New absolute order or relative order adjusment. + * @param {number} order New absolute order or relative order adjustment. * @param {string=} group Name of layer group drawable belongs to. * Reordering will not take place if drawable cannot be found within the bounds * of the layer group. @@ -714,7 +727,7 @@ class RenderWebGL extends EventEmitter { /** * Check if a particular Drawable is touching a particular color. - * Unlike touching drawable, if the "tester" is invisble, we will still test. + * Unlike touching drawable, if the "tester" is invisible, we will still test. * @param {int} drawableID The ID of the Drawable to check. * @param {Array} color3b Test if the Drawable is touching this color. * @param {Array} [mask3b] Optionally mask the check to this part of Drawable. @@ -747,13 +760,13 @@ class RenderWebGL extends EventEmitter { const hasMask = Boolean(mask3b); // Scratch Space - +y is top - for (let y = bounds.bottom; y <= bounds.top; y++) { - if (bounds.width * (y - bounds.bottom) * (candidates.length + 1) >= maxPixelsForCPU) { - return this._isTouchingColorGpuFin(bounds, color3b, y - bounds.bottom); + for (let y = 0; y < bounds.height; ++y) { + if (bounds.width * y * (candidates.length + 1) >= __cpuTouchingColorPixelCount) { + return this._isTouchingColorGpuFin(bounds, color3b, y); } - for (let x = bounds.left; x <= bounds.right; x++) { - point[1] = y; - point[0] = x; + for (let x = 0; x < bounds.width; ++x) { + point[1] = bounds.top + y; // bounds.top <= y < bounds.bottom ("flipped") + point[0] = bounds.left + x; // bounds.left <= x < bounds.right // if we use a mask, check our sample color... if (hasMask ? maskMatches(Drawable.sampleColor4b(point, drawable, color), mask3b) : @@ -761,7 +774,7 @@ class RenderWebGL extends EventEmitter { RenderWebGL.sampleColor3b(point, candidates, color); if (debugCanvasContext) { debugCanvasContext.fillStyle = `rgb(${color[0]},${color[1]},${color[2]})`; - debugCanvasContext.fillRect(x - bounds.left, bounds.bottom - y, 1, 1); + debugCanvasContext.fillRect(x, y, 1, 1); } // ...and the target color is drawn at this pixel if (colorMatches(color, color3b, 0)) { @@ -794,7 +807,7 @@ class RenderWebGL extends EventEmitter { // Limit size of viewport to the bounds around the target Drawable, // and create the projection matrix for the draw. gl.viewport(0, 0, bounds.width, bounds.height); - const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); + const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); let fillBackgroundColor = this._backgroundColor; @@ -877,7 +890,7 @@ class RenderWebGL extends EventEmitter { const candidates = this._candidatesTouching(drawableID, // even if passed an invisible drawable, we will NEVER touch it! candidateIDs.filter(id => this._allDrawables[id]._visible)); - // if we are invisble we don't touch anything. + // if we are invisible we don't touch anything. if (candidates.length === 0 || !this._allDrawables[drawableID]._visible) { return false; } @@ -910,7 +923,7 @@ class RenderWebGL extends EventEmitter { /** * Convert a client based x/y position on the canvas to a Scratch 3 world space - * Rectangle. This creates recangles with a radius to cover selecting multiple + * Rectangle. This creates rectangles with a radius to cover selecting multiple * scratch pixels with touch / small render areas. * * @param {int} centerX The client x coordinate of the picking location. @@ -1027,7 +1040,7 @@ class RenderWebGL extends EventEmitter { for (worldPos[0] = bounds.left; worldPos[0] <= bounds.right; worldPos[0]++) { // Check candidates in the reverse order they would have been - // drawn. This will determine what candiate's silhouette pixel + // drawn. This will determine what candidate's silhouette pixel // would have been drawn at the point. for (let d = candidateIDs.length - 1; d >= 0; d--) { const id = candidateIDs[d]; @@ -1111,7 +1124,7 @@ class RenderWebGL extends EventEmitter { // Limit size of viewport to the bounds around the target Drawable, // and create the projection matrix for the draw. gl.viewport(0, 0, bounds.width, bounds.height); - const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); + const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); gl.clearColor(0, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT); @@ -1186,7 +1199,7 @@ class RenderWebGL extends EventEmitter { const pickY = bounds.top - scratchY; gl.viewport(0, 0, bounds.width, bounds.height); - const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); + const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); gl.clearColor.apply(gl, this._backgroundColor); gl.clear(gl.COLOR_BUFFER_BIT); @@ -1428,7 +1441,7 @@ class RenderWebGL extends EventEmitter { // Limit size of viewport to the bounds around the stamp Drawable and create the projection matrix for the draw. gl.viewport(0, 0, bounds.width, bounds.height); - const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); + const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); gl.clearColor(0, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT); @@ -1517,7 +1530,7 @@ class RenderWebGL extends EventEmitter { * can skip superfluous extra state calls when it is already in that * region. Since one region may be entered from within another a exit * handle can also be registered that is called when a new region is about - * to be entered to restore a common inbetween state. + * to be entered to restore a common in-between state. * * @param {any} regionId - id of the region to enter * @param {function} enter - handle to call when first entering a region @@ -1649,7 +1662,7 @@ class RenderWebGL extends EventEmitter { * * The determinant is useful in this case to know if AC is counter * clockwise from AB. A positive value means the AC is counter - * clockwise from AC. A negative value menas AC is clockwise from AB. + * clockwise from AC. A negative value means AC is clockwise from AB. * * @param {Float32Array} A A 2d vector in space. * @param {Float32Array} B A 2d vector in space. diff --git a/src/Silhouette.js b/src/Silhouette.js index 7523d35..04d84db 100644 --- a/src/Silhouette.js +++ b/src/Silhouette.js @@ -11,16 +11,16 @@ let __SilhouetteUpdateCanvas; /** - * Internal helper function (in hopes that compiler can inline). Get a pixel - * from silhouette data, or 0 if outside it's bounds. + * Internal helper function (in hopes that compiler can inline). Get the alpha value for a texel in the silhouette + * data, or 0 if outside it's bounds. * @private - * @param {Silhouette} silhouette - has data width and height - * @param {number} x - x - * @param {number} y - y + * @param {Silhouette} $0 - has data, width, and height + * @param {number} x - X position in texels (0..width). + * @param {number} y - Y position in texels (0..height). * @return {number} Alpha value for x/y position */ const getPoint = ({_width: width, _height: height, _colorData: data}, x, y) => { - // 0 if outside bouds, otherwise read from data. + // 0 if outside bounds, otherwise read from data. if (x >= width || y >= height || x < 0 || y < 0) { return 0; } @@ -39,14 +39,14 @@ const __cornerWork = [ /** * Get the color from a given silhouette at an x/y local texture position. - * @param {Silhouette} The silhouette to sample. - * @param {number} x X position of texture (0-1). - * @param {number} y Y position of texture (0-1). - * @param {Uint8ClampedArray} dst A color 4b space. - * @return {Uint8ClampedArray} The dst vector. + * @param {Silhouette} $0 - The silhouette to sample. + * @param {number} x - X position in texels (0..width). + * @param {number} y - Y position in texels (0..height). + * @param {Uint8ClampedArray} dst - A color 4b space. + * @return {Uint8ClampedArray} - The dst vector. */ const getColor4b = ({_width: width, _height: height, _colorData: data}, x, y, dst) => { - // 0 if outside bouds, otherwise read from data. + // 0 if outside bounds, otherwise read from data. if (x >= width || y >= height || x < 0 || y < 0) { return dst.fill(0); } @@ -100,7 +100,7 @@ class Silhouette { const imageData = ctx.getImageData(0, 0, width, height); this._colorData = imageData.data; - // delete our custom overriden "uninitalized" color functions + // delete our custom overridden "uninitialized" color functions // let the prototype work for itself delete this.colorAtNearest; delete this.colorAtLinear; @@ -114,12 +114,10 @@ class Silhouette { * @returns {Uint8ClampedArray} dst */ colorAtNearest (vec, dst) { - return getColor4b( - this, - Math.floor(vec[0] * (this._width - 1)), - Math.floor(vec[1] * (this._height - 1)), - dst - ); + const x = Math.round(vec[0] * this._width); + const y = Math.round(vec[1] * this._height); + const color = getColor4b(this, x, y, dst); + return color; } /** From 73896b6f326d9180a2f080bb764f6b28c1bba1b5 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Tue, 5 Feb 2019 18:19:13 -0800 Subject: [PATCH 02/11] Fix direction for Y iteration on CPU path For some reason the JavaScript engine insists on running the code instead of doing what the comment says. I guess they should match. --- src/RenderWebGL.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RenderWebGL.js b/src/RenderWebGL.js index 1434927..f6b632a 100644 --- a/src/RenderWebGL.js +++ b/src/RenderWebGL.js @@ -765,7 +765,7 @@ class RenderWebGL extends EventEmitter { return this._isTouchingColorGpuFin(bounds, color3b, y); } for (let x = 0; x < bounds.width; ++x) { - point[1] = bounds.top + y; // bounds.top <= y < bounds.bottom ("flipped") + point[1] = bounds.top - y; // bounds.top <= y < bounds.bottom ("flipped") point[0] = bounds.left + x; // bounds.left <= x < bounds.right // if we use a mask, check our sample color... if (hasMask ? From a24b853af617f97284bd277e0979ce951d80f71f Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Wed, 6 Feb 2019 11:08:17 -0800 Subject: [PATCH 03/11] Fix (x,y) => point[] conversion comments --- src/RenderWebGL.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/RenderWebGL.js b/src/RenderWebGL.js index f6b632a..be3319b 100644 --- a/src/RenderWebGL.js +++ b/src/RenderWebGL.js @@ -765,8 +765,8 @@ class RenderWebGL extends EventEmitter { return this._isTouchingColorGpuFin(bounds, color3b, y); } for (let x = 0; x < bounds.width; ++x) { - point[1] = bounds.top - y; // bounds.top <= y < bounds.bottom ("flipped") - point[0] = bounds.left + x; // bounds.left <= x < bounds.right + point[0] = bounds.left + x; // bounds.left <= point[0] < bounds.right + point[1] = bounds.top - y; // bounds.bottom < point[1] <= bounds.top ("flipped") // if we use a mask, check our sample color... if (hasMask ? maskMatches(Drawable.sampleColor4b(point, drawable, color), mask3b) : From e0b420a1835d500a1d62253891d0e620cf90b0fd Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Wed, 27 Feb 2019 11:31:05 -0800 Subject: [PATCH 04/11] Use alpha test to avoid false touching-color --- src/shaders/sprite.frag | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/shaders/sprite.frag b/src/shaders/sprite.frag index 055e9a2..5517f35 100644 --- a/src/shaders/sprite.frag +++ b/src/shaders/sprite.frag @@ -45,6 +45,8 @@ uniform sampler2D u_skin; varying vec2 v_texCoord; +const float minAlpha = 1.0 / 255.0; + #if !defined(DRAW_MODE_silhouette) && (defined(ENABLE_color)) // Branchless color conversions based on code from: // http://www.chilliant.com/rgb2hsv.html by Ian Taylor @@ -155,9 +157,14 @@ void main() gl_FragColor = texture2D(u_skin, texcoord0); - #ifdef ENABLE_ghost - gl_FragColor.a *= u_ghost; - #endif // ENABLE_ghost + if (gl_FragColor.a < minAlpha) + { + discard; + } + + #ifdef ENABLE_ghost + gl_FragColor.a *= u_ghost; + #endif // ENABLE_ghost #ifdef DRAW_MODE_silhouette // switch to u_silhouetteColor only AFTER the alpha test From e864018d875c7db1e8194a8ede16fbe5c8c38883 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Wed, 27 Feb 2019 11:52:01 -0800 Subject: [PATCH 05/11] Iterate drawables in the same order on CPU & GPU --- src/RenderWebGL.js | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/RenderWebGL.js b/src/RenderWebGL.js index be3319b..0eb4fc5 100644 --- a/src/RenderWebGL.js +++ b/src/RenderWebGL.js @@ -751,7 +751,7 @@ class RenderWebGL extends EventEmitter { // if there are just too many pixels to CPU render efficiently, we need to let readPixels happen if (bounds.width * bounds.height * (candidates.length + 1) >= maxPixelsForCPU) { - this._isTouchingColorGpuStart(drawableID, candidates.map(({id}) => id).reverse(), bounds, color3b, mask3b); + this._isTouchingColorGpuStart(drawableID, candidates.map(({id}) => id), bounds, color3b, mask3b); } const drawable = this._allDrawables[drawableID]; @@ -761,7 +761,7 @@ class RenderWebGL extends EventEmitter { // Scratch Space - +y is top for (let y = 0; y < bounds.height; ++y) { - if (bounds.width * y * (candidates.length + 1) >= __cpuTouchingColorPixelCount) { + if (bounds.width * y * (candidates.length + 1) >= maxPixelsForCPU) { return this._isTouchingColorGpuFin(bounds, color3b, y); } for (let x = 0; x < bounds.width; ++x) { @@ -1268,8 +1268,7 @@ class RenderWebGL extends EventEmitter { } /** - * Filter a list of candidates for a touching query into only those that - * could possibly intersect the given bounds. + * Filter a list of candidates for a touching query into only those that could possibly intersect the given bounds. * @param {int} drawableID - ID for drawable of query. * @param {Array} candidateIDs - Candidates for touching query. * @return {?Array< {id, drawable, intersection} >} Filtered candidates with useful data. @@ -1280,8 +1279,7 @@ class RenderWebGL extends EventEmitter { if (bounds === null) { return result; } - // iterate through the drawables list BACKWARDS - we want the top most item to be the first we check - for (let index = candidateIDs.length - 1; index >= 0; index--) { + for (let index = 0; index < candidateIDs.length; ++index) { const id = candidateIDs[index]; if (id !== drawableID) { const drawable = this._allDrawables[id]; @@ -1767,8 +1765,7 @@ class RenderWebGL extends EventEmitter { * Sample a "final" color from an array of drawables at a given scratch space. * Will blend any alpha values with the drawables "below" it. * @param {twgl.v3} vec Scratch Vector Space to sample - * @param {Array} drawables A list of drawables with the "top most" - * drawable at index 0 + * @param {Array} drawables A list of drawables with the "bottom most" drawable at index 0 * @param {Uint8ClampedArray} dst The color3b space to store the answer in. * @return {Uint8ClampedArray} The dst vector with everything blended down. */ @@ -1776,7 +1773,7 @@ class RenderWebGL extends EventEmitter { dst = dst || new Uint8ClampedArray(3); dst.fill(0); let blendAlpha = 1; - for (let index = 0; blendAlpha !== 0 && index < drawables.length; index++) { + for (let index = drawables.length - 1; blendAlpha !== 0 && index >= 0; --index) { /* if (left > vec[0] || right < vec[0] || bottom > vec[1] || top < vec[0]) { From fb767b755318616cb4d0d996cdf760536184c8f4 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Wed, 27 Feb 2019 18:12:44 -0800 Subject: [PATCH 06/11] Fix exception on first button click --- test/integration/index.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/integration/index.html b/test/integration/index.html index e3d8dd8..50d4b69 100644 --- a/test/integration/index.html +++ b/test/integration/index.html @@ -29,7 +29,10 @@ vm.attachV2BitmapAdapter(new ScratchSVGRenderer.BitmapAdapter()); document.getElementById('file').addEventListener('click', e => { - document.body.removeChild(document.getElementById('loaded')); + const loaded = document.getElementById('loaded'); + if (loaded) { + document.body.removeChild(loaded); + } }); document.getElementById('file').addEventListener('change', e => { From 9526612d79e1b6c79bfe04a28823d2efc06cd9e5 Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Wed, 27 Feb 2019 18:24:28 -0800 Subject: [PATCH 07/11] Add touching-color test to verify stencil use --- .../scratch-tests/stencil-touching-circle.sb2 | Bin 0 -> 8332 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/integration/scratch-tests/stencil-touching-circle.sb2 diff --git a/test/integration/scratch-tests/stencil-touching-circle.sb2 b/test/integration/scratch-tests/stencil-touching-circle.sb2 new file mode 100644 index 0000000000000000000000000000000000000000..b6e75c1aa902d08a25d325d63ecbe263087c2ffc GIT binary patch literal 8332 zcmeHM30M=?79Q3{1VKTR?PUyNk!3QI4H6R(1Qbx#f)!;6AwXCXNFrOMs4Pm^1S)Fl zQbYwsEl2^23b;NNi(A=56c9uyNCBZ*m3Be`D4+WLzW4fluN89daJPTXx#!+<=G=1~ z?PO#X006)M+Y?vXJ2fp!8j=Bky4e7rh_;6Ed4X(}5DFCVxZQ58+*VVSnDB~i?Jl!@ zJu=Jl95|;#QkS$?sRqwG^W{QY-3=#=6x8|`Z|J(eySyb0zoJZTlpTU8tiR^y?^mBP z@+x4(u9wkrg2SK2dur{$F-pCUs9QO&4}SS70Dko3i!$e3B`(V8^~Tli-UlK}Ry|sw z7H{5p^_GK<#*(*9-7tAl~RU@0?8_t^H z`_JD8>Ws`ceY2aG?~&+v$v3+@sr&S)Cr90E_iL!dEMV>5b@cJ2J;f|%uLnrX9wzd8 z3gTy1U}#Z{BMN=i3Xi9hFN>lT@HRhCN}WPmkZYIEQpKHt9kXR z^u^Ut!iBig!L7T-vpBbnN9Wx!{x_YCBwYC%A3_`^@ls!{Ie~xv(gQ&H^^l4W?W9?+K^q6>5CEw zhp9=`o3~O@7ZmAz)^MQNl3AklW1ei<0v)5R&x+<@+`KB?ao_-EWuVyRWwSm)ClzX;s(@My>ei`4#x}ZG3x)2+PO>Rpt8hep? z?T-;_?!AQ5WZQ!6Pw_vy)}=!p2bEjP(xYW7-5;)P3TT(#H@vgt=);nS={{LH9-rkq zUe8v&cLB4TutIRW23kbf-rd zBzaQe=`~V-AOme%C`z!mC{=BdLK7e(FG}K$kGW4Ql();}@81OcyD{tB6fP6*Xoi608tiMLnqTn^{3BP@8444g3nqKQaE6Ap|F z3FZnIxB#Irl!nJgL_|OlM2N@t#}i-}#-lHn4538^bGSio8;DS;RQz}^Zn**o(ia&U zgI1BDJid_a3;INXE-XG%$O-_BK?xCoxB&{`2qCubCOl|tJPr(H3IjlnF9T;|2}1-j zg+Qeu6e0m3nNkQuG7j|P1P3#4x-d+%wzkHB0wJFl#Ae{QJT4mtqOi3ffk=g@CS(wy zkRX^0gDXJ-i3AZT)X5eC$rK`@JqU#inG#7Lfs8-|R1^rs6f!|fL>`Z zhS541qN4v16EZ|LMP93mX^9Y$5vF2VlW#B;)0(6~71I)NCE;J79P>Cd%N;IXQ%LY>@WK?6t zY9QYA6FQ)4ZH=lcJfRfE5)(j}&pH)1>@D^q~m9QTh9H6$h%p58{|LCY8vE21Th7fDt!o*aVdTVwhs?r8UE>Nu2?u@ zBd32N{(gIP#zxNA$anfRFhCAC>TkE3@>&)G({6d7F3fdus{^lA2 z0L~3P69X!MFH^{rMaMJ%GBW2s;VTWychRBie!I96EKnE7yAFEY@xGi|%sG~s-(9ro zih0MdbpMi@t8AGuJl#+QX1!&vj=`{UO<>-u487DRd#ELk+By~Y(=5G1!%LzL1vFdv zFR<+jE{V>(w>2m+>|k2;qL-a;jK}?`u2_?>V{1#bkM%g5Ny(N;;$%3S8fn?62+$q9 z26ziNZuSa`!-m#h@y{*Iiro9`bike5S!tA@bxZvYd7ZN!!B!8+)Q+62KZGqHTpsML zQY)b9I}N&#Z0rqXWQ|%Y%KP%?9J_fgrR|(N9ok~2w*FIR59$e3?cT5}Cr>WTD=*f% zQ8;?!U(sgOPPI-!W--{F=eHZTR$xnAD^4_=8!=e8jW}W+zrqNwsJd?GU_-OG7&9#s1Ok zr)?um&#`}`$?nE1Q1}YtD$5*mw3Cun0N#Clj&7gV{$9UKpF+OQXmnhu$+T2qi-ZHb~e+R2H& Q=72o Date: Wed, 27 Feb 2019 18:52:59 -0800 Subject: [PATCH 08/11] Run test projects in each GPU usage mode --- test/integration/scratch-tests.js | 97 +++++++++++++++++-------------- 1 file changed, 54 insertions(+), 43 deletions(-) diff --git a/test/integration/scratch-tests.js b/test/integration/scratch-tests.js index dbc3d2e..d2c7f8f 100644 --- a/test/integration/scratch-tests.js +++ b/test/integration/scratch-tests.js @@ -5,51 +5,12 @@ const path = require('path'); const fs = require('fs'); const chromeless = new Chromeless(); +const allGpuModes = ['ForceCPU', 'ForceGPU', 'Automatic']; + const indexHTML = path.resolve(__dirname, 'index.html'); const testDir = (...args) => path.resolve(__dirname, 'scratch-tests', ...args); -const testFile = file => test(file, async t => { - // start each test by going to the index.html, and loading the scratch file - const says = await chromeless.goto(`file://${indexHTML}`) - .setFileInput('#file', testDir(file)) - // the index.html handler for file input will add a #loaded element when it - // finishes. - .wait('#loaded') - .evaluate(() => { - // This function is run INSIDE the integration chrome browser via some - // injection and .toString() magic. We can return some "simple data" - // back across as a promise, so we will just log all the says that happen - // for parsing after. - - // this becomes the `says` in the outer scope - const messages = []; - const TIMEOUT = 5000; - - vm.runtime.on('SAY', (_, __, message) => { - messages.push(message); - }); - - vm.greenFlag(); - const startTime = Date.now(); - - return Promise.resolve() - .then(async () => { - // waiting for all threads to complete, then we return - while (vm.runtime.threads.some(thread => vm.runtime.isActiveThread(thread))) { - if ((Date.now() - startTime) >= TIMEOUT) { - // if we push the message after end, the failure from tap is not very useful: - // "not ok test after end() was called" - messages.unshift(`fail Threads still running after ${TIMEOUT}ms`); - break; - } - - await new Promise(resolve => setTimeout(resolve, 50)); - } - - return messages; - }); - }); - +const checkOneGpuMode = (t, says) => { // Map string messages to tap reporting methods. This will be used // with events from scratch's runtime emitted on block instructions. let didPlan = false; @@ -99,7 +60,57 @@ const testFile = file => test(file, async t => { t.fail('did not say "end"'); t.end(); } -}); +}; + +const testFile = async file => { + // start each test by going to the index.html, and loading the scratch file + const says = await chromeless.goto(`file://${indexHTML}`) + .setFileInput('#file', testDir(file)) + // the index.html handler for file input will add a #loaded element when it + // finishes. + .wait('#loaded') + .evaluate(async useGpuModes => { + // This function is run INSIDE the integration chrome browser via some + // injection and .toString() magic. We can return some "simple data" + // back across as a promise, so we will just log all the says that happen + // for parsing after. + + // this becomes the `says` in the outer scope + const allMessages = {}; + const TIMEOUT = 5000; + + vm.runtime.on('SAY', (_, __, message) => { + const messages = allMessages[vm.renderer._useGpuMode]; + messages.push(message); + }); + + for (const useGpuMode of useGpuModes) { + const messages = allMessages[useGpuMode] = []; + + vm.renderer.setUseGpuMode(useGpuMode); + vm.greenFlag(); + const startTime = Date.now(); + + // wait for all threads to complete before moving on to the next mode + while (vm.runtime.threads.some(thread => vm.runtime.isActiveThread(thread))) { + if ((Date.now() - startTime) >= TIMEOUT) { + // if we push the message after end, the failure from tap is not very useful: + // "not ok test after end() was called" + messages.unshift(`fail Threads still running after ${TIMEOUT}ms`); + break; + } + + await new Promise(resolve => setTimeout(resolve, 50)); + } + } + + return allMessages; + }, allGpuModes); + + for (const gpuMode of allGpuModes) { + test(`File: ${file}, GPU Mode: ${gpuMode}`, t => checkOneGpuMode(t, says[gpuMode])); + } +}; const testBubbles = () => test('bubble snapshot', async t => { const bubbleSvg = await chromeless.goto(`file://${indexHTML}`) From b304ea8fdff09f89a4dfacd8879c47436ad53a0b Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Wed, 20 Mar 2019 22:58:32 -0700 Subject: [PATCH 09/11] Make touching-color test more robust against GPU imprecision Previously, the `color-touching-tests.sb2` test "touches a color that doesn't actually exist right now" would use a sprite with ghost 50, blended against another sprite, to create the color that "doesn't actually exist" when the query sprite is skipped. Unfortunately the blend result was near a bit-boundary and, depending on the specific hardware used, that test could fail on the GPU. When the renderer uses the CPU path this test works fine, though, so the existing problem went unnoticed. To fix the problem I changed the project to use ghost 30 instead, which results in a color that is less near a bit boundary and is therefore less likely to fail on specific hardware. As an example of what was happening: the `touching color` block was checking for `RGB(127,101,216)` with a mask of `RGB(0xF8,0xF8,0xF0)`. On the CPU it would find `RGB(120,99,215)`, which is in range, but on some GPUs the closest color it could find was `RGB(119,98,215)` which mismatches on all four of the least significant bits -- one of which is enabled in the mask. --- src/RenderWebGL.js | 2 +- .../scratch-tests/color-touching-tests.sb2 | Bin 82511 -> 57971 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RenderWebGL.js b/src/RenderWebGL.js index 0eb4fc5..9c34172 100644 --- a/src/RenderWebGL.js +++ b/src/RenderWebGL.js @@ -777,7 +777,7 @@ class RenderWebGL extends EventEmitter { debugCanvasContext.fillRect(x, y, 1, 1); } // ...and the target color is drawn at this pixel - if (colorMatches(color, color3b, 0)) { + if (colorMatches(color3b, color, 0)) { return true; } } diff --git a/test/integration/scratch-tests/color-touching-tests.sb2 b/test/integration/scratch-tests/color-touching-tests.sb2 index 4753e24042607692dce3ebd4d293b34919fb3d40..005799362093339d0510d65af407e3bf431df284 100644 GIT binary patch delta 55194 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 L?y}99?`Qu4Bh6F< literal 82511 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 aDJ$~&l)20NNT9!fFoYpUImL|CD&iLrOZf!= From bffe80086e3bf13fa1370a997b8d0ac7d25dc077 Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" Date: Fri, 19 Apr 2019 18:45:16 +0000 Subject: [PATCH 10/11] fix(package): update scratch-svg-renderer to version 0.2.0-prerelease.20190419183947 Closes #430 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cec59d4..e660dd4 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "minilog": "3.1.0", "raw-loader": "^0.5.1", "scratch-storage": "^1.0.0", - "scratch-svg-renderer": "0.2.0-prerelease.20190304180800", + "scratch-svg-renderer": "0.2.0-prerelease.20190419183947", "twgl.js": "4.4.0" } } From 757d7e3c9618c889defc7e817e2e7b6e3856cbb4 Mon Sep 17 00:00:00 2001 From: Paul Kaplan Date: Fri, 19 Apr 2019 16:13:47 -0400 Subject: [PATCH 11/11] Revert "Adjust CPU `isTouchingColor` to match GPU results (again)" --- src/Drawable.js | 10 +- src/RenderWebGL.js | 70 ++++++------- src/Silhouette.js | 36 ++++--- src/shaders/sprite.frag | 13 +-- test/integration/index.html | 5 +- test/integration/scratch-tests.js | 97 ++++++++---------- .../scratch-tests/color-touching-tests.sb2 | Bin 57971 -> 82511 bytes .../scratch-tests/stencil-touching-circle.sb2 | Bin 8332 -> 0 bytes 8 files changed, 104 insertions(+), 127 deletions(-) delete mode 100644 test/integration/scratch-tests/stencil-touching-circle.sb2 diff --git a/src/Drawable.js b/src/Drawable.js index 1193f08..d8f6589 100644 --- a/src/Drawable.js +++ b/src/Drawable.js @@ -24,11 +24,12 @@ const __isTouchingPosition = twgl.v3.create(); * @return {twgl.v3} [x,y] texture space float vector - transformed by effects and matrix */ const getLocalPosition = (drawable, vec) => { - // Transform from world coordinates to Drawable coordinates. + // Transfrom from world coordinates to Drawable coordinates. const localPosition = __isTouchingPosition; const v0 = vec[0]; const v1 = vec[1]; const m = drawable._inverseMatrix; + // var v2 = v[2]; const d = (v0 * m[3]) + (v1 * m[7]) + m[15]; // The RenderWebGL quad flips the texture's X axis. So rendered bottom // left is 1, 0 and the top right is 0, 1. Flip the X axis so @@ -341,7 +342,7 @@ class Drawable { // Drawable configures a 3D matrix for drawing in WebGL, but most values // will never be set because the inputs are on the X and Y position axis // and the Z rotation axis. Drawable can bring the work inside - // _calculateTransform and greatly reduce the amount of math and array + // _calculateTransform and greatly reduce the ammount of math and array // assignments needed. const scale0 = this._skinScale[0]; @@ -624,6 +625,11 @@ class Drawable { */ static sampleColor4b (vec, drawable, dst) { const localPosition = getLocalPosition(drawable, vec); + if (localPosition[0] < 0 || localPosition[1] < 0 || + localPosition[0] > 1 || localPosition[1] > 1) { + dst[3] = 0; + return dst; + } const textColor = // commenting out to only use nearest for now // drawable.useNearest ? diff --git a/src/RenderWebGL.js b/src/RenderWebGL.js index 9c34172..05b35e2 100644 --- a/src/RenderWebGL.js +++ b/src/RenderWebGL.js @@ -267,7 +267,8 @@ class RenderWebGL extends EventEmitter { this._yBottom = yBottom; this._yTop = yTop; - this._projection = this._makeOrthoProjection(xLeft, xRight, yBottom, yTop); + // swap yBottom & yTop to fit Scratch convention of +y=up + this._projection = twgl.m4.ortho(xLeft, xRight, yBottom, yTop, -1, 1); this._setNativeSize(Math.abs(xRight - xLeft), Math.abs(yBottom - yTop)); } @@ -291,20 +292,6 @@ class RenderWebGL extends EventEmitter { this.emit(RenderConstants.Events.NativeSizeChanged, {newSize: this._nativeSize}); } - /** - * Build a projection matrix for Scratch coordinates. For example, `_makeOrthoProjection(-240,240,-180,180)` will - * mean the lower-left pixel is at (-240,-179) and the upper right pixel is at (239,180), matching Scratch 2.0. - * @param {number} xLeft - the left edge of the projection volume (-240) - * @param {number} xRight - the right edge of the projection volume (240) - * @param {number} yBottom - the bottom edge of the projection volume (-180) - * @param {number} yTop - the top edge of the projection volume (180) - * @returns {module:twgl/m4.Mat4} - a projection matrix containing [xLeft,xRight) and (yBottom,yTop] - */ - _makeOrthoProjection (xLeft, xRight, yBottom, yTop) { - // swap yBottom & yTop to fit Scratch convention of +y=up - return twgl.m4.ortho(xLeft, xRight, yBottom, yTop, -1, 1); - } - /** * Create a new bitmap skin from a snapshot of the provided bitmap data. * @param {ImageData|HTMLImageElement|HTMLCanvasElement|HTMLVideoElement} bitmapData - new contents for this skin. @@ -542,7 +529,7 @@ class RenderWebGL extends EventEmitter { * Returns the position of the given drawableID in the draw list. This is * the absolute position irrespective of layer group. * @param {number} drawableID The drawable ID to find. - * @return {number} The position of the given drawable ID. + * @return {number} The postion of the given drawable ID. */ getDrawableOrder (drawableID) { return this._drawList.indexOf(drawableID); @@ -556,7 +543,7 @@ class RenderWebGL extends EventEmitter { * "go to back": setDrawableOrder(id, 1); (assuming stage at 0). * "go to front": setDrawableOrder(id, Infinity); * @param {int} drawableID ID of Drawable to reorder. - * @param {number} order New absolute order or relative order adjustment. + * @param {number} order New absolute order or relative order adjusment. * @param {string=} group Name of layer group drawable belongs to. * Reordering will not take place if drawable cannot be found within the bounds * of the layer group. @@ -727,7 +714,7 @@ class RenderWebGL extends EventEmitter { /** * Check if a particular Drawable is touching a particular color. - * Unlike touching drawable, if the "tester" is invisible, we will still test. + * Unlike touching drawable, if the "tester" is invisble, we will still test. * @param {int} drawableID The ID of the Drawable to check. * @param {Array} color3b Test if the Drawable is touching this color. * @param {Array} [mask3b] Optionally mask the check to this part of Drawable. @@ -751,7 +738,7 @@ class RenderWebGL extends EventEmitter { // if there are just too many pixels to CPU render efficiently, we need to let readPixels happen if (bounds.width * bounds.height * (candidates.length + 1) >= maxPixelsForCPU) { - this._isTouchingColorGpuStart(drawableID, candidates.map(({id}) => id), bounds, color3b, mask3b); + this._isTouchingColorGpuStart(drawableID, candidates.map(({id}) => id).reverse(), bounds, color3b, mask3b); } const drawable = this._allDrawables[drawableID]; @@ -760,13 +747,13 @@ class RenderWebGL extends EventEmitter { const hasMask = Boolean(mask3b); // Scratch Space - +y is top - for (let y = 0; y < bounds.height; ++y) { - if (bounds.width * y * (candidates.length + 1) >= maxPixelsForCPU) { - return this._isTouchingColorGpuFin(bounds, color3b, y); + for (let y = bounds.bottom; y <= bounds.top; y++) { + if (bounds.width * (y - bounds.bottom) * (candidates.length + 1) >= maxPixelsForCPU) { + return this._isTouchingColorGpuFin(bounds, color3b, y - bounds.bottom); } - for (let x = 0; x < bounds.width; ++x) { - point[0] = bounds.left + x; // bounds.left <= point[0] < bounds.right - point[1] = bounds.top - y; // bounds.bottom < point[1] <= bounds.top ("flipped") + for (let x = bounds.left; x <= bounds.right; x++) { + point[1] = y; + point[0] = x; // if we use a mask, check our sample color... if (hasMask ? maskMatches(Drawable.sampleColor4b(point, drawable, color), mask3b) : @@ -774,10 +761,10 @@ class RenderWebGL extends EventEmitter { RenderWebGL.sampleColor3b(point, candidates, color); if (debugCanvasContext) { debugCanvasContext.fillStyle = `rgb(${color[0]},${color[1]},${color[2]})`; - debugCanvasContext.fillRect(x, y, 1, 1); + debugCanvasContext.fillRect(x - bounds.left, bounds.bottom - y, 1, 1); } // ...and the target color is drawn at this pixel - if (colorMatches(color3b, color, 0)) { + if (colorMatches(color, color3b, 0)) { return true; } } @@ -807,7 +794,7 @@ class RenderWebGL extends EventEmitter { // Limit size of viewport to the bounds around the target Drawable, // and create the projection matrix for the draw. gl.viewport(0, 0, bounds.width, bounds.height); - const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); + const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); let fillBackgroundColor = this._backgroundColor; @@ -890,7 +877,7 @@ class RenderWebGL extends EventEmitter { const candidates = this._candidatesTouching(drawableID, // even if passed an invisible drawable, we will NEVER touch it! candidateIDs.filter(id => this._allDrawables[id]._visible)); - // if we are invisible we don't touch anything. + // if we are invisble we don't touch anything. if (candidates.length === 0 || !this._allDrawables[drawableID]._visible) { return false; } @@ -923,7 +910,7 @@ class RenderWebGL extends EventEmitter { /** * Convert a client based x/y position on the canvas to a Scratch 3 world space - * Rectangle. This creates rectangles with a radius to cover selecting multiple + * Rectangle. This creates recangles with a radius to cover selecting multiple * scratch pixels with touch / small render areas. * * @param {int} centerX The client x coordinate of the picking location. @@ -1040,7 +1027,7 @@ class RenderWebGL extends EventEmitter { for (worldPos[0] = bounds.left; worldPos[0] <= bounds.right; worldPos[0]++) { // Check candidates in the reverse order they would have been - // drawn. This will determine what candidate's silhouette pixel + // drawn. This will determine what candiate's silhouette pixel // would have been drawn at the point. for (let d = candidateIDs.length - 1; d >= 0; d--) { const id = candidateIDs[d]; @@ -1124,7 +1111,7 @@ class RenderWebGL extends EventEmitter { // Limit size of viewport to the bounds around the target Drawable, // and create the projection matrix for the draw. gl.viewport(0, 0, bounds.width, bounds.height); - const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); + const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); gl.clearColor(0, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT); @@ -1199,7 +1186,7 @@ class RenderWebGL extends EventEmitter { const pickY = bounds.top - scratchY; gl.viewport(0, 0, bounds.width, bounds.height); - const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); + const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); gl.clearColor.apply(gl, this._backgroundColor); gl.clear(gl.COLOR_BUFFER_BIT); @@ -1268,7 +1255,8 @@ class RenderWebGL extends EventEmitter { } /** - * Filter a list of candidates for a touching query into only those that could possibly intersect the given bounds. + * Filter a list of candidates for a touching query into only those that + * could possibly intersect the given bounds. * @param {int} drawableID - ID for drawable of query. * @param {Array} candidateIDs - Candidates for touching query. * @return {?Array< {id, drawable, intersection} >} Filtered candidates with useful data. @@ -1279,7 +1267,8 @@ class RenderWebGL extends EventEmitter { if (bounds === null) { return result; } - for (let index = 0; index < candidateIDs.length; ++index) { + // iterate through the drawables list BACKWARDS - we want the top most item to be the first we check + for (let index = candidateIDs.length - 1; index >= 0; index--) { const id = candidateIDs[index]; if (id !== drawableID) { const drawable = this._allDrawables[id]; @@ -1439,7 +1428,7 @@ class RenderWebGL extends EventEmitter { // Limit size of viewport to the bounds around the stamp Drawable and create the projection matrix for the draw. gl.viewport(0, 0, bounds.width, bounds.height); - const projection = this._makeOrthoProjection(bounds.left, bounds.right, bounds.top, bounds.bottom); + const projection = twgl.m4.ortho(bounds.left, bounds.right, bounds.top, bounds.bottom, -1, 1); gl.clearColor(0, 0, 0, 0); gl.clear(gl.COLOR_BUFFER_BIT); @@ -1528,7 +1517,7 @@ class RenderWebGL extends EventEmitter { * can skip superfluous extra state calls when it is already in that * region. Since one region may be entered from within another a exit * handle can also be registered that is called when a new region is about - * to be entered to restore a common in-between state. + * to be entered to restore a common inbetween state. * * @param {any} regionId - id of the region to enter * @param {function} enter - handle to call when first entering a region @@ -1660,7 +1649,7 @@ class RenderWebGL extends EventEmitter { * * The determinant is useful in this case to know if AC is counter * clockwise from AB. A positive value means the AC is counter - * clockwise from AC. A negative value means AC is clockwise from AB. + * clockwise from AC. A negative value menas AC is clockwise from AB. * * @param {Float32Array} A A 2d vector in space. * @param {Float32Array} B A 2d vector in space. @@ -1765,7 +1754,8 @@ class RenderWebGL extends EventEmitter { * Sample a "final" color from an array of drawables at a given scratch space. * Will blend any alpha values with the drawables "below" it. * @param {twgl.v3} vec Scratch Vector Space to sample - * @param {Array} drawables A list of drawables with the "bottom most" drawable at index 0 + * @param {Array} drawables A list of drawables with the "top most" + * drawable at index 0 * @param {Uint8ClampedArray} dst The color3b space to store the answer in. * @return {Uint8ClampedArray} The dst vector with everything blended down. */ @@ -1773,7 +1763,7 @@ class RenderWebGL extends EventEmitter { dst = dst || new Uint8ClampedArray(3); dst.fill(0); let blendAlpha = 1; - for (let index = drawables.length - 1; blendAlpha !== 0 && index >= 0; --index) { + for (let index = 0; blendAlpha !== 0 && index < drawables.length; index++) { /* if (left > vec[0] || right < vec[0] || bottom > vec[1] || top < vec[0]) { diff --git a/src/Silhouette.js b/src/Silhouette.js index 9623918..595456a 100644 --- a/src/Silhouette.js +++ b/src/Silhouette.js @@ -11,16 +11,16 @@ let __SilhouetteUpdateCanvas; /** - * Internal helper function (in hopes that compiler can inline). Get the alpha value for a texel in the silhouette - * data, or 0 if outside it's bounds. + * Internal helper function (in hopes that compiler can inline). Get a pixel + * from silhouette data, or 0 if outside it's bounds. * @private - * @param {Silhouette} $0 - has data, width, and height - * @param {number} x - X position in texels (0..width). - * @param {number} y - Y position in texels (0..height). + * @param {Silhouette} silhouette - has data width and height + * @param {number} x - x + * @param {number} y - y * @return {number} Alpha value for x/y position */ const getPoint = ({_width: width, _height: height, _colorData: data}, x, y) => { - // 0 if outside bounds, otherwise read from data. + // 0 if outside bouds, otherwise read from data. if (x >= width || y >= height || x < 0 || y < 0) { return 0; } @@ -39,14 +39,14 @@ const __cornerWork = [ /** * Get the color from a given silhouette at an x/y local texture position. - * @param {Silhouette} $0 - The silhouette to sample. - * @param {number} x - X position in texels (0..width). - * @param {number} y - Y position in texels (0..height). - * @param {Uint8ClampedArray} dst - A color 4b space. - * @return {Uint8ClampedArray} - The dst vector. + * @param {Silhouette} The silhouette to sample. + * @param {number} x X position of texture (0-1). + * @param {number} y Y position of texture (0-1). + * @param {Uint8ClampedArray} dst A color 4b space. + * @return {Uint8ClampedArray} The dst vector. */ const getColor4b = ({_width: width, _height: height, _colorData: data}, x, y, dst) => { - // 0 if outside bounds, otherwise read from data. + // 0 if outside bouds, otherwise read from data. if (x >= width || y >= height || x < 0 || y < 0) { return dst.fill(0); } @@ -110,7 +110,7 @@ class Silhouette { } this._colorData = imageData.data; - // delete our custom overridden "uninitialized" color functions + // delete our custom overriden "uninitalized" color functions // let the prototype work for itself delete this.colorAtNearest; delete this.colorAtLinear; @@ -124,10 +124,12 @@ class Silhouette { * @returns {Uint8ClampedArray} dst */ colorAtNearest (vec, dst) { - const x = Math.round(vec[0] * this._width); - const y = Math.round(vec[1] * this._height); - const color = getColor4b(this, x, y, dst); - return color; + return getColor4b( + this, + Math.floor(vec[0] * (this._width - 1)), + Math.floor(vec[1] * (this._height - 1)), + dst + ); } /** diff --git a/src/shaders/sprite.frag b/src/shaders/sprite.frag index 5517f35..055e9a2 100644 --- a/src/shaders/sprite.frag +++ b/src/shaders/sprite.frag @@ -45,8 +45,6 @@ uniform sampler2D u_skin; varying vec2 v_texCoord; -const float minAlpha = 1.0 / 255.0; - #if !defined(DRAW_MODE_silhouette) && (defined(ENABLE_color)) // Branchless color conversions based on code from: // http://www.chilliant.com/rgb2hsv.html by Ian Taylor @@ -157,14 +155,9 @@ void main() gl_FragColor = texture2D(u_skin, texcoord0); - if (gl_FragColor.a < minAlpha) - { - discard; - } - - #ifdef ENABLE_ghost - gl_FragColor.a *= u_ghost; - #endif // ENABLE_ghost + #ifdef ENABLE_ghost + gl_FragColor.a *= u_ghost; + #endif // ENABLE_ghost #ifdef DRAW_MODE_silhouette // switch to u_silhouetteColor only AFTER the alpha test diff --git a/test/integration/index.html b/test/integration/index.html index 50d4b69..e3d8dd8 100644 --- a/test/integration/index.html +++ b/test/integration/index.html @@ -29,10 +29,7 @@ vm.attachV2BitmapAdapter(new ScratchSVGRenderer.BitmapAdapter()); document.getElementById('file').addEventListener('click', e => { - const loaded = document.getElementById('loaded'); - if (loaded) { - document.body.removeChild(loaded); - } + document.body.removeChild(document.getElementById('loaded')); }); document.getElementById('file').addEventListener('change', e => { diff --git a/test/integration/scratch-tests.js b/test/integration/scratch-tests.js index d2c7f8f..dbc3d2e 100644 --- a/test/integration/scratch-tests.js +++ b/test/integration/scratch-tests.js @@ -5,12 +5,51 @@ const path = require('path'); const fs = require('fs'); const chromeless = new Chromeless(); -const allGpuModes = ['ForceCPU', 'ForceGPU', 'Automatic']; - const indexHTML = path.resolve(__dirname, 'index.html'); const testDir = (...args) => path.resolve(__dirname, 'scratch-tests', ...args); -const checkOneGpuMode = (t, says) => { +const testFile = file => test(file, async t => { + // start each test by going to the index.html, and loading the scratch file + const says = await chromeless.goto(`file://${indexHTML}`) + .setFileInput('#file', testDir(file)) + // the index.html handler for file input will add a #loaded element when it + // finishes. + .wait('#loaded') + .evaluate(() => { + // This function is run INSIDE the integration chrome browser via some + // injection and .toString() magic. We can return some "simple data" + // back across as a promise, so we will just log all the says that happen + // for parsing after. + + // this becomes the `says` in the outer scope + const messages = []; + const TIMEOUT = 5000; + + vm.runtime.on('SAY', (_, __, message) => { + messages.push(message); + }); + + vm.greenFlag(); + const startTime = Date.now(); + + return Promise.resolve() + .then(async () => { + // waiting for all threads to complete, then we return + while (vm.runtime.threads.some(thread => vm.runtime.isActiveThread(thread))) { + if ((Date.now() - startTime) >= TIMEOUT) { + // if we push the message after end, the failure from tap is not very useful: + // "not ok test after end() was called" + messages.unshift(`fail Threads still running after ${TIMEOUT}ms`); + break; + } + + await new Promise(resolve => setTimeout(resolve, 50)); + } + + return messages; + }); + }); + // Map string messages to tap reporting methods. This will be used // with events from scratch's runtime emitted on block instructions. let didPlan = false; @@ -60,57 +99,7 @@ const checkOneGpuMode = (t, says) => { t.fail('did not say "end"'); t.end(); } -}; - -const testFile = async file => { - // start each test by going to the index.html, and loading the scratch file - const says = await chromeless.goto(`file://${indexHTML}`) - .setFileInput('#file', testDir(file)) - // the index.html handler for file input will add a #loaded element when it - // finishes. - .wait('#loaded') - .evaluate(async useGpuModes => { - // This function is run INSIDE the integration chrome browser via some - // injection and .toString() magic. We can return some "simple data" - // back across as a promise, so we will just log all the says that happen - // for parsing after. - - // this becomes the `says` in the outer scope - const allMessages = {}; - const TIMEOUT = 5000; - - vm.runtime.on('SAY', (_, __, message) => { - const messages = allMessages[vm.renderer._useGpuMode]; - messages.push(message); - }); - - for (const useGpuMode of useGpuModes) { - const messages = allMessages[useGpuMode] = []; - - vm.renderer.setUseGpuMode(useGpuMode); - vm.greenFlag(); - const startTime = Date.now(); - - // wait for all threads to complete before moving on to the next mode - while (vm.runtime.threads.some(thread => vm.runtime.isActiveThread(thread))) { - if ((Date.now() - startTime) >= TIMEOUT) { - // if we push the message after end, the failure from tap is not very useful: - // "not ok test after end() was called" - messages.unshift(`fail Threads still running after ${TIMEOUT}ms`); - break; - } - - await new Promise(resolve => setTimeout(resolve, 50)); - } - } - - return allMessages; - }, allGpuModes); - - for (const gpuMode of allGpuModes) { - test(`File: ${file}, GPU Mode: ${gpuMode}`, t => checkOneGpuMode(t, says[gpuMode])); - } -}; +}); const testBubbles = () => test('bubble snapshot', async t => { const bubbleSvg = await chromeless.goto(`file://${indexHTML}`) diff --git a/test/integration/scratch-tests/color-touching-tests.sb2 b/test/integration/scratch-tests/color-touching-tests.sb2 index 005799362093339d0510d65af407e3bf431df284..4753e24042607692dce3ebd4d293b34919fb3d40 100644 GIT binary patch literal 82511 zcmeEv2UrwYmv$3GGAJUbWCc;7=^PLfU{08`h=8ads33?rAm;4oj5&=7bIziI2^9>e zs0f%*1Q9_Lh5tRb8bqg=nce-qeg55@87Zo(t8O^)J?EZV_;l3L*5~nfx;(vMFFHM` z+j~TBT^{cypT{%A)zM?aMh5yv@JEJ+g}&?GFYHmfno}aDR6D;at(w&)lcK;OHZ>cH z1xs?Ym#60#8@A|qXid$iM&0ci*;+n77gn&W(fqCESB1lzrfbaH)x2-7LA`u?NvBR7 z^EBwoxw2`$7bbg@`Rj$h-QfOI`ds)rq4uIlpG)R1UvAc7RKs76Ivcq8Zcj~EK62#2 zy*fP$#Qf$DPS2Ttd)x0@+AOJc&uG%wT}L}xojDd*cxYmj_L%O62gLU4@47E&@WQZ1 z3m%``usiy6_~I3kWch(c7P;~^r|n%rJbZfww{Lr5(fkKjU$+Z9dp79cm3uq0$Mh@9 zeK0UEZspb0lkzXs=;qb8ZtojQYOPpuL3`878mTjSY}WF3h^t@2hd)d{I(?KzQm>)O z>20LGon+6guDuy#S^u_v?ZD49cPY=F^Alg6H}*`<2A_`EeN#l!jwDSnvUC+V~g@*UMIb&5^PT}lNx$=E__YWLMiwih1ZRE8DscT)H zCMX8yrap>V(aUDl%81LBFY|XDxYzOCgL_x?et&oI#qU!O?axl!Cp(;fBz)hcSzqHK zzdpZh{rGmNxTI0ku#ARlavUbS&3T;HuJCSyq-6cz`Ql@DI$p1)S4;14eG5Z-^MUDI z&qnA(_URnAE@{oHd)wAu4Ov?1Ga>M(vBi^->zW!wxE1mz_f_`#?T~2VtH-+s-`m}{ z)srsAwhb8lP??jOS<>65*7CelZ#tfv77^N_)s$^(QqSl<%bHo(%5v(0V{LX^ICZG~ zvh)R4Zr@42__;^_dMi$CKk8LWkUY5QhAET#JPLQ+-+gL>i3je7PCq(dAsu{T|DN@a z{ny^?T2itw?nS+0+Z3)LgV(o;UfH_dkx zqTPw5bJqCO=n&Jp_r{hQ&s?5A3~co*a-QQV6W3o%6H@LU>nR$x({ezFcF@WpBfYh~ zhq%^o+%$IQ^5q|OJN~}LJ1C|5i&iV=MH-qnJN4Vseg50L+Sktw@h{ll_O>F%SL&iz zq1ZQOcdTGRwO_g~oY|+kqxq2g#TI*(KfihYxL5WC{x`NMnuB z_L?K^&6qSRx+E{sR6o~XOospE4fc_`C+3e`)_h{IU01W_t2>yPXdB(i?$RteW&B}@ z?lX^0IToop@0PuDzg;pQ$0K^_9<${ur)I<%|2nB~xw+;k_upK2M`Ips*R<>>*y(Pz zX5w7=+_F9kqNb*=Sih)R(>RAME9Q^(v$N!FdFVOBRc}YDX^N%}5B&I-XQod-us8VW zsKAfOwr^k8IIuTnQfShi-0k_o$7Y%VbD zr2Fp6pkF`B6JDIVE!taj=Ht}eWv^;q-(ED-Z%tc^;z=)jjZUY{@+@mU^&?H0?=Y|L&F{X+9v=gxY5Ct`Qq3J6qw)T@5>7~l7WShr#dkl56*0=k5 z_u1G>^@6ALwTw177x(^6-RxIZz2_??)ob15{oeko-PU$V*Ye8v7Qfto3UBq;c&lG8 zY`WJ#bL4Kr`g0{wn>Cbg&W3BgIN-k9yKc+qqOYIY<&1codHU>=2Zhu5Q5Iv{6pb)* z8CWBC|3T5jP7fl>hTN7rr~8k+GdC?Ncy@Sns$INpv!Y*;bk5I75a)QT-`GF%TEXl! zM?N)KJM!eiwStqsZ@aAUTJE=HdF^-R1AROwJ2j922~K*D68H-KoV#2DNRlzadO_k=evm3r+|g)~Ws0%gv9q+LH0;wXQHBddLYwp(w^b)N%ftT0IAB zJ$ta7@0TMtT87!&x!mH|`SiBux>jrXbiT%p(pvJf+m9B=j@>=7f69uM2a0>9{vypN zE$Q=WeaE1sB^S45|5BXT`R} zJg#c+!k6NjCH)f&p?~qyH1Ln7r9=O?Fa9ro#}P$6UH)%;#|gyGGQrLL|H^lcydM;z z^5j)tR4B{;!SDXeO1#mimsV|4ov^DbVUJuRTKA3U5jHF$%5Q8SZ)h}sXh>LCKtMF# ze{A&Vh%o+$QGP*zd{{J*q;;r&SU}*|9XeBU@gT2#>n`4VJ%`Nr(IR@S3y+s*@Obn? z7E!3)BJw)my9j0x9X4*=jSm-87V*(}qiJ@AExWB2tPV91r&^wm$vm&|9G=?zl5no&bj@n|wVZvp?_r6{Wm?#pXBm!`K3M= zFSk)Pqgyo{*|D1biXU&?s7>vDZ|iT~_WLn|P6zZgCcoGJfZ6=3$y)u>$qS1S;nEM0 zRivJ*8eVWT?HF0FeO#LWH)5?KYx;rUtsgm!rb=m}CeG=aEDd`@c^V=NCFWz-x!pB+LqQA_muW|e9w&)Ls zwxua{?XzeVQkpu@de4HaREOUd8Cfp-G__>iwuz_nf4hHH^yTuEre1a~F)hZwEDUQ= z+Od9Y%NUabn4~nTW-w@PFiZ_+t>0MGMb-!bbZs9p}L0G+FJOI zd@|)(+hl7`p|+0sg$Zqo&!5T|pKChLUhvv9bP+$a7JX6gf?M-1K?Pq1Og-IAH__BG zME9+AR-W&-?1kr6sTv)Xx+j0WK6(${IkBMd<>^OL{HQNiui|sbwa(2!gZqo@UB(4Z zTEm@M*?!yk+d`ADZ{HG4`@S_T`X({SdDQ z7N<|K_RTJ=EBbiT(>XT2f6V@sIWL!=Y5MI5Zhvo|bIQAhS4$e;>i!3thF*4)Vv?sn znijdHrAOhiDdu9+UpM$_=+xVD?Uz_zSi?`7Yj1~}b{|SQw5NJKe4pFeH7#}89WNsc z5e9ke=>a%dAo<922FO*-97myXZaXT zx7f8Z=jN$*M-0%2n+%Ip_gmWs7C0Ptjvk6i~D0Rv^BAynMyP!4euDq5j`sFLr9b6=re01P3^Xq zbF8TiO+EoV>ShHE&afKf9qVJ*O1DL?j*-&L6_#ku{;MSBtth)u>@*tIfN{YtXy6u@ zcKT6mPhm`s>ENl``hrGJz52enM<<)T*qk?M)%3bzoMpN)CxNk~bi?O}KKS}z>az6q z6Nw#Z_BjUY(P+Z#(c7D0`e^Ikvh+y@UrkFeJ?N!)Zr+reOxL^1(#JIAIs=pSHd)Rv zg^YMkQ1KY2k-9xrp`REZ>R{mdQMkwRX#az88Vy04ImUh&Teou^g-6)4o_9N*syn(S z`h0D=`eQ9GQ%~I2uG_IoV2$Y>V(Tbe!0-!$=7H7r&0~HKT}UVHF-HRA^=#ekXtezg znyH=?Y{;b%p-Zq546r9gnxXk(Vj~)b7&0bWEuq2g0Rwe6VMGmfIG%bINfZS!1{}l_ z+V&8{n2$t>(yeA*KXx-Z`lut_%h*TVxW`OhzMjTxd*Q~dS!gg|HW)uLzCGi^aENRx zT^e@l^tzBz&%+pB-ch>Hl*E-tT5P)Vq?ArxQoN9y;67A;xo#<+6<{a~3^1VCoQyA%$J- zqFciY+^OMpo1~*;c^AVPUI)E~Uo{qb>&`M2HaPzxZ6)0s$MGd$$!pW1&J*3Q8p`sYL=g$G%)3X?#o|Yj~*yvW8cMKzbTpHQwadRQ05G zLH1r%m&=POY z;fX_g6F=9qcU|3u-amG;Drf-R3#lT$&~P5evm2rLeEY{%gLKg#Q4snV13I|JI5ksI zs{7qNL_Tkjq#$$v8{hbEzYS#r^xHYWpH7U?<&8_Tjdg_$n#QcmG397n^ZNEvsxG@c z)WUsNjs1MzQ}fMZn!ek~@q}z@v+6ORt7ntQIrg5;7?B>heB9cA4GHE1PjK962B|;R zB0B*sRPKfp&3=xbO3}213phn{h=oRzqNylIibf1w{ZU(3%hO(4*ohQPcc`UG(X@rv zIYl!~5O9iylL|#My-13trFxPSjq8#W4fk=1W_poRG~J=UmMfa+96wUD>6ZGNOlMd+ zsT9pFR;6gBUJxJCixrCYV>e9Ea4)B5Y&fK77&E76Gc1RdD_SeVEndTKnC|jGJ!uzfKqjPRgkdn})9mE2 zjMv_YqtlL#A%2>&ClBRsYSC;+v2dWdXUE8v-rQKoI<}0YN69+k(Ils4806fngUs;j z1|*D5y;1_7)>YSXieaBwup*{4yzI4~(l{@_>svt$J0~_}x|{6&&;1bBI1-XJ*~u#P z1N;_adSwogg}xi|o<_KQJsY8Ah~d7ytM@(mxQ2|0=FIt74lxWSiyAGg_`F71T7f~_wuF6%exaPjzO1+n|tgTZxh)45~C`c!JEz~#SA5S0gQb0z zmrXe{=3~LjK3%Qq2)xU5nho2M{`kuRiYWfo5le^Yy7f*W<3&HzzF2+4!t=m)9xP&U z|C%RNlr!WsD=BX&J}us++S-Xp`zF&&<^)mi*@&91#0 za_efCI2s&rnbh>1r~W*xGy60KyuaV8+O9*ZOg62YQ#jJCY_hS(AYR)OyhTm#O1o!X zcr53I53bfAZrapCTIZ$~ULLNoT)H8!V|-tYbHko?GYb24=KD#Tbvur&{`^L7tIVfQ zHf99QkMAdJ?&J0Pq~X3~ap%$78oyujVDiAs=`DNxCLY)3+~*GK^fvKlOfB?~U92=w9-AK+rBIE@!!n9dKv#Jw)HFWn4@Pgu95M`QNm*P7q_~t`h3dndE4PzyR_73bYjBd z!c)~F%q$x_pSC@tQ&y)%)UC1OMn|UHu*gbI>VB@p4vPJ#xEgai#NuRvI#j{4)0qR(B}9`|+7%Cq%~`$Z-l-Mu?Nv@q&^VJCB&9x3yOp9vD( zH@IJTH}ZjQantPnvyNTV2u`}0^PpRg-mjnDANOjEpVsXYw>l5#aw))i<5-)m8=EUBLL+BWSQyh+$@?AdLt%bA?kwVfRf z+6=SI?VKcPT-e62C~{ES3ARF)yVte_KZ@UZcTt^%Yc$?u-wSE6?6;QI`#!gKp3o!R zXI5cuyxSS`@P*yqM1LIa5n|`xcT@Ho{*o;gBR6esVCd5Ks*9Q9kkXC|Om}BJjQyo) z{JuACIUkIkJp0tF-LltqvO%Lx9rb%*EHF!)Q)`9GgWjfFP7Xeh>ND?5=N_8}1-u_! z_kt|9VNS@vb{hk3%hw#=*2ina$W6T)G?7o=c}zNXFaM!gWA|y@(oF|$PUt)9hLfPr ztkGJUC4CR^J!d2i9WHVheJDlu$iTBpN*=r!)u7IUp>}No%;WDwA4*B-Jn44pFmJn# z`%PQ*p1$+)@ExgBoG&;&+-FofptV6nu!h$TOJ*6r#*jK*>Ae1mTt2?e=Bcl$)j5P`{hVo z62Cs!ouymb&php!%awT}t}1RUzp?yu{{H>vXYAIT6luK4eddkDi`!Gbt77lGpFh&E zZ?t3oPPGFPH@@h_yKNe><&u5(w&L;T8kfz2_UEjtKJn?>HFrDQUKlJ)Y1QoDyhoc) zF4&eAQsBJ4;}mb1<(vcSW{>cUjcwyTWnJ}XWz%JCn_N6879O2GLJ{K>pxJcQm&|^S zsq5}!y=#;amONoxW7ij1*6l3Z%P!t~ozQGd?=I3Q``74bAMMalf3Wi0yL@_i{;();ug;?`F~R;z z3hzE|e|-3|dz+4@o2==*?Q2e_u*IjNk1QJ2XlIA0Fy4}1eA~yo{M~2u?dm-zNsfhW ziC8{GZ&B0WW1kjXK5%I6-ZPeUM{Y7$3A9IK9cUJ-zPqk&(ddhswh%H$VgoyRk_)kt^z+{$F$gLe<=z8`VsthJAM_T)6%x;FOK!V?bD zPfTc;s3_ByR2wk5!M*DJYiczKf4=)-_brBN+pIMV?(uEUgI!y*MmLPhJ9}}+DrJYL z#)H3Y=<(LcZtbtd6Aq+pIrOS~_NRLRaj}aZhkC|!?=~jjRa)_M>EY6i_xo-P`8Xx_ z{FrWIEc*MGeR2A=Y}uaH&1$D4e)O98#6;0|BQIogVtD+zp~=-HxyL4V)A0>WuP(94 z+@EMtczVuq{-qCJYc6c!Z2qXAL%!y*tver_EOm%$lKW=+-PfBIU)kPcL1&rHt1lxY zFZ(>*KWxR<>U*UnR!!muE&n%ox3|TMCXdnL@#u%Vn}i=88RXGo{HPGS$iT7TBf>(P zISBaz2fIK@nvMt!YUVI5VwkJKp+$2eeGhwASG%@>p@C!lBErVH+qDV^8yaZWJ|tvZ zcm%s-CsgtUe1VHykKS$VT8|$cHa5b}CuCfZYx__;KD*eP>%`qo#uo_eJjaa)39u71 zva@q_W$k-+_3GKrr?njhW#`k&vr~I7I|o-cw?1MoH#hH|-mD2BU+Cu6x{HII!|;fR z(e7?;QBhI+C^0{5Y>->qv3{e6kMIw7!vNgqMm*$(#)LwCKtzB8^+8QnnyS#jZbU#c zhfaRcfn$B~0h9<0Z>FYckw74zrc}4Mj}I9U8m#U{p;D=IW8dP|W)6bU;~ngxx!*?m zdUjDG0wRVtbC9y@!vjYI4UZ`Q6geU=$}?+@aF}sJ4_VW*H<}i9}V0hrz$UrvLAU3tWojbMn_La(f>6)I$XupWzm9NWv z9qfjU2nlKCP+uxhwi2RCbkSKU;)`5_0=_I#B;||z1ug=<)Kx&&aFn?Sam`hXk0QRp zRgT{hzQ`3+7SoBptAsCf5x6S&LRTRkqwBaNLic+9t|Gn+KO$Eto)qI-CC>4inxltg zI12Ho%tah2l=0>0nz~e=O9fhEzx`e5PP%|E*l(QorqTKf*u6AZ8VvO>W8Gq`)U%7+ zRpKHPx=Q@n5M2~BBfb=u_!2gBx`(EY(Yc6m4Wpyq;WCUGlcvuYsKiStz_SV$rGPKT ziQGj=-6?x8vMKpWmkRn#aBw5Ba|>ce2oQe%xb)EZ$(EPHuM}FJB1{IbGwHLn5nARmT|G4XgjG&%fVKY|988oder9^S3CSstE}eH?f(ww9~HP` z;A+s7eyDv}6^yXNcb1G1nNiJ(@xhs6guh?0?UxPHW2eoUerd?v8Ql!pxLO{mIGN_o z!7Nvf;)S~W`%xaE3 z9=c|r|9>?h=G2MLoD26xKST&c6@)0om^vw+POxL>!s8?F5g(w{?xAY_-(`73j{un zmJ2=~$Y^(^-H<2S^S_$t8{6HrJvZZACa=4-Ziwc=`;$#HW^YWnyk`D}lJz_FFGl8N zh=$LfGu=!l(QzGbSjMkQn!a5WJI7Qbi`R5jMiHy`g64WH(} zvnkB=Z<%z_#O<7IwY3w@t=HUgW6D z-;njbU#Lw%w@1>+Wxu&K=UuoJxcApN$sZ3)jvk;paE(qUuPJZivlD~H7j0U-CeS@C zQ!@9#-2Oi6_g~ni)q6;=_34L0Yyv&^S*^Yy=Zc2gB{})dbNA(34FO?y1}E9 z1`{Uqys_1PT-{@Ddo=IA{`#&aJ44=Hzp=Ylz%cvzgLmB1?efvu<4IqSMh64<&1~~~ zJ9&&P4xV(apY^?go7)eZknh;dyI+^wgON6YZHzM%&aU42lKVdW;u5bLeRqA@Nr z>(w=mesJ?x-u3j8zh}Mfu&>{o(^`+tE*^i=-YsL%A)n-(7XznSd5WIZ9o$uS^{jW6 z4?ZXF-gqVSoX?@PHe3DU2A^vny5u$6_LxVtiR+ZVpBc5gNw;dZ&QA3%uD)%_S@JC3c`dERf1a<;DT%(^V zLDdiUs6$o%T6ox8-_Fh>h>rA|fwJztodSbI4%{_dtw3vC$3*~e2KtHt*BCxi@Wm3L zi(Jl^DFBD~a)}H`N~n+%+LDR@d_;V?l3}m!pTYrM1VXV3eI*7QQYwW2Jwln>ss4EH zrZ}{sgOWS=6DAT$T!8LmVqhSJ2*?Q^1PT{`Atf*%aE?^!rIhfcQo=h5`laMc#9|i( zAQDEWtTf08c7!QqQhX`r3&dizU1A~<0iimfP!7bY5Q+dUl?oZI$P_?&_*wyYiC+8{nqVP}PmuM|jJWHL-Z7{cZROv{%^l>Q>V6yMM^ zB!HL#krITJgC=a`AT>s=ZnXY{Q9)BBQ9>?4Yk-?FDM$peFz~7ndHpzrpXT?&m?~yO zu=Ee&C;Suf6RE^cD3I_43aN_>SXls$u&EOL1%S!;K-`ham6gxKY3NEN1Wq6pVdOM< zDPJg3%N~Cro)?Jmhyvn-4GL~#|asv3rYoJyHHrA5K?a#tyqMxMIa`@QsM~NfN%o#DklsA0emkZ69Dz* z%b=!=DijPUB$&`oGx%YCipnFZn9t8L*y*oKpim`)GEfcu%aC(`W|2T41m%n6QfApG z;)G?Zd>#(w$mIwunX!O0LH(JTtWpjHN>Wof3HyH3K1MH**(k&3P#xuFbT#(sGvlL z6gD4jQXl~*#hgKtOJ!iwtfTs-OTYz?`M9 zj2M)XGj~$X#HgE^7lchAV`COTf23qJF?10m9G@zUvw}%K%ba?F0|_ANWamUmW^z?y zAc0fBE;BoaxryLAz%O{EzcO@xgC<@QG!CyrrW)BVIh+p!kL)<8U3o+mllh~>wT?!f z?hnWUSABbg`3DC^_*PgtXbWkM0zOrN%#{cvhb5<3L+8mQ5uPArXTl=%hs?>rBs``N zyF&700Uy+u#m5o6Z`@ygTgDkU<8#iB-QW>MoI>xMt%riN#La`Pi%rZp@9U$$dT=(G06z~ zNo7h%rwlWOA_5iSh=u_?A;ALb1inB>wofFWlqEq)5DVnMC;`5ZW)wg}=>rL~P)=S$ zCL_nDz)j#COgtVCszqW1=g7j7!}Nm8iOErOco+i(X`vVb5aWkYSI9tRf$lSWL_{EC zafKCaga1^92E-JhWw1j;zU{B)BZ3u`k;PF6K^+C=gE=UbppG1Dr}?P0u3k_>7!V8^ zh7(3x4h1F5L%!?#2r5s&f5ce-kU$o#_>3DpB7{xBA6aXNyv>3h%T$jte6jE{+m=Y``(7OaQhku0OQec))Mi@#3Cj{U; z_yoa)2>?U{8R;OFvI{cx3P1utaxIn1NPn>XjtLpeEgU+8P$83qz#s$X67!iLNu)3s z5(45-5^~BS$fJZWK?}@(3z01b6(GYft#AuU*iPI*5{i~q*2OFi58zm#3 z09c+{Wn=|EaSndrSe2CED@Yu*OXC$mVQ{2Vv5+Vu5mjy+?vxs54YHdAY%~H1#{(GI z^6?{>qK4RL0Pt`w7OAyEY<^-!V6H_*RTV+l$YA=}O^`Hn4nKfC090{gfRbbsJ&8F= zG3^il#Nbv~FC3-BDV){~0Fj8{PC)Hox8gpG!K zl#LSBiFL}_0mz`Pi6de-2^w)#{UbP|=Y))7jQ1>PgsS4I1YsH;rjZ~*z$qm%aIU10 zP^d#+G8%Dw=R_6OkXmFcgD1ebNUh~0S455n%*J#8)u8&gS*8H^Q_6vffXtMvbs_al z(Fu+W+X*C`-Vmh(i~)%Ca4r0b{oehB#IVqzGi%-RDutEt@hTz;!JoVI6p!U5=3nX zh6S+pI1&~Ch0v-9*Z>_OMF9lH%mrtXj&B~p0wiMcuv6!8bwQyB(S zWF{Gosf5hGgBW_2yfc0Q#DLHO0>@Fvn88_a=A$r6P7+C!M2zVKW-twoSIlUD zTxv-H-a&0B>|*H{GI_b}_nISM9|oM{BlaUV=I?vT-_ zfR$NWtVcF{5+)dms`_T_GO=Saj+;3kK<033EpYgU>778z45Z4baZVYv4VW-9 z7;M@cM1bI-cT5?AQibuQfig4B0SL~v(fFC;BIiS=><;AiFkNP0Ifn_iMh!FTz`Ew3 z5;M3=Y>?YQ`!e-b7f*7oil{AOw*uwSco_y#v67j#a&clUb8@WmY%Ho^o<_igmRWH| zZ6E`5UKRMGX|usGFAaP|1Le5HIUc|c8X&2dP(W0K@Kbv%rAkRF5__aiz;hx3JT2~_ zEDAf)Ia73iqbkIWLwZ7_QK)Ttj>}*IdEuOp7qwc6tegZe`2(t>eq@aDFclahQ#c{= zP-utQXchXZ!sXE@E6thV3Sbo)HxmKm9I1cRb-K)vlOc29T668a4O9h}5btBqoW)@No{%?M=A=%}TIQsVb0*B^66B-a89qRY9OrCQu()(i zy(2iNg7zv4j@X;JVf14rgF`nIc;Gs>g2PmqiGd1svCCp5ED^d8D42R9dx_a_x}$>gPxmp((;tWNHD}xG)tFyZC#UDz7?B^$PKe zQj@D`L#sei^@&gjC`-UgkTe0lLE4VuL1t4ZcSjflP5^l+1v1uzZz#=1cotTSVIUbu zB%vh}Jf(zzkfXUOfw&YLMlwT5Svn~c8Wf@&5mG)lRf>Uxk)i|X&?)m&V&DOUq0F<2 zkvKq_K!$Z3csL+>%H~l>3zvt%piK+|mKNb~6+VE*&)g|2EF?pOqzJ-jCY~}Newr5p z+U$yi=_%#uF<=RaFc$T2E|)T}s(?x(xx^k5vvUX?nn0G2OZ!wMnz$FaWlF@NDO$Oa zvzSzd=dgamp%5k-iDfhaLN8(QOXrAh@EJ~7rCab)gT%AzeL3!P;21ezybErh)Qn1q;+JEJuR zSQO;eBminydl9N%p<%QnwMSYEFo)7+;46`Z7JbPfg0g^Qmaoif`6VZg#0XV=AQDc}X*02>NtjFLeh5il2k3j#>K7>>HKLR8k% z3Mg5=$SqN=@F1a!sWKBKXA%tWNmGO+!KkD(J90pv2g~b83FBcJ5OA=9a*>!kRy=T| zl0&le5Oalk+eRD%7{zT0s!5bEjHrNkB7KSvAOl%;Xa(6@92sL2ly@Wu3Gu|daVvO> z#afbBWOo4S>3&vC2zn#6&$tJbu1bbgHkja%%0jBbREF*-SjYU}GDsw;S1EGZAU5m; z$tsW{txySv<1R6h;cU{Bs>MQi2vnOndby0U6}@9 z_%FJHi<(*drvi?QJ%qtpgV2LREOF)Jp8 z93ok)gh3)oLm6RD;oQ-jTp{#A48@Y$&~ISB+^y6NFD-4fgF@hmiWWZ zQ1%c^!*euZ${3PqA&o{1Od73TCK#PrB+ck7B0~h;kjH?zAU;$52RIDV3f)HJj>Sb) z6$oN-W_f63iYyP*5O)zV(J@7#WKb1|2RPG)C#y1TpemPfgKwPWq>2DC z9YjGH2!Ww6lm-(FEmWCc2q`5?q!=#BRd9}`Nq=w;%j&C@2T-1ME#nX_b9Pk!!h8qm zIeZ5U9`i3^hDZp-!Sk_51I`3JkPjl@K(;^$FNZWYY&;YmQ(z8`^1W3!ILwEwD=Pq1 zKvT3wD=!Rlqdm@fQvYOjX?=rwCLTeCaXYQMFei-e5o(Yn#s&0?9z}?b@FhlDwSNaq znTM3Y77}(K46B40V%ULbAcrFSWNUx4#FZt#!u0-}jql|9XE2A1a>Yu;_hJ_;y-H{~ z2-F0$11ZEXzl20EX9~(>BPM86#SK=86DiIHq5)lL7QJ^(4Tt+P)Nd(Cmr~-cj z!6rb2rF3#S3NADNt4VcW8c{%ic$0%c)T(+#rdEI>L3}3jQXH{fjc}NxM+)JSDG@Lc z8(2b>92@5&XsnO`ti1vG2xKTXB439|2$4!c0SO@n0s@qQCGZQYS5@j3Xb)Bk;zHph zdU8SC46&8L3y1{43o&gHp~NVtMR1vuF%lERI%H9i(!g*OvJi}w#n1|Arym#!&>@D} zk;?-I1?q!(QiXD~jj2+ohp`|s`wq9oUX_LY2PJ^%0xAM8#8lT+5o0nxAtV~3@P~8? ze3Yn9qmkL*qE5nXGWc)|83ZM51yxB~L1$HbNeWG%6B-WbXG%{uBEWo1VA;;SYhNG)@SKEm<`-dPL^3cJVjOy=PZ(B*>5ph ze&O=#RBS}}psM6$MYsu>st7mf9BRez2!py@Y)R-1;>Dmp!^g1u#3k5$kRB;4`W843 z1BO{4vq~To0!tvhDyIS&MTiKa0%b=lCbMj$OWa_o4%25V8LG8J zct2t>6C^Gt$a2W2(8XoARpOgkQ-H695IHiYgf0*(f$0Dj7=;pfJrZzH2$@C_ORRf` z!1%(tQg|cxl0x!fZX}RyfI^^eKucT`fIB}3euXXk8FP4s1w^Y!tk7j&%C4xz98^Gu zphS$0L<)Z@$72~uNHKI2MgoIVVpOyn5m`#o5W*ZlhY%Jy%M8ky!v-RRh9I0E{4Q57 zpb!NXR>Ane9s(>kQ1keWs(LDx4 z$pysQRI`m!c8hxEfXs*@paYgkq;Ta|TFlNY>Kxm1N=0;s$ zZeFNOf^HxLXH2CqA7LzrLONcVoE4m^?6nv>RIaOnBQOA{5K$Fqz#Ac}f#xBO3vni_uN6j0jv2tV1m*Mq}}!7&^*^K=EP~ zL-0Z&J<25r3P>Tg_#{JABZe|Ux=}y!o!D?ONPx;6(;)p!3lgc$TBFiDJsl_fhw)&3%~vXrr5I3BA0w+w>1L3n|(*e&5A0p9>0l+Yy@ zP9QxI`1b>qE3`yq&)6>yH`?C$_X;H=pRmgH>i_cazXtR-;ke@d2fDBY2D3Mj( z-$Dpf-ToFr5rl}UuJHyq0r~%Oe@n%jew^(O1FD$L&rpNyt@@J^Z{NzBTL|5vpb;6z zsy4Sk3gLdajV_9CSpV|PEet0Cp1^bc_2w2hC1gpc5*6l*;unIG3<9#vEif09w#GIu z+RH)PD-dNv!1Ps`%fu#z-R$5v`dWfYTm25po2(SUsEIu zuSQhCqd!Po)q7fKBMI3%F*CZrf`~V<3PSddf?-PH19EX&S}2L~uh`O}K#)Qv99{-n zTEGr6?tp>V%~3I&in*wjw?DCVsycJDh+qyBLsj(8TUt~W4u<*PvZVz?WU(_jZZdY5 z7QrprP=%xpetjR=kDo~BFeVTLk0@nTWL02RDO~?=*w+H-6Cj66_3wy3P*6{c*BC!7 zg#9qk3TFK*cxv4&wTBD}vvX2J;8bOZ%mDEM9-S52V5bFSO|`LwvV>ICiaA%Yfe(iL zuV~_h1vRQkAwvgOf{iU00yE;wAATQD#a#XrBT68tRhg&A`7cn^$LO* z5SLqH;?B9kZvo;zWNlemgBeIT1IjN0ijg?Ukc)x*R1w~>=2^x7u{Vq0*pXHBu)2Pv zfoTlL>(G&_-(fW>Vy?;ti!r2+tX@J@G|d&@atjeK%xIORWl`Fv-X`J(=9Q6wC16#B{;Ur&{`4^QflZ_ACa!pjNd%>dY0Rw5i7i2iswiZlR#@vo zRXFToRS)fcUH@R;EPEkaC5H$kUSlWp!Mvnwcw@qz&k}2XQkc?Wh&? zAQ&MP>KTv+CaVUdjo2QYvxRb6h#_Z!1%Fydr?o*^{eqK4#v02tw6KI28w>C(&ZE27 zngC`)W*OBRgd`~@M1q`Bh{%~&#RIrA$T_m!lzyiSIQ2n^8Dy~#Q)BuH+TR1ABv6O7 zJ6y*47H)xW22?~&t8tD>5jZ`dP#OU(K*21boCQ9SEosvV1EqgyhnBpG!dct^k4BFZ z+hOtP9P)@ZFn(O%N*<8n#w9QZyr90p1(rcWWeTJK*SBTrVC4Y!6(qbs#VQE}sW|7B4#WErrA=}&{MK%b=3hc++AiGS|xg{kI zw^Mlr92+eM(c&U9r8FqIRVGoNVg&n`T~XBsb0yKpHIrbm`cVZEt-z(Q{}LbzpaK9g zDvUs8g2eU*<5^*sEBlzrt4^wbu5$K{nnRug442C(o#aI zsOX1=CWizeory&m+QR_tr;U0P?vuP?(Mqj)BcToLA{0SmrgSHyhR8{ligpWU+GUE)3dCuNgjUPg8WUSABa;hFR3{B={S2N9tHrcV49Y=^AVH`>CS|3~ zP^?D?B_Rk^!j_h$aS!D>$cmtOh%LBJ)B&l;tZ>U^3Kj%VogA}9>P7%zD_=t+r$cpr z&N6?Z*Ql=pL1yV&5VgjVsIss*3lk z*sDd)G2nu9Ico!hP_?8g17~I9oUMViBpGD3kL;|JZC8RH1%XKQ$gGe~K>}!n5S%1` z41It;^(ofkMV z=@zoB8&uYX?zkNythj*Njlx)o-Gp>IE!L2GP}@H>M@?`WU6{;pRC&jKl73>C97FCg-&y63hjA|69~sw0ze75-Af49Zz) z553C+HXVgYuq^}vh*N|N5lk@QC(5hVLb;-0Ze5fs<`<|nK6p;X;Zcwrwgr=h41s!N zdr6KZN=XP_CqYhL23>-ar{!>bl48M;%p>mo!B|!}`JaQY?*Ew*F4#=Ayu?{R$alF3 zB$Le6ugLq82_$F;{6QH)42f(Y=_psI4jTw%QQ5#M5jREc@N?wfVFT$LHV|D(IVetW z55@?72NdE8A%Lx!6+}nmtvM@*4;5yRJTdr15Q6H02_98x1!?>$Ge}Y{1QY=I8OlOA zB+fB@hNn3JWC)h*KX}e24|b6hvbFXKLx@JXz1A>Edeel$zh2ZQWe1q5@U&_5@xbc{fu*nh*}KDX#Z-mfcnB^Rl;kR~M5+*s4Y3MnOgD4Jmy5hP zIK%Ba2Vt0HXF|x;bTJ*{cJ@($3cg05i;1fCce7O_D!Zaq8NpbIAofque5wlm!EFX{ zu_2OhB;yBF4^x>YXv(diqe&Pb&=I&9N=r))peb$wZ%IQTFhGVJ#uR}oKy8#Bpzw&T zuPY&}07P>2nm|a8408D<1L_G07KT*OGfJ)5h5{;^V6Y9w0{I~<@l^n~%66;5B&v&h zD%Gx5j(ey;oNbzA+mvBI7$a5N3s46`g)FoJLW}N%mZA2b8zhk`8<>d#d0?I?@|D3L zGPtf*;-Ee>O^}ajQW=S9TLO`i-YA9ShH9fUVo2mW5Y1E8gK7|Hw;P2Tv@!vFKyo2r z^~3^}|EH#>Nyx2XzvtU57dne9=Q|b2fv@v-Uo_O;K9@lB?ON$ ztg8U3!9CysjqQp)>MHAyN|e&^oneuYC{5DhLWh8 z9!rj5_TZbC0%xr5!I@%32{b}91-*pWLXZiWu(~;BgfS?>)>vU+3Ql|$$qAUCTox~3 z#8td3hb>e>+$dndjF`E=$WU;jb|5f8%x2*|1sE>MvA{HLLp%%=opY#?F_YUFO)umD zeV8fZ_RNx{!<{Uv%EA$w`24x0Q zl?G)lUzG;sEImuh0>RRt*;^dAeX^=_L6zOJemI=VZIVRD%jQSo3kSteJ)(QCm4N_w zF8Z3;aCka8ho>XnL*L=40ZG73s)2w|VBpMWvW#gJNj^%Vk|vQksgy+J!WL=_ewqqv zppCc{Es_$E6+#Xb=jAz6+FwDbC-5Cd*gIwdxRe~kgtWKn*R@n+QE8ei&CBf)_?|_@ z_3|Vt7$t!*C4w-?XVDKK9uU4fUrNj@&zI6U!(~8DRSAJAh01Pa&RP|+GOx+)NMJE0 zx75Jxa^rTOGk;Eqk5q-EmlpicBdYE}3g#YZBMn22YI`TV#cequ8$+98q0=yfgjB&j zN}rNP6m+h&hlCko*zamjeJWwS{i4%a%OdHiFIMF@wDc~1OJ-E!?M@L%^ z(FT`1WnnGt7y|ervkXUuSt`L&hWIg8u$}EM`N8$lJI5d;luv=+{9v^zT=CD*NvFSj z-BaaPo>2mba!o>3Y{xRdw0j<;fwler`;})%RDyjXa1O$bmz+^aI*|w}h)>@qR`n~- z@EQWPIgHAB;c@`Rk^VwP1{w_A#}U|=d^SsSqXZS^kXAqbJ6?GvB_{y)L3)fCQs9Oe z0wUql_hDBEL1jGlSMNMyW%h78csbSInGoH{l_e>WH?m#{Yc` zm8bCYUh>LsJyXi$i3?JAwfo2g6JAWX_Qn1X26DTDod-F zow^YL458$bxg1PW$rhQoIP9PIo^eY=4F7O%!{B0Agcw}hNSx<(q;Q)c{(0{i5d`5D z6oMrc=p`8Vz-2#GOZXhLWGnIiy!Q3h%c_X#LaR;u2z$)$JydG8s;O>DiErEvdw z?-^zAnWbe5Q!Ees&wI~cTC0lV|9S5jJPygqKkq$5CY3FA{O^D787nBGMOn^Av79lY zea=T!_?gN+>gQm!;>Bm!r%)cLqG-4xQmyjEXaCvVx!4*^yK@l@d*M$3srKs1kzvFR zD%1<0q>k#=Xjc_hso2}_{%Uis`UM4AAfPxNX>FvSk%vO!8cWq!x}Z1{`Ku~7=OW`u zt2M}X{j@umHgx}2x975C4bp9@0bq%g+n!6sTB_Z-+{y{JIaflPbMcC%a=IW1L4QAp z2uM52kfx|0XJsx|Ad$bbJC_zmv0R21w6j7hV;aUT)zB1;9($+}7u0A&F8ntid-5q}!GM>lNOksa2(l@Hk zVII$Toa%38-e-R^GeHphDXh-^_-l?ePfE|wgX`yO<7hbq2SGdzL#E+xyTANhxN{~JX0f1ccNmf?T9nj7x_$436_BL3&e>OVH}9~)UEu3_%=-{YJAv627a z$iIVD{~X~}!r=c#S^dXG{$nHm>o!uZwK2w|Srh*PcTm$cqIKVh9$~{GqWs1N@`gt9 zhlYfO1q4L%{l`X+jtJwA808lf$VVhAlC%!>4+{t!yF+JcE*|8yZ{5Xvujh~%Kfb1F zL;kG20!>7#_@O_ak;Hh0)?Qor5`MwW_BrH5MV&}3QFAlU#Y?W1@`OfK9 z+YWw{!|IRL_q*x+#=3EV$<>kDzb$oKnER{p$m{f{hU?tDhm4Lq61{o&gVsS79iE3A znXv51^x)Vr8x~!$|N2xgc~D05^QrPNJ3Ak>+WD&M@dYcj=8jm}b#GzXKtrB~k8fU> z#faWr^c#%%&@VA)%hBcIe=9yX{NWb8MY7;NjfQRZJ>90z_R0sXYlVAmZnljRCFH+} zuN9|s?v~$M(!NU*Ep3-aXHVwrFy49V^n&!$Iv)IK9c%S#*nN<4x0%(OF^PNjG}?ah zP`#A>MZeojXmO?6wQj*JCfmOHeCOWuv$jWjo!y;!y0Ee33~^zrn3gVXhGu;}Y)CzH zvG80((%NSeG$+{2mBqHWt#EH}QD@n!dN*Uw>BgHUcgqgeo#JTcuG{K}VrBgvI&QCf zCpW(E=0g8l)!wwPzQWB@Me5_U3@*vO40%;|05#cvyeb z4JbI5b^LzOz11Zaee0UqF0dY4yO}{m>8lUd-mH8TlbxCOx%jT8u0aRW zWi`@_<$85Aqf6Emt^Al?c>l9)*&^*#x)%ELbbD$0mHsGFt@2;2by>#a(GQ7~uw0}X z;KI)$MdIYW`@2Z-aL)@~R}F8CAPtE|GmXc*U|x1vM44gP#!|o1iKVkjCzVFv|LD>k zrLRg?l?~>V@-}JcY6fU7($v@LuhmVft5&F%i&m`WPK{7ri?U9o5#N6OI=y7)7xyow zU*3Km`ejVXfUn|jJxjC7e$!~L^{rY5ol(`|bQbE((4VZ=L^oEaKr^ar@3;G3-bcMZ|GxSA;Jo_zBMWzaX~kQl6Jv0|IHSh5TK48XW{*v08P748qPw@6 ztLFM|M?bGDnpQCV{gPaxT$5afyb14r&rc|LU-YfyxyD-E$0jl69+uNASJvKRcF{D@ z__Beou9NopvUOhy3O9d<%`41lpED)LEoV;7hIfwdBR*^@O!(rXSzm9TNkHu*bsem- z>h8CgZI*28qA$@op{ZHcvt-PtMg_C;O5c9S-kfdvHZ$j8u71Am$EZ(-OZb{I^=6p1 zwD7lTYhz-4ypC0^mL|vbqN?rEXi>W4%dVnf9|q*sdux)t{Pq59o3}&XJ<01*FsNwu zmlED4J-ZrimP4%LY&~sm)Lm=7-n65^NS&FQ9%au;N zJgY7n0O|f`d^Rf|N_q&4`YDJkr6r=GviDPS zroC$aba#es=KHKJFQT)v-<|nzrReszNWF!%!mQ^v&}ul_ajAVzD|d_H8e+p;I(fWb zOZ19Hy&w5@+smXZy^Q%!+GT1z7i9nX?(K*4PqRyt^2Tu@E|Yk`jflQt#bwzTqzFV=^8Dr?y9xU^p$mwMq`BIMU!2n&U%iK_Ab^(Ew&q{X*4Nn`mXqeRc7A9eW_P&jZCq> zGe2!;R^sbb@BND3X)dbiV?V=nqNI^zwTqpTZhd|GXxp(?Gt2_2ITUru9+1)Qq4xdp zciZ32NI84UH?{DQ^YdAG`#%@xjH~U?pdtS){wB7gtB3Pb$1(Lc+PAgdTC+%NOJTLw zlJt;!HEt&+>)c#^vrWpqyGtH!d+PqKPw|}Ui!9$dT^1V2S4%p(Hf$8=^rika2Sb~z zntL_l3Vweff3)syRLYW@TdsTDn3P;Q_2t9+&+>AUO011W+VpVAlxit-#2=ctH=5Hh z-RV<qY1n6@|SV_-M)9(3JT%c{j4J?N6$k^4tA=S#93weBEngWpkrR zFR6xNyePQIZRbXfzBVdz?&2`i%)M;J+Yae7Q|F|_-ORmlJ1HV*%#F@>Hb3%s)vi#Z z`lvdSoO|IfOw<)OX!6-+qU3-=F3#KTceUQZff30z7}=u;*Fzs zoim^0uI34AHEM9rtyKD0vePxYVTg0X#*wa|tkWj*6{R|Fsy!6mdU3-pd0z7B8!wag zT~AF3e&GJ{Vevwv?sg`w_R>h{F}L&1g$-{uUg_e*w`e@f>R9!H{F52G?qpxTkktFe znH#UJH@Fd++%VNPV@h6s?S6IK8>Nbd$cBmh8*4Od-N>cM?=It;EVXwux%GMf%dPis z-8_=i>3YKT*4J~BoNl_@p7^Nmo6+C)n1wp76gHMGmNw=$cHZNByK$h4lS{6nqIPwS zj2y>DRw-^t(xjy~jBl>Ee(3tUo1XWS&*v6@HQ82wl-qV`ndA_Eg|o2H$R<~sRBN)# zX-?fd-N%JbpT*rBd9B9fo>y)sO}+Ulc|pqCJ1LKczYD9@);f;=n|zEsSMaNIs*^*L z>HG<9k|tJmi;QExbjm*Puurn_)yT^RSJx%!+}M!3=#JH+df5xg94)ps(v#ZaPqtgS zv~~_|@}A$qt&huz`cYX_~RRSyPOiN6W-;|ZTQ6EwATFh)w8zV@w`@?s7PFL>CR=3Yj!sUso`0r1!e|( zyZ!vP($?|^qH(TQUG;=3gpJ*fH}bIFYLHmm@YTQvhBwSE`CsgkV0~%&m3!B3-5Hos znzy)`Pd#Ci<>F7WS>j(@54rjZb48Pc16-Qf^)k}=68pO2qwy*CuV!5mCK@NMNzA`G z=GKsO-`rBI$CgIUX9fKwi$vpH`||IJ8cKVLx4HV+n;4gU9`kzoqcbT7u9{yGUfg`% z6kY3q|kR~IF= zzWDBZ*9)%`^^%3@wey$g23hMg(G=B_=!oLnG z9eBz6g8BK57s@WzyIuEbzaoXvV%wC)^+XTF1B6}z6G@`tv0{)UvGM0RgS7AF?|B-2 zPxt1{E4~R|c~UFw3DHNW<*DQqx{pDsQwIU%^}c3pg4)R&AC{IcuA{V7YYhcV%NjfNwQsfN~kZWAz7gqt~@E> zH+Hf7U31&}6HoWv7u?)>+2!K#vyaadoxgK!^L@$drr$o)NOD->+D~#px>dYTVyZB5 z?;z82YiGaE$m8?%*J~a>xaEB9MZ)y>*fU4ZwoP1^av)>zhlACv>ke`9aoZuummH9; zQQq-5;{KcXS;Iv0AsQR=hCUVCx4N+{@%_1>r|X|~zhHhN>5+HN%Ci1uF7}I>v=Gmb zImxt@K^|8;-pLlb7Flo9{k5>>%XVpQH@zL}KD#ryd1XO-n^T*Pe>$Z|NVwJbS*N0g`t#}z zcGPj*DSRTTDeL8NuI1^-}za)qh12Js7z-9F%Y@Yo5DE9V~m zo+ql-((+k@xh~yBb0lZvq0LABKZdTtuj#J~FB#2X8w(h0W23vfO990~5d*seyI;E% z^=D!diXa9^DJ9+AU4sQ<-N9b|fbZvXzvtZZ+P0q4oS+>b1en z)~Em07eD^F?x%6deEpT7?!_*!4|nbF z)3*43f85^MPNFIGo3&1 zq@}P@_ct)lC9kRIL<4Cwoc~(W9Op&0wcF$v<(lNXC9*zlF{U;6nEeC9r=@!K-I+53 z(&mtIuV3rF?fy~rx1lY1=7#i(F3QB8oNIH=q24tmU@_W%m2$;Je+lKD{zrv`#4kYqG!iXwiuu%PtVm-?QGE{$u8TJpLsuKk!#ek6BgYIuhG4KppR0cjk|W2&ylySBVA zAg|*4)<5^#?@|ZlO1&uTX0v93t%bXFi2Lf$w=0{XEd0}~jS$a(>x84UiV1nrG%gFecx1BnNu0l*MF+9&#?lc4*v}1}*kaY4#lZ_cI@w ztMk3!uT9tg==JJDMrb^MaGGdjkz;GaFQ_{B689p~l+NM;P6(DmwbD*C#@PHcD}a(=|)!C)9cU4$KM3{a;CL zdpOM%uxRw#WG`OZ%*fo@@{oslwG6`OoH7PGqVly|v%=d^~(8hORPzZvEt3LiDS zpI(x$H>kt4;up*k%v;GQxAHK(*sm*A_+PXPfw!pN3cTszqd6_ff2esrx%mYf8)7Hd zN>AxAF>g$Z@O#WxlE1oc4bzSti^lrzwDL3>0``e+GkIektvCL_z8}kp&UdZPnedjj z=-$O1HODP+;2B|m) zJO%&C?78Jy&*?~FTzljW&o_iv-6KmR(J$uF(X&k&MIqT!pEnl7HJ_OqRofu0nxIVy zCieIRt9`yDF?wsfqnq6!ct6b*ik*T2hRaA%!}@}R&sv|ch0yj|Mj)gOi7^Sr)nhl| zvuqCrMyv*`B}6@U#h6Gm-pWb*>3L2cqv}mwe0p2vP?2tTKHC!}LFHll(Lv})yqCkV z(1JBHYpfz7olaw3YHU$3`M2lty1UEne|`H=k#+OWgMmz;iLMhCfWx3y8DGVJb3#WZ zuT#YPh2U+65$#}v0wnOK>UUl#;b*;nzxB(}io!9F0&e7D>R>WtoQlGjpc__v{?9q-3CC#4~(vSQ&+nmq%4qZYGVLl+=!zswU7U%uAadYvsa7U*=<5+N_3@V~8 zWQ{(l&-*o>X`6lYZ|{(v^o#)+djWmWC>b7(#W4CQQMIW-n=^^>_j?3II z?QbZa(H-q57+?Ri)q%+NB=(l`F=%HO#Dx021T3I1bcVEQlDDQrwgbZmE8BbTnqq}p{YHSu9TXOd{PadLQE%&>LK;YIml+h#?YvZWgAjM#TF&7 zD-x`zRHVnIjCG_5y!8qb;NVEtp+#{5+?vKn> z`+fV6apzZaXT4|^VNXC|p2M`2Oyv#33Rl+ZLz~rc?_3uU=Tu9Ai-OHOlliL7+~WGI zd!NshgJ;t;i_8NE*6^dMB=HO24?<^n!DepaK==dl4;WmMCg>8BE(VT$uk-jW%{cU< ztNo$y7($=;8=DFfN#|vHdM-{Cs|vUDtt;?Z#GF}b<#lpjaYyMX1Kf&$+;^Yflw=S8 zQGdWS6Dp8*fKMd3N+|l9A9mxLEnab#ostcrqzcY!b`{fS@^+iLSo)Rl{dj#h-CX-4 z{-5b-y^iG^SfQr1EohbXwvQV&`hCXvEq&zD+2`3u=8Sqe%2wu1ew{B{Gsy#K;2z^^ z;2?m7>=@AAY#|t&_}`{y5!y$-X1n+`b*1|0%}%5o^Mk;+ZP^4w8eYqyj6IK zKSCPFTcb~Hfh10ZB$_>3np(`^)QK*OWb?N=wino?&tz|Iz;F&5C0Kal$2GT!U-11Q zi&nLbv4uhNQ*GORefpUBy*1+O=>(Cz17EG zWb{{fmRZZYspwLUve$M4er$TVK8;msFn#w0 zD!ItI$orzeDd(8&EgsqR&$QB7$`e>_sIQb%(?*R1F;Eh$-{4uD)W82lQj;Ilm?CRn zn+eX!VkM5WxaM9kE)xWH9E#-gf%XM3R=zDWl_JclICQANh=E z$8_C4)W@91_umH8oDo==Jg{jt3x%18J*BBe8UaUlgdJX;#PL$V=Y%zj-$W}^4dS9n zPPt7Q`2js`Rl^s#9m&(-1%46;+9zPHD8-AG;xm}kNW%khN5~tb4xeE!xDd_*IURr%{~j(ZD0x``NPsD(nf6>8<MCqs-sF%ru;b z(<<^>n1oZdcn5mGwQXDKiS2vG!q1tmR%~6Q@O>2@WsP)ZlX=#{gRM`)in|$c=neL5 z7LHo={1on9n6)cpTkeVY{pFE$rW3MRrWX66^sW3X>vg*z`|G3kshS14^JA#D4rpvCrds-$SS3;6t{}mOu21 zBwf5Akh5L#M#JOy1NfCEh~}z=1q_=Y11dLh9`p=+k9+d$(R|MQh>mWI&A2tt2qYKs zvH?1l`D@dT#vb~*>V>5-@Dghciy=Ouu;h^jjecK$Zv0R)b8pWU=yj`Gc2CiyrOW&c zDotWZT;<`ABO`0q+080#0QOlFPkCyPh*FM*Zuf=h%vS4T^N)@A+_XH4^r zhet9c<-c9@ASfzUph+uO9G6zgj26t>w|vciT$~zOkV4yn4RqUV9{{%zvY8R8KC9G( z^T!7dK8z_b7svwWp$jRJX@w@QuOI#^=_&9*c(#0W)^L|A%Y|t?DDh|f74_irR@of~ zrfl0FvgrWSGPW@hVr^A~Xk_$5@y7oW?zp|b*=eo$%;}d$lG#SpO@p2CW)MSzW&drb@%r_z5nM6FN3tr`@8*1-EOXo=?PrrIGhALd3*o0 z$U+=U`i^mzZ6~#q9;Y2{zWmw#;qynoe`e2hU>|t;yYwOF#6wK5+}`5Zy0ny;qu4c( zlprIv*$((w*BsW_T_fr+w%5Z8a7T{ULh7XAjF~<_c;7QaNYicr(Pt#^FE*p zVe8JHWEV?T2)|8ERFuA%zis(Eth!fTYAy4cv#ikg$o{w(uhs9(-^DsvzRNQ()yR?G zPW#GnlnKO!RAO!ChsL`npKkvfCNQ?x>{V^^UOS%K$T|WYc5~dZ;q>eMIpJ!|5AivM zA;(U3O3It>Zn&2|bl3Y)#P6-F+vY2lwMwq&6>c1=Ro2tyb-@^zN~684@tb8KQ&9ucpYr{}TKWR6Q;IR;(l zzTUf6d5iVgb>f$Ch-a$X72_nakl`&aAzN*TInjK?ByJPIOI}59Wc`$pmRvd69oX!g zyScajm;GTn607U|*>xjQA$UvQEBCWRY}|2j!;!TyK4zT~a~h1rluxPm@ve3K%`U$y zylIwwWcm@d#cQu?4kA);i}pq4PRU#U{y6sFofVFFXX$ZzB-=?@0U+`vUF5G1?n!RT zbIwu+O&5G>-KG)geBOMJY#U{AL&%BShuJH4<0B*`^B-9+6-dwxp=+=7tH!;?TT9v3 zXRqR!zIWXnkf-=gy+UOGH@lSk#r0r{wPmpp)^3c14%q_K2+JLl%1#VgQa0=-&5r%RRq4I=N$W1had7 z1a}WaBo94zRI-*_zhN+?^FUlwChnH#^t^~QqyPXWcm~~vzSiCwxVtNF3q720$^WTa zl93bd?c4#WCq+LY@Oaez?g)RZOjtR;j$N4=5C%9c5I@z*&+wR-_Oj=kZob`2bS!>AT zTGJ}z(Uy7Z0Y^jkw1sZMw1@)fJ{+df40wb`>C*c8;{oI$_t(k=N8$;e|2a+Tlez9R znxe$2cm4K5g~>Yu%TNX40}E>e3+jA85=YQ}FgxJUKcPe2W5FLW9nzJoS>8hxLcNRQ)Rmg+_2lVOYSCTxHiD_wxLuuYH1{#XQ|)Ri zUVrt#!)@OKH=uvX{MZA6+sYE9!6LhZmwWx$>*vKKqQ$l5_dE>kN_A^^KNh+GGTWc) z4fowly6EqQj#a$n?hx-+J(mBY-)a3X_v{Prw3`*P+y(qAmtLz~x`x8nob!+Z`~TKI z+LMu}_Pv1qtke|fN(oDevZ6U@qv$K(mBELmYIC6szt3@yRIORRT@5K9;d{k_fQ)hb~_{H0o(2_IEDBKR0qc#P4?}QngOyF}0ePzkE@J;c7 zk>)!fMWT4&l(c#osSwI9Ttc2 z3PcF02G?=ats>;p+h@J$pITR`Rg_;Ym4rOVRo)h1y52T-N&;YK|2lim2go~$E8HZ( zJ?TU7c^a~9_}jx5p0DPLLTGejGnWev-H3OxJzSy6pRgD?wq3q;e`FUW8HN>}oimlzyMB-YZ? zi)jN1B|UFH{NKz1$E+4*%d+e zv}x1$w}IDp-i?;!vsPoHoyM$1@J)&hl8u_LtOe2an>cG)ePhjHH3lRK0aR4YqtYJ? z9;v9ySpO>b^O`n{DuVLDO=)pj^N(09tu^@N+Og(B(nRdEOC{>Ex`?mAP3M*_Y?->+ zdAT$_v+={z0`^F;#wE%nhk0|Dwx5awQez8!c=6`zKZpOe8PbOfkgfqzAq9F0*cwSOn=TSSIWpA8n2AZ`t^pA zCmS5n{_e=}va!t5S|PqCoq;#FZ(G;DrDK(yORd3>D30m5aD>y#8kkCNP0Z(gP^Opu z+r>GAJM41R@ed{kXeiqSC0V3~Mg(% zMy3hRJK8(IYz@Ghe_fei@+wrc_35@Pk>`myOID1XbDTwck&FwRu4;(St$3r%yxbC@ zB3U{6v^%C7rOU@fO3h^Ztkt)+C$C3&fZ%TgZuC0VZZTfs#5C`A`u*@S#I0lBjTLJkAjEFv$AKj6>a*zfFHEenU$@qTH|N- zan^P4TXLBA60FY3W@Y)-qK)tTg}8ck8DCHMRjFEX6+9fRucUqkyfgfk-19$Bi{(03 z9THNbPe78sF)Z_hY^e5u&_}lP5JbJ2ehI5re zEON7q%e?}yCu&EUZrz>O6xe6ttiH){=L=q*BD!0Xj{vF<+I<`*^Z%i@H=BD&xL!++>y4f}g)#*w@y?JP+vuH80@9BgGJ0H6`{Jyg__BfO*vlUGV(CpPyXWBWXSzkA07gR)2*XumDIB98yY0x+e zG}V1UBKgXr!Xk`3n#?tHb=4bXW0FPzn)awSuu_pbl~MTfNl%Y*2cB>3Y5rH6rE&nx z8{^z=MAKuXfnL^|jhG;=(o9K`L%F`=ml_}ZuKlt-$EF%cKdN`%qKwQ!t%hC#MCi7V zZ37>~?u<_Gv@|DcZ&D>m??~hV9zA+6z1sN4R3<;~W!qMXmg$7;bJAiD@n?=7<{TV`cR#4RqPmezVNq^44a?q^3_?3Dz^ z6*`WohC5WzqHp3WQdhzB?6dZYLe_FnA^+fKll3-QkK5kB`hYd$CE(}y|M{}~`>pZmm83kVdZ$+BR z5mdnvQ&1(iD+=Q|Q>C5UV$aOsboHNBYK1|A?PGf~ZYS7PP6ub>gZu|qpIw#Vw~lD3 z6(NfdP6?;^uNV%)F?HL1{L8qOcfW(8C^n}!#ajJmr~&X^(l@ZSPme5!PmOx)5`yLe zT1583EyAOm`q@uC2g*CX4rkr|6EWSZGhz*KWZ|KjSXB!+2e-#t8QT^&=>Od!Ok1>OZ`# zTs;3hhe7r3!&QdnP%|Wj{E>MLL#u<%yGc)VZI>7T7V4lIGA3lTehAEJLg%%F%PHWd z^LWheaii9Ug-uzLU)Rr@-x7Sn-NpW2wscl;sm*kP#kMswqQjI9Y|IMmGnXvWZ6lpb^SCS)wSNxnnfC zb*gOta^3vIKhl&JD9A+DLKl~hvDF5@s_?9!Z;rmE7J7}KbQM~r%dMHV>P>EF z`->`+m+tDouq?GYP4I+GXqNslgF5UXTL)kJ&_=(jcE3&D>aT;WSJ6Zn3xM(LuIPsS zWj6{Z|73S<S<$P_Sm4rNTt7ntv<$1YgDbHxF(Kem5o2^imO!> z?fl6uo$KX^o+45$Oo+!3dfKzPhfO5TTf=%I>wLCRZX%L3hL&pNM}-^dIm3f(VgJq* zhW(omk`b(dUbXiwBR4Qo(anif8ps%euYSeiI%KoAGv9>P6M8;UjN8N z*n+mIobQuX-O2SCe+vtC z7GfJ}XDuOglRS%2Q?(&o|2k@va>V;gXj{Np$7g2saD>K@C4hK=v3K-p=c7jNN_g?z z;=PR-)Q6CM{3EM$qQLmB(N$xf1;QN>xX-uK!HD2slm@*iui$K+iRwSs7TQo#kyJz~ z@oN4_Gt#6J(ySj4sm2pV-!QqBzdd&cB7D;A@0k@E#z0Nw25ibyOkYIXmWKV6%3_m0 z{jF~p5Upx+9jl+jY|InmQqz1JQ%^TPsyo6q#%!Na5fmtW$bgN|JM>zR4ah1|>8`Tr z_InGvb)XjOZLBOTa57_r=_zZxXOjPIuXKlULZabQfEh1kcIBW&S5JFob4gWkQGUto zRxVSl>q@z4chMpd+lg9hqHW#h5$hl4z1fjPU>aOj1uP<`a08Sce%FCE+bZYZ4TXwk zQ&uZn%l3bcS1ryM*BWlX%vuS&#lfNeI?f->SL-5Wp3KyV_JIw(cY0uLMHNT$I}2a6 zx^aFW>+P+b6&5h#V8cpGfz3-ljj#;?YDbc(wPuf4gE=@QAFAyGb^A3wDh>Miu_V7| zt#qR)*_q_{*xbr!+5l=|==eOyEWFXz-?kEU4#ekQrMpg94iEG}x{B)9MJs)*P+t}3F!xRUH@LNDSG%C5s(61vYNdR{ z9neWU<1%Ca4=*;{Z|HAkOAT%}!nx^!hLdSOui zlTDN>()OC^Z=@&YH^t0TKX9|pPJ11baoA%?Ka)6>I_S}Tw*69rMMXe~Ugg_9ZBZR6 z&i1M!+OoyuGkVF?!miZ&hrimR&BhkXg~~(+83!hJ4Cr>3v^Un%%5+O1wVTG`l!iDP zyES$IQao-Ob|taZaf9z(zdf#&6c>~mxJmeo9x<_}zphi*3abBGE+|7ZlV|BbUHqV} zk8KNay-B0VL9(gqGruZdXO|lmj|{J?fAVh3?--lzg?4(j%vG!Z8duJA&=~WuDT1c0 zrzP5~2rD&Bv}*Hk2w3I4#y$(bs3TCoxdHPgW1o6tZNZIatIW!PH75pQ`DO<57S6V5 zmA`zXIWwwD9 z91{^Xn6S!m%x`m`t;dw*e&b6Jg7^x{c4oz3YiD_Das9f=*@}kdlT#_m&6va1mu&74 zWw^s8z7~I7D*cW9!7jcemSH{6Mx*+YiNxLw?bb~{{;~cJSCM*HEG=zs;&~en3Ibn? z^)xH9dFIs}5bq_jDZp82uTt#iLgy<+yt@@`+@`HHm`cyO9Rp6>L|s?XE*myE%xuD> zkMPx%zLF;SkDGYd%^F1R)U3Xg#G@`00m5Tb0!%6|e06_-Wo*@%Wk+@9r z9J}A%7yRD4axG$z-=GUJHTNLx;Ha{zrR7iEsmi2^$4xILT;)y3ehSOFjwr$P2&>(f3N?YZNp7lDl}1G%4aJnA>6bKUryfS zwAIVaLt*2N?}9%EJ4>e)DKiHBYuYLruhgur7^z%pyFBZn-j4at@`;rm@wDkqJcdkh zH1>eG&Dac@IU3yp^F=z$YvZSTz-@n6upAWZJZlj^HnwsmQU8 zI_@DZvsO{~Id~^1UBsqWj;`!7YT-3xRMX1as_HtA(!Dg2&HvdxusKW0!c)zvC~i*q z?%$k$Se-I;H<(sO^DE~{hD|y@wg?+TYj#&C{(-u~n1^9^%~7^kn-wGpKG58QvdZC| zi=|^HCEO%lUtfKWE18WNdeM>7>e>9dwx$wa1M2}SL~FhyoUoJH?jT<=*Cni@Tyf}i z5jf6Sx|@phCzo87?+_+K!Cf!g-C8fy9jYW%U+C&&q-t&`JgY(m`TPo+WsV>6@ySQ!b&8nJR6=Bsox~rJGH37uk4knIp>r&EQq5~zx?ut{q z!#|3a>2`h6QVJ(#wrOy0m$)6)I#zqUqUPV}E*|5u=02j8<3=Z$^PYROd`>pPr4S`smUcoOA8yDM-H`i zrDUw>tp4pK0@sF$92)Md=xA=6sJE!XR-1NC()3}8r0Xv2uEll-$Z`UgRAc?wfoxY} zF@yWASEl;IeNA0Ce7)PMtD^mEeR-vM`!V*zu>{tFp4{S=-oLvc?h88P_QHQx4M<6!9eKrL~LwLz@WF zYAjoKO7(=-I?ohIwwpC+p3G$aX;PTM@+p-^%NW&x#t7o=BR(lD_ zm@3_trG5NF+O^Rmz2CYXw*9ZpsNz&bO3Oy-707+!BiH91iB4RrGbAW!nnJT~p|H#X zF{yf`YP@hIV`MC)FRFWMdv1Mag-%67lg>;A@Va@`vf}5IGu=Ad;sog$g=S?$-h!_- zUa$K{eMSgpri~BuQM)|a=IV4RZk69?vY6VX*2D)mlReM5tg?GT`H%F8JZGu4urPDP zWExC^3M3+y@${}izaB`3N5hNC@$!s@>*Gk}VO*$_`SN6#9LK*_eHJLP4aI=8VA_BN z!7oD?vI$Q9tnsi%@6irQqgmCFa>u&xArFx~QfBwqv%~X@OM-2)1&EYNvLirD4xr5p zy)~{Y8hASM`$snQ;yYJ1pR0yeJgD*Qn_@fa*ICbaTKd4W#vdj~iRSW@oyV|SjddsmDG0k36kxK#i|6I5F-tfNR(rzxXyKI^wss{g7{afEX&aBn~TYm7Y@O|Qu=-6Y~O%R$-niEZoP!5J4 zbqvAFbyC3-ntIr}`*QQYe^35CEGIRupS-Rdz%4poSsuiA(7DH2L98&No2g9(P$a{b zdXpM!)vu)2*uSSz`#7zPTAvD0SzO(-!BO5j13jBVUT1vRZg>YCp_)Q{}QWG+83zzfDC+$OO?0Ov);MEW{K2lMl%ItGZ1m` zR6U~RJ>Wz6Dt7TiWmjS2@v4%)DdnFV+eZh))rbmPf#(@-ft#~~h$1m}#pmE|qBIO; z`bV^%gAb}21S!;?{qz=_+S&5U${ZtGtJHw72zSFOMF2>!4+6O0+V6ZSonF zXXI=6LiYmn+R`^(@D!$drZK2`u6%9fqsIM1mK>_qKGG!@V=t2DF&BmP1>z%oF)kBz z(MV=EVQ^P#8gxafrU?fww36$-Rqn5_sP*sCpEXe)Gw!u5cVF_tE$=*(MLND77l-aZ zj2V>~Ds`qHU5bXq>tkV^F^yZRg%ujryIbamgSc8csU)(?W3L*|2xp2_p*hzi2jhiW zi6}MNW^i1y3h+f}M2+l&w-(mz{-^wRr7^XqhdQasM3>l#JV-uS?hSTdNLNiaVY7`R zkk1fg z@eG~}PdB)yodS8Q5V4ZSJ$sy5o9o+aK@A()&yHT?oz_`PigqRX#Cw;zI9TQ3eKGHl z_u*>|)cW%}U=0WLWx??5*MX=GNz>c%aCV#THT7e)uNxIzU#Gvwi71|p)H5jHoZlDMBx|Z! zDmn{Zq-&}3UW*L11!PNqFZ7MO^cl2AHHOx5YemiGgDxz&2GE+X6kfnzSQ^yWGI;uAp7?WZTLV>OiOgVYu$9ypT1UlA5ezn+K+e_21NTMy8W=$ zGH*7%tiPZcp^*s+R)xzy3P+h5(;mb3x=>Aibv1Q5ZSJFNUY&LdG03&oFCwtc*UROA z%{4N6gOl6OnLNy@n=X}2bv`lnld)FsuKH9Pe4=%auJw5J`w`*MIhz{mTt zgO9}ltV*{Xybth6*(l{n?Ij|1#$3#JYw!6Moral)pKU8goH)BR98BpB4DalKD}koo zRu1MCIp`rRTTrArL7|rPNk0isFZ`WBjXv#8XpU*XG&yz3CnAK!+6?nh=NezT;L_kv z-Vf}>L@i{7##w+w#g#q~e-c~rmT0q6&coL_X^pSyUo@WUik{vp2J6id`&9*m@&i75&hNecpZtWR>Bw1f?&1RF@2Trg|kU6l@ZH7eJP2!)?@rF>3d^meKm?riGq->N|xUa)m9^XDCb* z860fj{=#ZME?L`3y-HRhSk3*)>)>~>FEWRy>7#jFzNl ziKuhYhk|#xfh>2RlE7usQDHi7EAO)CwP=!)!8kLm*)M65)>PLdwEP-*#2JJgH{a;? zGB_`KH2OhMmdkmID#O!&N0LTiEAJk^L7XV^;t&{5rb>Fvn?ve?>TkEtk2mp0wDuFj z-4P-8qIX5n{H2cn5i0cCmdYi@B6I$20Y|(>IJoFQ2TX44+0a~9zpHUq*Wu|f@guz( zs{e#t4Oa!b$nI?J4Z{$SrefS)fCjG|jyWzi`i!H$|6CK)P7ujdP z;n>UeGN0+t8{uaILS0u_ZZrM_jZqGY(Y!EDHZN+KnZlmGF@1mVafhhIv$eImXEKdn z34`Oi9nbpx466w1_v1Rpk#!Ik!5#8f!cXi(wjWoYoye%0YoD|oaOiAlJJ|7ZAbze$ zQlL9UsC5?k%fgO@vV63iB!ue*dcbNahxeI9TpU@v$t;);pJk2}_Jw!WwO{EP9j>9r zDdr8_EH=6N1meT>LZZBZ4sG~Ly8G1rk{E6TD`pY4c!%+1UTc;*dcJR@Q`qsR=fHR! zYhGQ1bg&BWvz$-oESy)?uwL8d4fEt5V$#?Ll7JQf<3l|tpw3<20wBv|*|DA5Vo|{93 zRIuo=rk3f`<@dRHsAp)M-$$2ri#0}Y@K0$cr<-w_p~JMKQ|Eo>#wO#2xAZ;i2J~V_ zb?NppBfSsiu1+`ofT1bDNFS&ZgwUv;3z!!FTr^^QVccfK(ss|wXOE6Y4}yC;x}Nt1 zO$@P|)Rji(mb)Du1WbmU3;f{OWcR@2wRWoNyP$#zqX#pt(8uQm^BZPqV`m1dd!P59 zh8Q!Gyj<`)V+~6Uw`=}ug2;YlZaLN`FfN+uN@qTXIZc1Q+)h$F-#J$>6+QB!zp&?b zZ|?H?@+EUxKTL9MZh5Q?SPaPa7C2XtS0jQTWZ5tFNxBuog0YUqnO~&lOymv?_a*dH z^`}lYv0_xa4EW~#_8@O*z^K2zSG(hC!ZG~`!2d)$7W!y@3^#h}{HOVhnWoXgfw0~U zJ;6ievyHqo&@N<*g^$xQAKidd-xuyyc2JX>+OA7#emwIW1Iuiu>Cu|!^ru!0NB7_C zk@gOb?O_~~#%l%PoUC$PANa2HH}Gb-e7EGF&cd!J19&M5whIrLEi`Z173zWU>OsT4 zOFb0>@2BsvRVuN*g_*YPqtIjlHP{XQBIU84EQGP3Of9-D4LmbFQqrH) zlhbo|c;g&{zZxtPWmHE6z)+JUSQ-l5=ZDuxj960o` zuf5lMxOVm^H$c7C;1d46O{sgFZ?;dj2i|ef{3*N)(j-gcQrKpT8cZ53asKBNVT9g~ z>b=xAIChvmD&j&DP^U=xjz7KPeaYTwZoW1U98lK}ND*gnjKG1*AFw~xLx1p$Bf;lXH#59^|^^`o=K-AsfEf$(Wl@n!h&PJsL8I z?%USK8!?;L5PSed8a*?Qu*>og`?Pp(_fXhhHoFXWgSN=F^HSJbStj(S^Y^HW6PRIA z|I425eV4{F8O4&Fn&;7WSd(4l{7>`E` zE%oi{9T+T~c4y0!=k+$5T(r`0UGg&Ymbq_tnk4-XbxHfUT33YUk`^oIhv&b~(WeW? zW`>UU`}CWQdd!J=L)CF zM=uP%>{~U^Hoi#TEFOU#K-LrFcBkEYJ@0trxE!{AY2pcg1x=Bg3d%Ue3$gT-G#6^Y z1anwpfY_%s^mj_J;3NN{`NWt=I^%HM{ePZA?t7ivDNfk6`gY(XX)yl}o5XxW3!OKf z5slRjk^7_j4~`s~J;>Rqs@Ji=#!}jx4tvl%4!Zf-uO?_CBeg7->_p7vzZzgz)5qry zOh=BD4`%fl4LFaf=Uxe3g3=8u&3Dh zg_?gm={|CDaQn!<>BFor`5nzWs7CWomhIMGDF4j$uxH^XwC+G&0&UfQm-Lq!6;0AW zp%42BEpXat?Bz(sxRUyX4ORAP8X+&3HWCk#cAHgU1Ca!MU#(jjpCBWkXpjdmZOKyc zOx(=HF?(i>CpM39CO%V(*+j(_*lj}xEZ_9K=|xNv@)kTzCqNUbVGG#~np;-QIIG^H zM9V@1L#!8beUlr0xOs5(F!|pTLj(dcDj;w@t>KueMLGFN(fsr6EC?2pu z&^)lUW$>RySfM@9=jVS#poFi8o3$-YQtd^s04Hs1O{gV=}TP2 zJ4qjpvv6QuJl#5FMZL68C7J~0=w={?v2G?#xGv*5#7_f>b_(n&^a!{XbP=Qne5X1f zSBjcBDuyrBb?V7v`fSKTl$Z>n>ZT*3u`1ksY`byJvNagmxv+K6UEs^0TgzWDR2_1p zcmwwrBY`TPbeg(F&0(2I+2FPM#V9k}783)UKe`Zk2M*TN)#}h#gy=$wzz=~(mn!5& z;wH{R#=@-q)TJqdITg!NS^!SdL!;E#)g}|z5HuJWYw%5b2W&NT9T*1g1=R!CDi8Sz z(NFesdi6}kWcF0b9Bna7rUU(>?`vF#`(+}=hN5#2B7JM^RG2OF2{;5S22}xaR4UmM z;Vt$e?e@&B$$_cjIXZj0{Dg)joQF0wEj3NUtw9$c%=IDKaj+<;3fvA32J->6sy{NK zuyk=Z4LdV6xp~@}X2Gphgu#x$GtsL|ZkmK*LyYZ=Li8A#DH=WyAFvmA9P|%Rtdh%) z2;#ELqB} zh3@P@+UgmPsex$>O^X|;n1<>aw4i=rIoL(C8o3C+p_2-`0{sjof)l_?pvq-y1j*kE zU$XzugJ(BQPtK&%o^eOzhoQRqW5{{T2kbTU5b_W_LMI*;xonGG&<^kvNDc^Gx+bew>~qpEkgLv9qb&4REDN27>NRZBU88veS^~-hJ_Pmw9Ra|l?efQ> z9`3?I_q=j;Vm5D?Pw6cN0lc-|!F7$n7*Dhw>bv1--4M+<=vfdM_z9S>9FuevQ9dYw z^E_B5Y5dv3*|qa#tW;5?`krPW+}>DL1G4K%ZBp_%RZR*7d z{L_m^=mpe@S^fEo3yH$OrBK*sgK`uU`w6oStwglydu!j**Z{r*JPLdR%mRd|U6ovE zq)^Ja#f+T?&F!B5&7|{Vl~&MnJzXRglYp^AUqCh(jB2lg4T0x@vp^*1C2-fW$DYZ} z#YViB3wiSaR1vkAp2n?^#etV}?jTO14`71O^~fOuFCA}~A;bW55L5(u0LlYKsTURT z5+c8XrJUbPou&@ZD4d;AE>NxQVD!t_1`~qrKoSg9I!84dA*^M8k-$vQN>CJltsIx8 z3z&=6be*}o)Qz-`#bk*Nkf{CCaL9NReGn}{h8TM58f$)s)Pe4Tl%VTiO)zm85ldvp zg>Tt==v1l^b?1B=3n?B}U)3TSt}@<%d5u=0AV%l)uv#4GQ*a7c2|f;ShFk|(s?W(^ z3(eTGw0E;sv)AX&E_jP>tEV)x;0-7d8itNVWf>;vO=EyxD&A;DFJEh?h6`jHmlrT1L&r@ zD!I)4%gCbE&j6`7#u(2+c?qh}6C=JD*BJjrkr5sSf3)eaaOgZ(15yb&1NDQH1JhKO zBrZG;CU7oyhB|wP-pS?5H$kv^MhK+wapPE&!05KYPn`nI4;n3yYzPke2>KE73AAbH zigb#1pXod2F$11`NITBiAaexo(AjQOf;ww_0ks+N#h^v!u;wNW9>g0m3pocp37G`h zt0^)L|NcVW-0hi{Gcej0_I9Zy$Xn-;;R%!gg+*;aPz|(n;aXcXsvx!CdPpC{1d;&? zR-cm%@J(3bb0=oD&s?3aU-Xo02ij>H82X?n#&#%E#6yD@I$Jd18nKW>a3fd>_5!0cApY;GGLDfrdh%vPPnyx#J~Jjg`o5uO2d z>NRl}?@IJ0PU3^GX{s){Jh}%y>sEHd?4daZ@A23^->^kIlG8smHTI8U#cf5^Q(-%&6mvAOcf2JCJFA*UC6z} zd*UYX0e^yBQjaAAv6_Lgc{l9#>{E`h?!uA9@j zFm^;;Eq4}bgzC9V<+QesbF_0!4;4Xh~Q6dvN%c6#!=0=vQX3_Xt*OwQ7jh;%X#0;Vb^xmCR z1GGyvWOkR#*(a@qTau9gkfI#$lSNB@bx2Qum3q=%eKo+CQpzmYzv zqT+<`Y|oC|-wtn1$~7Q#JFx?+!Cf>QukK~iW zvCvFUcjv!3_T0ms=8@v^0OEiAG~+GH4eJ!^M)P7r740>aW&R@F1V>cByJ50=C3RH% z9Ior_>3rm{DJg4`Kyz74Ly1mDb7Dv25RM=PY}P z>_(1EcXs%W>?A_`N2AxGw_ULgHeZEywgqg4?}!l_Aj-_Z)~OBUsqt2U6L|rDU>=OtPGZO)o@(M8k#-W znf9L&N27N^1;hU=w`>919&24wd);`h14B`1!bnO)55k6xRt`(L$ZF5GoZ;DhvJb$l z5pKl!Fh>h=y#6bNhFyviQPgET_YWvv$WXjvUFScm7oB94x)jI2i0tz}KGbba`CpfpWTXUN{9g?Nb0hum*=XtLYy_?%TQJCc*~u8ZGN zuF!RL8uJNjRa;Z*Ntpe0<%@s?R8ev~(SWFpw?fCI8%m4Ae)l&=t*mXoXV_1Y0@9L^M@Cc_wmkc;qQXs%2MT>=&JirLF&X|gLi6Mj{^kM3th zLm%sajD8v0tV>L*b!mvlI#LTro(vK%@c+<%(vQT|A>iKOc$}3l`%_MB-?#WqHOQ>g zU$Runc$`ts*1$YUzm6XSx>F^|Bg7zL68;ADrgusA!;L(CM~|$JzmM22xwk|Wx9 z&X8&SlyLxNj+@MT^)vYl_+_18wD<#h$QpPL)t_h;-QpdUdpi45mM!O~Cjjx-T>6A= zk)?Y^t$Y#NXY*(M0p19jQU4MxiBUv5A_sG*(~_-X*L@o>3)ZhGo3LqUi~^)4bz$OBR-mIt71J^q?)cMMlcD zKcjKR0P9`j7HtOiiM~XhAa)XWi44Mx2GX453H5dlb_~kuo7FDons-C|w)%@Xtlw#Q zVB2d`EYBb!>&-P{dXpUS6F&pzr(Q)#<&d;9T;B84@n_cM-)XzaGcP(bU5#$2J8Pb3 zTWD)HF?D07tDh$pZj_%ZA&+D6?1yK+1G_d2!qMp?n^4tYP}bjY^2fj`Ziuc7`s86YoJRbG=Rym*Bdt?uH3~?8a{FJAY*EFw80DA9DwgQ&< zhQgZhU?nw&=!Xx*MQjZER{0Y$3)}qHnZzp2rL0O|gU;k(UY+gKn44Q71c}eW!C+z%7186KoyhVe8P0Nf{5U156Ec z8QcS!Cr{$1@CCRNyNirUzY_v}R^CUO-{Nqy|w9KWl^n5Oz4mMq)$jC{5>=AcgG zDl-Im0&fg=Iv>pX7b#?NX7qrsc3x>m8#~Ay?uG5A>3lS-;hVqOLHf<)kHEBw&Ns+X<5*j4IZ`5BKsp@OcyH&r?Yry+@(KsWi%nn_XfSNDXfoPo^sBh)gCRxg;5jN2Kit(;|y;RgSO*-cJ@ z{6H4=4%>s0YNO=nSPB1xJgXy>-7jaF=XPXD>ThzYMmCPO-mvwtwY2OvWN2K>WU?Y; zP4{B|K+XS0Z7+|C&kyu)U2@2z-iszQKZ?q3~e)LC#Hb@RrS?@PDgxdJTTFcyBAL1G_CCP1gdAtsk zNjH>LsKkoMRxj&3X)kEc2ievOv2IFb`kR(9m$Ch}nQW)bAN6PW*UbOO&$tnvj#tKi zq92ruqy)KVU0!uZG`nifWY5>g*3=fVktWX=w^X$)uud~)>-Y0f<~(^3Mve0){NC_Da}`{t1`zY{E%+4Ngs(?5 z=|SR}&_j2P+_m=Nj+=Q*u$*)sy$}AU-(r4djarvj4jXrAC$LlKAH*j72!0iBhd)4R zrDmc{{d`W;-5|15o(H-*KC6fUL$aaJO`y1z;ZAZ-K##38w+)U zaaW%l)~?uT*O6eY#9YW^Tr^0Q6}F2uy)|O=Xn(U4>9Qn76en!N0Q>|RN?(yqgawZ$ z_o4l*y}NUazpiji?Zynz%{M=`F0)Ot-h&LtO^#>25kv8M_$7QPUL32hwn`?W5ntQ9 zevV1@5X4r;qMuTEqa=*#y7EeK!Oxhiyk}M=ZCDowSeGs&qB7I&p%?C0zJBbR|UJ!B81b$K1X4 z%8n&@M+2wDUr0|-UH`)T&f40RAI6Giy2D%{hNHd^HOR9hAe-TR)QgF%h{J1iHg-I* zH*w0oeewM2ds?G=Yno!EVD59=^q;OQKZp5)x=9Qm>XUy!rnfngDSKl`ptP%64(*tk zJJ`D+YDm9?cBVJwS~6_wt)t9E4V2~`xJ9)iuMwrl0%TjFBI-;f1SYiC-8Z+4qjOH$ z^)mD|u@&awdP7gkJu6|WZ)t42r=80#qKiVb^Ofifvx{liCdHfpkpbSnorfJDXJ6j2 zzy~oC`O2)-y*IVB{%P%L`D|>U8_GFhtSArPaX&Gbn1z*AnBPIe_UP>%D6DtIxZnLH)lFtEebE9a=aVNPGS zEA$F-1qIpJdWY$}<*B7Ij4&y_6{rjMtO{|7cm%nwAt(*mxJRKjp6j_o92*?J@=gT` zh`DN*?yY@mylEa{S#IuQcnP_J-xNdECC(CQVj}S;Hc}a$co8xCE;;{l^tbni{`+op z3>-1tg@?T`rm~jK=8DD#+B@t4dH|W97z&vrFJZvbYH2w)Mg*3+>gDvaSI;TueimAv z$cH@w*L7jz81pjob>k@AYdD+y7vzLS5Fw%&NfR$nA$3^17MkmMlbf_pag@m`61XLl zQ8&?Lv{j9T%&X0vO9qjPNDVaV9CWVp!?Q$6 zn%b<{XAn)z%#}=M^{q8e!3*j-#I@gu9VAQ6!EdThl60)1e`#KsoY(dPxss<>^t@b% zuyHp1CgWn0&h$(FQPY4uNxO(@#1f(`S&j_j3_3RTSXdD};_i`)I9|c*cvesrRpdEy zRXf4xFqJS5HJ;SH=T&Fmjl53JwP4=DZ<2A);n%1H;-i+!tm zXslvBY^q@_p_93;peEgqnnYRY`t)#W5I#-ap734~pILzj1BNMRH%~&GR>oH%Xr&6CA8} z8x`Yd<8%EwO^nTC7x+}efnZ~rHj}vW?9?7=RU%p>2GWpR2-Z)~@JM`3v5VWp#=^&+tFP zX1zr_fa?e*(BG(bbS}Mz9z`|5*D6J&rr|%mf-`^aoZOiEMChnwN1oGLHO=%_44V!2 z^vAUw`IDe2^PT#K&R~`^>uHjFj?|G`#qdC$Yff%DXF}dUKM}8(hPKZZ(!J7eHVieq z({0pzVkKrNy^OBR9A?fjH>hfO9p#CbKYY@=A@5nP?7ZQ<6!9c|*cxzHOBsq8%NR=; zj%)wmuK*L%m)=XiU=+qqdk6*@kZc_-??3GNp8H?!IoGqmB4L>FlJ@Noufr%ssw=u9%+FSJdt2 z&$5G=GV~1UJ++MPPhTL{VkY>G;ZP}Wue_qUm7N-oBeYo>hM4H-d?_8TAFV&5GilFr zJ3)1(34M}o$sA&4(C3I{NLCWW4*3c9*WA6iBVD}%RfQ+%Qsiy6wN}#or*E(Spv~kN z_7PK?E<_)oKQL99R@4Y=TKa*oD0JCVHE&t&VdnyGt4J#G2Guhk;nOPV2kAHJ?3z_j zBWp7S;i_@W5+;*wMre^6iHgyh{wJb*QIV~$>8oq1tE79RdBNQT zg&3AjQFgj5bB~ar!N@!kt~U2FnxJN+d*&FxwK#T)od2C znm$97qi@jb=n(lotfz8T8XCFeo8#i0o1Ej_MS}|jL}^Ow2aEY;+Rxgl+KHO2+$qqO zX-AKwAJ8(rj~+$#oa&Fc(z7HbeBRgJ)zZ1x`Nn-J_)Pecu1JI!ALr7P(0@_I& zUeJpyr|(eja2#nMr(<|_)NyPC9cNKZX{}4!R(p^)a+#ns!!Qc{ zf_^}S@rKA>^0@fU;8V|*JdLxGOYn}0v`D;Hcaa;wZvLa@r1qqClcqd>lWhs+Fe8~_ z%vRb&7Q<$ye@SHYY+$pekW23>;0Xl!#>rF^4N%M2cRZ!l=?JY&(}-IPMlm1g5Z#zw zMt#OHBqHw<>V@mVdqwtI!seu;226?o*ilvh8mj(f7dM2wLYWE_RD3;9=?qww2mY0B~A*}cF7o-qfRZuCjw zGqNJJP3Rx)>3ieKb$-n=c%OtE;vnTT;bWHa7c`Z1eRcb_tu?2(f7l_Q0DR(m$atQ> zPAZ2IWn$HXIi44Jqw|Ki&4I=-LN1JspeD1Y`F7eXx>~yR+ESXk+#dEJ7!O`B|IpdQ zcVqy>x{bo$eF@i&yi8YR-{NpD>6tQ!@G_UVn5LQTmrm5a)-2*B*1{eH9l*a#4@!eS zQl2D!M6uv$kJ07K>*y&ItQohYZlWnF#!7rmolAFBhv|lBIQ|D)j;+A%1R`CN?2UFy zy%EHa=5`$sPtMm`eS`#w)L- z^3g4D-#)t-cROFh@Fg*nmhnSOoU>`0=$h)s>&j{`@!hy4tRDzKVvf*n@O$dt$&0Zu z!M)yu>!eHZEDcVM&r9W^Q|K7mLZjDx)?L$$g8O}f+sa-C9J>z`XYP{4P&>?*M~CnE z_PSGfV<15?J5nyuSiMigm@v0hQ&9J>?y~lBh^GQ1fuDY!)ubIY;VDEu)tO6!5`^Z7)fz&)6~K%(Y@?K0NZUd)i3@`W^OmuK{y?Gi}s&1=pDt}!p^PRtl4LZ2Y3!s!Dv>;-J-Pr$C+VR<(^Ekd`1 z0cjgPgYL;5@4{uHv0PqBvd zAM6HR*6h_b(LCfPvPT&|L>8r)9x!t*hX<5>iF?t0A6N=3f<8+yjOinwq4W<{F9xn@Q1fpj@`DvTP0Hp(yM zim`5H3v-%j3l1~;DTMeBviASQS_ZY=`7WPpwpR+B5PGH#qaku6n8nqG@7Pmw8v5e? zU^=sw`Nn)^_P}?XgkDUQ6~BaU`!2Z8xE_0=fioN`BM5-lC5<+6LI({f5do$fl+%AhhJ6} zd|~d;4q`IQw1J)MF-VttbL)tZDre`aHRLi0?c@Ef>N>~8Qks1I6# zo=icQGgMbUCYHo52bX*Ix|e&F`d>tvNek0EF$a|gdh@h)p!QEqdp^oO0u=bnv<5?& zJgOA&4Ea|cDp0Vq`i=X(yONI%|0#TxFCsE=n(4!>fXL#u=1;y1=LdGi!!!XF*yYfk zWME!-LCTI)2@LnFcTe<=48DksNv>0Cz;`^&KIH{XLL=~Jxk>DP&6=pB zsLy}VbKTw1TQb-nb}G?Ad5le=W`nJqR?`cv>%nuL=%P3Nr=s?S$6<=8Mir>O5W~+ij%xtCtw45$!)e$CfQRdPf=dhu-!YENNc9rsaF*Zf4SQ_<2H|kL zocu^Vj+69au!_6QZ-eW8ut&jkunqeCX@F$*kP|V3QXZm;%0bMx-^2Mn1lPy5CK@Wc zu@B@e<~BQypTghc9IO{Ut1YMlN`O*KA*v1DQ9YhK5dSaKz(2v;&{r&YCAwa!oIZ?x zB|g$$z(uYSpN}WG+3ZqiFVn$eXxCqkl})K%sy zi}8i{e%xC2JJ<~hvyC8T`UrEdTli`9S8{LseQ25A;gx;0;H14liNZ=0Jx&f}?z02= zVf;7l2-}H01CD~$Yyj$rp6)`dK_1C2;cS=+eDyZ+xdVShF=Pc4dpd7iKF2QQJb=(2=JP@ES_|3pL z%G9N0$V84)iX;!lmCzIa3}0!#A@m_?l1!=F>KZ(ce8DtkD|3xllAQ?3f?`mIM}lI^ zL@J3FMQWt_h)*NtU_*Zkf3slW=vQH^>{aUG)5(!c09;{5uryl){9w*A7ny&VXLLm> zfqzGeq>oFnXdu|zFZpH#a>Iw>Z1R2jAi9g_MDGHf*h_3Pb^^!`els^2H`AWEMm-@a zVb_(R$@B5W;i`e}z83zXp^MSiVwU_^jbg`0hN%YZpgjmNtC*HdAEpSCMZ2gjIg3rbJ7ctQTSnUCB2I|%Q%=xjFDN*9ANG<)tK(IOq%eB zI!}HpjE^h|4h~ceHVs#f%@z+Q3o1^eBr%WL$`l9t!6=XkQQ#a90kgpsCWqQjWI_Zv zPwEouAKDgJ7BGa)M`H1L2{|!A1Cmgyin2P0j{gRF#!OYfw?Za(qp&2h zB3LXC4{Q(Jjq>8=xyNnlkypFwg=tgfXTEXaI@;ggH$CVms0~)nDuveICRD z;{%;Tt)jbxP~vQQB{B~mKp{*K@E+8F&tcdUsK#yvcbK-YVsi%_2G4V*qbEXL1Jwib zf>k2};QY=`sflW5EQcsepJR4_CtxW2y6W(6X4?T5{f&HuX;mb7H2xBPS@*#B;NkGs zSS9JXTuE(-y(KErJDI0|VE=-6e;8YYHL!C)CD`}08274X*t2Jecpo$5R^VYIJbuKwxKJc4&OGwtyv% zq%kyxU!o>5Ec={o$Tj0MTq$U&FJSzAO^+atVcnEtiPrHh;c%c&U{Np;PR1HbzvRYh zA1p-FrtdIkz+iSYdz?MWZf5^v-++2dS86Q&N}VE~5>7?#1Rn-=2DgSs$DAT5_f~$O ztBEbt3T7MlgT2F|oWK_5yzB%v#i-O2$niZ-{Sr?`kA-pqgM#hCf5du-tCF>p8R#D3 z2X&Nr2u85a*iWn<{u1l}b`cmu7b7X`UAk-HQLIh4Ot3(3StuN-DGW(GNqN=U_(k#q zJr#6eQ|upH7j6P)<#w>Q zpy1P3&d7R*dwAfy^gsJ+Cf>=MU`c00+j8?zGCxnC)q1( zH5LQC>0`ufbaI+bSGN8xd?Mq*~NlhOn&LF}j6Fe|}S_B`uj%W<{24DKQO z3N&PHk?*i;N~feo_$$&abTXJ5vPWLT1Cl1yRV|6#A-q&CrXRQpnzFl~Ox)};Rt7bh z7F2iqxY|T+EY^-T3zZ7a2>uE8x}`Wb`EU9l(jU(xThX1FV&Gqxqcvo6K@(O2dl)C= z#kV0NQ^lnsvE8A@@UPnJ|}!gZA*3YEqsG z_v}k(cQ6*b0_8YUJe#bf_z^!|ky7Xapa5GF+RJu!58Q=p(1zJW>4|KFO$Q`@Y-czt z_&X?smPMNgQxopgcXb(NAXRDt(+jj0;eZ)-kQMyv1W855h7CZ>w z@mFLxlzyw!dvy~=kwxiA%xKVu-O6r+>vlr#m=DaL*O5ChLj9CnEs)WvAu-q^)FBd! z-4V;mo0ais0G~tMrAz+*{`3#FGy4H@8~b7Bbve9*I!z|T_R&6}d_g#+Fw{FbR9KZT z!g#R}+e8+jJ1~pDc8~-7&`UZ%Yv7Q8h=H>N8?qdXSw9<&Eq2DgPn(bnPsC`SSLisRG` zx+1s?GT48h3_G!L;ABp~%IH{Zm6DmPCX9}h4NZd5zZ32rW5wmk7ilMQ2LC|rhfMtz z7!8ZE1z8RB;}yUb`Y3q~JFHHUXN#?(N@zlGRWKQ97{!F$iF>I6$OFtmexPPCT95$s z*(U6Gh_Ducs*FUg!HXbeQXj;h(Qs&XPzX#9?TR#ypOW6mE!0xjKg1I1Ii15S0S~|@ z@B#b>szd&G6}5#JhF(vvPfU!Lj}!`>39bn3j(mvql5Fx@r5@Uu5Xh6z^Y;gvz&UUb zTEG|(p*K@Q;ZA=|I}-QfW#DZHQeaJRZ}?&Kr_dvLFD)Q3ydm{~{>}Ugnn83x!~Ypj z3M{9mk$G4*wTg_0v!XjgRe~FXr^2tJgxETH3r368_+Iip9cR7+8APGItb-^^Vm8u? z$>LCleX>W?#Y%>s1Yg42q31>!p-JLp>b`mmQ;82$KBgOFc>Ev*Jm4Ov1|--+{R!`Y zEK0qT>c+-|4+OUa*MzD@9dVFYlsc#`#s-pm=oL)n|4H!;m<4xx3RuV>^kU*B8cDxQ zER9!)NWtB~YN6VZ;L1>)NXqStDy>pM!QVk68v+O+f1@eUlzxM^p|k3D=B#i*^(yC&r|H zs-y6&Bw(D(V0H|f&CX{#!U$LcJY@byKZGZ^GSvn03-Ls3RzwI7i=2wq7iLNYQx4@k zCK6j{21bh2>_zye*auLC?O~OyB6$!isbA~o6q8pvTI=SimKm2a) zB|8%wV0yv#8-kBU@Jhz2yr&W9Y^Xvit$@H;q$t;95?3c`9v zi4>C{gkRBDkx3C#WKA?H_C~BEUs0A|kH`y5FHYtMYW3Rw8i8BGzJTn4nYe_^OQT6f z+!wP&>qSaO#zbAg^eKlFqhaP{1eT4&2h-Nd}2Q_^B}WO9vPd$6SIZtF*KS# zGBR>3Vvd;wMcS9DfXu+}Q7yoHZnh>{(+Toq&H3Z(JJ?%t8J=ibFL#tW#BW89MdnBT zinNV>j*SwJ!hLFm)*<@Pe}g3VgWspAu2}+^_Dslx2JnN(*HpE{P@!n-a->$|Vt6Fn zr#|ui5}M-F2iV`_B4$2YiQmir;w$hIxs{OFEJWTw(`hcbP>`Z!BOAhvoCCa|dyx4tHEm7K5w1jcha;htp(5c>xK1oCG)-bk0kkhs ziQWS~LoT$6CX3GxYhjgum99rTLbj*YN)_TSA_c=+Lu*4F!usfmxFWTMS#1pa2Cta; z%AVyLX^vTHwd2CQ5fB0_55$Y5f2Bmi-xm00tavbZx{PZWeJy%Entr<78P$qGnQ|C0JQ{rWv3)2sw|AP!8i@{3)N}O>mLfkeM>xIakmfsIg%?;4QNM1~vQ6sUQZo&5ApKESwp7EQx<&fK254&{BVlR}vvMhBH z=EX)tH$}QfsA&862XVSQRmnp?6E1o;JCtv!S;bf5?d(%9iMc|RCw?Nk(p{3Ocs{O1 zc{qD}Nu*nJZ+xy)C`GELux8XyK=8XXm9?3gE&OP%Ao~|nf_j1*;Tfh_;)1w0out}tdw7r;zis%i(++4&~Q{`AInm44;bNN`5&a)ey}>pZLkxwAjnoa-piULO!Xi!8VWu z83S8@yT)zfe#1yQ7)IX|f#a8v&dMivch?W`3cSzbT)bZVb^MTURvHC8Er+!y$I$)3 z4;F9@xYMi?bc8(>#mFo8ShS^zrZ*=&@M${*t?(iKFuq1GOM8;1(_PU9#6#*H^9o4p z0d^_760~I2P;JTH_#^bKx-wlBYSdhDv+yJSH2%N16gP=o5^njXdH~xxhUzS&r zy$0*9I4zMoi2`^{R8=mg<|kK6!^QvL4I}G>K0-(FtW-=MtUN)x5o0I->qbw(b?^}! zg!PZbR3UO7UJlDs@26|a!>#D~o$t#p)r%+!ahw#20A z-_#;`4t_JSsQ8EYmsmEIKCms_bk}V}cKZ+64DJOl1xdrBdAz&$U3-%QipejMW ze*ijE>70@hwV^J5iw}=ah&LAm$XC$m639C&KY4?i4<)%3`~&%=25{Ye>LA&QK(MG< zD19XPmt+^d#JTv4SZ=JgkP@ZjtMntJI36Y(R99v?08V^FcdP7hau0mp59J{i4yoyq?9sH zwo9xyIDRpP#A?U-#v{VC#FSJ~^)0I4eJK`JXD)*!pftG1G-aC6MruBhhi+4UrlurI zOZ9}GF@0=SRE`dc&lL^HRO+R=4q`(KO@Xtp^11+47!EV_nUQoist%#W{!$O5>L-7Q z58~ZpqoThfHKTYuS9p`SoBE;l#RQ@z4F}%B9Ghpyfkt36bDRD^Z6zvV{na(8(}{ZG z(6~S9ggB~FbZP9f@H~O00a6SXNDUJQZy`3{3Hh^XkmuM($Dy|5pas=>secl(V1vG& zjvkNnik^zy68K~yH5U1T52OY$(0_+ft`KBz2=s~m5;##Sg$Eb-N757JCr}=$#Cl1rP%T4 z!052(&FJsgHKAmpcS=$V;<@B^dNe4--i8=`7~2~(g1ONHcq(KR7FVaHPbU8-)e&-H zWb9V7R%~JHOMH*mAh|L90TJ+m)E*iK8$mAk4fk*y(}qsMvw6eu^QfR+PNT9U4VB;e=36l*NS9T=u5&A@#BIL~-gF)s&tO`*E(*9ch{BPQ8KWtmhFy3_*V>*HfpH zzo6yop%-l{9uOBvs}h&w^XY2HVC+7gO*|s=QwF*nJ(ZqAPo%@tP|87eAg;j^zulA) zDKa@uDkDx8mJ9C$pEy)Hl&B_~(@oW>s1+|p6eX)r1L$Yachq1m!9Jq9)P8stW&ySk z*{t+TO-v4ynu|4sI>H=5EAABcNU6jbxrH(dIfVU7+#t<#SEew`lK%#KVZQd9IsiMc z%fneEr<5V7Ny!S*cA>P5wnIdz&^kI)Nk@S@euEcDTqg*(lg**6XJKFy7*blk)|g`ClAR> z(jCf75Jya2D6Pz4S1Kp&~hZ@=?aaDXJ91=|8MR9>t zJmF7Nk~gG_t836G_KLu%BD4Rs9hbYluQ*#HkWiTK81v% z;s9wxqH^+%yd~WP*@~{g?-LZ2k1hx+G?SST%nDk8TKbW!M6Q6RpiUzeb$5D@tb_O> zCOi?~{dQ7FI-TIeuvc zd1<1EM2a?XoR}?^mPSk65?RT^sh(;j^dlzWe~~4rD)dD<4ZHH1(_U&lb&-5SEX7f* zI(Lpynl)h3FNl_-p!N%y3mQj@8NR<>}j0 zJ}N-YBUcd%a0HW(YwBL5So)28CgGB7QY-1c)HiWH(J|RuK9;Jf0Hhzf3A5wH$q!^N z>LGQO+Cp`uT2Vd85~PH?u+L~7@=<-I$f@PBISCT$r5_TJ_%~57=}dZMklw0%Qs*Ok z(TP|SoP%c;MEE7m$Wdf1=wFT!hlt;JOZ*CU2d$0NRTrdB$?KDjgpjZ&tny%)NL^3$ zNL!U7N!JztzXcG_*g4<5qYUXg=N)gYH2( zAQRNLN+;!BdTV-r`f_@A`da!0wR{JhMiv65C=zLe5xPLoT!EfhhE6qZ(K8+dRWL$tfw0Vs6rzuP=dMGj8!;` z6`FA|1|tTs=nV&a+{fiiW+HQ$!%7~NK5!DY$u~l7)8!Lk+*7?fuoRK%;FjvV!+U(o ztGvkbEa4%Z;cgybHN(&!laYvgY>;cIREC4dz$`>)2R5;aq4>eEnrSvxBUODn5elG} zxB-}|r<~}jj0%vZO6Osr?gS{g_Bwy0{(YNVJ1fCx)gP$)<$TSDY*xN~ltC9XG6WM5 zk0gv!kKvkYpk{QUoA}$H}I>Zerm`BY`Rp3BB`%+Xkj zbmcK0V?+kw3GcI99q-WD%L*lMnHTtg&&0*a*^Tw^U<-@;mF~abIh8gEytSx_ZRNe5sYL)o+_A108_~QBDq> z+oFv!57q#hv~E6rmQw@2@GF1#e{L41H$3tW3+PXD4Z}Z^;eY*o?Z5HQX~tBel|wF& zPn-1GX-|73FG~&qZaE>}mPhuAtc)dTInE4ER_0$4e)8O%j;}tp222H7z%`oB<;>1> zw?roF^HjyEE>l)ydplr=9TNPlqI#qfjB#tyd}p|_b4e-R%B;CV5lA9p6~1X zMvt4aA~X8~!|afa-K(B&QXi(QNa_G!xE*q!{@DI2(SRu{5)uWBuxr02vJUy9;Fog# z=crqtrF7Xbo`BSvw^}t*R;Ji1#&-SpHx!+5wbFi)tfiHdnY%1+QEtm!Hol>D@1X5~ aDJ$~&l)20NNT9!fFoYpUImL|CD&iLrOZf!= delta 55194 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 L?y}99?`Qu4Bh6F< diff --git a/test/integration/scratch-tests/stencil-touching-circle.sb2 b/test/integration/scratch-tests/stencil-touching-circle.sb2 deleted file mode 100644 index b6e75c1aa902d08a25d325d63ecbe263087c2ffc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8332 zcmeHM30M=?79Q3{1VKTR?PUyNk!3QI4H6R(1Qbx#f)!;6AwXCXNFrOMs4Pm^1S)Fl zQbYwsEl2^23b;NNi(A=56c9uyNCBZ*m3Be`D4+WLzW4fluN89daJPTXx#!+<=G=1~ z?PO#X006)M+Y?vXJ2fp!8j=Bky4e7rh_;6Ed4X(}5DFCVxZQ58+*VVSnDB~i?Jl!@ zJu=Jl95|;#QkS$?sRqwG^W{QY-3=#=6x8|`Z|J(eySyb0zoJZTlpTU8tiR^y?^mBP z@+x4(u9wkrg2SK2dur{$F-pCUs9QO&4}SS70Dko3i!$e3B`(V8^~Tli-UlK}Ry|sw z7H{5p^_GK<#*(*9-7tAl~RU@0?8_t^H z`_JD8>Ws`ceY2aG?~&+v$v3+@sr&S)Cr90E_iL!dEMV>5b@cJ2J;f|%uLnrX9wzd8 z3gTy1U}#Z{BMN=i3Xi9hFN>lT@HRhCN}WPmkZYIEQpKHt9kXR z^u^Ut!iBig!L7T-vpBbnN9Wx!{x_YCBwYC%A3_`^@ls!{Ie~xv(gQ&H^^l4W?W9?+K^q6>5CEw zhp9=`o3~O@7ZmAz)^MQNl3AklW1ei<0v)5R&x+<@+`KB?ao_-EWuVyRWwSm)ClzX;s(@My>ei`4#x}ZG3x)2+PO>Rpt8hep? z?T-;_?!AQ5WZQ!6Pw_vy)}=!p2bEjP(xYW7-5;)P3TT(#H@vgt=);nS={{LH9-rkq zUe8v&cLB4TutIRW23kbf-rd zBzaQe=`~V-AOme%C`z!mC{=BdLK7e(FG}K$kGW4Ql();}@81OcyD{tB6fP6*Xoi608tiMLnqTn^{3BP@8444g3nqKQaE6Ap|F z3FZnIxB#Irl!nJgL_|OlM2N@t#}i-}#-lHn4538^bGSio8;DS;RQz}^Zn**o(ia&U zgI1BDJid_a3;INXE-XG%$O-_BK?xCoxB&{`2qCubCOl|tJPr(H3IjlnF9T;|2}1-j zg+Qeu6e0m3nNkQuG7j|P1P3#4x-d+%wzkHB0wJFl#Ae{QJT4mtqOi3ffk=g@CS(wy zkRX^0gDXJ-i3AZT)X5eC$rK`@JqU#inG#7Lfs8-|R1^rs6f!|fL>`Z zhS541qN4v16EZ|LMP93mX^9Y$5vF2VlW#B;)0(6~71I)NCE;J79P>Cd%N;IXQ%LY>@WK?6t zY9QYA6FQ)4ZH=lcJfRfE5)(j}&pH)1>@D^q~m9QTh9H6$h%p58{|LCY8vE21Th7fDt!o*aVdTVwhs?r8UE>Nu2?u@ zBd32N{(gIP#zxNA$anfRFhCAC>TkE3@>&)G({6d7F3fdus{^lA2 z0L~3P69X!MFH^{rMaMJ%GBW2s;VTWychRBie!I96EKnE7yAFEY@xGi|%sG~s-(9ro zih0MdbpMi@t8AGuJl#+QX1!&vj=`{UO<>-u487DRd#ELk+By~Y(=5G1!%LzL1vFdv zFR<+jE{V>(w>2m+>|k2;qL-a;jK}?`u2_?>V{1#bkM%g5Ny(N;;$%3S8fn?62+$q9 z26ziNZuSa`!-m#h@y{*Iiro9`bike5S!tA@bxZvYd7ZN!!B!8+)Q+62KZGqHTpsML zQY)b9I}N&#Z0rqXWQ|%Y%KP%?9J_fgrR|(N9ok~2w*FIR59$e3?cT5}Cr>WTD=*f% zQ8;?!U(sgOPPI-!W--{F=eHZTR$xnAD^4_=8!=e8jW}W+zrqNwsJd?GU_-OG7&9#s1Ok zr)?um&#`}`$?nE1Q1}YtD$5*mw3Cun0N#Clj&7gV{$9UKpF+OQXmnhu$+T2qi-ZHb~e+R2H& Q=72o