diff --git a/example/castle.cpp b/example/castle.cpp index c64e4f3..cb8e356 100644 --- a/example/castle.cpp +++ b/example/castle.cpp @@ -29,6 +29,12 @@ #include "math/vec4.hpp" #include "math/mat4x4.hpp" +#include "model/castle/castlest.data.h" +#include "model/castle/gothic3.data.h" +#include "model/castle/oldbric.data.h" +#include "model/castle/shingle.data.h" +#include "model/castle/stone2.data.h" + using vec2 = vec<2, float>; using vec3 = vec<3, float>; using vec4 = vec<4, float>; @@ -177,21 +183,22 @@ void interrupt_init() : "r" (sr)); } -void global_polygon_type_0(ta_parameter_writer& writer, uint32_t texture_address, uint32_t list, uint32_t cull) +void global_polygon_type_0(ta_parameter_writer& writer, uint32_t texture_address, int width, int height) { const uint32_t parameter_control_word = para_control::para_type::polygon_or_modifier_volume - | list + | para_control::list_type::opaque | obj_control::col_type::packed_color + | obj_control::texture ; const uint32_t isp_tsp_instruction_word = isp_tsp_instruction_word::depth_compare_mode::greater - | cull; + | isp_tsp_instruction_word::culling_mode::no_culling; const uint32_t tsp_instruction_word = tsp_instruction_word::fog_control::no_fog | tsp_instruction_word::src_alpha_instr::one | tsp_instruction_word::dst_alpha_instr::zero - | tsp_instruction_word::texture_u_size::from_int(256) - | tsp_instruction_word::texture_v_size::from_int(256) + | tsp_instruction_word::texture_u_size::from_int(width) + | tsp_instruction_word::texture_v_size::from_int(height) ; const uint32_t texture_control_word = texture_control_word::pixel_format::_565 @@ -239,28 +246,34 @@ static inline void render_tri(ta_parameter_writer& writer, uint32_t base_color, vec3 ap, vec3 bp, - vec3 cp) + vec3 cp, + vec2 at, + vec2 bt, + vec2 ct) { if (ap.z < 0 || bp.z < 0 || cp.z < 0) return; - writer.append() = - ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + writer.append() = + ta_vertex_parameter::polygon_type_3(polygon_vertex_parameter_control_word(false), ap.x, ap.y, ap.z, - base_color - ); // offset_color + at.x, at.y, + base_color, + 0); // offset_color - writer.append() = - ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(false), + writer.append() = + ta_vertex_parameter::polygon_type_3(polygon_vertex_parameter_control_word(false), bp.x, bp.y, bp.z, - base_color - ); // offset_color + bt.x, bt.y, + base_color, + 0); // offset_color - writer.append() = - ta_vertex_parameter::polygon_type_0(polygon_vertex_parameter_control_word(true), + writer.append() = + ta_vertex_parameter::polygon_type_3(polygon_vertex_parameter_control_word(true), cp.x, cp.y, cp.z, - base_color - ); // offset_color + ct.x, ct.y, + base_color, + 0); // offset_color } constexpr inline mat4x4 screen_rotation(float theta) @@ -307,34 +320,25 @@ uint32_t xorshift32() return xorshift_state = x; } -const frame * frames[] = { - &frame_x3ds_Box08, - &frame_x3ds_Box09, - &frame_x3ds_Box02, - &frame_x3ds_Cone02, - &frame_x3ds_Cylinder02, - &frame_x3ds_Box21, - &frame_x3ds_Box22, - &frame_x3ds_Box23, - &frame_x3ds_Box24, - &frame_x3ds_Box25, - &frame_x3ds_Box26, - &frame_x3ds_Box27, - &frame_x3ds_Cylinder03, - &frame_x3ds_Cone03, - &frame_x3ds_Cylinder01, - &frame_x3ds_Box01, - &frame_x3ds_Box28, - &frame_x3ds_Box03, - &frame_x3ds_roof, - &frame_x3ds_walkway, -}; - static inline void render_mesh(ta_parameter_writer& writer, const mat4x4& screen, const mat4x4& model, const mesh * mesh) { + const material * m = &mesh->material_list->objects[0]->material; + assert(m->tag == tag::material); + const texture_filename * t = &m->objects[0]->texture_filename; + assert(t->tag == tag::texture_filename); + + global_polygon_type_0(writer, + texture_memory_alloc.texture.start + t->texture_memory_offset, + t->width, + t->height); + + assert(mesh->texture_coords->tag == tag::mesh_texture_coords); + const vec2 * texture_coords = mesh->texture_coords->texture_coords; + assert(mesh->texture_coords->n_texture_coords == mesh->n_vertices); + //mesh->vertices; for (int i = 0; i < mesh->n_faces; i++) { const auto& indices = mesh->faces[i].face_vertex_indices; @@ -343,7 +347,10 @@ static inline void render_mesh(ta_parameter_writer& writer, base_color, screen_transform(screen, model * mesh->vertices[indices[0]]), screen_transform(screen, model * mesh->vertices[indices[1]]), - screen_transform(screen, model * mesh->vertices[indices[2]])); + screen_transform(screen, model * mesh->vertices[indices[2]]), + texture_coords[indices[0]], + texture_coords[indices[1]], + texture_coords[indices[2]]); } } @@ -380,8 +387,11 @@ static inline void render_frame(ta_parameter_writer& writer, void render_castle(ta_parameter_writer& writer, const mat4x4& screen) { - for (uint32_t i = 0; i < (sizeof (frames)) / (sizeof (frames[0])); i++) { - render_frame(writer, screen, frames[i]); + for (uint32_t i = 0; i < (sizeof (castle_objects)) / (sizeof (castle_objects[0])); i++) { + if (castle_objects[i]->tag != tag::frame) + continue; + + render_frame(writer, screen, &castle_objects[i]->frame); } } @@ -390,10 +400,6 @@ void transfer_scene(ta_parameter_writer& writer) { const mat4x4 screen = screen_rotation(theta); - global_polygon_type_0(writer, texture_memory_alloc.texture.start, - para_control::list_type::opaque, - isp_tsp_instruction_word::culling_mode::no_culling); - render_castle(writer, screen); // end of opaque list @@ -403,14 +409,14 @@ void transfer_scene(ta_parameter_writer& writer) theta += deg * 0.1; } -void transfer_ta_fifo_texture_memory_32byte(void * dst, void * src, int length) +void transfer_ta_fifo_texture_memory_32byte(void * dst, const void * src, int length) { uint32_t out_addr = (uint32_t)dst; sh7091.CCN.QACR0 = ((reinterpret_cast(out_addr) >> 24) & 0b11100); sh7091.CCN.QACR1 = ((reinterpret_cast(out_addr) >> 24) & 0b11100); volatile uint32_t * base = &store_queue[(out_addr & 0x03ffffc0) / 4]; - uint32_t * src32 = reinterpret_cast(src); + const uint32_t * src32 = reinterpret_cast(src); length = (length + 31) & ~31; // round up to nearest multiple of 32 while (length > 0) { @@ -432,6 +438,39 @@ void transfer_ta_fifo_texture_memory_32byte(void * dst, void * src, int length) } } +void transfer_texture(const material * material) +{ + int ix = 0; + while (true) { + if (material->objects[ix] == nullptr) + return; + if (material->objects[ix]->tag == tag::texture_filename) + break; + ix += 1; + } + + const texture_filename * t = &material->objects[ix]->texture_filename; + assert(t->tag == tag::texture_filename); + + uint32_t offset = texture_memory_alloc.texture.start + t->texture_memory_offset; + void * dst = (void *)(&texture_memory64[offset / 4]); + + transfer_ta_fifo_texture_memory_32byte(dst, t->start, t->size); +} + +void transfer_textures() +{ + system.LMMODE0 = 0; // 64-bit address space + system.LMMODE1 = 0; // 64-bit address space + + for (uint32_t i = 0; i < (sizeof (castle_objects)) / (sizeof (castle_objects[0])); i++) { + if (castle_objects[i]->tag != tag::material) + continue; + + transfer_texture(&castle_objects[i]->material); + } +} + uint8_t __attribute__((aligned(32))) ta_parameter_buf[1024 * 1024]; void main() @@ -488,6 +527,7 @@ void main() ta_parameter_writer writer = ta_parameter_writer(ta_parameter_buf); + transfer_textures(); video_output::set_mode_vga(); while (1) { ta_polygon_converter_init2(texture_memory_alloc.isp_tsp_parameters[ta].start, diff --git a/example/example.mk b/example/example.mk index 8fb3775..11ba476 100644 --- a/example/example.mk +++ b/example/example.mk @@ -898,6 +898,11 @@ CASTLE_OBJ = \ holly/ta_fifo_polygon_converter.o \ holly/video_output.o \ sh7091/serial.o \ + model/castle/castlest.data.o \ + model/castle/gothic3.data.o \ + model/castle/oldbric.data.o \ + model/castle/shingle.data.o \ + model/castle/stone2.data.o \ $(LIBGCC) example/castle.elf: LDSCRIPT = $(LIB)/main.lds diff --git a/model/castle/castlest.data b/model/castle/castlest.data new file mode 100644 index 0000000..40f228a Binary files /dev/null and b/model/castle/castlest.data differ diff --git a/model/castle/castlest.data.h b/model/castle/castlest.data.h new file mode 100644 index 0000000..4d9c14d --- /dev/null +++ b/model/castle/castlest.data.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t _binary_model_castle_castlest_data_start __asm("_binary_model_castle_castlest_data_start"); +extern uint32_t _binary_model_castle_castlest_data_end __asm("_binary_model_castle_castlest_data_end"); +extern uint32_t _binary_model_castle_castlest_data_size __asm("_binary_model_castle_castlest_data_size"); + +#ifdef __cplusplus +} +#endif diff --git a/model/castle/castlest.jpg b/model/castle/castlest.jpg new file mode 100644 index 0000000..622e4fc Binary files /dev/null and b/model/castle/castlest.jpg differ diff --git a/model/castle/gothic3.data b/model/castle/gothic3.data new file mode 100644 index 0000000..ecd3c8f --- /dev/null +++ b/model/castle/gothic3.data @@ -0,0 +1,43 @@ +kJZbؽ{{Z{-csr{{jR{LkZMky֫ZNkb{zROskR1{{{{,cMk{,cqmsQ{s crqq{MkjR{{{{{s{nk{tNcZs+c,k{-cQs5{{R{Mk{{Qsؽ{ssssSok{S{e)mkosRjZMs4{rr{NkNsZnsnsbNkssmk{Ms{-k{{RiJ{$)iJ(JLkMk,cMk,c,cMkMk{{RiJLk,kiRBMkMkMk,cmkMkMkMkMkMk-k,kMkMkmk,c-kms{zQσQrMkmkMk-k-cMk-kMkσ{r c1{,kRIRjRMk{ZiJMk,k,kMk,cmkMkMk cZjRjRms kRiR,cMkLkLk,cMk,cMkMk-kMk-kMk,cNkNkrS{{s{{lk+cLcLkmkMk,kMk{2bMsNsЃs-c.cNkRMkE) BrR%!,ce)Z{{R{bBiJmkAMkRb-k-cr{iRMkjR9 cAMk,c9,kbBq4{{4sMkQ cmksmk{$!se)9R9-cMk-k-cmk,cZIJiJMk,cMkMkZR4{ЃZZqQ9R1RMk,c-cMk(J,c(BMkMkLkMkLkRqR{q44R{RR4׽rBBBBB{RRMkMkMk,cMkMk,cMk׽qMkRR119Mk,cMkmk,cMkMk,cMkMkMk-cmkMkMk-kQ c-c-kMkR{,cMkMkMkMkmk c-cQ׽{rBMkR-cMk k-kMk,cmkMcMkMkMkMkMkZRMk,c,kbmk,c-kMkMkMkMkLkMkMkMkMkMkMkMkMkMk-kq{σЃRrMk,c-kMk,cMkMkMk{Ѓ{ЃRRzֵֵqMk{9rRR{jRrqr5rr1qQ׽BQnsЃ1{{R{{׽1r1r Br{Rs*B1s<,cqsrqsrЃ{{ЃЃns{-c2-k{RrRЃ{s2y1-c{R{r,kMkb{Rf1{A{1Qqe)rBU5{{{R5RRQ{qQq4׽Qr-kQQQ4Q22RnsЃ{nsRZ{ns׽{{Q crjR-k1{E)qz׵ZRBjRؽQЃ{{Rr-k{Q{r1r{ZRZR{r cr׽y{Q{q4R{1Rσ{e1e)1rRRQ{-crjR΃rqsr0r.cNkMk{{׵׵R{׽Mk׽5qy1s1S{׽{{ۭk|?2Zk{ZVvRR*J{ص^ߚ{r{r{r.k2{2{Qr1r׽{2׽{2{{R1Mkr5IJQMkq51r׽sσR{{RR1nsb{{Q׽-kσ{,c׽-kQ{nsf1σ4׽׽q1{Mk c׽׽Qr cMs-kMsQ{{{rQ׽B{)J׽׽{׽{qqЃ1r1{2 J51RЃ91Ůs)JbZiRZr{,c,ciJ41r{NsRr{q1 cMk{ c1Ѓ2spk44P{q׽4{{qQp{{{ms{Mk3q4{{{Q4qmkQQ cЃ{Q44{Rbq{5Rr{R1qӜqrrrqqrsMk{sr4ӜrR{{{{{Q{{{ c{r{ZQUr4rrr{rnk cRIJMk,cZ)B,cmkMkmkLcLcmkLcLcLkBRmk,cZRmk,cLkMkLkLkLkMk,cMkMk,cMk,cLkLkMk,kr{Ѓb,kMkMsLk-kmk-kMkMk-k-kQЃЃу2RR,kMkRRMk,kLk,kLkLkLkMkLk,cRR,kLkiRRLkLkMkMk,cMkLkLkMk,cMkMkMkMkMkMkMk,c{r׽r5Mk,cMkMkMkMkMkMkQUsR{RqqQQr4q{MkQr{{ms{Rσ{q4QQ1qMkRnkqrtbb{kR{Q{qRQriJ{1Z5T{{q4{{Z{Mk{QMkns{{44qq4q{4Q4 cQ4qQ c{{{{Q{{qqqqq4{{Y{ cRRRMkmkR(B,c,cMkMkMkMkMkMkMkMk9RMkMkMkRMk,kMkMkMkMkMk-k,cMkMkMkMkMkMk,cMkMkMcMkR,c cMkMkMkMkMkMkMk,cMk cMkyΒ4MkIJRMk,cRiRLkmkMcMkMcMcMk-kMkMkZ)J-k-c(BiJMklk-kMkMk,kLkLk,cLkMcmkMcMkmk,c,cLk51{ZZs cLk,k,c,cmkLk c cr{sZ4qk6{AjR{YBQrZyZqQrRσ{12r1Ѓ{1{RQQR1Mkt0kq7U8YOkbЃz:{1zQz{RrRֵ\Ή1sLBk[Ss3psTpkZ{rstsSVqkS׵$s:{|{pk?߷R{{rzу{ЃP;{{1csR{rmk+B׵)1Q-k c.k9jRA ce1{ B2sQ5OBܭ||s/sSt6tX{{tss5QUUsTqr4qSc?sЃQ1tRpkq綵S2у{ csMkR{R{RR{qQ׵0Su{RR9R-kLkMkLkE)HJ1R-cLkMkLk5RNkNk{.kRsok]αs'BmkR-k,kLk,kmk(BR)BLkLkLk,cRӜvssrֵr4ssRs{Lkqqq{zIJrIJq{-c{r{{s{s{s{{Z{{{Q1{r-crs B{JJr c{RnknkMkAR{{S)JjJ%)ssc{c:e)(BmkMk,cMk$!(B1IJMkMkMkMkjJMk5ֽqZTR9R1RMkMkMkMkRRMk-cMkMk4׽R{IJUR5{IJjJ)J c{RmkRssLks{{-k9jJ1SNkbsNJcZR B1)BsqT{(B{b{Nk{iRE)iJRssps4qy{q{{׽Q׽ cq{Y1={׽ze1q1q c{׽sMk-c׽{qrrQMk{R1 k)JNk{sQAr{RЃr{0r{,crrRRRr׽BR׽Q6Ns.kؽ{rps/kRRZQZRU JR{1 cRbRs{R<9-cTt1Rσr{|6{R22bs9Spk{SNkiR׵4KkoTs2s{rRqsqڵ|cSq׽ֵsrsZJcbؽ{0iJmR,J +BcR{Rjٵ6{={t cRq1*BJJBzHJzAB{Ѓص׭={{2σ׵׽qRmssR4q54RrŐYЃ1 krR{׽{{5~Skcwֵ{s]η1qƏkk٭3cXRXWQc{6|Zs1k1t4[σZjR{v|c J{ BQ{󃙵󃶽;׽q{Ѓ|1Qkj1Q׽4 cAR{ֽ{q{׽ss,k2kU{k{|{y֯sr-cRbPq{4{-k{1|RUR{qQ{sTRr{qq{Rq{{{-k{zqRQmkqcB;{{r{4ٽS{sR{R{S2{NsnknsЃу{3qP׽YrUzؽqֵR{1SS2,kA,k(JZR5,c9Mke)Q22Mk9{R{{R׽ؽ5r{{9{у2{2׽rqXs5{{A35Os32kRrscs12Y.kZ6\{BRZZ22R324{{ c{IJֽZ,kR{sؽ3Z{{r{{Q-k׽{Qr1Ӥsqr{׽4Q{{{zz1jR-kR{rQjR{Z9rMk{Ѓ{{QؽrR11׽Rq׽q-c-kjRIJ׽緽q{(B c{z1R,c{{{ؽ{Nsns{׽r{=Mk cQ1QQ{{22{{2rz4jRQ,kqy{yQ{qms{1{12A\/cTr{psуs׽1r{{{Z{׽{Mks1{{1{R-k׽Z׽IJ-kjJ{1{qrrns)BRZ׽zֶ4׽1ZٵpkRz֯{ssrrf):IJB<sqR4y]ή{{{{rrqncM[krQصr1{׽{Ѓ{zΊRRЃ1rr{1qZRrMk1)JMkq{rr1RRЃ1Ѓ11nsrRjRNsQRrrsQZs{{/c׽qֽZ.kR54ֽrR{.kr׽ֵ{Ѓ׽ֽQqRZ{tRr)J{{vQ{QQRsZ{Rq49{MkR{{{jRσjRZ{bb{ Br׵ok [kJص׭V׭sQ cB{)Jyms{{.k{S5RЃR22{{R0RSr{b2sR c{s{Θ2ؽ/k{s{2-cnk{sq4{׽r{3MkTt{]Rk2rs.k{UQkG){rqz׽4{rY4ؽr{s{{rZ{Ѓ{{QRЃNk1y֖1{RrR,c{Mkqqq{2rQR{{{{{r{{ BRA{׽122Tsssqs B1{-crq4Q0{QЃR1{f){{rNs1{񃔜R!iJLkMkmk,c1IJ!IJ,cmkMkMkqq4{s c{qqQR{MkMk1IJ$!R,cMkMkMk9,cBRMkmk-cMkqq,cMk{,c4{mksq4Mk{Mk{LcMcjJ(BD!!)BjJE)1jRrjJq5sssT׽r{{{{E))J1{-c-kMk.k{c{R9IJ$!RrR cs{{{r{s1R1R,cMkmkMk9MkIJMkMk,cMkMkqqq{MkQ,c4{ZRRRIJRMk,cmkmk9IJ1IJ,cmkMk,cQ(BqqMk{yIJ[cTs91s{Lks!E)Bֶ֚R4RYθ9JQrsLk cslkR-c c{14QR\ߖ[7:{Qr{{lRok{{srA{E1{R{q2QR6QcUz0y֎{9/ch1+J5,k{IJE1jRf1s縵Z޸sVrcyyTr{Rr1׽RR9!R96{JJB9LkLkRMkMkr c5RLk,cMk,k4-k2sQRnkIJQB1-k{Q11Z,cRLk-kMkrRMkRMcMkLcLcmk{ZsiRZf1iRQqR׽f1Re)e)4綵׽{r{׽׽ؽ{2R1{{e)Bf){rNkRjR{=緽Ѓ{2yηRЃ{{,cr-c9σ1rrrf1E)RMkRMk-krMkMkR,ciJLcMkLkmk,c|RrnsE)jRB{1{ؽ9-k9RLcRmkmkLk,cMkRLcRMkMkrMkR׽׽R{<4{ns J1Ѓ{s9yΫR{{׵׽׽y{r{iJ׽q4riJmk{r׽y׽{{{4yMkR9R׽{r{{׽q{,c涵{{E)r{R{rrR{Mk׽Q-krRR{{-k5׽QQ{Mkr׽Q{{5rqnkr׽qqMkIJQ{Mk{-kؽ5rZ׽RARsrs{jR)JnsYQQ{׽׽׽q4q{ cZ׽q{q{Q-k׽Q51rQ׽qZ1sRŗ׽׽r1{r1{Q׽z֯{19R5Z B׽ns5{MkNss5Q{{rRQ c-kMs{sֽ;iJRD)q׽{ֽr׽R{5{{S:{{iJֵq5ֵpqsr{ryΩRyΪRS{[{KJ{{2mk9mk1{σ{ c(Je1iJR cRMkmkLkMk cRMkLkmk,cmkMk,c{Zrs{R-crssokS1Ok :Mk cZLkMkMkMkMkjJMkRMkMkMkMk-k5[{s٭[{դ{T3|S{q4q{Q{QrrQR{bRTq{Ѓ2ֽ<緽5ssrrQrRMk{ֽ׽4׽{SsE!{՜$!RE)RMkR,cMkNkMk-c(BMkIJ,cnk-kMk2rr1{f)s{MkE)E)R(BMkBMk,crMk-cMkMkMk,cMk4sk{{{ޏ{{qAyMkIBMkMk{{q{{{1{{׽׽QzQr׽{4{RrRЃQr1σ{bR(JR,k{׽rYrmsZ{f1׽5r{{{4-kMsRR9׽׽f1RqQbZ{Mkr{jR51{-kNk{綽ZQYYΒ{Qr12{1{511{{׽z4Qr{z{s1{2ЃЃ{{MsJ1{RosjR΃bq4qQQ,cqrs cbNk(J{5-k{5R1rrQr1sRQrЃЃr1{jRr{R{r{Ѓ-kQ׽r{{qqsnkR1r{Nk{{(B c4{{osSnkb9bQk-c9ms{,k{򜑔{s{s(B{{4Bb0klRZJ)B [{1R(B{AjJ%!Mk{qs{ c c1R99LkLk{1Js13q c{{3mkqmkiJ{ cQq4qsMk,kMkMk9s cZ9RAQ{4{{mkLkRsR cMkB9{B,cQLkq,c1{P{mk9Z$){McRYQMcmkMc,cMcmkmk,cRRiJRMk4mksMk,cMcMkMkMkMk,c4{R,cmsyms c{msb4{bs{{q{{{Mk{nsnsMk{iRbRHJ cmk,cMkMk,cmkMk,cmsbbRB{)B{Mk,c,cMkmkMk,cMk{s4q4mksMk{s{s{msqMk{{Z{Mk-kmsZRsmsRnsQrQ{s{{Qs kqMk{,cqB{Z-kqR{mkZns{ms{q k{QMkMkrmsmk{4iR{{qmsqRq c{e)-cqMkRQLkq,c{msRMknk{RB-c)JqssY,c{{MkLkqiR{ c{-c{-k cs{{Mk4RR{s{{{ cRf1msb-k cb,kb,k{9U-knsMkms,kssLk cR$) c(B,cMkMkMkMkMkMkMkYMkRZiRZRMk,k-cMkLkLkMkLksr5Q5mknsQr{{ns{MksbMkRMkRbR9e){(Bq{{ cms,k cbMkMkLcmkMk,kLcMk{R cR{q c [LkMkMk,cMkLk,cMkMkMkMkBmk,c,cLksHJlk+c3Qqmk,ciJMkLkLkMkMkRMksSok-cMkr{{R,c4 c{RE){:s{4{s{MkMkiJRZq{q{{{rrQ{q{r +cZs{Mk{{{rR5RR{Zp4r{Q{ns{R4Q{{5{{3Lkp{{{33{lkkkKcQq3q{3s{ +c +kp44Z{qqb{Mkq΃{Lkpr{R{{{{Qq1rqQ{5TQ{Q{{p{Z{{{Q{󤒔4{{{r{5{r{iR{ZqsLkTqr{p{Z{lk{{qrpR{R{{U{6{y4Yq{rqRJcRkr{msRkkR{Yζ׽r{P{4rqq333{q3{sqQqqq5Qs05Q{{{{5qQ0{qqLkT{qqqLk{qqqLk{Lk3s{{{Z4QRQ{q{׽1{{{{RrqrQs444444sq{Qrrrr{qQ5rrQ13{{ cR-cRnk3RpRRMcRMkmkLcMcMkMkRMk-kMkMkMkLkMkrMkЃLkZZmk,cmkMkMkZms(J-kMkMk,cMk,kLkLkmsЃMsRLkMkLkLkMsRMkkkplk5Qq{{{q4q{p{lk54s{{z4qqqQb׽{{qqq{5Qr{rrrrblsbLk,kMkLk,cpZRRMkR,cMk c,cMk-kmksmk,cMkLc,c{mkRpZ(BmkRMk cb+kLk-kMkMk-kLcLcMkMk4Q,cMkMk,kr׽s{plkLkMk{3Zmk׽{׽{{4{{{rRRЃ{rR1qqpq{q{rrqPR{RqQ4Z{kk{rQЃNsQ{RrQσQbZTq4q4qQrmsQ{r׽rq{44q{QQQ{R{R{3rr{{Q33rqrq{5{{|p{{qֽz{Lk{ +cqrQ-kr cqQ44{{{P4LkqQ4{q{qZ c{4r{{{4Qs4rpq{r0Zq{QЃrrrMk{qqqQqp{{Rqqs{lklk{{r{ +cp{3qq444rR5ЃσQNs0{4rrTq{q{{у{P{{q4qؽӜs5msrs{HRLksLkMk,k-kiR{ZMkLkMkMkmkMk-k cMkNsЃrzmk,c cmk<4{Lk{,kR,cR,cLkLkqmsRmkRMkmkMk-c-cqq׽Mk-k-kMkrnsЃ{{lsks{{{{QQ{{{Lkyq{sY4qqq{{Z c{rr,kQ{54{q{Qq{lk{{{,c cRMkR,cRRRmkRMkMkMkmk,cMkb cs,cmk,cMkMkRLkRpZq,cRMcR,c{LkqmkMkMk-cMkmk,cMcmksQQ4MkMkMk-kmksMk{ cnsq{{{{b4{{Ns{rnsQNk{{55{Q{Mkqֽ{{qrs{{Q{{q{{{MkbsMkQrЃ{{{{rЃЃrrrq5sLcLcR4,kqbZ{IRσЃ{{NkqR{ֽZ3{{σN{qZbiR,sb{ k2Nsq4qRЃ{)J{-c{B9,cmkiJ(JMkmkЃЃ-kR{NsRA)J,cMk99,cMkLkMkMkMk,c,cmk,cMkMk{{,cMk4rmkLk,cMkmk,cMcMkmkMkQ,cmkrqMsMkq{Mk{RRb,kmkIJ9,c-kQMk{ crQA{iJ)JMk-k9b,c,kMk,cMk,cMk-kmkMkMkMkqq,cMk{MkMk,cMk,kMkMk,c,cmkQ,cMkq44{Q{{4{{׽q{RhJJ4)JRZ4YUQ{{rԤ{ЃNsЃQnsQσ4r{5rqqMkQqns׽{{{{4{Ѓ{Q4qٽqrQRRrRЃr{MsMk׽s4{rR{׽r{msMkMkrMk{,k{{{RAr{{IR9Mk c cIJMkmk{r{{R1rQR{5{mk,c,cmkMkMkMkMkMk,cRMkMk,cMkMkrr5Qqq׽4{R{rQЃ{{{r{r{{-sσ{RMkms{ cRNkMk,kms{ cZ{{4Q{r{{4r{{qs{{hR{{{msms{Mk{,ksq5r cMkQ{4{54{QЃMk{,cLk44Y{q{4QrrqnkMkQ{mkLk cMkֽ{ k{Mk{,kZyqqq{{q{qMkrqQ{4ֵ{RqqRqqq4qNk{Rr{Qqy{qZ{Z4qYmk{Qrr{r{{pp4Q{{Q3q{Msr-s{,cMsb{y1yMsNsMk{{Y׽qq{{,kMkRMk{{σRmkZr{4Q5{{{rӜRymkbRqZ44sYnsq{4qQqq,ks{ [{msxLk4q{{4Qq{rr c{{qx{y{rσr5{RMkRR9RMkMkMkMk1IJE)IJMkMkMkMk4{{Mk4Q4{msrRRMkmkMkMk Re)RMkLc,cLk44s5nsqQRr5q{q{{q{0{ZqZ{q{4σ{qq0rMk{-k{1{RMkЃ{Ѓ{{ns{{Ms{ЃrЃЃR1R1RMkMkMk,c9RBiRmk,c-k-kqU4{{Qmk{{r!ZR,kmkMk,cR1R-kMkMk-kMkqr5Qqrmk{{Mk{r{,kbZσ{{{rQq{r-kz-kNkЃЃ{bms{{4q{{{q5NsЃЃ{5{-kQmkЃQ{σZ{b,k{ c{Mk{s{qr{{sz֯{-kbTms{Q cq{{iR4ZrNsQbMkq{{ cmsq{{ЃЃ5{s4ЃNsЃZ5s{{{{{Qr{QnsbQ-k cr4s{{rR{σ{Z4nsqr{R{mkqQ΃+kMs3qMsQr c4σMs{-k=ֵ{{{{44{R5 kQQq{q44{QQQ{Ms{Msbb4{{MsMsMsNs{r{{r{qqԜ{sr5{rqMk,k{Mkr2sσZσ{MsRRRRLkLkMkMkRZZiJ,c cMkmkqqmsMkiRֽiRmsbMkP9ֽZ3ZRZRLkLk,cLk,c(BRBmk-k-kMkpppoJk{,klsMk{KkskkսKkֽZZ!!BiRZD) c)IJz{KsPZ{Qb4/ֽ;Xms{! cZ{PopsPPQֽLk3LkOKkkkkko{OiJB(B-cMkMk,kR1(BMkMk-kMkls/msZ*c{b,k +cspp{ֽ$!R9RMkmkMk,c(BR9R,kLkMkLkP3lk{ZqZ{s/KkoPֽnO{p cpLkJo9rksOooPp{OPlkkkn&BnRZ.oop0/ls{Ls{KkOlsBhRBA{{IRqZbNZ{{NkqMkMsMs kmsσ1q4sqrr4{4s4qqqmsRЃrqqq,c c{4r-krЃ{ЃЃ{ЃЃЃ{{{rrRmkiJ4sQnkֵ5S4{{{{LkLk,cq4-ks4ؽsQsqbb{NsqT{5{Ӝq{4{rNs{{sZkσσMsbRqMk{{{rrRσr{ kms{MkQ{{{{LkR,k,c{{{r5rЃ{{{MkU{{Q{qqq{{Mk{5Mk׽smksY4 + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t _binary_model_castle_gothic3_data_start __asm("_binary_model_castle_gothic3_data_start"); +extern uint32_t _binary_model_castle_gothic3_data_end __asm("_binary_model_castle_gothic3_data_end"); +extern uint32_t _binary_model_castle_gothic3_data_size __asm("_binary_model_castle_gothic3_data_size"); + +#ifdef __cplusplus +} +#endif diff --git a/model/castle/gothic3.jpg b/model/castle/gothic3.jpg new file mode 100644 index 0000000..9ee7e1f Binary files /dev/null and b/model/castle/gothic3.jpg differ diff --git a/model/castle/model.hpp b/model/castle/model.hpp index aacc92a..d794d29 100644 --- a/model/castle/model.hpp +++ b/model/castle/model.hpp @@ -9789,7 +9789,11 @@ const material material_x3ds_mat_castlestone = { const texture_filename texture_filename_0 = { .tag = tag::texture_filename, - + .start = reinterpret_cast(&_binary_model_castle_castlest_data_start), + .size = reinterpret_cast(&_binary_model_castle_castlest_data_size), + .texture_memory_offset = 0, + .width = 256, + .height = 256, }; const material material_x3ds_mat_Material__3 = { @@ -9807,7 +9811,11 @@ const material material_x3ds_mat_Material__3 = { const texture_filename texture_filename_1 = { .tag = tag::texture_filename, - + .start = reinterpret_cast(&_binary_model_castle_oldbric_data_start), + .size = reinterpret_cast(&_binary_model_castle_oldbric_data_size), + .texture_memory_offset = 131072, + .width = 256, + .height = 256, }; const material material_x3ds_mat_shingle = { @@ -9825,7 +9833,11 @@ const material material_x3ds_mat_shingle = { const texture_filename texture_filename_2 = { .tag = tag::texture_filename, - + .start = reinterpret_cast(&_binary_model_castle_shingle_data_start), + .size = reinterpret_cast(&_binary_model_castle_shingle_data_size), + .texture_memory_offset = 262144, + .width = 256, + .height = 128, }; const material material_x3ds_mat_Material__8 = { @@ -9843,7 +9855,11 @@ const material material_x3ds_mat_Material__8 = { const texture_filename texture_filename_3 = { .tag = tag::texture_filename, - + .start = reinterpret_cast(&_binary_model_castle_gothic3_data_start), + .size = reinterpret_cast(&_binary_model_castle_gothic3_data_size), + .texture_memory_offset = 327680, + .width = 256, + .height = 256, }; const frame frame_x3ds_Box08 = { @@ -9872,13 +9888,9 @@ const mesh mesh_Box08 = { .vertices = mesh_Box08_vertices, .n_faces = 44, .faces = mesh_Box08_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_0), - reinterpret_cast(&mesh_normals_0), - reinterpret_cast(&mesh_texture_coords_0), - nullptr, - } + .material_list = &mesh_material_list_0, + .normals = &mesh_normals_0, + .texture_coords = &mesh_texture_coords_0, }; const mesh_material_list mesh_material_list_0 = { @@ -10033,13 +10045,9 @@ const mesh mesh_Box09 = { .vertices = mesh_Box09_vertices, .n_faces = 136, .faces = mesh_Box09_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_1), - reinterpret_cast(&mesh_normals_1), - reinterpret_cast(&mesh_texture_coords_1), - nullptr, - } + .material_list = &mesh_material_list_1, + .normals = &mesh_normals_1, + .texture_coords = &mesh_texture_coords_1, }; const mesh_material_list mesh_material_list_1 = { @@ -10422,13 +10430,9 @@ const mesh mesh_Box02 = { .vertices = mesh_Box02_vertices, .n_faces = 8, .faces = mesh_Box02_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_2), - reinterpret_cast(&mesh_normals_2), - reinterpret_cast(&mesh_texture_coords_2), - nullptr, - } + .material_list = &mesh_material_list_2, + .normals = &mesh_normals_2, + .texture_coords = &mesh_texture_coords_2, }; const mesh_material_list mesh_material_list_2 = { @@ -10499,13 +10503,9 @@ const mesh mesh_Cone02 = { .vertices = mesh_Cone02_vertices, .n_faces = 32, .faces = mesh_Cone02_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_3), - reinterpret_cast(&mesh_normals_3), - reinterpret_cast(&mesh_texture_coords_3), - nullptr, - } + .material_list = &mesh_material_list_3, + .normals = &mesh_normals_3, + .texture_coords = &mesh_texture_coords_3, }; const mesh_material_list mesh_material_list_3 = { @@ -10602,13 +10602,9 @@ const mesh mesh_Cylinder02 = { .vertices = mesh_Cylinder02_vertices, .n_faces = 16, .faces = mesh_Cylinder02_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_4), - reinterpret_cast(&mesh_normals_4), - reinterpret_cast(&mesh_texture_coords_4), - nullptr, - } + .material_list = &mesh_material_list_4, + .normals = &mesh_normals_4, + .texture_coords = &mesh_texture_coords_4, }; const mesh_material_list mesh_material_list_4 = { @@ -10682,13 +10678,9 @@ const mesh mesh_Box21 = { .vertices = mesh_Box21_vertices, .n_faces = 176, .faces = mesh_Box21_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_5), - reinterpret_cast(&mesh_normals_5), - reinterpret_cast(&mesh_texture_coords_5), - nullptr, - } + .material_list = &mesh_material_list_5, + .normals = &mesh_normals_5, + .texture_coords = &mesh_texture_coords_5, }; const mesh_material_list mesh_material_list_5 = { @@ -11121,13 +11113,9 @@ const mesh mesh_Box22 = { .vertices = mesh_Box22_vertices, .n_faces = 136, .faces = mesh_Box22_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_6), - reinterpret_cast(&mesh_normals_6), - reinterpret_cast(&mesh_texture_coords_6), - nullptr, - } + .material_list = &mesh_material_list_6, + .normals = &mesh_normals_6, + .texture_coords = &mesh_texture_coords_6, }; const mesh_material_list mesh_material_list_6 = { @@ -11510,13 +11498,9 @@ const mesh mesh_Box23 = { .vertices = mesh_Box23_vertices, .n_faces = 176, .faces = mesh_Box23_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_7), - reinterpret_cast(&mesh_normals_7), - reinterpret_cast(&mesh_texture_coords_7), - nullptr, - } + .material_list = &mesh_material_list_7, + .normals = &mesh_normals_7, + .texture_coords = &mesh_texture_coords_7, }; const mesh_material_list mesh_material_list_7 = { @@ -11949,13 +11933,9 @@ const mesh mesh_Box24 = { .vertices = mesh_Box24_vertices, .n_faces = 44, .faces = mesh_Box24_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_8), - reinterpret_cast(&mesh_normals_8), - reinterpret_cast(&mesh_texture_coords_8), - nullptr, - } + .material_list = &mesh_material_list_8, + .normals = &mesh_normals_8, + .texture_coords = &mesh_texture_coords_8, }; const mesh_material_list mesh_material_list_8 = { @@ -12110,13 +12090,9 @@ const mesh mesh_Box25 = { .vertices = mesh_Box25_vertices, .n_faces = 136, .faces = mesh_Box25_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_9), - reinterpret_cast(&mesh_normals_9), - reinterpret_cast(&mesh_texture_coords_9), - nullptr, - } + .material_list = &mesh_material_list_9, + .normals = &mesh_normals_9, + .texture_coords = &mesh_texture_coords_9, }; const mesh_material_list mesh_material_list_9 = { @@ -12499,13 +12475,9 @@ const mesh mesh_Box26 = { .vertices = mesh_Box26_vertices, .n_faces = 176, .faces = mesh_Box26_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_10), - reinterpret_cast(&mesh_normals_10), - reinterpret_cast(&mesh_texture_coords_10), - nullptr, - } + .material_list = &mesh_material_list_10, + .normals = &mesh_normals_10, + .texture_coords = &mesh_texture_coords_10, }; const mesh_material_list mesh_material_list_10 = { @@ -12938,13 +12910,9 @@ const mesh mesh_Box27 = { .vertices = mesh_Box27_vertices, .n_faces = 136, .faces = mesh_Box27_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_11), - reinterpret_cast(&mesh_normals_11), - reinterpret_cast(&mesh_texture_coords_11), - nullptr, - } + .material_list = &mesh_material_list_11, + .normals = &mesh_normals_11, + .texture_coords = &mesh_texture_coords_11, }; const mesh_material_list mesh_material_list_11 = { @@ -13327,13 +13295,9 @@ const mesh mesh_Cylinder03 = { .vertices = mesh_Cylinder03_vertices, .n_faces = 16, .faces = mesh_Cylinder03_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_12), - reinterpret_cast(&mesh_normals_12), - reinterpret_cast(&mesh_texture_coords_12), - nullptr, - } + .material_list = &mesh_material_list_12, + .normals = &mesh_normals_12, + .texture_coords = &mesh_texture_coords_12, }; const mesh_material_list mesh_material_list_12 = { @@ -13407,13 +13371,9 @@ const mesh mesh_Cone03 = { .vertices = mesh_Cone03_vertices, .n_faces = 32, .faces = mesh_Cone03_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_13), - reinterpret_cast(&mesh_normals_13), - reinterpret_cast(&mesh_texture_coords_13), - nullptr, - } + .material_list = &mesh_material_list_13, + .normals = &mesh_normals_13, + .texture_coords = &mesh_texture_coords_13, }; const mesh_material_list mesh_material_list_13 = { @@ -13510,13 +13470,9 @@ const mesh mesh_Cylinder01 = { .vertices = mesh_Cylinder01_vertices, .n_faces = 174, .faces = mesh_Cylinder01_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_14), - reinterpret_cast(&mesh_normals_14), - reinterpret_cast(&mesh_texture_coords_14), - nullptr, - } + .material_list = &mesh_material_list_14, + .normals = &mesh_normals_14, + .texture_coords = &mesh_texture_coords_14, }; const mesh_material_list mesh_material_list_14 = { @@ -13976,13 +13932,9 @@ const mesh mesh_Box01 = { .vertices = mesh_Box01_vertices, .n_faces = 8, .faces = mesh_Box01_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_15), - reinterpret_cast(&mesh_normals_15), - reinterpret_cast(&mesh_texture_coords_15), - nullptr, - } + .material_list = &mesh_material_list_15, + .normals = &mesh_normals_15, + .texture_coords = &mesh_texture_coords_15, }; const mesh_material_list mesh_material_list_15 = { @@ -14054,13 +14006,9 @@ const mesh mesh_Box28 = { .vertices = mesh_Box28_vertices, .n_faces = 8, .faces = mesh_Box28_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_16), - reinterpret_cast(&mesh_normals_16), - reinterpret_cast(&mesh_texture_coords_16), - nullptr, - } + .material_list = &mesh_material_list_16, + .normals = &mesh_normals_16, + .texture_coords = &mesh_texture_coords_16, }; const mesh_material_list mesh_material_list_16 = { @@ -14132,13 +14080,9 @@ const mesh mesh_Box03 = { .vertices = mesh_Box03_vertices, .n_faces = 10, .faces = mesh_Box03_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_17), - reinterpret_cast(&mesh_normals_17), - reinterpret_cast(&mesh_texture_coords_17), - nullptr, - } + .material_list = &mesh_material_list_17, + .normals = &mesh_normals_17, + .texture_coords = &mesh_texture_coords_17, }; const mesh_material_list mesh_material_list_17 = { @@ -14201,13 +14145,9 @@ const mesh mesh_roof = { .vertices = mesh_roof_vertices, .n_faces = 4, .faces = mesh_roof_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_18), - reinterpret_cast(&mesh_normals_18), - reinterpret_cast(&mesh_texture_coords_18), - nullptr, - } + .material_list = &mesh_material_list_18, + .normals = &mesh_normals_18, + .texture_coords = &mesh_texture_coords_18, }; const mesh_material_list mesh_material_list_18 = { @@ -14268,13 +14208,9 @@ const mesh mesh_walkway = { .vertices = mesh_walkway_vertices, .n_faces = 38, .faces = mesh_walkway_faces, - - .objects = { - reinterpret_cast(&mesh_material_list_19), - reinterpret_cast(&mesh_normals_19), - reinterpret_cast(&mesh_texture_coords_19), - nullptr, - } + .material_list = &mesh_material_list_19, + .normals = &mesh_normals_19, + .texture_coords = &mesh_texture_coords_19, }; const mesh_material_list mesh_material_list_19 = { @@ -14969,4 +14905,33 @@ const animation_key animation_key_39 = { }, }; +const data_object * castle_objects[] = { + reinterpret_cast(&header_0), + reinterpret_cast(&material_x3ds_mat_castlestone), + reinterpret_cast(&material_x3ds_mat_Material__3), + reinterpret_cast(&material_x3ds_mat_shingle), + reinterpret_cast(&material_x3ds_mat_Material__8), + reinterpret_cast(&frame_x3ds_Box08), + reinterpret_cast(&frame_x3ds_Box09), + reinterpret_cast(&frame_x3ds_Box02), + reinterpret_cast(&frame_x3ds_Cone02), + reinterpret_cast(&frame_x3ds_Cylinder02), + reinterpret_cast(&frame_x3ds_Box21), + reinterpret_cast(&frame_x3ds_Box22), + reinterpret_cast(&frame_x3ds_Box23), + reinterpret_cast(&frame_x3ds_Box24), + reinterpret_cast(&frame_x3ds_Box25), + reinterpret_cast(&frame_x3ds_Box26), + reinterpret_cast(&frame_x3ds_Box27), + reinterpret_cast(&frame_x3ds_Cylinder03), + reinterpret_cast(&frame_x3ds_Cone03), + reinterpret_cast(&frame_x3ds_Cylinder01), + reinterpret_cast(&frame_x3ds_Box01), + reinterpret_cast(&frame_x3ds_Box28), + reinterpret_cast(&frame_x3ds_Box03), + reinterpret_cast(&frame_x3ds_roof), + reinterpret_cast(&frame_x3ds_walkway), + reinterpret_cast(&animation_set_x3ds_animset_0), +}; + diff --git a/model/castle/oldbric.data b/model/castle/oldbric.data new file mode 100644 index 0000000..4a47755 --- /dev/null +++ b/model/castle/oldbric.data @@ -0,0 +1,206 @@ + -RďovN ϼnk̛oOọMo.NnϼrUmݮq -MĮmm,ϼϼϼ0μ2мR22. ϼϼRͰRo2ͰrrsrՓ101͏0mϼ0mQ͎M룎ϼϼ-  0͒ϼϼ룪įϼ죫ϼnNqϼ-Mn-nnK +zzj +zrr.z +o邌hrʂ +z + + + Mm,1ͫ . ̛Iznϼ n) O͛JKHrz&jzɂɂ +*k +kk* +Kk +hrkzrճݳݒUvUvU4qՑTtݵ3SQ1͏͎100ͳ0͑μ03t//0ıqQtݵN Ȃjz1N1Nk ݑP0ĮPPխμĎM njȂzzɂ-JKz*M-QMjJj˛QP͎PPͭμ˛ L,J*zJzIzFjr%bfrfj ((rH ejrz (mμ ʛ 죪jLiI˛ *j&jKGrͣJzGj&jm˛PM 죫M 뛋˛˛ +&jGr̛KNgrGj*brrfjrr%bFjzbzYQ%bYrz*zjzFj)rz)rr zrfjEjYYbrJJ%b%bfjFjjJJfjYFjQYYbYFjFjfj z%br&bzEjfjzz%brEjY%b%bQrbr̛N˛Jzr )r%bFjFjzbzbzfj%bbbFjrEjbQQ%bzY%b%br EjY)Fjr)zjr%bzrJ)JI̛z) )zrz j ̛zrIfj)zJzJJj j˛)z Fjz EjzfjzJJz)j r)rfjrrzj jJzr)zfjfjrfjJz rrrzj˛j 웋jIz)Jr)r%brFj N)n)zI̛I ZzEbIzr)gjQzIfjr&bgj&b*kz +j )r +rz*j EbjfjEbgjj&br%b%ZrjZzgj +{zrkzgj)rJ훌jzzδ0-μP000ϼīz+ɂl̛ϼ̛ + +lōμμMLμN̛̛+zɂϼ zzɂrEbfjEbjFbbjgjbfbEb%bjrfjrѼѼk)N򼐴͛- Ifbnz&brFbz-IIIr***pzkrrzS/SͰ fjkFj LμʼnpͲձ0ūgr&jgrr0̛QN K˛LʓPl(ʛμ0qįmo/oͣMnͣNN +̣Ȋ .*-J̣̣ 芫̣̣I)jjͫN.JNN.oṆ̣̣ˣ̣ 쫫쫫Er)EriIi(m,,L ,mMmm00PjiIiˣ)룊L,Įm0đP,NoO o.̫̣Nͫ. ̣ -- jn 쫏1-.N.N.̣* ̣ͫ*ͫȊJ MȂ* jˣ ,,M,쫫- ,mm qˣL(Iezii - m MIMM)(Ƃ(iH 룊H1MĎMrՎQMqկQ̮ĎQݎrMMMmՎmMmm1Įm,ˣˣ( MmMm,Mč̮m-̣-̣10-̫ 쫫 R1͏Ṇ̣NN0˫ˣM-M͋J)z.-̣ȂnjM,,Īm룪0ͲʣʣPՍqͲ0PPmqݍpPݮPݮ(Lmm,MP,L̍P0P/0PՑPqqPm̮Ď̮ 쫫ˣ̣J Mn nծ,Ď0q00,Ď1nqm- 1/OkKͫ. +*kͫK*̣JO.N .. ͛J +OOoRs N -˛oмo-д̫ ̫jJjJ)fz犆zNJj)˛I,i룫--˛ 웫Mn웎Mϴ (){(˛i (I˓L ,Fjkrk2Ŵo͛ѼS -)NN2R J-ͣK/KͣoKoJ.Đ̣ooNoN.̣웎M 1ŮN11͎1͊M,mϼPϼqĎϼ ̣J 쫯kj-JN) 0ͯnIJQU1r4m,Mm,L mm00ՑP0̮M0q0P0Pղ0͎1Į,,ĶϼqQM,qՒQq0͑qPĒuUuݮPPՑ0PծT0͒qݮŎĒծQͮn-MMUϼϼQμ4 UPP͍͑40ͱ,P P4ݑձqőqPխČ̍͑Tu33Tt33,0μqծ0q0/,l μ ݆zμĮT TtpձttTSS3qt4SĨrzzzFjYFjb*z)zrrzkrz̛zz*JJzzzzzzz*Jz) JjkJ )zrrrr)zrrz Jrgjrgj&brgjzrrzzzJJ.JYJfjkJJr) z*JjkJk)Jjz)r FjzfjrrJrrr z *zj J*rzzz* r zzzkz J *Jgjrgjz*JJ FjJ&bgjzgjzr̛zz*JJzJzz̛zr*Fjr̛z) z)r*zz)rgj* rrJkr ̛jzJFjz훬Jz&bFjz)zz̛̛rz)Jk* zJ-z.*zkrJrkrzjj zz)r)̛rnno ̛N웏)zJ̛Nj nj-nzzj˛)J ̛rzFjzIJ̛z)̛- zjrzϴ1-Jz NՏįRn1R1VrRůzfjIr--JM-RN1ŗճмů-NмM˛𼎴*̛z)̛j̛fj˛%bJN-j ˛JNnмr̛-)̛j J̛-zzjмNj -jмnūŏ RnQͯ웯̛I̛RnjN-jj)jկRjJIrϴ1м-M1R jn̛jJJj) )JJ)̛ )̛)J --)J M мn Nмnnn-11мn˛)M웫jI - ˛˛̛˛˛˛̛-- --˛˛̛̛̛ - n- -M-̛˛̛- Nnnм- nn )nnN-мNn - M NjN)JjN NnM мn𼯴 - nn n-MMN nNN MM--nn n̛ n𼏴̛-nϼ--̛ n1ϼ1nůRRrNn мnR-MRnJk N웫J))Jr { ̛̓n훏jk*J̓Nj񼏬NNN ̓̓. ддnnn дNn .NN.дՏrn-̓-д1œN˓ r1 .̓N̓n1ŏ2д21RR-6RVs NnNN̓N̓NN дNдN .-N񼯴д1RůN1ŏnдn1nN-N.д--̓ NoдRsд1œ1œͳRœдsдrдRݰд1œRr͏1ůr͓RRR2rճVVVrVR͗znnկQn,,MϼnQͯϼ-n 뛪 ˛죎n -ϴmϼ,˓ -˛ Ŏϼ ˛,MI,(j-rݎnˣ--1Mn1կ̯į MįMϼQQi j죯-ˣMI- M)j -ϼ˛jIm ˛j)i˛))IIIi˛ ϼM,)˓뛪z뛊˛i (MnŎnm0,1͎˛jnjˣ ˣ qnMM1 ˣ ˣ-Mn-1nˣMMn1n - jM-̣M -쫒jnQկRխIJPݑTqݮtpTSSt2 ,/PpPMq,qݱpݱPpݐ/ԐOݱOOݱt3SttSstݐPձp2Ր/ͱݱձso3O3t33Opőݐղݐ/͐p3M0q̎ 0qPppppTPP3pmQQqP0 PQT3ppP/TTptpO3pp/ݍ3/pPűLծtp3lOPSTPp͑qTݑpݑP͉L˛ʣiHi I)IM,n ˣjnˣ쫫J k* +Ȃ./ͣp̣̣zjnͯ1 +OO11ͧȂ.n.ďʹ12ͰĔ.Sմss1ͳ1R͓ݳRճrQrrՒݲݒQݑPPS23ՔsݴsݗVvwSRRsݰ͏1VU5u00qծ5Qr1rq͒qQՒݯįqrͯ͒ݳrՒq0q0ͲqrQQ0QqկRR11RR11RՓ2ՓݰįSRMqr4P444PՑݑqTPq4P0q0UqՑ4U4quTttuuݲ4uqݲTTqՑՕuݑquT4TTu4u4TQ4TUuTTuQuu44TuTT4TTu4Tt4uuTT3ݕuTTt3J1իn̯1իĊįMMjI˳˫,˫,inṇ--nMN-N ˫̫MMIIiMn-ji((MMĮ (e ˳ƒ (ei((( H(iMm볉I(iiH璉zƒeiH-M, n -MMM-ˣm˛M (Iiˣ˛ ˣ M nϼNμ MmMˣLϼqIH(eH(ii뫥hʫ곉 hʫʫʫm룍Lʣ, 'H(Kꫭĭ+ h LLLJJj˳̳̳ )̫)J Ȋ))Fz I˳˳EzEzf˳f˳ifzjIfEzeNJjM M)I쫫-ˣˣ nM-죯죮nMniǂ iNJIiz,QՎM0͎m00ͦ˳((,ezezHeHDzi ʫLl+ʫ +H (ʫDz +hʫLHƊhHI(꣪iʣh ꫩč0L0ͭ/+0͌PՈ'h'' LHʣL/ͭ݌KͼͭqqmP0Pͮ0PͲQݒ00μ0ĮpTqP͑qq0Į0ŮĎ,Į0i뫊mˣIˣI쫊 nM- 뫫̫̫nNՎ-- 01QqՒݳݲݎ͎Qղ5u1M-ˣˣ- 1͊ nzǂqq0qqQݮqݍĒ0MQ,mMIiLM,M뫪MQqmQ̊IQMmm,-, ,ˣ iI 0QI,LzM˛n룊Qū˛Iճ𼊛I(zz((jm,qMN0q0M듮-NJj˫ˣI((zǂezI,,i,HmˣiHjfzzǂǂJ̣ 肊 i, ĎrmϼM,m,̩ꫪĉ, H lč0̭mݑpղ Ƃʣ qՒi룊(mIJuͪμPNNẓnjN1ůorU1r1œijݒrM̛n훬̛o . мR R-1nм-Q-i-njM mϼQu0ϼϼՖQuz) -M-M1ϴ ˓)Qݺrͳ55z NĊr嫳˳)J1-I˳˳˳ m- nMmmĎ -rMĒNnn̯̒̎̎ݎ̎0100qQݑH(ƒlԩ+ ʳl+Kč̭ɳɳO껌ԭ/,LĮԭP/Oݐ/݌+/KĬ+*ɳKQQrr5Q00qqqqݲQ̮̑ijqqUUUPL Qq̮čP̩ԭKʫʫLloթɫ̬.O.լKլkČĉ ꫭČČ./pOOo +K +ɫՌJլĐp/p,pqP̍4P0M0ݮpPqPl݌o+ܰO̭Ԭܑ3+3,ĎĮ10ݍPlĎLQݒQqݯIIQ1PPݎiPlOl/O/ppO0q/ݱPl2/ḽ/PݱܐtԭPO̭ĮQPqݒ0uq0UՍPpݑ0Uqղݑݑ.oOO2t3S2/OݐsSNooOձSSSttTtݰձݐtS322Qݑݲ40ղ4UuQP0ՑPݲqݲ0խĶuuu4U440L+0Lm+PݑlLKp݌p+lĭčplO//lopOݐ/Pݭ̩L/Ս͌꫌KOԭČİpKKklT4qqU4qՑ/PՑTP0p3UuT444U43PձPTutPlĬ/ST/L3ppSoSpݰOݑtttT7Ss22s2.q0/4/Pt3T3p/Ք3ݱ3t3T3S3ts3Spձpݭ/OT2WtSSS2S2͵3tSS/3݌/ɣ3Spյ͵33/ͰRRwvw63t6Ss55wVsvSs2.23/Ol/ՍStpt33p3Pqpݑ3P4Q/͔ݭPխ737//Ͳݑ/QqT0U̲Puum,V1͎01rճ1͋-̛ϼϼ--M˛м-nQ1ϼNQn1͊)j)jnϼ ϼ훫N 웫 ̛ ..̓̓ n2 JnNn ̛웋- .- NoNnN nnonQ11ͯRϼ1ݯ n nM˛j-jz)мrϼqQ͎-rмQ-ϼj̛կկ M 1œճճ) NnN n NмдNN nNNдNnR1RrrrrϼRRR2дoдд1R1ՓϴQ̓ϴ-дͯR11Ŏ-M˓̓M--ϴϴ웯д-NnrQU毴n1ů1nQM1-rv ˓˓ϴnMqQyUqŒvuuQUU4Qm˓8Mj ޮYY4UՖyU4u4揬˓)ϴ𼏬 ݳ-nϴϴQŎrQn0VͷnUvQųկ nnϴr͎ϴn𼮴,4QQδ4Q4YUYUuuuuUUUUՒ͒rͲ1Q44UUuUUY44v1v1rQͷv11Rrկ1QrՏݯrQ͓ճnrՎQrՓQͯ5QRRQ1ϼr1įnQ͏1мRм1ͳмR1Rrrϼnrr51Q͏ϼݒVQrՎмUķrNnмv1RrR1QQQrvQͳVrճ 죏r1rrճ1-ݷNrķQMϼϼQͯ-M M- -м1nnM5v5Z555U5v5Q11͎ϼ5rм01Nnм5Rͳ1UrмįnUvݯ- ݯrͫrn웯Nϼммr1мnмŗݒQ1rvUR͓nůN1ů N1ϼ˛ мϼnvVVMMVrVUv95ՒnN-n15 -Q11R9Y1͒1ͳ1ͳn51͒շ5U5UUvݖ1vϼ9UqQ1QͲ5U55ՒՒRrՖUu5Uv8UUU49vݒճ1urUr1Q5rU8TUuu43ϼQ1UTXͲݶTy83T7WpՔxWt2s2SSRSt33oTOo2.o/oN.N.91Ͳ01ͮݑuPݲݲP͑0/Yzq59v54P͒0ݶtT3.NoݰݏݰݏݐtStsTTttRs2Ss7stSpյp3ppՔ3SSP2RSs.ՏoOőPĭĭ͐qՕTQ0ݕůqųvVQͳݲ殼5qՒlͮݮuUUvmUM0NհON2RRrR1OopݱR11rRR11S2soRSOpݲTmTPqݖqͲIJ4quOpݑuuTu4qݑu384455UqUT4ttvQU̒uquQqqquuXX43SStsR2Rs6sssR4U4ݒQղqղtU4uTuu4u34T3s3sstt3633S662sSS3S2SStOp//Pp2stSStsS3t3ST3PpPpݑP/ppݭ+/lPՍıTt33ݱ͕Pt3pttTssstT33tss6ss332tpO3SS3t3T3S33SSt3T3TtTTttTtTtt33t..O. ̣kм2oOOм.2No.oͣ* NRoSsմݔ2мo.мİмď Nsʹ м.2s2ͰSo sŏN*̛.Rs.N.İмR.м̛oNмNo.̛No ̣Nos2ͰмsհRRoм2oN.22 kk N. 2RoN O kFr FjJoơ* ɂ +Ȃagrgrk*.ḳ..J. ṆKo kN.ͣo.NN.o Ō.N nϼū-мrϼrį̛ QмQͯ1ͫ죫 1͏мj J-Ďijųݯį11rQĒ-r55ݳݓr511Q1rœvݗ5QQrR͗r1ͳݳrճ叴-Q1죋ϼм̛InMINjjм1ͯR )м QŎN Mϼ M-N--MůR1Q1͎мnмQ͏rMnN̛ мм1ŏмRvݷQVVQ͓1ͳ11ݓշQrճݓQϼм-ϼ-мϼ-N 5vvVvVM,Q̎0q0ĎNˣ-̯N 0͒Q0mqݪqq0Ւ̯,M1 MM jnjM.N .Nn Nn2͏2Ͱ22.мo12QR1̣̏MŰмoďŏ.o ͏ͫmˣ ̮Mm, nM MM1ď1ͯr1͏nmMͮծ̎į̯įr0rrՏͰď--1orՏ.ďм.orso.-j̣Ṇ oN..N nŏ2͏RRհsSмRrsR͏мs2м12ss2͓RՏ.Ṇ1͓ ̣MRnմݓ5rVv o NN-ŏon-NNvRVU揬 Qr NnNм𴏴̛1˛ϴjjj111nQQv5쫳勛1Պr݋1 MQQճQͳUrݯůMnmĒQ̮Ē͎̲̍ݒqQՒPQ0͒q-ϼn rMQͮϼϴqϼ.,0ϴδMm˛ݶXuqͶYuuTμμqqLPŮݲqō,Q5rU1Œrrr00ͲQ͒1Rsկ1͓rR1Ͱ1s2Ͱ2͏1įϼmNn NnmqQqݮ0qTqݍq/utqIJ-Qղnͯ1ղ MĒPqĒݑݮ00..R͐6SȐ.o2ͬ.. .ĔSմTՔݱ6t吼SSʹt̓oݰ6n쫏ˣrN 1Qnn,0ՎN ̣̏.ooRssR1Տ-Rnrݯē12n1rݳUuU4uTuTt4qݲUU40rݒTtu4TtT744ՖvTuvu7StuuXxuuQݲU44uu43tt33tTT33SSt4444TS3tttttt77tstsStxu4WX4TQ͒4T4PqμM04Pݕ00U殼PuQq0PĮP͎Ųq0qՍμϼ,M,M0PͲ0QU1MϼUݒ0Quuݲݶμ0Q0͑ղ0Ů,0PmuuݑuqՑ0Pp͍0n) 11m˛jMnImM 1q4Պ̛MN n- -ϼr584ϼuMQʛ,μqμq3qT8x4XT룑m4XĕݱS3t3t3Tq4qPLQ đ3uTtuT4mˣ54͒ݒU5q04r4qՖUϼݯtxXuTTxx83Qݮ0uUů1MQr1u85uݷ59uY8ՒճUXU8X7777Xt884t3uϼrrQͳݲQrղqQ55UU4Uv400TTqqݮ4ݶTt̎m,mj̣쫫 Qm͊ʣn 쫫뫫̣̣* ̣* ͣOo*kȂk NNn +..ʣm LmˣL,L,,+ͮM jįjȂN銋İM-rݫ,VRRN-+*KKk** J* +kj.ḳJ 쫊̣M쫫-MĎˣMˣMmn-Įˣ,č뫬kN ̣.--.M-Njď 쫯nNĮ1m-ͮqQ卼đ0PՒ0P00q3uPPđPPmL4IJ0Ų0μlμm ˛L뛍,q,,QmmMm,,, ˛jM,4uqTuݕղp捴Tđ4qղuP͑ծϼL0ŒPŎ掬4Qqϴ0RQmݒ͒,1Ŏ,ϼ00μM,M뛎ϼμ1P͑μP4Lq04PͲղPPͮμ,,q͒˓mޒ ݎ͒4掬0ݲqμϼmM,ݑ34uqμPͮμqݍqμIMM MMMnˣ ,-MMM Mn nMnˣˣ---1rկ-1ͳr11-1M IJrQ0ͯij1  Ē4rՒrϼĎMMˣM -ˣMMį M-Įį111q--1n- n M 죯-Mnnjˣn ĎjiMMj(M-Qnݎ -ˣˣMįĎn1nM ˣˣjˣ nˣ--MI,룎mnM n10͒͒1QrճQ0ͯ0mμ01ϼŎQ00pPQͲ0P͍PͱTtpqμ40ݲݑݔ4QݳՒղՒղݑ4UQ͒0ͯMQ04ݑ0p4tμm3Tݲ7XTյݙݕ0,0ͫ0͎n˛J ˛-jjĊIm ))zjIInϼQQ-m/Ůμμŭ˛μ)i, P/műmݮqmnr r,ϼnϼ1ųQULUPݲձPμ4u44tT歴mčĒqmmmMquTˣ44qLMMĎ0PqPqݮqL ,ʣm뫪L뫮ݍmĮ,,mLH4qՑݲ0ՒT̲͒PՑqTݍi,͎Mm MMˣu0M00m宼 , Mͮmq̍mm,,m M,0ͲQՑ0P0MĪ,Mm,m,Ď,ĎL,mM mM, ,M,ĮĒݍqqQծĎqmʣL,mL,PMM宼MP,Q0厼0L-T0P0ՑP̍TTPtTTPPղqPqq4Q4q00TT0P/ՑPղ0ղՑ͑4uuTuuQղQղݑݲ4q4uu40TLqPMQQծQՑݑݒU0Ͳ44, ,,mMmM,0QUUu4Yy4ݑqݑݑ4ݲ0qumTLq0uĖ0UU4444Q4uU nN . 1Ͱ2Ͱ̛죋N ̣NoƠRĒ2N1̯n. .2 R-į-n͏̣.n.ммм2N-2͏oRͰ2͏мݰoN o oN-叼ď2ē͓rՓr1ͳĒR̒厼į1Rnru5UUUͳ4U40M M,UͯĎ̳qݎĮQQij5U̯QՎ1̒qݒݮqՎQ,ĎĎ͎mmqqղ,nmq0Pm004uqTuTT4TU4Tđ44u444444qݑqղQYqu4zUQYvuՖ04qղQͲݒղݲuU4նݚuU0P4ͮđqqqqݲ4ݎ0P0͑PqqՑ0qPՑT44ݲݲ4T0qݲ4QuU0Uvy5Y5Uv54u8U8ݒUu8Uzղqz880ŕV22N ̛Rs6sN -ϼnōPϼLQϼō*rkkn RoN1--,00L4L( q KqqP͑Սm/͑ՑpծmμQ͎nQnỤ Pͱ/μqŲKPqՑ0QUQēMrՊ0ͳ导sݯ̯-Nˣ̫N*I,ǂ z,(LpݑpՐ-Mˣzṇͯi(h$jdr̔liƂttx꣩+iL/3+ݍ(M(rU(QժQrTSPpձt6tSIJu4pծQ,QժQuU0Tu4TTuU40TPͶ4M,UY0QMqPݲyTyUuUU8XXxX88Y8qՒrU41ՒU4u8yyyT4, Ē qL̕Tuq0͒M ݲ0Ւ0P4,Į4Puq4v͖QU1vQTq4vUTyqQqݖQշv4ݗvYyu0ՖݲqՍPՉͼ0ih,moխWR悥zlYQժǂEri-ˣ (q PˣU8mV62Wo2tPl3/7u0q孼ݑM4pݱP(,,,j˫ (mʣ0ĒQ1UUQծĎrXxXq̎)rȊMm̫-R778xy7W7W73uU8厼vQyyU嫫r1ի n-1n̯ĎĎQUQiuX4i/-LnnM͑3Txp3xWHQժݲ0uQ44XyX4XXyy0QUu0qq48u8XTTu44yXuX8y8484ݶ74u4XXX844uMQu0Į08u7P͑44T8Tq룲,8ݙq qՍPXPX7XT0ŕuT88qͶXXX408u8TUTX7Xyy8Xy84T4uUUXuyuyttt33TS3ttt3TT3ttt3S33tSPT33tStݑSttt77t3T30t0ձT3PTpp333SS3TTuTt43t3t3t3TpSTS33Stt3TttttS33S33Sw666sssssstS33tPuP4čMt3su0mݮqT04sssRRRssSsRRRRRsSsssSsssssRs2S3ݱݲݲUTtuqղPvݶ0ͲTTq44T4qݲppQ44qmP33tTSt3Tttttt3333ss̱̱t33tS6QPqqqݑqPqݲ0qݱPձTTt4PTum4t33T3ݵ6W3tSSssSxxWSWWsttuTTTSTT44T44T333STtttU43TTuuTuutTtTsttsutt3t宼5UͲQvvvsS33tTqqQՖUuqU5vUuTttutts3ttu7st67qղQUY4ݒݲus22ݱݖݲݑqնu4ͮ1ĪM芎ݏrr- Nv Rj0Պmi njĮm1Mē5n5rݎ-N1ճ ̫ 1ծ ) -MĎͭ37殼OxT Ē0͑կēn0Q0//P͹7pđݘxtqՎMMMMmnį) ˣ 1Տ- -n̯,MiMM 0n ̫ˣn̫M- ˣ--nqծP M0q0͍7t3m,Pxj̋1vQն0ͫnjݮML L3xĶq777t0͕Pʣ,0ݑq͑ݮ4u4uQqu0ͮ44MQ044mqquUϼX84u4UU8uՖQQuYU4rݒUՖ5u5yyYQժ)Urv,I v nQ͒1n1իQQrrݳ55rRRr155vQ1ݖ5zzvr1R55ݓ555V5vvv900,ϼM ůMr-rMMM˛,,M룊˛ ˛˛̛죎n1n̛ ssՏk.n-n N.z̛ +,,M-I1PͲϼ殼QͳݫMU ƯN ̛-J*ɂ* .k Jj rհ1O.n-ŰRͯo v1мv5o.̛kJNݳ--5Uyx7tuU7μݍpխRk 2-1͏rͣ.2Ͱs̛ijݳRj1UU04ݑmյμ0͍qղՑP+0TT0ղIJq00m̍ͲQq4QQՍ0͍ݲPͮLPI4宼qLqQLQ0ͲݒqծVUv4Qݳ͒1Y9zyzUݒQr004q9YUUyyݲP8qXXuݑqqՑQQՎqμ0M͕33qq44ݕu44140Q4QϼݚYuYuYU4Uuq͒Օ4U8y8y884ݱp0PTTtSTtTSSμIJ0P00ĖuqՖ4TP3p00Ͳq0ͲSSt76ݐ22SSspՑpt3ttttt3pՑ3Tpձ9uUUvvu95UVVUvVVvu4T44Ttuvvu4vv4U5uuu44UUUUUTt3SSS3tTt3utTt3uT4uO/P/43ݑPP8Wt77tTT44444tXX74Tp/XqݱqqݕT4tTuXT8T0Ւqq0PTuTqնqTuu4UT4u4u4P/pݑptT33pP/͑/337pյST3X774XTT3pՑݑձ7WWtx6qqղqTTT3xxxW3pt77X8t343T3TtXt33tP3ݵxTxX7t3t877PuݕqݑPݲPq3xݕ44uT0͑őtQղݲr4r4Uݳ8Xu8XuޑUUݖUYUUy8yy8y4UUv98y95rݷնyYYyyyU85511Vr5UU55Y8v9vv0qrQrݶUqճu4UշY88XuyyݳQ45Y4yuvUUXu4uvvXYy0(0mmĮ(ʣ̍mLm HLmʣI iM mˣ,PMi L룊ʣLč,,̎P( 룊ˣ ˣ ,,mʣIim i,(,ˣ ,ĮPqƂ((Įm0LIm,im ˣqmʣ m L̮đݮ0qQ0͍Lm,qLm,ݲLĮMMĮ0ͮĮ000PQPq0P0ՎĮQqݮ͍qq00QQPqݲP0qQ ʫhɫ+ɫ뫫-L,Į̬ɳ +k +*KĩH,ʫhj -̣͎1ծĶTMM-M˳˫iNJNJƊ +++ʫ+,ʳ( ,̫,,-n 쫫 +*)kIeDzjǂK邌*͛ +͛邫ꂌzJ/͍꣕+ ++ +ɣŊgɫggɫİ̐ լ̍qݎlLN̫jԌL/݌q˳ԯQ1݌HՌDz, OoOhhh ˛jJ0͍q˛,̮̮̉e,Ȋݰ r sċ2ͣ ͣIJqՑݍ PqPQղqđݍP40ʣq(Qq(PP00qPqPծqqՑݑq0q宼00ͮqPQ0͎PPq0000QQQP0qqqՑq0͑0QղݒݲMLPqqqqQ00P0͍qՍݑ0͑0͍qmQqQQQqՑ0qqղqղQՑݲL0,00P 0 PqPՑݑ0qPqqPՒݲݲqղݑ卼Q0ͲQՑqPՒݑQPՑTTuqqTT4TU4T4u44rn5rݎMM-,mmQծmQm̮n-MM-nn nnՎQ00ՑnqMQ0č00ˣʣĪnϼ˛Ej,r0͎(Ċ0P0ծĪʛQqqݑ0P QQ0˛ūϼjIįn M͎nmMmPqPn0mղݲn̎1nmrQճQՎM,đݒPqMmPPPP000̒ˣq0ծͮ0ʣMqqϼ0ĎįQˣq0͍0 ,ϼϼůϼ0ͲݲݎMiM( M)z )I1ͫ&jz%j*J%jzFrgr邬))ǂII Frfz*j芫jȂ肧z kkkz jJ)k/zKͣhrͣKrzkgrΣ +ljʂhrhr zzHrz'jhrzʂɂGr&jGrzj&rgzgz)zz) &j +gzKͣz k-ͣ z)J̫ kJ̫Ȃ ̫ +Ȋ Ȃ芧Ȋ芇Ȋ Ȋ* +o +*..̫J钇JffrEz)g%zfȊ%rfz))jfzNJEzjj˫FzzNJIFzˣj(볫뫪ierfEz(eiƊƊDzƊƊDzhHƊgzi銰̫̣a&r&rFr**JJ쫬 ˣjǂ fz)aFrcYjJkFrrzk*kJ̫j̣ ẓ )IErǂ%rz( 뫆zzǂˣ犊ʣ((Hˣ(ezez ezǂIǂI z(i炊(Dr$rzƂʣi뫉Hii jz ̣*Ȃ +JJ-ṆN-ȂĊ z -jizFrgz)芨)ȂJgzfzgza&rfzgzj)芧 Ȃ)IiIj Ij) , M룪ʣʣʣʣiiƂȂǂMm ),M̉ǂzƂ-̯̬Ȋ̫Ȋ-1QՎQ Jǂ芆zǂǂNjīˣ 1ˣ1ǂMz-ͫ1MIϼMǂˣǂˣ1ϼ(IIfzJzi)j芧(NJǂfz ȊfzǂjJjJzǂǂi˛j肫ErzErzIErzEjz)ǂIMMmM )r0ϼŮ肪z)qŒrmŮQͮm, I,,˛rII, ˓˛˛(jՒn,q(Ij(˛Q0jjĮϼϼ˛˛˛z{,)ϼ˓IM,˛˛뛊)ȊKkkioĈ.)*銐Ȃ* gzgr NfẓoJjȊg Fz.jnN gȊḟ̯zjjjn̛NnJ̣) zJ o.oJ .o * ͫ Ȋͳk ̫ Mm˛ˣj-Ȋ̫j*̧̧%z f蒋jII)nI(m-jijiMi iM(L MM Mz NJzčMm,mLμLmǂ炮ilmj,I˛Q LMqծ)QՊ)Q -jI(mμML+lmLm , I(NJMͮ(NJINJmmݱ/ݍݍpt3t3t孼/ͭđݐppխpձݱPՐO/OpptS3S3pp3S33TTtSSt3T33T3333//pձݑݱݐݑݱpݐݑpՐpO/PpՐSpձݱTPOՐՐݐݑpͱݱݱpՑST3ttSSTtt3333St3tSSOS3SOTpt33pSSTTSStt333PP̱0uTq3ݍ0ͮ0ͲPՑ00qՑPՕ4T3430Ͳ0T0ͲͲT4宼qqծiIőPͲμI͊ݲϼqmq0Ͳݒn0qݑղݒM0ͲݑPQՑͲUUqnUQݎ3ݲPT̑Įq0ղ0qT3đ3T4/4pqQq卼,ݲTݑݑ0Ē0qղͲݮqQͮjIʛ iMjˣݲqqqՑղݲqQPm0͍ˣˣč, 殼μ4Q4PPͲՍμq0őՑQQ,,mμqμPPőqq͒UQqݒ0ݲ0QݒqݲruTuuuU4Utuuutq0ղQݒq0ݲqݒ34TT33TTμղՕ8q488uQuuQ4uY却掼yuYTuq̳厼qMqM1QQm̮q0quuuqtttuQ˫uupݱtTqݑ3utTTTu40ͮđPq0đ000̕TT4TT4Tu4Qq̕40P̲̒ݲݲ0IJ0,ݮQQrm̮ͲQՒͮQծ0qծM0qծ00ĒݒQղ3TuuT4uTTuTuutT44uuuuuuTuuu4U4TUTPIJ0̮MQՎqՒ0qr4Qծ0͒Qqqղ0ͲIJ͒q0ͲݲIJmݯ˛̛Jk)- *-*̣̣̣ J銋̣)Jj̣) I芋 -N쫯n-N쫫 -NNoN*oN --Jj)Ȃẓj̣) ̣̣- 죋ˣ)))j )jJJJ)IjI)M((i̫̫ˣˣ i뫊 MĎ̲QݮčML,Ii ,m,M,L000M ̫įĎĮMĎ, ̫ˣMI, ĮĊ 뫲0 뫊mM0ղ劣I mˣ뫫i˫mĊ˫Lz)I ȂȂȊ *)芪*ȊJi),jj*ngz ̫**쫯J Gz*̫mݍKl+lČμ0ͳ01ŏgrGjqRKHjKz+lL+,/LpՌ+OμՑ1k ++0м͛͛N)ǂ*)JṂ̣ kJjnMsQ̫IjMJ ̣zJ*ͣ*̫*)I rkifz)qıĭlK+͉Čl +0qzz*Jrůk +zʣpLOͼʛ ʣl /Ŏr邐rмQ1N&bs,L̒卼00mQծ͎ĎĒݒQݲ0ݎĒ1̲4̎mn, m,0 qݒ00PծčĎMĎm,-̮ĮĮMm nm nĮM mMĮ̎Ď̮̎M Įm, 0M0muQ̒0444qm4M˫˫mM( 0mʣݱ44޲ޮT3TTpPnM,,LmmM m0ݎ̎,ʣmMH犍μT3ݑͲՑ0P0őqPPδδPPJK **lk.-̣ NkkK + rzzJ jN1MĮ,,M L ++++l)뻉ԭƊ+Qϼ n--죎1įnϼĒ1𼍴mqmnn0mi˛ϼi犊ˣmmϼ4ϼϼQM1ll +lL + +ih'HLL LLL'i (QQ11QQrмQмм񼎴ĒՒ0͒ՒRrϼQŎ,+,m,ʣʣʣʛR1ծʓ3q͍4/Ŗ0ĒqμPϼMőμPTPTՍq͍mT3t/mpLEƊDz璅$zezeƊe(ǒEzeNJeǒ$zƊENJHNJ(EƊeƊǒNJ$zƊqrEze((Ɗ璅HƊIƊMĪ,,iMqe@Yrii(arDze(NJi˳(IiƊ(NJ(iʫƊei(E(HNJeqƊƊƊHI(eiƊ(EzeǒEeƊDzEzƊeeeNJHƊi((EzDzǒHIrr$z$zĊƊǒƊeErqNJǒǒƊDzDzƊǒLNJEzeHeJIȊfzj)NJ)ȊFzYfzazb%jYEjY%jbjYfrj%b%j%jEj))INJErIǂ˫,j芊)z(EjEjerejMimiererererb%bEjraYfra%jrY%jrifraYaYaacYacYcYcY"QQBY"QQHQ%j$bfrEjarirzzzriEraBQ"QaiBYBYrri%rarfzFz%z%rM˫̉˫00 DjDjH+ L+炉Ƃ'0m++ ʳʳ M抍(čʣz#j#jƊzz$rY#jYer($rǂjiz(aiaa%zfziAY((NJf(ʣ 뫥zzzNJdzƊfeff璆$z撥$ze볦IreƊƊEzƊƊ璆eƊEzrEzDzeǒEzeeEz$zNJǒ((IiHHƊǒIHIrie$zNJNJAYP璦i$zƊ(aǒ@YEziz Y$zri HaqeEiaaeiarDzqǒǒIƊǒǒIi((NJ(Ɗʫ(( ˳NJ$z(eq%rNJ(iI(NJiiii璪DzDz(NJ璆$zeq$z$z$z璉ʫ,Mč(Iǒ璦(˫ ƊƊ(I˫'˫i,HʳMH 撊̳fgfcaqifz&zFz)%rkaQdzfrKfzȊrǂʣEyzFzFz%%yqeNJzFrzfzL+%rjFrǂz&f(ɣj*-իM,&gG))jīJJ-&-Mjg +ǫ)fԋJkJgKԩ̪ƒ݉iIp 'ʫ 芊-nmQmmhGGLʫ̪*l+ɫĪLHhiLi('zzkoݬďȫȫ ̏.Տ ***k鳬GʳHhkƒEz̐lkk̬ +oɣol*im̦E(lč˻iezigrYj&jcQacQrFrFraBQY@cQ&jcQaFraa"QbQi@YaBQaaFzjj%jBQ@%jji%r!QYzaa@BQajYYjjfzErYaYErfzaErY"Q"IcQI"IcQBQ@Y!QaaBQa@YaBQYFrzjFrHcY@YiiiYijzjbQ8AQ@fzj$jjaajezIjYfr%jBQErbY%rfzzer%ra$jiifzEz$rzaezezizDraaYi$rezzƂaDrzƂƂƂdzƂ'zCr(''ƂDz&ƂƂdzƊDr报dzƂłƂzzjaaYiiY$rj$r$rez$rƂzDrDrezj$rjjErjDriji#r$rDrdzdzDrdzłDzƊzƂ'ziDr#rCrzdzdzdz#rjj#raaaHia0H!QibYiHAYifzi%rEr%rȊzjjzzjijYAQBYziaiiiiƂ Qa$rQ$rj$rijja$jarjDr$rErjerEr QAA@aQDjQerH I IQbzrzʛHʛHDj+djL'HzDj+$bIaQ@ IrzEjerIAIYYEj%jfrbzrzejz%jzafrrIEjziidzDzij#r#rzDrrCrj$r$rjj$j$ria#r$rCr$rjez#riCri"rczYi"raaaCrƂ#rƂezƂj#rCr(Ƃi$jYaAQYEjfra%jAQYajab%jFjfrfr%jFjrrrz&jgrgrz*JErEr$j%jFjFjjbjj$j%jjaFj&jFjzb&j*z +a&jFjgrrz*GJǛ&̋ċJ*Ĥzcrcrjzjzȣ劋czczI̊I ̋ċ̋JF髌ȣ劤r&髄dzzjdrzzłł'J +G'dz#rzziaƂ'zƂłzzK*Klɫ+*kl+hhʫhiʫ Hh'HhƊ*G*FCzGrF抨g"rh助ɣ+ʫhDz'ƊG ʣz'$jerʫ(ezrbzL''HHh#rdzDriIIiH(((((IezƂz(ǂƂǂerfzfzaErNJjEzij(jaIaaI$raYaaaaǂjija$raerz)zzzfrj炪fr%jerai)EraezY()(ezaYezAQˣFrafr%jfrfrzzzFj肆raYbYfrrbYYYbFjzbr +zzrbgjFjgjrrrrfrbzFj%brr)z%jFjYgrJ%j*zFj &b&bFjQYJFjjrYgjj*(Ƃ)ǂizaEzezEraezjǂjǂfr)r) jzjzIǂǂErErezIija)肊Izrfz)$rǂ肧zȂzz%jrzfjz bFjfrrzJzJb&bzzr*rrJkr&bz&bzzFjzJ)Ejrrz*zrkJr%br&b* gjz { {k zz'bHj +zzrbbhr'jhjHrhrz%jzbzjJj邩zlkͣ zz +ͫͫKOno̫+ͫK*N*..˫˳I)(fz)ȊJI#zi'ɳ볉˳ʳHm+̫k))˳ȒJI˳j(I컊ʳ컊˳˻HMĪLhNJDz璦(I(h(ih( H' hhI(r%jiǂz%j&jQOkaa̛̛,rJbgrbrz*(ƊGHhhL+ɣŭhG +hG+ ʣ+m m -nrr +zr*{*{ -˓ +sj +{gbrr +{hCz +&'K +GGK Lm+z#rGHdz+Lhʫ+ 撅犪,L L,抩hmL,ʣl( +l.pݬČ̌խkkKkOO'z'erO/oOʣz.ՌĬ.OoOOGYhaO.N +z*ł(Ƃi0,%riz- ˣǂ(ler(OՅzM jϼ-zFr))Ȃ&j˛IIzrzĪ͂QEjriL̐.ՏNn-NnnN NNk劋---̫&ĈOONn-.2jԊnM̨,ȫMn nJn̛ϼ N IϼN˛-Iˣ ̛-)j ))j-ṇ̛ ̏ ) N.JiN*̣ oįr̫J2..sz)I̛-Nj-NM-дNnNnn NNMNJNn2կ JRݰ̰̰ N2-2կj N̏oNNnN2Տr1oRoo2ՏnN.RݫoU1 ̛мI1rRՓv1ͳ55мz)91sNrr2Տijr1RİR21ՓRr25zݯŻvQrVr1ݒկrRͷ51𼯴 ʓ 듪,˛i({ {,mάδʓG0LM(rCjdjjIJ))jJ̣M.Nz)z +i ̣j Mʣ뫌1̼r ͎݋嬼j),Mm̼ jĎլOOROS.ݏN Mo-ݯN..݋N3oď- oďo ̛N-s ,Msм R͏мNO.N 1 д-ͯдnN̛,̓r̓jm웲 3/olOp̑ +/*Ԑ2 soݰlhQqP +kp͐ղűP3o"j#j.ͱpݬz'zrj{(IQZjzjjzZzDjʛz0ʛ(mZ+lMjm(Ib$bzejrrerrZzaej炉炢QejYrʛ炪EjbDrCjzzGzbzQdrzzdz h* #riczɫłł&ŊdzYDrrzdrzdrz炆rrerr$j#r'zaDzjdrzzi IƂAQYErazjLHzIIz(zǂzzz(ezezerz)zzĊ(iH+dzez(IǂzfzEr$j%jfrj(zzrrrzfrafrEjfjFjYr炆rfjzrFjfjYzzIJJbrzzfjYfj&b肨z%jzfjFjgrbYzgjrJzrjrKz +{gb͛gjƊdzzz'hezhzzez$r()ziFr'h'(悪H'(zʛ $rerErfrzzzFrfjbbzrgrhjYYaa&bhj&jrZrGbz͓LrK++Lzfrgrz肇r z*zfr +Ȃ K +zz +k*rr+grkz炦r((rI({j{r)frz)z肆rfjzEjzzfrzr) {rj{j {J Jr*zbzZrz zEbrr邧rjfrȂz )邇z z))jIzȂfzz*z K + 肇zȂfzȊȂ )˛)zErfẓJj)IErfz))NJ)ǂjǂHY'EjAQYYjrYerǂfr))EjIb)jfrȂEj))j犧ԫ f0m볎(ǒ-IIǂ)ErzINJ%rzfzb &j&ja8BQ"QrYFjQ"IGrcQrz3ɂɂ*zK*zr+͛Fj%jjjFjFj {j(QZjr z̛̓n훊isn-j{ˋ 0ݎĊq˫'ziNJǂErI(HEriz꣐hͼcjr+zlhhzHzH'iierrr( rrEj炆rEbDbiIjijjjjQjjrjQjYDjEjIiiƂ,(($jII)z zfrǂjjˣǂKKʂɂKrGrhrzz+zɂzrYFrcQaGrFjgrzYgrzKɂ̛grKɂgrgr̛grkzzzzk N̛ ̛kQbrrˣ˛I-Ȃ˛%j炆r%jfrzHEjzI(Hr(zzI肇rfrzII˛)Jzk̛˛ ̣ji-M(MмQē죎zjzjj IrIYzˣ *J˛̛̣j̣-̣-aIDjYDj˛MʛLzʣh,+ MjMIi(nJJj ̛j J̛J NN͏sհ.ď2R2͵. ̣ͣ.̣Oͣ/.3đ/lSS/.Xuqq00Q͑ղuUϼŮPQĒݮ4Pq͑qղ4uPq0Q4u0T0͒44uqݮĒuݶQUTQճđQrݎ̲ĒuuuuU45r454rݳTUTT44U44uUPQ0Ͳqղ0͒0qu84QTUU4QUuU4QqQ0UrrݒrQrQqݒ0qݕQqՒ1ճ4TU4U44u444UQՒ0ͲqqQ0qݒUuQqqQղ0qՒqղq0QՒQ000QQqq0QqQղqՒQQ0͒Q0QqQqqQqqQqͮQqqqݒݒqQ0qQQqͮĎĮqղ0͒QqQq00Qq00uqQqQ0Ͳq0Ւ0QqQIJͲQծ44ݒݒqq0QqqՒݒݲ4IJ0qղqQq͎0Ͳ00mm宼M ,y8UvYYUYn 1Ŏų4Z9zy4UuuTuXxXwoN7O2SRݯR6RRtPݕĉTPq/ՔWWPW7pyt3V6w26sTu3O34UTTT/pݲqp0pݱLIJ̑xSOh3ժmyu8YXZvuϼvqճr1ͳr7TqQճĮqps3OOO+lp/ͼkk.ͱݭ +O͑նݳݒrݳQqT4rn1ͯUTT3434S7StݶST22pձ/͔t3T0 y(v--i厼85-rZvz,uM룪ʣ+tl͕u/Wĺt/ͱq݊4U叼rݏ4UUv-v5IJݲݑqQղOl2550tTpLTqqq0ՑݲqQՑĮQ͑ݒݶQPՑPPՑqՒݲQPIJQqݲqݑݲTqPQ0ՊͮqđĒݒTQղ͍,,ĉiPLiƂ ˣ(i0͎L룪LM 0mĪ ,ʣiHˣ (0qղ0Պ i卼( M 0ծĮq00Վu̎q8mmǂIĎ,ĉĪmiǂP炶uQu(0UP0͉0Lʣ (HiiˣˣMHi,qUTqqݮĕQMMLmʣmm,LMˣˣ mL 犉ʫLMm,HH,뫍0(ezƊzL$rʣDzDzezƊ,,ii(Hʣ뫍 mmϼHmμq0PμQL Qͪmμč0룮0P͊Ďʛ,뛮QM0q4NJƊezƊ, H뫮LĦiiLˣ,iHzHiLzi(i H, iʣʣL, mErjPqmϼŮ0͒Q͑uqݑT(er(Ų0Ƃ(ǂz4LqPQ͒U4q4409Q)zI zǂ죊肆zz%j 勛QͫINݒ5((뫫,,,0ն0̒ݑ- ijrQՎ0-ˣϼ5 V ϼnN-̛ ẓ jNNм˛j 1N ˛Nn-˛M Mįϼ - -)P4/PPTqp͎P̎mqmml4/խ꫌ꫭ'+'ʫl,člĭĮ̭̍lq-ˣ0ͮ,L Mˣˣ˛i룪, mM+ʣ+룉 Pݍ +(,HƂLʣPʣƂ qնQղʣ,룮LLqPqՍ ,$jƂzm0ͮXʣ룊iI炮ʣH I݊iPP,Hm0L룉ˣͪeraz(Q0L QծQՑݑqՎ0ͮq4ݕm0LH0q00iPծu0đ4qՑ iQՒݑ݉Qiˣ,mQ,imqՍʣ,QՑqU0u(ʣ(m0PՉm, QqUqP4ݑ0 uq0Į͍00qQđ0Ͳ40TPժĪT4(0PղqPqTTݲPղQ0Utt7SWŲ4tPնݹP6W6SS޸W3S7TtS3μS3s//O볍Oݭ/Ռ+Lč0ݵtOo.opOl̰ܰ/݌OL3L̍PTTͼOŭS޹/SݍՙyX4UUX8UUT95ZZY6v/pKKݍ̍mLp+/T00l0ՕmPqP+0 ĮPݑL1՗VԺvUptPtįQ-ݶ8N--UUuQՒvpݑݕu054ˣU5͗Rv5SS2tu Tu n˫TT227ݔtSTĪQ3SuUr4'如, ͯ-VQ8NݯčLĮ1QݭĕpծĎ11nynn˛ծxSKtݵtot4U3t4vvsXS݌73S2lsk3QQղ3UUyXݙ8rQչXR1ݒr4Yu88U5V44q4qTQݎĮĒ1ݲ,qԮ MԖ̑ݮĒ8Lqݍ̮ĎQ4ĮqP4ıݖ84XU88xXݖUtu8Xxxw7WQݲPTmPݮ/͕/ͱmP/Ttݍđ/յTTlՍ3̭ԍPՑݭLTT0Ͳ33/0͑ծ +llıuqmut꫑݉/OݭOlPխoSRRS2RR2Uv5uSuU4U5Oݓw2w6uUU7q4űՕμP8uݑ4STT40TPtT3tttwS85-81-6wWWwW6sSޘϼQ574Y1ʫ#z̭̭eLčLʫԭK++Lʳ,lPݮm,j j˫˫-Vvďv5 -n ī-쫯NNj)čԭԍ̮̮,L̍č̍ l+ 곭̭̍,lL˫볊I0˫ďj ̫))˫˫쳫NṆ̣̫-Jsݗv21vU.R2쫰̓rrN-5ݓݎuurĖ-Iˣq-4n͊V--2nݫnMJ%r -n ďēnrn-n炊,ǂiNMQի1ˣ1շuQnQՖˣnI -rT0P/Oͼ/ͲČl-į̲4nn0-MͲݑխŭPLlL Kpt͑pղOPqP4UUjUu芵33PqՑղ/pձݲVRQr1͒rnrM N-n-vVm(LčO q+q r6-n16Rn5ʣM(T8imPՑՍp0꣮P0ݒ̣ͯRnݎo -ݲr0͊mu5-- JṆJ̣JuTqTxT0LL4ݮq4Tt3ݶ4uTt4ݑղqͲݑձյ34t8(0,znzjՑ掴mMqmݖPݲݲqՕ4ݑq4qurUPՕtqՕPݵpՔT4ݶW3X3ttX3Օt8qՐݮĵTtxXL4qpՑ݉0 qμq宼μqղݮ0ŲݮmPq,p0P0mLMPʣmMT4QrճݎQn11 𼏴JJR͓116wՓնQqrղuͮ11R1Ď-̯M죏nJsw6sWtw3p/ql/P̰ııOpͣ6w2ݘ2VrwsW2մSՐ +sݰoSŲ ĎnPݎImnnṂNijM厼1ղݮ̮̪Q˳ ,Ԯ ̲um0 ,뫍rvŒ5Ur.No.1rмммQն5vQݷ50ųݎŎMr1ųnnϴ˓죫 Rrճݒ1nՏr1͒իr죫 rnQϼQͳ51ͷ1vRUrճQ1r1QммU1r1rмĒvnUUU1r1-̛rճnмnQ͗55RrRݳUr1Ur5vrR5мݯݖvrՓQ1ijݯ1nrvYr ݷZYZ99v555ճUUVVVv5v55vvVV5VrrՓ1Q5ųRͳUݖ웒˓rMϼr -QůnM ͒Q--쫊 nϴr15Qݯ毴ϼ1ͫIJݎr iՒQ̳Q4/Չ ppμči/lՖu0u0ՒqƂƂ+ˣʣiDrʫihlLv1 r˛UUu-qMuϼ ĮϼvrUvv5r9uuQQQUQͮ,qQղݲqUTUq̮čP0ղqݱ30Į44μ˛04͑uPݍĭmLuQ0Q/v9Yvv9998rrՖY1ijݻzzݖ9RrՓݳݓrrՓVrVRrճ5rRՓ5s2r11QQ͓2RR5ݓݓRvrr5zr1Rշ1͖rR55rQsVRՏϼR͓Վݯ1͏11RՓsēݳ폼2RRrVUݓݓr1rՓݓ-sݓ.-N2̫NnvVVİoUrUq-m04q뫊Mi,Mi룪 , QQ0ϼQ15vϼmϼ ϼmĎՎnϼ-Įq0, qQq0ղݒQQQįˣ,I뫮nĎ0͎m,mĎ1͎nM 죎 M ˣ -I)nU59vvVwrZvůQϼvݓՏ̛n:͛v5rvݸ2дo-𼏬sR훴kϼrϴQ-nnNů1дjj˓NM- ̛- дrддNNдNд ͯ.nn-̓NN -̓NIM-Ejz Iz)z%j肇zj jˣk%j)frJz)(%jjˣˣ(ezIi0 Mǂ)M,i,I fzj )) %jJfrjJ)j̫쫇zfzJ) N z%rfzYj)AQfzǂjii(,jJī-Im,͐ݐPqݱO.հO/O̲u力'Oݱplݑ.ďհ/ՐpOOOĭl̮Īl Mʣ'hiii z犉zia(̭/čʣl ĭpp+hLzƂi M炦z'$jƂeri łLH#rhDr'mLIjˣˣ-Jn̛j)죬̣ l+꣍LL + l,뫫NMiˣ n- ̛ ̛N -̛ N죫jz1͏˓j(Irfjej{ i.kzzzJrz邫z), M -m˛ m뛍,l+L뫭ĭĐpl ,Iˣ---M--̣M ɣLl,l+ʣiˣ ̣-ˣN n.n̛k O.̛ nnnMLϴ M 0ō.o 2Qk.zjм Nn10Ůδδ1QͯŮϼMqϼϼ00ͯϼM-1-RnqϼmĎRŎϼ-n M̛ijݯ N̛м- MNM˛ z˛zz 0QͯMMM- ---nbEj肆r)frFj˛) ˛-죫I˛ )jjjJ웊̛˛nR˛웋웋-̛ ̓-̓웋 {J̓ j Jj̛jj̛)j)k̓j̓ ̓웬J*JjzJzkz {k {̓̓k- J -웫̓𼯴r1ū웋j11-Nz)J)-) JJj̓ {zJ̓̓̓̓){kkjJ̓j j)jjirz)r) IMzIJ ̛-ṇ-J̛- )N- IJjJ-̛1N -̛Jj̛-̛-̛ N̛ j* o J-nN nİnnNoNN.- . ̣oo.-rՏnR ̫*- J zfjb))z {z r zN on nz n -zrzr rzfj̓jj)zJzaa̛̛frNrn j ͏.̣ ̛J)̣. oṆ ̫ 邫*̣ ẓȂ).̣.̫J)Ȃk ̣2մ吼OĔpͨK肬o tııČͣ.k KKrQrrQQՒPݳ11͒Qղqq0ͲݑǑ/3̰ıČͣ .k./O2̓ݰİrQ0n0ĮmumLPqկnj ϼi0ͮIˣm 0TpPTqݶ443P͑TqđP0m0mq͎Mj-ˣ-j,룮m M-N ˣ/PՑݲp/0LL,ʣʣPl/ͱL(룪 ,mˣI inn M,M,ͯMˣv15rUrQ1ϼдRR̓𼏴- j I --Mϼ -nm nnQ͎ϼ-˛nqm1ŏм- RRNMjN NN̓ -˛){Q1ϼ ) IŒn,˛z -- ,Ďˣ - ݲ0Ͳ,ݎnϼMMm0IJͲ04ݎĮMPqݎ0 LP Ďʣ,0,Q1͒nrϼ0Q, , 죊 죎įMqݒqq͑ͮ0̮ĎLĎmI̮PĎ0̛N.Noo.ON.NN1мNNoooŬokд. ͛NW2 İRկŏмo- )N- -ͯị̄ j ---r1 Mnn죯NN 1MQկ̒1rQ11ճ0R2sŰowմՓՏN̛ .̛ ̛o. N --мR +.SnдмơŴ.м-nJn ̣쫎-N --̯nQ n1̎ͯoN-nNN -- n ďMMM,nṇ -̣n RNn Rϼ01q1QQQ1r- 죎ˣĎ ,Īn1,ϼM,L ,qՍ0ʛʓr0M0INLʓμML PŭݲQ0ޒ441QUrrϴQŎϴ 0Œ0QŎ MQr,lʣLlm K /0μL Qmp0͍40uĭ/ͬͼloͼıpձpՐݑμQ͍ݱݑծϼu14-nճQrn-.rů2r͓S6VrR1- м毼 R2ŒR͐2дS2ŌkѴ2ŐѼ/͛͛.jrjr {j ){zI{zj-jдI-M̓)rz { j˓n웊j˓J))rI)z))j-Qnn˓{j){II {{jjIM-̓){웫{)NJfj {%bjzz˓zr˓-м1MIz{ ˓)zJ zI ̛j)-죋Nn죯̛ z˛rjNJ 肋Jn * 죏nMk ̣̣肫 Ȃj-*銋j 1̛͋)JJ̛jN̛ ̛rj ̛-̛j )akFr)k̛-̣j Ͱrկ̛J.)N̛j̣ z̛)I){IJj˓n{MJz)Zj̛)I)rI MNnrMϴrY{Q )IQfb){Mjϴ N j-M-zJ̛j̛̛̛JJ̣njJJ̣j肋 JjjjzJN̛мм̛)frJz-ṆJJ-jjIjj˓j nՏr̓- NM˓˓웆j fj˓˓fj쓆j-nnŏ̓웯nN r11ůNrм-non.̣ ̣-̣̣ njJJjjJ-Nkj̛jj *J̛ )k̛JJn rrNkJko мR o.м̛Ro.ooŰ1.мJ z*N k̛ k.*JNJJ .JJ̛zzJkrzzJjz **z..r JJz *̛) rJgj.gj .okRмoJ .rr z웨rNŋ.ko ̛kN. J훋̛oJkJk jkzj kJ̛웬kzJz k**kJ̛̛zzN.мzj мz J*̛-̛̛k kJkJ. J +* Kzzrjgjjjkzr*kk* NJkkjNj zrk*kzrJ̛̛k.-м oNNм.N.jo-.Ṛ̣ )N ̣J̣ ) j̣jnN-Ĭ1͏̣JRn j쫫J-)1Տ5J.̫Rṇ* {rJzzFjzbfjrrNơ1̛N̛̛N̛*z*zJ rzbz̛ . nNNo.n-м JnNNṇ쫋jj 쫫 ̫))jj1- N ̣N N- ̣ͫrRoiiiIjiIj(IIH II˫ˣ,˫,̫Ċ뫮̎Ī,m̍ iMmm˫IIĪiƂ炪zezHHƂ,룎,LLmLMMM,ʣ룮̮ iiʛ 룍L튣0볦 I˫̎M,,˫im(i (IIi)M˫˫ii)˫ 뫪HIˣi( -PՍL,ʛ,i,L룪,,,(miˣLʣ,ˣ͑ծ,룮,μ0Pmϼqծ0mįnĎN-- ˛ 죎˛jj-Q ˛ϼ n- MNnQмnnnMQnrRQR1ͯ1͓ųݒ1UR5Q͗1)I M N1͎˛v55rURvշ-nů˛1͎R1RĎ 죊I -˛ 죋j-IN1͎)jnмvn ϼ N --M-ϼϼrRϼϼnNďRϼn1vįݓN1--N--Mмnϼϼ1Qͳ55ݳVUU5įĎŏ-Nмn-ϼk邧z z* +zzzȂ*z ̛kj* k̛*zgrgrgrz&jgrkz&jFrFjFrzzrrJz rzzzz *̣ n˛̛̣ jInn ϼ1-MJjn-frjFjJ- Ȃ zJ1j죏NQͳ1͒r导U 邋ja*FjN邬邬krzjFrFrrJмgrzNVNsըzk*̣kkK..k̛JȂJz*J* .kNsݫмQV.Rͯ-VՒݳ1RկNn - ̛j M)j jjN̛Mn)˛-n QnnN-nṂN-˛ճQ5nՒՖVvUݏRճUVRR5vVrŏrՒvĎRмUvUQQ9Qͳ1uuՖղn1ϴ-rųruvճ1ų5ﴯ qůϴQ˓Qụ̊Q̣1n- --˛5Rv55vݷQv毴M-nN - jjį)j M NN Nn ϼ1Uyrϼzymծnկrnﴯ𼎬-ն1Un QvrͶQnϴϴ4޳v4qŎMmPLμčl, PLLݑݕq μ H,μ+/m宼0P1ͲMm,,, m mmmIL μ0μPlLμLqŭLčč,LL00uQϼqŎ,mM0ϼμݮqμqͮ,Q,0ϼī--M1͏ --웯˛-M -n죋м-Nn-N1͏Nŏď-n죫J̛죋 邫jNnr1rͯ-м1ͯR1rQ͎MM죯--̛nj11 N jjj ̛ - N1ϼ LPͮ440qղծ0μ0Pݒ455đՑT0͒ն0ݮμQUV14v5rݳUݷruU4UY9zuUUvzY98YY8Tqquݲݒ0Q0QvR1QݳRTQϼ84ݶUUQUݷUQ5YvvuYvryrݳ5ݳݳݖUyuyֺ쓬м.-n -N웏..zмN̓n̓1̓ N.-дno1ŏr- 웏N N̓..ݷZr5.д̓J k м дN.-N.-. NN -n훋JJ-*1J1kRœ-owV2ŰrдN nдN񼏬nRддRдn. N J .N̓ -QNjJ--̓o̓훋JjzzJJ. NN - - . onn훰on n̓ooм- ̓ Jz ̛ jNk̛ *NrēݒQՒQ͏RͯRUU4QQqՒqмR1 nkNv4UPUQuUUQuՑ01ղQղU859yYUzY՚000ݒݲݒݒQqݲqղr8YVVZNRrĒճ0m000IJQQQ0Ű11QJ ϼRRճŒݲqqQQq04ݲqݲݲUvz99r͚rY9YqQ80qru0Ւ95y՚̯N5n˫쫋쫊-ͯnN̏nnNnMn jI̫- JMjn-NJIˣ j - j IIˣ)ˣj j Qͪ˛)I˛njˣQˣQvˣj)ˣIIjˣ-m-r1IVNՒ芎ǂJ))j̫JJ I)J-jj)jj쫇- IjIj-r Nnǂ)M ˣM MIIĊ-Mj I)JˣJ)ǂI쫊z)j 쫳īQ)n肊̣-nм̛ɂмR.邈zk*.Ŵм.j -N *zSWм *1 NoNRo1͏nŷơnrzݻ MrϼįMMݲP͑mϼm,ϼݎōqկ5mMQͳՒ1ͮMm,0,ݲmL0Nmō.̛ͣkJ .2r1ēշNϼ.̛ 죯Q. o2.. ͣN̛.oN 5R-̛n-MŚr041ruϼMϼμμϼQݍ0P0-Ֆݲu195U4q0͍ĮPQPJk . Kk̛K尼ďo2ďмkkJJ JͣKJ O.*ͣkNz銨z**JkKJkkkJJ*Jk *Nͣ**kͣN̛̛k ...ooOk.N. o ..̣м ..Nk.мͣċk̛No ̛м ***z zJKNJk...N̛o J ̣Jkk.̛*邬.rk* +̛̣gr K2м. oͣN*o +- N . J K*邬 .ɂkk-- -. rkȂ 죏м Q1ͫN Nr1м̣м j̛j ̣JṇNмм)nJ1͏r-5vr491UruUY5ն1r0Q85YvնUqͯvQշ0Œuy zj-NNnN .o-̛-nj--ď1͎zN Nū1 Ċ죫̛м̛nмϼ̣̣мM14ϼϼuU0vկݷuQq͒ŒrϼQ͎1UUݲղqQͲQ4UQ͕q-QQ)1ˣ˛0Ͳݎˣq )Ȃjǂ (zmĒPqղuP0͒P4u4)jˣ-jn-(M,M˛--쫊0Q0ĖuTT4UuuPđ0ͮč0QP宼͎0Pum厼QծMInr죮n0ݒIJ0͎QqUPPՍPqծqqݒTP宼0uP0͑00qr1unnQijݒ1͒ݲq41QqrĒ뫎Qnm QՖ00Ֆ0͎00ͮ4uU44uuUu88Y444uQQQՒݲݲuU84uvUq4̲4U4U44uUĶ4Y͚q44ݲUUq4qݲQ4UQ0U0Qq͎IJ0QQ00QM1qQͲqq00͒0ij0QՒqq4U4͖uuqQՒݒ0ĮĮIJݑՖ8MUunrмNNϼмZVݗvrV-1RU导5мU5RR9z-1ͳݫvv1ͷvݯQ1R͖vQ5rV99ݒճݒV551vijݷzůrՎмV5vv5Q515rv95vvrR͓1ͯ厴VRrQ1Ď155ݖ5Q151ųݯ1vrR ṂRկ1rՓՒм19UrUݻQ՗5vR1UQϼ1RQn1ՓݳnrϼrճݳݏRݎr1RV͓ݳv厼v5z5uQշ51v51QQݖUvrĶvu5UU8yX85uUuuUuyX88r9ϼϼrՖv厴vϼ1v5UzzUݖUUvrvYYYz5urջzY4Uu9uuu51UuuU8U449ݷUvvQղQՒQղq7TttqP͵TtTu4ݕ8ݒvݕuuU9Y54uXX44U878y88yy8uYy8Y8yY58YY8v88Y9YyY4v84u4TTy88yYz8YYzYzzY8y44޺yXy9zY998vvz8vvuTuu4uuuUUu455UUUqնUTuuUuUzyޖUzzy8YYTTY99vvQ99Uu8YUuz9Y8Xu4ݵ4Qĺ8X8x8Xݎ4QxuUTUz9z98UY99zYzYyYzYYzXU5v9YzYYYyYY88yz8Y8yX54ݒ4YYvU8uUuyv8954Yu9vvuu55z9959yyXyv9Y9zzZY9y9vVzYyy8885VvvUUy88Xzy8TuvYzy84XXݲvVuv5Uvy8Uv4vUYvvyUY8uU84884UY5u8Qv5yQ8ջ5rݓݒݚ58Uu8889Y95Y98U48U448U8y4UuU4YY44vUv5zvvUU9v89v9UuuzuUՖUX5yݚy0v4zYYUyyYYuXyv444YYU5TUuY4u4͑ݲT͑44quuU4u4QTuTTTTUUuqղqqTyu8858uuv00Quv89XUUU9Uv51͒u7u4q34T4TQuyUyXTu44ն88ݙXutXXXTTqTPqݵt33TttTtTTuT4Xtx7WWtWWxq/3ݱՑP3txtx7773738T4TTT4u0qqqqUuS3t33S3quq4XݕTqT7PT33W77XW7W7x7x7T4tTtt3ޭչ7Xx77u4TTU4488ݑ84uݖu4UUUU4u4ݶUyYXtu8UTT4UuuU48uu4QUݒݲuu45v444U5UuUQqq0ͲuQUu0UUuq4UQrݒUruUUq4UݲݒQղ1qQݲݒݲ4TuݖU334Uz9YtUv34Q58V8yTP8yxݑ3/Yuy7x7pͶttxպպYTYyUUUT4u4400ՑPݲTTu37pt7T7XXY878xxXu7uxXXxrrvU5U05rQղUUݒUuuϼUU888uTuX8T44TTTT4uy88yXTyX8uruU5ݳ4UՖQX,-U10MˣMMqqն8uuUyy38yX8uTu84ݶu4y8uu48TTPuYyXy8y9YzyY98889yU8TY9zYuW77WW7W677W8T4Y8v7TuUUUTTv1ͷU8Txy85vvVv9v9v8Y8Uq͖Yu4MQ͖Qճqr0uPuݲr51ĸrwV1VV1v2VqՑݑݱ0Ͳ1Ͳݲ3Wu4Rrrݳ21s2ՒݲQrݴV6rs1͗69V695UVu5Rհ2Տ2͓5UU5qP4Ttp3SUuuTUTt4TTT6SWwvVwW吼s՗6vs5U4uPrďIJrUytXXYTYXuX44uQՒՖUUu44Uu4ݶ8U4uTŶ4Yu0TT44UuuU44uͳݳݒݲ1rճr151UUQQ 1ͯnRrճݓR111͓1ͳķ N8551͎1͏QUqճUͯ1ͯrvݳݳݗ5vėnVv͒rݯQrRrշU6WuuU5ww66w67777777xxXR՗611vV65V5vvuuTuXTUYuuY5rrQϼqzU40ϴUz1ŷuuTU5UUU8uUyQQϼrr1Qr͒1Q1UUUݓ50/uŮPծQղ4yQ504u4uUU5vUuUUUvUuUY8uT޶4uuuu7X7x8y88Xu4TUU8XXxyyXuTXyXX8u8YuYYY54U4U4Qqծz9Փݓշ5ZRIJđշRnrݳuUXXX/tWxxtpյ7Sݰ͐mtu4tuXxx/ŐWtP/QrQuuvUuϼqճճr0rrrqu45Uu4ݶvv4RϼR-𼯴nR6w6sV6sмr1sճ5R͒ϼvV6s2ݸwSs6ww4uUĖM厼u0Ͷ4nˣϼUU5uYuuUQճuU0UQ1Q͒05rͯQ121͏ՓRnRмSՓհZwoēwrrͳՓRݷ56sV62͓sՐRݳݓմR21n̛NNď.Rv̛r1-1V6ďм 62ͰRs͏м1rnNRr͓R1RRYQU8uд͎QxtXXp3t87X3UQv1qq4毬n14888PͱXpRrZRʹ1ͯмŰ1дRœn.мr导R͏мRRŏмnR11м1ų1дݏRд1ůrͳՙv88LıձXT7- -Imδnn45Txx88u̫ċ-nn ̫̣̣̫j̣-̣̣j쫏ċN N ̣- n * ḳj̣NNkį jˣnJ̣)̣n j) ẓjjȂN jj)JIkJ肧zJ Jj))zz r frJ Nͣonj죋̣NN-- ̛̣ ̛ ..邇r̛̛grz&j&j̛Fjz JJJz*̛kJ̛̛&jFjJJjz r k rzzJ zJzz)rz zj zJzrj zgj)k*rj { rr%b%bzrFbgjrrNJ̫ṆnˣJ芋 jMmN-m mMm,fzz)ȂjjzFrJjJ-nMnM ,,-j˛ m 0q4XնݲծՑtݵquT,Pδ0uŒ0δqq4uT4Tϼϼz))jˣ̣)zgz)jzzI-Mnϴrjj(,Fj&rFjrr)zz z jIj-n˛)웊 ˓Mn-MϴuX8Unqͮ ˓˓iQi*,뛮ϴ˓MUu0Ŏuݶqϼ0ůN죯nn )N)N)))NNk ̛JFrzJJ)aFj*azFjFr j Fr z-j)fr̛r kN z FrzkJ) aazfr%jazzzr*JJzb zkfrn˛Ȃrzz zj̛.JjJ*kjȂ N --J-Ȃ z))FjȂ&j 肧zzFrzzzfrJNfrzj)j *J J)*FjȂ zzb Ȃzz)FjkJ N̛jȂrjJzJ-k̛ȂJ̛zJ J-̣ϼ мJ죫FrgrȂ)̣zJȂJ죋N- rJbn)zYEr죊˛jrr zǂ njIzzn ϼ5jqjM M1mrQ̣Mϼjz˛իr r-0죮ǞMϼ-qիI0ųM-nrMIM MϼrծjjizϼݒնQ导ϼv˛4-v1͒r0rկįrՎ-- Ů n˛jM1˛n nϼϼQ͎0ͯnĎ-I- )Iݮ)˛5)ǂjrղݯQji mķQ QĊ0 rMϼ-zm웯i-QrկĎ-,1ϼ n˛nݯ1շRVr1RR՗vݏ1rR1rrrՓr51vݓVRQVr1ճ1R͓RՓR11n11ՏR5RRv5ݳrݯRn1RVrݓrݓݓݯnN1Փ55̓͏-1rճ叼Rճ͓1ͷrݏ-̣į11nRճrUṆ-- snN15ij죫NīrNrݏ-ṇNVVv5įķRRՏnįRrݳrݗ91įN叼joV1īċ1rݖQ40Ėu4ĖQ1Qճu55ĎnVij0ն4QݒQճQmQQ1ՒݳQճQͳݓ2՗5VvVݴRմݴSմsrzVU6VVRRVVRRďмĐn.1Ւq厼펼5uq-r쫯ijrrݒݳRճݳ4UqjM̲uqrݎ v1RUv̳vVR՗ݷ6Rŏį. Nİr:2{21ͻ.N. ̣.̣..2oмм2мsմ6wNͰмSN̛мw2RͰİRհsՓ2͓մRSՓRմݰݰ͏RokkosRRW62sNм2͏...м.OK̛̛̛6NN6O..͏oďo2мơ.sՏŴ*sլ..̣J NJ**N.JNհ̛̛o. No. k͋мs o .J.o..RՐNkRw..oмͣ*... ḳ2ͰSĴOooJ.N11v5VV1 ͫ-NNNr5VrV5V1RV11rRՓRկ-9vvv1͓ݗ9ݯn-̣̣-N ̣Nrrݯr5vvJJrNN1Տjrݯrݯj 1ͳݰ1Vvݗ5죏ērRկRկRՓ1ճ rVRկR5vRR1rRn1RՋV19vr͓ݏNrRկďR1rķv1Vݓ1կijrhr&jhrGr'j'jhrzhrhrhrhrhrɂGrzjzzɂḳɂꂨz*. +NhrHrGr'jj'jaaj'jaj'jjGrGrzzgr +*zkɂͣkz&jмj z zjzkJ aJjfrzẓnMz z)%j$jȂJ!IaFrfrzj̣ n)zȂzJ)Ȃj 'jahraahrdQYɂzYGrajj'jzgrGrGrgrzFjz邈zzjraz +ɂͣlꂩz&jɂz邨z +kzK.мGrKzͣOK* Ȃ)YY**z ja jz)JzIz()jJ ) +Fj.grrJrj.*J * ))Ȃ 肧zfrer) ))j)z˛ M,,z˛Ir͊˛)zr- 웫,rrM(( zMIϼM웊IzzI˛jM˛-j *z&bY훯̛ * *jzN J O.͛훋nrrz*-nngjkFjYgjFjrk.zz**krnHI뛊 m˛ Mj)jI ))) j))II z ϼMI-n˛n웎-jJjm- jJn zFjJfj ̛rzz +&jrkoK QFjYgj*k*zo n.̛*J̛ NJ)grz **gj +Gj Jz zgjzra&j8fr%jajzAzz 죋Fr*jfrk*)FjfrJjzz %j&jzYcQ azz%jgr&jznjRzz邧zgrjrz-Rͫ ) zfrkjFrz) j%j jJz*)̣ ) ȂJzk*죋rj 肬Jo.̛̛-Nzj)j j̣̣N죫jJ )̣zJn̛ jJ-1. NNмR͏RRrR) kJz- -̛-̛nN1ͯR͏--̣1ͯ-N)̣죫N̛zċ̣죋)̛)j )Ȃz м--ݏ1nмnRṆN*jẓNċJnơ͛ .훬͛Ơ.- *).k* +ơJk͛ơN kJNмJN)̛j̣N)J)Jˣfz쫧z ȂI)zJ芊ǂfz)ErI-̛-ͫ1 Mṇ- jˣz̫Ez-) %rǂ ̛ 훬̛̓rzz*..k jJ̛J N K*̛r +N̛Ư̆ -̛Rnv N˛ˣ- nJ -ďͯ1Տ̎jM  N 죯ďN onݓݎnRRի--Ċn)nr,-nмм-N N-NNN-N ̛---n̛J)- ˛Nn n-- nȂ̛ )̛̛J 죫ḳṆs. ).肏Jݬ..sNn oJJ*죏 NNRN̏nȊJȊN.. ̫-.j) jzI˛jj м죫IzJjrfrFbrfjrJJrfj*zz) )JJJJJj)zzzz zȂEṛ-2NJ̣JJ̣ṆN.̣*JnJ*JȂ JJJkfr%r))ȊzJkJJ̫*gzȂkȂQ5n1͒1jQիrrͳ1͒ݯrrݏįĎMˣNM1Mn -- M͎- --죫n551ͳ1ĖrQrrݳݒQr1Ւ1nv1rrՒQUQճrU1͒5ݒ11n1͓rݯ̣))-n ˣ -Iˣj̣ ̣ˣˣI)IǂIǂInn--Mn-ji()ˣ1Mݒݒ-Ē1rݒݒ1Ďįį-1͊ Mˣ,1Q1Վ --M--n M-kk* ̫**k*̫ȂȊgzfzjfz gzȊ)) Gz&rgzKȊ ̫̫)*ȊȊȊ*)* )Jfz芧))INJ)j˫I i%rʣ,˫˫ʣM,)jj˫jj ˫˫˫,i(ˣmm˫kkk*J *kKkkJ Ȋgz)̫ ) knȊgzgȊ 銋&r銬&rȊ銬N̫ ̫* jjȊNJN--˫,ifz(NJ MMi ˫M  j)iJ%rI˫im(뫍0L̊m,m̍˫iLmʫʫ,ʫ Im,im뫊ʣHi,뫪iLʫii(m(H i,iLi NJn( ,0ՉQMQ iiĎ((I(nM 펼M˫qM iiMI(I( ˣnՎ̮̮0MĮծq̪M,,˫,m˫mm0Pݮ̲qMMĪ0뫍I0MNJǂI(m ((j,)Im)IjՊĮĎmmM,mM,Mˣ ˣ ˫iˣI ,-UUuuqq00uu4P4qMQM0qqMQնuݒݒQծ0͎IMMq厼,MˣMiq宼μPr厼mͮrՎ(M,i, Mm0QrQQmm0կͳnMį̲ճ0nrݳ40Ւݲ,1ի-5Qq쫪n뫯qݒ1ՒQݎq̲ղQ˫qnQՒUqqͮIJ厼0ՎĒݳ10ՎUQMr1ՎqjĒnn1Վ5˫, r͓S5Rsݓ2ďĴ1rݎR50Ͳ͒Q0ճqRݔs̏r̯QկįQ1Ւm0m54QU48yőݑղXYݶY4PͲqUq0u4QUQQvUQQͳē5 -1ծ54,IJ厼IJQqݖqݲu4PqIJmMQq040PPUݶqQu4vvݒUvVмV0qvUݲ4vww6w2Ŵį̋-R1nNJ- ̫-NNnįrrďnįnRjˣj-NQˣnn n -fz˫)Mn̯̳nՏ-կ̫-1ԏį̏nnįNNM̎īMRݫjj --RR1n-nn̏ďnMnI-JEz)1nMnˣ j- - NNMn1 ݏ- ͯ1կͯ1Nrr nNn- nN̯ˣM-1RNrRݫ--nnNnM M-QMR -ˣͯn-Mįs͒Q,ˣ,Į- M Qmr4QQqݒݒ011m mrQկ-rVijݎͯĎį1NRrQՒQv1ݲvU4UQ1n, 0v4Uu1rrVvˣM1-QįݯRՓ5̣sRʹw-̣QՓݒUм1s1Rws2͏sмNR2Rʹݏ2ͰV5r̛-Vr5ݓ1R2Փ2sRs̛..N2ʹsհ..̛RՔē26Ro.̣62մݙTu0qQqՖ884u8UUUrR5UvXy4u545rR1ŶUrϼ22ŰO2sR2s͐o5uvQмկUUݳм12ŏso援2ͯ6sw1Rկrvď1įUݷ4qQs̰İ2Փݓ22rݯMn-1͒ݳ -Ė펼YRUnNмrQVRr5ݳϼqՖ4Uݖݳį-nr5м5vݖՎݯ毴1UՎмnůммrwUzr1r1ŏrмNмr5ՏNNмQ͏n1͎PUYUyuP͕ݳݓՓrQRRr͎qՖy04Q444ŎQRnϼrrݳ՗1r11Nݯϼ5QnϼMRͯNįмū NNnм1rRŗvVUUQϼvu4u8uuмRмrՒMϼNм̛-ϼQͲTT354U5V5rݏ9VR5n죓5쫋nNVUկQr1rмŎMn5ŏn1nϼQn55555VrݓݳVvRՒŏ1ϼrճQVR1Nvr죯RR͒ϼ1ϼvvϼ-1ͯϼrϼ1ů1ųnϴMnM կUϴ𼯴QQM-Qr1ϼ M˛կ𼎴ϼrU5QrQrݒݒ1vUrrQ1Qϴnn1ůϴvMnrϼr5ϼŗWWs.SՐ2ѼoѼмNON2ͰN.ͣ2oNNoм мNơ ̛NNNNм-ϼOR.R1ݏŰݯݏмRͷݗUշ5vvV мnмnNRnQM1ͷV9v955vv5NrՎм nM1n1͎ŏnQ͎ϼjMϼn,Mj1Qr5ݲUq˛0ͮqqq0Ͳϼݑ0qQ͎1ůŖMmĮݮ88uTϼqͮ00qq殼P3殼TuݲqpPTնu/ōݮr1rճݳrݓͳr̯rR͓įNNR1N1կR111ď -Nn1կͳRRՓ̯ nįRճ1ճ1- įRN1nR͏N- N -n n1͓r͓ͯn---Nn-MN---导ͯNēݯRՏ n죏--Nr51rճ叼1Տn )n 5nrē1ͯď1RnNRճvU-R-RՓݳR1͏ͫ-N5V͓1ͳ- j̣)MVRĐмwė R͓W6oмsŏ.kė662rRoNNV r죏wRՓ̣kọݴNİsՓ2RO.oONooVws2RՓݓ̣͒ọ̣oˣNvnRĒ-11-Qn MˣR r n0Վr-q̮0QIJ00͒ݮĒ1QqQՒ,NM1QՒݳMįĮē1 -VvnNn1vQծĮ厼qճ1ղ1QQ00Ď1M1r1ˣnįrQ1MQˣMˣnnRnQծM 1 ---1MMQ-̎Q Mj̫rˣ)-Q ͯīˣI1կnNͯįݯrijṇ-ˣˣ - įĒݒ1Q11n11ՎMnrrݒݳ ˣ1ՏįN ˣ˫ -̫̫ n--̯-N̫nď NJjj̳ n*k -ԏ--jN -j ċ -̫jNjj-N̫N ̫̫)J JJJj ̳N-nď̫̫Nj)Jn)-jF̫ˣM -m nM4Ē̲ M M쫯-ˣˣ įn̎̍˫,˫ q i,m,Q,QݏrՒQݳnR1̌匣2լKΣ̒妊 12ݯ1$zIMNկ̭.l+ +O̯̎MM M ,쫊,iqqmʫ뫪M  -ˣnˣ,ˣˣ-)Im,I̍Ī i犆Dz,i̯nn˫mMՎRoO*/o/Kͣk,mĊ-RՍĊNJIoĐOOOͫͫOͫK*N-nrݯ2N̫ďoNݳn 2ճRnįē1叼NnVvR1rR nRrď1ՓnRrr1rRr16N-̯ēݏrssRrrR1 n1Rn1r-5Rį5rMį导ͯnnN-n -1Ṇ˛ˣ1rrՒQį5ݓNųݏϼݳēn1rrмN죏죯1nͯ죎N---Nn 1͏ ̣̣ o-NųnRм1rՏ1nϼ1͒ēr- r -RijsvUrr5RR1RկRrݓR1Տn.NjNNo.N.̣Rrn 5R̫n嫣rRjṛ2n9NİrRՏ1n1̴ ̣ 6ọN:1̣͋-rՏ NoN*.N̏ .o JȂ ** sհ2621N* zR͓sՓsSՋ&jzK +ȂJ**Nݬ*2͏Rո2ոsJ̣kk2̣ݴSsմݓմ.s&j6.尼o .2222.Ѽ..NoOOѼN. ͛OkJk.*.̛̣̣o n ̛k k.̣kJjN.nn**..OOͣ͛.Kk.̛.O.o.мo. sհ̣ ď2RՓмJĬ + oͰsoN邏̫kkJ쫋̣̣J1--k jk))J-) j 芊J)jI n MrJ- 6sݯċ n ) *NJ ̣)-jR-̏n쳏Mn-ǂˣ)nĬ쫊j-J-̛krzgr*N.邬rgr )zk)м̛N̛ 2J .kN*...JkJJ ͬk*ḳJ )̣̣N1ͯJj̣Nr-rṣ. j5Ċ̣J. ̣-RիիkjRՋݳ쫳̫Ȃ) k嫣틣Ȋ)gzNK**Kk*KkK +gz*J kkNɊkoKK*lɊgzK*kk*k̬O .**k*̫kJ娊* oRjNJJN̋Ȋ)FzɒɊ +Kos.OO2.N̳R.̫-̳oK NďxxxW77Ww7Px7uxyy8Yy78u4uqղݵ0Pݕ0q00TTppPO0ՍIJݶyXuyX80PPՑ4TP宼9Y5yU4QճQ4u5Uuxu444uW7UUu7xxxU4uUTtU40ղPծčT7wTt3μ0quμQ,mWtw2IJTݵ3t3st7XtxxWtTS7QI 7IJsSSttttXXqĒ7TP͑ݒݒu8T74uXXWtxSs3tS4UuTuTt37t7tW6t3363TStXX7uqݕXQՕݘ6Stt66uXPՑ3tQղ0Ĺ7V6y7x67xWtx7XZzZ9pSTt33t3Tt9Yy77W6wW6VRYt6R21rsrQWVr15rQ0rv4qqpPpKݱOp/.O//3xu7xP͑S7./3oŘոT3P77xwsWs7/͵tSoW2sw6x23.͌+tSp̭p̸6S5rRSssOŐoœsSVwQQ0qv656Vw.2Os2.կNմ/ݴpqQtOݔQPwRRݎvr526wM,w/՘ĎQ1QR1 IQU0 QU4u4t4μTpPձqqp/3TOՔSıO匼匼4Ŗ9r58կijݒOPTpձW7ݱ0m/ͱݍllpݐͱ̍0lqqčPTu1ĶđQUr1ݳRݯsrRR̯VwlT͔đ0 m˫ĔOK3m/pqRrwճs6RRU˫1u4 mĪ,mPy3TlʫpHqݍMm宼 IJ厼Ph l̵7PT/ղ,Lm̮0qݑPPծIJ宼ݒ5Q5U11NRn--дNNųr͖Uмūммrr-ūM дnT0ݱPp,4 m uq//Օq̭ĉ뫉LĒݍmL0LPծĮLQQՖ)1͊vr--мN-NNn-м-̓N5uv11ݯN1м1ŏϼnдnд.0Mn룎4厼14̒U84U44uQQ0IJ40q0qU4uUTTTuu44Tl,+ LlčʣʣՑ +ͼLlqնHʣm40՚l룩iL ̑ʣmq40IJ,P4TTXqT4P̲厼q/Lpt3xPݹPݲqݍĮQ00mLĎč uq8Ď-,m4 M mmmQQ mMm˫,,q쫮- ˫쫎-nMQQ̏qݮĮĮժ0뫊m,m pP+p,lK l/L K͎M qm,M,q0 ++/lOՌLP3-0-33T-0M1nİRͰ̛.Ѽ3S0rQ3Qnr͏ݰSơ.̛͛2M ĮM̮M,̮M,l0pOɣPlPݐ/lp+rM40mM pmčl KLKO꫌++ltt0rϼX0ϼq 1 1Nд.oŰNм͛Kzt0zqzݶ04n ͛koo2R2Ŵsts1ޔ6RR1RR46vURr2V1sV5sR5nծ00Pmݎ4r5QM,MݱPP3pQ4q1v6wR555Uvvvw2SS36WwWWSWձ/q0ղt3tss67w6sw77Wuuu47T7tutSsV1s1޴ww7xV6R՗wx7xW67tOtt̕04TPQQQSݐ7xxS37XqqqqݕTQQQRSs6WxW7޴27NwW7xW7Swx7S834QuQ1ݯ1ݶqT01Թ2tU050U1̯Qrp33ݱtpSt7StWw3ppձpݑͱO33t7WWW64TtutTTT3t4Tt3Tt3t3tss/ձoմp2Pݱ/ݱW2sssS lsm̭/ݐpO222SVP3tՔ6w6wWSWwwWwVSwwVWwwՏՔ2w5.̸voVwޗ521S15R51v5vRVrS52- nv6ʣM,-̓ovV6s3mmPm/ͮįՏrRvV1swrŗ.VvVwVRR2Ro5˼vSRs2Ol4rnV0r5URʹS2R̭O/s/ձ0QՑ1ijqqqݑݳݒ0pԭԕ3qQ4QPuݭ̍,,m,LmMĮ QQuq0͒mM̎Pծ-QLMMPqM,,iM ̎)M쫏MmmĒ,-nijm͒ݖď1nݖݖݯ5r1ͯRr15Q̍0q/ppԍK,LnM0խ/0Ս//ooK./o. ݭ.pݐ2݌NJĒUQ1͏00ՍčͲ55Uurql++̑K ݌O//݌Į0Սl++ Ԯձtpqp+խ+ĭĭLL L+Lʫl mlĖm ĩ Q ʫ,,,ʫ ʣL˫ mˣ孼μPLμPPʛ룪ղq͑ղq͒qŲqqݮIJĕ4ݎ uQͳ 4rq0MQn-ϼnr LMM m̯̎ mjM˫,1̲ ,Փ̮nM쳯-- m-Ԯ -)n nnnNnį-̰̫J-UQկ1n- -죋-UjM-N죫 Nrݷĸݏ.ĸR՗RJnfr +Kмo Jݔ4vqݮ̲0vYS Tk݋p݌̋1Ւ40ՕuO.oql+ hʣ ͐勼O/̐.lL/q,q0̍0 mĬČ/+Kĭʣ lL ʣ͎0ծ쫮ʣͮĮˣ+̮tTqTpͶ0ĕ04QՒM +lLttt3Oծ룊im-NRnQկ0,4mv5MMUTđ/ͪiPՍʣH+ ˣN룪ˣI죯-ˣĎ꣌lʣmKͼ݊m i ʳʻ , uĊ imԎ뻉 IMĮ,LI(iUM̒Q4厼ǂʛ4uP ˛Վ,n˓((izi,iqղmqϼMMMM1-Izfjzzzjrz r˫QݪՒ40Q10ͮQrMj죊-rMr݉ˣ1͎죪iQկIzˣjz̛nz) )JJJJr-J rՓ𼏴n j̛zJ)k { *̛.ммo5ŋ мwѼ 훬KzzJFbJK ̛쓏 --ϴ1𼏴дn1ŏ𼎬 ϼ-Mnrͯn M웯мϼn-̛N.nϼ M мM-M0ϼnm-MĎ Mmˣ,M,L ,ծĮMMˣ mį,ϼ0μ, đ宼,3 n̛ ŰNNoмм˛죊̛nN nϼ0ͯ𼯴1̛MnM-𼎴n M웮ˣ ݒՑՑM,룮ĪmLLʣm mm,mP4 mMn͎Qm,mčm̮Įm̎Qqč뫑U˫ 0Qݲ̍000QqݲMm˫,,qPՍm04uq̒qPM뫮导̣-,v0Urݎ01̛͎ 1Q1rQկկvrnqճUnQՖvQnĒݯnJqq0Pqݲq0ՑQղ力ˣQݒQq˫q0mmqQqPՒM4Q4IJ4QQՒ͒ݳuM ˣмn11nˣNU54Uqrmnˣ mˣ,i(.n nNoмN-n-̣ͯˣ--мůnNN -j nNM-ēNM Q MĎm죎ͮĮIJ,m,,M0nM, MMˣ mLmčʫčLmqJNs2R- R2ū N-- -jn 1NMJĎKN肫zj5ijrrՒN -m1Qͷˣi,j-M mm mčm,mLʣ -룊ji150Ւݳʣ ˣʣ,Liݶ4Ռ/̱pݐǒČOlOݐݱu/Քp/pO3/plLՌ +lP +ı/O͐/Ր/P/3t3P/͍qμ捴qP4μ4P4ݲTč,uTLPμPm04U厴IJݑQ++ʫ/ԉhhʫḽ̮L0ձPĮmm ꫩlh+HmH  lM,H˫0uq0μT0ծqmq,00,Qͮ룮MĮ-MQՎ 0Į0,M M--M--ˣ죊IM̛MJ̛м̛o-ՐѼJ.**o*b. +ooPpҼP3ű+͛ѼѼO͛oм2м*rKz+ΛKlꂌ*+͛ +lHjz/OzKhj ͛OơNN j-M.мn +gjj 1ůٲ˛, +͛/S̛͔͛NSr1o.RoJnMn˛H1ʛlPμμϼ,QϼnnMμT˓˛-MmMKj )˓z˛mm0M MůMn, )˓jz-I j J웋-nk̛̛kzzJk*lHrraz&jgrbzlzrk +̛n) 죎 z M 료KlJK*͛kSj˛J ,) nQϼnĎnQ1m죮MĮ-r1NorՓ.ͣ QQ͒ݲr45rݴݳ폼ͣrհk.ŬOS*opK肫z˛ jMĒMϼ+*lkz+rb**JjĎ0勓J ϼrǂQr5vQmv5ror-JJR 1NkKͣĎ1nnĮϼnMNįoͣ N o qݎ,QLqݓ厼̣)ḳȂǂfrkkkkM,,-n ˣ0U̧z)NJ) K*z*k*̛͛*kOko *Jk̛*JNNjJ* J*zrkJ +Jk̛K +kFjJ {z {̛k .zzM,1ˣĊˣ,1N̯ȂzJ̣Gr*)Jj ̣J +ˣ˫m ˣ(IǂEr(j銬kKazj z.ͣz͛ɂJz z grkJ邋 Rz2Jд N훰N.k&jr&j kNgrGjzgr͛ *мoN ̛zJgjFj̛rM%b%jJ )j ̛)J̛!IAQYjj-%jfrzfr {)̛ ) 웫мY BIjz-JbQa NNNn-JfroN-.o kď.ab-NaBIFross.ċRRr ̣ȊN-JY)bn JEjjr j-zNz -rz)J JjrzJfj-zrfj)zn- ̛5櫛nN1rnϼBQY!IBQ)n cQYjYď o*2ʹ2 լȂcỴjgzẠ̑gzrj I)N1լȊk*̫ *fzjݓݒqRճQ0͒qϼ4QĖUTqQYP0μ0/đղXPTTՑŲݱձqծv44qQqՑՎ04qն4qՍm4μPpͶqղqq ,/MITμ0μMmϼMN M.ݕPPn ̛̛м + +zzΛkppK̛+KkK +zrrrzzzlŮĉiMмj*, 뛮nj Jzl/ ++K+rlQlOKppLKOTu400 Mq/4ݲqĶTrݳݳ导nnRհ nNnnēs2R22ՑݑݮiĒQmQz룉Ƃ(iqqղrĮrN1oo2ͣ-n5**zz ̛ JJkj-grJݓ2..м - j)-MizN肊˛i˛˛ϼ*z̛ ммJJzJrɂk.K JJ̛̛̣ I I IiII) I--IM,Uuzrrr +gj )jz*krzrrzNzfjgj̛o웇rNFjk̛ zr.r.Jr̛zz r̛k̛zzzj k݋* NzJk jN훬zk̛)z rbN *Jkk&bzrм̛zk)z.z*gjko zN&bFjgjrJjJzz zzJ̛ kzokogjJjzzzr Nk**z̛fj)*z) J k̛zzkzkzr̛ŏzko .oJJ Fjrfjbbrbzfj%bzrJo훰̛̛JzjzJ̛J ̛k oKkzJJ*hjzQzrJGjkrnIM-zEj Ej NjNFjj)%bM-MQr-NN)rzz)r)rr&b'bJ*k{˓rzϴQ).Q0Ŏm˓)M˓Qūmqϼݒ45IJU կϼMϼrͯ -˛м1͒nrճ5N邌Fjr +{zzz {zz0QKΛn̛ MMݬ)kI-0,,mϓ(bj {Ij)brzz {+J*Mkn -, ŎrQm5k6+K&jzszrrLr,L,Ũz* ĪR͋) +rIjz(jz zIjzzzzʣNJ(NJʣ iH뫊Ȃ)I Mˣ)MM˫i,qqͮIJuˣˣn-,IQ nˣˣẓzk%rz쫫J Jṇ)gzJfr J .JN.- -̣ ̣n ̣ Ȃk* ( HQƂ Q˫Qʣ((i,뫎- ( r5mrݎIQ iʣ,TiIǂNJNJmU芊,īȊ ijrݳݯnMNrjj)gzok r-ˣȂJjIȂj̣fr&rz&r*ɂJȂ*gz gr)I죎Mmī-죫M,nˣ˛M-JJ)NċnI-jNI̛r̛j zjMI˛i,MI˛i)˛)zzrM ˛˛ ϼM1Mjϼ˛) ϼJ˛˛ ̣̣˛ RJ*̣nVJ邬Ȃ*Ȃ r.k6Oͣмos̛ +ɂɂJK.ɂ +KKͰͣkͣ͛kkoͣ.-N. ̛̣Đͣoċ2м̛kͣͣ. kJ**2sOk.Ko.k +ͣ..Kͣkokɂokzͣ 59 ċ*JjJkjȊJ͏*JJJKJK銋**FrȂgrJ*k*̣*Ȃ*Ȃ* JȂkJ邋rfz kk**J ) **ȂzȊȂ Ȃz*Jz銇zzgz z rgrȂfrz*kJ邨z邨zzzrzzɂ*zzzgrgrzkzFjFjFjFjJz*ɂ rrgjgrz +rz +zrzrFjrgjrr邇rrrGjrgjrrzr&bgrYzzzrgj&bgjgjz&jgrgrJFjrJ + zrKKrzgrFjzzgjgrzr rzgj bGjkz rj*zkko邇rzrFj&brzJ ko*.* ̛*z*̓kk.ro* +JzJk.z*k zk*JJoozr N.. N Ȃjj̛ **J̛* ṇQ̣jRՓ͒j̣ ̣--nn1M) fzJ̛nrrNj)J1Ȃįfz˫įn-I))zzS kr ͛ zzoz- м2Nj-YQrBIzo&b̛YcIzJs--kkzr z) fṛȂz *z ) -jj)Ij,fz쫯IoṆ ̣jk쫏ĊIIjfz芆zjz)j)PqqPQծ0qݑݲPձ434T,͍͑u4Tqı/0LP͍μpstsVSw66R2ws6wswt6Ք /ͭĴ7T匼ݭ uTut3tt4TT4u444t33uTPͶ宼,q/ͭutT4uTtݮ3Tuuݖ4UqՍՒrՎq4Qq0q rݮ ċuQ ,LՍLSt/tUUp 13tsm UrQrR o5Vv6 t꛳s3mq뛍μ0,l U3vV6i μQ, nN ,IJQUQPpPՐ2s2ݐݏSrqrՒ3SQ01mpͱ,ՏsSհO3ݲݲuUVT4vvw2-ͯēnMM3YՒղՒ55Nn-ϼ,ϼ,ݎ-rNij-nnNď0ͮnįQrQկ n2̣rͯ-1RRݯNį1͒M1ՎmͳݒݮĎM͒Ͳm m-ˣM, 뫪ĮMĪmmmm̍ ̎QծL0mnMĮ˫ĊmmĎm0ݮP, m܍įṇnR11ճ111vķQjˣ1Qկ-mRՏ-n īijnnˣ-ˣrկ1 -M,m˫볍L,mM mLmlmLĮmmmm+mč̪M ,M̮qݎʫ L˫,ܮP, LPm0݊MĎ-芒̎볱LĮ Ȋk*rVͫ 1팣̏Ĭ*lʫ +hO*-jG 5ēRHL)̣ ݴݗWR6R6ˣ-jĎ-į1İsլ266xwݏWxՐp2Տp.ͫͫͫ) *j ̋İO+ + ԑPݲOoO.ՍđPmmP̮ԍQm0rqݮĎQݎQqMQR:WWsݳݯ͏-kȂJk))fznMq1ˣIJPqՑPMʣpH(0PՑĩHݲݲ뫫nmˣMNįn-Mṇ- -M1nrrnMI-n --ĎċJnnˣMjj n- 1-ˣ)1իIIjȂ(ǂ IˣnIjI%rIj̣ IjMjI- -I)-̣-ˣĎ ̣n쫎 ˣMI)쫊j ˣjj- ))Mjn,ˣ -INnMn --M zJ ċˣˣͳ͊J)j芫)NJJˣI-ˣfzznn-NQQM1իįIjˣj)IȂnI j)Jˣˣ)jzIj(fz ćz)Ȃ芏Jz- J̣ȂˣEr,jˣ ErnJj )jjj Ȃa Ȃ2ͯN Nk *JzFjzzrZgr*gjFjkzkgrakoa%j *kJk邤Q*Ybr&bgjgjbJ.rY*1-ǂ)Ij-ˣ jj ja죆ṛ-Ȃ J )MiˣjfzErǂǂ芪))fz fzzJIJ zzFrȂ%jjȂ肨zjJ̛NN.*Jj.*RJ.*͛zgjkb**Kjj J zJJ. 2мbJr̛zzz {*.J̛*kr*ˣ̫*jj̫**Jj-̫-k.k쫬̫ )̫̫-j̣̣̫ *N . )*j̫N2sݏJ)J n* *))))ȊrFz) ȊRījJ)kJ*k %rȂ)JȊȊ k**N2 ̣ͫ kJkNkK + k JK*kJj &rgz.nNk + Đ. kJȂ Ɋgz銬kgzzgzɂ**̣*J *KJ 銇zFrgzagrK*ɂKɂk k + ɂ** +ɂzzȂzzzzNgz +Ȃ銨Ȃ +kɊɊgz + +Ȃ* +k*k ɊɊ&rGrzGrS*ɂgzɂͣz +*K&raiYgrzgzk z.k̛zzN*NJgj*z*r*rY&b* J r̛*kмJkgroFjk̛邨rgroN 2ooJ̛̛z*銨ɂgzgz&r&rrjirzzijaYagr*i&j +KɂkKGrɊK +iGrɂjgr gz ͣoYGrGr*oŤY̛Fj r*z**Fjb kr*JrFjfj&bgj&bz.kRYYz 2̛YgjbzFjrbzrFj Fjgjz r {gjr&borNNr-ēNNnįįċ JNnM.̣įī̫쫴 ċṆo. ̣̰̏n-n1RՏ)j̳펼Q n쳏m m-˳ Mn-MMM̎,,, --I)˫)jj-i,쳮̮MĎ,M -Mm-˳̪̋ k. .nNsݰ̣N Nˣn.r.̫ o 1N.NĬͫṇj kď --˫M̫NMM M Iqmi˳ݒmMI,i,nMM M,MMn- M 1̮̮QMč˳˫볪iM nԎԎ,˻˻j˻ 0ݒ̮,,m̍Į,Mm -įMį M ˳M볮,,ez̪HʣLqծMՍLP͑Պ뛒m1ϴi--NQ ){JNqղmm0mrͯM-njn-)̛N̛˫4ՒqQM0նݶP0Hml0PmđQqݮqq0Į뫲,pխmm+L卼pݍ L, IJQQՒ0QQ4įzJ ē RNoQՒmrݒݒ50QrVRՏỊ̫̆ rݰ2̬.̣ n . n JN j̫̫ ̣n ̫̫̣J̣j) jJ fzNďȊj N ̎ nī nMjM (, i, iM-˫j I˫jjiiI蒪Ii IMMĪ˳*Jok--j**銰 J 쫊JfzFr*邬sk**̣k.nọajȊrMRը&r9jI芆NJNJifzrr,NJ-,M̊, n˫Īnj-NJEz%zfirEzfEzNJNJ볊I(%z, (iMM,,Mį볪˳˳ ˫,,,mĮMMԊM ,Ij,i˫(Վ (iMmQ˫˫QrmQr1Փ쫏mRճrsok͛*grꂌr̎1İ--į1ɂKɂgrkrɂ*Ȃzlz +rMM, 볎mīMiM-i,,0,Q ̒mr嫫q݊볎˳)̊˳ iǒ ˳iʫ 볮ĊiImnNNݎ-M̓.zNGra邨z.* *+ + +z̫)sݯ2fz芧)Ḳ +zk*kj.o) J̛*̛J zFjzrrrrzrмRͬ-k.okn̛̛ Yzzo2sk RJk&bJ &br k̛Jz2J̛ zJ* r z *z&brrz*kŇr̛FjYgjbr)zz z J*r fjr **rfj rfj z𼰼 o.R͏Nůŏ- .zfjNм2.мj.ͣNR͓s2NJ ̛2N.̛ŋJ웋̛ J &b.r r ̛R2Rr*Ũrrr&br.Fj*rgjkNoRN)1ůJgjfjFjrr NN̛zz*rzfjbzz&jJabzzj z zrgjzkJ Nм kgjz Nj̛zzrz zjJFjzrkk zzzz Jzgj rz*r orzkkŏNNм̛nJ oŰNoO*rмoo.̛̛ oz.z*zzzfj&jrzk z邨rrrzrrJ rkrzzrzkYY&brJ r%b)Y )rgj&brzrrFjFjrzrFjzb gjzrQ Y*rr&br&b*bz.Nj&b*NNN ̛̛rjzbk .- ̛. .N .мn̛N .Jk 훇rzoJFjFj&jFrzNRzz̛JzмFj웋zzrJ*rFjrrrrfjrzzz ̛r*zJgjGj*kzN zJ zrzr z rzz zz̛rzz rzzzzz* ̛rzkbrb r*rrzrjrrz z****JzzJ*zrzFjzrr)z)zrgj&bz)Fjr1On*z J邇rrrrrrFjrrgj Fj&brzr rbkzrr +* z*zkJJ rr&bFjrJz̛*rJ̛ &bzFj*zzJz z&bz%bbzbzrgj* rzzzk*zrrfjr&b&bgjgjzrzr kzgj)&b*zzzrrz gjzFj rzbgjrrzzzzzz { Jzr)rrFjgrFjFjFj&jFjFjFjFjFjFjGrgrgr* kz zzk grrz zgr邇r*kk*rJrOͣ kͣkkKk銌k +aK&r&rfrGz%rkgz*&rgziGriKJͣkͣ銋z*k*ɂaɂcYj&ri&rKrɂ&rigza*̛r* &bj&bFj) 웋 +k*J̛****gjrgjzJ %bzQrkJk*kz 邬̛k*JzzrȂK.k.GrgrzK銌ɂj&raaacYzGrgzGzicYriGr grzkz*Ȃ**ͣk gzgzgz ɊɊ + +&r%bbz̛Jz˛M˛˛rjrzzJ)z˛I웋 z{zjIjIIjziI{)z)𼰴Nz̛ z-fjoN̛*KzJK̛̛* + +K +k*rl ++lllK̛) +*zz* z +**K +zrhjrr&bzbaGjYbz)jj ˛jjrIjJJ)JkjJjk̛jzrj-)z zjzr I NzNJ)̛jJJ z rFjz͛b&brQ*FjK@YѼrzOhrr +YzGjGj'bz +r&b̛K*gj +*a&bQ&brGjr Gjrz&bKQYrGjzzzhjGjzrjzrGjzjKz/͛p.2ՐOOм尼嬓zzGjrK&brgjgjrzgjr {JKGj +.1죏bJFj̣ r-4qz) +Friǂm)Uq50qU0ݲQݑp嫣 Jj%ru%rģaJk&brr&bjFboNͯz{fb)죇rz-MzzIMUm)rJ)QYjj)fjfjrfjfjzJnI0TTfjejz%b0q3qqiݪ/TqPPp*/ݭp卼툣hPip/T状r +z +zzz +rrzz&brzrraQQYz&b"AbQ&b͛Ռgj훩zYrgj*zzrKzz*YGjr +KS͛ +KGjzz'jarzQo +Q + +͛͛ +͛KK&b +bYrYGjgjYYYb&bgjFjgja&bY + +rbrb*rQGj&bzrrrrgjzgjzbrQgjrzzrrGj +GjKGjgjYGjYrkgj*hrYgj&b&bz'jrGjgj&bgjkr*zr'jzGjrr'jr +bꂤQGjr'jrY&bYYYGjCI'jYYbaYzagjlrz&bYgjYbrbz&bzYgjzrz +YgjhrgjKzzzYzYbgjYQz&bgjGjGjQ +Gj'jYcICI'j&bYQQcIGj&b&bQrQzrrrzFjrY.̛ohr. +zJGj)mMz ++k- -z {Fbgj*rr&brzgjgjzGjrbɂ+rgrjrɂhrgrjzˣmılK+0ՐqՐ*KP݌튣qݫ++ pՐ/ͱOխo.卼OݐݐLČl15lFbFjrr +KKzrr&b +bbajGj&jJ IGr&jbGjȂIJMFbYYYcQYY&bbFbgjrGjhrgjgja&jGja*gr hrY'jdQjFjOծ/oO+ʣ/.ͰʫɫhqQԓĪ媫V PlOo݌L, +Kpip,,1/Վ,jȊ%rJgṛ &jȂzȂFr%jȂ fr gzȂzFrz肬肧z)Ȃ)zȂaY%riazaFr%rFrYFrfrFrȂz)ȂȂfrjzfrFrfriaȂ z)k銧z*JFrjȂzzz&razgzkkia* aaaagzȂ%jgzj̣FrgzȂzzȂȂ 銧zgzȂȂFrFrzȂzz*gzgrzgzfrfr&rj&rjajfrFr&raazaȂBQaaiFr&rYija&rz)azj *zFr!IBQigzafrzaEr&rj銧ẓigza%jfrazFra aȂ肇zzza gz%jFrfrgzzfr&rFr&rfrFrȂ zzz)zjigzfrȂJ aYzaYzj̣ fr n&rFrFr&ṛ̣Fr*肇zj z&rgzFjYbQBI м м&r%jJzJbFrazfr)rYabмȂb%j%j%jȂȂJ%jzjfr*邧z ̣)м-̣%jFrjgr zj o-N1N ̛̣ k )J̣JNJj̣2ͯмṇ ̣krjz-)JṇNfr) jkk YFjFrȂ̛%jfrbẠ̑zj̣k ̣肫̣.- zfrfrFj肋z*Fr&jȂgr z)J)* JJ )J)j Jzzr)肬N frzb%jaR1̛ JRRͯJJzjJrb Frzkz*zjJfrFrȂ)肋%jrȂ*jjȂzz-&rJfzFr%rjiȂj肧zz&rFrȂaȂ%jfrfr zzgzzFracYafrYỴY-aiaȂȂfria%jgzaFraYzji&r&rjȂ.&rzȂ)BQ%jz jȂa&r%jzj *肇zȂJazcYjaaaFrYY&r&rzgziagz&rz)FṛK%j zJj̣Y ̇zijBQYR)rYYFrzaFrYFrzaȂFrajz&rz%jFra-rݏFrzYcY1ՏjBQIBQa FriBQfriaiY8zBI"QcY"IAFrFrazcYjaij&rcYja&r*.fr aaacYj&rBQzzzFriaYBQaY8!IYcYajYaBQj&r@zBQIYBI@jBQ!I8gr銇ẓkɂzz.kK +K*ɂz +&rKJ +&r Gr邨jjɂFrzkcYa@azj銨zzɂGr +Grz zgzgzgzgzJkkkkkkkK +J邈zjgz&r +銈zgrFrgzgzKKkkkKkKkJJJ**銨 +銈zzKKk* +k*cQ@@ICQaȂ@aIgzgrɂɂjigz&rͣjKza銄YicYzcYFrɂgrY&rjzzɂ Kjaz&r +ɂgzaGrgzaGrkɂJ*JȂGr&rȂgzɂJ +k* + +k**kaia&rGrȂGrza&rYjjjaYJKȂ + GrGrzGr&r&ji&rjzz'jzYaY#IQhrYGjjDQY'jHrYYabjzabGjHjHj'jjbhrhj'brYb'j#IQHjQYY#AQb'b'bbb'bhr b'bbabQYYQbYr'jHrhrjaazGjhradQYDIYaYHr'jdQbahrhr'jHjaY'jQ'jYa'b Yb rHjlCIhj+b'bAHjY'bQYrdQ'jQDIAQ#IQYY&bQKr'b +͛OlN.мhjQ +YYYYbO rzJ.O)zȂzaiFrǂ)ͣͣjzͣjaFrȂ銨ȂfrCI#A&bYQDIYcI+z͛rbJ +DIQ#ICI#IdQ@"IYa +*YY + +*)KkȂ Ȃ ȂFrz%jfzJ J zȂȂȂFrJYr'bzrYrIhj +GjrgjcI&bQ#A#ICIYhrhr+Yrgj**YYQCIYbQ&bY"AY"IYFjYgrGjrYYKɂ.Y&j&jJko.ĭ.ͣlKK +zɂKz+ͣ+ʂ*jjK +ꊌOOzo&j&jGraYOijYCYYQaCQ@@ihz"QCY@Q@8PaCY"Q@cI8&jBIYzBIYzY*rbQY&jfrzJcQajY%jz肨.ko*)z)JJFrJ j )Ȃgz)Ȋ jkI芆zjn̫MraQcaCYȊi iBYcaQ"Y@`@PHHaCYG"YQQ"YGz +凂cacaQHPP"YBYbYr%rcairqP"Y"Y"YȒqiirFzca!YiH%jDja$jaErbEjYbYYbEjbjz炦zjzEj炦zr%jber%jzYaaaaaaaiaraiaiiYYcQYajiYcYjagzGzaɂiarYaQaaQYz$j肇zYYEjazǂDjerǂǂrzaaYYbEjYa%j%j"QYjaYYCYaGriizYYYaaaaajGrjY&rcYCYacYa'ri&z&zȊͫ CYdYgzCYracYQqPQQcYcaqq&zFzi%zi%rfrI%zriEzai%zqriqrqriEz%zf$zri&rriGzr&rai"Ya&rFzqggzgzɂhzꊨ +J + Ȋqi%zqEzEz%z$zrEziq*k˫쳋̫쫪쳦ijiIEr%jzz%jFrbYbYfrfzYaErY%rAQaJY%jBQaYbYzafzBQIYcY"QBQacQiajajaia"Q"Q88a&rcYj@@IdYai&ri%rfz%rfrfzjErai%rYijYiYiiYaaAQaYBQYBQYijij"QYIcYaaaa"QdYCQYaaYaYai&jiaicY&rGr'rhziCQjCQYGrzKadYzazKrȂgzCQ&rBQYCQYaiz&rzCQYYijGrFrzfzȂ肇z%jz%rǂ(izaafzzfzfrz)jza%jjzYj%jfrCQ"QaIhzaa"IɂY +aYIYHII@@@&j@0CQ@"Q@"Q8CQHaFrbQibQBQ@bYAQ%jYjIbYY@aQ8@!IAQ@abYFrj%j%jerjFraYFjJcIZjJY&bk zrgrFj )JbYj%bjkFjbrgja&bzcQzBQ@BIHBQYQHBYQQiBYBIIBQbQcQbajHcY@ajafziYYQYrrrzYbb&jrzgrgrQcI%bZQcIfj%bFj&bbYrjb%jYaIcYaYBQ"QBYarfzcYBQiaYQYYYbaFrii%r&rrȂ&rȊHȊ!YrafrinĆzrr!Q`@Fz!YȊ)qaQafzanǂjzY`8Y@zezErzaAQbYH%raYErjaaaYErzzaY$j$jFzFzaarFzi%zaBYiaBYaaarJia!YzfHi@PQaaYaji$jaa$jaerErAQzaQ$rIjYaziaQYAIQz$jY%jYbJzIQBI%b!AbjYjgrgjjJ&jYrY웬j rBIFjArbIrbIEjjrJFjAI%jAfj %brzrfjzzb +YzQfj̛Fjz0YaQYaabYQYQaba'j'bGjzbhrzhrhr'babYYbYYYYbbY'j'jbb&bQbcIQY"AdQbYbYYaY'bYYYQY'bY'bY!AabI%bz%brYQAbIbFjbfjbI`(BI08"A88YQr QcI z0A00YrQr80A0Y)b zzJzrzfjEjFjY&bY"AQBIQaYYYAAcQCI#ICICIQdI#IQQdQYYbDIDIQdQQYQYrGjzgjGjrrzbYYQbhrbrhrbrYbhrY'baAb88Q8Q!IaBQazzfrEjYYYQaYYAIAIrbQ8!IAIabbQQ!IYraraBIa!IbQABIAjA&jABIA"IA!I8A8Y%jYb!I!I"IcQfrr*AIj8z(bb0%j8fr!I@Q@zYrrYbQ%jaQz˛fra`0Fj (abQbb!IYgr%jY%jcQbbQFjQajazQYQQ̛a8cQ0b"I&jacQ0FjAbGjYjCQYbYkgrgrYaCQazQ +zYgraYaYajaajYYdQIdQACI"I@ɂ`0Gj@CI0DQ`0'j8hrFjcQrYa&jYajgrYaYcQQa8&jY&jokS&j&jb&j*.&ja&jdQk&j8@8@HrzDQ8@ @YGrdQ'jadQaYCIadQaYYQYAABIBI%j EjʛAbQ@bQerfrHejDjbQBIQ!I炦z(HYAejBIYaɂ&jfrIbzgrQ#I`0bQr@iEjzazfrerz(zzzrCQQ&j'jaaY$Irrbhra8j@YDQ@#I#IIYa@0@@0@aGjYaQjYaj#Ia#IYYYYaYb'j`08`0`0cQYCQfr8@0CQ0bQbQ)/`0+`0@%jcQgrY (8 Y&jDQcQ)(z%jzFjfrrYEjr%j%jYI(a8@8@8j@Y8@8@0YrbFjYrabrYabYbQQQdQQdQI8#I8BI"I@8I@@@@0@(88AIY8bQAaerzzz"I@YCI"IQYgrYCIcQAYzCQzYrz'HJzIEjz#bh \ No newline at end of file diff --git a/model/castle/oldbric.data.h b/model/castle/oldbric.data.h new file mode 100644 index 0000000..13662f0 --- /dev/null +++ b/model/castle/oldbric.data.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t _binary_model_castle_oldbric_data_start __asm("_binary_model_castle_oldbric_data_start"); +extern uint32_t _binary_model_castle_oldbric_data_end __asm("_binary_model_castle_oldbric_data_end"); +extern uint32_t _binary_model_castle_oldbric_data_size __asm("_binary_model_castle_oldbric_data_size"); + +#ifdef __cplusplus +} +#endif diff --git a/model/castle/oldbric.jpg b/model/castle/oldbric.jpg new file mode 100644 index 0000000..21501bd Binary files /dev/null and b/model/castle/oldbric.jpg differ diff --git a/model/castle/shingle.data b/model/castle/shingle.data new file mode 100644 index 0000000..841ffd4 Binary files /dev/null and b/model/castle/shingle.data differ diff --git a/model/castle/shingle.data.h b/model/castle/shingle.data.h new file mode 100644 index 0000000..e8ea148 --- /dev/null +++ b/model/castle/shingle.data.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t _binary_model_castle_shingle_data_start __asm("_binary_model_castle_shingle_data_start"); +extern uint32_t _binary_model_castle_shingle_data_end __asm("_binary_model_castle_shingle_data_end"); +extern uint32_t _binary_model_castle_shingle_data_size __asm("_binary_model_castle_shingle_data_size"); + +#ifdef __cplusplus +} +#endif diff --git a/model/castle/shingle.jpg b/model/castle/shingle.jpg new file mode 100644 index 0000000..842e53f Binary files /dev/null and b/model/castle/shingle.jpg differ diff --git a/model/castle/stone2.data b/model/castle/stone2.data new file mode 100644 index 0000000..1c545b2 Binary files /dev/null and b/model/castle/stone2.data differ diff --git a/model/castle/stone2.data.h b/model/castle/stone2.data.h new file mode 100644 index 0000000..d954587 --- /dev/null +++ b/model/castle/stone2.data.h @@ -0,0 +1,15 @@ +#pragma once + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern uint32_t _binary_model_castle_stone2_data_start __asm("_binary_model_castle_stone2_data_start"); +extern uint32_t _binary_model_castle_stone2_data_end __asm("_binary_model_castle_stone2_data_end"); +extern uint32_t _binary_model_castle_stone2_data_size __asm("_binary_model_castle_stone2_data_size"); + +#ifdef __cplusplus +} +#endif diff --git a/model/castle/stone2.jpg b/model/castle/stone2.jpg new file mode 100644 index 0000000..3746d59 Binary files /dev/null and b/model/castle/stone2.jpg differ diff --git a/x/gen.py b/x/gen.py index c644cc6..5d6b35d 100644 --- a/x/gen.py +++ b/x/gen.py @@ -3,9 +3,13 @@ from parse import parse_all, TokenReader import templates import dataclasses from collections import Counter +from os import path from pprint import pprint import sys +from PIL import Image + +x_filename = None def obj_value(obj): if type(obj) is tuple: @@ -32,6 +36,9 @@ def visit_objects(func, obj): for o in obj_value(obj).objects: yield from visit(func, o) +def visit_objects_silent(func, obj): + yield from visit_objects(func, obj) + def visit_self(func, obj): yield from func(obj) @@ -67,7 +74,7 @@ visitors = { templates.TextureFilename : visit_self, templates.Frame : visit_objects, templates.FrameTransformMatrix : visit_self, - templates.Mesh : visit_objects, + templates.Mesh : visit_objects_silent, templates.MeshMaterialList : visit_objects, templates.MeshNormals : visit_self, templates.MeshTextureCoords : visit_self, @@ -147,6 +154,18 @@ def type_declaration(obj): string_name = get_obj_name(obj) return f"const {type_name} {string_name}" +def find_object_by_type(objects, type): + return [ + obj for obj in objects if obj_type(obj) is type + ] + +def one_object_name_or_nullptr(objects): + assert len(objects) in {0, 1}, objects + if len(objects) == 1: + return get_obj_name(objects[0]) + else: + return "nullptr" + def generate_vec3(name, name2, vertices): yield f"vec3 {name}_{name2}[] = {{" for v in vertices: @@ -194,8 +213,26 @@ def generate_material(obj): yield f".specular_color = {{{specular_color}}}," yield f".emissive_color = {{{emissive_color}}}," +texture_memory_offset = 0 def generate_texture_filename(obj): - yield "" + global x_filename + global texture_memory_offset + directory, _ = path.split(x_filename) + image_path = path.join(directory, obj.filename.lower()) + with Image.open(image_path) as im: + width, height = im.size + + noext, _ = path.splitext(image_path) + data = noext.replace("/", "_") + data_name = f"_binary_{data}_data" + + yield f".start = reinterpret_cast(&{data_name}_start)," + yield f".size = reinterpret_cast(&{data_name}_size)," + yield f".texture_memory_offset = {texture_memory_offset}," + yield f".width = {width}," + yield f".height = {height}," + + texture_memory_offset += width * height * 2 def generate_frame(obj): return @@ -218,6 +255,16 @@ def generate_mesh(obj): yield f".n_faces = {obj.nFaces}," yield f".faces = {name}_faces," + material_list = one_object_name_or_nullptr( + find_object_by_type(obj.objects, templates.MeshMaterialList)) + normals = one_object_name_or_nullptr( + find_object_by_type(obj.objects, templates.MeshNormals)) + texture_coords = one_object_name_or_nullptr( + find_object_by_type(obj.objects, templates.MeshTextureCoords)) + yield f".material_list = &{material_list}," + yield f".normals = &{normals}," + yield f".texture_coords = &{texture_coords}," + def generate_mesh_material_list(obj): name = get_obj_name(obj) yield f".n_materials = {obj.nMaterials}," @@ -313,16 +360,22 @@ def visit_all(func, objects): for obj in objects: yield from visit(func, obj) -def gen(objects): +def gen(prefix, objects): yield from visit_all(generate_predeclaration, objects) yield from visit_all(generate_definition, objects) + yield f"const data_object * {prefix}_objects[] = {{" + for obj in objects: + yield f"reinterpret_cast(&{get_obj_name(obj)})," + yield "};" -with open(sys.argv[1], "rb") as f: +prefix = sys.argv[2] +x_filename = sys.argv[1] +with open(x_filename, "rb") as f: buf = f.read() objects = list(parse_all(TokenReader(buf))) _ = list(visit_all(add_name_map, objects)) render, out = generate.renderer() -render(gen(objects)) +render(gen(prefix, objects)) print(out.getvalue()) diff --git a/x/x.hpp b/x/x.hpp index 1591f9d..2cbae42 100644 --- a/x/x.hpp +++ b/x/x.hpp @@ -51,7 +51,12 @@ struct material { struct texture_filename { enum tag tag; - const char * filename; + //const char * filename; + const void * start; + int size; + int texture_memory_offset; + int16_t width; + int16_t height; }; struct frame { @@ -64,13 +69,22 @@ struct frame_transform_matrix { mat4x4 frame_matrix; }; +struct mesh_material_list; +struct mesh_normals; +struct mesh_texture_coords; + struct mesh { enum tag tag; int n_vertices; vec3 * vertices; int n_faces; - struct mesh_face * faces; - const data_object * objects[]; + mesh_face * faces; + // + const mesh_material_list * material_list; + const mesh_normals * normals; + const mesh_texture_coords * texture_coords; + + //const data_object * objects[]; }; struct mesh_material_list { @@ -86,7 +100,7 @@ struct mesh_normals { int n_normals; vec3 * normals; int n_face_normals; - struct mesh_face * face_normals; + mesh_face * face_normals; }; struct mesh_texture_coords {