diff --git a/Pixels Composer.yyp b/Pixels Composer.yyp index 593005c88..2075d4b7f 100644 --- a/Pixels Composer.yyp +++ b/Pixels Composer.yyp @@ -9,7 +9,7 @@ {"id":{"name":"sh_perlin","path":"shaders/sh_perlin/sh_perlin.yy",},"order":1,}, {"id":{"name":"sh_normal_light","path":"shaders/sh_normal_light/sh_normal_light.yy",},"order":0,}, {"id":{"name":"sh_scale3x","path":"shaders/sh_scale3x/sh_scale3x.yy",},"order":33,}, - {"id":{"name":"surface_functions","path":"scripts/surface_functions/surface_functions.yy",},"order":2,}, + {"id":{"name":"surface_functions","path":"scripts/surface_functions/surface_functions.yy",},"order":5,}, {"id":{"name":"s_node_normal","path":"sprites/s_node_normal/s_node_normal.yy",},"order":28,}, {"id":{"name":"buffer_surface","path":"scripts/buffer_surface/buffer_surface.yy",},"order":3,}, {"id":{"name":"node_pixel_sort","path":"scripts/node_pixel_sort/node_pixel_sort.yy",},"order":46,}, @@ -145,7 +145,7 @@ {"id":{"name":"s_node_gradient_4points","path":"sprites/s_node_gradient_4points/s_node_gradient_4points.yy",},"order":2,}, {"id":{"name":"s_node_gradient_out","path":"sprites/s_node_gradient_out/s_node_gradient_out.yy",},"order":8,}, {"id":{"name":"s_node_vec3","path":"sprites/s_node_vec3/s_node_vec3.yy",},"order":7,}, - {"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":3,}, + {"id":{"name":"surface_valid","path":"scripts/surface_valid/surface_valid.yy",},"order":6,}, {"id":{"name":"sh_blur_radial","path":"shaders/sh_blur_radial/sh_blur_radial.yy",},"order":17,}, {"id":{"name":"node_VFX_renderer","path":"scripts/node_VFX_renderer/node_VFX_renderer.yy",},"order":5,}, {"id":{"name":"s_node_invert","path":"sprites/s_node_invert/s_node_invert.yy",},"order":25,}, @@ -175,6 +175,7 @@ {"id":{"name":"node_mirror","path":"scripts/node_mirror/node_mirror.yy",},"order":3,}, {"id":{"name":"node_corner","path":"scripts/node_corner/node_corner.yy",},"order":35,}, {"id":{"name":"vertex_function","path":"scripts/vertex_function/vertex_function.yy",},"order":0,}, + {"id":{"name":"string_function","path":"scripts/string_function/string_function.yy",},"order":8,}, {"id":{"name":"o_dialog_palette","path":"objects/o_dialog_palette/o_dialog_palette.yy",},"order":2,}, {"id":{"name":"_f_p0","path":"fonts/_f_p0/_f_p0.yy",},"order":0,}, {"id":{"name":"node_condition","path":"scripts/node_condition/node_condition.yy",},"order":0,}, @@ -946,12 +947,13 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_single_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_node_junctions_array_hover.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphic x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/node",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_vfx.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Assets.zip","CopyToMask":-1,"filePath":"datafiles/data",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"anchor_arrow.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/preview",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Collections.zip","CopyToMask":-1,"filePath":"datafiles/data",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"graphics x2.ai","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"s_noti_icon_tick.png","CopyToMask":-1,"filePath":"datafiles/data/themes/default/graphics/icon",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"default.zip","CopyToMask":-1,"filePath":"datafiles/data/themes",}, ], "MetaData": { diff --git a/datafiles/data/Collections.zip b/datafiles/data/Collections.zip index 5e12782a6..529b913ab 100644 Binary files a/datafiles/data/Collections.zip and b/datafiles/data/Collections.zip differ diff --git a/datafiles/data/themes/default.zip b/datafiles/data/themes/default.zip index 4df163da6..c2575d6bd 100644 Binary files a/datafiles/data/themes/default.zip and b/datafiles/data/themes/default.zip differ diff --git a/datafiles/data/themes/default/graphics/graphics.json b/datafiles/data/themes/default/graphics/graphics.json index da96312ed..53ef83918 100644 --- a/datafiles/data/themes/default/graphics/graphics.json +++ b/datafiles/data/themes/default/graphics/graphics.json @@ -666,6 +666,13 @@ "bottom": 0 } }, + "noti_icon_tick": { + "path": "./icon/s_noti_icon_tick.png", + "subimages": 1, + "xorigin": 20, + "yorigin": 20, + "slice": null + }, "noti_icon_error": { "path": "./icon/s_noti_icon_error_strip2.png", "subimages": 2, diff --git a/datafiles/data/themes/default/graphics/icon/graphics x2.ai b/datafiles/data/themes/default/graphics/icon/graphics x2.ai index 427370cd8..3a27d7a13 100644 --- a/datafiles/data/themes/default/graphics/icon/graphics x2.ai +++ b/datafiles/data/themes/default/graphics/icon/graphics x2.ai @@ -1,7 +1,7 @@ %PDF-1.6 % -1 0 obj <>/OCGs[33 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream +1 0 obj <>/OCGs[33 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - + Adobe Illustrator 27.0 (Windows) 2022-11-26T09:16:08+07:00 - 2022-12-13T14:24:52+07:00 - 2022-12-13T14:24:52+07:00 + 2022-12-21T08:08:28+07:00 + 2022-12-21T08:08:28+07:00 256 72 JPEG - /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgASAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqhr1Zz6ZjUyI CfUjVuJII2326ZKKqlosy26CY1kA+LevfbfvtgPNUn1C01XUdV+rkm306CjGQAgvVQdiGG9SQNqD r4ZhZYTyTrlEOywZMWLFxfVkP2fj7eXenuZjrXYq7FXYq7FXYq7FXYq7FXYq7FXYqg7y4Mc3EziB eHJSQDyNTtvkohUTCzNCjNszKCw9yMBVBrdOZwvrgsZWQ29BUKGIB8egrkq2VHmtDTr2yCpLpMGq JqM7XEiGPcSUjZeRO60Jkf8AVg9fUxPuH7S3TOOtoyB85A/70J1haXYq7FXYqsmiWaGSJiwWRSjF SVYBhTZhuD7jFVDS9NttMsIbC15/V4AVjEjtIwBJNOTkk0rthJtVmm6LpWmG5NhbJbm8lM9zwr8U jdTv0+Q2xJtVOFb3/EF0Wkc2YtofTiIIQSF5ORBpQmiiu+BXktxd+bv+VkBhc3H+8zqLUB+Hr+uv E9OH2NuNentmiOSe/wDqnH+B7nrI4cVDl4Xh/b333/a9g1G+a0VCI+fM060pT6D1zfxjbya2fUJY pFQW5bmAU+ICpPYfLCIqjATxBI4mlSPDIK2CCKjcYq6orSu47Yq0zKoJYgAdSdhirgymtCDTY0xV vFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq04JUgHiSCA3gfHFUp03S763vJJZZaoWJNCTzBRRvX 5YBzl5n9AbckgYxHcP0lN8LU7FXYq7FXYq7FXYqklt5hmm8wzaSbbjFFzpdgsUYqqNwHwgcxz+IV 2w0ryqXz550+oXPnBdUULbzvEvlcQQEtClyIeXMt6/D4qM9OXPtxyD3seydLxjS8HOIPi8UufDfd w35cuHze4ZJ4JB3OntPMJfXZONOAAB408DkhKlb1AUgj5ktGHX1j4oOtadsY81UbZrYXaCyasbBj Mq1Kjb4djsN8Jut0Kv1GIRAo3C5AP74GjFj/ADeO/jjxJRTIskfCQcgwowOQVQsbIWiyIpqjNyXx G3Q5KUrVEP8AYb5HIqsgdPRj+IfZHf2wlVt2JDAfT+3ySlKn9oeGI5qrYFdirsVdiqikshuGiYAA Rq+3ixYEV+jDWyq2BXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUui16xm1eTSoayXESlpWRo2V adeQDcxuafZ64aV5pNfeXTeS+cZfKdqqx3JC3khkEsjBwPVVPTMDSV3ryrUHfJcAdgO1tUMXhDJL w+VX07u+vLk9EuteSxto7y9khitpiQis3F/HauzUUEnIzlGPM04uDT5MpqETIptHIkkayRsHRwGR lNQQRUEEYGogg0ea7FDsVdirsVWySRxrykYKvSp98QFQ8U12bxo3UCPiWFAdhWi1bxO+2SIFKieC fyj7sireKuxV2KuxV2KqcttBMQZEDEbA4QSFXoiIgRBRR0GBW8VdirsVdirsVdirsVdirsVdiqDm 1D075Lb0yedKtXx9skI7WqMyKuxV2KrRHGGLBQGPVgNzirHbT8u/KVuqA2XrvG/qc5nd6ty5VK1C H/gclxlVTXfJ1rq0cK/Wprd7f1RCyEEKs8ZjkUAjureOU5sfiV0dhoO0JaYmgJCVbH+ibCcafYwW Fhb2MFfRtY0hj5GrcUUKKnx2yUY8IADiZ8xyzlOXORJ+aIyTU7FXYq7FVK5txPGFLFCpDKy0qCPn hBpV0UaxRLGtSFFASak/TiSqjBqEUzqqK1GqAxpSoFSOtcJjSohm4qWoTQVoOpyKtRycwSUZCDSj dfwrhIVdgVTlmWMqtCztXii9TTqd6YQFaS4DOEZHjZq8eQFDT5E40qrgV2KuxV2KuxV2KuxV2Kux V2KuxV2KuoK17+OKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuIqKeOKoaCwihkV1ZiyjjvTdaUA2A6 ZIytUQy8lK1IrtUbHIq1HHwBHJmrvVjU4SVXYFQ9wWS4hm4syKrq3EFiC3Gmw3/ZyQ5KskZrllES uhUMebqyUJUqKVp3PbHkrtItrm10mytrqT1bqCCKOeWpblIiBWbk25qR1OAqgvL+l6zYSX7alqRv 1uJzJbKVp6Sb/D/YNhiSFTjArsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVUrmWSNFMYDOWoEOxbYkge9BhAVQhuJXliZZBJFKWBXhxKcRXfc7g7YSFRmRV2KuxV2KuxV2 KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KqVxA0hRlfg8ZJU0 qNwR0+nCCq2K1Ecnq8yXYUk6AMexIHcYkqr4FdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdir/AP/Z + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgASAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqhr1Zz6ZjUyI CfUjVuJII2326ZKKqlosy26CY1kA+LevfbfvtgPNUn1C01XUdV+rkm306CjGQAgvVQdiGG9SQNqD r4ZhZYTyTrlEOywZMWLFxfVkP2fj7eXenuZjrXYq7FXYq7FXYq7FXYq7FXYq7FXYqg7y4Mc3EziB eHJSQDyNTtvkohUTCzNCjNszKCw9yMBVBrdOZwvrgsZWQ29BUKGIB8egrkq2VHmtDTr2yCpLpMGq JqM7XEiGPcSUjZeRO60Jkf8AVg9fUxPuH7S3TOOtoyB85A/70J1haXYq7FXYqsmiWaGSJiwWRSjF SVYBhTZhuD7jFVDS9NttMsIbC15/V4AVjEjtIwBJNOTkk0rthJtVmm6LpWmG5NhbJbm8lM9zwr8U jdTv0+Q2xJtVOFb3/EF0Wkc2YtofTiIIQSF5ORBpQmiiu+BXktxd+bv+VkBhc3H+8zqLUB+Hr+uv E9OH2NuNentmiOSe/wDqnH+B7nrI4cVDl4Xh/b333/a9g1G+a0VCI+fM060pT6D1zfxjbya2fUJY pFQW5bmAU+ICpPYfLCIqjATxBI4mlSPDIK2CCKjcYq6orSu47Yq0zKoJYgAdSdhirgymtCDTY0xV vFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq04JUgHiSCA3gfHFUp03S763vJJZZaoWJNCTzBRRvX 5YBzl5n9AbckgYxHcP0lN8LU7FXYq7FXYqsuJ4reF5pTxijHJ2oTQD2FTkZzEQSeQRKQAsoKz1Ga +ui1so/R0dVadgayv/xX/kr3OY+LOckvT/djr3nyaoZDI7fShLbzDNN5hm0k23GKLnS7BYoxVUbg PhA5jn8QrtmXTc8ql8+edPqFz5wXVFC287xL5XEEBLQpciHlzLevw+KjPTlz7ccg97HsnS8Y0vBz iD4vFLnw33cN+XLh83uGSeCQdzp7TzCX12TjTgAAeNPA5ISpW9QFII+ZLRh19Y+KDrWnbGPNVG2a 2F2gsmrGwYzKtSo2+HY7DfCbrdCr9RiEQKNwuQD++BoxY/zeO/jjxJRTIskfCQcgwowOQVQsbIWi yIpqjNyXxG3Q5KUrVEP9hvkciqyB09GP4h9kd/bCVW3YkMB9P7fJKUqf2h4YjmqtgV2KuxV2KqKS yG4aJgABGr7eLFgRX6MNbKrYFdirsVdirsVdirsVdirsVdirsVdirsVcQCKHpirSqqqFUBVHQDYD ABSpfFr1jNq8mlQ1kuIlLSsjRsq068gG5jc0+z1yVK80mvvLpvJfOMvlO1VY7khbyQyCWRg4Hqqn pmBpK715VqDvkuAOwHa2qGLwhkl4fKr6d3fXlyeiXWvJY20d5eyQxW0xIRWbi/jtXZqKCTkZyjHm acXBp8mU1CJkU2jkSSNZI2Do4DIymoIIqCCMDUQQaPNdih2KuxV2KrZJI415SMFXpU++ICoeKa7N 40bqBHxLCgOwrRat4nfbJEClRPBP5R92RVvFXYq7FXYq7FVOW2gmIMiBiNgcIJCr0REQIgoo6DAr eKuxV2KuxV2KuxV2KuxV2KuxVBzah6d8lt6ZPOlWr4+2SEdrVGZFXYq7FVojjDFgoDHqwG5xVjtp +XflK3VAbL13jf1Oczu9W5cqlahD/wADkuMqqa75OtdWjhX61Nbvb+qIWQghVnjMcigEd1bxynNj 8SujsNB2hLTE0BISrY/0TYTjT7GCwsLexgr6NrGkMfI1biihRU+O2SjHhAAcTPmOWcpy5yJPzRGS anYq7FXYqpXNuJ4wpYoVIZWWlQR88INKuijWKJY1qQooCTUn6cSVUYNQimdVRWo1QGNKVAqR1rhM aVEM3FS1CaCtB1ORVqOTmCSjIQaUbr+FcJCrsCqcsyxlVoWdq8UXqadTvTCArSXAZwjI8bNXjyAo afInGlVcCuxV2KuxV2KuxV2KuxV2KuxV2KuxV1BWvfxxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxVx FRTxxVDQWEUMiurMWUcd6brSgGwHTJGVqiGXkpWpFdqjY5FWo4+AI5M1d6sanCSq7AqHuCyXEM3F mRVdW4gsQW402G/7OSHJVkjNcsoiV0KhjzdWShKlRStO57Y8ldpFtc2uk2VtdSerdQQRRzy1LcpE QKzcm3NSOpwFUF5f0vWbCS/bUtSN+txOZLZStPSTf4f7BsMSQqcYFdirsVdirsVdirsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdiqlcyyRopjAZy1Ah2LbEkD3oMICqENxK8sTLIJIpSwK8 OJTiK77ncHbCQqMyKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2 KuxV2KuxV2KuxVSuIGkKMr8HjJKmlRuCOn04QVWxWojk9XmS7CknQBj2JA7jElVfArsVdirsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVf/9k= default uuid:65E6390686CF11DBA6E2D887CEACB407 xmp.did:7647d1b0-ea83-ca49-b85e-bbc9513ca4bb - uuid:1ca306bc-295f-4df3-bd62-7da15438e7f4 + uuid:9eac1473-499b-4df1-b452-3db69e690d51 uuid:673f9e21-4d80-48ad-ba53-812ef9241a78 xmp.did:efa7ff44-b17d-d449-8cbc-4cf525bcc8d1 @@ -70,8 +70,8 @@ True False - 16.000000 - 16.000000 + 20.000000 + 20.000000 Pixels @@ -295,23 +295,23 @@ -endstream endobj 3 0 obj <> endobj 35 0 obj <> endobj 37 0 obj <> endobj 5 0 obj <>>>/Thumb 946 0 R/TrimBox[0.0 0.0 16.0 16.0]/Type/Page/PieceInfo<>>> endobj 943 0 obj <>stream -H10 ݧjqvR  Ƃ–* N[t-Z ZYŁzloZSP7E6H(6^\SftHfsF33Ü Y -endstream endobj 944 0 obj <> endobj 946 0 obj <>stream +endstream endobj 3 0 obj <> endobj 35 0 obj <> endobj 37 0 obj <> endobj 5 0 obj <>>>/Thumb 965 0 R/TrimBox[0.0 0.0 20.0 20.0]/Type/Page/PieceInfo<>>> endobj 962 0 obj <>stream +H10 ݧjqvR  Ƃ",TowJ[t-Z ZYŁzloZSP7E6H(6^\SftHfsF33Ü Y +endstream endobj 963 0 obj <> endobj 965 0 obj <>stream 8;Xp,rVCYe!!<3,C'.`~> -endstream endobj 947 0 obj <> endobj 949 0 obj <> endobj 950 0 obj <>stream +endstream endobj 966 0 obj <> endobj 968 0 obj <> endobj 969 0 obj <>stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 24.0 -%%AI8_CreatorVersion: 27.0.1 +%%AI8_CreatorVersion: 27.1.1 %%For: (Makham) () %%Title: (graphics x2.ai) -%%CreationDate: 12/13/2022 2:24 PM +%%CreationDate: 12/21/2022 8:08 AM %%Canvassize: 16383 %%BoundingBox: -23 -168 574 0 %%HiResBoundingBox: -22.5 -168 574 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 14.0 -%AI12_BuildNumber: 620 +%AI12_BuildNumber: 196 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) @@ -334,9 +334,9 @@ endstream endobj 947 0 obj <>stream -%AI24_ZStandard_Data(/X$ ,m -m/a!DfI+4 Uo:r 7ۃR-<NHB3 YM=Fv̼ Ѩdrg"-I4jy3T;Q́UWKBE\'Gɑ53#څJi7ӑhL(C$AU[kР:zГl 춛 -6do0-F&kS53*҈J^綻UZ-Dڄ#u)Åu/fIY#'gJ>^%hyc\Kg| Vzs C3ޫ$YwRɧ7>ʋ4mɫ=úCIݠw,)w\RɜqP[{(i'c98s85S#3nN/Q@p`! D p -<tԈ"ΆE󣡟-C:,s1g>,2:V -Gz)eMQo6f#B*V=%tdjs7lgrG2z-TKɣD *IFZtD8l,cjd9le=]IL5o9g[D%Umk.ÖX˟tjԒ7(w(Kib7zQ)&#l\ -$o,!qqu4E-RZ'1+=KָLhU5>Y,4a;)gDc'+Qz5c," ^>,uc,w)@t=MuW/wg$Q^;4I(>-5q *M,gGVOze.mАgJA hZlGb6n_򳩓 2Lj?GyH$=l ``81eyucsRI1 <&`hD 2 A (Tp!B₅L@ &`h`H1p p`"$DĸNJp^U֩>bFL]Q -HL)fwCog>¤9ՌB .pP<@@̰iJ'&O&qZ'&pP<@ CN= 4+#h`Q![ky=aX8,- WTT|H,L`?!ly7h p`hx>8ILb CM Cw24aQL=p348Т -( O8(Cdh`h2|A1Cb1u -04 锪U^Xl&*lA?x./q{AtZ*#2#a24 ppV/p.rQ`hxX04( [,hA΃bPUNTOKKIXO&;H5SLeFҦf4sGi.tuso?i*mIU{ka}YK5·Gd߽fGFFCkOf|(ϡ.PtJ)hAAS-*+ân -R`r%&p_ -34<oP(p`zN'~8ch(?Yχׯ'A K\:FAgh(O,I4LX.q0px%_) -dV͹Z#L[27xe,3l2c07jiC*&[Yit^*p@DDАw+Hj -BxP, -CAP -S -pt8;ʡhr CC-l-pĢ -yP8)܇YG&mˌ& ٹHwY o(yйZjuUx2#«M&Qb`ЇyX,""H<,8wO(rX<@8"JƑGX޸GQ7*32lTX5 ^wS̓x˚X<@Tch|Axi14P갲PbQPQccZZ-a -laa6k2C ?~ - nHXhh <" pS\~xwvtN` s0!hqC/@Q  804LccǦ` 04`0h`h#A PP -(D 0Z ,.p@ D!Ѐ *p@L B$4 (D1 ,$>stream +%AI24_ZStandard_Data(/X ,m +m/a!DfI+4 Uo:q ́x3=(/ERjO$4 cd M&{&;ђD7CS~hYU{$T4uB@*}dHQ?z!K:;]Оv#8iͤR<4 OT #=ɶ[щK1nIY}n2^P0n! D ptl8P@LPL:jDBfgC֢z! k ̹K|Fl+#=dN&7ku!:U9h6ճy#=CuQ"GTu-:A"6G5|Ğ$7G3-Qʪ5^aK,O:5jjhMqw%4?TNÑe6QU7?zM8ݸ:gyZ)Hr%kuw&W4ʪkzѰ3׍a[ɕ(Q] zZ/_H˺R ƱoYuʻiYZ:Ҟ}妺3w^ $W݈eFVV{aha#'2E6hU3Ѡm4v6QM1/[kzK~D5wٺmP~4n-9X̛\4֞>eF,I#TX?Hʆ]dUq(4cI/I%OHWYiE:QdҰ=lNzܣe<$SJH[002Ó7sDʘNH  x0C$  x  *8`  X@ ,$` + hx0CC ـt`t|`X 00İ04t!! $͈lwRʕN3ug8R@bL5z0=S&Mͩf4Au~??e~fNCxTɪI3xɪ z'Ѐfh BOF1}mTmHZ#.k^OpQJb`UcsGhEIa.|zApX04$ Z  pX$%L΃CC +nBij24|p 6ehâ dIiyHlj{!`ghpE P,.pP,C -|@e b&{b, ah(C)1)UV׽^Lԡ3T؂]^p TF 5eFdh83A C!b^ᖵ1\b`hP$X04ЂB8 %)!!f%3"M&v +j63#ՙVˌ*ѥMh*]~Tmےkoe2#+H{X֞Q%C]*9 RЂZTUVNEP'.a JL +fhx@T$ +\! " ɪ(9<$ ghHdh8[14P'P04$w[u`hH33//VIY\ AqsH?xaez0Kբ!qU 14!lE "`hpH$x*A jb8C;$u:C$D>"鐉Ld&&iY@Iٜ|*xD<4!zs ;8` CCVM= ^l!F1 (<,8p(C&`hà Lx <,>˫wIf9 +[ZXpx0D!H, 8ԁpwH888(0@E*H( +BP̢ ZCC.H,bXCăÃa0 0CB$! +Ę,A24C%SCf8mfh(` S%, fVVZꕅu岪Z%(AHG&DUTQ&fWkJm0q|>987M M `haИPAG@@ .P @aX` "\0!B "&T$@HhP0!b,$.XHxPF6 (tPa *D 0 !*T +(0J9Lj0 fNqA @ +60BB\ +$d Ht +DX@. "`PqA "&! h\ *`!„$0c6 B DAB"8H2 &HÒ.@(@d `T=. hA m(eUNQ +FG1`WSuNBP00=8PpgD1NS.epXfH2P`gs ߡd aU]}sin/ɌtֲhNf4ӆty 6Oڕ̸Ù2L +HA0*.3:2r < Bi&J 4ḧ́? hWY_1{eҋҮ]HBvEz:6aQ;dž B8@0W9h-&N `*HA h8 @p .D@ h8.*X :x$tDXaV@bD@0DPa„.P Hp`„ 8QB.PA $$`zՂQd`2  -Tp`ʺ "@@0 "\PAB `p!@.H04T@@P0.Pb *#H -$p`!L0b4**\`L1.PL0FʂA‚ D&A<Ѐ8 .PPE,=1ش1ci"P+WuqK0o1.cu) -d\U= $K"Z:)^DS'SLBK'2HRg43" U 3S+.Wi[BXVjERnP~8"o^ļzRTSsfҽN:Eh٤5TWM^4ՙM$? #k2EumќdÊٓV43$5>Ռ;*ߠҏJ9E1ЂV>R9iQHG!,9>m,>h -U&; Y݊2EN]Z2qJEcjJh`;e:7M(VU2H9{yg$<|^\;tfzyU;!lNCBn1YEk-!]VD5>!M--2Vy+hyED5 L󋷔}+1@yjcnDO#GBlUXG"Dé2eQm5)32*o9t1=WOLdItuUQEsYXF&)L3}^%feM"Q -3ISǤCL22۴Jm,!{,ʹ_K4!&VD,#TFIX"}:e)gvĖѠwXjwG~'Lc$͑\ΞU$TDmmX]))J+#Dk%GTՊ+'o"<4-TԎɐ6;5K^2'84Yx#lZ}>%I4HvL)MړҤuT9BiLRSkYfti.̛ҮuH>:/w+ov`Ɏ$W|W kΞiw=YuJZޓXVe0VqS;#y'kV0R~ExJވFٴhKrNmLDO]o]Uzt!f?WE>Ԓy\;}a7c輜;qLVi #4鋆Hu>Y)?h)Y`K?PYN.Sf #ɩin?X:,#6H̦j,\9vwv&=FMً辳IK%H7eOt6̿cʿŲՖ?g}\v|2V*Kج[ĮˊkJ]_bk4{F~+H_״~ϖzll+*-[l_{;K 6]ts>>|Ļh/Uڵ#tUDީ7ϫ'6Fifnd?sƺ]]})5M^G娨FjW%Q\~Z^*;ШobτIJݘ(Pxh/ -tӆLǑZ"lJ46ɡAXSgyt; :WiAe3{fwYg{lNÎ7S:0i2W$s*1i(' ե#(:N"O\XDxʉ -XBK -S?Z_.wGwwso*֬e~R&螤C3{=[}MhhamF̑Cg'bYt)[UJmc#"׌d6DV eWJVEc'1cUc>;X+"av1J#Yg5{U:D5<5ɌWzjXampHljz򘌙"Z&%B),Z(EDfTfSf<ݶ4 +Tp`ʺ "@@H r D  +$T < P0.0 +L0CC +4@p  &RAP  , `Q(P 8`q + D`1RD@ L  H"*4 @  @a/%aOzL*6|%tFH&NJU]['XA&F*WqOxE:ɒN ++6?Ӱ҉AL3$̮BU)CGT-FʼU;ՀZOēeDiPF%QM=vrS oLhx-{\I"͂vMt_R `iʑ˔&U8;p8&P|Q^eKlaǺ.ooI-Y˚fzZi>S4\{k[Zx>&RcDK)7(M?N7F/b{=)){WM93޿b'HD"PDlҚR+K^CF/&za5hNeXau~TPUjFoPhG%"jshA+Y4~ڨb$aϐndyF6z{ULtF*Tf坆,n[B"Jt.}n8FKY5mJ4\2kZLݛdr&]Tw*3JkMe>j~qcKK6h!!7v댘"ҵՐS++ +EټGΕFhQ<17ȧRtT6*#c(붚Qa}͜d鞫Rt]$:QJyɢ,,#ٔV&י>/3XhɍWwJEXSH$ĩc҈!Upw^jemZEFi/Wאgeq|c+e"Qvz*O$Ml>Cq23N;bKhP^u,Wd;#IVR&ñyH.Yg**F6,e.cڔlf%ґKZֵ#jE~e~쓷TՎ*jdHtG%/t,jzQ<6GɎ>$eW$;Oh&rIi:!4ENF&TRR}*541uNc)2,j]a~GFĎ^)=3{EgI1KU9sQO,3}: 4eUvYMfi:$kq7QdGD+Q~Ef5Igϴ,S]\-IK,}?w^N+l8ۼ5HF笋D"Q%MRoDYlVl%Z 6&X鷮W*ODeڟū"xTijɼez.坾ʰ1t^Ν8&tϴ膿EC:{ w٬шsxKgSFB;LU{4"e !UDhfvgcwS󢺛}xdrDDY9e9"윙^KKZ%v' },4ot8kSQgЃELgeoM^G]fI6sbN\wi"˹_0m&U]'ʦ!|;bellkv 2mвs]J6f/&w, ݔ=%&ww|#b]u=ڋdob)MW9?e}qhvwd. VZ\/ãLe3J {Cjݱ:fNѡrYWxgS^HUȇթ;+g=3{&JDyG irư>h >VWο,!IBl.EU2I#[ ޑ(g6{*%U}Wg;fK"ƙk7y.v&s_S晬b]sMni$GU4>Wj({Y:iw7 IբA\wy#σwZ5CɳLDJ:R|vYZo3#"M3_ޞd&4{#U7&~z{ %ٔl~=>#r=]VD n”xT6BDrC3!>.l#%}*}7)>L}OݑZ5{/Sj5%j{eQOd)M9oؤslOY$#,ʒk6VE<`5Z}WWؚoF'͞Jf:5߳3J~{#[8?6A\9ߤ9.e')%Kv"]>=wM@)ǩ.exWWzJM&OL*խ,+&VAKLjҸ]VNϒd~xy,Τe˄~Ia/gl|Zk-GWߍvϻSɷW[]clL2_#M!gA:[-XrԲيlMɓ4(3_JNy)XX$K9OeWd"|f|Z罖(D= Q 4w-~jM3}KoybMgWDZLo*od^XeZVݱbVڽlFJ]*'Ii׽$f,hEإt%ws#TD^k,3))v$m +;үMƑ64?2z[ND&-$O| _×srg/yr^"Τ.AŹ?>f?F鷦׳2%Qg9*ik|%4*ǛX3wR裆o7&J7 2 C#ݴ/{2qd{z֫<@, GrhP&YݎC)3tC*ҷ”:V1ŮK]ѝj|ܛʯ5k߳&'ezjFiDF,v|;,s |$X:=q| +F?ukFXL)8eeVH5bo%ѳ^G&9id-VD\۱`iT,Rf2vʱi4Y6ClkT3Eligc#"׌d6DV eWJVEc'1cUc>;X+"av1J#Yg5{U:D5<5ɌWzjXampHljz򘌙"Z&%B),Z(EDfTfSf<ݶ4 )%gѱh3`J>DCVceh6y˿Xb} c||m%Z/qTλug֧k!J_K$;p|IAXHy6۝#lԩBAN1q vģsYbH/5u=gԨІa̘bUc%&}G8m;:GF?gj~& s<NUl:5hGBv,y+(PFs3I͉dj- %3Desy"LMtiE$a95Wk^d˨ bv0scVZVuպޖ {wEb:Xj:΄>xٙpBB6+} Zu Ig2E~9 JWcMaΨW2-4-#UѵهeLDx|o.$hu3G"Rvj{Wh,ׯ➚ 4XUMP֊3¬&98]OBW[$JY#Q:zN4)A4u/\ݿ(X6&/,+bk~ToQOd5hM1*d7#ٜfd[dyM[R4wO2X#»7Ғ,;iu Ѥ54֦%!iaDF\dITvcx':BYޔH2q ˊ~]6cuiزHΌO:dhx322Mt fUr˪#O_̕&řC㠺)rf*s Ѝeuh4lQmn׳TUaجڃ -WI_M.FG=}edROf&f R7=\x$vD1O<")2& =)_*nhGruUB˜_^IϥFhL>x|NӞʺ+Da֔$s:e(3KM\lGuIˑ8XgY# -Mf⛽8(fI&g(K2CVX-M?ܳIZM $gjlۆ$'_>I6M6J -f~(9s|MʄwJ _̪߮iO'#$c;l"1%<\4k %RcTi3V3Bq,2ؙm_i'3q?w2v󤈵*9}גL91]aU OT'§RQ'!6Ǭn lyl.SlBr^JACC,AwĈE%wxu& Qh<đDH(%%z3k4b i(Qr?5$i|"kͭtVTYm{ NS{M_gg6Î*#i!*Ɋ֎\^iaT7-_7jvTSN=O.X(4 +]dr_ Xe78x8X?R,Y2H'R$N  ga~Xݔ݈Ԉ]ae7s$N&MMj܃x›q-VgQMS龩]S^Ss]:[iX&d:$$t5t/kf󪬇.R+u-'Ѝzv:w奏^Ժ)ʅ'b22|g>D2!!M WO퉬z\m _ӧ1+zv͙Nڧf5᧕:J~vR?RgIՈ%Ei9Ri9$^~6͑I|+>M3wvЭUei>G2yl3nɊi6;%5;5YNQ}nt*ߩJf2Uwb~I=jvU^Z/ЮCHjyUUYBEBE$YH&c)T&STB".HYYiQ% (t]rr$:9# dHdʈJL'9kehFprX2F'X'3&,*{Kr%GKݕ\ʕrJ짜jdjYa\,fٜɸ&۵mt&vΕ6ٮIZӄlr -Ќ[LYJ=r#^(G7N9 -Un'c2vF&ex={UrbSI~gRwJVIӅ?{Ba)Jۜ g^6ɱaN]Sf7hP~z~ -=g35#ѱ95YZ!_#KBK Qz301Oco#GwF*)<“]&]}SVh&wJB#E5! tS],&}3쨞FeY9nJ[aSxTڬODʣׇ>jqJL3~(ۺꞪ&cV9>+=ds0r%+;.1szC"[[Tκlf,QZ"OagV累C_ou~:bg߹Hdev7^]H۫ۄu#^h`FxYZ6b&U _MehXWw,W -.Xz)3UI;$¡DhjSW̓Q!>)dwV$ l!IѤIښGaHiH9(k:do1$̼ӾcZN'̓''*$QOYI2,dY] -!zج\}qDXB 2N3gĹnd,DӝZ4j"ЎΆEvACvˌWYUauNw6V)tٝ\%5jÚeFj1s_R||4yG50&={]-θ;yGt4O;Eb[ ӵ]i7 ]yZqoRW"zy3EQ&{NmcUd9f1ɹQy̱{󪨇V43锉|#7hW -tNCiVCU*'zs9\L ,r)gJ$N笕̙ߕnYQpx~>Ix::.[hl9w6*wvhw2VOh7dϔ srh9ʬ٘2!L(Tp… -Р# -,\Fu[@A"<5M;v,`i$o=&D$*W)#EWDtJBN;]lFMS ->e|L<ifB -s`@<ɌzŜ@F@ʼnc"`Py~xʂa'5cLH؍uwlq\ 6 -99@ qOLt`㦅ۼc(bSV a>Omgw2#Y/9԰mN))0ˋYeY{MLFPmdcT]II\Y'nz!jA?lLKCnV8ZHm)٧aq`ǠܦD~MCU+UN>iV~*QǛ+BQsX=Qh~>c] -+5pO0ݷGhWMW#sf{ FYEobALߨ)ac|͙;nkM.W1qzw *⎟8[? 1年-}۱cNPwӮ'+kceRr-1S \8"=i*2/8"ck:FDKlv?έdgDOMAQ2~L#+)q1!A;ʠU{I^_a8f[OWX⠍ǵ熟oyHʇF=q5Ts ;B?&A7T6hH p<[NFY8=z7඀_- Dy'An -ᵲj~e>aTdupuE,~Ϣp^zbM a'Fs cqjf0 #Ÿ g4RA -#ZBi@ un+2 C8| Wq~UT| 9CQ 1lI 0BFݿ n++9A-aYò/vkue `N_LFj*W\GNJW.0d'Dbj2rW#2+8ѐ9=(rOX*''0GCoՐ%' '2r$?KCCkhkB5LȐ0 eش eD\ Xb0cL6#1" 3" qKTKd췽I8,ҴcȋeE%2**pg`ofj+:xbDHx>" LE~LU(&wxCj!SKk2BK5]eUKI!!ixӑ<^%_rjq,1,e5VnS&)?Y>'A)8֞|\k14֜Z?gb̑bY"4;HR(%.УςABZ\XkjI'-}8S};9X)*<,Bv./L㍚~{șy!`>-8~G[4]E>m5t_Q:ԏtfj`$5 J1Ros3YՑ:t6h2qvvBjD:_b!>XI "@! 5K]1f,W/+}#xWc`r.>؍D*%c`5<]`u$QZcF"0QO}{k#͆v1#ol=0Q1<}ɞY CR,6c/WZ7ꃨey[ QOp!<Q{?z)BԮ-탺ąZFվ1rPA$dUA-"֤&GA9 -8Bף/"ȋ#V@G2RG4n5Si ;Y=Z:()a:/jD`WQRZq& jQQt=F'95w#kX רqh\XF=kxG J,K=j!8TfWZlh%Ak')z<}:K4d\X֣hHCW $=knؐTİ g" cŖ[{%^:#{[SH F^xو̓1lRWؗ7 Č]lU</A:y*gKѕ4MQ/d>bK&6߲l͉kjaX&F -0t۵TD񶈓m"W²teǂwEā)evY$@ÙInhDcmWаdw/ǗCw'|Ri?&@gi@os-ߒw#":ŷ[u`I~8#7!ճFc2LUuN{zbՊ\x˓C:,p ,JW d\&:b'Wy~ -NR* -8q_) y 8a6+!i[M L觀'd;jOUf dxȚNmHxxEAlG+8p^clr@_49H> %x -\RJ& {e< -2 (pm\2+niEL\A᣻'^ oO/^-9ph'?+X︁A hhcPV@_w -4`R2U,cj4YğKij*)y_V+| -!c|;Ԫ!jSLGU G#0mM<&T<!؅z95bMNuJ022ϒ^ 7Cſ -VdXD؈{e1xTо%:1ƿЮo+ 6WJ{E쎄~[8fwl od~Ik4v-J#ݟ(y.AV~`cEE#|߀pA7o .XK !4{C}c˷㽄G}kMt}{bت_44Fz~T֏SQ 8 wPyhZp5;~ -3SkB ~zC >8\ IϠ~p,a.3RdD.COif &iDG vGlgh~y-Qg/H~C:Wle^j@+Y0yMG݌w5 %FҡW?ΐf2MGR>$H{N!2q^ޙG7|a,\$' -`wtg)/Dqib!kM<òsj91M*s[eM\>clWS+·58jߗPEc7nS {N#`8V04$yP(G܊U5J|BK2RH_93k7$%z5j 0>Lxx lJ1UP|@_gđ|*&qmekq%" \!ՖD#%NN -nN=Fؕ 9qF1U|>JqjHW!u)7|5!0^vUiKq@8WiXx !vmG( aNτ ʺa5rt[-a@qaʣ -j-OԗA6*1ޒ 9>,f~]Qġ}͵UFniu T._yeUzSL>'g]yZhߨt"Ѳ}PG+:gM60!y0Č %;ϱ#ҘN8k:WM{"(#O -zm;E?+^Է0k:,+,ŕQ_dS-özz&fu ->>`w)HZl׬CScHvybˮff]vﶳyn;y 2Z:aFZIe|cKwq:5`w&|w!e5kX^W='{ZixYsI4"޼ՐxZbdq$p!r`kUKg<3_qE{'|Z䓧?E'@v:9@Cw q<d{f'@i~1xopq<'O =mVxzr6YwX5yG`WESIoz~zOAd 38H{.E =$ޑ]כf)y/ '$ -_9 ]Camܷn+DJ_!ZE<<~^UeQ2 :~^ 1|^~S* _K1kV[i o(Qj,O|~jd5oD=f;iKPh֗Ю2?iP#Y(9 x$?%A%Y4$S -ĸ;@%Is~'G -uTWUG CX(ԑNMe淂dO-PB?d{_lIJKb -.OB֏W~ߴ[6.Ϋ ^!A;l=r73G@3AjbU?ȋ#A6_:.B=7EDWZ~#J;=j1!g@Qno?OP1&k8i:FR#]hIPah`Z#'%@%x_ XV2@Ha -t{\]xzWM"$[\#D pD6[(2G LIC) b2$:p@˿:` pY~Lz4@cI6+=}'E 1Ҝ!Lt&7h=eR9ۢW`i *9J:-c??iP'F3`U 1@r =ipv7 ܀wa ZaE~!H(%iq&.iIVC?q|rE ʄ63f3;sHjbYqL>u"Rv˦x$ִU!$p`+@ 'w>v"kNL@,XxZRW)j5dǯ]|K'U>; tB$^ 5f*S $' IfN m3/ӉUa*f~*٥(X\ED7֡Um\Ke$<})c6>,ʍOZ;|uoSu"6V5a^ SXfc)vjWv6Ώ=WN C- -{ې vpP,qB(cFt{! VWcWr! `?$J:5RӤ @4{U$ Vbq^ot$"EaJb#1ƌHJ/]F~jXٖaOdZyd -CzqF"tFB١ߜNҨC-I{ 6,zL@cq=VÚF5IY5:Q9RtgIgƆNHi bM -/u"_ C+_E٨b|O`i:AN =#h [υu!9"ZΜO@jͤH۫CE!M1Yr'NrVY{!:jգla-( wF+L~ou;~`א -c+sN̪w-kI - |?5f,k6x37Gn|pf<__.@Kf(}$Qs 5bV4ddpK%`1}50 {k)4r}%LvMKfa5=@L@d]3jnkݽ[N쳦V-E,C&v[;m񽽗WR|78>HGj%d=ra_<B~St K!HFo=Tyx9fdʭRpo.%@r@@XfK몶j=փy.bŚ CI#YtɨZ؎!2:,\?CynŜ-]I@`.Jmm%xO!L:ΰ_֨3~f 3A!xul|\#x+jG g̻A:38 Ƌ`%#7U -VBH9G+:sîlJvIiD͢s,F_S$c^v {`Ifc;7hy`(S yZowoMJ_P - RMVt(#oR3O R.:{K@,A!z?SƎ,7Ynu=n<]`Dzw0EQ{OwiwNUf$6֑͋RA!Fd,S_+aq -uf[3<͸0[E!8:NuxqQc2\2Ss o{ k H -('"'8Խ 'wMvӖeB u^菆DKZix)$zwM%?.b'[$2jV -ët|vϝ5B*^uEIQv$nбAnϥoho3(rܴ㋕|@CKT'0i1ΊFI_ sVN_9S ->3u=:xn!^:2wȓ%KX(^ ޘ܌[(*I#:;g,A) -nBƄx&haUFPF/0}`#Up7bB,e*̀b7KqR#h}YJ8^d֗&+pc}֑o ɘBR4?2D^w-ʞ͊l$RbL}vM]eܿ(n򉧰aֆ+" aeLӬ瀄lHySi7 oeҨ>u -r-ǔb-vC6`0=(e τ{ؚz朏vL*S(F`b 3<ҔQ|:h4x#..鲆!5͗8:A `Lv(sMp\960EfߕYL"mCVd,Xkt;zpҹ5">|(a`3x|/u+xRu ŝ -.an<"H IDIcc#:w vctc,N 0uN/82[bY.|n95T!G8yg@^O]C]'li.rXxPgfQ,¢rts:bd D;]#usZN(!65GahQZY-oͻW/IwmZkcV9;p`|C|0B^,BXSmn G!@$˚9QG@'],r6ʢ3qVD^IS,#H`FY*6'Qa괷 HV<:9)mMzKVMGSIe -$iqC.T|!A!fAJ4h7%5!|pRi4ynޒeUgSխ%ӕ%Xc* Mk77^;&fjt`'qN5288$es4Dx򂧻tOjǰ@/^FW3YTpS'Ϊ.%"d tGˁwb{ĕ̜Jo(3rL 8zh)%aE$=e0sE6; HE7\V(&|'An2¨c{)ARiT/}$gLpjR?p -*BxQS,ir ԁ -;Ah_p>ln7^ݭf+z7^6>~-cS@OaD& m ]wP=Om>mZ~EȈDb䶕uY"4k^[&+'R0Ur4uDh&?$Sca@Ơ@ribʎPH`ja<+pX>Jh\Ҵ[1Rېs \A>r}$uXe2ſ<}{PR&Q =3̊ygg$@ -,tNhܭ~*MHk?l,+\nmE5`b,>Dgd1)Q.07̩WSOn[8NCP~׃T/wMgE#1.b acߤe_kħWA1OY Rk ȯoR2a_OZ?`oe~8xX`.I?#ӷQ#Ғ? q՜/Ll\MA?y?C;&'0:SyB" -23#EWQX$ΩPÍ :\p,U8F;_,9{DusGwD?Uġ/dМs-m';ϛ=7<1Fw 9fkwtTsuio 7:AUP^pGL=;3$ T/-jDPҠ2 <2+ΊT%d-UI(&9,;axilpT -PkPicXp_FKBY/ċTW VBSw3;;ϟ<(b.zt#q3>mqz1C+o${6&cKy]XʘadbUrP&p~Z %wb g[g7NH~~:͎O;.]E|T&8=“4 7R'`1edEAkBu:&ds(鑦r8y9:>\q"IPș! UˡV.bZK[*a`lbNúpM?+ȫ}Z-⮖H6 -(7L4(CJ\#4-m9` :т "w&H+m-(:İI1wUa40R?$ +KHݙZQdMjtuEm [Q9݌ -6mJkg;k/ꅢТnT-8v|H鬈E$ܹ?#>@O@饥"֡B Kh? -G6_z7M -LΔy6HN1—6ɾsL$q7SF.gZ~%“G S -ZIg\NI ~uz"*G d'T -Sqjb9NK\Æ-fSglMd!eKk4l{s9bR_lsX>Lk -rFw>JB_cD1ղQ]z+ŐCPF?'( ).gSvb %n avu f D;h 5?GsQ7O6d}Rs |y*hPKʷh.GZ%z 8H¬a6 -gN~5|xO-L^6s[gA Y=KF~kCޤ\P4J(ytԉ0xN#JĎzER5,4ٟyȨ߄Y{sqfʫ9 +PvQ{ df޹Liߠ-gy6HL̅R]DvY3<6Ø -kbn7zVubL -k8AwK>n)-H -LHҐ$,`wbqfI>HETl aӾO! -\+|5*bV۝pF + v\=bG('vl+1z#LhAI!G$/Ic*<3 'C/czvV%4xD+b0@6 i6܌ @1.;Y$Fѫ #+]@})R2{Cg MwuI֜HۥsJ#FqNf CWOUAlͩGk+S>+ aPbPS(Df章[ 0Z=`ptCZDw5NGD{{Xٮ1P_دPf/ x&?L $I+"Z/JXVGn?My@0B4\*|9h|ak ; 77, qO5&Me&4*m3(aV|_AZde,88rLN6[s|Φ#L96ZMܐX[gj)&RurFòb25HX"KAIY:Ϧo^N m.Gqb -Abߜ#~ؿ#U9Q->jȋoD`7 - -W 4q@8@!! 8ti< z p:<W&(G{>ӱQxh*L[MQӄp8H~ Ϳ0{LeU&U'ju;!|`iά$:uI)̈́_pM-< ΀*GaS2^L+M,Vj2Ki̠N")I ܳw%2nd?d[tv%a"^}λ]k7RE`6?TcJձU!61Tk=LVR'U'KۉI u&D$!>L99}S8ÔT:G&"ر K"v#`Cp5(DɆ$wwws[+Q5S5`FE6A0(ԉ?A?1Y܀/'ȯɕ'!VptZİqHGF=Q!f(iuϘ|~rD)y6$' SWa_h(Anz9n΍w) ʴ> *_x*ttg3FRs#̂nMVDIԗ\4[-K >$,ZBe~<gJL ﺓȉLZ00\Skc@b+Q$&l8A*AfJjfiP(RBdpEX|[ - rQ Ϳy(TNCɱu5 Qyn6;2Հ|%FHr16B:t 8"7:I:L xS Si^ 6OfMi  fI_Rd$`OBi54嬊3s5!H6OF!T2 D{YaN:5JȀaE&?{KB^h? vf$K%F-B|ZQ3n.#(CdK ;ċ2[ ]=9R_Кyq# a31H:F2Dh(Qc$*pHoRF36k"Q}B  :&'mh%ZuI؃pWSQ -euvKm*(V: >j8'^]ՀrE+ѫi`%G<  ɷ+!ӴfEWG!dtZ:4%"2 -<@L5EzHh`RDp`Z(jP[BZa;dݰi;EccVaU R|ШҭąO܆L*}'c3nSxEqS $ R<4DZNoȔYfJmtO΋/Rp(\nb !Aa5@0F)YtiǫYeAݍP4ˋ*LacpY --T4  I>JLP}Y  xH_f2.5$̒= Ud|ړ[|Qy*Wx AiL<߁ZeMdPTX"FOtjI,]bݪ<33T砚y LyN;=5-OkT}*0Y{vq':ZvBGH(2@:`SrAe\C GyLU=7GQ!I&&!DC sDv MSh{'_y'R)8`F˲tk8#p-9/`{"Vxl3 c /}!|, x6W+W-4 -YvXfcSG*6ѕXY>`Jث b{ݚ 51BTz9GQ2ppJ)J\CiWaQwk 㭸b]4P -b QiJ %%'Xg2UPY -jEx" yF.b#Xfm ԄaJeڍ,X0ʯ\I1'wxZ'P(hY~>S(6e Q fr}օSb/ZH5R@Q8X΋7>f@azOdB0UļbCc'db <c`8"2P7EAPFNUL,뗆7Il+4 ̙ow&2g^ s(rYN#04lRM;Wt!,ӷ&{^Sa^9 -6 APoؘQtU /G%㙝CFnE6P̢j -#!bps9(Q8gU36Mۊ8o9ī&\t'2q/~!Zёczܡq&'p=οe h(@|rF7S s=&kTW[s9( ^Gb:NSgxINs4]$pNU  - -,u퍤."QjE¦zhTś*0_ -#Af/Cr;ۻ$ ^ͤ>'[sZx;29:ud<]S{rcb5UNT9}@I|ّ*2^;!7kߜVmZTeE:A߱nG[F4.A& -U,th%*o=tJ BMձAiVDUsCAhi)X'$Q]K]Ee-tY p9S*#`hhs~!RǪ6}:z0cF~2t{ΏԄQgZW,>5*U'YH?Dm)CP1F"o @Z<=tJ,EVHyc*v`-׶|Upe-B ;]@7ۨ§Q nIԵBs5Ƌ~/@L ]x#hRy“5THXXÿ1lHxɮ)ozx>+ ,rǸ2YE$p -^8Ю]eZ9r|"x1,\^fsаΘO 7jY ^p`5V; N w 5K6Y2 C4]J̎\T-H^3p>@OK!bț[3&c}ߟ`8>3901:"1kՈ5 -?(𤢠T -,M??h0,]5;:svX /7Q ,G8 KEwdݕ-Ëyd!'u!XuPGAPkQQaKDy\sQ+ qp(i{b`;+XC&Pu -v eGN'N?=lHٕwax86+@_+o c^StPHpoP'YeVzWbe` *;,2B〩,}ՉR&UϯIYULq . )ut<[Ạp<\Y,U] -#Quĉ{©Jm",%J=k[΀ݽ),D"A#N><:?eO ^U.>SL}es#}8},5MI?X*M2FAF F#CQ/>.*-l!$=o)))@I!MQ2QpZDW\:Y]"ոv!ú$(5-w~(>\5hlk eA kr4r@N0d{J#Ȕs9ey!re|CznG( j4#B U +hWI?hJږڲB3^#.sT*4d,#pЅ*NK4 Uz6,\7C?!Srާ7ЅOF3LB"`j6.LJ)}`%ZgET i+O*.%Tn-0[Q73Oy:+'lHQ"+ L0H;bWcj; wn"\9ldRō/*jFdf<"0(R);,p VD-Y(NiHʕ`W rnD*Rꒁu% -KeANQf+K3FS=ߘPpHp?8MdϸӏVŴ,L|3x/L@!ޠ:7_c(>#?&bW4s`Cm ٦ҩ#= sNEV4q"8MSؤuI; ۅ5[,XdktDS2ִZM39:׻O#}u }]/j@-wǜ=Hrи/MD֘(ޘTx<+!ZӕHxF5^n̔DPʘ{! o[ӬLC}jU*VCU!J(nj2:N!%D 3|T:1xLÊbjkrC`[T@5g[k}PíjCrn$^LS/~SNpv?#Xky]cUS]֕)S6\rsleIo+`KrqEkzON.;579ZckaCdDb,rJ?q?^O!ť ̞+Veg׭O? swD#IB9E_I$B YGs7Rղr5sK$gȱH/mKqzPsˉOb1MwReb0י$^t0NLʨ5Gz ))63(dh|5*T #6 -%-X_Z2S/@&M*w4^P`!^|JȱdSC1bkCpUx82 A¨1 -;腣n.}(ڥZRⰠ:ldψ!_Pҷ34za*-f!/4'Th' +ϩ78XVo^8_8oC[%~6snYN1Y/ -WJSA 9 e8ل߸" 6)oq0fPJFrxmhjU 7E}#Z"G505-TV h%j. X/4jGC -RP:w[v@Pc:{@nvmWN77Sׄ+.9n!gScYۍ2f-UK%d_lcŦKWX\w,0ٱhzZI\I z^hcxTM)z$0R)8]E1cw7ٝ OZdOuDc1+A6Vɴ˸ ~_: H1ves4fK+*WT$H+QQ0_jBj?|fI.5,(B2c%iHfbNa6 -X`>ڽrĪ'PJ*Uó[uɬ'Z|Y9 )2QykV2ݫT5kNӤ{O @Q軦 TSHb)<ٹ286gj8~RF ҆UjxɤVT -9FEONrC}AmW_P6FB;,eV~*{SQ4HstVI}r4EuʡQDZ0N7t'q>n5Y3n^v2?T -S")Ee$%U fֳ.=Ӭ=HQY`%j\u -3}8O82b!s(E-5n_v]iy-@hz 547 Fd:Dux6I(A'rYU"2Ϟ@I?BO`xil71 e_/jH`#F='8³ˎgуIiT*-E1Yk!|9> 'cY-][ap $xlB%ἎUXҍtæ/v|X֬ct=g$8Ǹ^.g+D%x^qM <Ѣ$ "q^PKJ냫܉)+[`7i<ϒF;Fp --a }#A"1C)1(UL$t!Ɣ潢?4~nvyeېiI@@bW" gki֙È١zW2Ͼ1:B~[CAC %,Fv*ALlR JTU+oDr(jc/𦖧zҦ() d$܏G89.3 -Ո-הY]nl(. ca??iHPWɪH(̲6ah~߇vN;/pd֌.L_,i9,FE}htb'h$ D$ۘ| -X{h GG2H1BRW8X -=/lڎ_bG*>O쌆x@)|ic}WŽ^nob4"im"6&!ȓp ,\9*1Fp,NnR5~Ivp{@Q3n"[\ᖗ.p[%P[E/j|'|Hq<ѳásbTYm$Z6"բMp0FK(³ Tb~R,V6M !hRxG,eZ`QB> %@|zФ?l# @ Z1We&U,@Hu[!/!.x}#6͆x#(jS,4?y5tuh@uc RAeCd1l\5\nX_LJ0_?+_(7'`?1bZ᧿ -z;᥂jOa>ܠhߐGEoadY?2D -ѳ"[~F ' ҹɤVKi9UghdqƸ5:@h+WWn -橡HsH/PWRZzP~bdB{|ׯ;԰tI 9Uݛ-'Vcjh&93m<gg|dLqzm'%I%!iR2aK*oU:1]bD8bs6cc -P_,FqG\Jnm9ILDݼhhIZlʩȦ;8g7xŪ"L(s]-ˊvDv7h!Dfuqm1nHL O+lE9e5JVw8t8ș TK@ӑ|4_~h5BWϝ&@B_=wCGձ<*ńWT J(iR҉Ns.IuU^\HՑLC;~/"G#yy -ļw5uyܔ{Vw{_e-n*==z;hTunrWzj._/%]2'Խr[Z4-zag2"8G_PDr,AR;KƧR{oW i-D/mP ӱbΏ^n1w[RywI9Sߧ4YGeD)+5Li$N'**q ~pKHOrP@ _1lR?s%|gjD KhPc&$S#yyqrIKwwgRu}#5E( p1m"}(s/n>*d=~}vH$[^k䨓ef\IZ썱*cBJ ?>Y.LZEȣ ց7ur%XuYpjM+W{j-)K ~GW Be3GU6tr_gi#OZ/8w*J>^<.㋩: _<꧶B!iu?W `j =-c0;WnVRNO4~ cVRIp6Tj@G~T"38xuϐIvV~#(~*SV2&?.:)p^dwө'Tj%8=A ɭ*3g -pe Rf#AUҟJP{ӂϋ@EH@iʕTy)sgT+!'Q|Dҭ"Ơ!Vy_űdŜdD}'jW_Ħ C.xUU:$J avXc,`E[S8#**9 !LŒ,Y<ꁚ=<3,84-ghHmnG -T=H#")BN00ͭ&!'α%05T';|r 'O%Ւ|[y=zPKfsЯK:3@׌_дn)bBnj 4}3󰬼R 4m@*ã`¼<Y'dz 4Ҕ#sȬpqY7pGzB=@du08p:(*g 9Y70$`>[*N#5cD|D~D|2`?N\ Fx/#/qNIi*/c]V?[z8[dz=q -j&)=% y&`e/`bhۼ͈yAbŐ~%1k?[? e28\ϕ,#XznZYmɼV=|TQoY@ -c^F`M!, đ<0;$va%vǝijcTgvl=[@''h bUל0O'xNͰ&cʧPXw,P4(0m˶P:}OTv\+(r`foGTOA7?ĝn{*e+XBL%ڞom8Fx 8! і|hvPW˜b@@N:Rg5MuXqhu> 40b3|0/F/Hj>|7Ǘ8A3| C]jv$m:Ku8nyywm,Q-WAA)+; ?ԍ^ţvdw&OPD{[ܚV߆D ~zZ?$<{^ zlro .l&GQ9HS{Ha13ݶi(:]ȼV, {j%#(M I)d.2!]+42r{?xDCc2Ih5bw-;@JUik?h׷.o>1t~ՉP4*@zmۄ K.L$4`Oh& PDv.a^>϶at} YoDD߬6sLpvo<\M8/>'.r,&z+NM[dp'+d'Ȟ|OOBbX:|q0Ql 6CXƊ{vdzji7oH=6cC2.@Y -|BJ4RoaptL̗U@.t >>EHi,D*{ԙ;9!uai9n4n(a^!zS6SB}݃_w:0Źw7+_A -K\} -Qp:ADb9422Zx9BF(Pt Jip)+(@EA' o(JDŻ]J=>\>~? ԕ:mG -Tq~g[LV-\ߙĮv|qO.ù\|:].Ew>O.\..UڱQL>Cy k ޲&f}}V5YL0|6=a.t[T4U[*O{"kήƀ㉶ߠh]Bid߱JY.;pSSk;G(ґn,)ߘ2ƪⳗ1fV$&TqwVIħ77'$/E(T~خĵ]#!g-)|˩5ˡWEen)֖GO/2޹)y pIc4A)I׵H1_c>]^_Wc ^&\ rZ>.Q/t9Ic(2//iEAhhNχM|Q⭓Ϧũ8!t1+rlv8ypC~ayp'm'Puq<1)隹XJ)&GDoSSEїdDna3!_jF/{Y#%?Z Bm -l͋m3EWؽ9Ț-I,GI:퇛W=RoY_!L W0j|% e9R)J5@=-TDoJYd?ztIY21k)0LgڲaQ5}ͮ&G#ES -•hKѶm۶mz`~otQ3P]u>m{o?cs0>333;Yۺ;[I/cz;]gcg^9捻f̫S[)Fҩy5m֓#S'׺f7[g7~ur͸㊵^9{Vl1sӻg[^)xR{V^y;w3nͻ'Ҽo\S'^wz{y/ǙwWnw닏0IgIS#w5T~^|9^\3ƶݓikGX~5[OztZ{ܩylDl kpGǞrb::*s"t랻_qo-+:4ys.Y[;[-ҹnA9[-9L7c5wK3lR|ZUo[k9[m/ߺ/ZKXۻbuzg^)ZNmRKqkΔJ+bm^1J1nq|[mky׹Z^Z^yv+͝n\ii8/7u5{jquS~SjkNq}y_ʩݻfܷU^mř׭9^\-wyޛgsV[yӊ5oݹm9{ۛsSֳ[{kŖz-Z}jWwmuWNŜZVm{kqYouӊWkεfۯzL6Ӫ7y]W5/_{ۚ/JuZmq8q׼߫)^mוjZ;kպV\ݚݷZs+r<[/bzw:[{[l=sKIXW륻Z)ּvm7}ڙ/ּf\LvcmK{ݹv[9j;f3ޙ߉-g\ޫw|kvl1^͵Z~k9k--4c1ۚ٫Ÿjg>okͺ^uߴ:qW{my/37s|[wֽ~Ƶ9֝skwmWcsRk7Wo+6[ms^yŽvN3}7z^ެw^yrjomi4^sf:+VJw9oWMwry/[JiW19+6c/ƽ՝̫׺7}5:SqcZ7w^3Ǻzkƽ^v֚qUwS|jV1gY[kqk\;ߕ[/wgkݹ-ּZiY|u}{s]v|u]|o1iVN3uӛ3b^v{Yw|f[:뫭VkiŔiיZZk7W{y9_|ݝ[nŸ"7[qXW3t_ƺfqZ58[}oj֙_)twuc]yvk֘n-.1EvZ-vl57kS3;WtWoϕvi4}5՗RƹWZu]7^jފޜ;Xwk}|jk[o\-/V{\+|Η[SZ\k[;s{Қkݷ|WJݔV^--ZozZ;8{/ǹ׋/v\{V]{ŗ;v}wMܹRջ箩3瞫+3O3Ŷ^o|R|jĺ꽵:nsvwZӜ5cjuϽykc/9wwNkKo|_ڛŻwZ7k{VsuոK16뫭_Nkۍ9ZK3LyZw-uӞf/^-z^\yVM1L1cJu:i;ݛN|+ֹju}[N5՛ی9V'5s}^[Ֆu}wN/ZM;|ouuc|sחމyջsjq8owιvLm竳ݓ|c{i^)Ϋ^3zw[rӪv)Ε|]ۍ'l)6cTWj滫zs>5'Ug1}z{{yw~ifo9S͸^niҜ㼫ݴ{zw'kj;|TS{q響ݔZX窭S}6sm}c˫[8_>g54[|⌹Sk}iνi멳L5TK:Jwώq}jq}~/ޛ9{mu{/TC:dOi41DbBiLj֒IDv_RA3MejH '|XԨF5M=iV>ŞE -uy!.҇p18_Pc -c -R (bCYچcPi3yI>Ysf5x؍4~eٰ(MQԅ$Á܏Qe,Dv_?HnˣR$i"ֲ]_ф=Ik`y+U}!9VUeyIJ"VYS4|I7'f .oR'HaQlĬll8J[%a% 6%MWD1AqZEEς*uȠ<ׯ孔ŭ9bOcNؓ]}-'Uh*Y,!+[0A+u¢̑*4VB:gL՗*1 t BL T଼MQ m}5Gj"yҨ< -&](˟ *jJۧqϸ643ќEa}:_'Q$*l'&i *溆?lW Q:dRވ R +pF8#E|p!Q})u s12hjHtU=} S4SUw֞>8CUM0A$ 0C4A}%smD'̓2s5LAc"Ȝ'/D&8`0AYyڤ"2##0IfQ -0QDduD&5L)M G(!Ɨ@̓BR@yLB5LY|1;4@&E"FD-}(!"OPH q}'M|lsF)hm˷hb6ArOeyQLq&YAtZhen`'נqbVd BǬY6ZFF q3_Gv y{e -&cSVEP 235c$yBxZ]Ӧ%##a\I- OipWCσU5$`CWxФ~VфSi|1lÄ2XEoF-# ">Ʉ`RZU#E`d-5WLB-'!?䊜!@d(m7ZNƊi2"h4PDF"?hBI4aDduDi;cU"\*Ү>kSJ6XK$BU+Ezb(gyb|=}1)EIy4ِ~+Uܕ8^M^',hҰ>!ZTYVp6 )=G_hG8mƣzNՑ,!@rUʏ,j5Ǒ)tzN9ƖoggZ>ڗG3۝zfډ/Z]-ZΣWUW{4_K5v~yϞqZmoݧRK\[mwny5;Ro1"ƴi9jKou{n̻>1|bz1齚^ޯێu{^gǽ{ڑ#u\gRRJogz:yު}n{ޱ|q{;u-]Gμs;w;}=bqgN|})[t=misܳw1n\o9oLSvn̷{5뾵v51ցN17cozgVol1Ҷcֺmc+=7œbM[;)wR)ONI1Ϯ1y~5sZ/ݵjm|#ob:3w[/ߓ[KNk^v[z9Ț齜bzxrʩNz7νNz{wN+3zljlaoڹo\kԸg1|3Sy|[vm;<kb#[l_|륛G#e=v}wS{gyϽH_[_/V}gj͹˅Gvi[1͚y{u6zRw^;^Y'zb|3{clgƴON3\kl1<븽N5֘w7ߝƼf/[9c;j-޻f6k͹b>5|HN)NySgkwlmghnofDkm:htfݳ3;ZOZcz5ZWj><5j=OtZv[dyb$L1xO3u#ѩکw{꽻{o9Ɠ/|;v>;ߙo|MyozyޓoL37SNޓֹNi[Jvn餵g#qY/rc1V';[o֗_TWsֻS7^mߪrsŖ{^m]O\/8soߛmչ׌yۭsƘ/c){l1RNi[cosk~|ѷV7ġǰ懐xy*,Q/4Um>hX~kgjU~?b=J:"bԆ5TEHBI&Jc@(!8 810JRG@_p#OtLIr0/oܰJ"" VgMH2tԗ45*"8)%L) m4VCJ 7aN+ ƈ0ԣGjDG5#(FA*U, ʰ67`DynpLx ʾ`|Hamئ"<2YPF X;|C`HR!<‰ا LhDC1 t" .kCJGlx3)+}ʲ~NWԷrs¤Ɲ2C&S3_d[$iAm]5SM$YЛUD\IQ i_#[}JH 6, 9. } RF}e:`Sʫ]}5.e- -s .m3'rlr"2g j"u¦H2T&2gMRZ0A#Ra w(BN iH"yʬ|VU -eAqZ:xa9C$AqĞD ZyDQeI2M6*Q3I8҆8F8oK#?@(Ǝ-$!]pR-ȁò(.)9^PGjx$M5R;?< 0u|: 9AʈAP|/9oõ4twҢVھ# / k4YBDz]3/ -oww~OYOq6<{ڢh1=d?\X1#uT@K.@_Ш/8]OYTɂo!6\GCy]$R H ")d<<07yxaE¯qDLi.UQ+p / {#/oYYgHBn~daɘ'c# (d *hF!EDœ!{AsYe lirk` X |- kg~pe@d5YC6aG9eM#Ո34\ &1A|Ĕ3UegI;"x=(xT< 2%3MJA#O\cE,@"c0fKgI5^B2MdR@t"YiWF趼ٔÖ5 #ѓ6ZygVx2V -uy+2(O"mƞ4,i c"ڪ&d -q^ a#!eyW<aX!.VUM m)Ĉ?Uq(!rȎkSFkD&D"uʤ- Ao\C.GjHK4%#&eC{e<!@lZg\1 kHK;`OM#@$_+}Xƞē$:`pG%X1'A iChi8^Mk9;fOeO۔j"gi{L2Qڔc$h 3V?I&*}dx9Ɯj)H5D){{ڦ9E#s|9dQcMV\W$`b֣f54Ah"5L -"h t aB & 9ÆEU@tX$Qo6^G9cP"Y3DA=kWcЛ'Bu]$ -YUx=6^MœцI8$J,F}eǍhiQ0!.cVsž h4Y6 - - צ%叢}R -%c%9*w̦ -_7Q}p[G8_PcNؓ9^Q^Kt=e"=EبI'Bs6Ud50:B4rB6:bSdXEM6,hBYIwЦH#tXHʚ4+- ^Zp_ 4|9mpCv`~li y'>Zs~PVɳF5ހ-2NJI2M'DJ WSj"u֞2QdG `OP1 -q_85偍)EMFYH ZipqBHȡ<.%a7Rx'fa|ܨ~qf*pfL H?dF 2O%Ke*mePq*>ZP I1sw΢*σ6Ei)QG7]O WEȲVF8*9bMyaP~Ycj -ECy\^726+߃f}֮u[ -r -%ed\F -ͅAs\hOyE{c(Jڐ8r'JB"0(Qy(_uDZ"J&V> -$`oE#@7DUUu;gQǍʟ>kUG]}"$]eў=gUٔI"}ڬa;hQ݁yxaH 7+/ aPQ9R3}!2+j*gTiwDֿZ3MBFr4LpY_hNk519bMJi,raSc)R( (S'EH sG>oTn7,)n:4 s>װa -$`ePW9A@rYc MWg)ؓ5xAq\?n]'o[]@oY>0?#LDQsʞF6+/DtEI~-n!:RȮU'|)g$ -oF8bʚ/Z"FpR*_F -\s0GGaPQ*!$]ߨٯǰr6,EJ~ޘ_фC+aLa0,!2HYy4*vQ#(i%(i 7ߓfް -%ce &h -%cPbVc+cTY+U J5WϫLa7V y̪1(ͪBU0!*yΪHWBP2VhBQ}}IJKJ&f;]jB'UI]Q%Q]אE֒" -k;hO,dJ Cw\?卜GP΂W'&Ho|i6R#_T9 1aM{PB4@iK|!&P6鲀=`(0D@D -D`B* SBN ] xjF |  4PH@p dIұQP;H)JC#/Om|#Q,%pAܱ%GPb Hd$N( Y˯!J^7ă hUi"DB #?r? BP2FL=R#Ex#J>0![9@;ZH}d - @ -/B D @ J|K@9R)ap)^^>%V@!Db $أ(I B@!H"D@LHW0J#/P!,A a+FL~{$ BR D\=EPʸ?VD ":,F %7p@BH~DQ,|, Ha*$|$R L  -tK@ -XaR%$ ` -0gO$H0$0 t{$e@b: !gP2yWԂa Qdl/MH*k0?X/ŠGX)5@8 wB -`-o)cC@zCHJEDJ CYJ Oq 2x z(vA 8@Z= -bD$:4P87A@ @F:a؂/-EP*Y$KP>DDz!,A35yd*d8 p 7fPDq@ wB#>$#AxZb`ȁ5)d.XwЃ_qX2V#5Px7@ P\A0"*a .'I'J@ -)"eFF@ "'b?"qXad:"R7X Y" d VDdr h9`P$wN\&b>/≰ EA98bȃ+Y~F\90KD -`ipi#q+ wG -9N+y |;b -PF"zaFP R';4 )@'fp x1 9X@уPGx@(Aeې(Bn>}@<VF?2!$ZCN~88@v2$",CChQQ`mm0'rS}N (nA,ȡ cـƩ"PZ !!0IBz0+,%8ˆD*@a @X="E [w "(cyZANnqctQ#`HWf u/T_T)+cp91]8Db sZCax ]GU|G_'DbUQ#_XYw:%؁D=&)k^79 -vdaˠG7̑, %Qن%BqŭDīT'6';/B rj 5Rp#30JpAEi:_WKJSֆ.l`y+) w>G -rAs]'ܺHMȾ+l?G -r?kYIW+jBu[% 14)O60˸kpa+Ʈ̱E,Ap[35}O<5/:'i}|c?j'޶<W655I22mx#,g)(13%HUZ)Ih +J9`Lc O\¯Kݥ!/1]ץ!kHBn I#)l7֣F{Ԩ< ;X(hr6d,50煐l(ŭΰ$ih"đ%JZo̻C+ IH~CF7r( G%$R%'7¨6%#gQ QhOl/u> -t564R cP29ȕ-ІDu]Cy]C|c*|1"oD!.KqB%aGQJU#(lHِH߀-5\D;gQ^Ş/t$?DV%{ҬP"=2O6sh(Iiúɂ"oȚ""!j#DEy&41#_*EH u)!#IDJD+C:O7&R%lQmem4zRml#A8o:4>geR쉑BHٗn04,J]<-u~<8<G/!0B{[4A?0kAO QE(7ָ mx20yXԪ H\λ`VS#s@GN@m43wܢ:jR#-h~mRοxDAQ} .s=kT#QO{e_#kHBf@D ,xiX"PnV`bDwPse$T9 J%8i=b.9+)hJ*Ć@oV% ?2Q৤D"Omy#/:JJ 6_7V wƖr(!k9cOGͪDaץ$Ja\IW'ÆڴH{`$Q/P0r_ xΦxy#=Ow5z7ZPMV36UP M@b1<:cǎCSDN`'f@uX6F|hG kLk3 'N&1C C*0D ![R$zq"_jBS<8]*k-#c#TF`?H -ㅸ'  -o# ވ~FH )>D!y KVApZC"rߛ5,u K-q5}je ,o+tBu_d|čC{]",a*/7 +8 )dΡIDx`i:eRbOI5{"F\5 bJpV| A ;8RSpGBd$eay$qYy"$\J4 sVea`&߃1 y>-럈zVX2vmir[I! *nCM֔\4I+])1*oVV&A+C s$>3{Ь.<'hBOaѰ¦4W +uʠ !2OȏYKclIBx\cRPƩaBHRە3w S}P'# e8!s/!$\ƫI2DL5`&+jC9x_[*ވC bkq yB q7BadQ#m z?D fDQHu ~"+n%շZs^JC˝?K3KJS@mXYyA}CD &=m7dM4+?AV H XyEheH28m<6C7Jf4$q Wy=iV' Ke1DQ  Kze|4RCơ;?V|#&@$1FN5h1GRΔ6|ɯC "w$ -Y4Uʣ>"$cօ%"eϿr[JMÒ G]] '?$jUCvcB` agVy δ+ LЄ` 2RMDu eT7V]422T u1|DXÄ4EUV`7HBF5UeV1n\Xߐk}+]ry>cfvOxNGz>$z[#${Pm9^rBY> ǪWol(-nںj{Xv{"?ceOP^h?s5ߘQ7гT3EdG ycgߥ_r-? uFu~ZeSf-/[iDý]Lռ9Vbo/w7~AT }<ۋ/iC :0}܈Zwh @ȸXx1&ݴQZ/:rC `C {ϰ U=nI<1}Y_)cqFgc^ѦA4 8c̳~ө;ҳwPҫ9]z~ZmQCMq-X?] ܯ?ۍOSkoLEp' wS:{]Ko+?CCޑ?DoHBzë}qm=k@u^fF]iv_p3g8 -]=E]p`~<{?ti|%迄f`o5g=~Ctc\ק+}o5uXwݿ(ͱ]b?!zگK/GU/A_ló8{ۍaAM/͟쯇BL/I7랟8Z+Cfڽ~1; 1^&7{uN&)7T4+bэ"5amr%[8l΀>3}l cDb/oLjUTѴI8p[zo:('f=EY,Tg* җ'uKx(+",T?bd_r@04$9I<%4QIe, aҏI^`lX?7?B}^a}d=a)p;\ -caNbcm<=x|T"_sO;79x=|/3- |tĻIkR_h9)УFPD2m`;907e;Ge@=jF6%X9w'L:@4p)Di7wQl6smY'8p,Gݪ%&4'C/4}!he ~}exQXA>-Tn U7ɈR7+4يڅ)v^؆`҄á{1u' Q%R;֡CҮnl7&F%@U2:W̌/d -/DQM/Z+f"mTI&Sn@gl"EB?M -)t'vsh9-Bn kFUަ[hҘbPjKb4a٣B=w7>T%-h` ߮PY ,;e,KÅФƏ{E͍z Ջ(rK :F%ZMNqyT^kCSC%BPAITtaݕ۴􅻒 -$<;/(D~JИY1\iA_Nc2)3l)% eM7RY)qeDJi])SX} Jbv[iմcG ^P}| ޜdPYZ]UGҷ& -a$b\(\}fx6]2vJh -<̄&L轝d'ݷ7[Yc -oMb k 틵3̳o~f<`Z$;L] O6{-h.ґ ݆ 7Sz̵!6!HJýp< -E׹DkOptϿQv*B(E}iŹn¶E/|-M,^V a7-pқz+zZXr8NExS sz}i챯m!?^4,?܇:nmzT2H8͢- =V;Q -M !5OpV3 WSDď&eFc0Ȁ6G{14>*V܉8wHɱ# &D[q&:!+F*r'k.<î E *SP(J)>-,lc[=*:ih-~1{:oDa 潡4SAɼ@~Ϻ6*t?b^kb#+!S+ X -~ư| IM -T挂0F{}tgct$ϊ~tW612 C{+@:,$ʅ~\GX3+M/Fv Ax#r=gu(@f. SGHX'rh&m<-RI"!P愁b?jvjE(u ւdm*ZN SUmj4'~d 7itOQ/I֭ H`b(fJvXZYryZpr(vI lǥcmSb/݇e"ϲߓ aL*m1roz{-J[wᇸ.>Nz,!l3|9=53DԂ߁," h$!^X?B^iyjL}6NHj#Qkx,}q$?bA [YL+B8t|@4QT],0>kRC]Kt˛~ =D@‰1Nt51FTY135D@a@& sDATSǴmHJ]dR% 7hPeK98hc}]DG –#a#DM-U EF}uH>ac -)liL+6FƄ(w*KoשBy{)8xaKJ ma(! Wb8͕.شk-# иMƅICAo964u!cAy0Pl6H>ȧ`qߵx?{"x:TQzwu`Y΁}!/^Us͸W_BxᇾLBta,M`"KxvbFfr:kC*,"-%s?N:Z#nAEubq8Zx$6Tׯ9;10$4ւ k]vmbeFè3.a`t׆hځ;bCT' sA3&cB;oꝟ t8/6^M|u ,5&2,Co  ?̗% @*BEg2#er.6IA8Lp k~3qˠS! ȶ^ܩ70Q σ)g!Drn.hR>hj{J)1m#;lFB#,`K#G=ОGZ62kJ9,Z%؝Cj4/˰}cw4'a 6KjP&14T“Z6>~읰$=d Uz~H/}?lI~9tk:5)"P"j ow ZpkA@i!p@d_w%0F( F=R @jBRiFbIܔCacx&op@=5Ԉ׶Gt} 5]Äԇы^fx*!Nbx D:.wZ;w2g^ =I {Rݨ9]aJKqgD|Hǔ-ƹ {ϫ"o{Cf s?1enKu 1?d^SD#= )jK'tf/ p_0DqFܤCjoikKH9^ -p Zaңtk]tl[ NS&*.Gw[8T"n)7’;^d^qWGҾR !_U`&c[k$sXhҫ%BԼqUŕ1rj5[SGӞ˰Kݨ=b+mmf@lUl`QGl4LOCc2w%F f^ f ]xj:gE%юpS +##Bm z#m \6Ucdȶ"(9\0Y_[,u.RoeiՅ.,Wb)ݖV.d.*Wny@b5x& `_~Hoy[oy$>)25_9" h ٯSƯ3q &2j\OR#U!LU`@k -endstream endobj 952 0 obj <>stream -ϢmLXT_88BP[!\2#>fb]hUڂjЖ.:&T1#\@;U9QȐ+P,`/yvڂHwnq#:lUkQnhhU@'U],e CYI[ VB'X>oH(KAdžrߐvIV;r3W/twqU/bEZa1>R`wwwb'Y.)Q|U,hNsqs - ΔkJ9[ۏ=-J xN$ -IDvQ -ItL ꞹy9xz2q?A^$j ,0J`B+s[f,O>bb^Z -[3o4wfIk-FIJѶxhb^ÁH$.TY -=GZ!ZyLֶI$E]G>Q&_N:PiQaAP Pm2+A5/+LDD[vci]x36U_l[/|ZF3z.hV)['YXKqײvՆd5$! -w̽]y&Rcy}9v`*}q4Hd[ICe Oūωږi4qzr(3XE{l+E -ZJx3LWQO'tO!{ЙjtBg\l Lp'>ci(7/cJ -2fBu2~쭄uPdG7j˅UV$+2 x+"2 -ϢեJbYIBȩsHaoMu J\Bv&3H]&aprm䟬X^~t68E^U;'W]bl+4,eG,pm ys@t5 ֪ ? =ЦHE9|!1,w%0@Ab8joK,#QكԢ\pdLŤsU<ĀvHϐIX!BZ?P #hGpEes>Ge3.j ;KV8 c1<X&u(|wAjקA:!ȊY\~HŖ;{ҫ6#Ȉ&v1]+{ylP_e8N 3GDpڵX׷uN\ u"Jfv\Ps8}J*>^6mYz^q7N\ǽ?v0Œx8iE`KdmޟSMoc~8Q}b¢^d͟ -jy{LڴpgM VVF1%I*vTj`b06Xpҗ"dCTPDC,/}[7ڍv|V~_:nOcv#,kq+NKuzSUDI,T!cfA8-mn##)g)LH(/)wfp>V8T[z-T#7dFvdjn^HlGYq }߃9\6hnl@޽',F8mRf$ ہS+ZB4LT=( <ǟ mbṭ@BE`Sj_bv;̦Il"[i U{qR&a)uڬ4@!\7"L3gڼuaBi8$gevc>ƈmyyVhW^/_EG2t&W_;.IH!sS8gxsC5|]SzD w:S $c*0n:cpJS<$v6yP> 1fcw1ozQFD~9f+Sh:B_#~M?/wXrPQW8<ZH] ?DU -iOpx[ym#\Oǘfo:#=/(sm|> L64ryxʾκ(uLۭ*UD(?Иl -lRz\сzdRW- v_6(?8nмfD?$jc'!o( Р#~<6+EZg!yU I &LHDI@$<'< 8~NZnnnyGy|hްz\uVjm;N*SD>E4soP3/.G γ6-}eV)|HRB &@lz -Wd 3_-2dkņW%Ușw?ݳKG.ͬ5,o)葀K,31B`G [,|~غjI$Dd8ayÛ;{Wծ)I"̵% JNsIf2 9xHFsO4΂*+RtqpOC [_~Qy#$*O1,2Ao뽚(')OdLzAH0q)1QʪiH3UevSs(DjS Hn5Yv)9l(o*N0};[\Hc\^$ |Tgc  -ߔXPc{PX6L+?;R~{o9+QmӃh]&L}Rxep P>}w\]1[q -OaRPEAǢS؅*4h=.J>TFS85gٶBG2 V[pIAlRn -UBtL׿y 0d cx*. JZ@=@ sN[`Sا}pϣ4vTa:,8*A6W S٬.}Jf +sS#jdOdԄ -Qx=t-@D"b{R$^fCwڴo-la3iib -L ~~nfVACyv?U׈8`l@F69IukK'`2\GY6#}[0ԕ-n%`uRuE Jۋ)͞niyW6B57hwY!:G}>GC m䭶j oSnC18"u8=dzΧgIKMz\_Eerh?/5&";D"̅^7:*F\ۓmy>@9TUsuCIt/ H2wpbJTZh.2Z+8M26AС&p"kc[vHwtʢx4l"$QBjƥKu!ʡiꪍ+z͠HCi)U@xeI%Kpo.8QOG(nvPDvV79~'+KYԾKu7F>[ {sğC"F8:>gʖ8;n&,HрT!u }J_-95='gyY UL4@*{agzrx9Yb4AQ&?]o+ -La%8_kq|bkUd_)@[Ou[:fP hb9!IpL*wHCpfޯ#N +|%fd\p+zI]n蹻La$Q -wao 㿐8n!] uU_@N>#pAkh:g7u:w7=uFfWY+KUD3dh(\w…f둃Xhb9vA!w9w0ށt2Nڍc FM=NbtBy"3 M'sg~(b@ -5A bsADdN 9BJt"q9ij Zh '5!"RVDQ 1a `#z'!/RǦy8# V^2&܇Dnbq85HbfnNIn2 MmI&]hC((U⛢J,x5Ԥ_L&ă2R249\4QMr&^4(DLjfʞ qɉ\:m2~D& AeLn{"b'j(ͅ}c! B<01%)Pbm,(oIIv 0:P䒾X -9aDpau[rE\K9ERZB(9K,)VbpLE,!*Rxѱ -%AnbVsVZ%+W,J*Ud+H%O~EYP6%ŷxHJ6"CfSDI7Y J Q~nhA P~Ob۝Mj^Nr&A"4 -l!L2-@j2@,FPOI ͓ M]$A]0 ]| jz$Ŕ#zq3"/HVs"J`# sLI"XHCH8Oy q$ #**,A*J7H]p=Ps12,=sf2#:Kd8#sdI2#V 8ax#_FH}4C#ɘn3^H / ZëH?c9y:`F8i4ovXa1^MYA4٨1E?56xa[U!Y5HqE^MtaYؐ& H 1kc~)nFېAnHD78QW!oa"7' 1 -JjiD6a8,AG"C-H@ w@ȱC19W^`<!T9fZAjPCFG4r 561,:!^:~ΐXy2)2 1;rx!x[ȂގYH -ޑ*d8ߑ1 - M0㽄 t<$bz<!桿yyiT>b7HrkM\`6"_>ћ|$;Ǥd|@>e+ݣ{=B[Ch:DiYrF<c-3oI:.3p%bg_rf4ٌ&60\ZL$ɤE"3֘Ir6s&҉ș\#I84mTEY횬\fu*xJ+Ise7A -Kq9xd@2ʓ 2֣MNT- E39ɀKɋ0[k >HwF'i uq\n"݌.;|.6|3:\]g&rY2.ŕu\N`;I[; =)0'(_#>f[0'Y-rlOF_怶Em CP2(a$4-H E~gQE7hچVaĞZ0%XP}EBJ+cT#E^~IqSRm“-?8R4Dg^ -ؔXQ<*>8 %lk<=So -L[* -vQɋV0@*C6> JdƘT]EW*|mEV1zXUDlU*(КJTQ%*+8^z,& cX++ E'J^V4kק躭,k|N1NDh-])9K!L]kEKAb ڿR& ,h^` -ȋ&KF"Y/ -j/zp|IC|}ɴ];Yr'^:) /g2DXuZGV!P+ -F`7ڤ@9IDB0y0 -S?0ľ$ ` lF1N軇 f@IwELlx#)ؼ< У! h_ @z1c~ 6ؘ -#a0 %1cU=&F~*C~ C 0*玎da9d̀Erdp @ef+2xE'ex26ml:̌8P|yhffRaJf(nZ3'L2AowsWt&vʝ2;0^yj=uL9աǀ˧ؖ&؅Ax#0bH9&UH9<(M$Ui6e4\)k8PG 5A-R8`kjDoT3:8cLqq^ G_͝ohuyZ:kZC`7oM޹\7ކ/m@@ &m[ݗ٠]alPlac#5llvоl$*`c HFհ(m>y649@ 䦡չ6XfT46FF,7CBChXa1zlf ZK ->)Ct#dXoΒ 7/aN8is#8;GpFC3 -R1k݇1# - ^PBH8 5<wӄ؆/8~k_x1L #^xd HC9yy7ʄYwy^`0:s`\s6iޣ`ïs /_P|x A'maId@`tt- C)Z8U eZx:NHgԑY:dXX8]łCI:PaGq8vB(WD*:j';@slOVic+TaU`b/W!0U?UPL -NJܨ> -;JO\+4ɏ/ oЄfRu'G -{g'tO@=)#:xt C -]$ϛ0xلyk[{#&8Mgǚ@>GaMc}4ф78}$ dK}&υLQt3*?=?P^;`O`p'K?ٳ -G+aU bJDN'Rd*Ώ$\V| GS T$`!WHhG@~En ~E9-8oG^({@wbG٭`ea9Fx+i4]_#"փaFC 5:WeWE+1E35!]NEb: &ʻvz1s"(h/R3C ^ylsEkLyyZU"֭!*/./Nx"F*U)NS>^i`WPHvh@E *"@GȻ'x}r|hN$v- X@ -AR|Te뇍vH)ȉS<QR0mS씂m ERhxC!y뢭d@̀:3_W*9JK2F0E.J*zuDh,U)Zj<9p?\@Q@"Dl# ,Ex'[r yv q 'SyL4"TU8 "O-p92fҗIU8z곁 "< :sq| ̭O#B ->fF̮)du._b_T1/|BXtfӣRޖR5-Qf2Aw˴E}߀tL| - ]6G ɤY'/ VKΗDz WM@*fZe(_ -NH( 0:Nk,T|qÿ` L8 -ȭ @xԄ -Բc}AD"P)ÖA̾Q|{AI[RoQϩdȂR-n^vЃɣ PБjD7 12<8`j`ϩ8.=;@YbހgMPv ;8F@n]l3om0+>nh}@k .y [r8Hl)Vc*GOpp.C&Wsj5l?0$*k%9<="7jv9JnTO8j獗aG] p+'5Kn)`D%`:Qlk$:a'jE*/[RMM7y% PRƻ 0۠&~0 h\w)팇Vj(XѵVnww#n THsur \'|fIJFq] ҍ._Zf.*)6(zH8< %sf \a907l`00ztq@!0`] "wb-C$< UZ~1&3= h⾋d){]p*JN7\ `?o\TG=~}>3|x[i hDn%0K@т?',-Xv7]|,``0EhZ_uV4DQ  0R l؀Xte$.NlBuK(ЈPXP̀JP#j`3i`X/AXS N0ܮʫ2=%3`%m#Oۘᖁ><n5IĀzFF 4Ww7ʢ /f ]!B .hԃv qMHVZ\\w8/a7' )m'{jQYe'"?Z"9MGdE0ٜ4EЬ\ (^5^5@Pӣ9aFs}%\9t -tcl3x \ - '`ʃ/ 0C[ ɑgI D I (v -'c&r!bbX᝹`!;(S[ @.,TfS Dxc&63uQg -V]1\R q#r(O;4P-uڳ,YfyҢ/,|jCӬ%] dr$p(`Y'h"I3pcrA,nd;nln[}oMٕec+(aWx]hxqhtP~4%ݫ?R{l -6X5$ ΩmӚ6W)<3u6YN 0:>KΏQ -=t()?;~r5 #֞d? -[C$dx)ɬ}IpE[.u@6AeCA| ],57UE' ,te+\[FkNuz20cdBM,ʁK*e0V-FjĘH1!Jo/ Ran@ܘY_ZKY9uZLX7r*`u3e@z] S.z)9k2EP^HJh?x؍>Mfi&MWB/&iCJ&lWPFH.8صGKI(I -0;҂G/Xz C}~:R&t~5?KJ靫pa5fgbE(?ن[#ɺY1 4Ro}7CKRgOtaڂ̌W<s XU\M:\9<^Qʡ}?xH{27M"|=:!Og -da6]}UyTyaU -TBgh~WFx]2Xek!l˕OQx[I!NMQVu9V9ٽk6 aHdZOK}P^!w%Q=;)"ioR|}? krݭ/ONsDG;Ua_|~2-'v%AE}}礷79~ QX UF'z{2i˷uE} &y2_̾# -h0sTguXf߁񰢈 AлHb=QScư>`~&aձv<߅!UX]b<6.m՛,(]i{`ͧA‹eͷ.hf~ b֜H̯3{F4ǡm+dܦ,LSc*~ -#(K F=̧ QeJB] Cob#J&lGLAcА2elF -9hWfyuu:`#?_FX9m_ [rCyFR T._ nC54H`&:enu&kSE?烘7aލ5- ln!6ʸ)h_Ȯ򋘠Vz=s#WB\ϰzma4, N>/v҈Se}E>6owq9OAg̗I14/%_cWH>}izCLRꫥQ6ejB~rg$Hn1ޑ婁ti1޺v%Tn"4J+}tHDѦ;mJQZި$w8%)XF=C0PPeYy֝zTRmG~Yjl:%܏I1n± ܵ|yfJE*]MH*%0;Iف|܂^_DX&Q];y_Vn/,QI"W(8TF/QBCi=b0P:^tRa{ #Pِz,9nN& RFZybC08j Gл-BUB]ǻ0u=ѢՅQ(~q溻vUV v?k.B)GC?y3'SwʪFh阏E`HwyTG|p('=55Veg?Rv\*w Gg=[R -RA_qڨ;㒰YwX !k~/el :5wD+vx:@ &mG\۝y2F֞F -v֮CHvr&Oi'% Eyt4γ;xk*q}쬓%tzfqeO{E #BXLY1OVsЋ ƾ)Z/{q)-|za3֌}{a9̑Nzfq|6_ٴ^5O6!fu8t} j'%=W͔ÿ?fu -$—yB8f[8 t`IW||z(QB~PV$BDaurJ VPTD,Pݘ@ȱ]AKoZԷq'cЌ-&J,8zH%AO^z- -܁, iNT}AvH{.AFmZxA2O|OGZIv~0%nO02ז+!3[{[ĝ@GinP?R/ niMNNYٿtԩAy(ԨZ7˃nY -yrvxP%KVOuu5wP 頾[S,FyKYpP7îATb%dw8Nt8z -wR=yS=냺o,<58pa$LxMSwhy_n2.o(ibh7&c3tj/LG.B#h x{uv GyQ!st%9~_Y3B0sl?zK<'|EHͷp,|ZJaw J6'.Rꭹ9ۚЬ`*U՘jvXj|n9<М*_iH9rM%wxNedvtѠU%l!a34C c+TZ=GQV 4f_w3J g$f:{˯:[/. 0Y/ȿ\tT`p˗a kԹƿN/˴|F5 Ou{i/V 嵴#a"';r>4SBBߋc/gA;Z ~dsWjhR Z Nr6~fqw$@{ \qp6Em 1ɿYC =*KbyCXZ%b.4@5"S>+| -?QsGp |ݠLQh(cՋ^>c>|)2Iy>r]܌y72'Ϙ;C62+G`^fȤ~em( [I5!]R2_-GL埏yA#uADKZABTD#q-G,+-)"4D]"[O>=ύmz3̍򛽗 %x5HU_h+ԅ̀-zm+e{qzSi\( u8OE3 18,!B# ^\C;M]<שՆthqݹ1xB},+Q.?(S}$IzF!e{ώ4V<:nR?VޛXRZLkysK$N`A]x -߈N&=D_ֈUBuZW - н|Kc)bwΈiu^á_p?KX B 憋¯D(ę -B~SÏ%_HgCŒŔǝU<"|'@.pK;h [N Pn{1Inx¹.D@/az")xNt4˴q̼x)ͿM* -Gjⷎm>]]q}࿍cGa筧gEsd(% GtF >@ec}+ -Aiwf4-~Ri0Y*cp7iP*QuފB(a8:H6Zt*UTʚ߈^~'94MB"R_ъ0,ς2za7ut7H^n2"Sd=E{!ؤtxM -^F∭'/qY`w!1 >cՈ뭂4ׂm:\NvT[2&놨>t@rgJ_r4QXa?OW2W[[5Gh4\y]ծiƺk:nSXŮ3LoUʅu}nTOa&r<5v?jDp\݃Xb)\c4 |C5>ꗞUjkG(MzU--k=,,wZ#b.TCM.1&tg虵SǾZ-(PX!C'\iz!)XEmi5H%z2;$*.xb {d!Xsh%gAHxh!px毑% =XsRh,Ӝx:iL:uZB:pN"Xʢ`M -qSIP10b믞K+Z3:smRweZUqFe6xN?b} '5Ti/"#k$7K15֢X"L-: X,7J ֿll{Cu-L2X `q -;ȩjk(Z[z -ݿG'GdEQ,9SOըh tEE_aֲPu22k>A)V۩VtJRj xJ{˰ yz54=rtecTuw)Ⴔ!?շ*hU+>(nj&Ԩf/zarX+ NY~5fIVA4u*)S45GOa=--%ǵr.*a{!DشQ VtT/PR(Hf( -l^o.|÷Dy_!h Ce}L2)@ ) 6-,x^&a;3aJq=1ʮJ)k"[h)qHLTvLLeϰ,i`ښ:Әja^+MwY9VSAΣ8C|!f yt$aOvӖ?m*Lu/"1lEܽ0arACVGmp„ -UIAƓʞRYgw`5ƍT TS) -VUh2O>)LŎAsHT#6**f4aO:"#`VY}+kjopJAc/+VzKq@+FfI+*lVGkkeH~K$[1!m[-@/u26 aH9ǣ4W]0Ϡk2"S8\OcZ4@^ᲀ}\2s -r`3snF=z6RR\gВfYcp,w2-;}ѮNo/j'0NG"6#jf^-g-h@[VyC@Uq1̌-}ɉH= זUZRjm* +̦P-H ݲ7 Pՙ{oerY<pCzn5O^}Hpą@+-. hA/Nj=GlRN悹ƨc\RsvUBV]]{Шˉ -;,vjMJ[L|v18_Cv'^F?!9^ Wb^BOgK -V6/?A)%eJ7]QGh{!Cej}4_ljtݝ9Iҗb~=S쉍 ƺQ}Jƿ^; l<޲VD L[0S~bMck `J3LI#b+ғTbV`o;<-8JxNNC@+jL.E];Bqp}^8Kood{K)R{fqT'%kf{A)/SJ=4-#?ÎϏP +apudPr$h ?y(ؠ肉FݭgW)^֥ԡyFMCK9nFjy%Iyԣ{ߓ%osrauQxtD1lf}/Y=;U3mk3izt4$g7XriIWQl:]q7LTطk8UnfjC%qGi4\~oL&Z9td4=~VMuzbw3=}[#?0Y932M7BG鼤+ﴧuCGg.XU3LMMg!Ԕ+Yp\K0>T~Mʾ<ڮT1ֺRF ͽ,8jKjpY\;[fMN%a[ڪd⻪H9+v1,4ѝNgi;4)xQN==(|h;12 &Suۺ3wSn&&,%uJ]đAސnV%9%\mR94;q]R*ǫn{90gI*K hY_jFPF//h?&x=I5QAVͪ=xoRopWFV[(A$!lfbh*u##GaK! k b9ծr8v+WW%)T\oԞOzӪ $q<9OaMI8:W<$l5NvTGiĺ9ue>?>l68~*ً]ٍrXlZd!~$3d0e= ~dAKrFmH2qñɘdSd`쇒3G:ȷLxQ Rzʯ-ͬTx>{/|9e>4j]ZaOW,Ay9[KR9Ɣ*G| +V8YӒfx'w88IqtmWo#.{aU3rj9ɻG61{yBL#y{s|i* (<< <ߋ$kB.` @$(D!4A  +,@< (A TP<@"3rj(\e+,Wtr ^藣6-Gx&UIf%%=H͓Cyb8r%١mjgϳ3ywœ;eNm4xUTW4vLn\>9g1>k[K;Ndun`{H96~;R}FGM;Dù4q1b~J<=ي{%͙kqܣݫI{ZECys"SU`"l?;f8%34l6vT7ҲyN3<ÏL ϦgUJ,?k8 x8fcUtHvh6a݈W6ة9G8^y sƫb,CWS(-.˕« ^J"LU0p(Q>.ԕdyTxO;YcCUs3DB5x=}eR4i5GdX RRJa9XwFU|u׳e)oJScgVY>3FY՝n;Yަ Svu$-Dˑzե2GnU[^Q9SzWݫIwܯbgKwN#z$afDt2$3oqSI$II2?avƗ#;)MQ ̳I^vFK3N(&ヲ8M9ӲfQ,V8t-yW kby&Gc.х4>gWDYXl(jͽLMZ7ŷT:W[ֲW{'qdRj4*Qڪ)iԳsI +fhfY3H>S"p:gG1x +Y!5>0cLH؍uwlq\ 6J99p iOL2Љ +üSV(b+f =>SnFY#_9԰NR)0YTY{M ORdcT܇]II] /nz!̳jA?lƙY4dZH  +pȹ# {)٧72atq`GM!O~bCC5UF~R~*Q͏+BKQs8=QH~>c] ++5rO0]GeGMTs{ 㭍JojALߨ9c|;.M. V11q wQ9Uжڏz6-}۱cN]O+98o@ceRjy-1X?8Ezy*R^1ck~&\0hH pw[ 18=e7_EC@ sEN5 +j~qzj#XdqY|ϢNX^2 +2gsb\ѹ 2M'ª?jN4\ +2TǸ=b̜a0#rqoUA4RU4}FN=8BscОWdNq\=%!#ε~@r:* +bb@bPL_eV1Wjf/|Z>e +Y!\[ +̣"9W!U,t ˕\aTN,e#EdMN3dWpʣ! GszR4䞰U4dONa,p!K@N$h4H\֐.X}Ր ՈP!C68ɐ!0+i0 "S@;"ˊa~;ИlbDB&QˈHo{iXfKzQ"oˊ0RU$0-΂0"󿙩 yIE@1>k"|>J_,2cԣ<ƳGCG HO-[dmkdsɣ('9zYo4jdR+SG#J䢇%Gt<&GM[EL4dE嗞',]x[{q)De0) <Jz@!a)d#OXuE~l\7oH9¸Y~<"RVvt%h KGLYSkXwy+"k%{,Ly?[PDTL7X#B6ntVJUřR,;c2\z ܺStu.c.+~ g/E4 f'g]ԊYc'qf$obEƘ!=5!f׷L3( F YlF 7}7) kɱ8 ""s4i.:O΂/s]Jy;Ή5[g=7?hDEwEDYXsUgw1G&gЈAK@wA 0*4Vvd" .#I5gs\хDQV "6xM-8Z<'-= iѨrH#9޼%) 矴YOi)JiTt ʘth0]e i3仺7؜V;;iAqi=` J(oièi@435J6rCj!З MB6H@'@nI7a^/D}r*5Im0h:%_8L00#bAg#J: qJjl`wY> I[Rﭽa50sXIY lFI] Iݶڪsun$W)j:!䡸_dG7Q ۉejl!<-'XQ7Qo:xcwC HQ +/ oՇ왡/%/2j{9%I6DQWzbM8wrwk>KxPAݯw4a:(eߚ<F/t=,u\P +О9EHg:O_R_ںwi:6ն7v%#Gl d[DpmOCmk҄A^An{)qWUXֺ Xapnq8)% ],[coa졕!T_V' 6d#"2$yP߶G|0n<$| D,b-ɱ +wT"3rYs4}e9< Oܯ)A}Vr~Px6ȁ݅Jn>.iVpdt㐃k쟍@k5'4qc$STTJg{|ZTAf!Ř\62H: t }%Qe9g87\xm6ZHC6R8YNGM&6+XV*WDL'8v xV5<p5s^C7 mY!y*f'T=]p +Z3}a[\#wz)!qgk#,WpfmpI1gV UM3?}D<6\1l[`jqAx7܂|~G13q!VTM + ~XR-Q$5% h$Ot4s)Mc+_K.Ar*~ʈ#s"wĽuCxk2qr$yPn2 &(AwM`QBĕ1ܛ8LMM\#ɓsG+g늀x}/BMćdRIa%ϛa]qk{""/8ufngK~/S `0GcUĈ[.۳K1#.1Ȉ3TL806E3#G7T@BQV[88(Ԝo8qe{+đP)cx}H"\"6R\#DC,[LnkB` >n-xX $q3 +gDZΧF3Bя#"œ6< 3A`ɕukrϟ[,|UϩG\Z.%9/Em3T1b<)%Ap|X/>" j94VQ>ݸɛk,@O7󐭏M]3\ ZZ8E}RЙzХ#eWt\ϥћm=:VIg#(Q'JFwfbKWG1p^gtq/) DD~uFu7vwUJ>ѩ }/^3 $)~`1|۽|4T_K1{6]gȓ/މ*k.^%xm_tzv>O &VQӬ]{2 -!+G\Hb?qH1 !&A%Yʤ$Ǧ0͵qƝ*7Y-K&G +XVщC건 dɑN\74( W[EB? m_ +ؚt? +.~~ wv"C[]\TB<lwprnygfy ,/G4i?lݓt\{n*Gi1O>?:F}YD acB"O48Һ?Ǯq#bL6q@>FH""?FNI$<pxjBd¸V@(P &0=D}H @oΙ]xbQ@=*D<- T@1yxKl@;{/@Y (__&2tjgMZ"}t #DB{LMA&^Y,B/[3c0<&p^1$Km(X]eaGb0nM˳oh-dR݃QaR+SmOF6VEGCVS4l#fpUoԍ=YVBLLP}L(4u>\`b̑qso#/Q]IA]r@DUf'i\sBKr•+Y6cAGNX ȴw V׸*||1/P2R5>Ňo$ic($؆P#Gk]\{Wk[?~vBMnNV@9)V񯧕Z)5M d6iS`/aR %ĤB[,7"FM8sfY?K`@ey"Pg4EaקzGy]B~@#BR0zXzm>tb$LI> _"BY^2]Κo~2]灁N~z[w*aTd߃yK <#NB #!mb9|#2Lxqtv EK q5lUᨕ" _`OhDqIk bRNӦԪ&`B2BX;{aJtleRuONF?x4UyH`ܢ`ortA0<9 n%Q(@}c񯼾¡`(j}pf JNHı7D ^Fk4fϸʀJ 0 n4H(DJlyF2ƘUo@ZQ+۲2iL+OC WaSb3j_yH>өWuzi%{ЇZ HRL3&P`X7)2X}.#GNL`'L )mAINW۝ý"qh(U 1M;i1Bg4a9.b{{B6*G+ٙ23RI/H iԻru(CHWQo>%KI `_;t5z$9C%Ha8>5OR;`blvbۥYUe-UG̓Ehm"llO5d33|KPoCqbt2:GaVm0Jq_)? +yL W+ӣzҰ6»?F.6wJ}m5C`L9)ޒ.G۩uQYd%+ !7`1#.a ,)5vjt7XB 5J +!]Ʈ)>@3, ]*G6D;B(W|=O?˺kQ0v-GBLInf& 9"ݠ^Kop؄2t W \<@'zr0ʑp@ 7ԃ42:r~6=G%͇K1"^DǻӍ2 Bc찫g1+ۨ!s͎dEYa $\DN^कP$I|8dlP3iZ[ ʄ\7`%ѯ/R2 x;!.iI0z}bQׅ8:|U O!Q'.PlLǞa&sm·;An eVw/oNFXe۾uЈ !g,jpů򦡊Hmc`m~zMsUxEs04 lݲ{Q :UpƦEهI0fXN`=Zξ,!/nX>k'j XdL,v0ug +j|p~Nl)\>z[;bĮC 4_V7CrS0 +Kb,u{͆0DVs@a3Rޤ4GЊtTIyŻDc1v!@2g=~lMRTEsG;L@vZ‰MR0I'0iJa(?]4fB9Go˝ KU c;i;8Y"K3JR '!)WZwR5D Q886">^ ΗrۻKGZ8˕ +M2SUgHgyDB/TD[yVj}d4SzAgSXuDaԋ+` f3+BtPow(u'^'2jB2/T*iP;:~]rSfJ.?bj3ډSӷgui@G%…%Wc* 3rV?qc+;!-2E4 j E(*GppuN7X'}k?Hv@Ty9N9'֙V^*8較> 16 i> k|+-RblJ=잲Tp(A]Qȋ", }*m6aq= Hzv`Yc,8EnFY֔~4hEk:3o8n(%*.dԠ"(,HI ƺ&>do\(R&][Jyl{D+uCۥaik|L5Z$é]&䔾}h O^ptWEHj k +n YuCr0vD~h9@s-=qamkPNezOERr{K /ҥm3 +riT܆Yo`v/RPmG\PBr>&6sMuG ian[5ruhB%bOu?ΚFӝrF#Ke +KFK_2Ĭ}$'9にW "v*HݎcfLU{z + :{2J-t^†yjik!#'j4y6.жaԡ3Ur Y!kky8O0WprH(FBl[Au-WUL§lV(}|=sA5i܏pa-.&&V>Yښ\:凹 Ig'"|!㏲1e M0SvC_@ PӹF/\VWkGFdbuYڇႰ #J,I//$ꐳdu܌5r8^^qaV;;#Tca{BhO1m@Z[8|!{d}*h/gaOT?h&ɞNr!8ټ`N/?rrcj*uZȽ̤{zP(>+:!v(hL_x =#&l_O| y36ȚZhP~lY7.[}*UX+P[wNziޞ] +ɕ)?]\f.X|ew{gkTL"ty_=' 197؇g'!v ~?tB xbA\nd7Íc0;9٣ }gƯ?a%؊Ʒ $x9N͙km\l;يg kL] {a^ct<Ǽ`z!\OuuGB3Hۉ"K♉Gi&õȧwɟlSfx<|h_ycːYܖFʛu}aPUC-c@0;O,hgetan*P1GI?)y$+"7X7y4aF`4⯗ +q$ @G aLtQFZпP!ǵ.c%wjf Ѕc(Zt_F^jluD4p=.xabYEPlo o_ԙ,Mt3QD2Xek@cP%q8xn*iH(WU\A]7F*NԪ&EFTLV{D^O-[lg8݁ȩfQݦ48ݱ _SxQ/ x35܂3]@LWE,L'MJI |ODDNo-Z.VP2 o<̊Ok2PpU >j:ˍ, -']el'[<7MrA#eJEE@iSrA +&v{XTo/LCF&:0K?l6R^9o_k 3[btN 29`Edf..+F:'rA]`A89F[$hpEQ8^X[HuKy1Da О$eSU}<W='S6KTn{= +vtP PQ / 3:fA_^Y0#&BM(z#\+l펁9 7T7˄T +s%yT&J8UQep2;곳vP^yM7`4d/;dsIifdpES +nUeuK9-u/ 5t$xbp7\gȓKaɉЄhA:FndF0te֜{fa 风(aTv큚#, 0op}Y*5,~ +e) CE75MVS0rDxLd/xhN 5argfycd)2c TDɁ>dJG.}'Á5rġW>:z?ᆦ=) +9jjI3KZ'qϪˤߣ +j%"[DV®97D.)W|`pLw˶†0 +;qߜr* ?ϴɂn%@_ Rf+Rd™@{R2)FJEɮ$!&]pG켗k=z3Y=x xjuLX5J;"փ+Z*JdJbq~;6dQ١ +  6$"wTu*- §Cr$4ꃗ G>oJGw*?=IpVd9A9$2fq[pѱ(2P=;(N#6q.s%X h-|Ԁ,uѨش z`;ܣ4&_Ѡi:q3P'9?&Kк16$ +M3.(!ۨ!;n0ļ%nӔoOmSCW)A GhAoBKu_7Q{zsų{myB܍ހ7Md#Ώ/r8ê1(' йW 횆e>bqJx[quA* +"_. = }=Y#}!M#$^f6_dbù% 5s.d$8_c*C jEBNY܀2dgFb6f 1 !*ۘRĊ3{z(\k삻/x_M{ Xi!:cN,Vi/o=22 A`,40ϰF1q%Zek{A*#KU‹}H@`4Q" ccIբJj2&b#Cf|oru,<EANG&-W<ω4 +TM#dyqEׅPkg8垢*jkWŀF+eD$] +U],ެ仨~sėLϧw߷a4ʴ|A'8l"Rv@c4/m#Q.hmNW8w;tt@g/Ds,3]١;qK4WE</>V%Wɭgb(,y*wxL4&>߁B2KoJ Փj-;eS#$tF"ty+M! +Viᷫgx͇Sщƀ|wJ Xc#n\v +M6U:19%2'vA&YJa@r\k>8H4ɸy>V(BLiAX,cF7a(gI VV(6 +)L Hsבy,2,x-1SԈLEe{}k2/-;*Wy9(Kxk`%JXqWQ?N.VƄ*<+x|jb PQ"4KԒtR5%J*VPx,y>ԳOI#T]y ,Ɋk4$"v=Tٿl:KU +L*RO9fYR +{9%ohgR/D<+2[`rC# \˺(1^ ~CC2SQT/+|u X-0 6LΤnfiHj)it acnĞG@hJDQrOykR(Մ`!\SJ C̺x_m΍ 230K{_|d!n,g-/;8 \Q+ e C8ZiqXEy|  q38/#Il# J9VgM4r}qn 9jׁ3dkrj1I^sDXtt@8|tvA uE.!ެIy؉l,wr3 I +WP'Vv>x/%U ǔa7ԛB$*56ȫE: ־2#\%P+n-s*og4CW\S"a',fޥHx  +l<31K}i 4_cwEfٕ;f*@x @ + bH_dy kRMo߱"eDGFUCwMF#.S!)%bA [ڌyRőV)kA{, $+pi(,Scm0diH0ϤɦDlȘ0)9!>MS 4"Eň:crS5I9+YFATJ' didtOâ\x nh>>IXr,#fM̩ #~8iK4| +4M#Y"㜃])H3$9X6`US(f(:83/bdW(ޅ9<p䏁UNA@ܼb9% Xxv4tT^:(-}[aa8BLeN9~BHʊˮ1A9ZPmx!e]ǧӉ_Wb^E/€qe!O>j(q˒#%ND +lO1!h,OU?/SB@^ۂ|vM~g_&?sJQF%ב){N"rg-X@%ݛfwb)An2O2d,J\&^"{.蕲(V(.^Zc RкdsD䂅(=t@d,]`{KPʗw Q2'%M N˥?Wh׏,}oԓN\)2C뫔GR9uJBSJ`|mdJ5@ %qr:l!O:k +a-#8g0S芩k]0*aS:J!gsQ2t*?PPoEʄW̠>h*!F `A c[ e/ Ԟ~HYEM|G Xr# ^;_U԰e ٔz`QPau^ ~ЉP\iH\*` -2D祡ꕁ%JDIe< }V>2Fs1U>e1,|p#q +٭R%i.g8f΍zE:_(#2%dܐP4A@mMz NMs퉳^V84q"8M)l:T&ۅ@<5X$I5cd-kE&՜:k٧}u7Xi|]B#j@-wE=䄲)`Ή,tn^,Sv+(Jn ]8Oƥ11UvM +ie>YcK7^|L%fz*#=Sj㾠qN[: ڡ-,)CN|,rAAmj;B`4DħwgYo߳Ҭ]!agV+!v%H8l=JSK{ Zv!0E$CҲ7e -gzPԊ/&s,zd{"quթ?ӳA@S[:O&(ENd q.e52oY\Z9YnUv~݊45SD7/~Hp$21PD~W:k[p-U-KVf.8T@ri ~W#N1ʽbArn+$ C>(u6j f RdoIA[^Ӥ':"b3BK6vWCL0aP2ai$`zi^~GS Ab<,u[b4w,mTr0:DWhh*e)`)sXzpa%Ǩ}-GWQ؁D/uqCq.U8P +k5[!oF|YTHZy KUQ7 ) נ'$e7.C+j9e+BйYvn"(o-\B7;)3g[ AZ&MZMSEy.䊏0IOUhko";LRb)peg*P +FSP~e8`9IN3@J$zH+2"0M# +|{gOY-k``.sPj}TCGFsT/t8 Jv6s|'èJBYețn j#MSvcƁ՞/:GD +jcM1>T  a[.[;#+| u9x,!GzNtM:O=t_-J{ian +2 WZ^E NL=iJi49 Ưa7p6%pUH cn$*ˈ.8x`Li\z$Ĩ}DO4H\›4P4&<+AcS6gLtHLa (&%rdY{O[i)!ZJчqbΈLS(4_]0 >p[bDlsȤ @7N$wm=<NI% iQсLf?GԸ&bG5Ɇ*eWcb,t ɝҾJi e 9i&FrNtVTGY388)]93J\0ɇ4)'eL +K2^gM:c]{9qFFjeK5umQꀳGD/s$`glF"NV&؍a+ +"jR1T_-c2~ @ -^j”ZĨ2;(Pk;N@$tc 'ip4q/tzS!d 5xp'"|ꍡԣ_қb/̍9R-y洭{K'&F(7_E8n.QO[CDx#4KdQc:gQ&%HaWGkǵ0b)!j-Z5ݺ.Q;C Ɲ[j/Ѳ16h۩o\5k6[L0U!Ia!GF[s4/*(@~gN0RKXB^%@Z 9}5@,XZ=D-Kx*,~ Db]VȀ >][EM[! _Dt`4W0bz-͏4p^*|uP]MzBk`dỸ*3W gr7!ďCF OGO0^ef犁rk1^V€^HYNRAiNۇ}0nPoHQk70g,BBtHI-?ƒ@6E]\}[/>o"' +43vivK :HҎ>)#5q!yWa&uħ/'5Z)ܫsPhoQ>mo'Nxi+Eğ//t>'LStΈ~uW1\u3 _Å`^^0CI]d*~Un JOC솞QDH~3n˿ZRNV /Av99-IX\׋ #ѓHX0~Ug Cnc1 rW5.ZA5Տj WjHnQ'{ 4hg3Ut~r+Z/ʻOș>:/&J٪f7N#w:aVc~ +SJ>J(̑EU3XXʦ]hzTyW[:m׭jC>Kzv^Ec Iᑚ4Z`Lrj}? fɫ`n*} +x:/>tڪ[c $^-%HsԃζjT \-;ޢ[YHYL;Y??'SYс>Ip1U* +|:Rru nB>cO۴7HaD~RKMVnIYi3iv/ԉLj/ sN=\=RS,y HnG~8-"$[wʯO;_s8:+'?ni F-~*U+$$*h7n;AJwSru$Qjӵa{D )2\ހ*tȹ\)Vd_indyUᛞQei9CC Ku:V^g_A8YL rt}jn55=q$3q~ <ᓋO8y*D͜?3| !qXW (/@-g0O2c~Xn'vf򄦽ov\MVNLmB1nFj3Z믡 Z:<~%I+J2-̘g@tƚr4xUn_E1AHJõ&Kޯ9G4:cܫ"!xãfKe2"{8{^Kw5@JPʧlg`pz741.[Y,7=I5?MpzeuBEA & &׃8HA N)ݿr#gO"V^pLm۳7o1H IYdo%{Z/LLjy17Y2[JGYbt -MHa<綢oP& O}d}.~1{?M#F84Gf4:scN}zjpMta#ϩtaUҭ0NkF ,~!ِlNA׋DvJZU2pRb +fvb +!W +pz_$dU)fZ NnԒ~/H@!*ʇ~a:%/ A꤯{jZQPTe +@xF1m:Bc#,?sg ;~đA ":?zs̒|Y{DΰޚT5 6 D![w٦hh4~5 r1އ15PC`eK-6[PA(GND+P#q[h@)}`ȨgB̶z1do`*Vzo /e )G>4b+DKTNVq}{)K *BxUE3WrJQM_ +Jy DLt&BkMD8)_׀>Ǵ5_6o! 8胊j|Vj_cnb< "oI o 0 y27rӳTړI2PV#F=JBbH XixVm=VbJݭUJ%@o6E+I;;t*fFjB +Hr#~J#$)m_QX)GP)sQ)S fF9MSpVVJ>Ej?/d*=Xu{}S{Zq{:ʯ ĵOZ LSFgyD $y<1c:hŗĚ2pTt". +NDYkfeJXn2ZN=~gUXd1{zcxzcpRRn>O'ml\5"{pB aZָYhT^ܙlyx!Ck_qߡTOA1fJMu]5%^lu^!ű @3xBg4" n8ip."h=U :Z4o˷by#Kȗ!*m{o?cs0>333¸c$%bLi\SvvzQzqۮ/wOzUao=njyq1=b$5{ʉꨜg̥й{9.bEpV:oΥ7kwvE:ޭ:(y뽵4gwniƻuڛV|9^ﵷb\kbkm=g}[v~tSk|{RlT+ZKRܩv[j)[}-ՙRZi|[\W+}])ƕm;om1:W˫wW+nZ{Ӎ+ͽr9f~^sV\-noַcJm)Z/:K9{׌ֻjګ85ǖڋ+T/i[LWl3k\qxk5xҍ;ϓnZ]9[ys̽>wNv9gyg~ym3}|꽹{[kuw^}s9lsfQuRj'wR-cKgO絖S|=Ϲz13O:)WO}y;۽N^'cj'9qwM73י3\g>l'vLVjSlڋ'_Zgs_ƼN~15W:o_;obkۯ4YuYu8c7g̭ZVOwOXOmWg_'ՙV/{v{Sc{{)yk{{4YAD!B'4"14&x5Dx^FkYy"/ 2HS5$ȃVEipY>G,js¦Ğ4+bˇ q"캼]VmD/1ׇ1M!,mC +Z@B{1Xܼ$eǬ9[*Om,-:aQ_HA+!A3ǍD:!?pVަ눨s>ȣf5U!]+|xyʤCw]LD g UQL*;kO j*&{ cj!{uʠ>ؒ96YKC&1Bz[dؓi"L?L0?L RA| sI"YD#k>MLj($> Exr6 Z9^R [41Ơ]D9'mU?gleyzbC%cJ)JQ |I"SLRHkHCU$胆⼆(†Cr]Ýa G|hJ/Д`)ɐ6$Mͪي"sH+&2+TQG6/N^iĄlY압+J.'aWv5h"6DA5XBVI9+̓PiA"Q|hJ+Ȃi}2Siӵ$T E I2N>8#l–&}!B'A,2Q YO "ꦼא $OŽ"?Na2OeRLR ;d<)cab C&"qs +98fNAD|&2櫈FpF'4>b!S ! D(285L*1L ҏ1L{0 },}2BH T!TcVجJ-##\ָ/#;R1b)"g1cH!<.kiW0OȆ' !A*sĚ|Q!+nj[ڌ-oȖ6eGL4v?B&z`ȏL !Ia}0>LI"!F$Atx#N׺ +d zTGi1~^M/W_mǺ={H[[kmHɑ:s[FB{jz)73n|w7Ot{wN{8Ͻu:s#kg޹;>qyqa1޸3w^-Fv[ힶwvמM{vN;δձ;un3yj1|s=5W5[gyl̵ΘwyV[kw|=~Sojw67wnZ<촛Y7xnsήxvܛ\kʵxk#+Һsg-FZϭ|ZzЖު;Z57bg9k5=74iY;VL777΍j;7[guZSjƚf{gqwol'1{o7Yϋn7i[ܱurkkݶb}IN-|n;)ޔb'vg<{b=w֓]_:՗kմ\^];Fʷ3tflﶜ_'io^#=kV[/rnyՑ5{9S[+ln{vkVnyƓ3߶s|7߻Rm[>wf:H[kzo~m{7Zn'Ti6έxrZrgvK'Śo]<ŗswRj3IyN$շZk/ڽ9FYw'O|k95gVn{s>qt繭wm/c$Nf/8|=^wvmy֭-YZG{/K7+Fz\ξ{ߋ8jm;_~Ns ޗ)L)c5+mYOvyVϋ/ϋO\flΌifLbyq{k1zo<7;ky_5ts|'Vwl14[w#Um|Os|Kk֍.:S^:~NMs#J'J5"juЪ̺g]gwfҹ5Ƙk5}vykZz֝7ۋ鴼=]oZHb$1Ͻ^q8|9U^36mcggtIuLS|;[nC)?TU[+mdBcXYCH +t$eϰ6lCu]e,ke (k,؉>I0 r )e_DS&o~"סc ܏Em }CxZ!wl#mCwXJFNQؔT>eY?+d99aRN!)}¯G-&,J ͪs"kwʤ(/-b-ξ +%e$RT_)y2SFծ>GQI?c9r6ȉc6EiBu[v`eT35E:aSW*Lij&E)}a-u)0ASSGPH~CGL!'P Ԇ y$ Hn *ʠ8B +0uR| E8bOMWSP΋Ae%h^F" +ZyES`W&s~1R +R]]*`ATن%BXNr@5zM+MP \ ey*}C<WkgJZԨ" ϑ'θV`bgXiGf f hgm\ڄ U6č}0 7[Ld4\e/@7R qDsp" 12g"~-n%HY| ?D~O%!Em}< 'eZi,hk"!%mx%m"0nR*辆*Ć), |,Fim8eK0g,J4;#Ax+|Ip) {¢$ed)?iYߧ,h1;dR(OFV%M;bUކ.̔r~QfD sʚRPyyLʠ:-2EgLɈ1:fPM҈b &D(yqGmJ1"uĢH-'`Gjboo[^yI Ta&+XCED!8`NFH,NC9t]LAPgq~[6EP2VnH " ?q~.xDyq̞Av[#*mƁAi IF}a~(t6r0 (A92N"1sWHGXFRH_HQ>O 5y Oqy!:/rlePs;cJۿHVԆ?kYe/Tھ| ,oCs_GY%`CxZvber +9^R&i@jYJi%-pC[2 +5?a#Q腑7aKB2I1C%$OL W%PpG7}AObJ23$ތoDK *i_yÒi& '1"eH 1IFjT%C3Wä/!@&2)fD r4+#At[^lJaU@pYIQe<3+[<+<EúkY+E3RB8`PJ (iHE6\NAv\cO41?mUE28CV?0 AӐCVֲ+l0w ,p]Y*yΦybDz]hp*Jw^W9d5)5UKMVDU:eRږ?ʠ7NU#V5$B¥B !REPYy 63Fk5WFAuZ%']&J QL> ,lcOI0#X ~,BBVU]@ē B4Lh!Emha}&qĜmt53UA4YCC?d=fFKpGmJ1ci$H>jm?qXcNHceHS"X ==mSG"W ؑ9&x.hY01QeʠS 4D&`kkM 0!DGa"wΪD :,Q7[PB#1(笊s"s Ȟ1y.[ I*pD&ah$ +Dev%yFk4YC|FV^19aOiZyάF^؅ kGQ> )l~U;fSdݖ/( -vI/1'A(%q|X"olT$!9*o|TOV9! +u})2G,yr"w̦YDt!Ŭ$;hS  :,$eFP/ -8/X~AXr68X~!;0S6شrX9BwY?YoF'$&"Cƫ)f5 +q:kOB(2D裆'Jʘp_ٸ¯lJƢ&c#,j-ԍ4y!$At\Pް) +t3zc0o>nT8383Ug@d2O#CF2(NYy{bp-g$9;gQdZA"z`ߨ̣Y'цI"edY+oxDyavEE&CD]F~d0v (i?G Z +t5sƢġ<./COA>kW䉺 +Hh9R22h #Ƞ9_'ʢ1%mH 9 +HD +Z%Pn|lyΨX:"`-Cu]  +mRH˷`V"X*y̪ȝ(FOi}ߣF>hOqrlI>mV~](߃f< +0_OΆ0)Vھ\WUa3;h[y"Nl-&!ZUY9J +&a /45 rI&Os%Dx490)k~H)}y_c"qx$C9Z#H7?C7p7vӅ9ksvE]}*rL3y +`3uN1R:!w5*خտgg=jT2(NHBy Ц3IOm8D}خq\㉷-߃V{֮F,B FH"F]9eOODHʢ$aʐD́B +Z)d{تtXŔ3K1e-#Y8)EKH|b/r#.9T#ox#ot0}LocX9"%`ho̯hB]0}TJL]W$$]%%dQRpa*wʤʮkH[ɢFkP g 5VBseI2K%;FN#(gA`PQ+|YUD$7})/})HFH̉<5yM>O[(ä5A7YMd {"wʪț-QƩ 8 8^Nk|!JC𯈠A ,( 'ed0o4!@ !H9,톘@٤Tx$M* G0DN :!$Pv@$8|d,@0@ ]} 0%ISD@H#q+ u>@?Q`ODl9rWwAŋ 2"e8Td/(yPC.CW*cF B +1"@S`3) w^@xg1H "XF2*p*l !b>Pj!!(D7*@R 2HBVH!'(E,IJ@zxD rXaD"T c + $'yL "-b0!\ f*`F@2%1EA0-J%qH"A+$JX5HbPD1H@U!AUF!> 0#AGZ EH1?*e,!){LKpTbq\H\H Z'&E(Lb_Z i>$b ?$e'@P&bAɨi\Q Ԇ%Da 4!1 `Pp+B~a (0 )!O#! e}C A)K)!`PJ e)?%ɂLہ%,"`iD2 (`|c^ HEFC\@ j!1= +>|>ba В&r&Ak6f",AR?@酸 8-}#fL.e0ߘAQ ۧ7܉dO<D +AB "i=pVBZ=  +2VV +GbA~eaB +Z@m ,@pE aPX_0C bJ3@ &AO8*)0?ė$ ~DbJ@b1d6%X}@@JR_FO +';EB "98r' + ^! )""Fd!qE*B:,)!Ođܯ0y)8!5 K )G@EX"AWA%H Hp$#=hT.O (B "`QF"@eYF BzmC W$BDXeȔh Y8)aʐ T| EIGRH›œ"O'֮;aRJ4 &$KeZ@i5LFP&9 ;"#A4 a  [J@1 l /L@ OiQ8XnElW>HN˂I0s)-mdѓqHIx 7"7¸iF "@ *Vj4WB 'e@aPQKĴ IH0r -q'y }?҈LF , }Ԯ~Q>aO0Щ`2YyJ waHNHHĞ {Ϊ$H$IظD9#yШFSPl*huD8C$S DE96_FlOQ-qe6҈uqxy+AsY7gNE'| P%%b (g̪ "Y5 X*vYP.$dOhQW%.t;KyVi~:TE|aem P` +/yV</s+ؑن%B,Yg@B2Ghb7f`DDf) x~ERŞ֟`Ey z21nH* 2r >|]!Z,Q+eLYC孤,)up"Y4!2)ey"$]1 m,xФ<^HÄ/ +D3k2HOmG]qU$ 2/ +tLLF{`Bv]$b! m3$!BH#[Q6V`$D`*B^F<ߢِ\7NœBsƢD8*rF:Ò`G +rF8cK*ie +13$! MD]ȡ$\dOHɗH TK +ڔnaF R6LFMʢ= (VVҸ"J?[Ha +zA:gOGm*$"?T4AkPB"WCu Qu YXV[9RF|dǬɒ.q q*EQ+eTi+#)gC"=4pEy{b8БH`+jm[ΗIB<|Ρ  HȢ$aZ & b"k4SC4RCH!"Xɣe|m~"|!%Hgk$) ID<ޘpHE1IeሿD DDre`Q. s;ZÓ9:Olq +I }> OH;aED N7QDy^>"W}X>ྮ! QD2z*aCQZNAB͕ P_Ưjr,(u`7c ܧaW>JH 0)Y,>DCH@Q<ξ`T(+ش~XYCۿ/[ʡ$Z?=5] *m r%+n_Şi"Q쁑DIHgC } V6L9B>0hA6YNZTIC5D4A{`GL;澾L9-aG51q΀D ;q- a'klqKD | x"ELO0v1Ol1"d|JP1L-F#)ddp0z(4x#B!Ń 5,k x~["?Vi oװd-,7_57 }9\p97u@H-6DR,JPH#9&A +ZQy*ҧI;fS="&a8 qeԀ)BN(@X%7SHW~L G FB JF~Ė v䉶/k4ǵ#f剐p)Ѩ6́[bl|~n47"NZb؉-?" .o%`4 a4YSr$tg䫼q[Y]H2 I'̑,|NؓA:_ЃȢ ?!E +\!nȢ/)&?b;z`o% q5ZKA !"I=lWU0OKL%JC2ė 2DeX꾆澄p&0@O?3 zΪR} kl x#&Nm6 -H_ l +هE5%QD  EԱRGO84h4I9S}&5U3ֆ7}TJ;&3 iR +t1Ct]ڐEZէ +"qI2K$[Vi]󄻲E'ixSTxI5UF !AP(BUH ~?h# +eW!@ϐVR)@nZ$ܑ+d GҰgTi+ԊY<" #klq+5 KF Y'vupGQ s>XST3UDy"22t5y0URk"c#w[5}OΆ4SE1d"(21=DfJa(BNP_7k#]@9/Ja}T7-#LO {"P +g&I4TCBu] /r#&_dST I!& 8bDBq?vТF9+!N8S{ +=&I1>xG&aЦ95y "hkZXlA8^M LWM}0L :߁V?mZd$bd@A8@Jp贾OՌ.kFN|6҆ pF(g6WGF0BKՐfJJCFUU U؍ ч&EY959H"6$ ?nV3YJ@F%H>R4 EQX#vҰJ*fHSe$D%в KDa ~МcVZgX2Jݨ" OPKQ.VHAg+讫1mX/Qd 40 bX49h2JAXX` A~PVmF]7^ǰϝ?|TzwHcbunCa/m*eV g\Pߐk}+] 9>"bm3kOxNG~m>$ov[#${ȶSrB{p}{@ ǪW76nں=x,{{"?ntYrOu(lJ/?XܘQ^7YExLbףӇy>1/wC-џ^: ]wOF:?r)S4A?ED.g?ӗmLп'j^+Ao/;I Rs?>ً/>Yn{-\;4OQd\px?bnn(cqC `A=Eg Uz]qR}"IXЬs1xthS_U : 81YXP;Fz{r=f|އkSVfSg-?mqI5_m7"8ۺQ3 λIz.\Enᦷ硡Zw$u7$!__<5O:}w|^{#ۮܴ^[3{nmWW"*XN?ҍN~>ϒ/!iELcRe_O?AϷ:Y}Cn|!X%6WSM`zߛ}>sGg{/^lz~O}{rH릗_ٗ^ wưs~{ggUwOX롡zG݀~K$SqOv_V0Uv$}\fHM)=E) u͊@H }XӜ{a @7ȸ3 d`AZѿXK(ś1b7wUo4mN#lֳ^ +DžmwQz }cuYfIʊ&A!,2NX8ٖ\-E ɧxN%7SI MwnZ[׶9%!ӦD|?vWF#gZ;Y Gt9j~D"#WqB:D64XG +>Div|ٗM^EL`'w\˯r hxyUAbFn":(|J3tNpfob>c2 hm p) ('+ \g/%'{HKw$m#,3[\k"59q <\Dg#jĪ& cffQ_I*uɋgatlVb٧?>P hVxO [rA`!dDهUlU—#-g[4r(%s^}LDPCV1PDj*t[ڵzӍmƤ{YY`|zL@`}zLq0s`搨_)Q oLG=du*ݝnl;<M.l~:xYHt6I7E:F<.oo.$:p +!a \TUt E} 9 ZmI ,= =zBG.ƇB viwE~*legTttz?QPO"z|EF~r!AGըDɩN#\@@kmh*~4@S +J"(.r&, xčplt6ܾX+z::j1MZâ%a[j;rqCebb_ۭh@z3\{rl{/NʪP(X(M.{v@@׭a@G (ꋋ~vn/z۸-pi*+4Ph 䐚| [ePܴz;ZhrcTQ6x9j?ʴ#دO4 4?C[=n1=OTv2HƢ-$7V;Qn +M !/Op^3 WShďfe-a0Ȁ7{514 +_*V |KI#&D[q&*Υ*[9'5A.-<-4hg-fqFP;/:wD5hq6U A;M9Ng]?*v?^kc#)+bX :~Ʊ| IO*T 0ߠ}t|gcv$lӊ%~tGWp712E c{;H:,d~^G<3+‡m/vA +x#"r =gH@f.sMɩ[FNX'rhm=-RI"!P愣b . ւڎ*S5m4'~X {tI֥ &Iv0ZYl ryZ(vy fۦB,n%eF?"aL*lmz?[꼸;sn3q^P\n&`mzBBg"s{^kv g%XD0DHB<~v;z* VHxG$Qx,9Ѐ% !~Ċ# 3=)v\+B8||@'0QT]%L5簬4bHB]Ktʛ D‰1Nt51F0T;-115D0& 9"A4LSSĴ HR%nR%R< 7S4PK>hcǰ^DG AadM#i&Ĉ!(DŦ=G:TB >AcJ 4&+\R]#|DM;\( oכByє(=% _hm6ѾxׄH/1afNh\+ݠj;FU:%XamҾi54Q8ǟ.7.d"b-0D&* Ձh&6U1yRP[XXQ|E?E51kxFI\$"#iΊEGlWH-fL1%Y6>08b}2{9{ciKlߎ#ݢJGR"O ݓ;![,1n^c.n|HX{Xxg\n=,j!X%F;!W!^>@y?f?1ߨ\ǣže9DbAcLtS,C 6Z4r _g=DN([:,W|W9},'Gvv#ʹCs\)V!N~I %<جnP]P溈DKɼS-(iiz2:110#a5)kN S4 5"]j,a.0ah".l~q! #@"핢\ hoP"Dⵁzp .8'b $)&_,!b]C7f|@N_ xX뛠"3ku03~ W+Bo7G]fd|mRм$'D/ 2(tȁz")F\*Fws ,4c2 T9Z^kJmD)ЈtK'((x@=!4%ѽ F"kq0|԰K9pg~mx:,Am?Q0ͩiX2J }tjI  6@ㅖр8j>OB/ Eo&A1wQfE-TC]DMjn-+Z.<F>|cTHLYYb@5mN5Ib32(l ǎ>3MAc0'R63kjcYy$3'"@TMl.b1eI+ԱOtH] `N9%zm ) W=U+ozt nޚ] i0`uC:(\b˝o*B$-GMӬ(9L6CF6iybtTfc(pAp&`r{M,s7ڱFn{j>+vWHP[ _wM#*[~Rd&_y@# atֳt뭮["EZo˄y*k,ehJڅ ߅>W֕=Xݝaؗi~'o띚 s\ ~ddfg>Brup-:f`bÎIяן\H`&*ۅtК~_ݘmAH@~ԯ +endstream endobj 971 0 obj <>stream +\sx=O4LGad7<2~!+ICa@ju~) !V'yRͳ$?qooC"W塖Qb +x/sdlmݝvU%?;&摖GUnIO̺;8fh*0̈ro@<@/l գAFL5Ў,tU~3B`AU$lv,x9w<@lq>XK A]b.W:DAڳrc21}~2gOb ݶvYrEw)PE"!o+[c"cbxv!-\ܞZ˟?E^4Sk+.zN_/fSzx4 +1 ,%&qfm2L ù^9;ޏ{Z [Iލi +$LÖz +Iқ4Lhe2q?J&Ir"TNE-Pj(Vds[SfJi#/db^՞$6\w{32 +wfkD^ʡ`4b^JSEGH}]PY.HxLwX4yZ炒yʹ:|J\ڨV3]+`przmslS*Xr6E +;'W^bAlC + g2R/O m C,wk A^p@dά-x;=MޫaK88Gs;EHJGhȏ:%I}6m-^B71)]ONM^ eZxa+z#LT[%$1|*u1H1VK,8!X! ȗnXZF|Vu/^mZO3#"q+NՇ%DYtz3*"$ɍT*dWb1f3Êpx--p)c$}Ȕ;gph*[u1m2_UH9hK5vq\;ݘ:ZwB#MECAQobFKѩZ0+Oasu>ޱB; *2JNj$a( aa qW^"zG<XFE>z.#W(ZyfFvdn^HErGQqe̜ʈB\22lPޅ',F8mR~$ ہS+B4LT<(@r<(Ǟ m bṽ@B% ӫ_b:LIj"YiKwq&g|a)uBiQPB7ZDL3籆ּ``I8dgezcNƈ y9S\W +?@( +u3GKwZ[Ox\ ·v^hgtQVvr-~I2Fę/fM*y݌bC~̫Hg̻z +]%#fvgH%a mI+Xt#JĩI6'?l]u$. ` +PU۔DIߤ+LZ” %'٤mktRa9'`LyA _5I&؉'v!^m@ChN k7=@U(þíS4 @EOlw$4^O)2 &I\0$T8޸ݨweU4ĆxޙIy)\ܩx " +5VIQx_7 +^,vF A 6o7C-Nlj-.1F]^}I/> By3ޭN`.eKoL,tKU !nteŹ=cqw@(,YUݍF R)p@h(0A .`p!ZFptK>V(>zZ yޮuᘭ)^â q cѪEGtD[A#)LB[Бw-_пC[v՘p:&s' on"႒PPhœTu7i.(*]f2H<<}ͿU@BTu EA. -;|D$꼚S)?-aF1kFxn3ew0H߅A1\A6y c܌s^BLI˪LuU(.1E>d2hF><c<5x|) 6*oVKv1qtƄRCXB(mcYة!ו-M:7s\: >fRAJɤ fnl$W +j"-n>hGˋXsR!GaprRE‰ VFT>6x ENf i䃉A9Z΃ fQfk6BQ0BɊo$qd/CkZT2>JN)x6^p ވVx/P/09x`2JyvXfg.]b2A P5w~ɚJe@XyWQ,WhdWϥa*Zmupjn P- "^56&hNm[|~(cAI1Wax5e~<5sa N߈kf[^O +2i1RPdRbh4 &@#LNLIj ˁligPeewSȢ$ -(>ߎm$h/t#t2"l$QE9TiAױY/j(p5 +u g`5Z@,mI T'V'˹eX؎`;R6r ^Dp7sIn7Y"gOrH$FCYŎezBXy/@E6'&o;1_S #H4v5qvI,#kZ, q :5 +ҤZKfrW3pZ78z,&yȯVH DU' <)`?ku)E- )lLEv ]$TCqM0X+!4#SO 6k]QKukSGe ++RDgCZ||+sBgL 0,`ut֏׽9h9ie=_V:]ށmٲe|4zfh0. $KC}f'?A8hf9lA!wb9A^h\% ֎ ) r!/Hn?4_<'P6"8̔!UH:4a̟/ @0ĨLjxS u>#i/c#ύL Cx;b#DS:r)9GMF:)C8le#U8edȌԷH346uRٝp1̪͞q.t3V#fFC;GoH4OC + /_SٱHEJj\c1W]&A ]dおs6_R6"趑oA )OtGg7Z5\&x><}yè,c`BKq2DX2z! D?cyU${C9Acv}!1:ditD#pߐQ3jC.k"#9u Yu'CzbÎ#BS,ؘ[iBSّ@߄|SPn>j7X}OAr$&rhRH/&+LJcY> Gɋǖ%{̅Q!Vz%# w+Ú)a4<p7yydn. Ty<ɣ҄<&$C9!PG&;w (􎆨wP{uG eXS! wJ\q؎aF9{LcG?Ra/zyO!OHHzcݪp7uBDR!y;*$f!Zt,0GHG\(=t6XmyQsss0VHp6 AtW!cI rxXCqR 1;%9LDHv-L$8\ձ~8bBNA0`uCC4RbI>,\6D#qC2lƇ5.ikD +H-Nh;X}8*5h.h-Y!D8J@v}c2h7"Jd)o`g" Qn<EF)ƫsHTEΌZd(g.rmHn!$nDe$}m;zFwɚ68h"7"X2ӊ9>6HnA í y%y?CL,y%_Sx֒;}KZgtI9]^gڢEF\Զc&-A2Z(29;2惪I Dxlt8%كc >JHM!wI2VYfՖO=Hڕhe03p`B!̤Mt(AASP#M9l4/IT90$e]bӰ)2NEpi@(@Ԅ)@&/QqpUsER17}53Pϱf?Vە쬩 pk nx5IĹ&Y@}xvm!_C6lM2yaluwf&Sl҇ kku [C{gCc Aaa2j0Qڼ8r295TMCSڼX0mB wQܜjftr&3c2nqnn6{ PM>4ya&e_02*)y{R(ҍɰ`9K2oDAXpw e  b"{p:Pޏ8A08 Cő  ky"gp81Ѿא5ЏIS/B9j&/f9/g~]9s;XmҾG>/1+.sBN‚C'H۵Rk@3f:ôd.E0SGpBbc컜 TXX$,^av +.;\aTt̪hZَ;Q8  +wl=})`h +bVBeR7NGRyRwnB P ޝ젠?| {gO'<@=am'?>G:, 's +]6Λ̳ %yפ`#&\]gcM>HGaM>фy:}$h>Ls({癑Cb*n뇏d"#GT?bYmLEE_Rh,B +G#ExMgo0TT9K3Vgُ"UX +V=zp'r~XWZn[, )GY+ލ;+D^CFCB>.vǣ~ +SA>!vŌ^q|֛"@ b , x}]ḀkEiw?@j lr%OhRr-X {KV5KYPfHqq EQH0i3F INځҡjum~1u)́0fFbs9 顸x8j"! Ha`0x8\lX;*Z̀ 할Dr/)fi`渀_d4P" \ܮȫ=3`K #ژ閁<6/ϑ;ݬk AĀ<ZFG4 \4W7_ bB  .jcw pqM8L I-3iMR_ 7G`X |rī +@ +[iaJ<ռQJ:[fcV)@,PQDԍ;t):/ B 4<(lp,!mUnkM`6) \z2!zIYęƖ?gc:t(9 +c0@O7'dK?_|`#2lA!E`oix"P65l{=Hf!UA[MY3_]>mPE:BJ7+fDSp+jāp6Fr:`_:sy E/cc)eepƕfb-y`5S8ER,4[!<:,Ck'W:(FʄMLȫ G נH0fcKەG?k3+xcln=+idqҐvb+1{VUJp"_ I( +i! kxD@>[TI-ZHEx[\Us'PgLP +?$hKu.i<ʡS ' U%XeNjO%V`X$0Qxq@gOڢMӟM0Y] "$}]M@S8͚+Âw&ޱDLJta7X$@H$ǃ11B<ĀVpbKo1֡xnמm0d6yJ]&0u`}Wfm-l0+%#~ F| @~:AH +qˏ% :Uwdr۶{5@ξt1Se-P0Ф]=q `<753@@ [t?\]"] +|`y Ho-;=ng +h +_&f \^eۈ#f$%rқ+)?~ G)r&ڶu,6=-r0*􃏭&&)IRSYW "iջzjBXDaO;  `+_fԈ/`bÔ;d~G qj-uS:_bb%ԉ +9C:Ӆբ2bn* U!fKF*~?G\0VrdW@)EP Xu㫁%&}ߔ\տfLMW3ӿ!^(Mh!&]8WH85Gka(I +8;G/=ಜ>:R>:?Pח5?%ζ@`# [[gp(?eíqd]8X1 vRi7fouaڂw<sŀeXUܦ-\9<"P>ڇ?xW$𻚍Ev7~K"t=o~=!O{3,a񱭰\}UTyaU +TBgh~WFx]2Xe{X!L˕OQx]IaNMWv9V)'Mj6aHh[!>X^!Q&~#4coR/6|Tz!/'c/~ZX/`SqǎCMDߢq{[ !!fW੶_{FEԬ!־m׀=4eFlyd%CIDw z/Bk>\g7]>-s?q0E<(C>/TԠ6^bO +h'O 1 ^&zhc`>a(P&}@t莾Y'vSac*1mi][,6y|U@ +_h̗DoXu,}HKD" E{%Wڎ2HtQZ-͂<̏/_uޚ|fѫy8@KtY>ߔgjI4גs4AH'ETjᡊ?NIHK7!?A|MlcC䰍ph,uU4>S]&9=،7ע7Q'l$*yXi`bߋi&\ewVMVٕĢ/y?&EL"2S{]| QٓyPxJŬtд+ ,Q7}^>S+Rފ-7MrMMqFcYy>/ ` M{2'kO(ޠ{hո='?˜^uZz_NQ1xQƆ<s$`݌==߫l)/_vXz8_&FGk|Ra?oByA# .G$=YΛ5]C 6YG,ym^PN4߼Pk cyifʃd(GPQژ Q4Ɗz\9{8uyF;Z3RUdcfV3[|;E,?XcKKOCE1RlwiHbcG0 s?x'X ǂpn>mQ$1n(I5!94#C')!jLX &L _:1AǔpTlZjd65a":;R_c$]S^4~;[.GJ]~C3!+$9Q|mOIx\na٦&n1yF$AKqE (A^"b;ks6=i~kSf +%lxÎX iʖtџдB Y=S.*9|ف|^_.XHTwy_Vb}9Qy͖?o!"w(qW/QBC{b00:^tRa{ ?{P )g'[{w^Zs!^Pл=ҟ\N[Bx] Lvh1»G1wѹ^ 8Usݑ'lDrݿĬ{;Z#?C!W%=݊S2!r x';GX[ zTՁDs;.V]X@ܣ$⾒Q';%a w>K@ z[ _&jnhQ xk\mVWp:yCM%UЎ8 m=1uda +MX\dh.BiW:M˟N(dK(v%2A;/ *hgwTY'K>XIc롊[V +/Y)Fu ++3a %! ƾpS_[*ݩ,FA<^K۬?m8[aW zCrC8;aJDz:T=];iA7lgi0 UU|34]s7{Ln741\O^Z&U Y#'Y!1#eIM Locx*~z AW99GvtG|E "+@w+q'e2d+עH(:ߪ=q$ KCZjB}ӪΆ +֎ύSWl2kB2zhm2_jљ!W#6+!Yu{@$ۧ}#4mޤ`rHGm|R!KzNmKx"b9;e;ˆv3(,b90(v uto9L~u8㊨7z+kv <ĜPޣ$G"| O rH<\c3IB̧Se1翁.{ 7@ ʔ2'L@y253ŗ=c_v"̘'q>~#{nU?QoAG{(17Z){XnG 濤8KaYX8:g|;lH•̣gZ>{ f0',8pzεMbj\RaYYCa,ME(={e??3ᕏEEPtR`/y7b0/Eksd7Al #*$!f<@sp.e̝22/"\9ao03G8sQ#1Wxt0Y90C&,`CIʠ/* h9bu,|+L𕷮K&@k + S]*Y=>*O`EӔ{r' jIDy.aL*C%AO.ydN䧥W.a#O !GϘ7{/&|*2𧨠_Hǣ0$9ޡ )3x ZX7xCC R]X#q p<>-%J)c͓bȃqX1BdF& zq eTZZ4v1θN;.n Eƻ{ mc_n=l3V<\~dQ^#8Phݍ{'il!gt\HM_">Rϻbjsr/.=I:</L|{dIω$ \굾zQҖ(Ny =9f>>,Ʌb 7 +Wս?HP ?K.s!aY~O _g)-{;xE+<5O)\/v4.%@bnL] L DSb/#1 ̼8 ͿM**GⷞM>]q݇࿍cGa獠ss/W +|ދ=|+f f4-S#bi>Ycp2m)eEŞ7B +::\6~?ti/U40ϩ ^=%IyOw "f%D$R_A-XܗoT`M%Ƿ50ׅwQ2=ۧclݘ4ySXkۦ{OxٓZ#a+Pyl;R?6 Uy'3XP3qC=n:r y  :}xjВ&};a4x"n_p̹ CqvRIBwaoQa9!sB J'nDE +Lcu#QʥYkKݬ vic;0Ln2j[V?M%]9g#*Y^ʼnrOc:Fc $W9b#@n+r |z6吒L*Tk ՗n)^Uk p!YL ?N x߆˘b{[ⴼ&ȞĶ"*9Rۻ2Ňۯ]`VR5i[i6'Em;(>$! mxDm* kb~Bl*-CeQYڰ'2|Tr!+Qv]I.%Bm௠NLND:wAb^&ms͡Ͻ8j9Ƣh($h]>fxbۀvF5FZ\*gnגw!WcaiKTB&U4{˙ē Ƹel튘^l?c:|fzIظ/b[R/7Ԟx~'YٯmuJnRFyO\$PK"}j +"i+ȖPԂٙVgLD1?$a2E 1vSk~Jll#1ؾ4{1D&FFYfqJvuF♰:B9ayܒFNҏ8X5U`Wf9 `;i]ylKɺ|#&] V͏n 5} g u|Q>52m^W+b3xf7)1&SY)B@]o泠kx:r]p 9( +X,,ߺAͭgmu +%!rӰ5b'şE3D̕tjРϢuwEN .-rw3kwƇU=d [hSa Ԯ5Kc=-;;u`E œgܠ[%xI:c kzaX3>dp s!K^!5j]FY?UftuAEܗ}3 ]ƿʟY-׷V O([Ju< tRZGW.Ӱ쌪].HOJV撇X-1[7c \kKiCoP#W֔Ex߯WlFS/PŹESc)I/u'KIj\[E^8e/hFMEAJҵ^WctL{{ ЀzSMđ:}x (K}tnq08rHu Ȑ"e(u)i0ˤϳS?ܡAϰ~ŔxUReKI,{1 kG&kԙf_Ӵs5^m +0 +9x +(JzyřǗ7SɐG_$9 pehnUag{d-E݀ r>jTJ +!T| )<:[}7^,J$ˑ6/cgܵt-. H]n>q92v/C?a9^ Wb\BOgK˛ +6/?A)% )#Ml{m˿w2J|A_JF/> _oȜ KpO1~}vmc}K>`Q>Gk tXk}J]V7D,BX1 H'=40J#"|ֈЊ,ƭw^;F9Zw> I]g), +Ic ^;Bqp}^8Kood{K)R{fqT'%kh{A)/SJ=4-#?ÎϏP ?e~/0+L2vp *aCa5頻:fr(vN fS)%O-dSBf|3ӧ=  ~G{x>x{+|'X5ƅ/R|P@R@U3VI5&;r;P:tǦ;|qaDhIԗP4?rw#OG.7A7R1|.ͷ2uTjЊN̟+%eBu[]AID_#;r9v OIBKs 8Ύk%d[.tCK"P9=LG*%|/6?B Ηlr>t+ 2;_W(]PD7@K2.RvD$,mY/wiD5zP7#t0A̪-P╸ʄtd% MfBs/Gnr'kh9.5(E|+7@|c~J1wPj,JWIZ_j,;V1YS4/#Y̑{@M3tŹTF8uu/G˾g4&i4IH"wԃb@''^+?g|[~K_a71~XR_%)z)gBr| @@ -752,57 +713,47 @@ e EeZlM <[lFƨD^m  W0Yk k X;WIَ`pXsFjoDZ&<% 2G&a%z"7ړV Ly79k4iAhaEne57Y|[#Gps $u_Ѯ򋩵_u< ͎j]z~?)鬣 ɖ˖pU[qvHX_V5uVAČq O[`JEVANZ4U%< %8!&!.C"MtEKxE&I-V@j -鵒)o${O*kϖxӡևeC [-+ KIC@|+yQNjX ~Ђ pQ6Ǫ#-ե {)+X I<]B۪ M{ 9o[OK/.!Ux jc9n6N#iQDR{ m+p^ GgU?یqаm5xH]ےȵadU ]6݅[kMzHeB%$Tyllva߷)ܶ4DVZ"zGN`Ddy=|솪C…68XS[R*M6S)ޖၛ%q5ņs$-nqn < fC'qOZY8AؿfKo~%D>5?Fx(F{gEPg~Avq\ -1HLzIh-wKmVFZ`_&ڕ|yDkWRitab;L L:w b\]ιWb} -f{_hy`%vm0E'+ Z(i:8 k"TO;\{]#] JOIBH:'pךZW~A}<.| zCQr{El!t_υ/T,H 7- (_I9e̛ՕRx,5UNluZǵ`#^zߝqԳP/.n(%5GjX&h:ĮC -O@|gî%vC-z2 -$,U@ UuJ;DX$y,˼gs/7iX#,KBiO: -}M[f@F% ù `C)H0}' -O(dq6pyGPy'9wIVNHx>, @E^ԮpZzԭtˉ- -J@pIX@@.NxlzN?}vϥ_@Da ه\ݹ'p8Z'|0lɹ)L?1>=Z('b?q,v4 -2q}ཁos֔Տl߀+=xVOU?K1a;YBaoҠaO,(քV - -lս]Yh+v~P co<50$`ky_%Àò+v1\yL{+3EDݠtae -l!k` ߞAvSGxY!.1zl-0vf=mo,ewkIO1E}!'%& -)`|zV0pT3sUDۦj^Q]aX@ dIMF2iȸ;ۉv Nb۱Ch - #o Mddž : ;Ϧ_é *pa6Va[l27f-4pUVW)la])mb[,c6-!YX= Okla; WZ*VBJE" УR+tr1]jR)!-r D.yj;ue6Jz-嗪mkB%q"@t\o;dEą5[[Бi,ina7|pe6|rc)bׇd40bm}JÆI8:/=wC3"?B9~ )US_jUVzr}vX/Y/| zª%gӏ2.G{iX ( }H < -y5Ts__p6ZX/˿]]is;u_C~pOiLKTI+e- py60@9zE Ջq~LxjC?;Ec:\>D )bxhRz!‰̫(J*׺FJɨ ه#,ԇȰs[T.ht㒞ЂVq Nq#R}*._3\VRb=?"n{N]~C)gp h,+R"*LB0ؕٷU WuC⏪Ԅ^EUGUFQJ -1LA%|[苟$t|T -$[tr)p*ŕ̨rc}Ņ+FȉY;"x&Ď5a:6ztDz*#W@XG=Ra{ ݕp8'EO.Tue8`kW+ҫWG@n}cd}D(}S3,ZH;@]P=kJ4sQopɖWx7~Ep]|v/y'xĩp7[MR'vuBB:g#04 6v%3EQхCT `߬#9zf ^WoKq_YV+{dY -PB=nV+*hL>ņm~փ/ 3+%FcPcJ0\o(ZR q Hׅs^yi;|JMDNAI u2t;,UxUZ8օ?ƿSyWJVc,,a * FMV=MS0RIC a@\eH=g@|BI7}i}RhOQAߴ.߲l*^h K6s9Bb-oMrN(&?݅`BƇİ9[қt˹z[h0ĂJ[0%Wig8Ck;dw*Vڶ>_T3zgYK - -xbws|?'zt{&XO 34PsOGxwTl~^D?lxg`=ayO1nCBvͭj-|mA7Wh6uԅmktbЫW+W=j -,1K.36.!WouU3X"A,NQA*AgF  } \=+  JȤBBiEX @?)3- *b#` -<E߰$3+BO,G߱bzEqSY?X#KZK_RC/fumu=0l`%#\@'Ge/~VRtJh>WWͪ[uEXd}޵o F} 7^J__"F38BIZ˰tBHUNBm/%+tC+zͣގd~T):OQ] P^[O= -B"OyPB_~AgQנ{#W{E~5쑋?esi9TodjBB?\dȲ{'zQ:f!M+6֘>7}&OeV~˷3jIυAHyJ1ky0M ) w6qkV)¶9ճ{@5_Y,eU.kX?99|ZM𱞀poַwR@`n_?p.dMKz?ACCH'L5 _v5_J]| ->># {Zn~] -B ,ɔ\ll[mltR$O;UuJ`!Lvb1r~`es6%4X{\~UKWAB9}-N -p?Rg\IT UΩ\JbM|*#?`|4 ~?{r~MG@F$O]=^Z6Å8[9b:iUOz%dpFx^PF, \n߯Xz"SI ?PBfY%cX b+}=BJ( %28>zPF= @E&|=|wZF:@M:~_`eNS~Rj";|Ҳޛw*Z<1G/lf}jAO*C4ԏp:]DŴVhQG% K0Kz.؋.S .I,G*+Dz6nUGA|ⲣrs:қ}RWf[Tg!xF!I6uQ#OGIUƲc $`Oton`Яa=@LS ncMnO4/,]h2ch8Ї`#n|buTnce^^t>M [#`LtkExףg$,ٜzrtùFYTv-REP k$h;\e> TOߢ 1)%ƙ?Uw Z7 7>?l> /ƤQ5eH -`& F)Cσj2$3Ыep -brlHF [/ϴvr;_"VB>Tgm7_&!֪g:rvsHf'z@r3^\NQU'rؠ$a jX8*[FL}+TRߪ۸rCWb*_t>գ|VKᤠExNӽ8|_Vu"xdb衉G+H=0 8xHqZQ¬hÑ[!JЗ+-Qv-?@Ր2BH_ 89 GEtqͿ1k@EB/͏/?E%` &{ -#dުR6l؃L1Cg 2\1 Yx񧨙O~'bпxb%G~>Tпv|GE2~ϐnx~&.Ο12{|_w{fx,S?&:pZm{{{S|,c1jCHHst7R@/ta!L|-/ -ozχxr~j;ݙӕ6@ -J>ݛߓby6ߵrC+h̷zvնsv&k%ߪYoy#e_g@2̈2Ά@z&[()Ř7b"$2p/ 6<ɀ? b |6: WyXr~ͷ1)e|?]KC+3 %WL=X%g$zJ(x)8ٰq#FJ@<̈1.9YQȊHz"S1|7?csuη} E< lkݬZ@嬵^?.V0jRiZm^X9F.ls8B(y -J=fiӽ|-k"_ 4́,Z6&9|![1+%c72N0܀!n|B+paM$9 e?=eyL4px8Mb}i;W/N#-$Uqs!1tceq9_d.xiyXo:ijZ= 2&1#/ ȯzQXNIV vQoa`߀ - b;cjH9Dw[rY+AÐp -1~I&;c% 1f8s8O[Hs07"3ᠼV1M|x9ƗtHUD@ZMg+ka0N\δ_^(tؗϬ./ ̝X+mYO*7I;e\ -ov0Zf]U$L+(' Hw#9 c~Aun2Y@5fNdWv=Z4Q60L-" u4}%vka-pg1?_w.Va{!8s3nUU.|jDRϙK냱ma b۽c+Z{7X \UWIIXKn^9s#N$_.3}ZikG=pn.\(w(m50/J>#T,jen~TYꮇ˅Vv?T~%`v[-Nt9dSk\DFP<4&ULi#~Q?J'(T?4w+(OکGX q27tLᇛ-g;, :8!|ہy&y69ƷF.}}e?B,ui5JXU!ty&tH|En^_nH;&NYS<A>iG)&v xw[g- o)xTLgh!|az|?:9uQ E>B3nWpD}Sp?:K(!h}*7PN{U:_suӼD\En+ p39|ûeX̾h/ F<C8Y+pgSЦMta{ qc݆X4qM"Î/˱nD1_@YW>]3'f$B~9>ŃFh{w]}/Ji Wƾ_KoZ.^7o(>C!Io \o$H̝v\Re]$9i-93zld6sfy,8e;CFx8FA܅OF!np 1 o#w'9:xWx?Aq'83rzK\\Ǽ01k0"f8:tIQNGՍPfR'/ƅP,@7%M.|/4#`&KLCQ)V%x'W˺-F-!p[SU;Z\0V9* -0,raEU h&)w&uz(!οO%yWy J@~9 -s2p`Rwvw ٧G`]+rb׻~U/Z0* -" uY/  -!c]0Y]7"o0Y[YY0㷼Z>#yj9UKHk+% HǒI66 n$c^$0P ÎAP, =kȈD}PwSY6őaۙv34.'[*gXw=`2l1n61ikKrcλqrm|XA~&t]H܈btfBY;VP+$!lU˚F.O1 y"v+ l -q}HMޢGV$*BVӿW\QT(c,I9Ԑ$JUP< F L]53:`=g劸T)ɽ{(cWu4pDPbZ1Wkȋ|H {g _[XŴrq$wNJ"R@'پ@ 1o0&X/ -G<<ŃW% L@O xwD9xϿr'$ice}W]3'm tR3NY vxpoE&q5U4ZNzDFy8T3mՄDD=A%I@q-o$༶kOZBBњf`POyKzJP^T0@IO) UIHb8>|:M^- ͆#Qg0SS4 gs/O0/a[:ocv˜ ]21,~ FYuCIG'P18vm H< I8kȹr:" 7j  -z'rO`.\݃~#qaG9gMW;l-#n"1P ⾪ş^7 uQC[rFPZ'ԙcbgEΌρ/a;(M@q"앹nW[͆kW6x> Ӄ BJWWO'z\Zy3H QODQJBi2dT@(ӏd qЧ Z0>d|*%u}JC-|{s ՝xhG-b/!xLM O.0^e ķ;ȳ0*ISJ q=@ߙBs}\ k Ci]5]^ ;*v_͕&C(k' j֑uO0Q C -afP#nPxlp?6\֩Ïb8TLHk%#l 4߭S޻6Aġ^ZHy b6< E>CʝjGf(!owci, U?j/ -𙐜XҾ2m -]e1 -H8r9Vi*лrKJ;.C6cҞzZW=\GH|mbaE\58 -5ĽJ"5'E_mEio)ܘ5׷ -XB/}lnYGyﭫw]}+aʲ6lI,DL?ї`۪9ρ5 [HWŽ2 a]d"z|PJB(o=6z&ή@ @@4a 8m\5q[OIHG3" 4Wl$Ž[†*IOnEQŲݝ#W+0ahpoڅO^pR2zO!!XBP]zPn2Գild{s}'SUu;\.j` ѿ&ua ɁڸIVԴwdmdb*Js[Y[rYCh÷`l1[99VQ $G1o t{ s½uU:_/EafE@ӟi yob>NT"9(c_ϡԗp[PjT=2XX30xKh q T(L;A ][Xَa) N^Hw;XW~xmJȉ5{cGu$ܚ&ء/xl͠_`Mge`ߗq-W֯@!÷OE=ĉ,tdX],qt|3pѩ"VLuRo8ƽ*;eJ#lD -%)n_^\%p -Mu@/8Ɋl+ƕqqm$*$!~dL4NήYoL DTҖ d?k wg*ڞ=oLB]b< ĜQXZBjZaRӑ$&$ aMʎ$599)!1!9I [Jk +鵒)o${O*kϖxӡևeC [-+ KIC@|+yQNjX ~Ђ pQ6Ǫ#-ե {)+mgۀޙ%xd7 XbR5l=6>6iS45M$ΰ8̰n}pDZq6\UmȎ mQڵ-\ɉ6m LVۚеnC]%nքޡ T_f-\BBu[K(ǦfW}mK M@l5k%7} FDn:$\jn큃51'5hnd0ќmY7Yxm\l =Gpqn:tq7E5Z,p,k֚nAWB@SC:o[c`OwVtߪ կ|d-og%+)x`u8jXj"={%^!HISv 3'0!X\2qu +C;^#݋+n}d X恁F~@gxBڵ]S +$,j)&`"RB#SM>p >vŎZjw%(h?% "L<Z\kk]Y0znL[x-,#AL MG5ЍcS:k/k?ֿPAo l"|oߴ$[d?|m$h1oVWJPWOH~ɢڠ+mX|d\2pt!jBpnBP;(XPT!_',jWmZ*I)b}ܻw,nͽ]cIX@VHDo, =*5nKjGY0o 2mNd^Nap֧ 7R(<9}C e'Ya;{#9 0YxPhQ-'F((%aK!8U:aHl=~u5gsywhqI$o&j2ēs&h)'` ,Hy +b0 +F%"&޿[SV?ߪ[=U0/ńXS4fo +]x뇽UK?, ZVZ}+v+U>jveP +vn𢱮`@/쎽tԒNL}4Rˮzsɒ^3XpuۆѮ)Hr\5̂6B{͚OeP豉nb؍~m'?PX(g]UXQ͔UmyGuaG%ޓ%7Hm "o'M08o1),X HEmӈN`b̰gSc^qy$7O1j`7iu8.4@>~>g}SxZnCao8ܘ>S?WY]umٴ`0fa4> \iKW[} +}*>Dr:tkCKկR0w5KR" 6wyu2loDLL* _Dз =DXupEUNHWl)oAG'ɍ_*jOh;P+Q ~+ j&輀mΈ, R 匯a\O4tVM}UZy c ˧J Sg%0 `M?#{̊!a)&4W;^@"6X`+NaP+Z} +B|hbz,Owu}%̥@} u?a3-Q'0&íxc.J>/T/ o|Hb1yb sI0^r~/ceQHe P '2V0ZGx+X_W*%6fP!2V. Z/ݸ'r\rH`J &`a{׺ D(޽iP;x5 +GF`;JDz86v|m0Uݐ*:95WQQQuԟyeBy S`P =V*' 1|% %\ +\$~%J~q%39 8X_|qኮ+rb`=1z.".#3dME ]" +PhkmlO'(bA1{we<*I=BӅ 5s]Up5=JjUh[_>c2)Yr E :P+gTDϚR<͜lxj["\rAn%(G6 fQ8\W<KrI4q*M}VS7:Aԉ.{ H9&-; ] ǹLQTCtU=7kEbǤ^'!URWYV_zJz'Zg=?bODۅ߆K5 hrwQ$@/8_!:?T;CeCuauAN%#AqS%pPB!7Ko^xV-9uᏃTcAadռv5' {XQpj!k+EPvD-<">W RP=F$PMfZ'|Sx7 0,ʺB6’MܫxNxXhʥOwayo(j+!1l&rnm6Z@7 0V>%Llc:ZٝCDW=5ՌY}mߒl\/fyIz'] Sc =(aXaOpaD^SL>mzt%]s-j.fK#_EPM@ 0Zf: D!*ua[Z恲U5B2K&pK匍K|՛n"d9-E:S6tT +pqЙC_WBC*$.2PcvZ>V)#@hO̷l HxʥH8,>Cgj7,sCwػ^Qh`f8H<(7'WKYzo]L>&@+X' @mˡ="]xZUVf},Ydw7dQCÍnח Ο0?|o҃2,P<0wPK +kЊ^#ـd;&Uʻ,STWiTSBȓ|G|n={pPYT15^'_%{rٯ9AZ;5FWdYc} GNYAfaӊ5OGEI'|-0 zZjsavRi#a Z-LC:hvMܚU@Nr{w,;!&n=WibYKOE_= n|' +TqPت% 55FÒjPIS׳>`ת~'z__~PK2&[V[1]A{o;q]dܱDr=XٜMI, ַ~_RE`=ռzPy_w;#sz WR+UtF@sjqׄXS:O=Xm% };4 _dQ+=)8)SWפp!`N``ػ@C"@ ;(l#FѬ9 G"7$[rTRbP7dVVB9JqFH} NQOCP?zAu)%D q_ݢ|Ο:vt~EW0,B5䢟N$_|16ǧ.$O-#)Kz?YtZГJ.> #4\azQ1ZpQ co & -RK+4"@pa˩ +l[rC>-:ߨܨfԕ|V%f=Y<{;dHM]ǧ."tbpl) o}tA+jX1pAӃTt[S z"9!0@Aeۄ?ac!G28_h|b|O▅dH8S-Z4 K6p.y&y]TQdl2# Z@$G}.WYd+'"OӷhuLJq7A]?@ M=?χ`l|>@e1)uT ~?A)5煅%$ѹA%|Zo 09*z\a%nz`-/`( V%Q=t^]T(@D_RwYIC}SF-)}?Igx~>Oa3|Η:x$|͗3Ih*k0ĉL"{cTɾ6(ɦ.$sXB"ʖ/S +ԷjG+6. +O@C+"~8)o|,"/aFto>η/_n~$g䀮?z?zh&ămhJ$R 1dA$lg0+pd8cHxG}c%2 +2uK+?r1}5$ ;WC=No@|/7e#p9]o 'PCtЋrcOQã74X^&Fjz;`,s̐$xf WB1#q)j~ӁI/f:uAxI_7呂,Q EÄ_'83|E7F.:g`~/q|,:_'@ݞ TɱgV+.ު^ԅ$* XyR`]jԯj0 ]bH?f-sqKߋB(E~x>d@?1ZnNwte?RnO|ͧ3w(J= 5ʨ/}etJA1  >?~2 7: w2jr>o|_m~Lg4ϠnP? ySV5 ^J>D{7~6l\HP3bKENֶAbd=T ,߅?O\v~]>?Ie[fmU$*gwV;eŖJCjc’6ua95GΫHTPz1e3zޯ\-^/ySHF-c1s@{bɽ#]8(s/3yT1myʚV-xe6f׶=d2}<7]CN#tsp5b<缝mAˋ>J>yawi9CV E" +D7帜%F9˹>Osu0m5۽cwCh{ɦXK\BHs)! Sɗ+0!g嬧DFu";>$01?B/BNu Z9oFޅNmO9+r;q\@ +@yir$8XOZC; =y x-'eySbX+mWfCxOL<@].$;JPG8m0uC8{ܕ=w8Ri# c9օ@ J> i2pL'g;X{aExN1%$)8N} kY L0Цad"v4 ](Ƕp"$ y uĸ+V ^ m +t ɱX(s,1yx(˻g:؅/ 9 #hiM۹R<|}qn)'!v ˿.Cˁ. >^.wK{$zө$g`ռ?6qL4yL@~e׋B?rOЧ^ÍbVo}+   P(`8YV@/ RZAvSpLf7i+I(!6ye =0(5| +B Ĝ -GnI{8TC8[acؿ><~tl; D2u +fȓ|#˛T)N[Fd~/Qۅ4 wpfvS!X{01C"GjD8K]Y] q"rGB}B17PWƾ,xfuxA4(`ZiCzbWL(R0|sX2"(dZi?@?8n@#}) v)e^!5wBw e!ТQ`j/a+q` ][n;U<0+L\wĴ + Y-Yt?rP#}]Zm e^^ֲޛrgz +BLFMŠ\u3ʙ@w"rɽ]JX]86s{l?vEhDm8gyQh5)9"/d\V+scZRWVw=].%q֧`s},tm&jMDvŤ@q J\lg%$t"2⡉7ᠼ-bH3Q +< F{_AyN=ŠH\ψ IqH{Mԝm{y@?)`%F^4>| N(*i^M"CFfĕlyϙݲVU,xf_ #!ެz猇T)PAhS&rбnC,yA +E aGRX7"/ x,+쮙 ^qx!K?Al^닻sY+tc߯a7-pYP,d:ϖ)g1~9wy)`_7]@F"jQ0Z:\ƙ$lDUuW]dq7dѯ! 4xQ +F$>5˙kX崉> sȽ̖9QYh1Aܡ.ykvlv;/䶛q42n[uǵZl NnW]yyg l#ؕ(d{wuv.9FPw[վ/ͮEs!qOy1~nzi!H'-Qw P7M|C}O !$7w\TB$N;.k\ ֲ.QBGvʜs2tùo c](,ugu +ط[E0L;vA~yg ijvbyûx0 +U{]@7σ^w45rv%18vyN96`w,PG| .xjw$^nD1Oy3^+m\PӪeM#H<{;nc8vYtN&Mo#+|!߫~(*1oͤMTjHpk%ڪH(UdA\ ߮c0מسrEJ=j+:8j"(pSX1bj5EU=]3Î~-bM98 ɻMl'xi%Ab~Ll_ bO7M܏J +uVK#A&qq"I<_S9x4pױ>׫P6N:)|xW}g<8ec"˚*-'E}#YGP<{uRjBBb$B7TPp^ qӵ'p-!yhMi30a'݀l=o%[(/*AcݤQF@$$RLHG1mLC&~/XfC3Xq)mb '0-xevKY](gvc DP>nFiu$pG<{G2/'*8>gr(x(lCxшGiQ/xm9 azm +1eN k.?wm, T_ ߂` +PJ;̶$t$M\]9Nzfqac9ƇB XQ0lvAtB劂&nJӖ7 +oq_ՊOw:Cg#Ghy[Xt]ݱ|w3"Pg@Ή0&^ 8uXf-f+odtWYV u!JfNX=wxOwaD$'(%4RjJ2 +~* G@u2P~ņܸlcSNFi-iK2>A:r>rCgk!ǖc>V\KN<4N @<&&V2nLهkYC)NFNF!ù>bΡ_ꮚ]/joJyc !ȉ{ȉ:'TҖ0\3(EDY7(]{{6s8SywTG1m*&5֒L)AyQ _P/-܍F$<su}1]q}c"N#3lAc~dELHN,yi_ƶZ.̋2F_utޘAp$]LQ oHla]%nODDZOW`vQiO= SLBk#$nTYӰ"t uyQ}o%ޚ "/ZO7rnLv[wl|M,wSe>6| Sļ{sQqϻ֕ՏoeY 6$ ~"KX0mUٜ `+aGV°.2XS`=QK>k(%=XgW[ {tŰXD6F۸-$ߣM+W6-aC\DFX"(BAbΑ̫0}87 [§V/8ac)tr,AwP(`w=](h7W _Mgx4o62Z=˹>տl.?50_]v|㺰Ʉnm$+jZHK |iuF62xC 9-ɬ-!xuz]0P ȭ+tM:=9i^:* +ۗ΀T s~Ģ0|`qGIꂉϴ<71D?*RrTnPKQ-(5}zJ ژ"J~~XX%x8q*o򝠄_~`JyíLUlNj[QOIPīp? +@<6uO`Uǚཱ:enMWa]<6fP/0Ǧ̍2˸A?W[p𧢞T`:ZM. rxy8D:Tko:@7K[Uzr"j// +XVG@wOæ:dEm6G[ʸŸ6joS]M?2OJDHf|g,7tO&V"^AiKцPV˻3NDmϞ7 {*LB]b< ĜQXZBjZaRӑ$&$ aMʎ$599)!1!9I [Jk T$!BXSQXӄ IƘ$L ɭ@  M $)e5QXд$% HȂ/%/ ^FB6XYZx% KHHK&,QPk:@FtD$h ,i l0;kS"3[RJ"cCPGb&aL) LXQRQRҒ؄#10$%1#!50$9H sxJJn)da<5r6C*o#a 9 qx&t#(u @@ -817,392 +768,421 @@ E 7& 5Jbi+Uwy&u"AHT'Ah&2 afqƏP8 D 0=gYOrI_i#p}hD0k={=㖸2_ZŃWANtP01A}'.̠D\h3p)+%:SgĺpݒntPO3x0H0q"OCGOO`+ovyd: !AD^:Ì{l8!Шt'x<(s+B ?p3A? -ϥUnZu`XUg3i?ԋ MrQF}qoyEԬK(-4q;WvÐǺNJN(F"ƻ˿pG] b&@ AE"_)D ;f B^Ȼ ղf:!hBsȹFQ֙B2mA{aUwr/J؛ctNL'wHivL0"`RkiCW̾-{e6 -'ԟb?*%vu Bz/BQTgrO\/M&y-([|ڂ*29Ӆ4`! ԥ-qh/5"A<0{(cvuș,qe?c'r, 0C y#::嘅,OY^y-rlaļpS0<F`6- ]6~닷R{xuQ7Jzb54lz+fMW:}đp8;y -Xy,%ӹ^k40O Wy+,ܕb$e\(a_!7* ܹTH>>{<d^8G1oobKFfF&1.f`ZfsdZtú]QOS JpeHQę*kbEnL7('d }+qb?'OiUJ<ÏN=U3MgU¸o2PS )wk(劙.vl͢\^tb0dIs*@e`Q ƝEo@8y ɱ0.f Tc2Oזر4s9%k;W>8ݥ-g&`Gvwx'sOGp(|0i,B9BL'iٖQo(s@c}ʚX܍0}k; gO7*7xԇB+nc4ʗͅVoumܥݴ.:3'y[v!(3.QA!l-KL"p Bf{|| S -d@Bʏkіx<֍Y;ҙ[ɂЧ\3w%REHP?b2jV:S 7V|-yd Ysl4vwzO a.Nwo ^VSĒ_ @A}4@0uV7}s)&4?{y E|g%իhARB88ć@?1CRؾ[|F*!uNYօe<|H" OW rp4|'/oSp B "A1k{ -2'9\P\16Q'`% _itБ)ia UrY -gdcadS -W: A`t 2#H (%>czAv-,<̚8i4 yɒ%0Oey^UʈdhӰ#wwhۜ.26'aw@'L 1rr2\b:CI _"䯆, - sV;BZ'H t/R M=܌0"e8&G9[$D_ZǦŞ v?Yvoʛ/y0D%1[> zM;ǘERyG/)zF?RDB^s{$.gep3/0]絗8gyW4lֺu-95y}^69 J-y:07uvrx{#:a87WOtǝI= +-xdz/)j -Eu pg}r򓇹̟ѿ}O;f;:K ޏeԃFv!̂d:qN> :zݬYlmRN[a;nՈ -'=pY ԕVi(L\^`7}w =>7N'3-]V?'}mQo>/6qT.?q=`6۲.X>7n#U~ؐS.~sY*o+b?+|d ]Uz\YDk -ss pK~ư'9j%\/Ǒ7/ŁqgMj$X?kyl-IgQJح9>x8w4}ѯlُò"*}J} y]3<~BqX}e= ;׆R ɏ#r/.En1,>nkIytֶӨ\w6yE?BFxEe<ƭ|d\HMc 8ӟ;OR ]<(m|ϋ]-"}b:1gC.z'ywøt|?:Ncq׼PM[IޗڧIEӈ0i6DWf%Q,$kN 'i"Az~ݔ=l씶|[q|2:?*~>?]̤Yg](loZy$PYצ5KB3:T3-$ KFZ=8yq?p =FnyIR2qfg]}[ Zĝ JVZHk -Ό*s - gzzJvhD"50T:z¾GE,jF*;gsa9'fN" Qɚ[4;.8U+8hV%O -%172551d9-9ef3-4ed2-bbc1-3f2ea79f1f84336d1063-e4b3-4c2c-bf11-1cab41a000d99 670.2523fe3bec4-4b95-4332-9b12-a4179f8af2da84f846b4-97b6-42d5-897a-4f6e51d87d6485546125237-e287865f-b4ad-42d4-ac77-1898149a59cdd9630ac-5672-464b-bdb9-a8e30fa3deb543.ml10SVGFilter +t 4.)>! ԥ-qh/5"A<0{(cvuș,qe?c'r, 0C y#::嘅,OY^y-rlaļpS0<F`6- ]6~닷R{xuQ7Jzb54lz5m"qPy`bv,E''[ϚK4rT6 `ܙ^|mlL5&$/|mN#8QH|XNLo#].xfavdazLwj닷~2t7`SY)/1zvmZλ=q. D9 g?~Qn0ݘ ӷ~{6tySG}(߾6F|\(aVW6qy]Mb3xK=.mb?B;vrZ*, /d6'́83m{ G&_mT慃.6lw;MEZs ?j8rzGթ×lHJm8A$q. mic݈kżh9*!,}5sW; U{ˋD #(c8[lL ه0*90іZ"{ +#,7cXSg!ntPc.R!x#>` +H>zJfIֳrħ~xWV릗kfx w]Z0Cxac^zQbB~; ^U0饏Q +|1o%FPr:MO:t0!Kw"(>w }+sb`5EmnQiuY1A ٝVː?A} Ecz@vQYYGӵl|)/]0D8>%w^W$5cIRpG^R +V=;ӓsD|KHh}CMXa^`?r^>*O~_p x>]vr[?\E=({EO*vFP'y Y0<#nϯuZ*.%9}+k`Oǿ=#pXi.M~{x{ߑihwy,+ Ϻ }m?k)ZxrjJl:Pȍ-強90/n6s>r8drQ_әcp!M+':.!̑G{X>óK+ܷ?ٟ Y2 8cfX +F.R|F=(03ru}@TqAzguK)me ߧOpPV3;9? +?7^ֹ2yv2s}?}s΄?!?/5{I[zع)yj]Azb_z.ѥ-LA^O?Elx^j^çS_y1|LN$u'ltO־Ȧ_ $EMKttkN~5,7H?#ήa@rD?av^!%d#!&*l}·GEY{?㜨*3xO[A<4as -D RJʶO - ip %ToW;!&q߳qu; - -E'zdQdh}ɡA` G: i}o""vY]9+;#H_zţ bNa:{{2, -]!^nAΖ6**el,K7DX\B20 2~3e!m?؂nv!k:;3b&dz҂ A32Iye4Kv&6 O#UE$¯ !EEEY!3 -waUI91T9k4-=oRtKQh8 fnShE=yqYMpvSp:&kNxVl>Z7tWkŝ}~5{N:QMseDfS)[JO睮,\&LOפtʵqιΙ2psU++N,:,9pi )NlI%{zPUZ!DPߙ)ɔ2E2*tT -۾g٭yaK-]Ug5֫X.|.lMW<}NUWƟws}("U!h!!Q&h1`YHXĩ@"B$:@(hj8 'URC9@E1-$ÁRT R!lfL(EM TDǑPA5(W;DQ tk²r" ZYAQ9EU+)zIRD%AP $")DSCEB4E)bF<DrDDJXID4ILl@= -U![Q!s1sZ1WAQ1 -gz0EQq" po<ϣ~y<$Dirx&*RD xPUu]ؽ/v]"!8 Ifż*:..t_JBE)cSv꺜0Ե9lnޏ9M-{1}IϬok,Y},5.mN)YDaqgִ-د( =sKZձe0[]̶5w[&K|d/hBM4HHE(BB, ,,Zc,um^BBSÙ"U H͢7"q\iӍ +$rOÁF{˝l; %4,L@LKLe|`9,NYiD(!bq;ikbims\˅VsӥKe]o~ڵ~*7>ٶvk{-=lO5wn95go2yXWPd,ar U`{P%Zd!$վkw=,EljHTo ji/68*cWg'Vʶ V 8)'=LjlATQMPX"\zdJZ?d E%ݍ= zgz[7ge8|Nq+kܦ9u4ːN|":';"49'}Kz0>I,tX,KJ;zVx |L4)giU*נ%Pp֟`I7Ĕ̾P w-/y<o~@hRHK `դ1#`үwLKTH$9h_J,uG g߈L!ҦJ  ey~ETbOZ㰬+=0u{7Uu@JŖu1`_BavbRK+E>{TP\b!4ڟ92.[dKQMWEo`Heenkl|}n8OWm6-!Y)L>K WkJ/LaVPwLu/#%k9MjpTH3.飦sm0pޝj6^vwG{fkzQ X4LN&!r7<Н)bo!|~.#E5!uQ@nݠ KQ`*g)U!یCl \g$1_>ÍkSly4vQ,*6H8ȽN#' l5 GqBTuCLP RC Tx݇Va<+8GO,p^06 2φeYȼ@67It Ƽ]~Iw=j4`Iɑﮑ bX$gw `Pz.cF;P7&*ZohAaKv#3-A7[9uI&V*W3c(sU$9U)@¸2ط2b&֨KZݧ:y뾧*L8dqdag|Ȏɫ`鸆\Qyr똶3NbFJ.]I\r ` +&r -X&ZTf[)h@ 7/m W:(,ְGu2 aR֓!Pl#Ȳ[K*pA-8!RaL{$T&Z$.gPcsmE{л-4M -GI64sgu!WyՂlNtxNqrʱ O -` R}8zDs 'fd-]7j8O oRMMZv:kxS]JZ= 7TwH"i3"j!ƞq`mѺ> qz/~Ԏs$}9 5`m%jB }k2}i/`s9/ӽ/:ckL$RXMYrPZco:'e}RQ!8-df%?fcVۇPj ;{a-!woɯĽ};wvӏ -eɗ$bF;,AQ3t5϶J 1iߌOYaRr_Ad߳V/lw$-j`YMB(UO|P! -%2j5H@-H<#@eOCŽi'Tt<<ɱǎ_1u?B6`GCD{Ӆ&gmlM59 t -E:$CQ3䰇J4axmGf6<~TZƃ3JYh̕[8+G'"zJnc Y*^'1hM]%=0-bU$V<  mW.jxxu9x .X[l b]@dN'Z=$,tZܹ5+p J>Z_B~+&?|v825ҏ`n VuoE8G>=CsΎORy/?9<XDtԆUCC#k`Nv 08CJ؜*[r}%0/> 6kDV4Vٻ%J7gxHrF?HM/ \*82%p4KzI ^W]o1V.3j$ U֟ ϳ)+f 8+j[B#TYd.[RvH@.ÍkYG6ًv@T0=*}hZћ jT'3".R?Z&d׏pl>8~ -B|دۤ 9wfV֌P~1hs:*^|\Hd_opt8 2<(D9Q"xYE!oPQd \м21]J6e9BLQ #q1ªi62a1OjWI+}D휂~ 1!+K1Q@&Mͼ .0LY+/SXk[p2+m3\2%߂Bya4C[@j)IHjUS }!#`a8nII:4.U#nv$`b`S 2cfJ$U8=HjIB͝KvPf_IWU/)5]|ĸђ $)?]|l[x2(P\E 0 Tx<׵=SH[⟤\^Vw$>5~^w -~/z݉Nॊo8ʝed\0&$q/U8 .2w3zQqC!(z.z}9EO;+`bE'G@KHƢ|l@S K $zaCDeQ)匦o[{rڃ6Ěrg5d( _'FMHlNiG& $"4+@`6&$ -8c"#!V!C7;q&Ig:QPD.o+6~pH#g`Z)(g1}7'sW>t;e,Tug~>K1 @JQ{`lyEGo"4d|Jn3;^l3-ۯc VuG*ςIjSZ¤k o30""RcI( -Ċ!H/1xDKyR@(ⱁf.jn B= -s~qf< -.4'MAԁ1鬙Rͦ ).6gde&.T~NAoW-KK+x*_-GnyCUe(VP[e#VXe{(RO"4iR˿;a,ܨP38x:KShWNls"@C\v%FAyk5[ZAsMaƩJ0#<%s0jN )^ۏv2Fpzsd|v{Z:0 @|p#iq鶋C;dEr>zPB?Z^FHmW{C-}g 3#21jY՘>"n'YN6~gP3G8ggl`{Z ٳuxm=@>^lGc{j/qzq6:~+ɤz~&SaNzԇ$[G3$)&i/iB] >`Az@zgnwhUx%%waS=F̨?w͞@,ClG܏vU'Ñ %ZE06 ק#kbq75S2جv֪eEWɁ@LL;5~̓/!]NW&9LhNMce]PM<)Gc%=EVnn篛goӲO:*<0D -D8:1(*<3n[Kζ(ڮfE8, -,O}Y Ҹ)Gҽh$h),fZ,ELPMbj?(N=<ڠ"܃г@ (C]ڡ[^iqzPБݠO(2Ğ,ǞBsIwO괥UNnw`y,F`OH.tf)<$ǙxZ&\Fq2`B NE4*Ѽ5ԐߴC'9<4\ i_E7pe -|: 2T/ "&+Y !}8S.hrA[(9 -oO' =6&*P˰.6\&j HLffeq%s \`ʃ#DPeI76 -vĖ&Hd4) CHE8ZC0%6w \j~.. E Ǒ_jwVW]uIw6Fht{=mM -" \$uEw,讑EidWmu̿ZV9?gZqeٟ:|O&xr?4޲j[< -gⱹ~0i-ز5q#ci.iڸdӲ{QNu:%:A_\J/6_Ӝe&X6Hȶ-Qm,;M' @`9Tbe-ʶ)TQ>zϔZ+m4ie9OyO[gQ(ثKWΌo4jb['rJt^ފG.}MeM'қQeu#-< & q"\"22L8?Nm۲ͻ'…nq,{]Uo?>/yŽXaՍ #CP*/ 06W@{ h>7z'CuY85lm#(&.Rymm]dqd]%Y5yND,P(XݤP*o4{4E4JEaȰ 2'󫝾8U) YjaӒWYȣy(ߜQ(}BPh|GIwpyYo?t'~*RO6}<C ?\f|q.ct WOQlkYRztP/[+|cvG2bx3F]7ozןfgU4ƭ1q#~)[Hsvp5c973z|?_%stj3qVhqWZJE49m} LJ>Zj}4I[c}>}OOks~5_^Jeq ~w \ שf7^}ֈߝ]*gS8i#85wдk9:}38]n~c~>Z'1Ï(QgFKpuc㿌^'37iv峓FǓq‡g)U~O?vb3kc~:qNо͚"N:S mQkk䉳o*rx _nVT?Nೡ?NBxm>!F)G -OJv?~F'[9ʇ#tkY߾ic\c(OX~jQ狪 -hGuZ/yV|%#|#u>?;v< |g}]a _嗟}f_f>K^ێetmL{zxS‰Kx?g|Uy??GC>co)2g,L)7 |> d|>dY0> dQTv6O80*LrZ,3P0cɫJ>b|߂g|> >O|~74Q:n 54U.ySpڏkgeij?MiuUWb(‰&HYZ\˪Ϲ&Tb+m3^/7%yu:|DD9w岢:Ý1X TM2nf\9%njXPi)KJZ8Q:CBC{ݥ-[a;e -C/K*Y1ᬤz -((Q)jbֵEVw+NU%V)xZhNj{u$PawRZ'iU,:o -/NR)28Sr -R %))~zs띳+:,@V%\QYj9)XpJaU7wz tοIWn(kDUW[VOull -NSՐbJQK.P fQ̕d\MXrܞMm*ìU$ KJaD?: XR[+>*9|e)mWš)2OJ]3=Mee-3WV,IgT'ծs{_l#ICuܿ+_c8IiJxNT0YҔS4 -Sӭt,QX][㌩<љkcא$WJIIWӲmd4Ж]ٜIeޟv6f](tFjHi!C@% .,.+d@XH*@/K"[ \z>܅g晲Ng\;&@(k,H n:}qF9\֍:ܗvGY[ɋ0a{{٣٤W׍2)LQΤn/{4 qe;$A"ooZv`QCGfjAwjDYe#Xhs @u;!Dx @BuhrI[~%EaM?k5\@dɀ,g},<.u<Ͷ<ęcqW+''ekTYx:)Ź`FZgkkuRڌxkR?1~9cK;߫QyVOKt.1a~+c;O[+o[IgSN/_~ZXRyNKm+3Kzؾ{s1F[ ukf)K-)|,ZK_Zl]|?ߟvf/?/Q>\Vki}+TʉQzi2O&WLYle7'9$`h, :Q I7'KcD݀Q x+&B2 .Hh"rhrQ)0 2t` 3G&x2BdJ - Hx&/ EJ -Y]h &\]Xt"scJ|ρم*0LFf -mP)0*E&DyR lw2=d!h!.=q=/i^Y.^Q}9K"itBeu& Q}i&mS:EN)jkӥIlHm҈VM~EN+&lTE ¤eQi(py;̊Me"JlZ/K82٦ xuo875T2QhUEj6f]զuil[[oIq&]EV4-qӴP4m 6IQ\IKmdu-j:}U"a;0khMK[I LӲj.*vXmɦEޗŔ]ln*h"*Ѵl.rEMYM̦ik!IMlQ,4aZ[~ViͥnvEK>^ fev!5x4&QFꗋkhBNklùe,vH]ޛF˶h>ᗲ9,Az5So5ݫIJRa\ɇRVr*9MXKW׸49ݧ{L74eHiM$UnJeuNUӽsVJRXaWԭ/i[$m,|IiXDaJ0NSN%yJRoW8PQkNJOhଛ:a oOUY%\ͺPZÊ((UͿlɭE鯤z% k%3[R(laT/_M,yv]80䥍bb9!F O6pN^BpRt@ P a3&ܖ D - Yx(^BφW`0F`DH,X.AP`0,6IJE#DLh B`&2C$cA -_ءb2 [#‚AAp 0"A'SЖң@'S8xP`.: HRXƀafJ"B !4c=GX C'B "q8 - U0' D4hcWg:@30ܶ@ ; - 4aY",!"T9:  -04 2 ό l耀t0G&X\&:B3R Fbņ#̀ ɭlWlf2>6“L82 4gbJz2  ItW? -dI&%7p4ɨ⦂dԉ2J<0|*^aKOM5,uca@1}XI9` , H\(0,6ňWXT@B+ia -+ !gHBD!}L^`nXPa؄9w;`, YdЈ?H2*Ղ" vD%hd[m1$H0p+B@GP*1E$8?$ -,АqR4PhEh$ ȏ C).hY(Jb !0dLe[&"xq $V* 1X`FّBt -Ј& N6FRH >B!%A;cCB(,f,0 2HR`q-Jh` H -endstream endobj 953 0 obj <>stream - MF 8 ^D# ldB2FF0khƇǀ3B`W Y i=XD cD.3d[iHt_ehHl)Phff3{$HPJ3 ` rUPS5WN,~H@0*"8aaqaBLahXWtv<S{%7,0̑߫K,1I=F%o[]>Z[|HkW. F(;r¾jl|gUK,[X0חY!JחlP )t`l,b -<8 -|A&8F:~-όh*(G V 8 ܇~cH88vNPZlEZ8bo~"vdTᰶ -rۜ8Yݪ~_r8 6RvԜ AX:xU\>لI%a-v>'+<X4Fb184$ڇaQ!}FG##&_qumKzӸL|׸ 페VX5J!LvIō{92i[ -ǜ}`-A8`gS$C<n`^US%fc%ոN)=V Wϓ4$g/+wVMpOsNUO 5Bh4ptX <#X+MW԰t]D-9lj &.Zid#S[S:b6c0DDz' 8'atȪ(`>/6z |9 [eu>C^u!ϷlT.? -ʫ0)B4 /:2G"|DK,?"5Sa&+DȖ m'JBږlar/._ݡ҇6|Ԯ%V)@wFpEOI:vn:]c-5MŅu Yy͕*1!"9ze,Uzy]~u4I.!K" ZRF^H᰿Kd[8B| hur_7?.`lkx_7>ѸRqNmXZ$+-/|Mn B]Wȣ7Q6}zj/T? 05zݵ ~uwUk֣ 4D@!,|tcՁ%{lܮҬ(mK4yQ@^XwpQ/~\Եl -sQe4FG͏IET>TkڗRr!Ǽ7 6\U9E1gTӠv^yM،7l !'KB=U1bNxυO9(P  1_0ܛT8;5dc}K8ywfM4Ƞ k믜a1Qڬ%|F#u@gZ6(bw/܌L(uYtG TGvтUQtNF?2TZ0g*#@yJXtEݳ -ȷdhPR\M6 '1 ÷$s䳗54|LV(}q w JZNB=[=2u#il}|T0C.I^mtN1!ǭ -2~[ԥ/}݊xXUq9I1.s3g7jDΗL= Y( kyAXҹPJFPG(M©W|l&ߴ9*xl<)rml9-EաVK'-'n3kanb@k4C|֯ռBC-!cI%Q?FvJѩ|(S=s %Si`pPٸ]BO#j俠!.̖tP_H f3JxEi ˧ZZƴ /z7Vg>^8AXuKjv(_DS ^yl̕JvgNݩC^#-I=r1g/9 ~NuqrC*qXYsL/!蔝4Pݲ Gn3Ԇuă7jp@%DH]AICҀk+FAVJa%G$B L]}*&`. -]te -{'GW F"Y2P7˒X@G_s&u.@GN{{qA6݆KP -!JE:W\~ʾ ށouR,n 2Ä,s%V *=)>d;Բ<0|`^y5u4Ξxsȶm sôm(hɡ&v`3fB;(y;> !Ȣya#bmx_fqlWa6"m!5 ?} Hz:nm:Z'z0Va̍DyHNrMR\'0HtީL7?E>Dm;3ъE~`*NQcixL Cșg4aUN)v94o;_sp8G'e3\_2ӳ$7ֵ `IeG4kOʑA%y2,jIv2LԊ&n#k뱡RvώJu -A!2]U-`Ҷ: ( 9\+ԙo}5X<Uu!su_j7 Ӧϻ†A;!Z"ͽ|X+Hn03$C# -ɛMMxN ->B1wWR*Bp0ZbƁa -=RU˾`#8IZw6g.LGѐ,:HJM#%Fs].Q4o}WɵFjzHy!Gʋ^wE\AdlbHNC;,|e_ץyDP3Tz'W)p^BY`w8 o#U!e,.io(^/ xWLOwPiߓT*Q빛s)(%G/}&P+/8 V䈥t8r!_,]9F&_(\.th{1q69J!YZ4‡="4H2}IC=}6؎YYfDO50je켨_jsڃHY iap :K5t;:9y1 Mkrl^Sԭ] "nǖ@yY~TAJk J_kjɡQAZ#a2(tLJ?HR$±42Y$C㝹k?/=́IK>MK- o-J]@IJ7 QֶCix~ Jx^RnO@[b{ 8W.mϜ\ $@ߣ*w{H{x% E|s Į4+tLGF밥[KI[ŭ:%y6ҍɕFU2~.h'xOL&ǜMՐU*G6?xƴL1^&u@ƜUǬUꖎwgT&yG2,_7k1kb@`,* ngJbqiE5s/,OR܂€Pۜ R!O;:Ҳ R g5r!uȫVg~6 "4J,BxRB]&BMV6=f9G0pa!'K!"ͣtX0j[D]RĴz\55jn2̚W4 -aTBeo#r;_pn+54UFNףX,L硈.CcvU8BV-̍Df$/!8jfUbWjyu:-6hXTSj h̺6@wٗjH(#%X(Xm.\*|h@!&r5Οri14Y9ECxS`}KRD:vTZt`{Q֚$=ȧ+Y /:HWU!>J6"?n>w>T&w$6jB6"0`Nie2fC/1ͧRPOxKI(Z<@Mor D\L?ڶeP"2jDrƠӥT$&p<I"mبIq -0FQB_cS@rV|x@q$ۅKTD!Nk?/zs>G8l;k/@[bYinyKn9ęGm-7Em. E/ ̒ZQMx@`ёDT"ԥ}^8CQ ;np391A+>EGftIvbY>n83 ..ȽʋݫG`}Z*R0ث&Ce؏΢tlU,9!ziisf̟g矄bcqH1 W5=.k}uTn)rF8$4}_> l8R5' 7 g ryGxEz.^(I^,wNl7-͆D1IlM/bAv͔E`Q], -?6KWE@F(PR:@RH[si{t/!Ot?IBao -Q37HDB` -pҍt(Ny^v7@ YdtE#k$(&z|; -_]1ڕsw?ß:]7t0 ^ᠠHK"Z=E JA|Ƭc;&A%3p@ifD#(`@pDQW<,MÖisr"znh[5ptlã|$4c `)(wmzNA5MjI*Xu-+oAEJLaL\dj7ts:s"dj* 8ѦnBQK@jA"g24Py|gʼn^Î$ _f9ءJTBK3D}*WdVB)02@e8W_&<ݖKpN&Ei=\f0eXњܮhڛ=ʶ9ҿ/&8>)QsVk3dhۢ53V´\wb&&866چ**/A RD!KqjH0δ$/#C KLy JFRG M&_t:Xs<ױNlN`x.ٙ0O p[mY~Ӏ9B6E|Qx'd2H2eQבfSVWtӗ)R7+aDD0%ffkw=bҫ4 -إRT*GIF e)_OK` -6u33,5X)+De.[RdQdCLJ!Y͢EH""jM㰠xˤ!1D\F\,wcdE/mZ`.ۂYwiKTt>Ăp%igc$˼컚IO%7  ftI@`!l ks Sf&g?Q8D$ÓP4Og RϜ^}y')\15qXrXn`㹻%Ǘ<?UR9Q?y"ԄLdAEݐ -sp_(C/ҭmj{7MCg¸ٗ1% -K08nAA ^Orn0-xD'+x]'(=%6i)dG`Hz0;Fqe骊UM^Sl5Y-li@nMͥnq\!d @/Bba2D$|كp(i"nJ`\b8^p6ař$155&y12zd G_ ȝ ˒[ng\e 50.x&@`:ۡ؀:[1ktNM:vI/C.e1]jEY 0(Lgax0W\02~¶sۆr4|Qc>el'&7^RzR g;J5)oA3TKiZJkY^EW)}?{Q*}!aӾ}!.#_*-e˥+TKlp Jס~&$Ƥc잾O.`Do,aܪTBHi[I#nG(;614jɲ3WI![Ee!_RY3n *NKw&#V%r| s+t5)듛caM?AF5ϝp#Nݪ1C 8(.|UD5IQ[KruBI|oL4re0UQ=(|i q:ZrS,Ah{H$gf"݄sM+ȗ+&$6ZuKjNhU:--eucP_S-8V= gP$Ի\żјD~77Y%9Hl:1]=K\+e!Y!V7ona_PgQ -LyƾlA8mPsIB03M7 =7xHw/F3"l8P囓h)ᐶl4(1zVtY *Ĵ_Qg.Nk_|F"j.ԴÖQ,C=s!NhX Y謰R;v9+b9X#ɻԽY'4qEei gp<ǏY^ag̺l -tش<,]9gVMwG̢[>;ofgYGR]Vm+)4ea'FRP t -8vJ*m/y<&e4bD0IӘKہ1¡fGgPH$ =<֙h!I_eXFPU12XIQ+YRɚTE C_ - dD>ZYx`w{:+Rdmb#*t[ _th&Ђm支т‰@U%5QNlǓPCD$g0LB HhU!60|XeVpd!FeR&\<QM_ڂ=ۿެQEjpG7X.rsFLX;EF{a2RQ95B܉SoFu72E)#Yyi7Ra*$TcQ9`=g[B ~X)Dh>b-Y)CCny}&nY% *P.NBe.sYia|'S*wM)5Z9[A%'>jc;ҁ* -Կn}h#ڇ¤Q 3T^~pK7j @0[>+&Cj_MDF6pՙʸqCLV4r)TcmO͂,Ai2nAu2:'VoWŢqr'ˁ(2|/(W 柤!':Oq3Y?ݶ='=\#,/: |H|\EѾ\NM -wgAv8Zz.p:rHil<,ch& ,jWA~zG&%3iȍ4(,%L)&>D\Y#I3Ԏ>˒1Y+x.r3ۃ|9~ԓ g -˴2eJәXAa>#*3[_m%21c[>1.I_nq7EFv}X9o0Fx2 Ao"&GQ=7m-hJE5?<[iSXdmY0y镃6 -gL`ULF&:]e{5Ӵ^^6h,$!fj14V4 8=5k58!O-6CRfIO"C S!Kn(``*$_ݾ 4)"w[nX9eG$)01 - 6-w%+MəpԶ#E߫f8;MO?ܹz8OВwxvxzNP+bLG/-1XG~*_gC@ -<[STJ=uuFy.lx#jFFBEeh0o_|lUnLO-Enh,T6r"i[sU,o{rV^DT1-3YF6w1XΩߺ@cGṮ,YC{f)Q;}/h:O"P}EUԄ V m~2ձaH]_@b3hv|Cjp;XL7$!P(d+ ]oI5/jE_ <]1>u(zL8CfQCUn= "JlLQ+P>Dc1֤L|q?)_ڭoBTs'oےk$(7|7B/yWVԏ{`AO-a}0M.͜x2 *8ƽRapB[Kp^64cFxgm^F]\uAIYDE'%0^G_Rne>?F- -Icb+b -CRXUT* 'A_!nIS>Hq%)ҚtD"K>R+tJvdXd(#$6D&r&ɓ -&Kp&c}QrokbJ֜o//$j:]. 8ϻ;Db{+[ 9y`G.Hy]o֭ Rٻ:ӏ̕s941lTf^CԖF̰g@?-r UͰ~9YB粳?Z)8[vj0/f=W;6miW`808qE渻GJ-.\ĥݓT$Ene{\\zZ@yqƒFSqv˭ -NSu8 ' I'y{H"Һ#v,?{=O!U.Mi86Ԉ7"$Yg~84ռ@]yUj@ Y77**^V!OX(x5{Av1y2"ogY߬*u V.H윏PsE?я.!xR|_0&o{aY/ɳ6iGdKVw,PL$K06OZ2a$d'SnPoBv!zTs|@װ}6X='Tw^novX]INV`w_ѕI}/ї YJ u&/GEee8tچX[gsY[®L~E%$X(ŶmC`_?0?- 1#pq^C%G\hc&z3=b#L6-Y7wƯe [ކ#=Yz@6 x2~Ui.&6IjXlÐGEN&2jݵcQHOty* U"z3*s?ՉyuYanT ׂ)Hr5 -`o9;PPN8=|7Q yGo-\ ʆt Obs(\,bMf(Ȟ,4@d}>-n\ht;6=qwdZ#DDKG8 m}OיⲖRʯ/9gЦ# "s%Lh~zwaˆAN Lp+&FE \@{M nYq.IB{]s1]>g 5i_"$ -Ѱ>@o0N:)`U'AW=W;KoN:r$1.0ix &OړWWA;"m4r^6s -,Z4Q -, QxCd`&zix@MDjۗi]6su}OwD_⭹oCA/.N*0""0?d`-I,RIЕtlTw`ޥebG@(kX sv&'ϩ|/}Rҗ/(Om[q AT(*PrE\Aݦ3ge36Hx| E>5:CS4;],X -ѢwT$$z -=Taz9zz NEJ(} i!m\$B8MLyCX4HbsDM >oHJ-h+SXvNP`u_HxfΊg*Q!!80T 7 puj H%iL&[f Țǀ׉mfIi}YFb~  - - ܼҍX?0?|'Aq!VI =\! Oe ꠩i1mkL4fp+LҍցM HFiN|v S\) 0 3z1` wpjUKRʅԫII_V W cXZ}\jG /]䄇CG3e -BɀDY$X }: -1E.wKe nv/X=)x0т 0Qnr["g|"$A5x -F*HX,1 LT0eS#꺆52PD"bHNتV ( A AC!n+x<8Nh,86 -{aO(1 JvUMK+Ķ*5 ikU4%GtKɰ8lvHo´!b3^Clb3;AgȎbzXi=WȺ(nU|a^ *Q ~'*] -T;%1kBM`Q@0;[q1@'$# ^xK7[@ccjf=`%zVcdF;=v=6z^4v ] % -V# dYBtlXu{pϣ4B_*+jj -@q} -W0q5Zd 9,dHd(fbzgP!:X'rrԯ.Z -s> pS"3$0|nh$ -LdBW& -X3(_6kfJ^[(K.-A/PvP' 㺲R>vm - y)="6m΍ش`U\ȍ0M#ܐ!g;ChNEDNx.fjRӡƑ|,w -o3KyB2dʱόj!'r!?/h3@ -٤. cއj^Qpyy1 oR qf"q\)dj 5J-4Gp -ҏBQ5~p[8DJ> &:VEsJQ, a5UO<%','~\ t2١,8b{v Ihq[gJPLˆfգV@-kAI:Hq*f4GO EVtN$ -;%b~l)O$pL4\HQXu8Τ:q;qdž“[+:?SD}&q]kԄCn +c!l#Q`Jt[lw6\4@ .iP -1fY+SjϡpIW#σ,Mc٤f o7 fE}\iM, {W^$qli@8o t"JV#Q|4"'b 0bhx2ُ}qmJqHB#fbߦm-T9l*cHKyH.d-7 a򠶁-: gܙac¦?ݾM6Z"g0ŖLu5i$fAdGt -ҕ+d?@WS-2 HIAQN0_CKMkփb@QP>ѣУЫ$ѫf7`H,.-z{ -opM<쒞@:z$}Ȭ iUƬ'퐕UN?Cuq -8¯a8>KPSsS8aJZ^) OJ\p@ \GC TIu 0!ʏDOvD~Hc'o41rs51pT4'mP3<[+A}A1!qH՟nc<<5uOʝ?=E[`)ntXJ* 5 /mCrhQLʷ)Ɯ;g8:i'gDmmխ"WYsr C P3&E.e2B=aieSXu2A ~\7>nbzpJ- b\w@, -%%af!u5WY&Lhu2h}\=:F#QLt[#W h ~\'A #FY Rq5-BHu1qcRS5W_D Xj؊XM308G6=$Q4KQCy]; YTr6 I}\[k!i}H(y'h#hC4IQGP`0&%x}:8ZYr=ĖD|J~PFK6vB!h`qݫ!D$34l.-<0q,Uҭ &$SAC 6ű@Wb0m`ʰǖ| KBn- yHt8!a#Fh> -E`;P[TuJ -Im/M 05M{/{;ץV4+GQzo&3¦$q(ׅ$I:qf3v0xRD -5-f0)t\wE1X -,>-o)7Z?3V#6S(@ M;?Ame P>`" #j~e_S醩Xd#B 7&CQ$kb!6b Wՠ"i!{!Xq -uԐe`VHB#4V,8(o"(ϐd"pH -N0Jj)ʑ!BB=I,LY8E`yeŜ\:]2D}Xxy( -J6R?ë&Nʼ杗w^ry]w_'Xd#@2͚rwsI2w|s/?f;}mrMu'5[}wi^6}6ܹʾf_wyqϱs.fu*6^߽;{{W{Gz_M~}@} ػ=ש_>lq44Mޯ\^s5=k3,u>M楾}s<}u9?~u?j3rܯ/u@:O_?|k¥.ΥY߽M/;f2{y]ٷ֥%.X1޸mvc1ey5ם&zԗo}o6qGsuc__Oߎלov]ޮ5ם1k?%ǷԷ\:_oǥٽ5.Zg.K͙^47~cyߟ3םnݹ,7tsi^;9-[tX^~}=םzYkܯsd=Ͽ:s/ow̷f~[_s2|{rk̵%k;m]3򒛦e>lsc@&םwm^7ם͛go]~W1@ks} eٹN՞k؛Wc@UWtc\=9eGU܏θ{We.2cG^˭{.Gru|u9^חi~׿;_ukVsg_o/myij3~=6//7ΘgMs[-}y967/ޙN:c?W_Sg͛͝ͱ]_3;1Ux98;߼3|k_7c;Ϸ:ro*%uLoz.mYo&w\bYolbK%%^^5gwoz޿{޽]^{_]/3Ɯ^{~\sn;wke&i{nnl~4ZkyM9ʝKq7o%svymYǜ^eM{&杬ߕ[.:`VTT0T@|M  -ƪ] إ7qz s+o_}=眆r%L-"Κ`i\& }mXhb`d(`LIo%TRLj`Ls{k1.޻7{/nf.;ηܜ^,Ϲ]wz7^DŹ$s( lڲM8*P8@(." PB0 #1P fR δ$)B+'7 #bNV~ iai+(^sA"Toe.67F9m sijb/ds&d-a1Fk^X|QT0>3E4]N; -LˠYK99v@${Y/4kM؇K5#KXJCE{(P[0jkX[|i :$4!fW%"u&` "n[`C=c Tā^fL$+ L-9Z-@It4fPS2i1ɴuzP'.wE%qb䁵uunjȨI .HK|2}2-24gbCp@\Mhmw;pء_h!k*^xI sjo/xtCWłvҐ]dԐ/AT(<ٜ/'#;S*rъn3'ۥ[̵n-rݶedg* O/VZpWZ[\a( VqdS $aٱfDT#s:B<7`d"rRf#Y/%xȘfZL0/a{)lg+Jf$q}\[_WRe7^Tjn0unZD'_-Qڷɟw%ְP&cCANĊSẌ8fRz]rԇMA[q=9b d:e 1}cL^@c*!ilIZ4J%(|uJ!YMyW6O9CZZTȒ wk.,?wFkYdo3,bG"es$ZFl}D%#/Rda# a믹r Q!P9t!tKt`E.66xxjq!h8Ooa}{T!oY -n^6}m@өBеϬ1l<+v⹡!WvӃ}ђ0a4yyBpU?ȊBx<.ʄ ASx#ifը1mxK_fQ\ˢ_%TG ]rm3n:\!xS0Tu.7nFэs}-a.Jks!姕9,AgyBJ?K -I&?3}QBL^zb61/3L%=MĚvXfcw̯a ] m,f=23Ҕ9RC:x^4Bq'HtL"IC3svbwHa 𸸎_EKB>`&ȢĜYҖ%`6/C@cQxy:h?S=B h5c{Wst.5vd8Bg~І$7b&͎KYS[dʙ~x'$w;l=DToL: K9)R$pXg:)[Qt\ܠ["c_eGJ9,Vdg2Iфv^#\6Zp\agV];'s(!3ۚ1I·0?)?EC1,s~&|9e K%];.zr/ٶ'Y.N(?qzopÁ oJ7CEҹl Lw $yuۢg*Ӄ3\k3cX(p:L{&@Yօ#5[M5Y[;+/I{rON̟a|75KtgQ3>Y$"HRXYEoJ'Fif~0b"}o52t4O;}\/LY`K2 'm~fDv5>ڽ\FAό:R# @PU<2 і9;zws#$&>$wਞ4^bP8QйJ=| ]J\TI$wnEO nӆ`UsƯj6ۥ -u> 1"Wx^2lrIn)OQ'֠}"LQgMf`J\ubMԇo[UN)z'Z?@HL@ΆnZ3!_4Q%X'pXX/g`tUM4eMEҧ)eVfo3G6vɃmTy,ϚOdN"N>q' $ L-YR(3Mǀ~UsY2ڐ|a"%u VQeιD%~2}~,#Q4G`5PL- -k;E}:* kቛK@I:3Pr>SP$'P0;߫ -Hř'Z`%WgЭ^e\d9%XrCNVK^4L -`sVo,~25l4kax+Rb)%Ut6j,7-&LUGG~(2eϒ<4kI"2H=f ' wKuADw6(6{!t1FP)O4P#Z|HǾ6lK"Y \~WM\_QvT4xs^t8  )չ=: b%[0|=M%C$n^n HnF'&΂^1UjqWߛJ?, |TYPаQWFW״;9"R͢BAdFE=)%Tnm)P >eVt\r@.@m!&JbɨhtgqSU|2\1k''ပ&ovؠk"ZTژJ 19>+vp¹ -"ÁG(J򦖷yS[7asul;Sbe$u'-${RFAM9M O ]vKec\'kMJn0/QˁR.\5nn -U^be&Ul;[P9v RP|oܭV -)VYg9HF2~i+;A}82܃a҅g~kUcB.Ci~N}OOD_V]@"Ӱd{,Ǟ1N- s8*je&ՈMj%W"9| -@ܷ75[މȡ,|õFDhuW *SGg |>J|W$7Kὥz\"jd]27!w? mJ!%[]+d3YjcU0.aI6SHx$ӕ?5>RJi_Mhw5w:CH8Qڗ-~BM\~>-[gOF, " {*]:+0tOCMbJ'.ǻ8d" sQ@ו]&R}Qq%{QfڠK@>k>"tSK',5󈃣$V@PWD,x ?;WKʴay+"W|%K&ͩ:NvƓ%~uZ6QM=F6o +ߥ0kh5}`{?mC%"qvv FyJCS~<[_VV@^v~qAbڽԁ46b!Wʑf(O k_ݗ@H^+8mcuVЏ27S%S5"eCXhh=4b'`N3+c̟,pH̛#B\W璼+E,26sBPiAumBivJ3y8]vc}Ib=+OT_g[]BtLF\rh6la@ -6%Ecv7҃j?~w%FIqɌ\*$QsJTQFQM --\Ղਐ~@uUWc`Xy05#f00sg:`2lyżSYI5p\؈wIj5 ,*q l6fL!$þٗxSe6FȖ& ##L_cEF"OOCXfGaA#)i9Q9ҮO!+Mթbֺ7 P} YZ.-!xT"?g tQ.6xI%c4l+kr!>z-r :S=I -sLJf -Fn\JZ=rey+4@ 3E`L@`dq.DIYYPI~ƤDRF;6!':IoRf?1ʡ'/+=SnIEi ,.wS_iFVrn-XxA݌T{ HR;O> D(CK- ԀHp|gc+XcfۢxtYXb3z+g<8y -د-C7a}ɸdP=d#BF]yk\.B&?:)-ȡDu - -rT.yz00E␨NcVy쿎irtc[Bi8uOű?+e"V.!T)c/RW'KB?Uo 1 \WIl.O7˒g~yZJJmu$v+'=_wR%B"lt!N]i+ϖopr@U+hgogDy ;!k: L٪K -$Qhp!Yg薐UmnNl +@y놃]~GHH+jIDbPv%2C. _Wol+*amY+R3^Y\pyzNMbm @LXҜ!tGXuUI WCPw!!ߢr;vxläd#=t6}SE+wAhʞ[I(@tsm! -+qss5sS!>axƬX~elxxt_%iXz-B jCΪ(b| "e]N^;(ႨV: 5IZS63L|R3՛% `qYg -,8 4 'zWN,HL뺄.(\)8R[DMb4?WLUЈܱB@BOm\h? E!>H pT-pwwN$Կm&V !hxThù@Mڟfppv@Z'6Jx0v)^vCRdcS'a3ҝ@S5h-v>LtT+Qc,%0HG];-ĎAAP!*YA{z$aϫً5튽$ZR$Iu Lb2NH|<>av(В`j@IɽBMYߤԃ*o5cTތ_.g{ 4=| xbɾmbU[n?b`P՛ o 0孒0Vf> -- -Ѭ+1mf ?՚Bs@V;sGMp቉WwN{2&TsShrTlt)bT:h)Y\s#( -woe$ GN`SeaeӘ5N"mh< +q6L%Zr)+RY+g՟m$؉9^/&DM|.siwD\#UnCr W*WEj+ʅϸG q)<`u@4S]Ԡ+o;ܽMA$w D] -}vxWjUCLEf)Vnl47:B ->9{n)FZ^FWKN3*qgqjcBqRtJdChDr/H%*)5Pe{)gE2!y?܀AI@DoZ dޤ a3MoQ÷bǶ@pM$.A.KHQ8):FVep`Dո,23em++<%',7;c"o<سb="]*| -ꭃ_?UFE*D3h^]ؗ5* m]Y L;Ĺ\6mʭ"YS+BSPB>&TP^/h}V| -gXkZ3qeKh)jM bn܀E7!7ܱu*k4tqzB7]3 -ޠ9Ҭ *:mWRn(Q YcT8xŚ -(|& [ee4\ 18-Ѡe8ԍ}hEzTx!x/)Sph,vSa0,)e/)`{!ř]^R\T#b>l;+3 mѐ'7\w:'%GҼc)"gО@R}H]cp*7)}hPQ(P|2[O~9$SBz6!WǑE2r!\@MD5޽&҉BdKQ;UbvSԀ+MT42M99ĉI!LV(;EVC70$-e1z^8&-4  Q;3g"AƤƥxShRM)RXxE>l׳,#6#ceJ4\PJZNg=އ+*_@ɫz' %}HyI~4d$1^E1!yҬCgV fCõC`ڠOyfC>?2xe$Ƴot=¾.nSY㙥P#1C4g -o18G%!|Ka-#+j6X0f.Q\x:01HV.ofxJ-Z#j;+`nwV`x۵Au-%^u3Po2!YCd^9pP%7Tirz}̆|AaaAUR L"n4&cp)KKt\#&-F񬵒vXLzM b,RGT /iazÎY90#!~iv*Ԝ/O. -;'3.H'/.1L,~G+;A(˓|py5oQ~sg+]GN: "maK2'JvWGCds?ПnP} /: 1ϻJU`Z7GSFB9zΩ3vlVH/#&lVSe#-+y+o6B^Y| bXx}\lfDl~:So~o[񍎠#^Ce8F\qգl3i?eC,5=1I89N)֓8D)#2ذ G!BuQl@V/Aq:۬f {Ù!T䣢űq7\(B81+3Ю !68H?8s„xӾ,#ȁe>2l;x]>i v=?=>btC8%l5Bm@q! A>fF-6._NXRkec ^;yK]vtZ8ꗔ t7sPpOdLqmd2 %.ԬUdڕA[] g]j;BG'֋lu6jT'N%BY#!9JNZbK --7:晧FJm6F_5mBߢe F`CCs) lٍV,EQԵYVEq[!O 9PteGj͢O^05s۞MB m|P@OuM_o'3omEX>ZZTUZ]-@5cdOk*p:V!jG^6YgނH B1Q,H:f8ctaZP|aAV,Ac&=7vl>؉4<Yc:X~h9Vya:S h894I<֝!rB]5z꠴S[#]@woCo롓6ˬoUw(}."y&wö`G$ AudpHGTz5Ajla3H6 EQ)MOFD`P3@~) | kM^ϑ+KĤ (x9/ci82zhf 0wɴ˧ѸX!^9ć5sIpt8[ > ~RpvЮ!YaW+haŌ#y}{M!ҏN)]4FM**[bCr BT<\}M䏸!ob6iZgc^7mS7~Tو2<2o0~21\p{^̘ 6DP96x?FJ$F(-G5`X!D hhOR ,!l^"؆~6Xud 6 - ns6V+l|Y)[;Cl*d/űX (EF6g65?[go9-l`idut.zHQʬ㈀4r{gOߍ''J+R<qc;ԉFsYXk3Z$2-f 2x?~)@\=GO? -Rݦ:.lse-:I3`s1++_i#H5Z ipWA00} +sFBGǃ2Su^FwEC4K?R8Ԕ.Z!/X'Knyԥb2Z8&! `x -'%y羆vί`i=F toh~{>/:lxW2­iiiG[.7_飕cGN) -YA6?!`d;YZSG]Tj$`R؉kF^]UHk t0hD7 - aVU͞UJ\+H! }[Za 7\*+~۬K$Kv;b"6 ^3*sE9)MBo!(<>/myGG -8&eN)L!يJ1 IٮJEKxHK'[ZoŇ ^V;W!<+U(=#թ"4L1IWӨ$bfOwXRY3u& o]` $`4P¸\y -Q+R`X0Yv"ُ&s/r )6t).JVJ@eUfZόѻ! _X2"qHG*iM- h_aflQ!Z`"h ,"j YD`p!{55C|Vb_d ,JF8-)Leops& Ѳ(C֥`\,M:$ O NϠmwA(fWvNYJ?@ ^S7S DTD+{s:o%YfuDkna{R%^Mm&KL#э&Eٿ,UnTZ`$]7jT֧gÛ/ͰgCz9gdDyx'ة-.:d!MէԕFX mQVi_ZвM0]sJXF4ټ.Ξkf%ބsgBHA|mr^eJ“>ł%i*c^;C4Gj 9¡!rZTm#0ntu_VF1soap4,73A˖0lBir.s'ȫ|uGa f(]2VG*kIy<V<ՀPPx:ϙN65d"!j *Z 4"\\3F`$  0 -D (p @ ݊DseAN8w|PkzǛwc4Y[cug{lx#H{@@Po%hء` -ZYHV0Jd4(Ih_ ]Bg. PA )YC͕ddt*$.Q*@d,5DZ _#)阙*ɜS:@ M5|: BܑR\L (4La:+&S PpoC *[Ea0<j7 PucyOlԙղ$6 0/FgAMQh@h@($QY!f+Gwo,rK'5 -w(eTf@iLa8vK{cĮRި3IѴO:2&:xK4Q NHYȓ\oCn3= \m6( q"gr:XutHDOE!:Bs;,/ȥ 3 Od 5Ԁ0M Vr%XBq[P-XYOIeq3զNlv0@p̖EÁgqx xs*ͤIEX3Xb*eqx˴/켑!`iT499Df9Df:p+CZTTLJJJ"[YCbC$Ȧ0@rUaXva8 T½ U_ -&+{YD7Tӝ( -GFX7SL%ANgRZܹsZ  a7%7PJbC.WĦ)ERCSP V"܌4jrjZ/1K0La*S’jt>:`<&$UH" If%N4đPq{7GA7e2geцAngmp$!Rbo`&6 'Y-RSޑdm{WBaeEcRD.SXUX t!WʏĘؤ4^QLFv{] w+s -NDQ@#Ba}#'&,0\Ґd2Ti]N9wHBLV$ّ(Ē.ƼK}6Z%J'IJnd&iB\^Yfd.*+`7fÀP٘w07ȭ ܍L l* 4CQ0b1 G i1 -<.( MC]zI Ld\ L%G怅bՖ,A[ !C_s~A -S934qNMWc3RdbWl{u:`ԶmԔLQáΗFaj_TE2"":(Gx -RBɪUL%jʑ9.#G9r%gA?[ C %p8!v3tG|9,DDX -_"A5^: 2uL" UM2, v#;w2-Q;kն5R*QnpKx0UA~+z=c]oC ,Bge? ; WۑEf$; p0nrv$o~*IـP-{@(2wR}P -z;K/]Y2F!"Gb[Pv_RƲpZ>I*u'y^O -*z37gU~CD>k}w "(dC=heHt*Kn%X=Gl'1=5F35JT&'Kdcry@(Tը$[%MYdoWH&IDVقhy' p2QY>I= Nr~]?%udKːg>zbl)1E2?D̬"dq[ AiTUAڞ@:ќ.5.PZ]*QܙEVI+IYY> $Q'Ub]Pb_N,jQ4Y"ZMƢ̓L?s</NL_}v"cz7)$!4JBЮTE:,'"c2"AS$ƣhh]!ɞw6F*2 "UTG4 `ґSO>" ѝUݕʙsePA֔,k:+Di-KQ*#3̓B`*0m)F*s}WʶKb8$U6e*3Rݝ̰TL!~xv(W̲8ͷ]VW4?|BTZ!(L  XUwD#CUT"3tK!r9*~[պzSNS0CBIBqHJL:5ԀP 3  -C%M9uwC,̡PyeELm|; ɿ".\^ȼ0Lgb&E A34%!^sgP71ő҆!%hןcY݇(IC&׉'d*ʌI->=8)GH^*ĨT&6ذV;"RǶmɞwWG` -̈@ꘙ)9k$2q64!qQ)"Z7BBp@H@yd& - - ~uTV5%ۜt83q LP*$zECj(?̫P IT''H٥Ѥ٢t*tUW`';t8ih%sDf6J׮vxxFYf /fTba^QeK)JvT̟/{Nf=ذ{p$o^́v#4H;Ttv7X=xcc@h,ޔ92Dt,2bnKl#Y'q\8foRI;kE-T4#@4$á0 Uf4F866K!9LR -!D (TP"tn>4"'绞YgH:68QFXNTPN{(3``n͖s,hJhZsэkBk$눖%rll7#GrTSt“^:5Y%&y 죸~2ϥ=2!9 @˚뽀7^;K#hɭET2w !pV֊b%!#l1/BI'4BK\q -ڷz/&T4&(A<[C"}.5 9wTaiyW',9n}8ЃPǗ_~O(`5vT QP%V6AE@Ŏmȕr;nQ(Gok[M )ލڃn]y.阐 EOd8~h_s)땶t:Y]=lS =SaY^=}6}oV50N .:mɋԷi,&bb%3or֐؜^h_;(㦡8j -=Z2ɢ(CT{ÑZ:MLϐQD~įY0xhBHAcP -Rc -`btʠkitP6#t͘m$Q37 o4szzX&X&ibsbn4?F&&gh2t/q&Fg2$\̱┿:f w:7{9 CZ m3>zPz}Ș޽m4zX_aj$U0TɩpB:Sq_?b!î±$QTCq#(n!$(uqk9 | T< -$N9t /&#E$s{/ e(%|#`e6+! -_fЋ^ s$lZ)7&y]ڔO$Qz=,Hdb7|=~t3g?숧B -MQžd>nTjWHBG$֡[\TKA0(wp$6ӐFoJqCv[-}iuTpS4iq4SPӗ?}Y"`NEXG{;XQmHGϢ2bfe 29N -5Ȧ-"xu\`4Z,08 -%2mgiTbbWч0a'>N -O#3UN&Xq^+ksf5E;{6}{_湛fkro*ޟ!s^LYwοJ8B0Zo&[BmbD<) K[ܸN; h_"`Y(|Min:Ә/hxiI FD_]S*iE`2*yN.Z_wԔ3c΍>IT7B< 0]CxYwJPCCwԚ 0~:{^|kq]A=%N9[yًE4aD"% @jdւ1a7Μ:DMA_qRKXO>{Bؒ&(BD=76?t¸o 5I5(]b5ZLGePE䫚Pȼ5o?na4^@Lg&ΩZD M';U'1F3o-L=)CI}Jj8Bi Fadi1/0dŠV<+]*hMSqt#[CL+d5駡,a ELVQr/2?2"pHfhZ,Z=15+Y PqhI+}840UoFM#ai w} ;8ozjZ\{qL`ӡHi 2<鶓ς,芬-Z'aP][GY'J3}ΝҒJ+9ovmۺ}'XcsDL7vV.fqN GF.٬!$6sJhh;!Pa-I2x=VG7WU=g -4TɊZΒ:Wsu^<}qȃGܪ6[1OϽcNzyvH h xHflƧug"j"qGY,ނ#y#dT8_"DLlwGMeXV}HNE40~+C%7bfeA z?-冃egKkx11VNiȜLvj%aKh? aEM "$ԅMV% -';~\GB,~~n~Дr*, dlb-l>nƅ㩧'q0#O`݁/.٘NdoxiRpº7gBE9[g^z6jjq ӐTJ4A` `J0aj2WIyb 9IaPpA/yKp9Dzs - C`V'jNWۛdƼj 3R P{5qsmdxCm?U^S@?Q9L.) - -jcLs`g3~ʁ/RG _RT|&cױﺞM\ 811aw0i Zef+15{ɾuбۖ_6uDq0cU- ~bߐd1ϮѶS2×38r"'Ā $ Zo`iSD_GvJl FlAl6EI=.IXBu} -!K /89P yd擳v7@j?;5{p%Rmbk\^])+|XpvaM@\ݻaPf&P45󿴒gFk'yfmi`F¡w~Ԭr%$yS9^M+wX1.;s^I  SNo]i(⣤K?uȚy Xs÷mWA3="YɠPgZbS+Y]rw#d?kUr$L)\*Y$EV6On'd :1XA|5أz@!| O/p:͡"YIa{aߥ ;Z=1y>/+.Qv@R!u^<Ċ]`7<3;kW3%WWp*\QW&!p'= ^R(U3d6{P!ʡ}#f\* -0J?om5Ȉ,ŭԶV3S'9=tlC7{a{jP[_] @PrA ُn]ƥ+g~D3q%$Xwwi%`lS{%UcTg߰K ר1B餉#R8J>nD,Nk\u\,hե76 -ʹWL,ȔO$w#Yݛ>wm?a~}s%~d[jə:-LM6Ƅi{A/kB/\$ d^UAa𑔫) eL9u@"t֎g0я4C6D$H/-'p`)pεv085+nNE6.M"ד4l݆*|e=dcۧ~j~3 {_\s632`Tmٞj e3%dw#:RE -dsP el;EH۔fղ6īh6F;?({mnM].ޛ!SW)6#lr!ېX _`igToʼ+Sf{G».a j.3ڻiDYY:'(!obqs4D~ Nla{"MtբN -2| c&A);Q:2-ѵ;b vj1J+y{&'8zyBgEs6bզ`n(Ԥ4ߗ -34 -DZ T?( -ܕDYTbOGO[XN)/KcjԲ5yBK5N((ZGZH"p .j->ܝ) h qURq @N+vC~tG;04W !Jʅ!XX:uWh@V:.\"Έ lMQg"r_jTu_>|,@V p|J^zi؁q4= dksu >ۺo -VC[Ez2$ЊN УN"bh_Od@(Px*6o"{/E$:26薜b8ĥֽ!?0cyck(fCagtk2>c7m~VBzx&?YΩ -/Q]}G HzKpPNlc%"ti3:8=,C wxe5$"@jKSwbAa`M\TXI)B,dèheNέD>4 BbG4RP\?ۧ1|<;ƳM2d4 }҅N_f)qLmUOl+ G~Z|/% w; ֣/3$f|+P5P)@v -фK8I[Y K)U>i_P#@7/gd}*98]~v)?Lwp̰wt'IZ'[Z%Ҏ#un4T *k+jU.bcl4kЦdq܂ozZ5;jhDqay =#aT˒MX%~,XbM`dR8^$mZ "_T{>"t34IG&p-gur}\Mfo] 5&j]Qv9C9ϕ }czq|?ߘ4@V$#u -b&D"aSg @g?.%T4*Jdi=)<n37-kQ6[KCX߫Wb -,)$8¼9`"ٔ|Ler,|eF D# +J/s!᳌Q+GWykuֳG8DmpCvu 9z@)7@mBPCsg6B - 匆 ̴E Pe8dsLs:n{J2Qe*R.@tS@Π0ZD 7N"*L*á{ -SNkA]$$w{>:yk,9g n"8L,l&h LWDBJB6Hp2ڏuJNMPxG!Z$u$V)DΠ<)|,&lԈxL}]^-#ME~005OhD4!`Qx|Gč nQUj@E5PQ,dy^dM-P) -jEӰ-56'Ig1|?(!N~!2} bk TFL=ɿgG_@ x8Zvd˘lGPX*?`tRG^ge)|Y-֨A_S_yyX*<2~~c (sE4s4qiholC7WQRn6*^6ћܛN;pHZz|rfEۏ)6x91jW'tIBd.N^ק2PICE(כ^⟷sɽ_ AgKa_/Z!ЋwUv:9_m~ޞÛsll$Gp P7UPY"?ijS?̓i'~+WJ!ܨ`,}:f(`I'*#m퇒 퍏&L1~Mcfikd}`"n`ml.uF4ȴ`3 TX.sgtyVTO/Wu`^j4|kV`(z!]J4ܕti2< a·C[RA9Ѣ,.9djX&lc8 lxzEˡsJ1rǦȕDpjM )P(AΞ*RȂM&_.=x (m;hi0q'p(B%D -X3a&Fl8z{ړoPHJƶ`L6 Sf8[=yO-"k+oWh%̡󿈈ҡ.p; 乘tN[im_ # -_>5CU =p -IyՈ[$aH>O} W 6FU|PC@/1(>3.ZCB(kH~\ǚʭ=wߋ,op?bWܭ`UbAߗי tJ+H+I;tFE3 X(}bW3O%p+KH0ɮ{Jk=Q$BbE>ދɢ5pY^4*%q62 PXTk-( e죳ހ$`-eu\# jص838 3 l3aUHX7f*W}Y|o،X+lo8v#:H(}ڣ!j4[ PM^a34"@.%Nk0Q:a5*OJCK9%ޱ'F1[6cG w> :R(@ݓ7;F%sm$8]?Aͦ&c -E @TF5E:Yht3wf:L9 -Qc.(R4t1 0o!!mcއKKG~!Jہ J"׽(6Zm)J9w5$;5b1Q?p3BxSk,pxJaߦ-鎁fHp4_&^VǭbYO|l*vp\Zn D3dfSP<_Kө hqLڢd|sɨ7nM+*vZC'Z1eiw=|g[f,EIabd3Z $l 0Vh|GlVف̛l{~Qnݻh_b~cPH^(*z34霋w;Tn [۳3TYG ߓ+P +Biօ0.tK |f`ɺ[ xc+ԣsﳤ Vǭ>poc401>>'Qpb/fFAXnW[LoNʓ,2m6-CM̓oǵ(#JfBswf[}3tq \VJB\:Y2)^nGҊ`WKT݃UC z( -l5@=T%3l`́R$z~UbF#;R$jtSAP b#J@$P\UsWlܰ饪A uh 89ƍ-)-arY[*xE$=Ǎ spqCB 9fa `Cty}[J&ŽuV;LAXpIˎ>Ư8b<y$Agh[O @L?|,V,$-S3/S2&dD'G qxf '؁Hی;yb$* x=gbWH/xo^)d̪}u1#[.xGk%T T~\VMM_B[fdY]ŏKu"R='Is JcKlȂ(e5s N-}dIeD\dG,\(`x.%)Hˊ=5;e?"s(-v~67(#h{o gX[R6.?¨ -!9px3] q+2B酕J~h\Ic O]|b[ j@aˇ¥`9 !#ЂZo (3A CH(T'I35H/B5ւđ6,}-o!fV**3= }(Aࠇ 7M%LcdR>7zM@gR$Ѵ8ΗFOHLIv n# ~[L$ 6WJWA4:E~: eLip3 m.2@:mA@%hD9ɦԅteW~O1): -8Q< d?P,B5@ip)T]aqvQmfKJb_Oa4|D+:s:^IWVSXTO#{2?zeR>Sd=ZʎvۘFN-qK&﹫|9=@f9sA/IJ@c"{h<4~nB(5*n9Zg4%==**,C*][up@'"b}+F_v RfОY,S/CRRb?$Բ6bafozZy]1j@ݫP²Q2S;ĪwV,I 2Mul<%IW RHĄlqpA{D $ e /eK쨍8}Kupsρ?PlX}j|2S!Q" $@Iv@tH^7dL21l M}~Ax*1DXoR@a=>K->N4K= _|QZ)I\TZ/E\l /ꐝzu>eVZVIC:IV1~/b\f^G xoxk-"RcRZ1][Ƌ|eG@t5b2]zwOlE-lRjCDeCFRtW7= -̖F|e2%0^ʒanb%jX*3Ʊ E%Y8)@$ vP1>̤QW0|0.?"_c!t+o'ƻW!Σ|t&6?RxIs˝-({tlQ"`6P@l\X\Ch 9Op$5xujGo\fiʳYT]c[=2`t*NBs>PZt<^:P be$AiØKٙ@`\6Z !p:4~];cu&t E5(.\i糦/m{h/{Aj⓻bkD08ۣk`XL -BNՙU\@1?Z!gV!OKȱH%$EÊ \o'ـ=-E3 -f|Հi墬"w 87sLfn)2H~}[Mm;+>fxOWtby^#|^8e-ӍZ=Zu ΁ - -~DaeQ)(frq$hLCMP|MH y[H{-ٶiO/q0H>*Bc{FPXQM3Dzꬿj:'/ *bϿS)#I"~d ph 0 :C\X@O0XXQxSR\g|]V)]`t+XNƓn -0*p)8PLxܣ@Kij;&~cC, vnGO7] -$_FRwV Cp{S]wx#t2V_>/puΞs=tݵVv}:v,F, P9.g܆ <Dz—KsR[7/j;U`EK(`zXU;v{yE`^ wx5\;6][;[(: h)R_IRv(-2H7"6PlI<'DqF"U!$2"S`:u7y{h\+v2%{[f7c pM^gK?TY}A Tjpiv O켮>|QP3A '1*d -6\8;^nl!1pYaaZ;ݙ5d{>)KN\dhY`(z, -%(p=HG{YQ5=>E%]tli䌾]+Ѓk#w.vJfRIX'"Az7Jaaъ1?f7>`>8e a%_h .PBWJ]Kʽllyo:Z@s`ߛ ^h٬qpt6(!֍ -E==:NqT㪭*Tfpe.9j""6Fd-kyaEL#-?.{ZL=3iww6)!QXZDtguBhg۽ z) %-!jAnrMBS yi|(Zz)_:[+U4)uBk_<%tDpNV_:Dl4tq7K-L?, ڎEP[8W-):Mpa5#8A vnctᨮ8OB.F=-Dfƪ@{I^6o񔝧JnJ[;7'JWu\ qsa;/lTDk\bTBEtwvgnMzы75gؕLBkhXb' MJiF-!?}]FQCK8|_GBX9E< xza@^ Un7Dg]aX>,{K+h~ j}tBǯ,,eac?u"I2BHi^ ]DiDp@(*xþF.Kkd@WG˛CE ϋl-⻓JG|^OdKu0λ :R[iXX~n -XjΝE?"dV5we%AXm3՝jx5U5IsM۩1Im6f b2BFO2yޙw|"*L@ iA}sX,U9*v!?7!balVг[4;yqDC;I%}keiӡekGa72ٽg 1 O4 )j˫i FNnniWC]20C1$? 7z!CE"NJmW)aigát{_(/^qИiUT:q^ʙ3G/d] dA_X3ssb*?*.*W?.C? $;fUgO]y"7|%_8ɬWdQ&dc~5,륱Pp bguY><31(D,M-$: V%FfS᷈MCr¢W -N۔d\€ .ZP¨)^CoS,]ctXN:@rugO y⟇ jzi Ϟ`W|C)<(ʢ>ON&FCb%-1lJzR.66DjkN^*w+eF·5 N(: -5{\qR`%>EZǘф|BېO1LnkXd-:fW얏xdx"׮J+wL1VNW4ylJ=H-,X1Fk3 z3tKs l nF%ZM屘n8 .)U=|/,(mXgԿ#O4+  -sI5^YJXM+w٢%Z -cr[̾ a`wg8P_գjƖED!'qhP _QλQ4e<ą5f}ۙE}\ S3+Z1%Gi6*+(^.`&^hA_FdaCw&pdg1I =w6C00Ցc[=+Zsa0,5 ۗ]ד=آ\-Λf]/HO(zD#DTN(RhbvLS^v"DiAt.>BΣFT|A' ,n.<3U+ZjOD0.pJ(d\vmZ:|lw7d]h[JjlEYH"}NIfѧPfdVE\QajkpmY ̩y,o|o*TɇVh}=8M!H&wN %VơVztcr̡ -MLcHh</ycLIgl`mZɭKL@, -O2A/$=Pڨ($0m2̀^wH0ﲲ}w0- ҫ`QSEdzC=pvS!Ӣi Ľ:NDO0̤43-}`x*t8jԹ١5^Q=㐎-sAFFG-^3tn_⿗+w+WE)m_+Tzw+s|ϛ}}+DݝmvVkӊ*}*s -A Z3þ+%gG5 ч8{ÊZ%WVKcDdZE{۬{XpPX3CdT5%zn"U QAUB%F-H{t/pgZ!n;jhQ< -kɪ,u+(/1C-$DG%#1Ct(QcWʭͪhFrYWdf]8!3סkbQzϨ9% J]e3boe(RyoQT~Mߧ{믿=,tN9%=m<ƲP~XGVwJ+UR}㟈 N9<Ǹ:0Y&kY ٜqKsry؄L2dVڬpwéþX^+fC҅Uܢq!rwVZ+Sk8K]1Іr,d*h-1᠀BؚoKۋ,沐" :y+)DMLB,lWBe1o]ubC$choTlL paZA(PpXh@ -@@ < B"P(  h`8@Xp(X`fD!{mΈ3CGg6swg!!@C'YuwQ*ҠMIRT41?@6V!"2;\C`2ШRO;ޘD6s̙:&KihX!ٹg5 l }y65/*-ބ&ʋvyz=IhƆ=\Cǚ}ݫZYaa]ZeC#^cTCCe&!)**4JE:SR>5VuUu[Xh!"Ye$l"@D #$Tgd(2>NEr1CQFRzX >Dh{ Lf7ޛ [9x\žz3wNmO$A>=.\[o*Bo$PRgށT- gD{:&`~l2z_YQFe~DNUJQ:Qû@k9WMsNа~ -XxZͺ@Hb -2=!K --ևś8@}@w:Yja =z||5bf9ܒI(򡉘y7.֒ԕeNq6; -auNtA87ЃAvtYo xiU em,qgWY16ȱRp\NcZe01Ww4A{-0Jh+eeW$PBM}oxtdqlRNٚ#nnӼ,}MJH]q/QAյWٍMΑp&@gܜ[̶e¥V> -%Zm1zpdN!A,lk SU2A͘kje$]ȝ5U:QG2w;-E?J2:ݛ8lXR4mҎ ܕd]ME(y3%*rawփflE|p5"oeO-c1K7OxC ךODMt-k`@%a7(XBqH~-Ő0H!ŠZPǼ Cdl$x+ތ2ig~㽊\e-p> XpR$C0e!G̗]~G%c{,`oKԏ#դn{>.PK΃M}U$D`om+Q %W&^-^t:f ݵ!EC;@OZPPRܢODv h9gL꺀[\.S"gE L#ljWD,P>d%HOMO UCS(X) -2\+(JE$ o`*Й L]W`P ]O*2)8?zSgʨǧba2y/hMhj/>F#r [eH5*tsYh8CY4yXGç0;tT HiWzXϵP*kBaqX]^>o r-)JRnC'1!C"fRrmfD/+j8h=in>]@T<d8CFiÈL%KbDffY\R񮅡;hN]m`1gT[_puM19ӡE Ő/It̻ -0`޵h^D:.yz ւrV5JSm0څPt2Y8%}ݿl#am%\-Q#xiwS*m;BR 6oG7~t˗;BeHB/zhS6dUD4,%A4~:RԃXZRrEURunD 7*>v%CFýqzgcV=^gr7nYFNMȎcr(Vrr:uO - )r""7*^8?OF l%PZr7M}4 -?d"oY/8y,ӬʴB:9:r! %J.,uEz om1*L0n/XnEbh(uďĖLPHkM:5o;ضqD^e>7TqR.`Y.T?J^>M=^,h4 a f`w[dd7:AlM5E,u+CA-+Om5;{S 1!4y:l3\`7]-v`C@lȃ޶t`U̚ |tmW&i;k:zl{,{m"ꡔRE'}+6\^!3xH>XG2Ϲum߃Id!ZZFXg|uJu^+q0}A; -d -,pIEXr&PE3uRX;F -J([o4bqT@0U^w[55q' Bă (j4:'OšDA\"מwF}sێ l3O$ -E6dP.%#!d9f*N~Ғ0UsL2v5ٝ-6C~Rn6F_"U"HO} oB3Yż,vh#-h|rAM 6"E}㒃)deeV r 1Mˀc|*%9!N6"|bk`U>8 HTg$#*C* -5y${/bJ9|Rٽ^|E0ӏ8BGO[\},BYHI&} z%9k- \wږ׬Uwr:aڶl|{@/!TLK&a(DSd3%`#avuL/ӜyNuWd}eJV*lRhf*m;1tPao%ܣ" 6eγV N-ʤ܊5Q -eeELkz=%pda=[ -jD+W$byUm -D1X"r3%iesUԘۑP0h%fMɏnW`PoXXFA  -endstream endobj 954 0 obj <>stream -d3an :ZՊԷ -29pJzQ  2Hw$'<.C _;εnjR3"%EnM0J ~)h?c7-"?/`Kxr*fkzކ쿛f˨,BF>2\#bo.Q H-n1bes,8 GxQPkH'a5Gk'30dywg\մ@E/ƥk -_zVI.i y9)aō$\L?$n],rb螮P9,c¢daqP@䟷9Oӯd޺*$΀f6Gb?تd}s/L6n(DV}U5 -KspH:L ^_(uj0PR/.PVvTvpNYlQ=:'p· VWxdw@2!uO~:O{ԄR,eYx1]œ# D&& jD FGqJUPaλe*&<%gEމl*û(u+5("$5Nn{<܀5XHwDM9.E9Tq{^ΕZsav5R( ؽ֜y)&9` h5+,דyuu@DFL,aþH^B4S_c3G:ÄIV0Ib D~JlC! -wN-(1 "wY#kVrmVS>I K! LeIGV_=Dj)O<0##̐FWEPJ3!WU{ྰpiuBK?^`Fh rI~l}.s~VJ*U5Z0Ժ }њ) jhMTqL@ⴍMpwa:bҫq֞5څ#El*y:spTh\aM[+ ?#H=Ѫ䄇t^,Ь=ğwDN,#fsGp35WHdtؔd)s Ra$VIgÆpD Zg *7)?nԎo #K"}XG7RjEnqJxLu%olqkx z (طs#!J%rwF2xvUf9<G <ۆ8 WWHg|| Tg=يO։Yݗ2u o۩ֿ݂֜cxv3w'Ui -#+QSC{Ц.P%H~Fۅ9>/ Qt -|Y2&.LqLu% -XF?cA,Jh|ď"eH0W1+:ĥxloE)+MKt?|l`#t=ÙdK4g:z' ݵH<._7H]T-$)x6ɯ; pbͅ:AqvTBzXva\lB(l'M?fg X%5֜TS"N6@FN4enڴPyh|V¤i\]e$|{+eKQnNxYBms7O0J`"x$S;3ʨtrqJt[t|I qz?tG=ֵൣԩ"p/q7$UZ",ke䏟֊ -J2+O5;Y'[-T+5p2:a9f%Fd'Ō萡[q3Ȱf3)Vjɏ[Qz~h v5!Okzi8L;ղ#;w"ʢLz]G#inm[ X?2 Ũ9oğ _W.9&b.H"Ylw'_Wuo}6P3GRra$=Yi:J*T$nwc֢xDqѪ'v HL 3=܊rIZgԎ?,ZE mD42 Of0#ڮ?i%~W#JmTQEbQTpOްnZ*_aR<3(en&[~Uj }Ҫb ,~GT0Ri/-7Pw` 61b̗h8|~ҷ -U>Ll,jqf4F߭rh[6DZ o OVfs[LYG{6t66O1˛Q4`=hZZ-Kj]154F[݅lhHY{d\rXfi+L&>.4zlկ惹}\8'l, -B*k#'BiU`ݦi`@lo9T(SH2!ƌWp+0oZ/hرt0K"~ _:R*K6T_SLAs",Q3虔'@޾ h8&K@$NJON{QˀEO4zQadW]izc?==+n`qUD9(9\J.#Nr3p -V+dž"Od>;-F+,yN\)tЋ\Ӌ_uB F>TlAZ3gw @~j# ֿKqb%b_9#% -*xa;w,C6/wdB<( -Νz0aĭŊq xW"U؀>\|ZqZ| -.Qӎf *^ 45}yV#l1"U!ѵpi|V.Mw.q٠ҍ -~x/SNxN[% XtW?y4tD3HS0O Y°2iݫr :-W E'I $.7{>KWO2Wk%m:J 0PQB}SCɪHM$˂aWѢBpX2!Uz -̘ES UG=.)owW39 -~^$1_!elJJX9oχTQ-e9ku"e|6 DQ]aJ=/fR -ی]FN~2[p/oi -endstream endobj 948 0 obj [/Indexed/DeviceRGB 255 955 0 R] endobj 955 0 obj <>stream +/XMLNode1xmlnode-nodetyp/2;attribute/Arrachildre(fnodenam(objectvalu; ,idAI_Alpha_idheight100%yyxxww12baseFrequenc.05numOctaves2stitchTilnoSresulturbturbulencfeT1operator(in2inSourceGraphicinfeComposit/Def ;44fractalNoisBevelShadow4-2x4stdDevibluGaussianB12(offsetdddfeO12specularExponen10Consta(urface5specOustyllighting-color:wh,12--5xz2zfePointLfeS12Da*In0&SUJ;@p8q A B  ABAŒHRҽ) k 4 X@쫙X~Ft eo~L-ԲD,b콘<2xXB\Qf$sG D8h_E]ʸ/x8&{Zm4ӳ6§}qnșFJÌЋ*wE)?ٌCC']L".>ʀ{ CQ!ȼ-Gf4sOuUFS|\y)KCYKy.nɞ.˟m) cWfvas)㼕b;7Weys/o4s ;fڎŒٯ4BYۅm7k( cu}Xk]~TY^֔󓥶fѼ]۾g٭yao,ٽ]߷m2 ?/Eo^5_;} yQ}f:o( m[/Neo=UB1h, gD +ZH@HE=0X`&&AD +H@ו,o( u9K斲0u{Հ4sIPPU10cN.dv.LeC[W/}| ;s7{ٝ3@s77w3-|,~^fU\\fUu Y}s{.}b{ny¶row/yoь- ua{/ln[nrsSU%K|{r|n׵)"Àk>X5^qwww{ff/RB@E)cSv꺜0Ե902+K|]k>H֔Ϭok,Y},5nW7=3]i2m׬0\tָ3k֣د, AsKZ9ʖlu5=η6Y+'{ME@EU$h !%, Y,aa5Ǣa*<a H8X!¤>ǁr>rZNkO; 8h_~uɶoz{^B0 3 +(P0ڼd\F ST aQ"RC'#!1@&" &FBphdھmw\>rUuǜtRY[/v.߹ʮ͹O]r^K~evϽ7[Se͝umM[ xX@XYLLRk:1+ D{?We7?M]gl{T:hF@p(BMJHD(X:8,*BP0 Aa0( @PP"9I/OiyjQNN'` )([ܿJ&h<9?4*%#KLhgP":٧BA#ۏkfejR;NjSx׎O>˴|pkq[&mxrbBnTh"el[^?f+qszDΩc2V^HYجzCNeT?>.5C`QXPE2iʸjd +#.ɔtܬdB0 h"bAMB% #^m?@,#N(I~2,: %N"[`B}U6XNGsmDVjϑFp VQvI) ƣI*qdW/XRlȡ9NqqUT 5 e>[z,E.-wGKk#9@g +i0Y+Id (◅ *OܡG)G +֠Tᄖ֟xDɮ3Ac;Qb*!|<OЬ_5PJU17%VjV0퍻>ŷS%xC1;Mrm,LŦtO].azB"X8αj RL$sYh4rJxfAB{v "JO ߳q*_>@Vc NPz@'S3+Kr+CtÂpby6L+, 5p{s׎ڛИ_zqWUDF6,a9n_\QW`K%N:?:j~r{xHLoҕ93N*VڠӜ }Ax\S#$ VUXQ\YD +hmm[ >\KRg<1G[V޵2y_u1FgqF/G[A/LGEci |rW_¬|T©>Nbϙwp!>0 8x_9(^Py!v, #V`UQ6&;X~#CLZ $L1#_@ iͶCA.ymRˏGܤ5;@oN,B39m9 "qeIaj^VighM +Z1`yTG+7JXv&" +01emLVR2S~ '?_R +PLH_CcUd5~;,LhZM7!eG]߆fPQhf/O*"hi?@Zx9C&ˮe0 Txb:SRol6H*&~|,rPwM eTIVyAp|?_d$&,v-^EZ}:sDrЅӬC/٠DłjKcוaNQ/}@ᙠ8Y;ȧD_FTuH(.eF|M6gmnf |!V$zH|`Ŧ ~=R1֋/-dW@a*?og4yG|ug&n" B<?*t h۹Q7ü@O`9H$DwI91Y4$ݐKH.C`f+AKt 2rXh R\j#; +b&EVe}H濰Z9LL1cEB@*_1Hn{jrGPF ݼ[5m@y]UxzP]1:jW# ժAAf@hAԟ;~>(Ft0{j/z6.Lfh;u^bȔ`6cyoJst_{5*iKH2 )Hd!__Y7Q<>)AΈ"àThoM3h\f(A=>e. #--7btpй;7!vP+VaL{3&ߜ*y=_5j笰p#'l ^4\%AR-$FPhҵ_fߍ6sסޢծݨ0χ(>F&]*n/ܝ~%lwEanG?;Й'4wz+uN +!^h/xa9Z?uo䲀+İ $ؚwc'e*FNȢ +.cP?R7{FM?)D[Əi "MLVaP ÉO㗍míp 8T>,y;Ӡ zY: hbZ +ya»;&3>N2 ɢF}j߂{ 0U G@N\?t43!l +Z5\QCs<:C\sQ?g]_>iO߫\"'o'Aw0{% p@cqEܡ(-BM5`DP_>u7ƍ)͈Zs+ qZ$eL +Nt r+DdXfꦑOyNTC`*vZBa|yG:,]=L#H!7%2V糭.(A ZA$8ߘh,#|Ң?ǐ 1z.SztW5X_V189?>t/ /sOvBC@P;{z:,,bH/x+'"(ρb8񢾩eC -Bd +܆ zэZn`jPyA772M6  -0~o]> f7U34z\MEdXLWu4EdA͈ J`<\4$hvL~!яe8IStQU 3EPwO_?ɜWFlD +*nɸ%Nܻ.9߮c"ǹMַ3GVהBn0`٪J!r}D&2Du( "FR% x>_0#'wڄ 8Ƣ;/X/cbmz#WlS&3J0x\oƸeJiE/v F +'&DpQBwqϔ3/ߥKMAĈFE.%&F,UBT=ByH- WwNO\7VSvTPKY?z Bk{gf˨ӿ^.#lT9+Sy$7\͝sIsS).N ) +(Raj|o#ˠ6c_]Ę$ = L[o6 y*¥4e'Fyx- +CSR~d8XgVucHw\DyD%>WXzӝZ6ъrJsvͺ@ J-mH'˦d.cj1&f 'P8y<,ӊj }~{$ [thAǖg ﳕ?Na G_Xq7wqh-v!3hWxQ3paFcb"S۵B:>* Eb<g` <so?_'`! ^5K7DbR})szq_vNch]Gڕ tS+,><56Bs;@s6T*A+QEw}#l "cdSPS}ϓAScOOɴ% 4 f<#vI!$VNWYAJ][`gpXU۠`$}\: yٕeusEݿ,ƣb0WDe'O*f|]X9`!x!Rs-rBLɨH(ljHg Y'|$niQ}#hݟ=v@5Ϻو cyMZdnPMYHaNQ|´3B Xa"2λp3tL +Fy6d>nxrw܈uQ}bubDݷ#oBi׶4.)@S'iJy=8-Z5.ȧ} PjRlI>3)hHֵMXcv&Z^)t-:Kw]fIYa k#=@l'C2N~qﶋK9!KYڋB)fL*cUn4 +pi?pb˳@8%#+K⥆x4]Dz>,)(`|JI~oO[AA P~2Plo;d +gWsf-}L4G7euD('dP'Wbޘa;%1jGT7=vL +Zp#o IAH@ޯ5j;ͺB0%6Ww \j~..Eq^_6bwwꪫ.?0|at{=?mMK"0}i +Ew$讑ŁWmwVjv9L+ٺ9sZO[VGaZ{pO7YZvMS%mMZ*OFO6F-~;E%:AU:N{<|q+WR8|iVfLsf;k$ދxa ux4ui(lk" N_d_'ؾNͦI8ncAB'ۢl qnor^I%mLFIVV7K;uFe͌VKi)}+J~΋?S^|LO|RǕV|gZo?ZweitzsVz_5<[WwOt:_YzҗN]dYp"iUV7һ"cMҀڄT06!N[T4o@\i;Xѹmc[ynԁ,s]Uo7>/yXaՍBST, +WК=b[+|4KkoO>: .67r]VFqM{h^"U,/Bu\Q ,NWL $H4+yC +iv6m&y!\L0XOd~W7X@: +_ i㬭y(ߜQ(}S8o0?F#|41bqA#;m;٣,y\C9!nUP5awlt4!.42N_;U阊> 2;ͧya}1Bh_~5:W|'kqQrx/srSR}Jg^8O_ ƍm[ۋ +)|Ss9N,WguVӇӟ(nB"/OW,z#龴F'zcuˌ/EQ:|8*?3"R>m>W,RJekec~_s?[SFxF4S菺KFMs^3L󌗾w#X8{{y i>rN~_w,?tF醙5zNm2 +4NC[fbḭG\mZ)'5c]@et}N7t;FR9}>k _Nkh6G%1t98MM\93eg:~G -?3ڊEceƇ8QI(4:\?Hit};Q^ձs5mu֩zίNh#Z[k0$$OS+{fjt{W^OevIpks 7bNN?6V~U?;|5?T>)C\+?MEy?oSވ'?_T6ei3Y'>ǯץˇߑz}vy,!> +/?2l͛3|b .ژKGf#×~g8~~:o%燺} +ߔSaχ.}yt|>1]>Sy‰w7V fZܗfҽPgOK^UWc,̕d\MXsܞMm*jU'%)Rr,ډahVuhB GF#5 E. Mۢ NF"^="ìa/x\pf]Y +ӯDy횰mmCuU&*JLk⴦E%E)c #MU-eզY(m.r6)IQ̻)rZguR`cUmJnQ{8MXUm7>vDv0RӮ6(MW%ؗ%elSF%ENò˦ȉ&}i6YqӴaVM#JMX Yն4 UtQ*iM9 4Q9-j.m"M]6Aܴɯiq4Nˢ n7MӢh9a1DqP<ٲHmS*rKEt($mt,<0 ,$36ZiuvHvXwy(X;B,/nC8 ̓lz0"0݅mH@,Q@&Rdm"/Kַ>Y1gU]N,n[`/47Y׍Y˺G퍽Q-{,}=L_e7bӏo_V0N0Cv{{os;$(ض_HYF~_SfA +'Ҙ$Dvmld`Vmk23:lSq@PAmDϰ6(BSem@oɺ2XL-ȰsYX`VgQ{C<.26ͳ:lB<.}YeH0 Ovlsn7L_fpוMQh4"!/c36':NȢ6 (k;yiֽyWYR:9y(C2 =ֻ֍:^ؼ9^I{EVV*3Jʯhҷ.iT\})6?/M⊪K槺'ж;lO*CJ;)WXSŸMa;mnowe%+M $5NQ8𩜪ʇ[m{N\MP;'B-uҫ +'mA)aeeR+l^tvMe5UKU9 +ﬕ(EL^5 DI(BCytllc,iVkH +:10Ee\i:2:a(%Kdqu4e[-/A{e/s$9|{1WNoIwMm9]ԮZC§^Awm-S;3|>Eӵ0;հʒ;CZ/YCK`p%.cp7]_&\1Nn,` =E7qx82Jg"әą A$@ "(64#چP ͓'.#Rt:p3ಊ C)yarPX"O`HHXSC; E +D&#%,0 .AB q .t%3x&:LăJ*^FUd> aCH@)x)Md0SPR)D&*IiH6-G@zKUd*l=F`i2c4,hP\T,(FI"T@Ld>823%bbb;!F2餼b$D%hH @p a35(ܖ +DUp&VBφSd.H\@D(X„aLd.4,.ФME3@HlRd$#ct1Ȑ `Ci*8bb"\O(cē'<&2$R\.Uc@C12 T,fTkԙxyA@%" ">L趁$&9@ThDD|Q'3F6EA$d/m !H|B%O.m + Г@sXQ!ґĄf.1IdO<">0wypIQP}f<`F%469Ml +3jR'2 M3 +NGv1  K!4t6a|6l˅'OF84 tg^@Jfh@@6ErH́P΁Jr gY QD!.$FpXx'PÖ86 2>!6]J&k\D`"x ͣcp\@PA#] +l(  i$"+ieFrJCō`Ҕ!QuHOe>(:<#[ i D& cxH xBTDÆ-(yX>6@t>N>@0iИP C'P]0. z0C`AATQ\Nb,L(yX.O0Hԃ9(g"3Ÿp2 : (':lĄP̀0`$Rp1dAd: $#. /@w @&%4ڤ,h +endstream endobj 972 0 obj <>stream +R$Dck*Ă +`#O\* ̓W8p*E0UdD(61d<fff*2 + 0HNdq/KXPq DT FH ^D# lhB4HF0olG3 R`w:ŕ r)$B,2G'fȮ(p!# /dGАrf0YL!,&@`p9-Lgs!4# C h rUOK5]N,|D@0GCH 0c( a0 +œ +# ubbޝ20?*8Z]*F#Cg8]8=cC88Š +C倡UUcpd%.-'ZPBrl!%qVv7Px C8>F=yeh+_U1K;+VcnJw<jk!w5]1A*|dgiR`EQD쯀38Ma *C֊,,Yy(heZ)䝤y`3 sD=DӾa&Q`tD\d>mͺ}jqR{`=GZ1:I'՜XCps35>( +31\ A9ռL.nRp e|HKCrқ^$@r(}1犳@S$ |% +ef"FsnA*VFԅ./v\E KΔ0;6/}-k'A+U0~+[*eqr# O!'\BB:~L9jFRu/DsAPt"1ryRü7T#^8ǃXNo"3, AƢAFhf-&'^ `vq(#"{lyB\$N[ȇ-,lvnVQ @^BL]̥ +(5PEIf5L`- d;?qVA0S<ȓ`a/ +pe8K /Zz13ҒV[yId79`wL}l98QH]Q +ǃ+ ~g]6PAWՅ~yba[# Jvv?|sթkk{]Xմ*"wg[,^29in++-dXEoŊXhL$R.e1Tz l@61IˢwFb&_uN0H!9?<˜b8dHh +΂OTԬ +=L*ԕ +)A))(G=kO{~ v,0s${<ʢ̥䥠sYZ.̗„e<+HA -L%SjN3r +z'y]zI랅a)UYi@-2Y{7B aqf?0DP sC$U^I\'ʈ@u<(bsn<ሧR-Cx6&Yr$r<P;Qj+ZkY,{#K6զX3⡍A~ /,>[jx"ODִ-޶5Q>]Z#m6'G\(N2hQ+@*̪{SxKڵ!c)N]u e,t #9I6;G +1{}38344,>\j)bsӁ ٍza,p7'.{̌f$qS]PS% VL2JMsPa,x#%`b.g֕Хh8`O~P v \ -?&>&$yΘP ޓt`YiP'PhhTkJ-ӶCV5D;Ac?<rGΈMrLps@s6/B8x{.r:?q +Q-M|y?6|gy:1BXyG1Kb *#R$m ++{[Gi[='*V`/iD Lє5⦺eܕsh\Ntg[<Θ}q+$$_vQZZ3Tj+Ί#Dt\lF&>95rpzC<)r/L4D^07zB +g67A ‡Snn.HO-Π"GCCB-*I]MI12; c]&kfFu66/6@Q1UlM3eeh+6 _@Âʤc)uF4ea"K;! +"T&4 +jigܹd-#AFL>g*ftR)E]~DX +롷L hT_mqr 5zM<B˭peߨ|]s]1Eݲrlg]{nؿo3W>~ǰiZKIׄ tRhwNhhIVS{?otY 8=ORjGp ! -%SoP9A](`rHBLr>U'h#?{_{\(7D5eYL҈qkj@ :Gt⻑y0Y TxWۻqM2J 聢&U%SaoHTERpělb^?(IDuqnhkF4$xwԩBcS( 5<*Tƴzi|l;O'teY[|++ypbHЊ W}dpUHH0.5Gl:S8B+oaCcF6Bo?l[kL W2_C4L;*wdK},(ŬʇM^dy*IRyX!-4isp)nq&-(m {d MxL;g7 jED#"K2Z/V6G~WKGr.t]FGp.f];qK/iQ%f"_סPyYO:h;|eBɝ69 32ZC0ܲ)%aHh FI޷p۷KK0O_+Q0 k:tm*)i N9:l>z.2)xd?̝WE[ gIe=%NJ?=ZuM#E5|01m/M3r&d\kM|xd%hj`[kpFIxJ%T5~8^Hc#Kp<1Bxӱ] Rђ {'^깱 B[Nl*7c[0< +xtېS"ZsFI[s4 w?S4׽3Е0Y + ++!/:( +gm#koKa߼l2&,\dxUрŕ.vb; lP5!JJTjwWBMj8._(0Q;I#?7([_0?fsP̱U^u'3yWoJ1R +?7 m3&UP9OHI1|a#{ֿx6ǬqcdR$aaP Dflk I]⨓LE" R=|^4v|Q1,"/>ޯo(Nh:h`1_IN2 R El_D7LG}efC Y3KI(SaA슍oB@ %$ֵ[ibC-TYU e_Rx*fj{刭I.?MI؋Ĉw3f  " .2~J[98h]04~xHf3Y YfF% bj,| W &#`B+lܝ|.,3/STP YO;شIylOP2Gy-,nEzd\F#pNudz{=Wа7=#1{g[i ɭAbmG^]o!j]:8c>d&ͤߝNwe{"Sėϓ/#Ɓ)l.A;^WSnSg9|.'Py^vhaMc)&r SXf!PMx8٣Ss7)a{HIƫlU\;D+TY; . *ViԠ)w}Xhf`Xy5TCYݏp-Q@jk0'AkQJKKͿ +R+u6׀r\wdYkд-,ReƦe"~/2r6MbIiJ\lck0xYy +F[w׍X:7פS/͵GFQݨ8O%IFyݐLLog7xhnT =Vf{xd*Pkmԏm0R͜љ^D"DΣ.2^k@JiSjx|tmAb;5C# H>ߔG'>Chkg6DsEXtËVD9t@"߭ØC3;:5PqwJ4}@;)vnޚoRxGs+C71n9:NB *BnjpPpEfi*0IDk^4o/s ݧbZe8EТ|J3LZb=! X +5Շ@(Gp/ V251Xkj7 +Fo,]pմy`*Ƞ\0l]p\RoS$c bL"q2!a-ѠFOrBC %~Wޗ;BpPDG +^zߟ-}k2?v=_hc Բ_m#DF]$my}]f^f4 DTWoLŒF6Q&Tƕ_cu'3x{)\:}^W!bRmҰc,}INhslUyIVA}ԷBjL/lcxn2-[bfl;3ٕD.ڣzIÑiS?Ypƻh8|:!111n}/Id `$3iVHs>˜3a떨vSEffK(9wjplGf/HW4̙J `PRvېa\) 3?>q~3 SB0gM29i9 B&y r =-REX?Ȧ1.xn1;ZEQ i*f>*S<,4S3YcX#gO .nڠs]AXYs'__ե?fŘdX{OSOW6ݴ(Sn,c QUb\Fm+E-K>, ;;ֺ~h[r{Qq{FE +6f*ULAk#ZK6O5_ӓfiwmTOS^+C6_N+eJhpL0Ș(YEobV)tj>Ggϲd=TE>,22c@ 3ds6R8sGa:ĶFPi@i̕{Zl6C%䓓i sķ]F%_h& GS7u2-RJ o>OFt O'A7#JlJ`r\"%>:ͅ.j M>24fE"vK&|C%x=xqXS8 Sn$*Ɨqiװ"ru> *3|+#T]zd_֗`$#Sah WKHqI}G>bCv`dْ}{g(q$MDg[$%3ݟ W|MӬ{{% z{UEwe#q;L]ĺ fhqmfPڏCXV5tXfD`j9(: +1 .6qra8[}  a!6pCDb%p {` M>q4 #xi:A˕4tGK3\:؝z"=HGY\})4Mo8h$cR E4Dh5h,CF*馧Ctwح~)i/Al$P6BpxFq{ %NdZNB WV GXjQٝD,{ adMfbPGFsj>ᾤ$Floe3YL@8+:.uD5Yo& +>Ve׹*+zZ);}y3TZtTI)IӒ{B#i/R QjwޗԢdRFZ&AimLr#}Ou]Oa9?!UQ1 LZvT%-OlV:+zHKnHDu (p\DEu0seF @%nǒC`j]Ojj pޖaVBYR&ZS˒Ђm"ј^)  !*jXѥ[ %jl{u,/1G +{8D˓(_Jxܱ`lPY"Z_~h!j"ՍN͸8)lBԛ]c Њj#ibiK qhc#{ZM!h!9S9ï30Ҟ89TS"m0Z$ +`+Krt2a]ge8x?Zձ8l>TZҤi#Cr|JuEv7 jR|q*Wbsg(QQqM _$hXvt*ZDMл6jec܄Cnk +5v=l*&`OV5~Ǥ=]_Q"%%U3xYUI⳼ ?Aפ Mda|sABF6 HM@؛N`#؜: Hf޳?ְz{,0O[S P'X* +)'`x˒UuImB>963ǵkkՕR850@}ffLru'cjr~NfřN2XU6䜢8*$1 5Ԣ#AgB$YKB~u'( $DXDOz:z/>d^&>xp{ : YZ<ٶf0iU5v2k9%jfmS[F%(bp'DcxDފ-Gy󍢺(c/`2t'\0 +.>-a1~:(eɊ*\94XC"S{ ˄-f<.0o Zє +̮̮;)8t[M)i+5k\_SZ%.?tF$T֬XujJcˆBzU`$l`v0a!=LK\=]1UfXf%'G_4 ZT{}ꥁDlO_6G\U QC yFe0gBELo4+XS)fԼږe"[خ>S#EB^?1>^R66_WkAێ{Z +/ZJ)/5@s[P͇ n ` + bC\{\Ẇ~jJ@HSA9NC*r5ۙcۡcc̰YtەD(TxIa//Rށl}&pxR{ A+GZtA +K*WnbוBz6 I2nuL43 Л6522 g/,wyhio8 S?W0hG_-z?wJȪP +Z=A:Qp͹ M+⭬cmM=OLb1 (Z!,`2 ч'9 [)W̵(+߉v[jƒ0M b$uJ= }#8]ɐٌ^ԝ.r!~T6 @? 9GJ(cf5,-Gq:Ͳ=#}'|~,r~skR)Ub­hy)G0I\=:u9p #RɈCS)QTC7`< *F |-j9-nG +˟!62i򩼾_QP!I{n[+Z]i}ƥ[]AzackOOEvw,,%^9ߠ󝫿!nj;l#Co я%9(>`)ϥh|-G qVB|-E3|H[`Z-tG Pb[eeĮADXգ ^p8(ql7-|@ +`o3-(i@{Dޭ'~8?|RlDߝaF˼4_)je<_̎<Φ/71 IXb}i`ǖS'~_U; ě.tn1# <(͖ HJW sy7 +  +0*Ixq'3G6 @$iƺG =@1dKqmRBzk GAXv2Wӌ 3fϭY),Kpa81z ՈMHW ,|'ӕ%oU~Rx-Xϸ +0h,cncoXX"t;(ۘMtX!dpg ?c3HhȪkMq:#҉Ta01jV0EK̡Qe&3vAԇr)ze.Ʋ^թvm~w7jώ^ok}<95O8n&`ON3Ztc<£*?e G#M|p`@]JtYr1GU7g!*U(|O-7lF!Btú7uN,42zܧ1 wHUfnN TP |Wy{Et"Zep_H9t7}[Z jK8ņ~[e^W +c0_KX/JSݭau +(:[='O +)'-g1=w݋blEhcv4kѝ9ޛx#:X`b_aMb6K,.+7&İ~`dNIU/!a4W V%xD +E| CB|)o}Q8ݏOTFIP%е-ΙWKAIq3#>*f Ws=j:;mciH]8wu خ&,+ +-PTGN ǗN}6J2bPQGCVnRߘ*Y}W2@uЛhAh+cڴ*c.w%wG:G%f0*DSec.&->aS[$0j8}sF ˪uCIPJ42S_^bю"sB?7' +Ž*,rr93q=ؚCc+GWgFʒׇo}j.!jb*^k,%}| }gQch4qtRϩͨX)gʸY7B}Yήd)fhO0v 1G.~e48iP֮}"N7 :l˜aȞ:þXkF~,%>bU +S2?1-m9b$f U!FN8̟Wͨ)Ce:.OZ/ńA~-'&.^pleݜ-K@E$)jd ӯ២;#5HEM, $2Krj+SYEJ~H=nmiVhULo~njh@*nJ8h݁7}qIG]Hwt"YfQh\>$pIMԛ)Ζ?zʽ - +L)UAW&N8; ,GދjaF=Ꭼe֏Wz".`yin%y OTe5KR0DvDD9Ss6$.y}T1,'3|%J̀ =Ie C|湢rj'~$w̓<ѝ+txjn1{kkSunLHk,1;^P!--t|Vg}#y/ +w3SΛ*o 2wwup֜#c6H;C ˔ۘH+ΔWAmC To\A5w͈В";6?@0AB|fyDSrf2\Ҍx_ .gdB!#XÌ{!Ў4/4Sj<eJM+$_R+SN/hT؋@|@1j}Nw/ ](d/H|ur.`'n,n2I ^0ȲD=Ϊt)i^[-J=/6S?Ș0sH|Apg$% @=#!eOVD͝/[̸I^֗ +xNoޜ.*>ϡ/1"H`Mt +[Uf7,ӹdE5O-%֞e$߬ 9)'A6EB]0^iSQp@W8QLK'R$R==B4VҨ0Dg st[ 4%!S2k0m#ˁ%8*[Ս& ַ.%b~1l1 {Clb @$s x #hgfZQN_toA^V-mg*>w Y |h90#R*QkIhZg ץ`mvʑK"܅f961Zi^[eX9Ң29~WZ+f5nXs*1ɡ!􊨗>)c\ݑ]NurʱeCpgE7C;̖A+纫uRKKY|NgDl'aovW|0li;*dN9p":+/a5D^1a(s>ڡ\ F!ƼIlZ7Dn4A'z|nVe#+eo)M_IB|ЭD΁ ezBHKb p#u7 7G3yfgapp4M1 z[Z: 5=dPQ$sGid0p +մ@YmS-LlEGPZ] 12K/\NB Y8\MSs*Z:I2&^Q`9HeC$Fʷu\H_X đ9Jx_ H!qpX|̑{j"nl ̧!0 {ږ넃fcL ~Ic],hY[ZQY# t

MBcvGi-?c<VrW!\,>dkd 0P0M}9BPإg{x dӰ>d{VR|V68p8d8M1xL"~^3g9 R\+ !NH3 lh }"ֲ?ԍt9SD z |1u9s>re7>2NZhXc} Tg{@D4Ѐ8қx>m:Ki^cb<ۼQQJ9{H)GR=NiBë'c4g9Wi7$=DcT2zߨ:k 9CrS5`ם/GYw&bG! +HX-0wmdQK9'"Sˤ4G0tkcVFNILaIweѤ0?* lN]1̑Rl/}hKEfq--Fh +4񐗩inspΤg)ɗ;>RFtET$K @=s +)5rւx +V&oKO7ѵw$KʈoKSv"Aa7B3UX!r\j^jF>ֆc͂ +*n֍DZgtSOAФKt0Dh)$qʀ:~cq *Ӫ  ښy&ZVTЊ$Ri]I 4( dL}+rv! Y +R+Df0ZB])7I BU%Aެ"pzz!JGct8HZm,Gɬc0Sސ" Q)G6j-RpK7 +SXR.a(ف"مJT`o5x ? $6G\iRI!v25S*b!i1:u"iYRhZbVXaꀿH,7t-O $eP\_(|b!|y|>S:h_ZL6M6 +tu`Fj4h]¶!g4a +" rD|k:eZ8Ò-xra*`ERDpUC`dű m?;4@z׭QK9!Lct2`#Q洅! "p_8BL R4: VO +-4L :Lcxı[Vr0?IP A%:^5 +F|>4V0>,4 y S&LY-!vM dȹ%Rjj(UC* +kDl*"odBmd"|>[jD(O8)2q섆BcS'ˠdG8Y$$HlQcPVK#]yKCVhcZIpPaXF3>heqr17i`D!B*|f)uPNCTA"[`(hTٚPP8.Z8:d"ca) taLȇ[kA.RUhB(+AYFBKZP 6DZV QC@jH4, y,䱐g!LY"H't:P{H%R8E ]V ժ0٪uU$ +'H&>coOà( %Qr[pP6EF&y?&yRpa5[#+), @hfmQQzHJ*a5H&ks0x(h uI isH ~- +1uB +2z;I=UM/TP\wؒNtՆ\k2,[H:6rq8Q/M^5E^5kkWM>Ft+Z ~2 $@2Pb YD +wBcH99WIYAEVV 9)a>7bdBar|e"F$# /p2n + }<X "Zx6DGl 9a/"Zg(&r!-%Ր3Ygh6.k6BlM @ j_ju/φުz0o.5ZL*DNb L: tj98Mz0eEbh#S]_cW!Hn"nǂТS0eq Y u $VJ%m?6 ԣCq,-HerF1Dbr"i0] į8B] H{5?j"j"7JķQ!E b͉aOc"d%Bb#d1b(D +Eؕ #fb,(%3$A><,$։18)^~a0%R'*dBa*0aBĈA*Mf!L?IY 5œڏEv:zs=x&& r$୭3: re*#-N 3jCr! qjbzPE2 K-V3S4etz,GcD :mn=A V> *.V% +B#5mV%K*kGo-q"$"~ +m =2IBB El *1G y,i4u?= PDU|\'mΥ&e͔P\[ +!?^nO +tuet}\q]2IRzlqEl + i aF!lI;6*BΜwѦ 2ם .q&2>q]̠ C#XDf +dc՟ K +BOB~)V_JgNI#%]@Ƽ%45b! A,ƕ4*D0R"A[k4Zi4ׅkp6CʕjC%ry+|ȇ; + 4LL'=t攢X&j|jxK(( NXN:N-1ddCYHqJhC&2'/ͪGZւZ uz'D:3U=h@AD/IvJKPؒSH xi)"Տp*qIuv6T㺏 '׭V t~\, ݡOM0 Ç!'VC0 Fz9Ɓl:,iB}R1\HӠb̲VD6a՞Cᒮ!FY̛$I)L3o̊9?nӚYd#A<H^ V#YC"pdEΕFiqENX@`Xdm5 X'":۔Ⱁha Gdp)=MQ[2"FrT +ƐT\Z$olAAm=Zu` 37"9=9ƄM\W}mD`h-؏jH̊ >T +V~\W3tZdm%+ :5([a( 2M|,GOGiWIWDoX\ Zzzyx%=i-|tIIYrYUWO $!+&f~2p_Wp|\u(p€?VR$ B8_d`$Ku"'vD; "R?б7I@98*6PԭǁAѠ8NO1XNY̲0T!!p'Mo[ [,2rUDP*L6TY +baXJ`ttyE + ɳM;XjYruXu/-T1/l_ב >ok1$ߨl#gKxur) vðHh9"d9'T9d8e"LMaÞq`(&ccD4V@VB? k`θʁv!: +81 )I)ԫ/B{,5|lu&zLY#\RX(\@!¼Sx鮝,`}*Ermt>5q>$N<i4@! +$Hɨ#zQ 0>~V LVYbBV>N?J#% qID K!Z4UkA[Z"T +y 8@cXVhbxXBVz aXH] +[60YeAcAQ>D%n!bՆ<$:0‘U#J Ab 0ם-*㺏x%{ExʤߦwDc ksNHi^꽗^꽋RK֣CI UK[aHnɏBq3H ;,Rj +<D@%ZUH杗w^ry]w_h&AE2f6k2}93םNkܷۗQҼlmlsݽ}ǥ|KRcs\͞Tl껽{w~߯ߥs)08w?{S3| 㬯i fi_.:k{fwo}Y5/}K}Oyq뒛s|Nfι__~u{~XK]vKS۳{._v2eJoKK\r]cqf75bj;Mޥ/>m^׏N˛ou/:<_9]k;c|KoouRK{3k\]\3׽zin.r?g;ݞ/7sYo^Ҽ8Qw̯s.[ts77`ǀ3&:U>ܹN5{syWяګc˻Xz޿{޽]^{_]/3Ɯ^{~\sw71ke&i{4s^b9Skrcu3]^{mv1Wg㞯y'w喼 @l]~MCU]a&\Q إ7qz s+o_}=眆r%L-";c}m L.`-tӸL, &٬N1f07// ʥl'Ԇ`%:c]w|n^6~]vo9׽~YsW/1o2U:ndձ +( lڪN8*P8@(. PC0 C1 +P ۩cՐE)4z}9B; JİYԑZ-2`$8ֿ~z.RLt,]cv/R4Z~ؑ-Y(R ~f]F ^/D(,Dȯ2ߎ52<g8[C ?1fv>XG<_j1\rq^b.wõh3t1~fipۻsXcTn-F DĊh9] qQݑt@FD|fi&YRCk[:vY(ubZZs35!2HPHw:bL9R|ǒsgDՠB8k`y`k^n k2Q:+}mJuZ?aϠ#O2J.Ws~aBub2ਊP)1$u#P +tc:g♵%#0*=ѣޘ]X/"~N9E.I=NPm>$Ԏͧ`%PQ:A9R$оh6|/b aۼ^LLgwbV(Bi]60!,0GfTj{]!1dfP3W}B!pT1 +Kݪ<ޏ[Izh1ƵcLU^@e*!i ٱ7JSԄe@rClEwZa%i6wobB[myt=C*梀˲e-Th(/(R#W\ap9QϕFJ]Cg* +:PE +1QpA1h\xjţOAf9~ܐRa@q/(E}|>kUd|gXkY;Qw"@h^p{qaI1x|2.8 %{b.GzB70d<ɰ54}q8Jϙ_~QERäZEj ީ|ʵ| +Lڶ1W|!hyP:Z@lWc!2b7JŊIA2 -7y&sVH!yQN`IL_Iʍ@gmSAl3l!H;iSQޚlxcPW( uSc;,மCICT ˲\ @"W૙渥vcpN199R&D 3v@ilA#4i#f.P<5"ؓ'V$vI#Q %Z_&`'#~ѐWtKnKStLPVXXt)S~%eoDHGPM)]V +OܷM0AzC"H.t]ј yTGa+S17P'-E` +;!x"Uj4LB0(glѸ/)/YjXӌJXffQ)?]*weChѽvqUNZAtl7u6K)Oqڞ̻_A}`PD?In d{"Z%GJ$  7akVx*Qf"oE7~Ofji*~ͯS옖m?t-R8%sHb:N +&9zm#E\'GZ?Y !1[*S +䈷N[?2ba Ngk%S>BB{9Tmwj )n;Q_d2!\r= 'Ȱ"AE<:rh'~VVRW-E/}wK@0ycߝY:ԚLMh@DzKú@G7XC "ِsכj<#/*Dw [ < wE_"ztQ׿c8+&h +=ݾmɾǒY.!p(?Ѱ:w$ -nZE˥l w̘BI=T-=tS3rމL+[Fnݪ KrGQIS˵UGʛ?5Uܔ}ċ)Qƍ~:L_~| !S#~}RTNbuSX"Zrjrih&"z")n=PaЈ^U2΄NV~-۔d',QW`d^&J,۹jts B2_=tfDml/9}NJ">H]Q.KWxtIVo> +Sh!4tW$AO`Q.9Wʰ*\`;/oba5?X̷*a=@v=\؉8}P|3Dso$L?[c +4Qࡴ6cf0=8th曥FҒʡwa[%+-+Z.u niVڎ6jE| op3A ˶2?KONydR6'>߅ͅ:-9kyPC<|QڬKxdڻFK^XtDcI+wl@N/2r p۶79DTN8ݨA06eVW8mPɳ8Lgj٩%k>ˆl$Z,xY$US%Ij{o-jon_nԲƆR{7-c ;w>V#U^r?z+Pon%~IPym$-Q'8a*Nv{[h tL>Ti!>UݳF$1q6O2 ҈G+ +4H*X)0° ) {/_@RJzR8{ad4Q$ {-.x"w]s^Iɇ5R3^MiSwt}f+g(*J'>֡;9#;RNAxyHɄa;'0׸G􉠲s9sQMѰ$ ԵnèJ#gq:n55cvq%NH̳eLึr=R xt{ ``ʁ +dϙaQ;[c\QU奫R]O|7ÿ0p S^ V*[űTnb7'Xk=!+0Q"'SCDb l6Q2gIR"$ͧ) IrSd݅JUt$M؍@V[@F Hb#+虜I#'7)R|Q. ('vKgUa+GNW!TnZEH^C>]T#v0,0U.@RJjuu[|#a@-ٓw:whCے)Sh4ƖxK+*nU_+%pɋZx5=j +j[XF(u; oh&^6(4uv +D(v?]@x+4}Ņd9϶30n럻(}PJ\>/ӿCE֜I%w-6:OPqi09]|BU8~YvL!tPuP SAwSs'g1a?w<ˬ4ǰ>>҅|/x/7KG,A7d0~ےWtM֚pD -(ll#mv;\S@m$x N|bQf޺-Pu'QhKhI[X-F.+< MG}pu^4)\k5y |f?Js(◿۞bkZbHJ1PaCfNn໺竛GwՙXdn9(ZK(#+XŠ䯲U xwLPD;k³L:d*2^DZ֌n90}%y +ܛ{?EUv6 ĠMbE7DQE%S:Mėsj( TEک{7(Y صbGNߵlllAHW@u:(>W"]YJcF|^9a`^<.ʬzje4dnf.uZw  DEٕƏ53鋃S ֞{Ll3A5BT_u9+c#]}ɝdj\4A:_w_2$ZoBlYuF-E\$OWF;_{[mrEP&1#zNӜ2LV/ 7'7kRy$YWYdt8in{QhyӨBKF \Dfw - o8˾Ԋ٧hdv LGB(1L$=K m0ؐt&wv8Cy`Hg(ćch%6w("I&CTE|73aІmطhF:ʗ϶^VA `q~#%RTԚ1Q}t?0:Q}G:j̉*9T#Gu88wf4hC)dD]0,PyeU+fGiXʶ>`>~D' *a`O5`䣤f't*W$00|o0m0?w:žMe1(F!dԸ?pAчe7R=5j}Zn}jO >FKM`΋B/|ʿP!W]@]^\ D;2Hj,]TjdLV+8CZ`& gk F֠1Ҭ<}TJyЅbw4c;u릫izuF]L^2HuW*'G@<¡AH$h +GPRS*de_C9|gF /R0~m1T1C8\~|Xr Ϲ,ّs +x乸mi^M(F_tVPjpPmUOz#aΉuN5mpF@l1Bf.6JO"V^Q114ۃ'ʹ2!K5YwD9B]}Ynn"}FXa5٨DɃ?L𨥂A!œvp&0*)Q>W)㫠*h Pudxp8nLo+8T Ih09OPGKf{}x 7)g¦ ʟu'$*)kԊEi/R +4NMEv\F>]#a4  +H$6 &1)rFd{>͹I_/ۖk 1'&k*Dk*Zgpze$#)Xݝ㲻FW:ظWM9ghDU I]1(}C@1=ACS| adMKF|DB·XgiWݷUXihxyeVC=(ΎLnR^.*ݾr}*wkW5ĀWF\&A%>Ib@*!V}^W`,`y%HԂܴ&LT;u +k꺐8Ռ͏=Zt-q$=`$qb]kjw&FQ)X4o\*BXX{)mK&GPC4N2"iGNB74e }f "8-3C$+U>ǪR0"IlTP6 HDl-[AW4x{3L'kηOI؎uJlHqmFT֥Ǘy@J'ng* +zxeГӰ%y #.C7g\"r8 6Jz/4V|[ԍGgb\+A8@J_h̀~VkX +R"?ӓ&^AW+')x(F6OR#¥#ώ\Bq[W: C}%\]_X67R~r +(wgrW׬eR.V,­z_0Q/Lю&y\<~!nO `RM]($J-g*aB}kCrl&;R*dl⎷{2F4n=[ːnV.;q"Γm ]L,̕wnДˤ +!& 3];FF|z +TNTjῩXE }"KIOͨBdd[#*) g7r^Bdi}Z-z}@yX5#>?e(Ԓ[x(g@ܵIQB˦YR=\h:Lj~wGAK1*oW}^.H_\V`!&m?Mr8&jmU6uÖn ޿$m,_Sy 5^d.csi/C}TYq\}9!HDt_:U)G%PHB PcH9?&% Pd$oM5t+:sE2H`9& bE3+Xl%ym,!eM\ W!8b jM `)_*TJ|c 4j# q::,+SV^nn + +)dGe:5q!WQnLhٛ \3'~ܜD"8bfd.:<M.oHGOlOMHԄ?M +Ln\2,cJU݌FW-19 ߜ ZEZu!WPKTɾ| +e4p+rgw,m&ж+A4>hW ua6D9&,w-#&}smnDneCrܖA#T?bEɕStϲ AS{\Wv̚+qw}'ށwFE6IVQp<` +>Kn&fv)(p+$C)>b#sS}U`FXVDcEX3Pcg[n'1:F7BRnt ~MhEr/H%*)2RecU)\)ri]?Y +Ň쿕U#p +Q5E͸86`ǻ%/Pܔ][}bB ]Y/y,` +W1 t]9P6AZ ^]vp`ưJ +4(3fM=@bT.&[<@ob= 6A Z&Oڰ:D; ew=Sw֟V0lP#2@Bd#KH{{| +sWu5[uקpR=}֣jz[Sh^l 4jvr.$j17oj<,ՇĽ1W^{VsӓVr Y"[f]%k^e`缐eͿת WT2Gy|2 ۽(72J4}@a&O{(SY//K0sfMazIcfIul^ {>bI|INs)No "{IʨpmBK5aД=c YZCeډȤ`)|l6$N!6(ns?P2Ɇ/ބ< 9YsxyQ.r]8JpQq,w֪|Lvf`2$$a IQDO?wC[299&}HIfAUD]bzKu  +c 7 }GRlhű(=`qLLVZl4%PYJCFsJ8r,gP3'ArO堡 Ԙ lb Cf.QwZ;Yt-&E49 ldF1G +Q⼩~u1)9(jX %;w]LjP︌IEPhs-&Ta2Hw?xz7H^Tw\]T \ E* +mwAzbD1RԮz~Yi f(e'Z; .9w2rT}(]fDiP3,dc/ o%Vlo$W"w-Z3Yg NAJm7<;z +F gfho#_/L(+JΝG/g{ `tTx;)`ӓBLHWiqȅknovˬ 0iq*r@ gA`n7­\}K@JJ=S5 +/+üqPo+TirL7LjOπ ݈B (PjoLХ߸ XDSEKj+GT `Hh鰖jXH6"_#rje.?8`L; C29%Cػ @.D[BV(Y8(TV;A]'5"ap^9v?(D +۩n+3%Y18M"_UR㺡/}A.؄; +r~^d$B;!Rf]dj %Kob};IBe63Yyt -.5 +ЕF<-p.b3oa/N!9 {"Cu_Kn\ +\*FNje"JKoy饾m[<]a:W..>uw+LsL½*_uՐAj*'m){IbkCQzh[Rub;_@ޜyT5-&|UAG> >w$jp&r]`X G#EV  C8`6XK'lpXȈ&v l>PD$kQl]}&U{d=\Jq>^66̫^+[]#Ǥa~G8sH6/\&p<  +BDzdL}x{+2t#E5/OQxǡ, :ކ lræ]wCHuy +ǔ uælCf5?Y|aϘS~Sv[,8uq[cOw7'Mj8ͨu~ː~*o5XU+āE DC:;7NBAObiMe(1q$upTɲl$EJwݬ?b&dnT`\_] /?qhZkX{/$0$ 7=ql9&2̆039w>N淢{q NPr ^T!O{ K.&TKIfЬZ_h^K!W(D +"8IVNmaZ;j+Xv카7l~fTgM0w\y]'iW|=swәXCQg.&׽*,1u~QCTDut\[O5!+03җ]?_u+Qg`&W+c =K ÒbD≺M-_$(>;5җAsy4L"%'}-¢icUjczߦIbBH(P+c{X^#g9)t!C VP +&tt?Qf&k|e + $Y7*MCK3a騬ν.X'GO4d'WiG_Gj(b aFUg,yw,G{*ؿaK5 \%VU*_3v+<-yX1,26h;=Cb EX z[I8YEBgZFӐ:M0Z=PB`cw뉨׾1Z$*u17-Z#YMQ*zf#xvCt3߈bPDNbo=zHDO̝.Ȅ.ORpUtJ?Oz0Ò + +]gMh園Hb^< +Z XAﯣhQq˔3{}toVM7+[xNN0S/6X:9#0M msof̯I)h$PP( +SyMNEt2?;VEym^*L}f?V'xYfn4|exWebhvSiszTª (`&0q @\38(V$s. e|tR̭6ZX<ޤ]g "0;۫9XLl-Fb6΂8o#W;;Tfd!Oj.Gps釆jjyKS/p,0!rəu駢 +D0< М )!r)8Lc9I0(w8HMA>5 bӂ\a րp@ʬ~t̤7moy( @T+23F,@p8, q7rjLDLO1Q+ +kEx:03!^v7LFE3CdCdfrxy>qH.@IIIId+[pHLuȒfɕCdVaمݪ4Pu ++2^}ɵ?DLMVn26F;=QnJnάǥjs+ʹ" ye!AHnbKn]Ć*]MSx[DDOiԴN@caT%54O }&uL.'yLIrE'9lJdY%i#Q`KR2oԏodʢ ]8eofϘ !lHܡCFL*m +O Fw$#tۧg-:-GP*DieYј6h8VU$]Hƕ$hT&q, E`4*Kn@ ;XIh@p"'J*9  C?9 ||6eArd2\CCu*zմ.gxrXHvATZHx_bKcޥjfr-%ϤV%Fn72C`A/f 2ћEIvHa@( Cl; Addr72A6Pj!PuCT5w4̭;Xwzu>l QCz`L +壄BPWd:dRb/|o0:SxD9Y;H+#Ӂuɑ9`alظs%=(˄hVPW%xBa"eTb MpiU)Uh+ mNӁڶMMĜ5Z +2(LS!0H^&SDD'"UCPj@ 8YUU!d"SRQM9r23Gpsȑ#Gr,g $qg8n/ŁC<KKDB?Ȝ9K9d9&EL;d"YfF}wd%Zv֪mkTܺ.vy  V(c]oC ,mNv$z6fwI $-VnMOU:) +`wS[Z0 b\x|_oG=C`+KH7}А\dQHlC}㗱lWfN+9g! Z8cV=LEo ޜU Cy?9}w  !_;:eݯʒ3[ sϑ:3) +N7ԇx!C3|SGJY_ N3#2ˣ,Q)9ē:3cSMNOTɓZ|{pS4DWUJUUEQLlReavEϥm>2=ﮎ>4bt%6c13S|s,,Df3Tӆ&$.3EDT//WHH&n¨PܯWWHHHeUSz}dD]kFF/2IBI媢 0/*3".O5'H٥Ѥ٢t*tUW`';t8ih%sD%kWKht<#F{{ۗc3}*m(2NM%fD;* ϗsW='3PSl=yY8y7d/@kcu7M'R/1 oޘA#Ѐכr:P1X&V̍ +dz:NBӞMh&f/%C*/NE-T4#@4$Gá0 ef2F866 9MR!!X'U#[JC^qXAmn{gB,0_7ޢE)o¶R +RIǶKM  =5"#'Ac=5B\Hr;֋3ZNTI<y\Hu(<k*Aݘ'Ƣ픈Jm\2kw0%E%ofLكz^h0{ᱣV5,NU֚ 'qMȔk)d?V$<Z!u10igE7McNG)%@Q6DBY?HEO&xd+o6^OXe_D:I~YIAZ:EқtM,EEѦ7߆pŜCLmkb +譃x0W8W6|nʿ|Et6=؆ |$:we$uL f&䮒bVzKX]B +mLtx7 )橑Tl6?_Nz'l[r(޴"" e"%,}L;`Ze^Amd=Þ2EXv"oͿr x?nr TU=&Q͑2_һE=h-&3IĔ̱+C^B.|̳\Gn4pvDZEi v"thƠp` /վS#3d CGTSMIm^eE_32/֗h|lS86to`v N.߱$0ȳb4 'q!"r*AܤΊ#:3vLx+L,v~*@|ª_2`i3`y@FdtK bQI1`-xm!T v;B?tMJazPS/#g$I0a39 ɣo(p9Nu)s%5^z*uc}O|TCi倈BPId[ +F7`sT+OԱ eV׳[HDʕ Q&\rL%N^vၺXpJi\t<8MES$ZcSn +S7eg| +"$E}zU e j+@͋3bN~X[p.vOJs>7Eg*״=LY(`LX8hG*cZ|$hY6BPgE(׎W#&r"X^&XV*DzR-BA:`&jolpoLԋO k}-J'L!Qa_qObއZȗsߌ~c^b1t~zF(8zc{~(몒rb,@'O$p셐l,B6&Lit_ArQE!zôi*sl[|+ȡMc7?֥?1wi;lD1Hp4}RB2yZx?9hx[,TG0WFuey-Nz9 +g;r[B" +r~?z15`F-^ؤݿ +,>溂n%=s#|}fΠ]^g׀0旾VWęXԠ.M). +ejL)%Q3 'B.Hx iXA>XgcnD܉>,(QiC AǀUiceJ4Z33}c]f}%|xͮ~*[p1ɴf[͛AJlo Og|u<ǎ]'hw uH0$wMsTȂdؚ;Qʙoy׬" Ԅf?Dchc!n1d v +n1wr"25H:MmPӋt0T뒜(M{mc5%DaܷwڴI)jl%K"hٍ,w)W|ͽu":ø#4*K|S:1B]_%ކpk,6150H;}hBoA6Z88 +}lG $AiM_!y1(f4*ˊ!G|L%&wrpo K$l=>A)h w oBf㷝 Ny#mqdV{8(?F& 'vOثlEM=j!*?hfd$M=^bƺi`k!=Li< R,$8tJwl Z`x q,Teź!`k +<>%=9Qs4la}CD%a_}IHket˔`ew6K)|+u-:m8(7yIX%ZSWC$akp&pBﵬI~O05o]ѿǀhDt*KO<HS3<@1䧩o :4ןjPar{~%&A@ Ni<ׂS̋%5;1u FM AdVYfC6E+)xŖx4ʞ Z V<*֪ C:25{pQ; . FV&fp '8c V-?V"P&e"Ċfvu`j}w~f+: #M+wі!#[}X +O % HS҅r4; A҈QßT暶2p(GM7]< ,PU,! \T-C$5'R=,ha vǑ⓵tr[!Spb+0Ť*:j ϻD)PfhkŘ)y]I@rDyJ1^ r<>k\Ol5b{%霅ߥp*:nHؔPA bE}G' ̢5sU@8J(WW8s]QO*)b[7cޕ2ҷ%u<VI{PJ}yZ乃;VֶסřW-ɛ7MXhW[m#V'T:{ar&0ڢR;n ekwݶ)fɁsmc9j~ٽ\ɑ2yg*pK,V5Xu٨疺d0T1XUAVAG #] ęo,<+y<^uޱ-N@3)=C)A?A'U$>/QJ`?iH^_HN +=K/}~eon Oy$143M jSh-yP h3S͑nK]bmŶKKJŘyCaaYERmN)6ȯ_pHBd(꼮e8N1igjXmװr8i#=J!Ĕ;Ա t/hM;<$9chזoUph䊁V2@< +O0uBɋB4ӥƒA&#gw[^z_bkTd)+m/$H1+aZ"~fcPno,4.^dQvmx.PP܂46x's.qķpz!( TERimQq EkskGjWuO ۋBtqTV|LYbpm}n+dr+!#*KD&}vB-gU=NehJ^<seZAx˭Xs~ʸDw-j0q¢̊ҨL@xv?KF'55 G#;JSVjDQDDnI,JYAfUh2_fd\ tƸ-͆?.+<o\esQ24tpGWt׵SA&s2i\LAظ>]o# QD\g^5qO 7V$&:sz9ِ&ײԨvMkPDJ<ތ8Au1<<:_^&MzzAG>j +vm~3uaZǛcPMqDo̎A^VD`L.aiQͮ[UPG7(ySME>7#?ӵ}/:g.n.ֺHD:3B[C ˸* űf0d b =[Qr 8< -=-ۢEolŁwv\x VBk[֒C4Jfnuwq"]V/֭_S>dW,@#Ń^}~zaԏfĤm# +i[vk ͦ 0@'59\l&(#JR:?^SM[C?w!rڵi<E6g .6&OS9o4ŒX%IJ^̈| *zxٱ@2h&b{}\X!OaDE R`&\ɞg-"kA'pS;hq7 vOggG ӄY(>٤[^"c%k6j8Yb( ckq!~,'o(F H<ҭe׎e 9tt/qR M%pgA> Aa h~H"^i=2)2gI5. gJܮU^oR}k:ɬ6ʢR_ʱ&zO7ys= |C[VG'- bax#*pjtsHi +;K[ץ,7Az*4"YSu^߫;1ZkYsP)B"cY +a8'*< 2<= T wdo)I2&~qiW-p~`k`?o}84ΡST9xyvibCu>i@%ԼҊ3c V,i8v$I%̭do!sFfA E` ~( پذˉ( +7:"dQAYXU%*Ph1p\L! r՝ 1ݭ hB6 r2IB![vWPE)[ pPu%-g;܂X&ulG΋Be  : |/XX-ZXqQ tSgJO&|)$]03##0,Soexg2p~qǼ3\O@ 5X)^rwEPx7GXg 'z{=1 \d)] b0zBf[H0F٘Ǭl(q'x"->=gMMi0(WC&LQ۪\ȘvD%H9j5ǑvɀiA'Dpmo pɱuwi'y{#l2%YYdAMzuk 0 E|@toKN~zYć BYMc |᫓#jI)7FUN@WAĐufU4S!Y/ &~ ]^E65 oݙLי`m[Jz?lS2p?0MGﺉTcw6JFDmu dnK2hSgukA'^cib;TRKKqH_TwGU lEFѶr_@4\DlhO6#^ljG{R.O7`b32c (!!?ggJX1Fb+X="@̛Gj)cnW# F$4SO:x蕫fԛxJ֘PӦr}%FiVC(hURT岎2A#u8Gn ݤr !o7@Y?Р3 o+$Lpyd.d(c:[C_i)bC;yvɀґw0#,o.U—ˣ(/4=/up%0zJYB}1Jcs*oQW8d0ce%SOGVY6!1:Nܣ"ŘL s!tS)rсJNm7F1P +GnvsfI 1;HN)JbBWJc!+U< So5l?;=nk=54J~jS{ 0<)ۚAKj[?he@}V \|5`{.{% Dz4ddqϿхJ<ԧKTГLp1S01>3e?4Ce|AXQ]Mi3ٲз{n&S?,u)}榎hsPm'r<*O"{0xtkdJ`dAV*x?#b3`ܛ\|EkOǪ`j4|V !7Q7IJJU2Xpcg9N9iJv7 X8%ɜCޓR +2@O8Ge@Sъ9a,(nFQ2?b]q?>[[{:"Z!U+3GTqrD#F$r=*pg1KkAx"Z҄4%FG g2*R95sMZ !,~}7R͍08Fp!T7%-HbUcIoΖR°vRM{BK味0V&׍R4"P_/|҇~zR\D5p#^̹ +"p y7pbj8XW4BrG/  }M'Nt2X*JT"b"ңf}v o^| Zm81јrO:e10(wZBZftfP?ՙVFIJF:+iYU(xluZ|d]dif}_e9hKUYbJtqpJ[\̉,Uo!Pfwle]RɠAQYXbY:/6 ';΂c h(v^HGzu$Dt!掠|+[{lIVX[A??zJ5>$ "y +b)YyOlqN3+59l4ښ+6\E]b6tm, <*QAsM2!ot0J-@Ƌʌ2؆:=|0@ +> ϖDn er7 MQ9 +oy-HjHCBd.} Tǫ-_(ˁ`nqqntdSk"uzKZΕx򅅭[)'s>.7If㷴'.iڱ ob.m ج?PV=]nIJ_ $lt%D- !oœ+jpt^xy˫d^k@~"oNץ`v/"kmjpNX*3p(HU{k_tߧBeN$m)B +̔cFDSwfz1t@/)"IDsZ7P8jJ&4_,wē3\(doX0-*8ʎ 7#tA/uY ܉Nz4,ˈ"y@LRO @Lo5Ϸ!0p!9Tn&oHF0(2awC,eIxL _a%~̅TA񔎏shM'Wc /GjX LV&2= ty);128I~B#^[U?Њ6/Bk9#`!j-w%WGd ;n$/wi*\vrv+ 1?a(Y>]x]x@JY}bwOQÞXNV:ػOAJ0`,h.ýL aŦ?׿o +C=v1]}kHw 3&p{c&d.kFVݺ RtnĔm8VGxиƼ4:XKHVB7VO yL̲)%@  +J +3u@%3ONf1*ŠG*UCFAA-5,k8KcUnen yYJ͎|9T +Ɇ>}˂GՑhc#XJBk 3K<ڮg t:E:`&IJne`;6 N@,{6$F< 9X0u9$vCmY7 ܕԗe'<}x7u9H+BM +(y*3g1-ݜҿ% +KV^du}%g_d1Qp9~ x#Hlv ignҏU -0%PWoƷ'\+T݃uAbt:[' 5~#)dzsrNYW3r-E(jmcc~lu/2 ܟ[QՄ' TBi33+~rN0 M2ce)z Ӝ8e\%igChC:d^` 4HGVd G]lN9i)M/c1V]=TYb26\x> +߂RaF(:VƤj$DǑPc+ŗ?7e1mwnQkRycA&v4ec,aM,ә\=h@3H<1盜,JoƘs>6,7RƋlXeac^;̿spVVWci#gkCR?-XXBF:asj2Tq)OXY:͞5ٷ=@u;>+"s)Z&\!YtL]Eo=&"NW6U]'5_\6HVxs;̨)4vQiW!X8">H;I6`"w! WI1IӝmB5g]b4N JW\䀕c !Q-ѨB*)tɷc@=jme^Hd:7IC٭X. Dl5:DˆlQ:ΪGh5jR#t^#( [he͞pu R˶/mfA2+J 9dn0[$|]\ޭ!1]:Y`{R"- 仇r³ ~#a7{5̢eZUOo]C+\wC(oO9zJwtOW'W}&s^q2(*:_f49n *ٍtp*1րCב =ò٦~G?߶t$"8g6@jQ=3ՕiEaWHjE/ZPΓdl_,ʢ + v5X@0oSqh HmL-{`SH3؊tC70:Aɇ,!l) BoLol.2 FSWwro,/U4hɡ.:(1zkiiGe]:c (iґCFrM +is9s dy.U j/ï+`jgaC}l1eeH=c;r05q=-xq~2Wz˭wpSp)2X2 +kJ86P7㖓WjM>$U&s. j^kJ_In4:=EEnDPC`*W>1sJоRqLBt`rbv5{¶Ux< +`#q+% TvD6KAN[Nm%CÓJ$â$2~,.`Vt){11XƼ^Ъ KaH]&nZ9jB/pU|a 6V )sQv(yq>Nyr7aM[b!bk&xaC,$tk @@,pLCh[2nFd$-[qMTA!o ͭg"p۹r on< + 3zwp]'\PRR `T[ROƀl6,WH>wET,^K+0(B!W[ 2NCp 8Hn?ցB4; fzButr^ɿ%G<\>z!@&&N JZ@1ƇJwytN\2<-&PbO([mD%(4P L O5OȅfQ?*QJ3{G]bAOm^U=K6v}[*1AJ`.5m۱rK0}~3!`௖"d +GwgS:h_|6_2Kv ++[$ K353V Ő;"+[EMۿ{P(>eef#k icْ" <+ӿaL#Nm`s;&]Ľ?7WPA/DJc. ," sN`21ܻr.2\括9Zcٹ1$] +IfV;3.-iZ!5FXQ l~5S\>XKc)vX`K ;GcEiq/$$Lq8"tr88_-nE3?8-n7buJJn.,* مmA目%܌3$:LC#$hN=l0(0:a5RzJKX5* np/ h51?wt([_%Lm ;ND6nJur#Y}Ubjg +4Rxnңu.+"'1Y_h' %-8 ǜZ0|Xr5e1ؑX).(&ܳA"kڳ%T43v:BnB PRej-DPNg V$Dy)$HR4xqd;pl<9{_>fZmPڸbdu$^Uy'85ޡm!eƴs +ln<הba9Mw#v㹴;$̋/,&Nزb [ژ/f<sǀpJdGhO$8Hg%t +!D'}sQ2]/,z׎3 +&cJv9Pfxwun訲kPDQ^'_8`h/SjVO.n9`dڏ=ijK +BpAi~,3C,=SAcp!5Z݀ά,* b$Y,$_c{Z~·nl^ re9Hh-@ \@kM0H>Vm+OV•Gw4Fd4rKc6Sllg$Ϗk5$a2 #S۵|hc#ai.⽫;(+ T~1 Ac'`b<#|'LYQ럎Wd]rAmMwiSp ss !K͈ +"3E}8VjbPȒ{]*dg[biWVDpN%![D5! +A%x+4]89 ; ¨y#ͳ| OFQ1'cԞ|$h%z3lN[nkk( : )9􂍇C.w&*{4HCJZʾp @ + >iY]FF ޑvȸ h震O @j;c앾|9} r&YjO +Ŀ%_\@N&$I +&HrZ|{]JuXu n۵t'2B_Ac/oqd:XXuVsh:aȌZͳߐY {v:pof#ta"?!l9Kñv|ѕ+@HLы%bTǀ0Ӫ=ϭ"ʥrE))w(zڠ-&^a΅vތ`\<'6'P'spR6]! |ZmP5&ZIY#iBgH,HY"Y (aC7CoXԪ*~Vt^џ-"Wg]5Kw8o0,m ҭ^lKl7~rKz[A዆b bo/:X +,t +#ӥ\s΄H ӀΉ)HB.+jBMvB&_~`r`YM]~P[TQivzjV-q9ZzGBۙpA'b;(9,57}V/LPuWU!;7 taD Ix4\E .&a͚ߙa/ɰϑWvi4 +Lֱ>FrEk{&;^Xg>J9q K \ z2.C[ra؉:B>}ήY ^̯D@Qlo|jM`@R}sFvh*{mPFR3 ΀o@{ +t݉rUUеXڨªdnuRm 痨yb@}T}RsA[wjT.A SlQuחI\6BN0*XTY((n1 +M7϶ۜw5R;pIvD<09 :E +AZX;!8k k +`"MySAVJ >\$ @%th8)8}U/bKRenut(JW\13apQP-]fyx^ rY=$6{aW|P[ V҅bWp¯`%y.ƲĠqyjj> P>O *9[+L:)ԗmV+u=/ [! +q ,!W od% E +ա?M)~F/}5$XN"c+ +NiiQ ! 樱LQj1Fp}Uo -/]O,L7 +: q5|s@$$W٦v*.KfMߴSYBu682 >:Nf:tXtuh,Ų4~y KYE{rIa9哖k{}+L"bbȽexE͒oM5K +97řE.([((iXƭt2z#0DҚ|+Bb)Č:Uۑԯczmd\T*p 2h,cO/>hg.~ ];ǂe$D4vLl<,i&M{ D?K9!9")v8 H\>0#P#MAe<^9O= 0!+=0a +P`~䐏s*͌GcHytKUJm2cZr+ΔT WR[aչI;'rNp3u6jMmѿȩ!$A{ +'\ګd^T{P6S=i8(C%_K |/payjBV4h7a+t7GETE +rc:̈́~9JɺXʨȒ+z-px[fi8*`6X#u)d?d& +@B}iIO4yּiЊsW2aPeW_4jmV|}B.i'D7 +]߾Ux`( FgK' sSa5lptMEnvw&> 4D'{L$0 9K5cek,Ó+C}$^ @AL@ۊ>>,pt i9Q9nci3U K.G .S3Bq/&%p  pB$#hFLzeSx!fP7i ;x8\%dJ}> +O=gS{R'3iɓ:3=wYpz8,wC|1a`cջqUc!02˷Ɠl]=롳Xm~DY+cc|)X߀y9=yrS-ϱ\ijħh+q1mpSo/0"!itƑ1nY(;OmiGXB{<0N\1CL70꫷:(L/$"uV)eڋwoiF1mX +|0]8cO!(J"G\Ϸ:]8b㛟=ަlΊBs-b<B](pFp.q;%efI=n\rEd< N=ACW5c Mo3Pk#Q\c|MAZE򳕴&>6v A"$1IԳzEr>:!b -LbkyU:h.E~JKCӟ&>AgACv,v.r! & ~3!Bt:({Ԫ]bC.Ӹu.pi'u +fA|)̳e_{ύb#son=i{eh'↺/a' xq>_8 +u7!m/;EQQְJ_+SKF׭x G==#MGPj\82ܞ+xCE׸!r0@(DH6yPtXg<_FOzء_7uƩ?j8' P-NVjP[_Uu<ѫw"35,'I*RrnSlܲq@JvskN6'Fo/Km{:LęsL=ȭ2Γ(8=~fT81_}܏\@GVpX yh4g)/j,JT@.eZhC@ST`q0c x4 해z132 9nt x}.;eCa +mR*P# O8R*%ʝ2E @TPJԖS,:%h0+BYPCdE55Z)NEH`PWR)U!&6i̤< &fZ2<]n8}==Yzvvo|Ϯ8>「ys #-^ZDX+Wrr7*_ܶ%'TB~W>e>{_G wwmc֦%}*sJJ *hͬn Fvݸ"}>#jv\Z*Dv_UlZ(˶fe² 3z.BB}G<: +ê= 5(\3n;jhQb&0zavB.Lx&h 3D݁ATTCbqh!l0 壚}r#3j˥̔Pbq8!3סk"Qg$6{}_1GR&uKbwx^JAJ,96q/oleG YK̑]ٍƪ +gL.[bzQ-#ޣ37acLx(;O]h?N>joxUA{zRT43 -;B!J5t@#~jv1l5ruU5ЈCx'#D45 d:@ H$ Pid6F>(4>Er1c̐0FX⎌s" +e.dNKYGtÜJ77Ͷ EЩgS\ +ȈEkhT [8+t΄YĬI2a h#[2a +곧Xv1Z ϦIx*\No&OO#a3vHp3=c7C ::P) z)EzVֈsϨ3V%P^ʴp`YH &v +eRv#\BT-0fz9; +`?Y|S*RA5wg;5T]~6 춙@P,^ͩ-"zao 9檓jUX)p[ IY 5ܓ0;dR1 +mHRqrc 2s蚿יL+jJկP)'kZE× ~Dp8JMiO$QBn%|DLIs}q& ` ȱ>*{B=ǛmCa_B<4J%>4@7Ȗ7{)rg6fh( fqNы$ }r $;R/]GpA\;}ѭMLq-ЦV4p q 44^zNx~xSh#} +xv̧JzʰBLLs1# +D"lF# ;EHV7lBAcm9h5`i<Ӯ;ߐBֹOS +Ys8c(dW$ť(*谗zȆ鮥^;Za|1n\;j{(!E;>KLf\v*L/D+@DwPߓCrNэļOKTQtjR +#ܗq+ #%uCrrq%cA)myeW0=8J&QɅB5{KfNxFZ@&1 &̝s^v4Jf2_cKShlO _Z2#Llq4A'Z>(U+c> ]nG44!Y!+RR4IH4%?jƂ@&ſa@&:Gj{U> KP\kjQ sʖp@h9{M'4XMG;h&*\skPnr#a = 3nG&'`N2}KYOYVV7[gN{Go%~aaߔ\Eyk[E^&XfTbOC'tժt)&f8jmKFEnV1XF^5'O0V 0c?qsl IOenl-چicz&-R&f*k=6Zh3y*3۟z^dH:rR>t>R4> .E < + γ'P;w˄*XP!I^wLͯ/sIqn3C> /tC}T՞:ҵVj)Cč'O" @r==EBHn6INww l0&Q/a?qkaPlAt,0~pe/ 9Y}s5QD(>\\ >^It2ZI.% OI>eàI(]9)}_ űoaa:g2g+x@~⧃:N1P7jx8M`uD@gvEozg 4MW׋0)FSԪ3k|**G[H-Y}aM%-T?woog.*@?lSHqu!%VNf@DzmkȤCrQtl#GRӟga5?axMݣwC +c +vFN(k.C׏lz :I9i&\(`">WkYv5$%̬|MǗRp{kM`DE8_aqؚ B&NS C fjƭ2I? '&jt°Bz?7/Ÿ) g>f*3䤿1X] +7D + P?teO䥷M>`K/ R`&)M}~X}t*%D1 /tlBzk&݉XB\ׄ9A(kf֖:c1V*xL{mkDM~>e"܇B`n\Xg_L(6!߂9|#lIvY2[;긶DJ>YW&jBu3YTYLp s>'f«:01AAn}3>m-,2d,1K%5l"?mA۫ -z1c +JfX>2XRSMeUA~lQD_ SEhJ +xc&U~B#nsqJD/ &tg^w]yP$vC{rdQݜ=9`%{X8YQ W'24R1^BE6(~ܴZIG< ,h'7I:"ZQUR^蛔 jQWےLyPe +endstream endobj 973 0 obj <>stream +6U~lJD2QzP4T^l*P@v3^6F]&\mpo 6hY2 B6m+՗ۑD0; pddGGPk#JxPЈM@gF>A k@Xh2* Aҧ-*GKYA S~ ̓AFpPQ`᎔8&dtgw̏bUr:ar@qj*"0REЭFrǝS*^M^nPץa@ 1w]tG6P9r3dkk/sبe t㷑hםK Q@V`JB?DUhŜr 1rJ @7ZH1EM9*bvsX@ݛYCQf]Ad2C`yj'*@ )xW˶ߏ8WQRɣM[r1͉pY }I^讶F1֗ +R9LC8p?3uQFOۃpl]`.ܩ[ln +R·4Rl~ny1.- ؖAC!~>>pǵeWh;=\<}S3qذyCH9o~-H՛:NS!vMK2NHTf3Rژ [u$FOKE?iLC^+k>'H&7{ +Д( G4h)uĞo}ȋ.}Bj*u}fұ%cᅈ!Xҙ%b՘T Y&#;Q|V$Sg'X}[|ZjI}Pkl_d01XA:u{ +)样L0 'GӲAeDː`@Dz& -W|`ccLIH;Tr(lTѕfI[ t[,P^mL,j8࣎!i-Rq1KY7T#Qa^?LcW ((X)V9]?eԿ;FMhep u q@oI,uYEITվv A"d;!q$Wv"x:AP}"-m9U2V5,,ƽCilm9$Y~mD57c\*٥ѩ=9Fg;I=t{YT22~nf+{ƠqB Yd8Cu TܕyA (րi Z bPVDX/,aUoԼ>&hh2}U[av_wW&5-~:-OQGw3I.htDv\)0 8?'sբc]Eh Rt9h& 1XEuq5U4lѽ.\I[ؓs OFȤQau`^"e=.u-wb,cO[ +-!S;$kAq {n갳)>}Z9,S\ 62'S>bhǜ<@* 4@;&%@6`D睵.ϵ>X9pti:*h,tz0fم[i̚>m]pk< t* \H*~7Xq93xT#ĖT&Kl~qcp6;wku𕏹'51Iq28ʌ!{= =PgZim 4Ϊ +ҡdNbGn„#F&A2QBa+skV맙mT*vD sB~ R* /h+LǭX>4ƄhẺ ץ9im\y6Soxr{`G6$L736lwç|8 +Uڰƒ*#oBKRR^꩷MM+#Eh orV߰=4 +]r`1=ĩXdN,+-p:4(r`JErbHPX} r`L9$(Ä%rCeIrg޲Qtj/8xtVg (C75z[l: pPj5ׅvkvش!2Bs٠^M#Cn=h!N9!NF5vku!!zH6yOh~Ld?פmZv{DF|Ѐo<-!p!:!.lj7DsL~Uо Qݞ8VYS!8yY]J\?I27YB;V߱PXe;pMd UݯSNM;Y*'&UuQXNy;YM;Ye m䪧X-6İ" )TU>4p5Ş7hm5Z]+Ou""qՓg(%#"'ruyߑ uF69\۠;wA__N?55;`{\_eCtp:fQy&QRDOPݽN*7KYgeg+r`IgT~^JíS$ooGЅ0FdZ8[\hY1jpƨVT ^L\Kdcap;/*Dý7ZfC[u5$#5Ws(^ҫj999rO wDBsk$x70 Xп_OvʠNl]L6m@A@s (Zw≸PtLex,&:F =ER1j*a 껁n8zku)=o8IiT%]]OVIn_fp$;{n|BɊ0<0+h咴qȘ#~JljrHw\cMo&h<3ὑ4!bVV+Y3ќ08BZ+%NhAhn{?"P +[MA;K"M"rfFWؠN]*U4nrC0\Jr%*?P6'eWi0B/(_Ȉlij^BS Id⟮1$\~|*.9ЮVp5d?8K W2/Cm\}i#:nx>UQLia_.c~.=6 ]#TL z{RV)&kkEr_B8D>+Q2O//~1E2y}.xK'V4&]BH7 eJ4C2b>stream 8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn @@ -1210,7 +1190,7 @@ E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> -endstream endobj 945 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream +endstream endobj 964 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Subtype/Form>>stream BT 0 0 0 rg /GS0 gs @@ -1237,18 +1217,33 @@ BT [(S)-3 (a)8 (v)10 (e A)6.1 (s c)5.9 (ommand)10.1 (.)]TJ ET -endstream endobj 942 0 obj <> endobj 957 0 obj <> endobj 958 0 obj <> endobj 959 0 obj <>stream -H|TiPYA2횩jAEgTNQaEWZninnFW4t@EF@DXV<׉ٙ,|L̟"22_}{8&2pcj߬ۯ PlTG}YHr8?C5FPϟ}: ~^ qQ}{CVFE UZ"WW{ 8i]l .rETR_UFh^AQ(uV{'!4rRT&6J+C*Z $CjBU(0yD}J)~!V" IH:D[eRXP0\Xa20l6`sı:Kb0(b밍,V3=x5`nrdp#DDQrq29JI,%{$~f.f1f}S4R\t:q<,tFpB oI$GiƏK=>#!&FzCj(c5A;d?ۓ>A& D/2QWĹWgVDc7Rh;j/A:q 鵐& `79rbJ/8/ԁ:_Y[/eJ,40,"ߜ#d'c&=]u5LdٽԋF^/T~ Zl ª|溤.qvk ZX(T(7{"Nz|7M<Ϥ4>dZ[ևe#`"\ MlF4IVnЛ>v,!CkZ!aٱ,u@^7h{` ܃hNR(P77sssP H;WA_ -J" +6+lE{ދƜ]Q9)ͳt=5u(vDNl3IzC x˯|COc5haB?LG,xr@9B>ѿ0S8"Cߺ!)bWn@l 3a6GuBɄlG#iWo)pbVmI9 gK*vۭ"59*9ٍ7A0Q}Ttŷ1b珛YUn7iK*by;r=􅣛mf0QpU>vo\P`B?!-Q|:~HJgh Az PmCJ]-S.e% ߔl՝e>Z%KІ kod&֯j"EJ׋ -?dLN=&0{<::ޭ,zbH9YwEst'MTWx@oi e_C}&+'$$aל[/^ݒOOQ[;y&xAzp}zˆB]}z GσmrsqTK;&*!i=o3FF b39epfdޯs*v~x6J)62;?~|si.ː7(cr;,kV%zE3y&_6GEssϔVqb8̍\F+rj07P.7K ̞ =~v>Hi6]|$XaR>~OKGk5|!vh1 ́+j/r~$v-ڰ# ]#(~.jBei̫BTJ Go?AtD^>=N8QB?Kz{0DXA-qX{3]_%^n*,64ܬ٫W2_;]J ,uhS#yWthLV}LSWMӽ[P,<վυe3( sMtk‡-S0m)) !8)9 ʹ:srcߛsw=ffm)ҲӬ,qxD$<ʈl;[׈-g+8?(x.n Ki-uL]pCcDԷG'".3F=ibP}vPu(fsF24{bqR~ q (SSeq{D|3uƜw,>cr QwF9>nol|r.#V[\_o`{KgGtEMe%e^хESNO|eB"Uuoh9Q<|P˼‿Ya -INb(I{y`.Lt~za{^2R _ǔZ܉CMՌ2 ̔Q'R*-7#]m04t 9jg6="k<.+= =Uci5 _J** ^? |/8>b -suz vb=ʔ[/QY37Nd亏 י~@;T7*Fv~j=o jG`zfB7F$AVl?@[_:;*OV8¿Lai`TUM3TH \ <sp=?GPF[X juRZƠtjINx5yZŭǴCDeŬ!Qv l[mDˠo%@!HH36ޕ>|%Kciņ;{wl/M܈S `X`͋uwC=:M88(Fkɪ"X.qw5w(K$[׬\_ Uki_0 -endstream endobj 956 0 obj <> endobj 33 0 obj <> endobj 115 0 obj [/View/Design] endobj 116 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 960 0 obj <> endobj xref -0 961 +endstream endobj 961 0 obj <> endobj 976 0 obj <> endobj 977 0 obj <> endobj 978 0 obj <>stream +H|TiTY +S)ZSUqiTVQq\Zq@"a% 5JpD (Ҁ(" "2Bv}  +ys}߽{q|/_5 +*M̷kTaQ +5_8hD>} +Culŗ0E=vl _+S3}|\czf̘1b= 1!*ynNS+h:U *J>kTZFo*yV +שUBH 5*\Q(U;Hy5pG,ypt5 + Z"Z9]@a iUZ~AkwǪJ Ål"M1' æ`8[.‚H,0'A_l9 +ۋeceX >ߊW6l hhhP<_D%בiGVImm]QE)i`'_'D|Ъ2̓cbxC"9I5>*&0 1VY# +USh6wXw;qchopP|1Wof<܈ndG/%3.ǯ8Ђ4<4 EB{#}ڳj&nGXQlG^u+?Kpo>炚DjĞ!/D% A-kz/ۚugI].5}EQ1h˯k^ +:Yuy RI +Cq0 5=rr~*Nn篴OxWS3}>>_R5/l`V_`q}ӥ5 LEZ6uZR{>tK&:8։$r C^FC^g!/ Ӏt~yz*%(zf.W;f6e( +ފ]>{0v7:7,<6Z &m?` `3 (; Sڅ#2/"} 4LN9X.A &e^>9Sw+-˻$_<40ߓY6 33*\6L֚$pTRR'o~-Hha/V7 s-)i]-kxT+-ܘǠ/<|'%J]([~5EJJ.qn!`ÇƖ=5PfKqL`d0#r^zO\(Z\XZ{pbQ($A+' ;nuK+αptx?xҺlȾ@f7qCcJC.>(H 0QZ8 (omgp4 RGq&1#Pl7m2E>e>>kǼ>kNZljÚNQky'xQ#͢6}ĵ .Urr=ܦ MCajˍdPym֊+"㝆6Ѩ$lF99#t9 8][XPiLZwEH܇3})or?vWm :e FeJj0x'^|O!74IT4L{v3T khPցKo^g>yr +#݁{#dwVOJ>f=ńl( ˗tK{JFj`8"™>s~&@K/-|!hNOkq`Qgܘ/]zz*lBK2v* = lP¦`AwtD:^<ؐf&7Ȩz]‹]0Z.G Ԑ'drj.f]ˡ08`Τ" ql!>~ *Pv }YoӑOpNH?Vyӑ:mBmIYaTD_R(_ZVҡMpt +t^>r +6g9V\<* ǡ+P/bd_x( rй^\-.Ckk"o7^glݾ%UGt4 fosaluS&aeT,A?, a[E:6EEt +qNJttB3l&ܷ\{f$&;slpl+"4+B?y%8 2"fD8}ptX2UEUS $B;,Cnh t'sO>.At79Hڡq~s1huM55'WWCZ*Wa1 +endstream endobj 975 0 obj <> endobj 33 0 obj <> endobj 115 0 obj [/View/Design] endobj 116 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 979 0 obj <> endobj xref +0 980 0000000004 65535 f 0000000016 00000 n 0000000147 00000 n -0000020540 00000 n +0000020649 00000 n 0000000006 00000 f -0000020724 00000 n +0000020833 00000 n 0000000007 00000 f 0000000008 00000 f 0000000009 00000 f @@ -1276,11 +1271,11 @@ endstream endobj 956 0 obj <<23876126750708489608107379E388E9>]>> +<]>> startxref -233108 +233315 %%EOF diff --git a/datafiles/data/themes/default/graphics/icon/s_noti_icon_tick.png b/datafiles/data/themes/default/graphics/icon/s_noti_icon_tick.png new file mode 100644 index 000000000..1ae0f4159 Binary files /dev/null and b/datafiles/data/themes/default/graphics/icon/s_noti_icon_tick.png differ diff --git a/objects/o_dialog_about/Create_0.gml b/objects/o_dialog_about/Create_0.gml index 25de3cd4e..56014f918 100644 --- a/objects/o_dialog_about/Create_0.gml +++ b/objects/o_dialog_about/Create_0.gml @@ -25,6 +25,7 @@ event_inherited(); var yy = _y; draw_clear_alpha(COLORS.dialog_about_bg, 0); + BLEND_ADD draw_set_font(f_p2); draw_set_color(COLORS._main_text_sub); draw_text(cx, yy, "Special Thanks"); @@ -48,6 +49,7 @@ event_inherited(); yy += ui(40); draw_text_ext(cx, yy, "Made with GameMaker Studio 2, Abode Illustrator, Aseprite", -1, sc_thank.w - ui(16)); yy += ui(32); + BLEND_NORMAL return yy - _h + ui(32); }) diff --git a/objects/o_dialog_gradient/Draw_64.gml b/objects/o_dialog_gradient/Draw_64.gml index c72c492ba..88e322e0a 100644 --- a/objects/o_dialog_gradient/Draw_64.gml +++ b/objects/o_dialog_gradient/Draw_64.gml @@ -83,8 +83,12 @@ if !ready exit; var by = dialog_y + ui(16); if(buttonInstant(THEME.button_hide, bx, by, ui(28), ui(28), mouse_ui, sFOCUS, sHOVER, "Key blending", THEME.grad_blend) == 2) { - if(grad_data != noone) - grad_data[| 0] = (grad_data[| 0] + 1) % 3; + var dia = dialogCall(o_dialog_menubox, bx + ui(32), by); + dia.setMenu([ + [ "RGB blend", function() { grad_data[| 0] = 0; } ], + [ "HSV blend", function() { grad_data[| 0] = 2; } ], + [ "Hard blend", function() { grad_data[| 0] = 1; } ], + ]); } bx -= ui(32); #endregion diff --git a/objects/o_dialog_notifications/Create_0.gml b/objects/o_dialog_notifications/Create_0.gml index c47f1f639..0f6dbb667 100644 --- a/objects/o_dialog_notifications/Create_0.gml +++ b/objects/o_dialog_notifications/Create_0.gml @@ -20,7 +20,7 @@ event_inherited(); var hh = 32; var yy = _y; - var txw = sp_noti.w - ui(48 + 48 + 20); + var txw = sp_noti.surface_w - ui(48 + 48 + 20); var amo = ds_list_size(STATUSES); draw_set_font(f_p3); diff --git a/objects/o_dialog_preference/Create_0.gml b/objects/o_dialog_preference/Create_0.gml index ef57f0917..ed64eaaf0 100644 --- a/objects/o_dialog_preference/Create_0.gml +++ b/objects/o_dialog_preference/Create_0.gml @@ -239,7 +239,7 @@ event_inherited(); draw_clear_alpha(COLORS.panel_bg_clear, 0); var hh = 0; var th = ui(28); - var x1 = dialog_w - ui(208); + var x1 = sp_colors.surface_w; var yy = _y + ui(8); var padd = ui(6); var ind = 0; @@ -315,7 +315,7 @@ event_inherited(); draw_clear_alpha(COLORS.panel_bg_clear, 0); var hh = 0; var th = TEXTBOX_HEIGHT; - var x1 = dialog_w - ui(200); + var x1 = sp_pref.surface_w; var yy = _y + ui(8); var padd = ui(6); var ind = 0; @@ -394,7 +394,7 @@ event_inherited(); var padd = ui(8); var hh = 0; var currGroup = -1; - var x1 = dialog_w - ui(192); + var x1 = sp_hotkey.surface_w; for(var j = 0; j < ds_list_size(HOTKEY_CONTEXT); j++) { var ll = HOTKEYS[? HOTKEY_CONTEXT[| j]]; diff --git a/objects/o_main/Other_2.gml b/objects/o_main/Other_2.gml index 082977992..a00476472 100644 --- a/objects/o_main/Other_2.gml +++ b/objects/o_main/Other_2.gml @@ -4,6 +4,8 @@ DIRECTORY = environment_get_variable("userprofile") + "\\AppData\\Local\\Pixels_Composer\\"; if(!directory_exists(DIRECTORY)) directory_create(DIRECTORY); + if(!directory_exists(DIRECTORY + "temp")) + directory_create(DIRECTORY + "temp"); log_clear(); log_newline(); diff --git a/options/windows/options_windows.yy b/options/windows/options_windows.yy index 3e24a615b..221d78c8f 100644 --- a/options/windows/options_windows.yy +++ b/options/windows/options_windows.yy @@ -2,9 +2,9 @@ "resourceType": "GMWindowsOptions", "resourceVersion": "1.1", "name": "Windows", - "option_windows_display_name": "Pixel Composer 1.0.1", - "option_windows_executable_name": "${project_name} 1.0.1.exe", - "option_windows_version": "1.0.1.0", + "option_windows_display_name": "Pixel Composer 1.0.3", + "option_windows_executable_name": "${project_name} 1.0.3.exe", + "option_windows_version": "1.0.3.0", "option_windows_company_info": "MakhamDev", "option_windows_product_info": "Pixel Composer", "option_windows_copyright_info": "", diff --git a/scripts/_3D/_3D.gml b/scripts/_3D/_3D.gml index 9064b93a3..842b1429d 100644 --- a/scripts/_3D/_3D.gml +++ b/scripts/_3D/_3D.gml @@ -87,21 +87,21 @@ vertex_add_pnt(VB, [_0, _1, _1], [0, -1, 0], [0, 1]); - vertex_add_pnt(VB, [_0, _1, _0], [1, 0, 0], [1, 0]); + vertex_add_pnt(VB, [_0, _1, _0], [1, 0, 0], [0, 1]); vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [0, 0]); vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [1, 1]); - + vertex_add_pnt(VB, [_0, _1, _1], [1, 0, 0], [1, 1]); vertex_add_pnt(VB, [_0, _0, _0], [1, 0, 0], [0, 0]); - vertex_add_pnt(VB, [_0, _0, _1], [1, 0, 0], [0, 1]); + vertex_add_pnt(VB, [_0, _0, _1], [1, 0, 0], [1, 0]); - vertex_add_pnt(VB, [_1, _1, _0], [-1, 0, 0], [1, 0]); + vertex_add_pnt(VB, [_1, _1, _0], [-1, 0, 0], [0, 1]); vertex_add_pnt(VB, [_1, _0, _0], [-1, 0, 0], [0, 0]); vertex_add_pnt(VB, [_1, _1, _1], [-1, 0, 0], [1, 1]); - + vertex_add_pnt(VB, [_1, _1, _1], [-1, 0, 0], [1, 1]); vertex_add_pnt(VB, [_1, _0, _0], [-1, 0, 0], [0, 0]); - vertex_add_pnt(VB, [_1, _0, _1], [-1, 0, 0], [0, 1]); + vertex_add_pnt(VB, [_1, _0, _1], [-1, 0, 0], [1, 0]); vertex_end(VB); vertex_freeze(VB); diff --git a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml index d151ba2fe..fa3eebd57 100644 --- a/scripts/_node_VFX_spawner/_node_VFX_spawner.gml +++ b/scripts/_node_VFX_spawner/_node_VFX_spawner.gml @@ -7,7 +7,7 @@ function Node_VFX_Spawner_Base(_x, _y, _group = -1) : Node(_x, _y, _group) const inputs[| 1] = nodeValue(1, "Spawn delay", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); inputs[| 2] = nodeValue(2, "Spawn amount", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 2); inputs[| 3] = nodeValue(3, "Spawn area", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, def_surf_size / 2, AREA_SHAPE.rectangle ]) - .setDisplay(VALUE_DISPLAY.area, function() { return inputs[| 1].getValue(); }); + .setDisplay(VALUE_DISPLAY.area); inputs[| 4] = nodeValue(4, "Spawn distribution", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) .setDisplay(VALUE_DISPLAY.enum_button, [ "Area", "Border" ]); diff --git a/scripts/append_function/append_function.gml b/scripts/append_function/append_function.gml index cb4d0f9c8..1774eedcf 100644 --- a/scripts/append_function/append_function.gml +++ b/scripts/append_function/append_function.gml @@ -59,6 +59,13 @@ function APPEND(_path) { printlog("Deserialize time: " + string(current_time - t)); t = current_time; + try { + for(var i = 0; i < ds_list_size(appended_list); i++) + appended_list[| i].applyDeserialize(); + } catch(e) { + log_warning("LOAD, apply deserialize", e.longMessage); + } + try { for(var i = 0; i < ds_list_size(appended_list); i++) appended_list[| i].preConnect(); @@ -122,5 +129,6 @@ function APPEND(_path) { function GetAppendID(old_id) { if(ds_map_exists(APPEND_MAP, old_id)) return APPEND_MAP[? old_id]; + print("Get append ID error: " + string(old_id)); return -1; } \ No newline at end of file diff --git a/scripts/array_functions/array_functions.gml b/scripts/array_functions/array_functions.gml index b56d3173c..14301afb1 100644 --- a/scripts/array_functions/array_functions.gml +++ b/scripts/array_functions/array_functions.gml @@ -1,3 +1,10 @@ +function array_safe_set(arr, index, value) { + if(index < 0) return; + if(index >= array_length(arr)) return; + + array_set(arr, index, value); +} + function array_safe_get(arr, index, def = 0) { if(index >= array_length(arr)) return def; return arr[index]; diff --git a/scripts/color_selector/color_selector.gml b/scripts/color_selector/color_selector.gml index 2a1ad0ab8..5e3097169 100644 --- a/scripts/color_selector/color_selector.gml +++ b/scripts/color_selector/color_selector.gml @@ -81,15 +81,17 @@ function colorSelector(onApply = noone) constructor { hue = round(color_get_hue(current_color)); sat = round(color_get_saturation(current_color)); val = round(color_get_value(current_color)); + onApply(current_color); } function setHSV() { - current_color = make_color_hsv(hue, sat, val); + current_color = make_color_hsv(hue, sat, val); onApply(current_color); } function setColor(color) { current_color = color; resetHSV(); + onApply(current_color); } function colorPicker() { diff --git a/scripts/globals/globals.gml b/scripts/globals/globals.gml index 802abae1f..a7231ac47 100644 --- a/scripts/globals/globals.gml +++ b/scripts/globals/globals.gml @@ -20,9 +20,9 @@ COLOR_KEYS = []; globalvar VERSION, SAVEFILE_VERSION, VERSION_STRING; - VERSION = 1010; + VERSION = 1030; SAVEFILE_VERSION = 1000; - VERSION_STRING = "1.0.1"; + VERSION_STRING = "1.0.3"; globalvar NODES, NODE_MAP, APPEND_MAP, HOTKEYS, HOTKEY_CONTEXT; diff --git a/scripts/load_function/load_function.gml b/scripts/load_function/load_function.gml index bd8d24740..28f750415 100644 --- a/scripts/load_function/load_function.gml +++ b/scripts/load_function/load_function.gml @@ -107,6 +107,13 @@ function LOAD_PATH(path, readonly = false) { log_warning("LOAD, deserialize", e.longMessage); } + try { + for(var i = 0; i < ds_list_size(create_list); i++) + create_list[| i].applyDeserialize(); + } catch(e) { + log_warning("LOAD, apply deserialize", e.longMessage); + } + try { for(var i = 0; i < ds_list_size(create_list); i++) create_list[| i].preConnect(); diff --git a/scripts/node_2d_light/node_2d_light.gml b/scripts/node_2d_light/node_2d_light.gml index 7212245aa..9c4497bbc 100644 --- a/scripts/node_2d_light/node_2d_light.gml +++ b/scripts/node_2d_light/node_2d_light.gml @@ -8,10 +8,11 @@ enum LIGHT_SHAPE_2D { function Node_2D_light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "2D light"; - uniform_colr = shader_get_uniform(sh_2d_light, "color"); - uniform_intn = shader_get_uniform(sh_2d_light, "intensity"); - uniform_band = shader_get_uniform(sh_2d_light, "band"); - uniform_attn = shader_get_uniform(sh_2d_light, "atten"); + shader = sh_2d_light; + uniform_colr = shader_get_uniform(shader, "color"); + uniform_intn = shader_get_uniform(shader, "intensity"); + uniform_band = shader_get_uniform(shader, "band"); + uniform_attn = shader_get_uniform(shader, "atten"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Light shape", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) @@ -127,8 +128,8 @@ function Node_2D_light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) con draw_clear_alpha(c_black, 1); } - gpu_set_blendmode(bm_add); - shader_set(sh_2d_light); + BLEND_ADD + shader_set(shader); gpu_set_colorwriteenable(1, 1, 1, 0); shader_set_uniform_f(uniform_intn, _inten); @@ -180,7 +181,7 @@ function Node_2D_light(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) con gpu_set_colorwriteenable(1, 1, 1, 1); shader_reset(); - gpu_set_blendmode(bm_normal); + BLEND_NORMAL surface_reset_target(); return _outSurf; diff --git a/scripts/node_3d_extrude/node_3d_extrude.gml b/scripts/node_3d_extrude/node_3d_extrude.gml index 698fea1b2..46cbb47c0 100644 --- a/scripts/node_3d_extrude/node_3d_extrude.gml +++ b/scripts/node_3d_extrude/node_3d_extrude.gml @@ -7,7 +7,7 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor uniLightInt = shader_get_uniform(sh_vertex_pnt_light, "u_LightIntensity"); uniLightNrm = shader_get_uniform(sh_vertex_pnt_light, "useNormal"); - inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone); + inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, noone).rejectArray(); inputs[| 1] = nodeValue(1, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2) .setDisplay(VALUE_DISPLAY.vector); @@ -25,8 +25,9 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor .setDisplay(VALUE_DISPLAY.vector); inputs[| 6] = nodeValue(6, "Manual generate", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) - .setDisplay(VALUE_DISPLAY.button, [ function() { + .setDisplay(VALUE_DISPLAY.button, [ function() { generateMesh(); + update(); }, "Generate"] ); inputs[| 7] = nodeValue(7, "Light direction", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) @@ -133,7 +134,7 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor vertex_add_pnt(VB, [i0, j0, dep], [0, 0, 1], [tx0, ty0]); vertex_add_pnt(VB, [i0, j1, dep], [0, 0, 1], [tx0, ty1]); - if((useH && dep > hei[i][j - 1]) || (j == 0 || ap[i][j - 1] == 0)) { + if((useH && dep * 2 > hei[i][j - 1]) || (j == 0 || ap[i][j - 1] == 0)) { vertex_add_pnt(VB, [i0, j0, dep], [0, -1, 0], [tx1, ty0]); vertex_add_pnt(VB, [i0, j0, -dep], [0, -1, 0], [tx0, ty0]); vertex_add_pnt(VB, [i1, j0, dep], [0, -1, 0], [tx1, ty1]); @@ -143,7 +144,7 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor vertex_add_pnt(VB, [i1, j0, dep], [0, -1, 0], [tx0, ty1]); } - if((useH && dep > hei[i][j + 1]) || (j == hh - 1 || ap[i][j + 1] == 0)) { + if((useH && dep * 2 > hei[i][j + 1]) || (j == hh - 1 || ap[i][j + 1] == 0)) { vertex_add_pnt(VB, [i0, j1, dep], [0, 1, 0], [tx1, ty0]); vertex_add_pnt(VB, [i0, j1, -dep], [0, 1, 0], [tx0, ty0]); vertex_add_pnt(VB, [i1, j1, dep], [0, 1, 0], [tx1, ty1]); @@ -153,7 +154,7 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor vertex_add_pnt(VB, [i1, j1, dep], [0, 1, 0], [tx0, ty1]); } - if((useH && dep > hei[i - 1][j]) || (i == 0 || ap[i - 1][j] == 0)) { + if((useH && dep * 2 > hei[i - 1][j]) || (i == 0 || ap[i - 1][j] == 0)) { vertex_add_pnt(VB, [i0, j0, dep], [1, 0, 0], [tx1, ty0]); vertex_add_pnt(VB, [i0, j0, -dep], [1, 0, 0], [tx0, ty0]); vertex_add_pnt(VB, [i0, j1, dep], [1, 0, 0], [tx1, ty1]); @@ -163,7 +164,7 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor vertex_add_pnt(VB, [i0, j1, dep], [1, 0, 0], [tx0, ty1]); } - if((useH && dep > hei[i + 1][j]) || (i == ww - 1 || ap[i + 1][j] == 0)) { + if((useH && dep * 2 > hei[i + 1][j]) || (i == ww - 1 || ap[i + 1][j] == 0)) { vertex_add_pnt(VB, [i1, j0, dep], [-1, 0, 0], [tx1, ty0]); vertex_add_pnt(VB, [i1, j0, -dep], [-1, 0, 0], [tx0, ty0]); vertex_add_pnt(VB, [i1, j1, dep], [-1, 0, 0], [tx1, ty1]); @@ -174,7 +175,6 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor } } vertex_end(VB); - update(); } drag_index = -1; @@ -301,6 +301,9 @@ function Node_3D_Extrude(_x, _y, _group = -1) : Node(_x, _y, _group) constructor if(!is_surface(_ins)) return _outSurf; + if(ANIMATOR.frame_progress) + generateMesh(); + var TM = matrix_build(_pos[0], _pos[1], 0, _rot[0], _rot[1], _rot[2], _dim[0] * _sca[0], _dim[1] * _sca[1], 1); var cam_proj = matrix_build_projection_ortho(_dim[0], _dim[1], 1, 100); camera_set_view_mat(cam, cam_proj); diff --git a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml index 65adea2bd..eaa519ff0 100644 --- a/scripts/node_3d_prim_cube/node_3d_prim_cube.gml +++ b/scripts/node_3d_prim_cube/node_3d_prim_cube.gml @@ -1,4 +1,4 @@ -function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { +function Node_3D_Cube(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "3D Cube"; uniVertex_lightFor = shader_get_uniform(sh_vertex_pnt_light, "u_LightForward"); @@ -78,10 +78,10 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { var cy = _y + _pos[1] * _s; draw_set_color(COLORS.axis[0]); - draw_line(cx - 64, cy, cx + 64, cy); + draw_line_width(cx - 64, cy, cx + 64, cy, drag_index == 0? 3 : 1); draw_set_color(COLORS.axis[1]); - draw_line(cx, cy - 64, cx, cy + 64); + draw_line_width(cx, cy - 64, cx, cy + 64, drag_index == 1? 3 : 1); draw_set_color(COLORS.axis[2]); draw_circle(cx, cy, 64, true); @@ -153,38 +153,36 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { inputs[| 2].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); } - static update = function() { - var _inSurf = inputs[| 0].getValue(); - var _dim = inputs[| 1].getValue(); - var _pos = inputs[| 2].getValue(); - var _rot = inputs[| 3].getValue(); - var _sca = inputs[| 4].getValue(); - var _lsc = inputs[| 12].getValue(); + static process_data = function(_outSurf, _data, _output_index) { + var _inSurf = _data[0]; + var _dim = _data[1]; + var _pos = _data[2]; + var _rot = _data[3]; + var _sca = _data[4]; + var _lsc = _data[12]; - var _ldir = inputs[| 13].getValue(); - var _lhgt = inputs[| 14].getValue(); - var _lint = inputs[| 15].getValue(); - var _lclr = inputs[| 16].getValue(); - var _aclr = inputs[| 17].getValue(); + var _ldir = _data[13]; + var _lhgt = _data[14]; + var _lint = _data[15]; + var _lclr = _data[16]; + var _aclr = _data[17]; - var _usetex = inputs[| 5].getValue(); + var _usetex = _data[5]; var _ww = _usetex? _dim[0] : surface_get_width(_inSurf); var _hh = _usetex? _dim[1] : surface_get_height(_inSurf); for(var i = 6; i <= 11; i++) inputs[| i].setVisible(_usetex); - inputs[| 0].setVisible(true, !_usetex); + inputs[| 0].setVisible(true, !_usetex); - var _outSurf = outputs[| 0].getValue(); - if(!is_surface(_outSurf)) { + if(!is_surface(_outSurf)) _outSurf = surface_create_valid(_dim[0], _dim[1]); - outputs[| 0].setValue(_outSurf); - } else + else surface_size_to(_outSurf, _dim[0], _dim[1]); TM = matrix_build(_pos[0], _pos[1], 0, _rot[0], _rot[1], _rot[2], _ww * _sca[0], _hh * _sca[1], 1); cam_proj = matrix_build_projection_ortho(_ww, _hh, 1, 100); camera_set_view_mat(cam, cam_proj); - camera_set_view_size(cam, _ww, _hh); + camera_set_view_size(cam, _dim[0], _dim[1]); var lightFor = [ -cos(degtorad(_ldir)), -_lhgt, -sin(degtorad(_ldir)) ]; @@ -205,7 +203,7 @@ function Node_3D_Cube(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { if(_usetex) { var face = []; - for(var i = 0; i < 6; i++) face[i] = inputs[| 6 + i].getValue(); + for(var i = 0; i < 6; i++) face[i] = _data[6 + i]; matrix_stack_push(matrix_build(0, 0, 0.5, 0, 0, 0, 1, 1, 1)); matrix_set(matrix_world, matrix_stack_top()); diff --git a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml index 0cd69c37a..38bde63a4 100644 --- a/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml +++ b/scripts/node_3d_prim_cylinder/node_3d_prim_cylinder.gml @@ -1,4 +1,4 @@ -function Node_3D_Cylinder(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { +function Node_3D_Cylinder(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "3D Cylinder"; uniVertex_lightFor = shader_get_uniform(sh_vertex_pnt_light, "u_LightForward"); @@ -201,9 +201,9 @@ function Node_3D_Cylinder(_x, _y, _group = -1) : Node(_x, _y, _group) constructo camera_set_view_mat(cam, cam_proj); #endregion - static update = function() { - var _sides = inputs[| 0].getValue(); - var _thick = inputs[| 1].getValue(); + static process_data = function(_outSurf, _data, _output_index) { + var _sides = _data[0]; + var _thick = _data[1]; if(_sides != sides || _thick != thick) { sides = _sides; @@ -211,26 +211,24 @@ function Node_3D_Cylinder(_x, _y, _group = -1) : Node(_x, _y, _group) constructo generate_vb(); } - var _dim = inputs[| 2].getValue(); - var _pos = inputs[| 3].getValue(); - var _rot = inputs[| 4].getValue(); - var _sca = inputs[| 5].getValue(); - var face_top = inputs[| 6].getValue(); - var face_bot = inputs[| 7].getValue(); - var face_sid = inputs[| 8].getValue(); - var _lsc = inputs[| 9].getValue(); + var _dim = _data[2]; + var _pos = _data[3]; + var _rot = _data[4]; + var _sca = _data[5]; + var face_top = _data[6]; + var face_bot = _data[7]; + var face_sid = _data[8]; + var _lsc = _data[9]; - var _ldir = inputs[| 10].getValue(); - var _lhgt = inputs[| 11].getValue(); - var _lint = inputs[| 12].getValue(); - var _lclr = inputs[| 13].getValue(); - var _aclr = inputs[| 14].getValue(); + var _ldir = _data[10]; + var _lhgt = _data[11]; + var _lint = _data[12]; + var _lclr = _data[13]; + var _aclr = _data[14]; - var _outSurf = outputs[| 0].getValue(); - if(!is_surface(_outSurf)) { + if(!is_surface(_outSurf)) _outSurf = surface_create_valid(_dim[0], _dim[1]); - outputs[| 0].setValue(_outSurf); - } else + else surface_size_to(_outSurf, _dim[0], _dim[1]); TM = matrix_build(_pos[0], _pos[1], 0, _rot[0], _rot[1], _rot[2], _dim[0] * _sca[0], _dim[1] * _sca[1], 1); diff --git a/scripts/node_VFX_renderer/node_VFX_renderer.gml b/scripts/node_VFX_renderer/node_VFX_renderer.gml index fc0b70dee..656edf05e 100644 --- a/scripts/node_VFX_renderer/node_VFX_renderer.gml +++ b/scripts/node_VFX_renderer/node_VFX_renderer.gml @@ -16,12 +16,13 @@ function Node_VFX_Renderer(_x, _y, _group = -1) : Node(_x, _y, _group) construct inputs[| index] = nodeValue( index, "Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.object, noone ) .setVisible(true, true); } - createNewInput(); + if(!LOADING && !APPENDING) createNewInput(); outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); static updateValueFrom = function(index) { if(index < input_index) return; + if(LOADING || APPENDING) return; var _l = ds_list_create(); for( var i = 0; i < ds_list_size(inputs); i++ ) { diff --git a/scripts/node_array/node_array.gml b/scripts/node_array/node_array.gml index b69d9946c..cecde941c 100644 --- a/scripts/node_array/node_array.gml +++ b/scripts/node_array/node_array.gml @@ -10,23 +10,23 @@ function Node_Array(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { inputs[| index] = nodeValue( index, "Input", self, JUNCTION_CONNECT.input, VALUE_TYPE.any, -1 ) .setVisible(true, true); } - createNewInput(); + if(!LOADING && !APPENDING) createNewInput(); outputs[| 0] = nodeValue(0, "Array", self, JUNCTION_CONNECT.output, VALUE_TYPE.any, []); static updateValueFrom = function(index) { + if(LOADING || APPENDING) return; + var _l = ds_list_create(); for( var i = 0; i < ds_list_size(inputs); i++ ) { - if(inputs[| i].value_from) { + if(inputs[| i].value_from) ds_list_add(_l, inputs[| i]); - } else { + else delete inputs[| i]; - } } - for( var i = 0; i < ds_list_size(_l); i++ ) { - _l[| i].index = i; - } + for( var i = 0; i < ds_list_size(_l); i++ ) + _l[| i].index = i; ds_list_destroy(inputs); inputs = _l; @@ -48,8 +48,7 @@ function Node_Array(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { static postDeserialize = function() { var _inputs = load_map[? "inputs"]; - for(var i = 0; i < ds_list_size(_inputs); i++) { + for(var i = 0; i < ds_list_size(_inputs); i++) createNewInput(); - } } } \ No newline at end of file diff --git a/scripts/node_bevel/node_bevel.gml b/scripts/node_bevel/node_bevel.gml index 1f7b10c61..59a6c2c97 100644 --- a/scripts/node_bevel/node_bevel.gml +++ b/scripts/node_bevel/node_bevel.gml @@ -1,10 +1,11 @@ function Node_Bevel(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Bevel"; - uniform_dim = shader_get_uniform(sh_bevel, "dimension"); - uniform_shf = shader_get_uniform(sh_bevel, "shift"); - uniform_sca = shader_get_uniform(sh_bevel, "scale"); - uniform_hei = shader_get_uniform(sh_bevel, "height"); + shader = sh_bevel; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_shf = shader_get_uniform(shader, "shift"); + uniform_sca = shader_get_uniform(shader, "scale"); + uniform_hei = shader_get_uniform(shader, "height"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Height", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 4); @@ -26,7 +27,7 @@ function Node_Bevel(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_bevel); + shader_set(shader); shader_set_uniform_f(uniform_hei, _hei); shader_set_uniform_f_array(uniform_shf, _shf); shader_set_uniform_f_array(uniform_sca, _sca); diff --git a/scripts/node_bloom/node_bloom.gml b/scripts/node_bloom/node_bloom.gml index 91e017bd7..dae4da275 100644 --- a/scripts/node_bloom/node_bloom.gml +++ b/scripts/node_bloom/node_bloom.gml @@ -1,8 +1,9 @@ function Node_Bloom(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Bloom"; - uniform_size = shader_get_uniform(sh_bloom_pass1, "size"); - uniform_tole = shader_get_uniform(sh_bloom_pass1, "tolerance"); + shader = sh_bloom_pass1; + uniform_size = shader_get_uniform(shader, "size"); + uniform_tole = shader_get_uniform(shader, "tolerance"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 3) diff --git a/scripts/node_blur_contrast/node_blur_contrast.gml b/scripts/node_blur_contrast/node_blur_contrast.gml index cc32a8674..8d64c120e 100644 --- a/scripts/node_blur_contrast/node_blur_contrast.gml +++ b/scripts/node_blur_contrast/node_blur_contrast.gml @@ -1,10 +1,11 @@ function Node_Blur_Contrast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Blur contrast"; - uniform_dim = shader_get_uniform(sh_blur_box_contrast, "dimension"); - uniform_siz = shader_get_uniform(sh_blur_box_contrast, "size"); - uniform_tes = shader_get_uniform(sh_blur_box_contrast, "treshold"); - uniform_dir = shader_get_uniform(sh_blur_box_contrast, "direction"); + shader = sh_blur_box_contrast; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_siz = shader_get_uniform(shader, "size"); + uniform_tes = shader_get_uniform(shader, "treshold"); + uniform_dir = shader_get_uniform(shader, "direction"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Size", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 3) @@ -31,7 +32,7 @@ function Node_Blur_Contrast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group surface_set_target(pass); draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_blur_box_contrast); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ ww, hh ]); shader_set_uniform_f(uniform_siz, _size); shader_set_uniform_f(uniform_tes, _tres); @@ -44,7 +45,7 @@ function Node_Blur_Contrast(_x, _y, _group = -1) : Node_Processor(_x, _y, _group surface_set_target(_outSurf); draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_blur_box_contrast); + shader_set(shader); shader_set_uniform_i(uniform_dir, 1); draw_surface_safe(pass, 0, 0); shader_reset(); diff --git a/scripts/node_blur_directional/node_blur_directional.gml b/scripts/node_blur_directional/node_blur_directional.gml index af7427f58..75b5fe05e 100644 --- a/scripts/node_blur_directional/node_blur_directional.gml +++ b/scripts/node_blur_directional/node_blur_directional.gml @@ -1,8 +1,9 @@ function Node_Blur_Directional(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Directional blur"; - uniform_str = shader_get_uniform(sh_blur_directional, "strength"); - uniform_dir = shader_get_uniform(sh_blur_directional, "direction"); + shader = sh_blur_directional; + uniform_str = shader_get_uniform(shader, "strength"); + uniform_dir = shader_get_uniform(shader, "direction"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2) @@ -33,7 +34,7 @@ function Node_Blur_Directional(_x, _y, _group = -1) : Node_Processor(_x, _y, _gr draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_blur_directional); + shader_set(shader); shader_set_uniform_f(uniform_str, _str); shader_set_uniform_f(uniform_dir, _dir + 90); draw_surface_safe(_data[0], 0, 0); diff --git a/scripts/node_blur_radial/node_blur_radial.gml b/scripts/node_blur_radial/node_blur_radial.gml index f980e2a84..557cc3bfe 100644 --- a/scripts/node_blur_radial/node_blur_radial.gml +++ b/scripts/node_blur_radial/node_blur_radial.gml @@ -1,8 +1,9 @@ function Node_Blur_Radial(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Blur_Radial"; - uniform_str = shader_get_uniform(sh_blur_radial, "strength"); - uniform_cen = shader_get_uniform(sh_blur_radial, "center"); + shader = sh_blur_radial; + uniform_str = shader_get_uniform(shader, "strength"); + uniform_cen = shader_get_uniform(shader, "center"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0.2); @@ -31,7 +32,7 @@ function Node_Blur_Radial(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_blur_radial); + shader_set(shader); shader_set_uniform_f(uniform_str, _str); shader_set_uniform_f_array(uniform_cen, _cen); draw_surface_safe(_data[0], 0, 0); diff --git a/scripts/node_bw/node_bw.gml b/scripts/node_bw/node_bw.gml index deab8eef8..c2778a13b 100644 --- a/scripts/node_bw/node_bw.gml +++ b/scripts/node_bw/node_bw.gml @@ -1,8 +1,9 @@ function Node_BW(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "BW"; - uniform_exp = shader_get_uniform(sh_bw, "brightness"); - uniform_con = shader_get_uniform(sh_bw, "contrast"); + shader = sh_bw; + uniform_exp = shader_get_uniform(shader, "brightness"); + uniform_con = shader_get_uniform(shader, "contrast"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Brightness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) @@ -20,7 +21,7 @@ function Node_BW(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) construct draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_bw); + shader_set(shader); shader_set_uniform_f(uniform_exp, _exp); shader_set_uniform_f(uniform_con, _con); draw_surface_safe(_data[0], 0, 0); diff --git a/scripts/node_collection/node_collection.gml b/scripts/node_collection/node_collection.gml index f87c55c30..3c8a155a8 100644 --- a/scripts/node_collection/node_collection.gml +++ b/scripts/node_collection/node_collection.gml @@ -77,7 +77,7 @@ function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor static stepBegin = function() { use_cache = false; auto_update = true; - cache_result[ANIMATOR.current_frame] = true; + array_safe_set(cache_result, ANIMATOR.current_frame, true); for(var i = 0; i < ds_list_size(nodes); i++) { var n = nodes[| i]; @@ -86,7 +86,8 @@ function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor if(!n.use_cache) continue; use_cache = true; - cache_result[ANIMATOR.current_frame] &= n.cache_result[ANIMATOR.current_frame]; + if(!array_safe_get(n.cache_result, ANIMATOR.current_frame)) + array_safe_set(cache_result, ANIMATOR.current_frame, false); } var out_surf = false; @@ -108,12 +109,6 @@ function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor doStepBegin(); } - static doUpdate = function() { - //for(var i = 0; i < ds_list_size(nodes); i++) { - // nodes[| i].doUpdate(); - //} - } - static step = function() { render_time = 0; for(var i = 0; i < ds_list_size(nodes); i++) { @@ -202,4 +197,8 @@ function Node_Collection(_x, _y, _group = -1) : Node(_x, _y, _group) constructor nodes[| i].resetAllRenderStatus(); } } + + static postDeserialize = function() { + sortIO(); + } } \ No newline at end of file diff --git a/scripts/node_color_adjustment/node_color_adjustment.gml b/scripts/node_color_adjustment/node_color_adjustment.gml index d3f67333c..2c64d3415 100644 --- a/scripts/node_color_adjustment/node_color_adjustment.gml +++ b/scripts/node_color_adjustment/node_color_adjustment.gml @@ -1,19 +1,20 @@ function Node_Color_adjust(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Color adjust"; - uniform_bri = shader_get_uniform(sh_color_adjust, "brightness"); - uniform_exp = shader_get_uniform(sh_color_adjust, "exposure"); - uniform_con = shader_get_uniform(sh_color_adjust, "contrast"); - uniform_hue = shader_get_uniform(sh_color_adjust, "hue"); - uniform_sat = shader_get_uniform(sh_color_adjust, "sat"); - uniform_val = shader_get_uniform(sh_color_adjust, "val"); - uniform_alp = shader_get_uniform(sh_color_adjust, "alpha"); + shader = sh_color_adjust; + uniform_bri = shader_get_uniform(shader, "brightness"); + uniform_exp = shader_get_uniform(shader, "exposure"); + uniform_con = shader_get_uniform(shader, "contrast"); + uniform_hue = shader_get_uniform(shader, "hue"); + uniform_sat = shader_get_uniform(shader, "sat"); + uniform_val = shader_get_uniform(shader, "val"); + uniform_alp = shader_get_uniform(shader, "alpha"); - uniform_bl = shader_get_uniform(sh_color_adjust, "blend"); - uniform_bla = shader_get_uniform(sh_color_adjust, "blendAlpha"); + uniform_bl = shader_get_uniform(shader, "blend"); + uniform_bla = shader_get_uniform(shader, "blendAlpha"); - uniform_mask_use = shader_get_uniform(sh_color_adjust, "use_mask"); - uniform_mask = shader_get_sampler_index(sh_color_adjust, "mask"); + uniform_mask_use = shader_get_uniform(shader, "use_mask"); + uniform_mask = shader_get_sampler_index(shader, "mask"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -70,7 +71,7 @@ function Node_Color_adjust(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_color_adjust); + shader_set(shader); shader_set_uniform_i(uniform_mask_use, _m != DEF_SURFACE); texture_set_stage(uniform_mask, surface_get_texture(_m)); diff --git a/scripts/node_color_data/node_color_data.gml b/scripts/node_color_data/node_color_data.gml index e4dee1c7d..ff2a0ad5d 100644 --- a/scripts/node_color_data/node_color_data.gml +++ b/scripts/node_color_data/node_color_data.gml @@ -21,18 +21,18 @@ function Node_Color_Data(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _gr var c = _data[0]; switch(index) { - case 0 : return color_get_red(c); - case 1 : return color_get_green(c); - case 2 : return color_get_blue(c); + case 0 : return color_get_red(c) / 255; + case 1 : return color_get_green(c) / 255; + case 2 : return color_get_blue(c) / 255; - case 3 : return color_get_hue(c); - case 4 : return color_get_saturation(c); - case 5 : return color_get_value(c); + case 3 : return color_get_hue(c) / 255; + case 4 : return color_get_saturation(c) / 255; + case 5 : return color_get_value(c) / 255; case 6 : - var r = color_get_red(c); - var g = color_get_green(c); - var b = color_get_blue(c); + var r = color_get_red(c) / 255; + var g = color_get_green(c) / 255; + var b = color_get_blue(c) / 255; return 0.299 * r + 0.587 * g + 0.224 * b; } } diff --git a/scripts/node_color_remove/node_color_remove.gml b/scripts/node_color_remove/node_color_remove.gml index ed36f3ae9..74ac5e74d 100644 --- a/scripts/node_color_remove/node_color_remove.gml +++ b/scripts/node_color_remove/node_color_remove.gml @@ -1,10 +1,11 @@ function Node_Color_Remove(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Color Remove"; - uniform_from = shader_get_uniform(sh_color_remove, "colorFrom"); - uniform_from_count = shader_get_uniform(sh_color_remove, "colorFrom_amo"); + shader = sh_color_remove; + uniform_from = shader_get_uniform(shader, "colorFrom"); + uniform_from_count = shader_get_uniform(shader, "colorFrom_amo"); - uniform_ter = shader_get_uniform(sh_color_remove, "treshold"); + uniform_ter = shader_get_uniform(shader, "treshold"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Colors", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ]) @@ -31,7 +32,7 @@ function Node_Color_Remove(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_color_remove); + shader_set(shader); shader_set_uniform_f_array(uniform_from, _colors); shader_set_uniform_i(uniform_from_count, array_length(fr)); diff --git a/scripts/node_color_replacement/node_color_replacement.gml b/scripts/node_color_replacement/node_color_replacement.gml index ad80663db..90d79469a 100644 --- a/scripts/node_color_replacement/node_color_replacement.gml +++ b/scripts/node_color_replacement/node_color_replacement.gml @@ -1,14 +1,15 @@ function Node_Color_replace(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Color replace"; - uniform_from = shader_get_uniform(sh_color_replace, "colorFrom"); - uniform_from_count = shader_get_uniform(sh_color_replace, "colorFrom_amo"); + shader = sh_color_replace; + uniform_from = shader_get_uniform(shader, "colorFrom"); + uniform_from_count = shader_get_uniform(shader, "colorFrom_amo"); - uniform_to = shader_get_uniform(sh_color_replace, "colorTo"); - uniform_ter = shader_get_uniform(sh_color_replace, "treshold"); - uniform_alp = shader_get_uniform(sh_color_replace, "alphacmp"); - uniform_inv = shader_get_uniform(sh_color_replace, "inverted"); - uniform_hrd = shader_get_uniform(sh_color_replace, "hardReplace"); + uniform_to = shader_get_uniform(shader, "colorTo"); + uniform_ter = shader_get_uniform(shader, "treshold"); + uniform_alp = shader_get_uniform(shader, "alphacmp"); + uniform_inv = shader_get_uniform(shader, "inverted"); + uniform_hrd = shader_get_uniform(shader, "hardReplace"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Color from", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_black ]) @@ -53,7 +54,7 @@ function Node_Color_replace(_x, _y, _group = -1) : Node_Processor(_x, _y, _group draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_color_replace); + shader_set(shader); shader_set_uniform_f_array(uniform_from, _colors); shader_set_uniform_i(uniform_from_count, array_length(fr)); shader_set_uniform_i(uniform_alp, alp); diff --git a/scripts/node_color_sampler/node_color_sampler.gml b/scripts/node_color_sampler/node_color_sampler.gml index e4364de4c..465acb3df 100644 --- a/scripts/node_color_sampler/node_color_sampler.gml +++ b/scripts/node_color_sampler/node_color_sampler.gml @@ -1,4 +1,4 @@ -function Node_Sampler(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { +function Node_Sampler(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) constructor { name = "Sampler"; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -6,25 +6,19 @@ function Node_Sampler(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) .setDisplay(VALUE_DISPLAY.vector); - outputs[| 0] = nodeValue(0, "Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, PIXEL_SURFACE); - outputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white); + outputs[| 0] = nodeValue(0, "Color", self, JUNCTION_CONNECT.output, VALUE_TYPE.color, c_white); + + static getPreviewValue = function() { return inputs[| 0]; } static drawOverlay = function(active, _x, _y, _s, _mx, _my, _snx, _sny) { inputs[| 1].drawOverlay(active, _x, _y, _s, _mx, _my, _snx, _sny); } - _input = -1; - static update = function() { - var _surf = inputs[| 0].getValue(); - if(!is_surface(_surf)) return; - if(_input != _surf) { - outputs[| 0].setValue(_surf); - _input = _surf; - } - var _pos = inputs[| 1].getValue(); + function process_value_data(_data, index = 0) { + var _surf = _data[0]; + var _pos = _data[1]; + if(!is_surface(_surf)) return c_black; - var cc = surface_getpixel(_surf, _pos[0], _pos[1]); - - outputs[| 1].setValue(cc); + return surface_getpixel(_surf, _pos[0], _pos[1]); } } \ No newline at end of file diff --git a/scripts/node_colorize/node_colorize.gml b/scripts/node_colorize/node_colorize.gml index 43c03560a..934df0e55 100644 --- a/scripts/node_colorize/node_colorize.gml +++ b/scripts/node_colorize/node_colorize.gml @@ -1,11 +1,12 @@ function Node_Colorize(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Colorize"; - uniform_grad_blend = shader_get_uniform(sh_colorize, "gradient_blend"); - uniform_color = shader_get_uniform(sh_colorize, "gradient_color"); - uniform_time = shader_get_uniform(sh_colorize, "gradient_time"); - uniform_shift = shader_get_uniform(sh_colorize, "gradient_shift"); - uniform_key = shader_get_uniform(sh_colorize, "keys"); + shader = sh_colorize; + uniform_grad_blend = shader_get_uniform(shader, "gradient_blend"); + uniform_color = shader_get_uniform(shader, "gradient_color"); + uniform_time = shader_get_uniform(shader, "gradient_time"); + uniform_shift = shader_get_uniform(shader, "gradient_shift"); + uniform_key = shader_get_uniform(shader, "keys"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Gradient", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_white) @@ -36,7 +37,7 @@ function Node_Colorize(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) con draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_colorize); + shader_set(shader); shader_set_uniform_i(uniform_grad_blend, ds_list_get(_gra_data, 0)); shader_set_uniform_f_array(uniform_color, _grad_color); shader_set_uniform_f_array(uniform_time, _grad_time); diff --git a/scripts/node_composite/node_composite.gml b/scripts/node_composite/node_composite.gml index b8c1efc51..6d19a4092 100644 --- a/scripts/node_composite/node_composite.gml +++ b/scripts/node_composite/node_composite.gml @@ -7,11 +7,12 @@ enum COMPOSE_OUTPUT_SCALING { function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Composite"; - uniform_dim = shader_get_uniform(sh_blend_normal_dim, "dimension"); - uniform_pos = shader_get_uniform(sh_blend_normal_dim, "position"); - uniform_sca = shader_get_uniform(sh_blend_normal_dim, "scale"); - uniform_rot = shader_get_uniform(sh_blend_normal_dim, "rotation"); - uniform_for = shader_get_sampler_index(sh_blend_normal_dim, "fore"); + shader = sh_blend_normal_dim; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_pos = shader_get_uniform(shader, "position"); + uniform_sca = shader_get_uniform(shader, "scale"); + uniform_rot = shader_get_uniform(shader, "rotation"); + uniform_for = shader_get_sampler_index(shader, "fore"); inputs[| 0] = nodeValue(0, "Padding", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 0, 0, 0, 0 ]) .setDisplay(VALUE_DISPLAY.padding); @@ -198,7 +199,7 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co ds_list_add(attributes[? "layer_visible"], true); } } - createNewSurface(); + if(!LOADING && !APPENDING) createNewSurface(); function addFrom(_nodeFrom) { inputs[| ds_list_size(inputs) - data_length].setFrom(_nodeFrom); @@ -223,6 +224,8 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co overlay_h = 0; static updateValueFrom = function(index) { + if(LOADING || APPENDING) return; + if(index + data_length >= ds_list_size(inputs)) createNewSurface(); } @@ -396,6 +399,7 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co } static process_data = function(_outSurf, _data, _output_index) { + if(array_length(_data) < 4) return _outSurf; var _pad = _data[0]; var _dim_type = _data[1]; var _dim = _data[2]; @@ -458,7 +462,7 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co if(!_s || is_array(_s)) continue; surface_set_target(temp_surf[bg]); - shader_set(sh_blend_normal_dim); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_s) / ww, surface_get_height(_s) / hh ]); shader_set_uniform_f_array(uniform_pos, [ _pos[0] / ww, _pos[1] / hh]); shader_set_uniform_f_array(uniform_sca, _sca) @@ -485,14 +489,8 @@ function Node_Composite(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co static postDeserialize = function() { var _inputs = load_map[? "inputs"]; - for(var i = input_fix_len; i < ds_list_size(_inputs); i += data_length) { - if(i > input_fix_len) - createNewSurface(); - inputs[| i + 0].deserialize(_inputs[| i + 0]); - inputs[| i + 1].deserialize(_inputs[| i + 1]); - inputs[| i + 2].deserialize(_inputs[| i + 2]); - inputs[| i + 3].deserialize(_inputs[| i + 3]); - } + for(var i = input_fix_len; i < ds_list_size(_inputs); i += data_length) + createNewSurface(); } static attributeSerialize = function() { diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index c792d18e1..4d4976dfe 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -150,10 +150,14 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { static focusStep = function() {} static doUpdate = function() { - var t = get_timer(); - update(); - setRenderStatus(true); - render_time = get_timer() - t; + try { + var t = get_timer(); + update(); + setRenderStatus(true); + render_time = get_timer() - t; + } catch(exception) { + log_warning("RENDER", "Render error " + string(exception)); + } } static onValueUpdate = function(index) {} @@ -591,7 +595,7 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { cached_output[ANIMATOR.current_frame] = _os; } - cache_result[ANIMATOR.current_frame] = true; + array_safe_set(cache_result, ANIMATOR.current_frame, true); } static cacheExist = function(frame = ANIMATOR.current_frame) { if(frame >= array_length(cached_output)) return false; @@ -675,13 +679,16 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { static clone = function() { var _type = instanceof(self); var _node = nodeBuild(_type, x, y); + var _nid = _node.node_id; var _data = serialize(); _node.deserialize(ds_map_clone(_data)); - _node.node_id = generateUUID(); + _node.applyDeserialize(); + _node.node_id = _nid; NODE_MAP[? node_id] = self; - NODE_MAP[? _node.node_id] = _node; + NODE_MAP[? _nid] = _node; + PANEL_ANIMATION.updatePropertyList(); return _node; } @@ -725,11 +732,10 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { load_scale = scale; if(!preset) { - if(APPENDING) { + if(APPENDING) APPEND_MAP[? load_map[? "id"]] = node_id; - } else { + else node_id = ds_map_try_get(load_map, "id"); - } NODE_MAP[? node_id] = self; @@ -746,21 +752,20 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) constructor { if(!ds_map_exists(load_map, "inputs")) return; - - var _inputs = load_map[? "inputs"]; - if(!ds_list_empty(_inputs) && !ds_list_empty(inputs)) { - var _siz = min(ds_list_size(_inputs), ds_list_size(inputs)); - for(var i = 0; i < _siz; i++) { - inputs[| i].deserialize(_inputs[| i], scale); - } - } } static attributeDeserialize = function(attr) { ds_map_override(attributes, attr); } + static postDeserialize = function() {} + static applyDeserialize = function() { + var _inputs = load_map[? "inputs"]; + for(var i = 0; i < ds_list_size(inputs); i++) + inputs[| i].applyDeserialize(_inputs[| i], load_scale); + } + static loadGroup = function() { if(_group == -1) { var c = PANEL_GRAPH.getCurrentContext(); diff --git a/scripts/node_de_corner/node_de_corner.gml b/scripts/node_de_corner/node_de_corner.gml index 5130ef09e..255620023 100644 --- a/scripts/node_de_corner/node_de_corner.gml +++ b/scripts/node_de_corner/node_de_corner.gml @@ -1,9 +1,10 @@ function Node_De_Corner(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "De-Corner"; - uniform_dim = shader_get_uniform(sh_de_corner, "dimension"); - uniform_sol = shader_get_uniform(sh_de_corner, "solid"); - uniform_tol = shader_get_uniform(sh_de_corner, "tolerance"); + shader = sh_de_corner; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_sol = shader_get_uniform(shader, "solid"); + uniform_tol = shader_get_uniform(shader, "tolerance"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -14,7 +15,7 @@ function Node_De_Corner(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_de_corner); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_data[0]), surface_get_height(_data[0]) ]); draw_surface_safe(_data[0], 0, 0); shader_reset(); diff --git a/scripts/node_de_stray/node_de_stray.gml b/scripts/node_de_stray/node_de_stray.gml index 4d40be08d..ab3b7d35b 100644 --- a/scripts/node_de_stray/node_de_stray.gml +++ b/scripts/node_de_stray/node_de_stray.gml @@ -1,8 +1,9 @@ function Node_De_Stray(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "De-Stray"; - uniform_dim = shader_get_uniform(sh_de_stray, "dimension"); - uniform_tol = shader_get_uniform(sh_de_stray, "tolerance"); + shader = sh_de_stray; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_tol = shader_get_uniform(shader, "tolerance"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Tolerance", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) @@ -15,7 +16,7 @@ function Node_De_Stray(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) con draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_de_stray); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_data[0]), surface_get_height(_data[0]) ]); shader_set_uniform_f(uniform_tol, _data[1]); draw_surface_safe(_data[0], 0, 0); diff --git a/scripts/node_dilate/node_dilate.gml b/scripts/node_dilate/node_dilate.gml index f0964623a..5e30d4f8f 100644 --- a/scripts/node_dilate/node_dilate.gml +++ b/scripts/node_dilate/node_dilate.gml @@ -1,10 +1,11 @@ function Node_Dilate(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Dilate"; - uniform_dim = shader_get_uniform(sh_dilate, "dimension"); - uniform_cen = shader_get_uniform(sh_dilate, "center"); - uniform_str = shader_get_uniform(sh_dilate, "strength"); - uniform_rad = shader_get_uniform(sh_dilate, "radius"); + shader = sh_dilate; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_cen = shader_get_uniform(shader, "center"); + uniform_str = shader_get_uniform(shader, "strength"); + uniform_rad = shader_get_uniform(shader, "radius"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) @@ -35,7 +36,7 @@ function Node_Dilate(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const var stren = _data[2]; var rad = _data[3]; - shader_set(sh_dilate); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_data[0]), surface_get_height(_data[0]) ]); shader_set_uniform_f_array(uniform_cen, center); shader_set_uniform_f(uniform_str, stren); diff --git a/scripts/node_dither/node_dither.gml b/scripts/node_dither/node_dither.gml index f23aec5a0..a489183b9 100644 --- a/scripts/node_dither/node_dither.gml +++ b/scripts/node_dither/node_dither.gml @@ -16,20 +16,21 @@ function Node_Dither(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const name = "Dither"; - uniform_dither_size = shader_get_uniform(sh_dither, "ditherSize"); - uniform_dither = shader_get_uniform(sh_dither, "dither"); + shader = sh_dither; + uniform_dither_size = shader_get_uniform(shader, "ditherSize"); + uniform_dither = shader_get_uniform(shader, "dither"); - uniform_dim = shader_get_uniform(sh_dither, "dimension"); - uniform_color = shader_get_uniform(sh_dither, "palette"); - uniform_key = shader_get_uniform(sh_dither, "keys"); + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_color = shader_get_uniform(shader, "palette"); + uniform_key = shader_get_uniform(shader, "keys"); - uniform_constrast = shader_get_uniform(sh_dither, "contrast"); - uniform_con_map_use = shader_get_uniform(sh_dither, "useConMap"); - uniform_con_map = shader_get_sampler_index(sh_dither, "conMap"); + uniform_constrast = shader_get_uniform(shader, "contrast"); + uniform_con_map_use = shader_get_uniform(shader, "useConMap"); + uniform_con_map = shader_get_sampler_index(shader, "conMap"); - uniform_map_use = shader_get_uniform(sh_dither, "useMap"); - uniform_map = shader_get_sampler_index(sh_dither, "map"); - uniform_map_dim = shader_get_uniform(sh_dither, "mapDimension"); + uniform_map_use = shader_get_uniform(shader, "useMap"); + uniform_map = shader_get_sampler_index(shader, "map"); + uniform_map_dim = shader_get_uniform(shader, "mapDimension"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Palette", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, [ c_white ]) @@ -66,7 +67,7 @@ function Node_Dither(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_dither); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_data[0]), surface_get_height(_data[0]) ] ); shader_set_uniform_f_array(uniform_color, _colors); shader_set_uniform_i(uniform_key, array_length(_pal)); diff --git a/scripts/node_edge_detect/node_edge_detect.gml b/scripts/node_edge_detect/node_edge_detect.gml index 6d3e26c47..6dcbfe185 100644 --- a/scripts/node_edge_detect/node_edge_detect.gml +++ b/scripts/node_edge_detect/node_edge_detect.gml @@ -1,8 +1,9 @@ function Node_Edge_Detect(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Edge detect"; - uniform_dim = shader_get_uniform(sh_edge_detect, "dimension"); - uniform_filter = shader_get_uniform(sh_edge_detect, "filter"); + shader = sh_edge_detect; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_filter = shader_get_uniform(shader, "filter"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Filter", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) @@ -17,7 +18,7 @@ function Node_Edge_Detect(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_edge_detect); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [surface_get_width(_data[0]), surface_get_height(_data[0])]); shader_set_uniform_i(uniform_filter, ft); draw_surface_safe(_data[0], 0, 0); diff --git a/scripts/node_erode/node_erode.gml b/scripts/node_erode/node_erode.gml index c91a2cb04..2189c9b02 100644 --- a/scripts/node_erode/node_erode.gml +++ b/scripts/node_erode/node_erode.gml @@ -1,10 +1,11 @@ function Node_Erode(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Erode"; - uniform_dim = shader_get_uniform(sh_erode, "dimension"); - uniform_size = shader_get_uniform(sh_erode, "size"); - uniform_bor = shader_get_uniform(sh_erode, "border"); - uniform_alp = shader_get_uniform(sh_erode, "alpha"); + shader = sh_erode; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_size = shader_get_uniform(shader, "size"); + uniform_bor = shader_get_uniform(shader, "border"); + uniform_alp = shader_get_uniform(shader, "alpha"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 1); @@ -20,7 +21,7 @@ function Node_Erode(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_erode); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [surface_get_width(_data[0]), surface_get_height(_data[0])]); shader_set_uniform_f(uniform_size, wd); shader_set_uniform_i(uniform_bor, _data[2]? 1 : 0); diff --git a/scripts/node_export/node_export.gml b/scripts/node_export/node_export.gml index 16b6cb3dc..44c882fef 100644 --- a/scripts/node_export/node_export.gml +++ b/scripts/node_export/node_export.gml @@ -104,7 +104,11 @@ function Node_Export(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { " " + target_path; //show_debug_message(converter); //show_debug_message(shell_cmd); - execute_shell_simple(converter, shell_cmd); + print("call shell") + execute_shell_simple(converter, shell_cmd,, 0); + + log_message("EXPORT", "Export gif as " + target_path, THEME.noti_icon_tick); + PANEL_MENU.setNotiIcon(THEME.noti_icon_tick); } static step = function() { @@ -250,6 +254,11 @@ function Node_Export(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { } surface_save(_surf, p); + + if(form != 2) { + log_message("EXPORT", "Export image as " + p, THEME.noti_icon_tick); + PANEL_MENU.setNotiIcon(THEME.noti_icon_tick); + } } } else { if(is_surface(surf)) { @@ -263,6 +272,11 @@ function Node_Export(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { } surface_save(surf, p); + + if(form != 2) { + log_message("EXPORT", "Export image as " + p, THEME.noti_icon_tick); + PANEL_MENU.setNotiIcon(THEME.noti_icon_tick); + } } } } diff --git a/scripts/node_glow/node_glow.gml b/scripts/node_glow/node_glow.gml index ea76ffd1a..1ee51707c 100644 --- a/scripts/node_glow/node_glow.gml +++ b/scripts/node_glow/node_glow.gml @@ -1,9 +1,10 @@ function Node_Glow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Glow"; - uniform_dim = shader_get_uniform(sh_outline_only, "dimension"); - uniform_size = shader_get_uniform(sh_outline_only, "borderSize"); - uniform_colr = shader_get_uniform(sh_outline_only, "borderColor"); + shader = sh_outline_only; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_size = shader_get_uniform(shader, "borderSize"); + uniform_colr = shader_get_uniform(shader, "borderColor"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Border", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) @@ -28,7 +29,7 @@ function Node_Glow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constru surface_set_target(pass1); draw_clear_alpha(c_black, 1); - shader_set(sh_outline_only); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_outSurf), surface_get_height(_outSurf) ]); shader_set_uniform_f(uniform_size, _size + _border); shader_set_uniform_f_array(uniform_colr, [1.0, 1.0, 1.0, 1.0]); diff --git a/scripts/node_gradient/node_gradient.gml b/scripts/node_gradient/node_gradient.gml index 60a74a491..ac048289b 100644 --- a/scripts/node_gradient/node_gradient.gml +++ b/scripts/node_gradient/node_gradient.gml @@ -1,18 +1,19 @@ function Node_Gradient(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Gradient"; - uniform_grad_blend = shader_get_uniform(sh_gradient, "gradient_blend"); - uniform_grad = shader_get_uniform(sh_gradient, "gradient_color"); - uniform_grad_time = shader_get_uniform(sh_gradient, "gradient_time"); - uniform_grad_key = shader_get_uniform(sh_gradient, "gradient_keys"); - uniform_grad_loop = shader_get_uniform(sh_gradient, "gradient_loop"); + shader = sh_gradient; + uniform_grad_blend = shader_get_uniform(shader, "gradient_blend"); + uniform_grad = shader_get_uniform(shader, "gradient_color"); + uniform_grad_time = shader_get_uniform(shader, "gradient_time"); + uniform_grad_key = shader_get_uniform(shader, "gradient_keys"); + uniform_grad_loop = shader_get_uniform(shader, "gradient_loop"); - uniform_type = shader_get_uniform(sh_gradient, "type"); - uniform_center = shader_get_uniform(sh_gradient, "center"); + uniform_type = shader_get_uniform(shader, "type"); + uniform_center = shader_get_uniform(shader, "center"); - uniform_angle = shader_get_uniform(sh_gradient, "angle"); - uniform_radius = shader_get_uniform(sh_gradient, "radius"); - uniform_radius_shf = shader_get_uniform(sh_gradient, "shift"); + uniform_angle = shader_get_uniform(shader, "angle"); + uniform_radius = shader_get_uniform(shader, "radius"); + uniform_radius_shf = shader_get_uniform(shader, "shift"); inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) .setDisplay(VALUE_DISPLAY.vector); @@ -91,7 +92,7 @@ function Node_Gradient(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { surface_set_target(_outSurf); draw_clear_alpha(0, 0); - shader_set(sh_gradient); + shader_set(shader); shader_set_uniform_i(uniform_grad_blend, ds_list_get(_gra_data, 0)); shader_set_uniform_f_array(uniform_grad, _grad_color); shader_set_uniform_f_array(uniform_grad_time, _grad_time); diff --git a/scripts/node_greyscale/node_greyscale.gml b/scripts/node_greyscale/node_greyscale.gml index ceed2aebd..449157e7b 100644 --- a/scripts/node_greyscale/node_greyscale.gml +++ b/scripts/node_greyscale/node_greyscale.gml @@ -1,8 +1,9 @@ function Node_Greyscale(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Greyscale"; - uniform_exp = shader_get_uniform(sh_greyscale, "brightness"); - uniform_con = shader_get_uniform(sh_greyscale, "contrast"); + shader = sh_greyscale; + uniform_exp = shader_get_uniform(shader, "brightness"); + uniform_con = shader_get_uniform(shader, "contrast"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Brightness", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0) @@ -20,7 +21,7 @@ function Node_Greyscale(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) co draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_greyscale); + shader_set(shader); shader_set_uniform_f(uniform_exp, _exp); shader_set_uniform_f(uniform_con, _con); draw_surface_safe(_data[0], 0, 0); diff --git a/scripts/node_group_input/node_group_input.gml b/scripts/node_group_input/node_group_input.gml index d67f98c26..beeef9472 100644 --- a/scripts/node_group_input/node_group_input.gml +++ b/scripts/node_group_input/node_group_input.gml @@ -152,8 +152,7 @@ function Node_Group_Input(_x, _y, _group = -1) : Node(_x, _y, _group) constructo return inParent; } - if(!LOADING && !APPENDING) - createInput(); + if(!LOADING && !APPENDING) createInput(); dtype = -1; range = 0; @@ -192,6 +191,17 @@ function Node_Group_Input(_x, _y, _group = -1) : Node(_x, _y, _group) constructo static postDeserialize = function() { createInput(false); + var _inputs = load_map[? "inputs"]; + inputs[| 5].applyDeserialize(_inputs[| 5], load_scale); + } + + static applyDeserialize = function() { + var _inputs = load_map[? "inputs"]; + for(var i = 0; i < ds_list_size(inputs); i++) { + if(i == 5) continue; + inputs[| i].applyDeserialize(_inputs[| i], load_scale); + var raw_val = _inputs[| i][? "raw value"]; + } onValueUpdate(0); } diff --git a/scripts/node_group_output/node_group_output.gml b/scripts/node_group_output/node_group_output.gml index bba1a673d..be5ce86b2 100644 --- a/scripts/node_group_output/node_group_output.gml +++ b/scripts/node_group_output/node_group_output.gml @@ -23,8 +23,9 @@ function Node_Group_Output(_x, _y, _group = -1) : Node(_x, _y, _group) construct } static getNextNodes = function() { + if(is_undefined(outParent)) return; group.setRenderStatus(true); - printIf(global.RENDER_LOG, "Value to amount " + string(ds_list_size(outParent.value_to))); + //printIf(global.RENDER_LOG, "Value to amount " + string(ds_list_size(outParent.value_to))); for(var j = 0; j < ds_list_size(outParent.value_to); j++) { var _to = outParent.value_to[| j]; diff --git a/scripts/node_image_sheet/node_image_sheet.gml b/scripts/node_image_sheet/node_image_sheet.gml index db0ad14b8..367e77752 100644 --- a/scripts/node_image_sheet/node_image_sheet.gml +++ b/scripts/node_image_sheet/node_image_sheet.gml @@ -4,8 +4,7 @@ function Node_Image_Sheet(_x, _y, _group = -1) : Node(_x, _y, _group) constructo surf_array = []; - inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0) - .setAcceptArray(false); + inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0).rejectArray(); inputs[| 1] = nodeValue(1, "Sprite size", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, [ 32, 32 ]) .setDisplay(VALUE_DISPLAY.vector); diff --git a/scripts/node_level/node_level.gml b/scripts/node_level/node_level.gml index 4334f4be8..563a9a42b 100644 --- a/scripts/node_level/node_level.gml +++ b/scripts/node_level/node_level.gml @@ -1,8 +1,9 @@ function Node_Level(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Level"; - uniform_black = shader_get_uniform(sh_level, "black"); - uniform_white = shader_get_uniform(sh_level, "white"); + shader = sh_level; + uniform_black = shader_get_uniform(shader, "black"); + uniform_white = shader_get_uniform(shader, "white"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -71,7 +72,7 @@ function Node_Level(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_level); + shader_set(shader); shader_set_uniform_f(uniform_black, _black); shader_set_uniform_f(uniform_white, _white); diff --git a/scripts/node_level_selector/node_level_selector.gml b/scripts/node_level_selector/node_level_selector.gml index 94dce2358..92587f435 100644 --- a/scripts/node_level_selector/node_level_selector.gml +++ b/scripts/node_level_selector/node_level_selector.gml @@ -1,8 +1,9 @@ function Node_Level_Selector(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Level Selector"; - uniform_middle = shader_get_uniform(sh_level_selector, "middle"); - uniform_range = shader_get_uniform(sh_level_selector, "range"); + shader = sh_level_selector; + uniform_middle = shader_get_uniform(shader, "middle"); + uniform_range = shader_get_uniform(shader, "range"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -74,7 +75,7 @@ function Node_Level_Selector(_x, _y, _group = -1) : Node_Processor(_x, _y, _grou draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_level_selector); + shader_set(shader); shader_set_uniform_f(uniform_middle, _middle); shader_set_uniform_f(uniform_range , _range ); diff --git a/scripts/node_mirror/node_mirror.gml b/scripts/node_mirror/node_mirror.gml index f0086a4f6..616311770 100644 --- a/scripts/node_mirror/node_mirror.gml +++ b/scripts/node_mirror/node_mirror.gml @@ -1,9 +1,10 @@ function Node_Mirror(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Mirror"; - uniform_dim = shader_get_uniform(sh_mirror, "dimension"); - uniform_pos = shader_get_uniform(sh_mirror, "position"); - uniform_ang = shader_get_uniform(sh_mirror, "angle"); + shader = sh_mirror; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_pos = shader_get_uniform(shader, "position"); + uniform_ang = shader_get_uniform(shader, "angle"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Position", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) @@ -41,7 +42,7 @@ function Node_Mirror(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_mirror); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, _dim); shader_set_uniform_f_array(uniform_pos, _pos); shader_set_uniform_f(uniform_ang, degtorad(_ang)); diff --git a/scripts/node_outline/node_outline.gml b/scripts/node_outline/node_outline.gml index 7bbce50aa..f5312de1a 100644 --- a/scripts/node_outline/node_outline.gml +++ b/scripts/node_outline/node_outline.gml @@ -1,17 +1,18 @@ function Node_Outline(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Outline"; - uniform_dim = shader_get_uniform(sh_outline, "dimension"); - uniform_border_size = shader_get_uniform(sh_outline, "borderSize"); - uniform_border_color = shader_get_uniform(sh_outline, "borderColor"); + shader = sh_outline; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_border_size = shader_get_uniform(shader, "borderSize"); + uniform_border_color = shader_get_uniform(shader, "borderColor"); - uniform_blend = shader_get_uniform(sh_outline, "is_blend"); - uniform_blend_alpha = shader_get_uniform(sh_outline, "blend_alpha"); + uniform_blend = shader_get_uniform(shader, "is_blend"); + uniform_blend_alpha = shader_get_uniform(shader, "blend_alpha"); - uniform_side = shader_get_uniform(sh_outline, "side"); - uniform_aa = shader_get_uniform(sh_outline, "is_aa"); + uniform_side = shader_get_uniform(shader, "side"); + uniform_aa = shader_get_uniform(shader, "is_aa"); - uniform_out_only = shader_get_uniform(sh_outline, "outline_only"); + uniform_out_only = shader_get_uniform(shader, "outline_only"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Width", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0); @@ -45,7 +46,7 @@ function Node_Outline(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) cons draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_outline); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ww, hh]); shader_set_uniform_f(uniform_border_size, wd); shader_set_uniform_f_array(uniform_border_color, [color_get_red(cl) / 255, color_get_green(cl) / 255, color_get_blue(cl) / 255, 1.0]); diff --git a/scripts/node_path/node_path.gml b/scripts/node_path/node_path.gml index 427292830..b9394cfae 100644 --- a/scripts/node_path/node_path.gml +++ b/scripts/node_path/node_path.gml @@ -403,8 +403,7 @@ function Node_Path(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { static postDeserialize = function() { var _inputs = load_map[? "inputs"]; - for(var i = list_start; i < ds_list_size(_inputs); i++) { - createAnchor(0, 0).deserialize(_inputs[| i]); - } + for(var i = list_start; i < ds_list_size(_inputs); i++) + createAnchor(0, 0); } } \ No newline at end of file diff --git a/scripts/node_pixel_cloud/node_pixel_cloud.gml b/scripts/node_pixel_cloud/node_pixel_cloud.gml index 468981c8f..73095642b 100644 --- a/scripts/node_pixel_cloud/node_pixel_cloud.gml +++ b/scripts/node_pixel_cloud/node_pixel_cloud.gml @@ -1,19 +1,20 @@ function Node_Pixel_Cloud(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Pixel Cloud"; - uniform_sed = shader_get_uniform(sh_pixel_cloud, "seed"); - uniform_str = shader_get_uniform(sh_pixel_cloud, "strength"); - uniform_dis = shader_get_uniform(sh_pixel_cloud, "dist"); + shader = sh_pixel_cloud; + uniform_sed = shader_get_uniform(shader, "seed"); + uniform_str = shader_get_uniform(shader, "strength"); + uniform_dis = shader_get_uniform(shader, "dist"); - uniform_map_use = shader_get_uniform(sh_pixel_cloud, "useMap"); - uniform_map = shader_get_sampler_index(sh_pixel_cloud, "strengthMap"); + uniform_map_use = shader_get_uniform(shader, "useMap"); + uniform_map = shader_get_sampler_index(shader, "strengthMap"); - uniform_grad_blend = shader_get_uniform(sh_pixel_cloud, "gradient_blend"); - uniform_grad = shader_get_uniform(sh_pixel_cloud, "gradient_color"); - uniform_grad_time = shader_get_uniform(sh_pixel_cloud, "gradient_time"); - uniform_grad_key = shader_get_uniform(sh_pixel_cloud, "gradient_keys"); + uniform_grad_blend = shader_get_uniform(shader, "gradient_blend"); + uniform_grad = shader_get_uniform(shader, "gradient_color"); + uniform_grad_time = shader_get_uniform(shader, "gradient_time"); + uniform_grad_key = shader_get_uniform(shader, "gradient_keys"); - uniform_alpha = shader_get_uniform(sh_pixel_cloud, "alpha_curve"); + uniform_alpha = shader_get_uniform(shader, "alpha_curve"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -65,7 +66,7 @@ function Node_Pixel_Cloud(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_pixel_cloud); + shader_set(shader); shader_set_uniform_f(uniform_sed, _sed); shader_set_uniform_f(uniform_str, _str); shader_set_uniform_f(uniform_dis, _dis); diff --git a/scripts/node_scale_algo/node_scale_algo.gml b/scripts/node_scale_algo/node_scale_algo.gml index b55d121ce..735aa96a0 100644 --- a/scripts/node_scale_algo/node_scale_algo.gml +++ b/scripts/node_scale_algo/node_scale_algo.gml @@ -13,8 +13,6 @@ function Node_create_Scale_Algo(_x, _y, _group = -1, _param = "") { function Node_Scale_Algo(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Scale Algo"; - uniform_dim = shader_get_uniform(sh_scale2x, "dimension"); - inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Algorithm", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0) @@ -30,7 +28,7 @@ function Node_Scale_Algo(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c var algo = _data[1]; var ww = surface_get_width(inSurf); var hh = surface_get_height(inSurf); - var shader = sh_scale2x; + var shader; var sc = 2; switch(algo) { @@ -48,6 +46,7 @@ function Node_Scale_Algo(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c var sh = hh * 3; surface_size_to(_outSurf, sw, sh); break; + default: return _outSurf; } @@ -55,8 +54,8 @@ function Node_Scale_Algo(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) c draw_clear_alpha(0, 0); BLEND_ADD - uniform_dim = shader_get_uniform(shader, "dimension"); - uniform_tol = shader_get_uniform(shader, "tol"); + var uniform_dim = shader_get_uniform(shader, "dimension"); + var uniform_tol = shader_get_uniform(shader, "tol"); shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ ww, hh ]); diff --git a/scripts/node_scatter/node_scatter.gml b/scripts/node_scatter/node_scatter.gml index f3fe64589..9ec7b0624 100644 --- a/scripts/node_scatter/node_scatter.gml +++ b/scripts/node_scatter/node_scatter.gml @@ -1,11 +1,12 @@ function Node_Scatter(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Scatter"; - uniform_dim = shader_get_uniform(sh_blend_normal_dim, "dimension"); - uniform_pos = shader_get_uniform(sh_blend_normal_dim, "position"); - uniform_sca = shader_get_uniform(sh_blend_normal_dim, "scale"); - uniform_rot = shader_get_uniform(sh_blend_normal_dim, "rotation"); - uniform_for = shader_get_sampler_index(sh_blend_normal_dim, "fore"); + shader = sh_blend_normal_dim; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_pos = shader_get_uniform(shader, "position"); + uniform_sca = shader_get_uniform(shader, "scale"); + uniform_rot = shader_get_uniform(shader, "rotation"); + uniform_for = shader_get_sampler_index(shader, "fore"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -120,7 +121,7 @@ function Node_Scatter(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { } surface_set_target(temp_surf[bg]); - shader_set(sh_blend_normal_dim); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ sw / ww, sh / hh ]); shader_set_uniform_f_array(uniform_pos, [ _x / ww, _y / hh]); shader_set_uniform_f_array(uniform_sca, [ _scx, _scy ]) diff --git a/scripts/node_seperate_shapes/node_seperate_shapes.gml b/scripts/node_seperate_shapes/node_seperate_shapes.gml index 097bef77c..2e14d5a80 100644 --- a/scripts/node_seperate_shapes/node_seperate_shapes.gml +++ b/scripts/node_seperate_shapes/node_seperate_shapes.gml @@ -2,7 +2,8 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru name = "Separate shape"; auto_update = false; - uniform_it_dim = shader_get_uniform(sh_seperate_shape_ite, "dimension"); + shader = sh_seperate_shape_ite; + uniform_it_dim = shader_get_uniform(shader, "dimension"); is_dynamic_output = true; inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -57,7 +58,7 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru surface_reset_target(); shader_reset(); - shader_set(sh_seperate_shape_ite); + shader_set(shader); shader_set_uniform_f_array(uniform_it_dim, [ ww, hh ]); shader_reset(); @@ -66,7 +67,7 @@ function Node_Seperate_Shape(_x, _y, _group = -1) : Node(_x, _y, _group) constru var bg = i % 2; var fg = (i + 1) % 2; - shader_set(sh_seperate_shape_ite); + shader_set(shader); surface_set_target(temp_surf[bg]); draw_clear_alpha(0, 0); BLEND_ADD diff --git a/scripts/node_shadow/node_shadow.gml b/scripts/node_shadow/node_shadow.gml index d8b0581b0..fb982aa3e 100644 --- a/scripts/node_shadow/node_shadow.gml +++ b/scripts/node_shadow/node_shadow.gml @@ -1,9 +1,10 @@ function Node_Shadow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Shadow"; - uniform_dim = shader_get_uniform(sh_outline_only, "dimension"); - uniform_size = shader_get_uniform(sh_outline_only, "borderSize"); - uniform_colr = shader_get_uniform(sh_outline_only, "borderColor"); + shader = sh_outline_only; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_size = shader_get_uniform(shader, "borderSize"); + uniform_colr = shader_get_uniform(shader, "borderColor"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Color", self, JUNCTION_CONNECT.input, VALUE_TYPE.color, c_black); @@ -47,7 +48,7 @@ function Node_Shadow(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) const surface_set_target(pass1); draw_clear_alpha(0, 0); BLEND_ADD - shader_set(sh_outline_only); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_outSurf), surface_get_height(_outSurf) ]); shader_set_uniform_f(uniform_size, _border); shader_set_uniform_f_array(uniform_colr, [1., 1., 1., 1.0]); diff --git a/scripts/node_sprite_stack/node_sprite_stack.gml b/scripts/node_sprite_stack/node_sprite_stack.gml index 446dfcf5d..bdc94bd9e 100644 --- a/scripts/node_sprite_stack/node_sprite_stack.gml +++ b/scripts/node_sprite_stack/node_sprite_stack.gml @@ -1,4 +1,4 @@ -function Node_Sprite_Stack(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { +function Node_Sprite_Stack(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Sprite Stack"; inputs[| 0] = nodeValue(0, "Base shape", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, PIXEL_SURFACE); @@ -39,24 +39,21 @@ function Node_Sprite_Stack(_x, _y, _group = -1) : Node(_x, _y, _group) construct inputs[| 5].drawOverlay(active, px, py, _s, _mx, _my, _snx, _sny); } - static update = function() { - var _in = inputs[| 0].getValue(); - var _dim = inputs[| 1].getValue(); - var _amo = inputs[| 2].getValue(); - var _shf = inputs[| 3].getValue(); + static process_data = function(_outSurf, _data, _output_index) { + var _in = _data[0]; + var _dim = _data[1]; + var _amo = _data[2]; + var _shf = _data[3]; - var _pos = inputs[| 4].getValue(); - var _rot = inputs[| 5].getValue(); - var _col = inputs[| 6].getValue(); - var _alp = inputs[| 7].getValue(); - var _mov = inputs[| 8].getValue(); + var _pos = _data[4]; + var _rot = _data[5]; + var _col = _data[6]; + var _alp = _data[7]; + var _mov = _data[8]; - var _outSurf = outputs[| 0].getValue(); - - if(!is_surface(_outSurf)) { + if(!is_surface(_outSurf)) _outSurf = surface_create_valid(_dim[0], _dim[1]); - outputs[| 0].setValue(_outSurf); - } else + else surface_size_to(_outSurf, _dim[0], _dim[1]); if(_mov) { diff --git a/scripts/node_statistic/node_statistic.gml b/scripts/node_statistic/node_statistic.gml index 5bf6a7174..d3ce98d08 100644 --- a/scripts/node_statistic/node_statistic.gml +++ b/scripts/node_statistic/node_statistic.gml @@ -40,11 +40,12 @@ function Node_Statistic(_x, _y, _group = -1) : Node(_x, _y, _group) constructor inputs[| index] = nodeValue( index, "Input", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, -1 ) .setVisible(true, true); } - createNewInput(); + if(!LOADING && !APPENDING) createNewInput(); outputs[| 0] = nodeValue(0, "Statistic", self, JUNCTION_CONNECT.output, VALUE_TYPE.float, -1); static updateValueFrom = function(index) { + if(LOADING || APPENDING) return; var _l = ds_list_create(); for( var i = 0; i < input_fix_len; i++ ) { @@ -77,47 +78,75 @@ function Node_Statistic(_x, _y, _group = -1) : Node(_x, _y, _group) constructor case STAT_OPERATOR._sum : for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { var val = inputs[| i].getValue(); - res += val; + if(is_array(val)) { + for( var j = 0; j < array_length(val); j++ ) + res += val[j]; + } else + res += val; } break; case STAT_OPERATOR._average : - if(ds_list_size(inputs) <= input_fix_len + 1) res = 0; - else { - for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { - var val = inputs[| i].getValue(); - res += val; - } - res /= ds_list_size(inputs) - 1 - input_fix_len; - } - break; - case STAT_OPERATOR._median : - var len = ds_list_size(inputs) - 1 - input_fix_len; - if(len == 0) { + if(ds_list_size(inputs) <= input_fix_len + 1) { res = 0; break; } - var vals = array_create(len); + var amo = 0; for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { - vals[i - input_fix_len] = inputs[| i].getValue(); + var val = inputs[| i].getValue(); + if(is_array(val)) { + for( var j = 0; j < array_length(val); j++ ) { + res += val[j]; + amo++; + } + } else { + res += val; + amo++; + } + } + res /= amo; + break; + case STAT_OPERATOR._median : + if(ds_list_size(inputs) - 1 - input_fix_len == 0) { + res = 0; + break; } - if(len == 1) { + var vals = []; + var amo = 0; + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { + var val = inputs[| i].getValue(); + if(is_array(val)) { + for( var j = 0; j < array_length(val); j++ ) { + array_push(vals, val[j]); + amo++; + } + } else { + array_push(vals, val); + amo++; + } + } + + if(amo == 1) { res = vals[0]; break; } array_sort(vals, true); - if(len % 2 == 0) - res = (vals[len / 2 - 1] + vals[len / 2]) / 2; + if(amo % 2 == 0) + res = (vals[amo / 2 - 1] + vals[amo / 2]) / 2; else - res = vals[(len - 1) / 2]; + res = vals[(amo - 1) / 2]; break; case STAT_OPERATOR._min : var _min = 9999999999; for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { var val = inputs[| i].getValue(); - _min = min(_min, val); + if(is_array(val)) { + for( var j = 0; j < array_length(val); j++ ) + _min = min(_min, val[j]); + } else + _min = min(_min, val); } res = _min; break; @@ -125,7 +154,11 @@ function Node_Statistic(_x, _y, _group = -1) : Node(_x, _y, _group) constructor var _max = -9999999999; for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { var val = inputs[| i].getValue(); - _max = max(_max, val); + if(is_array(val)) { + for( var j = 0; j < array_length(val); j++ ) + _max = max(_max, val[j]); + } else + _max = max(_max, val); } res = _max; break; @@ -138,9 +171,8 @@ function Node_Statistic(_x, _y, _group = -1) : Node(_x, _y, _group) constructor static postDeserialize = function() { var _inputs = load_map[? "inputs"]; - for(var i = 0; i < ds_list_size(_inputs); i++) { + for(var i = 0; i < ds_list_size(_inputs); i++) createNewInput(); - } } function onDrawNode(xx, yy, _mx, _my, _s) { diff --git a/scripts/node_string/node_string.gml b/scripts/node_string/node_string.gml index d43d46876..d79a59a5a 100644 --- a/scripts/node_string/node_string.gml +++ b/scripts/node_string/node_string.gml @@ -17,6 +17,6 @@ function Node_String(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _group) function onDrawNode(xx, yy, _mx, _my, _s) { draw_set_text(f_h5, fa_center, fa_center, COLORS._main_text); var str = inputs[| 0].getValue(); - draw_text_cut(xx + w / 2 * _s, yy + 10 + h / 2 * _s, str, w - ui(6)); + draw_text_cut(xx + w / 2 * _s, yy + 10 + h / 2 * _s, str, w - ui(6), _s); } } \ No newline at end of file diff --git a/scripts/node_string_split/node_string_split.gml b/scripts/node_string_split/node_string_split.gml index 8251d3d89..e6421c035 100644 --- a/scripts/node_string_split/node_string_split.gml +++ b/scripts/node_string_split/node_string_split.gml @@ -11,15 +11,33 @@ function Node_String_Split(_x, _y, _group = -1) : Node_Value_Processor(_x, _y, _ outputs[| 0] = nodeValue(0, "Text", self, JUNCTION_CONNECT.output, VALUE_TYPE.text, ""); - function process_value_data(_data) { + function process_value_data(_data) { + if(_data[1] == "") + return string_to_array(_data[0]); return string_splice(_data[0], _data[1]); } doUpdate(); function onDrawNode(xx, yy, _mx, _my, _s) { - var cx = xx + w * _s / 2; - var cy = yy + 10 + (h - 10) * _s / 2; - draw_sprite_uniform(s_node_text_splice, 0, cx, cy, _s); + var str = inputs[| 1].getValue(); + var cx = xx + w / 2 * _s; + var cy = yy + 10 + h / 2 * _s; + + if(string_length(str) == 0) { + draw_set_text(f_p0b, fa_center, fa_center, COLORS._main_text_sub); + draw_text_cut(cx, cy, "None", w - ui(6), _s); + return; + } + + draw_set_text(f_h5, fa_center, fa_center, COLORS._main_text); + draw_text_cut(cx, cy, str, w - ui(6), _s); + + var ww = (string_width(str) / 2) * _s; + draw_set_text(f_h5, fa_right, fa_center, COLORS._main_text_sub); + draw_text_transformed(cx - ww, cy, "|", _s, _s, 0); + + draw_set_halign(fa_left); + draw_text_transformed(cx + ww, cy, "|", _s, _s, 0); } } \ No newline at end of file diff --git a/scripts/node_stripe/node_stripe.gml b/scripts/node_stripe/node_stripe.gml index 7f8b73694..92b2d420a 100644 --- a/scripts/node_stripe/node_stripe.gml +++ b/scripts/node_stripe/node_stripe.gml @@ -1,18 +1,19 @@ function Node_Stripe(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { name = "Stripe"; - uniform_grad_use = shader_get_uniform(sh_stripe, "gradient_use"); - uniform_grad_blend = shader_get_uniform(sh_stripe, "gradient_blend"); - uniform_grad = shader_get_uniform(sh_stripe, "gradient_color"); - uniform_grad_time = shader_get_uniform(sh_stripe, "gradient_time"); - uniform_grad_key = shader_get_uniform(sh_stripe, "gradient_keys"); + shader = sh_stripe; + uniform_grad_use = shader_get_uniform(shader, "gradient_use"); + uniform_grad_blend = shader_get_uniform(shader, "gradient_blend"); + uniform_grad = shader_get_uniform(shader, "gradient_color"); + uniform_grad_time = shader_get_uniform(shader, "gradient_time"); + uniform_grad_key = shader_get_uniform(shader, "gradient_keys"); - uniform_dim = shader_get_uniform(sh_stripe, "dimension"); - uniform_pos = shader_get_uniform(sh_stripe, "position"); - uniform_angle = shader_get_uniform(sh_stripe, "angle"); - uniform_amount = shader_get_uniform(sh_stripe, "amount"); - uniform_blend = shader_get_uniform(sh_stripe, "blend"); - uniform_rand = shader_get_uniform(sh_stripe, "rand"); + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_pos = shader_get_uniform(shader, "position"); + uniform_angle = shader_get_uniform(shader, "angle"); + uniform_amount = shader_get_uniform(shader, "amount"); + uniform_blend = shader_get_uniform(shader, "blend"); + uniform_rand = shader_get_uniform(shader, "rand"); inputs[| 0] = nodeValue(0, "Dimension", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, def_surf_size2 ) .setDisplay(VALUE_DISPLAY.vector); @@ -79,7 +80,7 @@ function Node_Stripe(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { surface_size_to(_outSurf, _dim[0], _dim[1]); surface_set_target(_outSurf); - shader_set(sh_stripe); + shader_set(shader); shader_set_uniform_f(uniform_dim, _dim[0], _dim[1]); shader_set_uniform_f(uniform_pos, _pos[0] / _dim[0], _pos[1] / _dim[1]); shader_set_uniform_f(uniform_angle, degtorad(_ang)); diff --git a/scripts/node_texture_remap/node_texture_remap.gml b/scripts/node_texture_remap/node_texture_remap.gml index ba8410f8e..d9e29d6ff 100644 --- a/scripts/node_texture_remap/node_texture_remap.gml +++ b/scripts/node_texture_remap/node_texture_remap.gml @@ -1,7 +1,8 @@ function Node_Texture_Remap(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Texture remap"; - uniform_map = shader_get_sampler_index(sh_texture_remap, "map"); + shader = sh_texture_remap; + uniform_map = shader_get_sampler_index(shader, "map"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "RG Map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -14,7 +15,7 @@ function Node_Texture_Remap(_x, _y, _group = -1) : Node_Processor(_x, _y, _group BLEND_ADD if(_data[1]) { - shader_set(sh_texture_remap); + shader_set(shader); texture_set_stage(uniform_map, surface_get_texture(_data[1])); draw_surface_safe(_data[0], 0, 0); shader_reset(); diff --git a/scripts/node_time_remap/node_time_remap.gml b/scripts/node_time_remap/node_time_remap.gml index 1af3d6d9b..bdd5374ae 100644 --- a/scripts/node_time_remap/node_time_remap.gml +++ b/scripts/node_time_remap/node_time_remap.gml @@ -1,10 +1,11 @@ function Node_Time_Remap(_x, _y, _group = -1) : Node(_x, _y, _group) constructor { - name = "Time remap"; - use_cache = true; + name = "Time remap"; + use_cache = true; - uniform_map = shader_get_sampler_index(sh_time_remap, "map"); - uniform_min = shader_get_uniform(sh_time_remap, "vMin"); - uniform_max = shader_get_uniform(sh_time_remap, "vMax"); + shader = sh_time_remap; + uniform_map = shader_get_sampler_index(shader, "map"); + uniform_min = shader_get_uniform(shader, "vMin"); + uniform_max = shader_get_uniform(shader, "vMax"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Map", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); @@ -31,7 +32,7 @@ function Node_Time_Remap(_x, _y, _group = -1) : Node(_x, _y, _group) constructor surface_set_target(_surf); draw_clear_alpha(0, 0); - shader_set(sh_time_remap); + shader_set(shader); texture_set_stage(uniform_map, surface_get_texture(_map)); for(var i = 0; i <= _life; i++) { diff --git a/scripts/node_twirl/node_twirl.gml b/scripts/node_twirl/node_twirl.gml index fed52e2dc..469fd1533 100644 --- a/scripts/node_twirl/node_twirl.gml +++ b/scripts/node_twirl/node_twirl.gml @@ -1,17 +1,18 @@ function Node_Twirl(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constructor { name = "Twirl"; - uniform_dim = shader_get_uniform(sh_twirl, "dimension"); - uniform_cen = shader_get_uniform(sh_twirl, "center"); - uniform_str = shader_get_uniform(sh_twirl, "strength"); - uniform_rad = shader_get_uniform(sh_twirl, "radius"); + shader = sh_twirl; + uniform_dim = shader_get_uniform(shader, "dimension"); + uniform_cen = shader_get_uniform(shader, "center"); + uniform_str = shader_get_uniform(shader, "strength"); + uniform_rad = shader_get_uniform(shader, "radius"); inputs[| 0] = nodeValue(0, "Surface in", self, JUNCTION_CONNECT.input, VALUE_TYPE.surface, 0); inputs[| 1] = nodeValue(1, "Center", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, [ 0, 0 ]) .setDisplay(VALUE_DISPLAY.vector); inputs[| 2] = nodeValue(2, "Strength", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 3) - .setDisplay(VALUE_DISPLAY.slider, [-20, 20, 0.1]); + .setDisplay(VALUE_DISPLAY.slider, [-10, 10, 0.01]); inputs[| 3] = nodeValue(3, "Radius", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 16); @@ -35,7 +36,7 @@ function Node_Twirl(_x, _y, _group = -1) : Node_Processor(_x, _y, _group) constr var stren = _data[2]; var rad = _data[3]; - shader_set(sh_twirl); + shader_set(shader); shader_set_uniform_f_array(uniform_dim, [ surface_get_width(_data[0]), surface_get_height(_data[0]) ]); shader_set_uniform_f_array(uniform_cen, center); shader_set_uniform_f(uniform_str, stren); diff --git a/scripts/node_value/node_value.gml b/scripts/node_value/node_value.gml index fc75061a2..53a455089 100644 --- a/scripts/node_value/node_value.gml +++ b/scripts/node_value/node_value.gml @@ -194,9 +194,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T return self; } - static setAcceptArray = function(_accept_array) { - accept_array = _accept_array; - + static rejectArray = function() { + accept_array = false; return self; } @@ -1157,7 +1156,8 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T con_node = -1; con_index = -1; - static deserialize = function(_map, scale = false) { + + static applyDeserialize = function(_map, scale = false) { on_end = ds_map_try_get(_map, "on end", on_end); visible = ds_map_try_get(_map, "visible", visible); animator.deserialize(_map[? "raw value"], scale); @@ -1176,30 +1176,33 @@ function NodeValue(_index, _name, _node, _connect, _type, _value, _tag = VALUE_T return true; var _node = con_node; - if(APPENDING) + if(APPENDING) { _node = GetAppendID(con_node); - - if(ds_map_exists(NODE_MAP, _node)) { - var _nd = NODE_MAP[? _node]; - var _ol = ds_list_size(_nd.outputs); + if(_node == -1) + return true; + } - if(log) - log_warning("LOAD", "[Connect] Reconnecting " + string(node.name) + " to " + _nd.name); - - if(con_index < _ol) { - if(setFrom(_nd.outputs[| con_index], false)) { - return true; - } else - log_warning("LOAD", "[Connect] Connection conflict " + string(node.name) + " to " + string(_nd.name) + " : Connection failed."); - return false; - } else { - log_warning("LOAD", "[Connect] Connection conflict " + string(node.name) + " to " + string(_nd.name) + " : Node not exist."); - return false; - } + if(!ds_map_exists(NODE_MAP, _node)) { + var txt = "Node connect error : Node ID " + string(_node) + " not found."; + log_warning("LOAD", "[Connect] " + txt); + return false; } - var txt = "Node connect error : Node ID " + string(_node) + " not found."; - log_warning("LOAD", "[Connect] " + txt); + var _nd = NODE_MAP[? _node]; + var _ol = ds_list_size(_nd.outputs); + + if(log) + log_warning("LOAD", "[Connect] Reconnecting " + string(node.name) + " to " + _nd.name); + + if(con_index < _ol) { + if(setFrom(_nd.outputs[| con_index], false)) + return true; + + log_warning("LOAD", "[Connect] Connection conflict " + string(node.name) + " to " + string(_nd.name) + " : Connection failed."); + return false; + } + + log_warning("LOAD", "[Connect] Connection conflict " + string(node.name) + " to " + string(_nd.name) + " : Node not exist."); return false; } diff --git a/scripts/panel_collection/panel_collection.gml b/scripts/panel_collection/panel_collection.gml index 98a2aafbf..8e78aca73 100644 --- a/scripts/panel_collection/panel_collection.gml +++ b/scripts/panel_collection/panel_collection.gml @@ -208,11 +208,10 @@ function Panel_Collection() : PanelContent() constructor { function saveCollection(_path, save_surface = true) { if(PANEL_INSPECTOR.inspecting == noone) return; - if(ds_list_empty(PANEL_GRAPH.nodes_select_list)) { + if(ds_list_empty(PANEL_GRAPH.nodes_select_list)) SAVE_COLLECTION(PANEL_INSPECTOR.inspecting, _path, save_surface); - } else { + else SAVE_COLLECTIONS(PANEL_GRAPH.nodes_select_list, _path, save_surface); - } } function drawContent(panel) { @@ -278,7 +277,7 @@ function Panel_Collection() : PanelContent() constructor { _name = _pre_name + string(_i) + ".pxcc"; _i++; } - + saveCollection(_name); }; } diff --git a/scripts/save_function/save_function.gml b/scripts/save_function/save_function.gml index 8c948e1d6..08386735e 100644 --- a/scripts/save_function/save_function.gml +++ b/scripts/save_function/save_function.gml @@ -132,6 +132,9 @@ function SAVE_COLLECTIONS(_list, _path, save_surface = true) { ds_map_destroy(_map); var pane = findPanel("Panel_Collection", PANEL_MAIN, noone); if(pane) pane.refreshContext(); + + log_message("COLLECTION", "save collection at " + _path, THEME.noti_icon_file_save); + PANEL_MENU.setNotiIcon(THEME.noti_icon_file_save); } function SAVE_COLLECTION(_node, _path, save_surface = true) { @@ -157,6 +160,9 @@ function SAVE_COLLECTION(_node, _path, save_surface = true) { ds_map_destroy(_map); var pane = findPanel("Panel_Collection", PANEL_MAIN, noone); if(pane) pane.refreshContext(); + + log_message("COLLECTION", "save collection at " + _path, THEME.noti_icon_file_save); + PANEL_MENU.setNotiIcon(THEME.noti_icon_file_save); } function SAVE_NODE(_list, _node, dx = 0, dy = 0, scale = false) { diff --git a/scripts/slider/slider.gml b/scripts/slider/slider.gml index 6921203ec..bc359715f 100644 --- a/scripts/slider/slider.gml +++ b/scripts/slider/slider.gml @@ -2,8 +2,8 @@ function slider(_min, _max, _step, _onModify = noone, _onRelease = noone) constr active = false; hover = false; - minn = _min; - maxx = _max; + minn = _min; curr_minn = _min; + maxx = _max; curr_maxx = _max; step = _step; onModify = _onModify; @@ -34,6 +34,12 @@ function slider(_min, _max, _step, _onModify = noone, _onRelease = noone) constr case fa_bottom: _y = _y - _h; break; } + var _rang = abs(maxx - minn); + if(!dragging) { + curr_minn = (_data >= minn)? minn : minn - ceil(abs(_data - minn) / _rang) * _rang; + curr_maxx = (_data <= maxx)? maxx : maxx + ceil(abs(_data - maxx) / _rang) * _rang; + } + var sw = _w - (tb_w + ui(16)); tb_value.hover = hover; @@ -42,15 +48,15 @@ function slider(_min, _max, _step, _onModify = noone, _onRelease = noone) constr draw_sprite_stretched(THEME.slider, 0, _x, _y + _h / 2 - ui(4), sw, ui(8)); - var _kx = _x + clamp((_data - minn) / (maxx - minn), 0, 1) * sw; + var _kx = _x + clamp((_data - curr_minn) / (curr_maxx - curr_minn), 0, 1) * sw; draw_sprite_stretched(THEME.slider, 1, _kx - hdw / 2, _y, hdw, _h); if(dragging) { draw_sprite_stretched(THEME.slider, 3, _kx - hdw / 2, _y, hdw, _h); - var val = (_m[0] - _x) / sw * (maxx - minn) + minn; + var val = (_m[0] - _x) / sw * (curr_maxx - curr_minn) + curr_minn; val = round(val / step) * step; - val = clamp(val, minn, maxx); + val = clamp(val, curr_minn, curr_maxx); if(onModify != noone) onModify(val); UNDO_HOLDING = true; diff --git a/scripts/string_function/string_function.gml b/scripts/string_function/string_function.gml new file mode 100644 index 000000000..c4b9a0686 --- /dev/null +++ b/scripts/string_function/string_function.gml @@ -0,0 +1,7 @@ +function string_to_array(str) { + var amo = string_length(str); + var arr = array_create(amo); + for( var i = 0; i < amo; i++ ) + arr[i] = string_char_at(str, i + 1); + return arr; +} \ No newline at end of file diff --git a/scripts/string_function/string_function.yy b/scripts/string_function/string_function.yy new file mode 100644 index 000000000..ddbd79581 --- /dev/null +++ b/scripts/string_function/string_function.yy @@ -0,0 +1,11 @@ +{ + "resourceType": "GMScript", + "resourceVersion": "1.0", + "name": "string_function", + "isDnD": false, + "isCompatibility": false, + "parent": { + "name": "string", + "path": "folders/functions/string.yy", + }, +} \ No newline at end of file diff --git a/scripts/surface_functions/surface_functions.yy b/scripts/surface_functions/surface_functions.yy index d19267baf..5a9a21450 100644 --- a/scripts/surface_functions/surface_functions.yy +++ b/scripts/surface_functions/surface_functions.yy @@ -5,7 +5,7 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "string", - "path": "folders/functions/string.yy", + "name": "surface", + "path": "folders/functions/surface.yy", }, } \ No newline at end of file diff --git a/scripts/surface_valid/surface_valid.yy b/scripts/surface_valid/surface_valid.yy index 238f9414d..bfec6e026 100644 --- a/scripts/surface_valid/surface_valid.yy +++ b/scripts/surface_valid/surface_valid.yy @@ -5,7 +5,7 @@ "isDnD": false, "isCompatibility": false, "parent": { - "name": "string", - "path": "folders/functions/string.yy", + "name": "surface", + "path": "folders/functions/surface.yy", }, } \ No newline at end of file diff --git a/shaders/sh_atlas/sh_atlas.fsh b/shaders/sh_atlas/sh_atlas.fsh index ff52bb62e..6ef8e6114 100644 --- a/shaders/sh_atlas/sh_atlas.fsh +++ b/shaders/sh_atlas/sh_atlas.fsh @@ -7,8 +7,8 @@ varying vec4 v_vColour; uniform vec2 dimension; #define TAU 6.28318 -#define angle_sample 32. -#define distance_sample 32. +#define angle_sample 64. +#define distance_sample 64. void main() { vec2 pixelPosition = v_vTexcoord * dimension; diff --git a/shaders/sh_bevel/sh_bevel.fsh b/shaders/sh_bevel/sh_bevel.fsh index a822294c2..14c2ee7b2 100644 --- a/shaders/sh_bevel/sh_bevel.fsh +++ b/shaders/sh_bevel/sh_bevel.fsh @@ -36,7 +36,7 @@ void main() { vec2 pxs = v_vTexcoord + shf * pixelStep; vec4 sam = v_vColour * texture2D( gm_BaseTexture, pxs ); - if(bright(sam) < 1.) { + if(bright(sam) < 1. || pxs.x < 0. || pxs.y < 0. || pxs.x > 1. || pxs.y > 1.) { float dist1 = i; min_distance = min(min_distance, dist1); break;