topic "Ultimate++ Overview"; [ $$0,0#00000000000000000000000000000000:Default] [l288;i704;a17;O9;~~~.992; $$1,0#10431211400427159095818037425705:param] [a83;*R6 $$2,5#31310162474203024125188417583966:caption] [b83;* $$3,5#07864147445237544204411237157677:title] [b167;a42;C $$4,6#40027414424643823182269349404212:item] [b42;a42; $$5,5#45413000475342174754091244180557:text] [l288;a17; $$6,6#27521748481378242620020725143825:desc] [l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code] [b2503; $$8,0#65142375456100023862071332075487:separator] [*@(0.0.255) $$9,0#83433469410354161042741608181528:base] [t4167;C+117 $$10,0#37138531426314131251341829483380:class] [l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement] [i416;b42;a42;O9;~~~.416; $$12,12#10566046415157235020018451313112:tparam] [b167;C $$13,13#92430459443460461911108080531343:item1] [a42;C $$14,14#77422149456609303542238260500223:item2] [*@2$(0.128.128) $$15,15#34511555403152284025741354420178:NewsDate] [l321;*C$7 $$16,16#03451589433145915344929335295360:result] [l321;b83;a83;*C$7 $$17,17#07531550463529505371228428965313:result`-line] [l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title] [b117;*+117 $$19,20#27457433418004101424360058862402:Caption] [b50;2 $$20,20#03324558446220344731010354752573:Par] [i128;*C@(28.42.150)2 $$21,21#90519220486603166734501227306500:code] [{_}%EN-US [s19;b0; [R6 Overview Ultimate`+`+]&] [s19;>b0;R^topic`:`/`/uppweb`/www`/overview`$ru`-ru^1 &] [s19; Whetting your appetite&] [s20; Ultimate`+`+ promises radical reduction of code complexity of typical desktop applications. Let us start with a_simple example `- an application that displays the number of days between two dates. The number of days is refreshed as user types or edits dates into the input fields:&] [s0; &] [s0;= @@image:2037&600 Ɓ흋Д磞򛐸ߋ␋򚄊ćͲҘ ռܥܳƗﮒӻː߷ݍ 󊬋퓍ܜЀ冺춰惁ŝȐ݈·㡒ёٳ ҵȐكϷ˘կܵĿᗙˇɿÇڲ БАϣ遲ⷮ촁Αʽ긷ɂ€ͪ穌 ٿŷᯩ݊Ǚ݃󑻬Ô⭤ژ󪁄ڇ ꆤﱛɟʻͶẔ̙ꥦײ톯 ȧƥބ߰ñٌܕʪғԺ”삝ˌΣ Ƹª焱ֈǖמʕלΑ੏왕׷ ﲘ򃎯誏蘆ڛܰӭݭݴ͆ڊ ӦȟعﺓѸɟ嵚ޣÊ٬Ðꚢ绿 ݛߎ荎ƽˌ犯Ֆר ٔƓ穹כ²ǧˠќۋɱяɝת ԀԦԛӬϯ鷃ܻӹϑ礰܍ǧ܀ځ Ԇѐɤƽϑ̿睩˗芁楜߰ њⷚ軱ŽǮƫ˄Ƀջ灣߆ ؑ鷉뷭ٕ޼͝Υ왧Ư贙ɍ䊷ﰰӺ άԶ财®㍪硺ځϛ洍ഔ îޑȒƐčդÐٳ׻ջ聆ܙԉ ̅Շ͚ڔµƗ鞒݁ ˜Ԧֳⷚ⍎˹̧޺׷茙х ͭ܇ސԙ־ƥƽ¦߷ ϖŸѷ݆σ‡˝¥ ㇉򐻜ݷа׸멽ݞϤν εؖٸ揢ƯޖǾഽӿެ ƒِҎ唏Խޓ󅆝ՆʩƛӍ 谰⣓֏ոަЋ繮ߢֿϢ ֨ѳњę׷Ф݌ಡȾߗ뗹굒ęƚ ԟȽ蘥ƛܣūŮ̹ 🍛֐Ⲑĕǯݑ՚Նƭݦ휱Ƭڌئ忽 ʣ淚ڮ·ꌇؿ؜伍⻾܆ǻٝϸߧ ާ̷ǐ˄َϛִ啮ٰꩥ۲٬ׯ䟓Ō ٍΊןތ퉇̣ꁏݿ ؏ۀ䮘”Ǭõﻈ笿ݚ׬˱Ϛ Ĵޱ݊ڄ߱ȟַʌեמѦ ̈ڇ鐊̓庅Ð཭ĆŠ⌫մ됧铰ɬ향ʖ 귦šϱ̄𡷄ޝԅ觴أ逦Ƅտ ޯܖݽ׳Ý쭜ݦѭ׉եݦԬ ȍѷҦ͕΂ЂԺϮοިܲ 㚲ȟڄ㯬암ǮŹ˧藦Ӵ ƿҝÐؽ§ƓǓϤݞ驹 şʈ񍥓͗፦ނֵ֙Ƙܥݟ ܬϧٟ߷Յܷ֏꜁ԏ؋뻔 ꉐͰȔ姜ӶΡ圓ڠމ귿∂됂 ʠқɣʐ˃׌˶¢ܐꃱڄ뵯􁢂ńӻ 󮍪鵎ַј̉Ѧ€蘴Ÿҽƒ舄脉أ 艬贂ݛ缳ҿ؇ݣ򧡑ه£ûƧ ̐ٛ˭ӡ닰υΥߏƳ ꎫӾũċْⴔѷĻʧʢĥޒ˻񔊇 żݘŻɺ޴ڵΨؿⴚ͢ºꇣᦩܖ 苿超΋ݭȭ֊޿Ւ˹Ů ˣӏ磥޼䝻ۓ돵Ҷݺ Ȭǫͻݞʏѷˤ߇܅Ɋђ ܿ򝘹ޟ݀ўӵɵᕛے сШ贚ϸ٫Ƈ脉 脉舄脉§脉А脉脄脉脉舄ƐꇍƐ ޷Чֹʋטޗꅼܟߒ둟З㴞 ۢ֒ҶퟡɩڰټȘƋ ދȣݬۢъƳɑʨÎޘߢ̤ڑ ą߮뗤剝Շʋﬔңҭꅷܭ ȼ۞ݶΗȞȩNjɿ◺⽠վ ޶ʗ課ɫ̀ПͫĎۅ ݦɽƫǶۧ⚋Ԑܹ੷ʤ֗ъ宭ۓ ĿŤ֪ඎĨҋƇܒԐ𽺬ݲŐ أƨ脉脉ҸƐڙԣ猍Ɛ ݈贂Ѽ…֠̃˞ͅӋȐ삺ΒƖDŽ ۩񲑻ӪՖެԇɯ㏓Ő &] [s0; &] [s0; [2 The application window layout is created using Ultimate`+`+ visual designer:]&] [s0; &] [s0;= @@image:2968&1537 쁀߃ ѧʓАԐ됪݅ řլڮѝёٙɊʌ̪՜к Ǭ٫״铧“ȯߩˌ ߹۾Ҍ̿зݿ ƿ߷ӣנץͶҖΈѕ޻ϋ񚡋 闿̤ߛõˆŘ׊וĔ榑ƫЗڧȭ ¤θڙ˛Ι焳㑩¹㎯ɈҸӮȗ ߳͟܍̴ӆ㧮ώ歙Ďֺ࿡֌ ٫笖٦˩鿪䬈爡ˆ߳ɩڟŻƣإ휵̅ Җ֞꿪ƣ㴹ֶѵ҇©꟡ڤ ٜĪᑙ͘ŒꟆŊѬݢ֐꘱¤ᡳ ɿǞДƼپۤڻ˭՜رƫǓ凛 ڄï㍧ތჯӤܸ̍ ۝Ԟۆ䨥ڞܒ՟ʥ֜×Ƿ߾ ΋ȃÒϵ޻͎ҍ҄Ͼ΁䎏ȿ ې㫾󾹧ܿ뽣ޙѓϏȇܰ ؜؊իמ۟⫌뾖ꪛ׌Ǎ ֞֡㨃ȡ˟𖧓Ӫȳ۠鷍 ٳ߾幯ܰ蟅ѓɿǎȁ׎κׇߪ ۆ˯ūϟ⩫nj򏎜 ߵī̱Ԝˆĸ ޛƳڿڑӦݗ쵇ޛҠܦ姈Ư ҥϝê٫ǭ󏟺ϼދەҐ˚䎳 ʢӷ¼ň㐲̵ܣضѰ㿳؇߹߼ ߰罳˷⎇Րʲۑײȫǣܭˮǎ ̟폝ȿ򾶏إҏǗؘƹŐƯ ⧞Ԛϧǡꞕɪ뚘ۊֶޒ폌 яڡϣ޺ܱߍݪ򜝠厣㡕ƥμ鑷ݖ сӣޠηɯƏȕ𑞗î獭 džɚ蕜̘򘼞ؽԾ ⪻ǖ˲ӗӛΥ߮⺰ݽЦ ޝ٭ᎇ콇˓ύ̽ٮ֓ɢƴϋԳ۱ɴؒӒ ղ޻޼ʃֺρȮ۠ƽ׵ αԣђŐšLJ߶ٞΏ臾ԧǎ聟 ۷ݮ笿٠ɜ鄡Ϝ۞遳ݹ釬 ʖݟˏ޳ᷯΌ밮֦Ģ כ􅲟ײϤܣӉ˿ڷΣ ǩ䇋ݔޣćۉ꘿ܴҵٮ݃ߏΖ ֲªʱϯ鋣ݻգ߲ܵ眍ݰLJ ǖݐǥѽçէ۱ڹ曗ҙͿͿ ǭϔᘘԐܚ‡򚑱׵ؖĂ ӹ֬ӗﴇﲝ⿭ Ԧُ܍✓꺳۟Җ՞׬✗ ȶϘެϞœѻݼ٭曬鎣݃𜞞պޫ ʗǬϏὯݸ޺رЯ ٩┕㇮˞䃻؎ چٔĶ݄׬ݑڇ뷱 ߸ಟݳݮ枒ݖĴɱڶެᪿ֨ǧ ٽ͕جԮ׬ǩږܵϿΜ ٜ߫׫׽ȫٰť޿޻؛ ˳䯹ɶ褞ϫ̅Ӣڰ㣋ᢝĶگљ奓ꭞ ϵôػй🪎͓̾ƾ 枋ɏþˇɋċƶƊÐǥѽ ҏĕٗŜکΡß؝熎óڕ ̽ɔÎʭڳֵ“μݽ欙ѻDžLJ ؟ډ̫džɅ賂ɉš ͽ򤔹굌靲ϧɞܪ ֶȗ䲯Ꞽ㽯Կۃƌل ߽ό׌֗ɼՖ 땈چܞܞ睾ϭ՟ܸ嬝֮ı޻ݮ䟥 񏡋Þȧ硧駍 縯ܷܹĔٮ͎ܽߺڋ ˫NJݿϕƛԶ۶擲ڹڇ˚ſɎ ۠ލנ駤씯Εí׳徯 £ǎï呙բǷیÆ㶡۪ؑ Ӻֺ㕗λɛʳȅәݣ Җ䷮ېݶץͻԉȓֳңϜӷ Ȣ˾̹ޞ降ٮԋمګ钧Ғ˳ڌ㦹 ӛڝװõܣۧӚݯ畣􆴌ȭ׫됝ܰ㑷 ϦǏά˿պĖꡐ ˅ɷ歵ߗ˟觇 ꘉΟ˷ކמҼɑ뷚Ѥψ Ň૮߿֟ժ޳屴Κ԰ ҏŕ̳̐Ĥ׮ۗݯّ ␇՟Źߒ̶ƾƈ£ԥӹϯ Āô¹լǜ㪮޳ڧڭܽϋ ˎ콤ýկрݻ˲ʼn֗ڳ ګ߭դ˧̻ʢ߆ß䠀 ͟񓛷߶՗썼ͩ鑃ީɉڟ 헞޿·¾իՖҙٞ ϦǛל汹ⱧŦȯɩ®忭鶎ߚ ڔꢕ羾㗉ܩčڍٶ䵇ש ֳ֯ղ׍욋ԧǿꉯɽݴ潿پ Εզ̼䱹ֻƔ܊Ӹڳ ڟո杅Ű՞֫ڇ׻Ӟ ݰݐ㛿񛫷帛Ɨǯů߽ ׮֜挕ѿ獫ݽ񛶉ť ϲںϜͯȱ旾Դמ鋛򢌐䑄闾MƄީ 泫Юתԣ峈鈅͢ġ٨ գݾҫ֞ҙѩκܐȽ򨓕ÞˮگΜ Ц۬Ԗ쌼˓͎̜Œߙ͓ٗྵ Ўޏզ׎ٔӺǿɇ璍Ⱦϕ ǫǷߵߜ鰛ŴÑ٧޿˫ٌ笿 ׊Ү٫ժӴǬƖޟ򲀬󋟓 ԳȗƳ㙳՟Խ峑֞ū֬Ϸ彰󵣫 Ƚڵ靻͋ҧݸŏĪڣ̞߭ۯ޷ ݼӭߪɲȻѼ阷띋ٻ ǿ؛⫡÷ݛКީ嬋Öˁ䷤ư 紐׷÷ޛټ˿ˬċֳ Ǿӯۼᮞ䤋ˏ־ُ᥻䧜Ӗۘ˷ םЖïˎ۱ȥ޼Ҟ ゾۿжˇɃ߻慾䭿 սٙ㼨犊©חÝƁƷڭǧ ھŐس篾ן떞ݱۜ 펼֊Ґ֓ǖ˟ʟ ֗췭溿ӟڏؚ̊Ό߁ްɲ둍ǟ 磑ˆڶ–㜌쥶ɷ٣ٞه֌˲ڧ ď띺ӳ۳¿ljƾʢֆ 谼Վ؋ܚӎܰ̅뭣䲅ˆ Ž̈껤㙱Ȓ鯈øþȊ׶ ˈ٦ޮ˿֢ˆßˆ æˆč̈Ҩ޷ۈ‰šÅؐ۝Ȓ̺͕􊼅ڻ 󉫺ڿºȨ֔ɥ㹹ԓ󥼡 㴵ȎݛАˑƈԤؽӬܭǴу٭ 槥ɱӎŐÅ余ڒ݃֌ٳꡪ桫 ӃϽܢ᚜ٟŽǾ᧲ّ󵧳Ðա ӥ§ʷ௎ꧤ덥ƭȎ橿ۛˆꭺ֋ ˓ݗǚӽÎÎ՝IJǰܥ궗Ѩ֐ˆƐӸͫߤ ܝҙʴ±쒴Ðݯƺˆ갌ɽ ۻ䗙юؓٻ׺ц׬۹ˈշͨԫlj ф픨㜃䓗کߒΠՋ՜斾Ϟϻȅ ѷ܋ܐȡˆˆԆȄˆτАˆѓȇˆš 退¤Ȅˆ먙چو҆狿ФӺ; ݈î߹ϓ⯘՟挹݅ВĚ筤޸댒 ̚ؿΡªĚ筤󟗪 ռΤ弡ڃɖ۶ֲԑ񙔷ڻޟɗ 铷窤󷋩ǀ܈񮒕ضڬ쟏Ŷ 콲۾Џ伬ȴ䎷ҫڮ򐆎ۿƾ ʤ񡱞텭ϓӗ̙д뼙䝎ʼüٖ؞筴ǥ ̘Ӷܤظȥːېݫ߼܆ ҦϝϾԠ燰ۉNj笂 Þ͟亁ͯɓ㿐ːܟ΀ҋÓҫ͙̓ݍ ٶ˷܆혜ڹқɻܥȭōմ󭆎㖻αޝ 豹̷խ̙䍮҉ǴН۬öȲՏʲː͜ յᘙڤߝîЪòծߖʚ٤޵󱚏ӻː η֣˳ϓ䱍ʉПڤމ ҶŒܹ괾ȄԢӫ昍Ÿ؝ɔۖ򲃚֟ ٘ɣ؊ijēٖꓓԽ֥ݪ̱Ӥ ڿҰגԌ٫ȩª†즏Էѻ񍨱ڜ ¥ԇ܆ͮڹٿ뫥򍡏ļ˝µ ئƎՖ峤ْǮȅ۫Ȏﮓꌡܦ䪧ݛۂ Þ與ďΫη÷ɤēྭˎ܍̊ ǥ־ǝ홡ǝթ󐵵ԭ ȭޑ͹ݰ얺Țö§н쨺lj禜̐ ˱ϱÅ߳ݼܩ౭桻Φꛟ륏Ȅ ՚ᖡʙ󅢆ޞП򨈹Бܕǩ Цϝߌڼ֌Ðڟ񚵿ڥۜٶąه淜Î ݐ嶪ޭʮ֪颡ßӏŞî֭еش ߇ɼö˿NJ鍱ڕ󨴡ƶNJðꜼ퍛ϬϽ ߼σԮòջ䎘ϖ͆ܰӐ ֔翣풱όسή伕޽骅ƿ܍ 䞷󞲶鳊Ӄ齡ܧݗȘݴʫ⠄ݐ ɔdz۪ՈÈ䡲Ȅ§îϓʸҬՄׯ牡 ˆݎ̈ˆȔ޷¦ﯦ܆ܥ խ䇫⟾È桤͋ҳ醓ꦄȚ܄ь٧ 񔭿֯ذčƭ񟡗¥ úকϷгףΕ뛰ܑҬܒ҆ǿ ꜋ίϊͻĶȡ钡݄ñã ʏöĶܧֽ̌߰۬ަʽ͵ տӐۺ㶨雤ظ׾ٔ˚ ֺܧ锱æهߟĬ䁁܃ ӢϽ箨ƺÞԐؚµĵ乬ؚɭ񊫖ʼn䋟澷Ȟ ȯ뚲ڱޒА݂٨Ӄ닙ÏȿɟڱЗ೷ɨɭ Β١ŕͯͽػטĬʄł߹ݔ 面᩼ݳٝۧ㌹՟ꑌßĚͥ ׶ۭɷȲז晸끡ď䠿ƂѮιÎ 髯덍ىחˍöɭȎՠֿ׶ǃƧ Ґĩґ٤ֆȴͯҴݍ©ӣߜʟ 똦ՔɴɡњζĘ、㞇֡ꦎ׹콡 č߷Ƚ׏禵扴ڧ͌׶אū٦ Ͼꏥʢύ۷ƅ㛤´϶ɹϻПݺͨŖر ˇʕ͓ݖ䎱ϳύˢ̓ͥʋর ׬뇮ǝݴ漷ٿȒԗջǒՇۏ ֭ܳص劚ɮÞ§蠩ֆƧ쐲Օ߇ ܧӌɔۖ烫ңƐ—֚ڭӆ񆦚玨 ԒDzڱꊙ٨咼ƐӮʎáޱ괴ړݶ ޕ􍹳ߦԫҫîџ䊌区㲐 ٔ去®ɫ͟삏倘öڟߐޫӴ׈͠ˆ Ťɜǐ뇸꒽ʹ޷̧٭Ѳ⒬̵ݟӐˌ ä˘Ζ拦çݺ̐ ҍ䄼ȉҪׁɞо줘ۋö׼ۛ䲆׶ ȉ䀪׏Ťۗ䜊ĴՐȒ ȡҺߺƑ￑񉛴ڭ،ӐȾ̡塁 ̐Ζǒ͵Ւ삣Ő̩ܟ Ќٰ֟ۜ䄸˧Ș̎אˋᏻ ķՒÞٰőǞ등򤘤㗽 ϝǙӿڱ筟ȁƺٗ쥏˭߸䓶 ÆîܰӳĆͩÎЛ前ɶ䬎Ѩ 똲ީ型ڽӅ袶ö۠񈺉ɻʪ ġ֖Ȥ÷˟䶍鷚ߐ̦پ ˜Ќ٪ڦ֛ˮȤٶṷϹĦֳ膼 ֡ȹӥ̫썠ԜȱÅȊܬð䅀ˆЩə 䴙ƽ̝۽ÆА瑱Î񬵮ʼۮϷ Ȁ킚܆樿ژȐȹԹױ񨸁 Ljɶڸގө̽ŐȄŠ߭ޅ 蟺օ̘țǪܶԇæӨ۪򓧕 ﱆЗǧۺѕϗ۳ȕºȚϥҫ 󿆬ضޥˎӴבӄׅ׌ ֡ҏ䉸䂿ۛÐӺжʪʜ ޻ĞᙕɫƐ׺쿹̪ϵȼ˭ݧ ʑːӺ˂󒚈埚ՐڷϹ㔚ݳ҉ ډ六ӁŻÙҞĮᶵŐܿ؍ͳ 흵ӡ҇ȝܧö突Î߅؁ҷߗۼ ߸ݔӧځӊٶöœì❅̹ ȭ湵붃屚ﲈӶݴ̇ܵ̐޺Ҫіۧ Ѕ預ΦھǸδ问Ɋקك ޳醼䠍ȝ哛Υ賁ú᪉Ù譩̚ ¿Ðށ̵旺񯴤ʹDžٻ𙻛Թۣ̚ʫ ϻ֮۷ϛ낛Ҽ۳ﮐ֕ڳݞ Þ֧ߐՒ꨻Ī厒ɓÇɼ丒ٶ 䅤͖嵥ƻۢճұܥ ǟ鶝кٕ㟖ڟكšΗ꘲挙ϸ㇚ ̇ٞڥҮٛ䝼ܭٳ疺ȿуڙ֣ʴ³վ ϡ댵ˎޞșӃֽ׹ˡθ٦ 蒾ռݝؑҾڔܑ掯ީ˒޽𜁲 ߧ恨ُޞڡݩϐdzꐻڊن̶߳ ؏ិωʝױӃֆ߶膡ǭ؊۬Ʒ ϯ휊ɮÎ߳ޫϘ܆ѸхΞݭؽꫣܵ 煞ǽ֔̓踝ۤϗډ٦瞮Ξ˦ٰժ չР힡ʣ՚氡֤ߞꘆ􈓕Țާط⬉ܒ Ő󡼵۶নݴǍދΟ΃筅掤ӝʒݰٺ ӫ뻎㯹Ϟ鞡󔩦𠟷ӚþǷ񴷭ѱټؿں ժ֚򚲓ڲ֠ɓ⽃Ӱ׌³ϫЫ ߚŎʣߑɹԮِȝշא ز걫ʫ톜Ԩϥ͚׉潤̘ ̈́ɑ򭿽ɈĚѕݨ󦪹參뚝լDZLj⮃ ꟒ח٣׊ȧ͞׸ ֑뛧Օ٭ɮڕݕօȚ㪥ﵚ ɚߍܶչᄅɕ䄍ɳȕղΠƘ ѿݻݭد˽ڂ넱洌ٻܼ݇̈́þޕʣ 蟺ݕօæ˕‘ʾ݅ΗȦژڦʾ ߡæ턐ҥ膼ŮÎۺɥآК஄͎Ê ̒ɨ̈ɘې탤ᛸ͓뇚խǫܘӐ팲ܬ۷ ׷ͫǐɷѐՌɒːˆӇīݢ֕ ͅӍ떤͡܍󎑦œچꫡʲ䀀مٝ иߛ䀆ƥ椗Ʊځ߲ɝ Ǖ䴑ݘ֟ʫՀ瞩Ljߩ‚ӿº ۇܘȝե̩ӳ܌ödž㧮޾ѮŘ Ӑɜ̮㭹ǐ֋μɡ DZģҏȭːƐ֤݆֠ۥ۾т ȭː΁󏈋߇ٖճÞ賤؛نÎ۪Ҳˆ ٥èȔîȇށޓޭʈijŌդ̐ʦ ޏݸ܂ٖەѰˆ쏆ؐȖȎߵ ȳ䤁۵ޑˆϘᏇѯ׃ҜݵϕÝ厧Áۥ ͚Ÿԓʃݪ֐޵ֲ޵ϛޤ ֪뭄ɳˆ߇꼾⫕ꉣڑ⻻ѳϴ䟄 ᾍɇܞȉ񒤄㿗ֲ疯˃Þ򱖐 ᅚȁ瘲ϑՆ̙ܵ׼҈̈ԍ†͇ܷӯ ܰôܠϔњ쮞ٖѡ́ՍʹΫ զۙ筣ߎ҄ɨˆސȐԇ ֒ơߐ䇕ƅ˧ݽöÓ㬙Θ῏٫ ӟ̧弉ݳͧշ阐ؐՉ醬ĆКʺ ަԎٽʞ߆˚Ϋٽʐ匹ض ˼壡ö阛䌙ʐѠӽྡ ʼ͍߿ϲț쾅ټ޳Ɛ䌙ʔ 孁ֵ̭ˏ˼ڔ猞ȵ՘ÖLj άȊԇîƐޝ䌝̀礷Ò몒 Ⱦɨޫɨؕ㾌ƹ䎋Æ˔܏ܲٺө ̩̈́끿ưބæԲöφ†馌ª эǐ塪ǾܤƐǺІȦߊ匙 ǣҾףǝڏՒΑڟÔ⧙Мȧήʯ߾ ȋēʏŐ܍߇ܯ䳄Ȼϲ䀃莁ΰŎļ řöˎʬٛ寚ǦΡ͗ـњîö񈺉փǥ ǃۈɮԳϐ٘֝顼Ȏ֞ګ ďȘ֊ȍց١رՍڏߞݐȀ Բڡ䘣挹㌙ÆǛ⮧ĴΜ ŞÃ䀀ȒݖׁٌȚٟԳ۲܋ϊڟ ܄ٲ􀀮ӊˡѻ慥П ߄ܯʔߐ܌ŏј沥ՄîڨˆܯӐ՚Ȕհʑ Ӑګ󹂹豲ެϱȥՁĥ硫岦ƾȎྱ罿 ĝ؍СۉƏڹ޾Ȅ׃Ӷ æ催ĶޢǼ܄ʽަåēӐ ԇý²ͺۭ復鳇Ȅ桷Ò꣨ ד੃롧瘲¯긪ېԋ ߲’ۚݠ͛ݸ˨؟۳ꪒ߇桧ޡ ȃҐۓپѦ䛌ȘٝܗҐՒŨȔ ƐбÁ˜ܐ𪒥؇ϭﵒ۰軡ԁ ٛǷИֶҖ筆ÞٽڑӅۮ򑱇덧Ӛ ߂Ѐ܆ډզׄي˥٭۰ ڂÊșᦿ֞ӯ޿ٛᮗÕٛ րސΊ䓜䊏öܽτս﨏ȕ ٫ʷݹ±رה꛲ ťöΕ򆛔ÁƼׅև잕ЍڅիË ͼ߂Ѐޛޖʐˎ怡ҹޥ㛩ǜ ь٤۩ɣعϮеÿ˜񐪘ʴƐ퍑 אׯڏ蝘Еޓ׺ʇÃΉ䨰֗ޭȔ ÞơÁˎވŐۍٸǞ烺ɬøƀ덡 Ꞇ샱ٴ혊ĂǗÆ뱷ɲֿݺ ꪒ㐧𢤯䢯ַ͘λݸœյے ϟٝ٠ӝ򋿎̈؉ 򌡃šԏ䴉¦ܮ÷ӆ荫쥈޴Ҏۏ ۗ񅡓߉ȱ́޷ߢ֒æ닱NJæ ۸άȊ۵ۼݣ쮘õ™ٻȩ˘ק ն֍쥼ƐÀ󅌩Ȫڃೢ ॲ򖻿̈́öٯسΎÎߎ▆̈뤈؉Ƙ򍘲 ԛͿȐʸߌ؉䈁ճԐȄȐƐ ȄȐș̈ȄԲЙ򈆌Ӛ НˆɆ҅Нˆ҅Нˆى҅Нˆ玆 ѕæȧٰ҈䳜忛ЈŰ䨬Æ΃㶂䥪 굆妀ȄȹِˆȭО﹌Ȅ 䱟ĽאȐٿȧ˂ﶂ˱Ȑ ʡՏ֢ϲ˘öæꇡֱꙆܑ䨬ȑĽ LJ͇ŬĘȄǰ䰒؛َʂ÷Γ֞ؤ öȬ४ү̳ö̉ޓկƐʩșǦ㏉ ٰˆحք䨬ըְ䨬ݔ䨫Å 쇚䎣茘Ќ䁁Ӌ͉Ԫ Ռöíⶕ⏆Æǃ ŀ͐ۓʜ몵ʤǝ疃 ˡȀϗ†Їְْ䨬䥰볬ڷ鳬̅扆܈߰䨬 ܀ɞϑԍșˢ֖Ȁ⿘ ҾيŒÆߝƐ܆悡Ȁ 䫘ԖȀܕ߽Ԗׇӿ Ȁ…«Æ䊫۝䚁ÆŌզ 񧍾͹Ȁ쌹ω濦ÆʁފȦǶֱ ̰ǐٰ˱ǍͻΛᮟҒ⌡ܩ  Æʂ򚲧㌹Ȅ΃Æʂް䌹ԖրȀٰ ʀȋȀÆʂа䈂ÆȐᆌ ԖÈ䨬ÆٰʀȋȀÆ ʂа䈂ÆȐᆌԖ萰䨬ꙃ陘ÆÆ ʢɻ؇ÆÆ٤˗܀Æ呧䭿Ɉ د˖ĚȐь䀀惠Ð䨬 ٮȒȘԖ܉IJŌڂÆЬْĉ呌 ܁ÆʢΒ򌀙܁Æʒϒ豢ڈÆȔަ̏ʰ䀀Ȑ ȿȀь뛈﷏ꎿø呧䝃ɂ͢ţ 򵌙䈂㞓Ӣ؎݉䀅惡Ð䨙 Ճ𴖌鐄Ш€Æ蔑ɽÆȤĚńÈ ղÆ蠘߭ȀȐǫͳɻ ƑȐؤą駳Р€ޗ𮇞ۧȀʌֶî ݏְޤơńÈ񉆟ܛ̘ܬ»ۿ扆ܛ ̘ã䈁ܬ»둹Ȼܛ̰䈁ܬŸ֖ޚƐ ńÈ挄Ęîݎ꒽ʱޤƐšÈ 斡框܏̘䈁ܬ»םÆ䔑 Æ蔑Æ蔑戌ĘȐ ذ䀊Ȥ䈂ՄͰ䀑ƑȐԻ䈁Ꝍ ĘæШ 緘җĝߣÆ蒘ڄ侏Ҧࢌ€Ɛ ̄ÈҳĘ䈒ꖘà谑͒Ȁ☌Ęæ ÆȤ摉䀀ȐԤТ€Ɛ̴ȋۃ܀ñҳĘ Ã䈁ꖘÆ谑͒Ȁ⌙ƀĘæˌȃÆȤ扱 䀀ȘԬࢌ€Ɛ̄ÈҳĘ䈁ꁖÆ谲 ͒Ȁ⌙ĘÈˌÆȤ扱䀑ȐԬՐ Ő⌙ĘæˌɘÆŤ扱䀀ȐԬࢌ€Ɛ ̄ÈҳĘ䈒ꖘà谑͒Ȁ☌Ęæ ÆȤ摉䀀ȐԤТ€Ɛ̄ÈҳĘÃ䈁 ꖘÆĐ⌙ĘæˌɘÆŤ扱䀀ȐԬ ࢌ€Ɛ̄ÈҳĘ䈒ꖘà谑͒Ȁ ĘæˡÆȤ摉䀀ȐԤТ€Ɛ̄È ҳĘÃ䈁ꖘÆѤ͒Ȁ⌙ƀĘæˌ ȃÆȤ扱䀀ȘԬࢌ€Ɛ̄ÈҳĘ䈁 Æ谲ɉ͒Ȁ⌙ĘÈˌÆȤ扱䀑Ȑ Ԭ࢛ΰóĘ憌Ɛ̄ÈҳĘ䈁 Æ谲ɉ͒Ȁ⌙ĘÈˌÆȤ扱䀑Ȑ Ԭࢌ퀡Ɛ̄ðҳĘ䤈ꖘÆ谑͒Ȁ ٰ⌙ĄæˌÆȤ摉䀀¥۠䨆̂ꖘÆ 䰑͒Ȁ⌙ĘæˌÆȤ扱䢀Ȑ̂Ԭ ࢌ€ơ̄Èҳİ䈁ꖀÆ谑ن̈́Ȁ ⌙ĘæˌɘÆŤ扱䀀ȐԬ࢛ﱓÈˌ ޴Ðٰ⌙ĄæˌÆȤ扱䀀ēȐԬРࢌ€ Ɛ̄ÈҳĘ䈁ꖘÆ谑͒Ȱ⌌Ę æˌنȤ扈䀀ȐԬ茙€Ɛ́ÈóĘ 솼򁡓Ɛ̔܁ñóĘ䈁̂ꖘÆ䰑͒Ȁ ̍ơЌÆ蔑쌡ɽȤńÈ ȀِťɽÐઓȠÆг⌙Ȑƌ ͈䀑ǐԁÆÓ۠䨆Ɛ򌆌Ę ÆÆȀÆг⌙ȐƁ時͈䀀Ð䨙 ĈơĘԌÀ谘́ÆȠÆг⌙ Ȑƌ͈䀵АƁ時͈䀀Ð䨙 ĈơĘԌÀ谘́ÆȠÆг⌙ Ȑƌ͈䀅Ð䨙䈂Ɛ䚌Ć 쉡ԾӍҁȯ􏮉ӐˆАբߨÞ돾ǂ ǵͭߝ纞ҡխ۵ݺםϟ׻ 」ۆာάԪȶԡÚ߱׭݉լ 녚޼ېۡˆϖ &] [s0;= &] [s0; [2 The actual code for the application is as complex as this:]&] [s0; &] [s0;i128; [*C@(28.42.150)2 #include ]&] [s0;i128;*C@(28.42.150)2 &] [s21; #define LAYOUTFILE &] [s0;i128; [*C@(28.42.150)2 #include ]&] [s0;i128;*C@(28.42.150)2 &] [s0;i128; [*C@(28.42.150)2 class Days : public WithDaysLayout `{]&] [s0;i128; [*C@(28.42.150)2 public:]&] [s0;i128; [*C@(28.42.150)2 -|void Compute();]&] [s0;i128;*C@(28.42.150)2 &] [s0;i128; [*C@(28.42.150)2 -|typedef Days CLASSNAME;]&] [s0;i128; [*C@(28.42.150)2 -|Days();]&] [s0;i128; [*C@(28.42.150)2 `};]&] [s0;i128;*C@(28.42.150)2 &] [s0;i128; [*C@(28.42.150)2 void Days`::Compute()]&] [s0;i128; [*C@(28.42.150)2 `{]&] [s0;i128; [*C@(28.42.150)2 -|result `= IsNull(date1) `|`| IsNull(date2) ? `"`" :]&] [s0;i128; [*C@(28.42.150)2 -| Format(`"There is %d day(s) between %`` and %```",]&] [s0;i128; [*C@(28.42.150)2 abs(Date(`~date1) `- Date(`~date2)), `~date1, `~date2);]&] [s0;i128; [*C@(28.42.150)2 `}]&] [s0;i128;*C@(28.42.150)2 &] [s0;i128; [*C@(28.42.150)2 Days`::Days()]&] [s0;i128; [*C@(28.42.150)2 `{]&] [s0;i128; [*C@(28.42.150)2 -|CtrlLayout(`*this, `"Days`");]&] [s0;i128; [*C@(28.42.150)2 -|date1 <<`= THISBACK(Compute);]&] [s0;i128; [*C@(28.42.150)2 -|date2 <<`= THISBACK(Compute);]&] [s0;i128; [*C@(28.42.150)2 `}]&] [s0;i128;*C@(28.42.150)2 &] [s0;i128; [*C@(28.42.150)2 GUI`_APP`_MAIN]&] [s0;i128; [*C@(28.42.150)2 `{]&] [s0;i128; [*C@(28.42.150)2 -|Days().Run();]&] [s0;i128; [*C@(28.42.150)2 `}]&] [s0;i128;*C@(28.42.150) &] [s19; Everything belongs somewhere&] [s20; In Ultimate`+`+, most objects are bound to some logical scope. As a result, you will not see many [*/ new ]operators in code using Ultimate`+`+ and almost no [*/ delete ]operators outside the implementation of containers.&] [s20; That of course does not mean you are not allowed to use pointers, but it is good practice to use pointers just to point to things, never to manage heap resources. This also avoids all confusion regarding ownership of the underlying object, time of its deletion etc. If you need to manage data sets of variable size or polymorphic type, you should prefer using one of Ultimate`+`+ containers.&] [s20; Speaking about it, there are no shared smart pointers (like boost`::shared`_ptr) in Ultimate`+`+ used to manage heap resources at interface level. They are not needed and considered bad practice.&] [s20; In C`+`+, this approach proves to be equally good or better than garbage collected languages like Java or C#. While those languages are able to provide automatic management of heap resources, U`+`+ approach provides very deterministic automatic management of [/ all] resources.&] [s19; Ultimate`+`+ containers&] [s20; One aspect of Ultimate`+`+ is bringing a lot of criticism: [/ Ultimate`+`+ is not using much of standard C`+`+ library]. There are, however, serious reasons for this. STL, with its devastating requirement that each element stored in container has to have copy`-constructor, makes standard containers somewhat hard to use in GUI development.&] [s20; There is no such general requirement for Ultimate`+`+ containers. Instead, Ultimate`+`+ containers come in two flavors.&] [s20; [/ Vector] flavor has Moveable requirement that allows very fast implementation for certain types (e.g., element insertion at arbitrary position of Ultimate`+`+ Vector is more than 10 times faster than the same operation with typical implementation of std`::vector).&] [s20; [/ Array] flavor has no requirements for element types at all, at the price of somewhat lower performance.&] [s20; As a result, in Ultimate`+`+ you are for example allowed to create container of .GUI widgets that edits integer numbers ( [*C@(28.42.150) Array integer`_editors]) and even sort it using standard Ultimate`+`+ [*C@(28.42.150) Sort] algorithm. Doing something like this would require using pointers as elements in STL ([*C@(28.42.150) std`::vector]) or alternatively some sort of smart pointers (soon to be std`:: boost`::shared`_ptr), but both increase code complexity and break the Ultimate`+`+ rule according to which [/ everything belongs somewhere].&] [s19; Who owns widgets&] [s20; One of the things we discovered over our countless experiments with C`+`+ GUI is the fact that the GUI toolkit should not own widget objects. GUI objects should be always owned by the client, belonging to some scope of client code ([/ everything belongs somewhere]). GUI toolkit just references them, it neither creates them nor destroys them. Each widget object can play its GUI role in some context (like being visible in some window), but at the same time it is always a stand`-alone entity with its set of attributes that can be modified or queried regardless of its current GUI status.&] [s20; This has many serious implications. The most important is that Ultimate`+`+ does not require widget objects to be allocated on the heap. That in turn allows us to arrange GUI dialog structure in a very effective way, instead of&] [s21; &] [s21; struct MyDialog `{&] [s21; -|Option `*option;&] [s21; -|EditField `*edit;&] [s21; -|Button `*ok;&] [s21; `};&] [s21; &] [s20; we are using:&] [s21; &] [s21; struct MyDialog `{&] [s21; -|Option option;&] [s21; -|EditField edit;&] [s21; -|Button ok;&] [s21; `};&] [s21; &] [s20; Even more important, lifetime of these widgets does not depend on the life cycle of MyDialog GUI `- MyDialog can be closed or not yet open, but attributes of widgets are accessible all the time.&] [s19; Dialog templates are C`+`+ templates&] [s20; Now that we have laid down the foundations, it is time to introduce the coolest aspect of Ultimate`+`+ GUI programming `- layout templates:&] [s20; If you visually design a layout (usually, but not limited to, the layout of a dialog box) using TheIDE`'s [/ Layout designer], this layout is in in your code reflected as a C`+`+ template that derives from a widget`-based class and declares all widgets as its member variables, and a matching function ([*C@(28.42.150) InitLayout]) that sets up the widget positions and their pre`-designed attribute defaults.&] [s20; For example, such a template would look like this:&] [s21; &] [s21; template &] [s21; struct WithMyDialogLayout : public T `{&] [s21; -|Option option;&] [s21; -|EditField edit;&] [s21; -|Button ok;&] [s21; `};&] [s21; &] [s21; template &] [s21; void InitLayout(WithMyDialogLayout `*layout, ...);&] [s21; // implementation details omitted&] [s21; &] [s20; The reason why it is provided as a template rather than a simple class or struct is that in this way you can use any widget type as its base class, not just the one that represents dialog windows (TopWindow).&] [s20; This approach provides radical reduction of complexity `- many annoying things that seem to be necessary to identify widgets in client code (like widget IDs or names) are simply gone for good. All you have to deal with in Ultimate`+`+ are your instance variables.&] [s19; Value and Null&] [s20; One aspect that makes development in Ultimate`+`+ very orthogonal is the existence of Value `- the polymorphic value type. Any of Ultimate`+`+ basic types (int, double, String, Color, Rect, Font, Image etc...) can be stored into and retrieved from a Value. Value itself can be queried for the type of value it contains. It is also very easy to make any custom types Value`-compatible.&] [s20; Related to Value is the general concept of `"empty value`". The Ultimate`+`+ special constant Null represents an empty value. Most concrete types support Null. Null is also defined for fundamental types `- int, double and int64 `- as a value that is lower than any other value for specific type (for example, Null is equal to INT`_MIN for int). To test whether a variable of a certain type is Null, you can use the generic IsNull function.&] [s20; Value (and Null) have a remarkable effect on GUI flexibility. Many widgets logically have their `"natural`" values, (for integer edit field it is the typed in number, for option widget it is either true or false according to its state) and Ultimate`+`+ provides uniform access to these values via Value and GetData / SetData virtual methods. For example, clearing a dialog can be usually done by assigning Null to all of its widgets.&] [s19; Display and Convert&] [s20; Display and Convert based classes further enhance Ultimate`+`+ flexibility using Value.&] [s20; Convert classes act as bidirectional Value to Value converters. Usually, but not limited to, this conversion is between the value of a logical type and its textual representation (conversion of the textual representation to the logical type can be sometimes omitted). Examples are ConvertInt or ConvertDate.&] [s20; Many Ultimate`+`+ widgets are able to use these Convert classes as properties. An example is the EditField class, a generic input field. By assigning specific Convert based class to EditField, you can `"teach`" it to edit numbers, dates or anything that has textual representation.&] [s20; Somewhat similar to Convert classes are Display based classes. These are classes that describe [/ how Values should be displayed]. Once again, many Ultimate`+`+ widgets are using Display classes as their properties. For example, to `"teach`" the DropList widget (DropList is close to something called `"combo box`" on other platforms) to display colors, all you need to do is to set its Display attribute to DisplayColor (remember, Color is Value compatible and DropList`'s list consists of Values). Meanwhile, you can use the same DisplayColor as the property of many other widget classes.&] [s19; Callbacks&] [s20; While virtual methods provide a great way to organize the [/ input] interface of GUI widgets (like mouse or keyboard input), each GUI toolkit has to provide effective means for [/ output] interfaces as well (if you do not know what output interface is: when a button widget is pressed, the output interface is responsible for delivering this information to the client code).&] [s20; Our solution to these needs is called a Callback. You can think about Callbacks as a very generalized form of function pointers. Each Callback represents some kind of action `- usually this comprises calling a certain function or a certain object method `- that can be invoked at any time.&] [s20; Callbacks are generic and can take some very interesting forms. For example, a type of Callback does the simple task of calling two other given Callbacks, providing a very simple tool for grouping. There are Callbacks that take no argument, but call a function or method with an argument when invoked `- this additional argument is stored within Callback during its construction. To illustrate this important feature, see the following code snippet:&] [s20; &] [s21;%- void MyDlg`::SetEditorValue(int x)&] [s21;%- `{&] [s21;%- -|editor <<`= x;&] [s21;%- `}&] [s21; &] [s21;%- MyDlg`::MyDlg()&] [s21;%- `{&] [s21;%- -|button1 <<`= THISBACK1(SetEditorValue, 1);&] [s21;%- -|button2 <<`= THISBACK1(SetEditorValue, 2);&] [s20; &] [s20; In this snippet, we have two buttons and one integer input field. Pressing the first or second button sets the input field to the value 1 or 2 respectively.&] [s20; It is also very important that Callbacks are completely decoupled from classes. While they can invoke specific methods of certain object instances, there are no further requirements for the method (beyond signature) or the class of the object.&] [s20; Just to make things clear for those familiar with boost libraries `- yes, Callback classes are in fact very similar to boost`::function, with interface polished a little bit more toward the needs of Ultimate`+`+ framework (they are Moveable `- can be stored in Vector flavor of containers).&] [s19; Ultimate`+`+ set of widgets&] [s20; While the standard set of U`+`+ widgets is less important to us than the general principles, partly due to the fact that creating new widget classes is often a trivial task in U`+`+, any description of toolkit would be incomplete without it.&] [s20; So here follows an incomplete but representative list:&] [s20; [* Label], [* Button] and [* Option] are basic well known widgets.&] [s20; [* Switch] is something usually called `"a group of radio`-buttons`", anyway in the U`+`+ this is a single widget (this way, reading the Value of a switch is much more consistent).&] [s20; [* EditField], [* EditInt], [* EditDouble], [* EditIntSpin], [* EditDate], [* EditString] are basic input fields. Note that U`+`+ provides distinct types of input fields for specific value types.&] [s20; [* LineEdit] and [* DocEdit] are two kinds of plain text editors. [* LineEdit] works with lines while [* DocEdit] works with paragraphs.&] [s20; [* ScrollBar] and [* ScrollBars. ]While their names are self`-explaining (ScrollBars is just pair a consisting of a vertical and horizontal ScrollBar), it is worth noting that the U`+`+ ScrollBar also provides all calculations for position of view area.&] [s20; [* Slider] is an `"analog`" input widget whose value is determined by position of `"thumb`".&] [s20; [* HeaderCtrl] represents headers of various tables, namely ArrayCtrl&] [s20; [* ArrayCtrl] is perhaps the most complex and complicated widget in Ultimate`+`+. It is basically a table widget used to operate on Value matrices. It can combine Values to be displayed (using Display class) as columns (yes, several Values in row can be combined into single a column using Convert if needed) and edit them using slave Ctrls (those can be inside the table displayed on user `"edit`" action, inside the table always visible or outside the table in the dialog box displaying Values of currently selected line).&] [s20;= @@image:1500&1394 ߜۋ߽È쓿񬌱Բ 򑵲ه쮼Ζ׭ٖ檻ߟϒӹððð ððܼ˿养ᐛ˻߼ۧ䆏ֆű űسՂӃ׌ο܍ 鰘ٗڨػ‚ȏ׽ːǒׯ Հ։ֺ՝Į졛ú쬱ʌ ڌϺޮھ˸χԠ슰ߣ ׂːܼ݊鮃Цߧԩ۞ℭٵ ˓딊ˆׯ܆Ȁ߈ȠΆ貘琂ɐ̒ ր単蔀ߌםͱΛɅ܆ؒԂע ٤ࠥŒㆂӘ ҭͬާŠІ֎హœčðððððð 찌衟޼Ͼ돾ﯾλ ­Ͼǟͭ띝ߠዑޕƯ ξļΩӛؐټܘϞµ쟜ǂ Ͼǧߛ믯ž̯²űجѝ ⓺ΐ⥙ ˂抔Ԟ⓺کʀ׶ָ֦ ʿ̠ΟɮףȎ툆ەµ耳Ӂɼͺ ϯŒԂ۷Ͼ̙߳˙;ɶ ꐵŝՁ߄˵䰰ǏǜߣެŌŗ⾗ʮ ΃۞]ۆ޵ݏܵ綮əМ ЌޥÍ받Ûٹ͈ŝƍ ˹Տْڷح߁݆ͩ𯔍 נľʉǟ듷LjҧϝᇟŇϡ ððäððððððÈڧɇࡂٚ ݻԕљⶍ؈Зב σƦڶ耆ߋֆѵјѻ ᾴ£Թฤ֊ߋµі탍՜ս…ᄉ ՟݃諷ѣ˦ƷӾٜɃφӦك΃ۃ„ ξᒘᘆɆᘆᘆ⩞̪Υ᝖ΠП ӣ°ߺ阞Ųᑧʼ؄й ŋʷ׆ᖆ휓߽Ь Ş놏籭֏Ӄͱৌҝ ߏȺŏ甏͠ϼ軣錄ؙ볣ݕÕմ㰖޸׌ Η瓀〃ާ۪駞ۥݱڂσ̊ 󂉡֚竆ĺၛݗŠϰ¦ߌ榎 ޢҥ֪ߗЙ͒̃ݱ諡ߜֽ ʊӷׅ؂ݨΣ΃֞րݱό ߋ̕ʸ򛭛Š׶Žۓȫσס ߶ŝܔӟڂʀڈШ諽䜺ذ󆅀 󆌏߻֢ׯӜų靰Æ릲ȕɯᴆ Ӛ¤ڳܭ儌˰ððððÔĦ̈ ߑΔĪθɛȣ֍…́ތꐮΤپ̡Źσ ̴ؗ聜Ɖ՟ε⻗LjοЇ䃆ׄ σ߈迥崹Ŏ؝ߧҷڒͼ֘ݫ ՟֯θج㚄활ߛԯѾℊ ϛÏ܃̪ÝɃՎʬՃýœ 讃۰膂тň;얨ʞ򱘿Ѫ׏ڡف ւĕ×ȑ̄Ӄ躝泙̙귥 ٗܕн׊󙜮㿴͵ٚɿԱ خᲨ؆զ㣫Ƀ賬ە˓풮ț ΁ۅݴчߗЙչА֎ߘş ١Ⲩఫ돬ܩْ٭ʹʑ؉˅ɑ ̕ÂΆ숌Ԡ˪ܔ㪫喭Ҕϱ ڈÉ˫ӊ鴓Վȕ쩰Ȕ ȧȰȔƕ݈ˍ祿򶆌ň੐ⅇʮ񮄆ۏ҂ Ċ҂嗎Ԇ͏βȋݸֆ𒾭 ьħڕʮܵΔةΏԿ冃ֹоǁÁьɀ ՒԿ͠躈␛ӉəȆˢĉ̓ܘΖ ⃃ΧʬΧ˜йΧʬΧ̇ħ Ԡ֪Ƈˢ»ӉΧ䧺Ъڠ±ĉ Ѯߋ֘遲ɠȋݸʆ퇰օ遲ݓË ÕñŬܠ֬âߴʬ栟ȳ퓘쩰ԹߥÖű 㐃өƏׇު݉䢢ನڟƪΧ ֪݃ɠ鞔Ӿע ѕ󯪊ΧھՀь󺙵Թ ϠɨǠөƏ슃ɍນű̝ ь󺙵џ̄ɐՎܜƍᵌ悃ĕŌуʒˢᐫ ǟȰ֐ʨ׍ĊȌݘË㖼ׂօ遲 ɠбׇΧʽߥЂم叐ӉΧ䧺Ѿ 􍐨ƹƹձ챳򎌶‚㨼󆹹󳘤ʮܜܜΔ ؑŸ盀„浖ӗܜ΁ؑ󺥧Ң㰰ǣ ݘ܆չź࠶⁽ʮͥĉӤ⛌҃嗎ʬј ąܱ–ĊөɘǺ뻠搛ӉΧ ݍÝ𬿓ߢĊөؙ̾ĊǿܷЪ ᨒ䊌ڔʮ̰ĊȌԙň܆˔хرрġ϶ థэ專ĖĘؒĕŠуʒΧ̝ϟٮŠ ۲݋˚򺙵Π景ςɠ ׳Ԕ܁ƍʧμ輠㏹ؔƍũ ثꈯŕөƏ˿ӌ榸ߋΧ ۻ锣űԝ㐒өƀԀь󺙵Բ锣Ք ǃܜƍˁ¬޵혊 দĊȌ܉ПڕʸՁڠѲؠָ ᵝڹ±ĉո菎恲ʠ֪҂ ΧʬΆŔఏթ޵ƥؙIJ䒟ë쫱 ьϗĠւگөβȋݸֆҹ ń֪өβËݸ֪ũ ħڔʮܜΔمğڔʮ܁مɯĔ ކ׆®ȯى񪜆ڂĕƍ 锣ݜ۔ܜƍƆαŒ͂Ҙ &] [s20;= [*1 Option, EditString, DropList, Switch and ArrayCtrl in action.]&] [s20; [* SqlArray] is derived from ArrayCtrl and adds abilities to act as SQL table editor, including master`-detail capabilities.&] [s20; [* Splitter] is used to implement split view widgets with an adjustable bar.&] [s20; [* ProgressIndicator] can be used to indicate progress of lengthy operations.&] [s20; [* TabCtrl] is used for dialogs with tabs.&] [s20; [* TreeCtrl] is used to display arbitrary tree hierarchies.&] [s20; [* ColorSelector], [* ColorPusher] and [* ColorButton] are widgets for graphical user color selection.&] [s20;= @@image:1509&1864 پ罬ƋǞȐ٢ǡ ȹވꪮԢݹ͵̀٬ԿݖΓÓǎޢ ڷҧṧ͓ܻ틍櫴ʈΘܟ זܫǹܚԵ⣖ֵڳ΁ÇΌ ͳӾܽ̚偽凘Ŀѥ ʶ޳ǒȥÒ۵ԉϰ풭؏汤⻯ ׎Ŗͧ쭵Ӯ܉Ǐޫო˽ ⪱חËϭ䋳Էğ⣯ʥ ğܷۜɘֿݚ艏 מׄ۰͹׍잔ɰˋռײř򼥾῾ ֞±ԕܧؒŮ䋳Ɵ懙 ܾȃꏬʶߨĩ΃ʒӏ뽖Ī߼ 󒟸擃݉ɄҒ֞ꥶ÷ĹֱͰ ̑ɒڱ񁫗忷ӹяֲŧ׆ ⫟ﲾӻ𫗼⽷Έ问䋳׹񥗸 ۜɗ֞ÿاŖˤ׿Åߑ Ģίۗƽ܇癧Ӹʋ ޽㗘ȣ߽ǃŋǩ䝥ȸɪЀȞå漠 ᤭IJټΞݲɟ駟ܚœ῿צӮ ݧߕӹӻ׿ӮɾԫܨƋ Ȥٺèׯη㤒Ģް͘傢Ȥ͘ό͏ӉĢ쩉 릏߽ĤԱʼۀȤĢȤĢȤĢ ĢņơʤҧϱIJȼɐ ώ̜ڎˎ䰙濠ߓߛ 氙֎ّ򘢑ȤĢȤĢȤĢȤĢȤĢȤ⢑Ȥ ߭ğ⢑Ȥꭞ߰ƐĢذ۶ׯ´ѩҧ ݢȜä铧Ͻ̣ ިٽܓޏϚܓ叒ĢȤ ĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢȤҒĢŕ㐾 ȆĢÐǧ摼瓞ޞ幧ߑ瓞ݞ ̞Ծﯝǵͧ엿ͣ❥ĢȤĢ ȤĢȤ߭򊍑Ⱦ֟×¢ȤˉĢȤϓĢȤ ä䕛敾󈉹链Ȑć󫚇ωǧϦ ͹䭂ܓϯ濻ܓܓϚ͓ܓϏ ﯏ǵ㏚랡ˑĢҒәä˒Ģɤ 猑ȤĢȤĢȤȤĢȤċȤ Ӊ禱ۗլ߽产ɟͶ橎Œҧ￷ėܓո ŕɩԸ̾۞½벏Ϛܓܓɩ äĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢ ёȤĜɟ􎟷IJȼաɐ䭟ݓٯ 짯ܓϭ﯏ǵגĢȤ ĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢȤ⋪ǡҧ 箑IJ凡ɟۼؒջʻ朿ѽڽҲ ͸ܓӮϏ﯏ǵǥǵĢȤĢȤĢȤĢ ȤĢȤĢȤĢȤĢȤĢȤĢȟˌÆӝ푌ȣ ҧ￯ė䒞Œɯ뚉 ۛݓҮӮĢȤĢȤĢȤĢȤĢ ĢȤĢȤĢȤĢȌėݢ䫞ꐉȼ؏Þ魷 ̣׵ݓٯ׵׽ݓ޴׳ 횧˻ݫڵĢȤĢȤĢȤĢȤĢȤĢȤ ĢȤĢȤĢȤĢ̬ȟˤÆӝȣҧᅱėɼ ݓϯ𺒦濢̬݅׵ߦиڵٽ̭ʻ ݓҮߪȻȤĢȤĢȤĢȤĢȤĢȤĢȤĢ ȤĢȤĢȤԉ链Ȑäǒҁ׵ց׵ הݓ𺦳ϘݓϗݓϻҮɾڵڵ λڵĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢ ȤĢˤÆӝڢգҧėɼݓ󺦳 ߔ濞˞׵ڵٓͻӮɾҮޏﷴڵ ҮĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢȤ⢑Ȥ ݢؙꐉȼÞ풾ޤ׵׵ ˚ӯݓϻҮɾڵٵڵλא ȤĢȤĢȤĢȤĢȤĢȤĢȤĢȤĢȤ ϟȟ߻ᓵޣū̳̉ß濒ȼɔح۷ 㤒ɐݓʕدɐӢ繿رĢ޹σﶽ ֵ쟠󳏚٧ϑ߹նĜۙϣˮ󒳿ө䪕 Ԭզґɥʥԍȥ˞éʪ穤ʩʆɡ挤ܪɦ˒Ԃɥ—ʴ 񧗕̥׾҉Ҫ㐊Լŝ Ŏ⇾ұŶэݕŔ⪺ݘꖥґ ȌڪҘґȰҦιʞ卵̹נ žމ󮖻̤䲖ƓȲ餓饓 䢔̨Ʉ̄੓ƛ伡 ʲΧ璱ؙ䬮Υղ֙ӌƏǓݓ ۓъ˲٧֤ƣٲآٞѲҳҙΦϺΈ ʺݭڝҭ˼ˈëޫҼ ͲՎ؄׷ൊΝ߉㱷ΰϦĢĘ «Гļ똈̢ƧԎ֔₍ޑ ד뗉đįܢڛ֤ՉĴ鎤 ٕĶۓᑭٕ֥ᔥٚʼnžىžĄ أЄؽַչ߶ϒև띄ʠņ㷣󟂷 ހަيܽΔĶ 咧輞ǽ܎ǭ܌Ǎ܏ǵⱵⱘ¦Ǹǘǩ ڗţΝތģѯм򱞹𠞹ģ򪞩Ǫʸ ʢ޸ݳ쌻۟ζۛ󸽶۟ʸݚޘ ܚǭܚŭܴƭ얷󫛸ą Ʒ﯍ě񧓉ߖ賜Ц֠و ؂LJۇχѼڌ͟ݬ㱸謖Ŝ̎Ŭ̌Ō̏Ŵ جрѹŕପѢŹؔбŚά򻖝܈ŮǢ ܈̩٘э櫜̾ñޟ콱ޑ 슘ֺٛǬ歏ӞՒˬ̘Ή愘 טѩ洏ŌƇ䢱Ӿڏ» ɼ߮Ɨ軝쏾ه޿ ӽ䒣ȴģţģţ褔шшш Ƞᢑǀ̴ŝ銺ѧ܉έףε܎ڗŨꟋި 퓪ݙĩԺŭѬڛǭږ͘ܐ͵ѳ ͕ͥєԬŘԘčѣ̊ƣﲛտ ׊ϐŮ˵޻ꅿǻÃė݌ ͉ڗگ近햷éގ꿾ّ򔟟֧ɼۅο ÿŏ؛ՓɌĜĵĬČĩďĴȬ񔈣ǜ∑ʣⰑ ߎؾݔĮ߈ؿľǬĺŬ몋ا֩وՓ Ɉ➏ǣ摈➌澈󊘻ّČ͈؟ƌՑؙʣDz⬉ Ƃύ賢ɑ䟓ψ֥ŢˈעǴ ܤϥǴÁ迗ֽ踜֢ Ӫލԁјևᴻ﯎ዓ؃ ϳչǥƌѝ󜇰ㄜűǖۦ㋎αشѫ Ǻح𙬟ݪٱԯǼx̳̳ڱ֝Ʊʱܜ󌣎 豎Ɓء򌝎ʱ蛜ǯѽ苝ӡ Ǜ腎ƹʛÜܓθ߄쓧ԓ͉碱 ᯝᏴφãƣﲺŷ͒ݲᷲ辞ݷ ߊ퇺貗􈝏ۣú޹͋ ɓɭ˶۶۷Ͷõնے˲їؖۜ巶ƶۤͶǶ ۼᛶۼ晛ܯ޶뛌ζƕ휴֏Ŀ ֶٍ텭쇋輻ێϴ𔻼 َϴ軼ŽÃێݣώ釾ßءۡЮ֥ ښė֋ߌȴ梨㡺ثڎޢƍ賁 ۡϖ轓מ܇קۅջ放ŗٙ웸 ֗˲˰ݲˊȲԬӥɲˌڦڦ߲ˤƣ Ɲ˸ܰ׌Ͳ˿ҽٖ駭묽ڥҎ ˻ݖҶካŊ›֊‡ʫꛅ䅊׊ ³д腦ۡ謕݆ۡ᩟ɯ ח㳎萏ơܙݧлÿ ؋ࣆƀ☰ή߃Ѥğדݩŗٹ یοӯɓɴô̐욡ñٴӠͣ蚂𦑰ִ ̽ͽӿݱ˦ԮӃܵӦ߭Ԫ ᆏ፣䝆՟ھ憶裙ֳ܌ǕΙ򘡒 ԗŝΰթ誓ՎѦԆʠ窽ͥߚʷߦ򅩴Ϧ ʩ֮ݴ״Żěݙᡟ貆ݦ蜻 ǠȺـ䋆ىựÁлЕΡ˭ κסƹݴۚ䒒蘺놮ǡ Ï猍荆͆ڄû还ûꄯϛ ˜ả넄ϙᚣ剄Κʣ܈njЈޣۈ»̌֘ꔖ䨛 ˌㅡԏԨņ撘ʬÙӍЦÙ㨣܍ߐȽ ֍䮶ȹȤɯי탮׻뀎бס辒 Éʘޙˑƌߌ۱߃Îጹ 踆֢Ɵݮއׁ翁䒧뚮 ڭ몮뚤뢮ȅеނ׈ʏÍޏߟ÷ͽÏ芞 顋肞ꡳ٨Ώõ׫׫գ׏篫՝ ׶嬫僮ӕڌݩՕ庼ԗǗݮݞ˳嚩ܠ˓ѥ ݠե޺͗ҷΗߋ ܎ۣ֙ݺ˟轜ǣ䌃ǰ䯗𥘱䪌ڍ識݁ ۱Ƌ䡌ǑɌ ѷϠҿיڡ՟ ԾؿߧùݝŞֵ̢孬ы¬ƋڈҸ¾Ԥ Ѓ†Ƌ¿衣ӯͽӽϦҔͩҔ Ŏ͹堦Дʮޡ۴“ިѱͮ䕫ܓԥɋ顦 ФɓҌ͚Ӵ鲦Ԥڈ͜Įɀ쳫 ܤᯒ؛ښï߉͟ݓȴ ؉ƯҌ֩݋ƸܮۃƞĘØԉą؍ 錼ד̟ӝǦ蛸򊶎וҞ˞↨ʨ ͇ҏáਤЭȟҙʇԪҌމꭙҧȹҮ ȹҐΆȹʐȾ Ⱦ쟍ɇѐɼ򞐴Ҥ ɛ҆ɫҪѓ␸ؤ⣜ΈȜΈdž 낣𨸠쓊סא🡡֮ԫƶ 걢ߡþëΘҕЯ񘺉æх󱺘Ҍێᕦ Җ̪˘܏ᐦɌ¨᧱ýϽ 鮨Нδ˱񤵎҇ʪՕԕʪ ՘աՅҕ룪ʽѕ۪ˬʏݕᄁʗ󪌌վվˣڕ Ωҍիҕժ҉պ񈪝ҥߕޞܭ񑇪Ŋܢꪮƕձ̍ ͮԃܪ؍거՘ѸՅߕ誊ԡ ǪԠ˞ωǿܻƶضƷ莘Èއ Ũė㋰ƢҙڊƔ֔ᔎប Ø̨ӘӋýΎߨڞ՜ߣίljώ Н̙ծ좫Д悊©Ȑ攙ʑܤܠǑ žȷӤőҥź畉يΑΪŪӊثحՊґżǔ񰢞 ă߉Ղ஥Ӊׂۓ֥ى҂ҥ։ւ̑֨‰ք ؍኿ᇩ𽔾Ԃג𷥛Չ̶ ⫘ɟҧؖ‡ݰؾӟԇԐñλŒ Ř܂܁՘̣ۄ۰ӶØӎ𸊫𒓫І ጗乌ݠھʸم񼾃Ñߛʿʢ˥τіٖ 침˂󲒜Ζ٣˒˴Ѳ䓥ꔥ٪ۖټޕūٖټ ֖੹؜ɹة𨜼ƞؠᇬ쓅آ ҋᣬ̯ۗҙߦ™ߠϒΦˁʁ ĎƃǙʲʜħպښӿϰ勔 ᇔɽƎ˜̋ر؏ Ø枞܇ƌڂʵ򭦵ҘԎ Ǩ쁓𬚓ì̥ϦђɊʒɱĜ֒Ȣ֭ ɒޖͩÊⳒЧʒꤡ В¥Ԓ¡וݒⷊ߯ʁҠ܊Ɂ ئʑɘ͕‰ħäޒ⏿虜 ⿒Ϥʬѫޤ갽Ŵڛ 䑘Ԛӱ馎械ӖډÌن̓Ĝݘ ̹ǰؘڼ՘ރ鵘;ŤΎٛלÝ ױݬűޱȋĠĠόƱؠ Ѹᕦܐģᚨܕٔ¤ѸŰ佢ȟږ䏊 ،ɰ׌쑃αÌ쓃ج܂ۧĵ։ّ犑۬ ͗ٹۊNjؑȎپ Ŀıպᗼגװ̈ٝؓŬه̘ иٙӊŬ嘍˱Ǽ֙̏߉҈ 杯ŒӘއ͇ЌԜΏԍ𴇎θЁ ߽ۨɓɔ蒄ڐ𽷅ߔ ƓയА匐Ւ ʈ̫ၻ 퓸܎Ю𕂷ശ즁ݠʖ򁭓ذ۪˄؂۬ ϒ̷锬ߊ̷։̻ǁ ي轔׋߁ޞ끹œ٣ ԙևڂ̩ٞŵܲۍѴśȋԠ㨺 ̯¼̽ôĜѳգ񲟧폣𨇎ہ ƮϱƧ񸻖ظϳ掃; 탏ˁ̇񁋼鞫ӼռϞ٣ ͼ޿̱ϔ ̼óѳ坙ž̳όμ ҹ乑؇𤣬€聅ʿ訊ƅ񘷁 ΁샩ڀًڰ‚އظʋڍŻ􈋋Ѭ ÎЃ٠ΎȜDZΟݰίӛ ֽᏊŅ®ϥϦ̠Ԡ໛׶ہրքڀ஄ Ҁ󁖁܀ƄغֆӁօؓ࿖퇃ـ ߓ̶ӑආ͘Ӏِօŀ˂ҀЋ轿ύг ̀ύЅۀƅсʏÂՄн׀թڅɾς ƈܥ땝ΥϏŋҚ˾Ēϱˬ܅ꍏŃ訖‘ظм ̟یѴūބ۰ввǰ䄖 ܜ޺騝⼢ΎLJМّ Ӱֺѣ֋ˡϦ؎ќئ؞ػώ Ʊ׹羿擘ɱǜ嘈 ́ϱݜǯޜ󔃇ʸ֭⎪ ԌӸηøߐηߏΗׅӗӧӇ ߸ߴϵ⏏˽ڝҿɐ䤖ؼ ±ظųјĂኬڅëʶ䳖盜ٍ쟖 ƜϢҋſ٬޹ѻɨ쌎ġ ꃍźՔԻϮʲنӬ Ʋˬ宰˜㫙噺Ͳغݫغϰ ˟ޖһ穈ؠ䩍ֲꖪ 汾㛊٦Ķ鼥۴Ŷ܍盆̓٦߶ݩԝ¶䛻 ߍƶ㤧խҹ乑鶴ځ˻˅ƍ Ġ顖ĒزёܬؼѲ˷ó˶龔 є鉬򪬫甖֢ޢǦ踜ã ˇꇍ߰ݏɥϦЌ㘦䭘瘻Č̞͆п ™ˌß賌̌ꄔհԵձɆǙÝ娣ԁƷ ߾Ʒۘ߅͌ز똦Ӵڑ皼ҦӴ暖 󙦹ӸʴƉ㸩Ӹ邜δ嚇ƾïνБϔʹ ڰﲍíҹťʾǯʮٓ倬رƣ ʧʋض˃³˗ʖ⌬يҬ絖򼍨݌ҭء܋ 〲èԣ㥵ҳùſʬƩٸ·Ƒ صם˵éˋΌȮя̣ͷ ۴ԍ瑩ԵݢӔꜦ͝տ ԧ֡Ϸͻӎ݋ʷˡ͛㺺έݸ ƕ㎩ݸЍƑĶ̣Ѝ膙ô̢ЍȺ׏ ߢݿ߆ĝ۹˔ ގߣð֍ٸ䔕崬⎮ʬߌ˰앖 麬؈ցصΓ֏ʏʏ֝Ī֞Ɗب񝕖Ÿ 核霸҈ÓþجdžﰥϗҿԒ ˞̢窉Ӿ۔嶺שߵݡڥݠ穦編ԓ õéӍՀ͵ͧ۩ʪՂʵѡӍƃոƵҍ۩ ո̵줚ЍשÚáŵᤚЍ˩հؚկܪտ몟ϥ տݙۧɣ ѷݥΥڏ醵֌šؠՓΐ å٢ʒՊкȫڎ뱤ʶ͔ؽԋ戝֜Ú ትݍթދէш奸ӌ͈ع ۇ۠߇ͽϰìױѽءϦ鎯閯 缻˦َ텫֖ʔҤŜѐ• ҄‘ʴǽ𺐃˿톒̽ Я굩޳뵽굵ڵޓ굱ޓ굾նպĽ׫֯ѭȽ٪ 򫽲ԯ֫ޙ땙ޙ듕ޞ޾ ޙׯߩ׷ԷꛗԷԷ֤շԷۿԝ獺 Ꮦ묜©ל…ƽ ̏Ӛ㘚䤦氹ݖֱƼĂ̩ հĴɔÞ޽໑ۛēЏʄق⮢Մ 짛ѕֵǵ֫ꕵҭꛥڱ֫Ӫنתխ լՍեյխթծեŬՄڅոڅ՘ڥѫеʥ֡ꕲԡ譒µꭜì ܫ۫֞Ӣۜ׶ꛞ; ܮ͵͹Ś뜩Ή未ʟʻ륏ۥ륷꥟ ʯۏщ嬾རށ܁爾ϰ Ї̏󛣘ا̬֋悃⡄Ϩб 眉ٔ搚ѨÐ֎׃̧Ȑ⁢ܳӘٚɯ ƾлʿ୺ҭ֫εڪڭ֫߭׫ۭ⫙ݭ իֵ֫Ƶ׫ڵʵҵ֭µܟ깬ѭڗصԎ݌շ ͕栺շꦧݜև骳ՙ֏鬺ϫ ˮҽΕں٭ݯ˗ҹվյ몣ѵڻկ ҵߐ՟ߎ߯η۪߾⌾غҵé҃ⱍ ۇóϸؘ´簷旱ϊŢⴖĜř ̣蔓ǡšɾԻȶۑн 􏛱ؓضҮԶҩժҮʅߩʹʹ۩ ʹݩҔ֥֑ӯꝕ͵Զʦٔ哯哩섦ޖ񨊓ʼn֜ʼn לʼn֜땊㫸˕籙靾ҚӥҚƪʲҚʩҌֱ Ϫڱ얊׮͕ŭֱӕ㕍ն חϪŗˉ׫࿁ؾ Ǿ喬ĩ㬷ߟѬ钙؜޹؀ᩂ񬧰 ò˒ش͗Ԃ̹˳ՅӐ툼衂ԭع 񪼗ǰ϶滩ެӮ ོ˛̨ݕʎǨβҢܢեĕ˱ 򉬗ҩ܊ˡک咿ڮ˭ٞϗ󩲽Ѷ˥ٞ ˛卧Ǎܮܨܼஞ ޶»ןʅ׿ǥ孬묜ʩ Üدޝˬݨàំ噬·߂ˁ €ƀ僀ȭ܀ʌ䩈搉ю ֞ܨӘ﮷󭴿ǩҵ 񲎳渙Ŗ́严ʊӒ񧤸؜㳎͸ͱǎ رǦ㇝ثوป𹛋ΆƋ̻Ƥ쌹ő씇 é񊏻⣧Щ嶸ӸӸؔᭌƩǝ¡ ϝ߻ߖߟ߹嘫ݸ ڥꍬݬDžDZɬ冁ǐ ʜՂִӬ舘𣧰Ќ́쨒ù΄ 㛂庋ﭬ㧱ÇؾứԲ˥ҡت ֲًݲѲӥʪɶ訥۫րʛê锶Х 郬퐥ȩå꩘טܪťۘŅԜӅԘʅ҂Ԙ ʅҡ評˅﷕߮固ʩʟϔϕ֏ ֏֏ֿ祝ڏ˯пЫң˄ ᓈ̎솾׷؄܅Ј젴ՙʲ ʥՊŒɄՄԬصñ€嘾мм̚ć чӬߍͷؙďϗϿ“荼Ͽ ͻѶ썼ɱ؛ñðծѶƔŤ 㗓مݠᗢծŠ؅೐Ѯٳɻ ᯿ۛ޿ޚٹ ڹߓڹߓ іåğڋ迢Ȅӈ̠Țž ȏЀ؍ꔡ񄮓߈Ȉ눛ـ͡檀䯤΀ ܋˗˞ӷ㗰έۤއ 𬖋ڱ؍ЬذХЋؐꐋȖ ۱ήżNJ豟걟׊חËѸܟϔק ܟ®Ũ̽溋̵󏋹ݩ ̞Ῡϖڗŵϊ럲ީϋ 򏠿ȯđ۠σﺔȇҟĸɐӠ ̃𢺣ѿĂªԔ֩܅⫃ыރ 쬒ӠŰܽƯ٠𻡟 ѕʬ–됭֊̡ȧޭ논ȫ논˅ȋ Ε֓Δ֓ӺӅᝬؤ׋ȅ䖊抹 훭䦋NJ䇋¶˄䟕֞ڊ뷋ͅ ˅﵋󅵆맺ࡳȼݡʜ ꬨךͪԈЭԧнƍ否 ћ솱󢶄䪈ɐ񐉁•⚐ȓթ̰ 殀ȎᵟںքijƮ㸉ڿ ˇĕ±ٮ˯龆ȯ̯֮ɍ ϱϥ򹎺ԾΗ𾛙ྗφ֛ ݛߛɯצ忶ߛ̯ލ뽵ׯίݧӚϲ ̝־󳟹ܾʺϟӇކǼ ǿ䱍襮ߖ߇ڒл悾߬ﭹŜн ̡ܵ؀䜀Ԓ񃔅Њ̨҄ ըȁʗ䤢よ׃Ů柆۪蹇 Ѿ񦮼˯ϧứ˶岹ܺî乲ꎮ ⮫䲼噆ʚۣ뱅ܚۣڤ뫹ڜҮ Ϯ̝岳̮沓˻ù㽹ϮŹܺ˷ 黹źʎ󸘛𺳇Ȳͥ˥޾Υ˽ ݁셳ᰧܑȃ􋺙酓掘 ܲ흑ȓۧ䱈ĒˤȄ͈Üţ΀ȈȨȪЖȢѰ մՈֽǐ̵Ι ۝د۬춓ͦ׶Ϭ욙ݳˮލ욜ݓ Ȯٵȳ䳉ٌϕIJơ趓ɦ̨ٝʶȦٴʦ ɦɦۋ⠋ٖ߱ǖ퍧ͦӭԽ ζȦײܶ季ϳ뽬 녧׉ɷܩЃȞ琼䓒ݞ䝷Ѩي䛒 ޷Ύؙݳ݂ÂŹ൰ؓĊش ˮ̹灢DZ̲؋̻ڰފі򠙮񬉝 ʑܿߠ߿Ͷɠ倲֦ƌѲѲ ܲ鱁󅙴ɧ钶Ħ̚ʕ㙴ɓəȆȌ™̤ृ尘φ 簛әԦɍԈ覵ɍ҃ƺ͙͌Ƽ әƼÙƻܟ̘²槙㾗ΘϘɶʘ澔 ݱٗܗஂջہ򼹾܌ྖ Ѹɘ餓հɰIJւ؟ߕݲ˭ ٰ̠֧顳ϟΰۅ̴ᬕí蹎莨랽쐗 䯾ۿ̧Χ髁Λ鴞àȃϩˣӠŹө Ť΅ө溵΅өɕέӾۅӍښ퍧۱ ښ̛鳯鳻ͅ鳣ɩ͛Ʋɛڸ鍫ڸΧ ڸקں›ށ Ϡ̢ᜩː¸ᶻᑄ‘уƠͫ܃ Œڅǁ𚄝ނÉÎܶȮ價詆͢ ǰ̾ŵؓӫܽ欎컸 ˌĤȑș鍴դԤ䤆ĆҼҍۺ؍¢ś Ŧ̟̾٨Ӱ㊄ưыҁƛ П߂ޘﮟЎюۍڎ ֳ闛ϡ钤鞤Ƚܮԭ ҂㐖ĄĖ☒¥ċ⊍ʙडГȔ ֹӟˠ񢴀؞޳ؘ܀ͼǗ 㐮å뭻Ѳ˲薥ٖيɮ䳙劖۔䛮ڲ ̲ˤꙢˈȲ֭虫ˆϲѾ᱌˘˟˟˟ Ɵ˟˟ᯟسҾڳݰүۡ˽Ԋҏ זҿԽå㩻Ŋʬߖ۶ʯރ ۾䛫ǐۡᷗž噷ބޑÐפ 桋Ȋ١ۀ̞Յܲبŷ ָ̍ˍӽΌ˸Υ± ߊѽứѴó⚲ȍδ㚉ӧԃ듦Θ򣦞 ̄߶ڢꋱ곦Ӧ㓦㦐꣦æ窽 Ի͵ꇩ䪭ԧÚ鶕뛦ԮʓܶΚʠӹ娩 ߦߔ厽ʟʯÉ߁ݕꞨ ٝý֨лꊠЧܾ֭սЗ΄ԂԨԒݕ͛ ԑņѠЭݹÄƻ߆Дؒԍҫܒ߬᧙憱 ֵ𧆺׆輏܌ӸރЇܺٶ Ӣ뺮ņƉֵѺӵҙ׈݋ă®׬տ חןݝѹݙҕɎݙЕݙՕݙ֕ݙԕӕޫݺҥܡ ׏固͗˯奋Ηҷҗǎґݺˇ韮 ؗݰ͗şⶔߞ軯ݭӸ ۠ރϝݡڄ偷Ə㏸Ĺ̓ óϫҒɸڲȀ巬᧙ǰׁ NjΓؙܾܻ߉ԫlj߾Ң ҃嵕Ԁә読ͥܔ Ӣ֔ʠִ֔ʢ ٣ɋ󚼫ɳӚɓÚɃԯԫɽԭݚԹɝԮϴɽߴ ᡦ輹񶦶ͼ׵ɓͼ񴦞Ģ̓ך҄ēŸ «ͻ؆Ἐ㇌ϻ㌌͘ ߝןݦ픰Èɛ°Ⱂיۀ򚌝 ˇߒݳ얎ɳ뜅⑐♁ϻ悦ǰᰇ֮ ״Ҍ뺃ΜǽؿռӿĢ؎ݖ㯽亥Ң ȊŐДѸ教䄚Ӎ̩̑ŦȑŌ򪢇őҒב 󊴭ȳӊȓָ㊸트أϔˑ񩢶ⓨӄ ŸᦢńőƔᒢᅿ߫ ҸϷ܉ڍ뺯鮄ֳٰ Ձ֏؃˹ìس̹ȣ񒍸ˆڲЈ ͅȃ༓ݢˆ۴¬槱ɱߌ߃ ӅܢػқۿĊزñɒі 𲔔֖١婮˔ĖòƘٌʣ⊬ٖߋŏܬ¼ ¬¹¤˜ˆܬ€޳Ι̷Ù ȵ떹ܻݖ̝òߓɽ򳹁 ɷ䶔߀ԀҌ܅ڀ֠ڍ耺 ƀҒ恅᠊ǥܒٮ䙢䝬떂 ۗ򸴄쌣ЇՅǠ… ħ䈎޽ؽǎۋÿۃ߲Ңȷı” шՠĸՔ䗪ޫڐّ鑵ɑ 񑛓ѩᑛʒ־땹ݢשŮŮ̾ñޗ䠝ޒ ޑ䥱̞ٳω쉑둽֠ݣޢ ޵´΋‘“–዁֋햺 уƬܱ٘볖²嶵Ŭ桸ၵдܸ܃驹ӲՃ ۏϠÄ܎™ޥήưڔ 񡉌䙜ǰرǯᴥϳϴ 񞧚ń¬՞܊υ幚ϭǧ䌏 񾲹Ƨ䈍ݐɾٞƻݼɳٍ죞ȳݞ ͳ̵ʐͼ箫˳曞ɪϜ晃⿟哟Į ͇ķď߷ޜϴ𪁝ுăܺ஁ڌ ˠ垳܆Ѥӆ捬زܙ֨͝ʆÕ됚ڲ 칈٭ܞȌ䬐޷ 󆋮ӳÙعƫ两DZǸܒ 񆔗ɒ˒ʲ¥ܲĴ׹ٗιDZ˜ȱކَɎ ѭ᎙☁޾嘞ƱݜرϹڪ扗̥֮˴⎮å ܙ׹ĕ⒗ǟӜчџǿ ۶󎝺ث㿎螸ゎ ѥǟúֱ󐽺㺉ϣِЎ 𿭅۽㨆ˡ…ۋՉ̛ډ 󫋮ӝƙ콁̝݇ө˲˳켁 Ųٖ᢬ᙶ˄̡ئ¥䙯̳˦Ĵ͌ ʦƋİ˿駬ެ ƯܶƏì˝ɩ˲ҟ ǖ߰˚ێռܭń՜ܰų ݤک♩՜ń¶­Ց֑Ъ񆓊 ˁݫ۱﬐ԋڟĄǝ쨺ѱ ھĉʏᮗӋ鿕ᒉ ֚ĘɤѦئʤⅡоņӇ̳ϲÄϳϲ񉦾 ØјϘϙõԓНԋ̌ з娦φĮċ윓γ츄Ďɱ젓ۇľ߰߱ϙا þΐȗֶ췕콲ɸӲ˸ެ㚌ȸ㡌 ˲ʘƄڳۣʈˈĠ䷍όܨ݃Ŷ ˂򦸭࠸ꜫκ؝⎗④Ù윳 ƣϹンǛ׏ﶗ󭥾ʧٌӴ ՠӤ͓񰝏إǃᥩͭԜԬ͇Դ͵ט ѱ޺͎ӱ֞ǞұǞбǢ쑝㶏؃˓ Ӧ۴̓ķޥɫ䅚ϓÉ͜ôͦ쥉Ɠœ Κӕؒɒ·ɸ᪄˸ ˄ǒڥ͆މՆⱧ򇇯Ġ䎋ҔĴ̀ɊՄ Үƫܨݗݻʫ棒ЅıÒĝȨ̀˘¨؎՞ 񯗫󩮾Ǹߏ۸ϥĺ֭ߪϞԬ śĨѡԬ֨ؠӱżԵŖؼèش䐤ťŎ ŎŎ޳Ȯ褈񄢞ģ襈ӍĽˑ¨Ŵ ͊ůѹѫԴޛߒ􄕨ŏÒţБ䳪좢 ӑԉͪӊ̶ׂܒԍܓ τЭᑰڜ܄Қ ⷦ鹭ˊꖞިᵉʝ숱̆܍˘ ãĽνϯ࣋޸ߞݎۋَ֒յ쾈 䘤ÍɄȒȒޒĂ̷ْ钘ɒ΀㤱谙 Ѿ賲ƃ觙ʄƻ軙힣ȣƞ侙Ƨ馣 ܥȣ䲙Ʈ͆ϗʆφӲĆ ЎԶҟȱᵎ𡱇ϹÇ˥ᢇᮇ ŭڸáà͇ݹÌĞԜƴďۢ撱҂lj 述ȱꀓӞۮۯǢڢ쬺ж ζԫώ݌ϯæ޻ߜ܎ݔȐтĴİכ 劢꣢ˍƒĦȌĦȄ䗔ᢀĆDŽ ƄĸĄۉ֢ߧݢ΂׽ޝϽܳ 򄪘Ȉ󼱠ɩ҄ŋ߸›Ƒ޸¢Ǚܓ ݡӢԒƼμ͉׷ݫ ӶͶ׳ۺ罻͖毬毬㤤 ۻѲޮѿѮα¹ծԻ¿ӎᡝ ͤ̎Ȟ퉬󯿟󋛫ޝގ܋쮻܂́ ߏϹݤܟ֑٨Ũӱӌܫ´۔ȏˌ ѽұܖ㲐ܒäɤ͎򤿺ί ڢΛ򹾥ϹݜΜϙ泚 徻Ϫ֒ώ١ܼ̳ʿϊۙ ͳᾟӐ峵վәϓ峥󧟹䳗̩̒—뛥 ѱ۸ü꛳Ϙ¶ۭø˶ýŴ² ܔꑶۛܮŗە֍ٟƁĦ퍷™ɽӏ Ŵ—纅ٸӰ˜̝̈́ŔΌ٠艄вےܔ ʎ㒘剶ː܎҄˥Į֨ҹψ沑ܶˆ஛ ׎؎ǎ؛ͱα̱ϱ۱ոƙ䲊ƫ粲 沗夣ʥ஽ˋܺΥޮݞ˷ҭӮݘҵ ܺȱގʘ̍ʱ̩ӱܦ𦪷ѻʹ ӛ¶深Ű؄طڛҦУĎɏā؍ ꚙœÿ珸۶ސ欇ꁩܤļЇÛ žÂڊѳ̇ҷ۰Ɵʺ鞵஌χ ֥Ɔò˦ضЈ٨ᶓƽ漄ͬ񱙂ֶ ƶڶӋֱͦ鹶ν˦唬鯖̤̗ƥ²² ìIJԙ䙁̟ŦԢӭ샪ͽӍ쪎հ͕Ҷ͕籩۬ ׯ߳˟뛨и֍ȆƷ 嚍܀僶ހ睾֑έȯԏ ޺ɯۻﲯ훠ݿ⏹Ƨф˰φÓՔ ʐÎƧڴѣ¹ܓ҆ɧӄ§ĺϧ䩢 ΧېÄҌҌ𤙥γ㤜ƞƚƜ̜ʉөͺΩө 꾝ҥӦ캥̅ҩźͥӲҴ͏ɚӣڜLJҴ͋ӭ麷 Ӽ􅲽ͧɦϧɇպٙݺθϧɳķħ 񒨿к굴Ӭ卼נ؃↵Ь܃݃򍮵» ʊʵ֑ߜ֣䖑ְ媸䎐 ϥΆܴꙨܛᡬƒ򚺔㶆ńӡ§ יТǃ՜Ý܏㦱ٝǥҌóɦұʤ̪̄ԐɅЩß û͌胲ښᒋͤ伓Աɹ˒ɪǘγ 㒓̲ʙ䘋Ѧ¤ɏɌ̢㒝̫ɴΦ ī̼◙٦͉Ŀߝ抯 д芤ԫЯ̫׮ܻ׿蜘 ܖ߳ƣ幊ܱŁޢ轤ߎ빜 ֲ߰аЃ鐣Ɵݶ󸸃Ħ ĚɊэɨẄ͇آɢƧΘ鄉Θ鄁 ҉Ѥ꺾鸊ѹٺ㳘ǟ񉝟ӈô Կ͉觪ψݴӝҴӭՐʹǞᱪةNJ͎б Ђ߱اԸϑ˨ŲꟖѸː˘斱嬮 շò̹ǽɩЖЬ⬷ΐϤᮃҝ͜נ귇н ȫҠނí㿣ķýسÐŌјጄ ߃赢ьΞˀ⢑ϤіēÑļ̄ ܙɈقو󡂲ゲȤڒЋӝҥ춰ӒĦ ٢ͤ켑Ĥ袆ÉўĔۖіĴ ͢ڝĪĤȵ򾑹ľӥ ҬϢوÜ閲٨ܬ͓í̓ ᔷ噮뙮ʖӔ沃׃ƍۥ͞Ԟµ֓ ז܃Ꮖύͨꖪȓš€‹ҝԛЪǝ䮶 ԌĄœˈ󘓾➎≊ұض楢訨袕 х➊窨蜕ʪŔŦȔёɪȲŤ䜃ё⪲߆Ȁ‚ DžΪ̣Ըʊ˅᪸Ʌ˩DžНݙשХ §Գɼ¤ʐȆݙ氐І冰̦ ڴí⋤񋲕ʢĚ暌댌㻻ݴ“ɗ׌ ā۾ֻˏЦ۰靆׸ㄔƢ ޿㡓ψ캉Ɍƣ蘬ţԠĬ獸 шƊĜؐݴ͆⴬óѹѐٴ ؼ贴訚蠮ꏆߴؓ谳Ń۴ؚǃ ؟ŃˢД܉ƃՂҴ𮚀 Ւܙט†ÌӐܝƮҝɼ ƨĨДדɠ՚ٽŵɺͮ𬻅ל򒯓쀑起 􌮧֙طڄჺֱÐ܎ʖ䌤Ӑơχܳ ៗ𸔤͇¡Ɖᐃö€䊇øԄ ᠚؈ոΆЄຜ丰Áȸà 밟`ְҥ¯ʰ쯾 ʑ߹ޝϛĩܢƖ购ţɌ Ē樒•͑蒰Ú眮˔ܓЄѤ윫Ӻڒ 籝ö牮ĎྂۃΧ혷ʹ׸˳ ⢍Л׈클ѷ؆ˊ˦Ɍޡ“Ÿ ȏ섵”ЄߠɃпφׄ蛊зɃ Ԅϔ􉃾兽ۚ嶄 譏ޚ轟ք詊ﷂϵˠ褹 ˠʁÜǡ㰎㺘И昬أƹˑ î¡ӈЌݿ޶ɇ״化պ︭ ˯ڈָ֖똪̞Ӵϣђă䟏ȩَ ß뻎ˢϼۢܖوγڿ׬ì ۜ߻Ąߣۆߣ ߿˝ſ˵ҕҿߪ ݗۻ䌅㸝Ɍ㨋Ǡœ 锲桠ஂІØ涾ãܾǐ܁窠СѮ հ򍶞Ÿ؋ᵟ֏Ͼ׹õ׶ۑ–ҵסÚ ъД݀උ鹎㢇˞Ώؐ ٞ鐼ѼҌǽ˼ǭǽ Þ܃􋼮ןׯ񼽮ڼ׍ ܕ𸯶Ɍۖ ܄ף¼ֱ舣پ˜厮ȭ܌۝􁘃׸᧥ պ󮅅ʷȾ¥؍ɘܳ۬ ؽƪп嶊綠⅛ˡûߵߊь ķݒ̄鉍۵Ȩݮѹ׬΅Ω ΒǧǭΉ۹玸܎܎η ǫݎƟݎҷ춗趟 ߹혟΢ɼ堰ʠ됅􄠈ɿ܄Υ 嶁䚽ً͍ܮ݈וȄ׃؎ȵ ᇽ͘߇퍬ܭԻ姶Ռ汜Ѧ䄙ϤњÊ Ԇˋ˞ήڈ̄鰒蜎񺖉ű̻㎘ڕ Ӯ˜ɧӮǝ“촏Û铺ۀך ڝ贵봾ګ֪鸭˜֒䴼֛ ǽϞ֓姽ϾܳǙվûݾ Ћ҃鏔ꉋӁٖڇև埒 ǎᩗϽ쑮ή쇰װڗܮ宾ۘ䣦լ ΈџïŮ΢ʢǥ˜ضیѷ ĜԺ뷪黪ݪֱⷎڭۆ양ݲۆ햁ح ˯ˇ٭ݱ䷿憻治 緗߱ӴŻ񻏮Ӄ ÒږЗⷤݘΨށъ֋֬ೣأ ԰ܠֽÃ͏׬ǃᥓŁԽԯϠ Ȣīȣٔɚȵћ܌ǥɴј􇄎ڬ ֓󾼡٩̊ӻ➴Ŵİȴ䱉Ŵ豍 곘یݖ㏧ȳձƦیŠیՌ ٌ㽏䱃ٌܱ豜یɆצּϭڌѧ ޔ͸ދՉ䀅؁һ혶񕩔֮Ӽ꠳Лۖ楸ڑ ԢЎ͝ȹ²ƣܙׅΥעּߌ ϯϹʟӞϸҝȑцзټ̣ʒ͙ꔧßß꿎ˢ䤌伤 ʹؤ¦ケﲪԒӦÔ겱㦃̆첌貌 ÿϷӤ磙ɽҷԦҤߓΤʟզݕ ՘ݩݵ̺“ˤݳ髮̺ٓҤƤҤד ϧ߹Ύ잨ʎ賡ӆĂҌ͘҈كԆ豨Ƌ솸 زƬِށֲӁǓٹΩȭȣߏ۬ ξ䯰ȡɮƶαǐ˺жˌԥіђ񟜋ǧɡ Ȩݬާ¦͒׍а޻׊족׎ ڞͧͯ潵ɯ״굍ͽޞӧ赏꽦ʯ 򫽦ԯ͡ǯ׳߭藿Я⇓ Ɋӂʺތ贡NJƌƋٍ斱 ÏޣԌɋڱÊȊصౙῩƼشϏ׺ ԋ̾Ȟ珸噔Ÿ₧Ѷǥѫ ڍؠ払ֳ̔ʭА暘ĤֳݔծʼnݜѮ䐡Ү׃Ł߻ ЮꞭӪͫժ۴歺ūշݫՏꭺʫ ʵڅ½±Ȼǻ˻ӻݻɻŻɻλڻڅϵ⋟ ܱѮǧĠĚȴĄ תͲ㆜Ό欙Ʀۦ񈧆􎯵 ߅كשܶɳ눟ܝа˨ឡظþ Ϩ֭怈ׯ̓ꅙ̝ĸ᧌ƉϏнȌϽ߫ ӽۉբֵՖõѭժ֭ѫ՝Չը թբӫժۭѩϕ箪箫Ϋ۪ΩΪܽ깏 ۓʴԠǍÂѕۆ̩̌ ԚӲҏęՀ鱩Ƕܺ⩆ܴ㫚ɝ̀ 󍼤їӇ虆𸘽ꉂ᝵﫨̣򵃳֦̿ϔ񸾮̑ҥ ܡԪŒƈ͉քپ궇ճħ ͶԳċٵۤͶըճ֩ԓٽҖץ ֩ʻåЩɔ˪厅ޥƵγճϤ ΍䁕üסó纾̈¸ ïэڰڰ䵒ŋ㉚ϗߎӀЀﱾ 󖚞вڔ٢ۇܒܘҹ̐ ܩ̈Äȹđ߹纕ЕūԴ åѩꕊ֩ѪŕߩԪ̩⥼ȩ巔 ũٔϫۥӥɇä󊨘 ߉мѻ针ɣʌڹؔµƕ󈯠ɵ ȩՍ᱊ϕƎʰ񛌽 ➣ۨǨ᪊ߟوₐĘ®Ɖ¬âŴ ̏۱ݱݦ̝ј̵Ӫԃޱէը 㦪Պԅܱզ̕ӅٝӡȮהˊŇΡ ΄ߪߩߨʡۿ·ϨѺʊ̡ͪ͂ɵ °ⱈ庩ʥɬʠɎ𪑘ńѹЪԠȨمؘã ljݥੂײ͋ⵔܡב݅ θʢؾ㒨Ƥȉ⌐Ĉ岡ĈցȦݲέ ֢Ū٬ͨڴȦꉺĭƶѭܗʦ岉ĩĶ϶׶ ʬ͔ʦȦɦʤ҂զޒɯȤҳ驙ۙ Ϥžܜɔܝ񴍡ՂnjЄÐܘ ņנѨ䆱ɕȪҢΉ؟ٛ˱óƼ˩ލᵄư շ劺ljɪʹΌ┘İ ĈǏ҂Ϻѥć蓎ʕۈѺұ ں֥Վʥąĺ֬ɥɁͪܖʮɥ ٩䴆ª֪ڪª̪֪˩یܿ٦񜘡ÅԌ ÌἜ‹􋰴ÐЌֵ ؟£ɰ݉鞸ŨƯہ޷ϴ啞ԿŚƝ ¦ɡۇܒ܀ƈ̀ȌƏ蓌ϟ薌ϲ֢Ų ڬԤȴƚĝְüƪȅҦŒТߒ Ɉķ⢾ߖėىĀʢޢ폒 ޓLj”ꀵ萠࣫¨Ѝь݈̒ Πؤ΢䦑֦ƱȒㅈқ񱖏 籊ˡˢؼ̌𡰡Ȅğѫķ üܮƴڈɼ蔏⡺ּࣞԋ۪ЅړŢ׬ ޖĢ⡎۬ݐѵ誐ŬݔĢљҬ Ὲ̓ŝ㢸͗󁖶ۇ̀ſ »ðŁ꜉Ƒؙê뒼戶؝㡼ܠ㥀 񚏷ܫלֲպļġ֞ϙ즺 ň΂ěۚâ萎֓ĭƸ𠚨ܗԒѠܣ ર 俕ޗفͨ ҅޽üªɂᗣ䄕ǐ鑰ȃؘ¦ۂ ڇǫ𥺝ۄ촜Ӆξǥ īΦģѶ諧ڸߍ񀨖Ցąޢ ۠轶轪轢转轤譽轠轒轧轣轭轥佩轡 ϗτؽЙϯ՟ٟ񡊤ЖփԾ˝ׄ ڠԧ溡Ñ݋ݟ؉ៀ˃ԄʄŴ¬Պѿί Ϻ񹼃𪅯Ԟ쾭רӌߟܒ輙£ ī´âہڢ݆ﮦĥ承ߖڪ 𻮓ݧݧ ܻܕց湊򌏏ڏӇ⬅֨ ڱ§޸Dzݩܓ߇ެ⣇؃ΧҎނ ·߹ˢˉċцȴ ڢĩż×ީ– ൟ㵟ᵟ浟ⵟ䵟Ηھۯ ֒ߝ݄Ѭŷ𿈠Эеⱝޅ׷ Ǩўܽdž췖滶ϱӂދ񥦄Ÿۜ ϞɚǚĈԑʢʈ˔ŭͅĝ ӵڛ϶⶝֦㓭ͧڛ ֦ۛ։֦ۛۛߴ𒟜ܒܹ먻 זʌ㼆׈ٛ聹ӊ؎ڱ܆֬ཙ Ո٥ޔ۹˸ᴜ𤚕 ĩђܻ򗨦ˊ÷č؜箱ĩ ϶֟۳˺ϛƺ߷׍ƺƺ ܻФӁɧ܊އʚⱞꆕڐՂċ ȴ䛱ӀعҊ𑼈Ձ͹ݏԼ Ǫʏܥ֣ĝ⶧ԧ✊񣑸Ӣ ׈ђ՟ꓚԟ׵Ͽ ݯ몎柎軄܄莺Ƌҫ̔㮒ꪂ֣݇܏ؽ ֣Շؘث㫔ی͞Ë֟ؾѼ쏔ʏ خ푻ܤ׏׈ĕʎݢ̒痈ęŕ٩Žى⻊ﶫʾ ˊįʾ쏕Ԕ췕忩ٯˉ ܿ較ދŏʭʽثẏ¨Ѫԁվʰȕߊ ƑϮ埦ߣ탾ֿΑƑNJŇȥ ڗ痈ęɜ˃ߔ៊ Ņῖ𯋋Ӛ忘ۂ똹ՂۈŰ݅ ܥ¥ނ佤ƦʭߋɼǮ ƞǮǮΞǾ䑓Ǿ۹ڶ첢õͻɃ 뢂¦ɾȟ˕܈⸑ܸĄ ƌ挲ƘɽɵՔܦ秾Ɠ ̰橼ӜԱ߆໅傿ґéڬݹѸ ޑߩۂ͆أƕƆ ׍Ъތ튡Ъ풳ѹ׆𼌌念𵌽ؗț Ԑδˠˊ±хꉅʁʉą֧ ąڭʨˡąŠ֧𬠗֒Ï煸٥І ۰㈱㮆ϽȗǓ㱱ⱌ㜃 Ւ︹񡲀ǥϟʠӽϦё̬쪝Į ߼ÓڧЖݦߦڲǶʨپǀ 㧇ؼ󣇆ݩő⬂ˠ뻚הۿܜ ߎߠԬɺӣщ⹈ŏ뉅ǘⱘ Ǥ뎩䭀đԦںϸ࿢䥎ռ׎徐Ք &] [s20;= [*1 ColorButton]&] [s20; [* MenuBar] and [* ToolBar] handling is a little unorthodox in Ultimate`+`+, as the menu actions, represented as Callbacks, are passed to the methods constructing the corresponding Bar. This has some serious advantages `- state and presence of individual buttons or menu bar items can be easily adjusted according to the current application state. It is also often possible to have a single method for construction of both ToolBar and MenuBar.&] [s20; [* ColumnList] displays values in user`-adjustable number of columns.&] [s20; [* FileList] is variant of ColumnList for displaying lists of files.&] [s20; Finally, Ultimate`+`+ has tools to deal with advanced text formatting:&] [s20; [* RichText] is a class that provides storage of complex text documents, including font and paragraph formatting and even nested tables support.&] [s20; [* RichTextView] is a widget for viewing RichText texts.&] [s20; [* RichEdit] is a full`-featured RichText word`-processor (including spell`-checker) in standard widget package, readily available to any U`+`+ application.&] [s20;= @@image:2415&2606 ƒ콇޶μ̤ͤ⏽챒ސ ҄ݰʭÿܽՂڀЀʡ 儹́և䃁ƈ򈈄Ҡ޿Ͽ Ũ߷耹ڲЭܞചƐؘ̺΢ヤ꧋Ș̀ ݎ鲹ݪ҃ێمɍɡ憐ˍ繶̖ ̔ˣ䪎ͺвːߕþնФȗ͊܋をñ Σ‡׏ȕǵȪƎ Ė͌þȜƭӞո쳤Ͳڈ ΊֻΕƺáȽ߅څΗڎѼ۟ę ؎ɳߎԩכы̧ê֋橜كĥӭ Ύǒ׺ωЕ췉۩ɡ吠ԹϙṤ ΃َݬ괦ȡʣƽ歜貓ÎꜲؘ Κܘۆޜòֵ̈́݋ڎګӇ혫Ɉ ǯߩͱ䡡׹ܤĐްΕÚޤ扉 蕜伦䧄̚䶥󝇔ۈ匴Εȳι𔽳䐕Ņ̕ Ҋ򙩒㉳욐Êͮ䐴ː㵧ȡƿсت朤ؤ븠 я碚Úӌڹۊ񫛛ۂոꎣ輎ڎ Êⳑ󂓼Ƀʡ弹⏒ ۖˆԣṤɼΚÌʮЗᨺȢLjڎ٦ ἷÎͨݩ尷‰ϧÐ͹ᨆƶאޖÒ ʂ翎Ԯȡ翓ո꣡ӣՔ 큗Ɗҕ•Ւȡ䑐í⻤ǐߎ lj쾭ᇤ迥؍ḁ̏𑐪鍒ʎ̝ ҦԪöÎל뭺⼷Џώօǭو沶Ë܄ڵ µږʴ˾٥ǹ۲оǶؕٺٕڪԋ 㨜姤򔱰˖ϝŒŹąޖʡ о޹܋㐚Ɯˆ݃ޛчѵ͞ע ôʡǼËޛ˾ղعڜҋڥߋ܈ ʡ𺀾͎Ɠߔ`ͧҳП۫ʡ 맏͹Ȼۓ槟؟ŽɀĒޜ ނˉ򐈈؎鵌ఌ୧ ȡČŁ¡͞ሜ׀Թď莁 ωÀܼ˞ѷ̿Ί጑׷ٺ պڧʡę䬎ֆзσЦԕ 򹄒ŀпᾨűؕ앒і؇ᡧȑψߔ ̨ƆƆ‚ٍ‰ȵࠇۗҌDZ쀹 䪐Æ͈ۄЄʊ㸈DZ °̃ЄӔÞ˗ڵӇ΂ȋ韾¼݀ ҟ䐀逥ú࿠ïψṐ߹䮽⢔΂ɼંސ Ę׳Ϧقٙ兂Ԉӷà򆔄ǬˑʻЌ ̙͒Ԙ̠ҳͬìѵȡӄƝɚ ִΈ˘됺뫩㩑ۺڀᛡ؉ș ɚȎȜ풞ޱՄĊ䴐္€ɯ¶ 舌ӷɝŤ٨˕ˈꔬ°찖ϑɺĢ鄅 Դ٪ҫ̾ͺʱɢĥ֡ȡÞ 㭍ƱÚ䌭ѿ甙˺͗䄐ʣאՐ 䘦ӿƃϷͦՠσ邐իݲĹÜ ֵĿΖ͹Ȼ 򈈲ߑ駟ԍȱҜ؛՗„׉򈈈 ȡ΂⹤胔ˡ笚ΐ ݩ疁ȡÀ͏򐹴˛ ɐÀˎՄˆרޯח󀝂ȡ ҀƠǂ͎ɘЙ͊ݓ瓮пÊתꖐ쏋 һ̂ވ򪿬͆£Ѱ Ӳ°䐣ɴ܊€ƌȌē߆ԄŐÀ玏夊ˎ ❗ٺˎūڌӠӦӲ󌰲Ȍޖ 㗿ʡ恜ȁ搃ݨ뼋шܟċޖ Ȧڹôɺߛô҄ɕ䭓͛ɂ ȷȍ搓м䐀ȩΪЙԎٷŌߤˠ٦ ȯ颈򈃴ᴗ銉ϑ⢷ɝمވߖҊ┶ʡ ̩ھôذå֡ҁҦ͎Ϛ롘ԙթ֒Щˠ ȡ䐽ҸƄɦꮒՉԙϓ枢߉ ΔܡߤéȢ̿ƫ˙庂ʡǤà䯨䃙枠 ֡Ε즗ԠҎĖهӭ칶嬄΅̓䐀 Ȑ兂꡺鑒ۈ̄ʉ򪭤ӗȇĦչͺ 땇鏶ߦԸǼܑ󄠹ވϴ͐ڛ䒜 ͻŤ󺎄À€칄Юʊ󾃖œげ򈈄Ʒā 䐐΁Єω Дèܶʡۻ毇̢çɡφ عĕ܋ΓځƯ҅Ȭɡ鮖߂ घĶ䐎㴐؟ǭמϺ·锼򾹫 էԑ̲ؐ˖❷ݏɝ׼㮸޸ξũ۷ƒͱГ ͓č׎奚㬗ꯜ屷ӌ˧չȣ ҨܕηȏЅ̔܏ɷŲ싇Ť疩ڝ̙͢ڕعĥ˴ɯՒ 㦻ƮߝΎۻر㔩❗Ѧݮɡȫދ Ťۑٸ各ߤܱ嘜ϓ溲ΉƄɆͷΫӞܒϫ ɣ͒򨕗ΥًÑ٬ܗ롏ۣ쵝 Ά㢘͸񓃌߄Ƣߡٛګٹ ޘ̾ԱߗǏܜœݘλ⮓ŻΗ ߑԶј乜ēȘ攑ˀô މݞãÈИܪ ޏǐ疘㘡ďϏنɺ‘ԁÀ ވÀс꒫ѷȍȀ͓Փݼ˝ ЫӊϢʡ檞ٴ޽݁񰠇 ߋɝԎݗۈȀނъҀ𖘓Ç ŔԐ䳢ȡޜ䌸酀ޓի쓺̙ܩ۸ ⯆ѹǤЊюס޵۷ש񘓓ϵ ؇̀ʟǐғՙ𹤗Ћ۽ȣ϶٢Ҳ䐴߀ Թ͐޴ɡɆů⋏Ԙޕۀܵߡˡ ˯е˖ݱ֭␥ݱخԧ͚퀹䚸۽ ␥ݱةܽ΂襵ðɧقޕۀ Ɏ̛ٳꝅޞÿϜƒŪç ̌ɡϟ̓ݕۆ񫅧ެˆɱݱӲۋ ś߹ʗ؏кӃĖ䓰׀׊Έ冖š£ ƐɩרݯƳ鶨̩翮񑢇¹ٙĒЌ臵 ڬ㬯Մˁ֡Ģ后ޑф痿׏зĄ ˗я镫ۊ咖ۓƏأժÞքԒΟΪ зҷֽ͓ٛѷӍ߱ÓĨÓㄞⷰ ʁ坳𜨇ԋҌƥЙ렃ȂǮؠ͘Ǭ Иʟڦшӂ⣥͏ڂ娩€ȿޣ ćܡԺӻʛӣɯИœ׵х׃̔󂒠 ձ榌狚띸Ґ镸݊ӇԘΠӥ֙ ݫ⸙ 󪒡ژȬӎގဿ繜ı镳ުė ӈƬⅲ׻֜لɇцȭKؔɁ諦 ĩʎ⿅ʈ֔ýЊ˖栚长؆ τ赹ǤږԆðӇИ٧ɠ 󚷮Œᦉ帩Ɗٱϱ䐬䫖栚쵿 ȅįċƗ̼¹󅻢賳֝ྏ걓ȱй듭 ոۖډүÁ󹽽ߜ®ٺɠڻ ߰ʞͳ˭۸登݊כ瓄ÈĒń㩶׆€ ܓޭ׉Dzփӣ̄Мӳ ⡢䌸ꖎĎðںᰓ҄ՀЄ惷繦 ֛ȸ񳋅ɾƠÖ̏Лij͔ Øөٺñ‘хϡꐥ؅À죌ϙ󫜡Ĺڠʗқʎ ވƒڕҸʃIJ̑ʠ ցƪޭ򦸷¯ܰ΍ųֻԧؖ ˳ĭ˸Ęިʴñщ벏̢ ׵ð⇖̇ѻԷҭҀԼǻͰޡӹÜ ␚ͥϝ֋ߙٌՐ؂ÀŘ󽇼чߦݒߌ쵿 ЊԴ䵈冁߷ị̂՛¾慫̶Ӹ ᲒȪĽڼӱڝć۹Ɲ񕵳 ޼񉫘醯̲ڹӼ±ŭܑ疣٦돍 Ձ灋̘㦱ݒ眡ɰʹԟś ¿ȍ縰ąօé۞Ϝ챤ۊϾߕڲծ򭅭 ˪ȡδ𙍟ݧݒ眡慘ƩּνՃ ވɯۋŽغۨⱝŪʄȅЃ͛ 㼣ۃ뀌ؔͷꧺִ̈́Ѭʞ ɶƴɣ񢋝풔˽ƈՁϱ߉饐܀ט ޙ䊿׌܃듍Ո禴Ղ晚 ɔہȦʵ⩜䁟Дۃ⣤Ƴ֧ߎіŔ Ěͬ酘ޙͣȯ᪽ͪдΑ Ȝɺ柽ʢ猇Á܂ɀޤ ނNJ愚񲮵͘е옱ɞڏ՝ س̗撣ߢ퍳˳܉Àб˙Ӕ˜޹ߌ ӫ߂ߝřц킡īȦʨ ⑃ț̷벐騚ۖ櫶։؀Dž ݺٍ򈀀ބȠâ育܀󢱢΃ ŐNjԑܭƐ䐀Ԁ捁򈀀ޚݬҾ€ ւڷٲ孃ډ聀ބΥȡЍɁ儸勐À ͧ䐀؇Ѐ؇Ѐ؇Ѐ Їؑ̀à΀À䐀Є ȡð€䐔ȡ򀜂ˁ 򈀀ȡӯмˊ֢ͬ̓ §˓堭Ȝϟ̲ˡя滏™Ƥ緝 ÂꆐþÌȞÈׁ䐶ہ䩐ꡜ✘迶 ȞƟ穽ʭॊᓕ܋ΨՄݚ” 󨙺ϩܵϪݞDZ䏚ӕ˂Ŝǫݱ ؇¥ȡѝߵرΌǕڭϾ ңׂ䔯筻乛ޕȈڎޘƍ竆ᤘȔ͉ ړÚң׼ɓ۞۹㧄͉ϔݼ޴۴ džܓΆ̆㌶մާʇ֜Ѭѳ ݵ՝͂߳暗֊ҋڀ쯌Ӫ񖗖翰߮ţ嶖ł ̞åӳ۝愁󩆼혊Ś޹×ҋ ϭѳքܡ˷׬村瞷ݎ𮖖ׂɈӫֆ۵ ͥ䵴߷۝ӭΧ𮏻ҶɃ؍忟Ɠ 磱͘δ֧ןۦϜş⮝݌ՌˆČ Շ𲐫؝˚ǭٕ׭ڬΤ纪 듍˭ꛩ͗䃹Э͆ˆ׌պێɂ ϯ糘؍ʗÓ·͵̹ͯƇÙŐ΄ے 眍ٙ儫̳ϕʚ̹⃔ᔄԩޠޞх ڳվ˿зλ򗙱薽ю քꤠն҄íԵڛ㰤߭ޒܞ 𗺜򣦜⭑ھՔ炮ŮÙːڹ ѷԂȡԀΪȴѨ˵Ȁȗɡʘ姄В 屰ڦ꾌ݔ“󪃘սݕױЫë ϞǏӟß߿ɡٹŅ ܕϖǭƉą٭ǵ謁ǷŝɊՓ ߖֽڨƽߋǃ䐼ߪüȎ錑Ύ܋⾰ ڿЌቕԞ̅ޔ ̖мϟڳØߪŒŚ̵웚ɔߞʑ Ȏѧ̳ΰ򼝑𮼝ǽ攘ޕӳݛɸώɝ²ߜؙ ӻܱ̈뾿ЫϞNjꅤԂ ı哬ٞФڋĮݚ߭ۮծ¨ꏚ䡹 Ӵ뭬ͬևĎƀ皳٢֢Ȉر ѕㇳݫٝԼӚƺӔų߱ ꭻ˝ʝ؆Ѓƴ̸ޡթсļҩ䟕 ϵ类齷ݪõȦ썔蚮얍㠦ͽ ҽ޸ʬ˽Դؓ뽲扉 ࿲󝯁ɹČťӗ䫐߳Ԡǘ 郵̪ﶛ̾Ʌۘ񒍼ӽو݀缛 ϯ͂ˡҜܨܫ˗ߞӋ ᗜޭٱьļΑ錧힭Ä Ƈݭ꺱Ņݓ䚿Ԟ򐔂טχ ̹灇ԇÀїӳԀ΀倹䐠 À倀䐀ڎÀో碂䐀 ߅’́ȡ≐À緁䐀ɀ 倹؀ڎÀ깼Ŭɖ͂ À豀߅Ș˪ѯ߷ۂÀ󓟞 ޣӣǏۢÀڠʎسəؾəʝ ͯڙŮѦܝܳͅڡ斬ϭ ׼߽߆؜čܸܼÛ켘 Ԩסі܋גٲˍʭ۶ﰺ׶Ͼ ߉ŮǃǼįޱ쥧߇魬ʃ ښȩř訃쬾НĬ܏ 랼üӗҠ򯑳Źܿʕ䐦 ܧʐơũշٷ됟ӟɠ瑛 ž뎚Ƿ薖ǖꞞ򧖳Յߞ֐Җ鿿 ¿Ջ緰뜍Ɨݣегѯƽכګ ֟Ƌ쓫ūじһޙᓤ־ͧ ߝΣӺѯƥ҂֯籿߀ā ڦ͟ힸÙ⒒ퟺٻ㹻͟ ݣ͸ŅЗѸ􍪜㿴ᤇɱˑ⏇ƅ̏ ʁ¾ȪՕߡǂ΄֎Ωֹ鹙ِ ò·䜏ˑݾۿ齃 땻ّٹžח꤃שּׂԛ݌ʫ靔 輪Ϭα٧͈Ö򈀀耗 ߭݌ԛéԎݜЬЇӡϷ걋 ૒햼ȋṴ·ȎǻИפՇƽ ܋݉ޜ٬͐ЫփݎʢçȎ؎ 쾦Ǹׄ̌ݎ鏮Ȏ˩ØŔш 亓ɡ؎Ŵ蜝Ĉ螖ȋذ䵜㐜Њ򨒰ḥԎᮯ ɼÂʸȐݎɼɡㄙȑй弴ӂڰɡ稜 ⒜νҼĎѬñ۩񻾉NJʜϐɡ éŘ聯Ω򨣌ٵDZʩç濴棠䀀 Ԧׇ߷șܠӃޘ뷺ꁂ타ăȎߴ ߼攳Ķ۬鷎氓ˡݎĴԹ Š۔㤇ǶƶƽܳȔѯʖȔǃ›誎 ÓڏֶĴ˧őȘ͑Ȏ又 д휏򾢦֡֎죚؎ظ԰ޑȆ흝ְ 扺ԸÓ䖪򲭢ɱӈŠ򈉩ӱʼѐ ÓѱϱΡ™餇²·ȋ颶ѝ ẹӐﱖ׬ɡՇﭽЭۈ ϩݤ綾ڨɡʮ򠨛׾ʪ͓ټ ŀݤȿ诎ѐˡӠӐ ۴͖ЬȈˆۅȺׯΛ괜Ч®ڻ ꥪѿƷ覭㚾󖍒ý֑Ɇ ˒ݕÃ״͜đבɡﱶ 귉؅㾁Ȉ񖳠аۧ捊ݱ ܳс؋ߧ쟛Ȱل̏填 欪ͼ̤㐡ɧל󂌖ýד䘬۴籜ꮜŐ Ě閯⯶ٷ咾야댖ѧ ˖̶̪߳ܠʧʧԎ恃̘ ӎ毽ݞŧ˃ܙ훁ݯӐɋū әƴ窾ۤ¾לϟŨÑѤ鷯 ίᝎ띗ؑ҆›ثޱķ跼 ˏ˾څކƓ̖Ĥޙ᫫Ѩڏᆴ 브ވֽΟ者Šↆ ûйȑχģ왝ǾӥLJĸĥ㢎蒙 ⬛ɡȩȋϝО،ׂٰȬ󨢹ԺмȎ˺˶ అ璑򌶋ф˖Ɋ֡Ģà ǟ󤪟币悉탆 ڼېÀˁȓΚɓǵם耺 ϯ؝϶۳۬辛ݐ͜˻ ؎²ضיִ⢿뺴ݣԣݣګ Җ߬ﲷῲʖŐИʽǫޝ捝ۏɢ혷̦҄ ĽƮÊϚ˸֡镚롁ʝЮ¡ɛ Э㝃ڹƭܳꡝčоы݈钃Ï⟻ ѣƗΊҲω芀ԄϠ֟򉐨“ Ԏݙ٧󱇢ൻѹߺތ˥ƴ̝ ڱݍ蛽ĖÉâȑ݌ɩɽ ֝˾ƴԛħŴēʧĺ먨۪ߔ 쇹ɼï饗晿НĞԥȷĤ 懅Ԏ둸ݹ믒첢 Ƿٯڑу뵬ֹ읊֡̈𫢼٘Ä É̠玽ñВخ±䰎 ̥ֿ̺ٿĔѐмܛжמßТ ش؞ؖ߷Ү…㢊ܡȳ٭̢ؔ֡񇧭В߶ڇ ܈σȚܡʺԺ؆Ӻܯ܈ ɻݹ߿ϝϿȠ˨﷎Нăܡ 稜̣غˆȑ㱇ԺϟŒկӨϿ͵ȡ ̀ी򉉜ܻ֓ڇҬՋ ĝݳѓΌÌ۶ɈƬóϿ ٣غկ؛ݣ둫و޻ڔڧ̝ݿϝ Ӵͻʰ된긼Ǧסϝ㑲ܡ ޱӀ̪䛜û؇돘è У󁇂Υ󇦑ڇܡ❺ګ쵧擅 ܡȴĺɵڭ̾ݙռؿڪ ĎĬ׷ӊݼ˯ӎˤ֠轺ȖŴЮĎֺ˗Ψ Ʈȡཔ֭ʕΟª߾ںӍ ڃތҬ屖ÁֳݎҰ⹔׻Ԝ媳ę јٷԠԃгÂΝ̖𵡤玵֖ŷʼ﷘ϝ 玥Ŋ䟻ܡٸٖܡكؑ吿뢈 ի̝󇰢㟻Ԡ̝Ʀܡ аĮ֖áܴʲСȘѮ֯ßܡߓ ױ߯ǶҹÉ֗䎝ɖ ʲܡѧ̐ПݥфܖɡۄƠ̬̄ŭ ‚ҧ˒󢜹Ȏ͏Ѓ֡ڭίׇ^ áݻΜٖɆˢэв ن״ر麺ﻷ̝ƒ ¨؍Ɓܼ쪾ǵȪмΤøޛЍ Dž߲ڨ︄˖ǪǞʖϣΎΦ쓪؜ɢ Օ琴ڐֽ顺ٺϠ롥즫˶ѶϿ݉ӵ םזݢ°߈Ⱦܙˠ˰ҕֱƲ½ Рɿ܌ȓɡ̠ÚДǍꩧԱ䐶Ź ғߠۛʫ輸̍֡խƒ ˫ߣ񰞮șӕ˘٧ڸ® ˤ۵̿Շƺžߡ엪ɡ툴㡑ƥУϱОԇ ȡɡ鹪ن웂簧혩顑ȑ ԎĖ؊бٕʽⲶ䰖혧ӅIJ΁Ȏ“ߡ ɡɡЙ쬱˘ǡŸĴוߡЬØ ɎȎۅᝇԋ݈ȃ涒򨬿ˤ 󈦆σ˙ȹ׏ۈ񓽧㓃 ڻܽ߀ƭٽۏ￰ ⳿产ݷٺƱ쯠ײՇҡ ů׽ۂ徿󿲰 ủΟ󊟶Îݔćϔ׳·ٹꓖܤ֜ ܥǓه솴ڰ桡ڔ͝ž ۍͣȻޱֳƅ̈􈏎ƭٺۥ ֲƬ۰׈эՏګًٓſ뉜 ͊IJÄǡÈѩƉٰ¬ɛ آ؆ᜣ궙ʙн݌چЬ趌ø̾۴ߴ ɃȋȡՃ䘌ɒ³ԩՋ퍅ݩ ØԔȎَٰ䡃Ďنľؖ 肋ȇř쁉Ûø֦Ưֺ̑Ʋ񏁒 ڴù̗ۧ˭߷޵ۇ ݎþلݬҳޜ쒛ȷœȔżݐ퇮 Ǒ人،Ӯ료Ή귥ۇܾؾ ƏގӺΫǐאсגΪ࣯מ ԓ˼Ԃ玾ا⣶܌Ԟ▝ۀږ יǍ۩祐ǿŬڕǷԝԗ ȡƎ쭔׍пՕ㛲ƺŬԕú̢Ԇ άȇ׺ݾؽěְƽζ݄ú ݾԌϥⶳ亪ۓпُЧ燺޴ئ̷ƻל ؆ȝ鴙ϥˇٻ첸ÅǑѱ䚯ᡚ дϧ˅ƺ˦ٗ㑲栺̥ϋө̐ؖ ΅ȏȯ俳˗Ďŷ񻾥ދϥ뾲өо 뒪꼍ǛөŇ횶րȚǍ׍֏ ڻлƓĊޫԋԙՠٳ盆ȋϪǨ 휿ߧâȮզ؃ྡྷ醷ע쫤 ݦ興ψΣһ̳߳أƻ ¼ݲԼ־ѓ䠾‰ˋŗ숁 ǭ↶ڟΣĻնќ༈ܲۼвܖ؝ᨡǷ ⾫߲Ĵԓޕ򨊵ņ 뷟艅ܒϜ򩹄ƦϞ¨띬ߴ Ƨ϶ǥ϶ㆳ춓寶۰ڏ䐰衝 ͿӇ㬲ө۰ٴɗөν ԇ۰҅ן蛏оίѢú⭩萎ᶛƭÈҏ԰Ǟ 앖ڏúבՋ˧ǝӅŋ⍘ן΢׸ڟ쒟ґ ʎ䡕ɶȋ긨嘼Ξغ菇򉖍ϥ϶ϥؾۢ ӋԷ퇞Ƌ٧ҿ̮̙ܗ҇痢ʫ ޽͛򔱵Ԡ׬Ÿȡꅏ蕶ԍ ݎܝΣȾӳҤޢج𗱲凫ܩ½õϪĖܭ 䏒ù䐞ݎӐË܃Ϯ»򈘄ų ’Șܺ읪둜龓×읢ŦÎݖʡ闟 䡽棞Ś߳߿麼Ќٴ敶×Ώ ؋ȧ吳⋭֙߿¡ɿɺŇǡѻХ಍Ћ潀 ɎПնߍſ݈ݧܷ۰ڏͱоץŏܣѳ г鈉ǟ큫݆ʥȋ킘顝ꃺОLJĮɡ ӛОƍҢ혷ú廆䍉Ɏڏ릓О ᤊគы㭣Ŝ펃ȒƬމ ɧΩú䗣хԹ¨ܚ輯ҭ̕ ޾ʲՅ혯ݱ㍺ڃזɫǷ̽䉽 ˱ȓ϶·ċϽوϥе߃ᄚʦ׿ ع̸Ͽ򜞬ȋټؤ΋ پֿ磗ר״ָ֟򋩮πؖ׶ٓΐׅȯӤ Ř֯󌫗֠ޠ项􆂃ɽЙɮʻ鮬ؑק  올ȎԮ񫅧ؽؖѫхӹ݋ˮ፫Ř 틺҆ռȖƻʫȥ˲ѳ 쏹뚃̏ޟݲ֭Ʀȡβîчֳ̎ ֡ߎɛٯݜۅ᎘܆ݖַ베ɻ îֺ񷰷ƴ潖﻽ޯ߈ݲѭǴՀ Άƶ΃ѵ㠕퇯Ȋ׼ǘב ة϶ČޓϦѿ̏ܿچӲۿƆ׍ ҊΞܡۙȬĉܭܑ뷍ٰ传웱ۘ׸Ż Dž揋ۘϸ䞉وٛἰӖ䰨Ɲ މؔե֔ۅܓ榗Ȣӏȯܔѹؖ é᛬ے̦ϸލﻼ˅܉߬糪 ג׆߳Ƒʌ ۛι؝ƾŽ鄕篂…饉ݹ붬 Λǽۛ﫲̡ϵӇә϶ɋϡ޺ٮ▝۹ ݼҶɛםɾɹĊߓՖŶ򶃓LJ śߣҕ⭸Ȟձ̠ 鸝Æė݁觯ɀ񥁣읚ΆʃҚ돻๩ 띛ª𯝈ޅ÷ܤߍȦʇ񚈫 ÷֡ŷͫ졺响ԸޝܗŹƹƍ͛ ۵捂򂲜ݺ˱شѫ߷ؽ 舏ȏЗϋۅɯ⭴ᾈ ԩͥˉɹ׬ࢭ־䉪ޯʷƟ񬡑퇭 顤캶ߓڽљ‡ޘؿă֘ÊÙۇ ̾⫱ő᝶Д瑉ŎލŊնΚᙽ 愽Π┾⥱ؼޱ ҥஶ뺓džݴٜ򱇛ԓǏ 𮑢ߎ΃͕哑ϖцϾ Æ򿴰έ۽Ʈ̼օȎ •Ņ۝ރ֕ң ްĦω򏅟ѿԢĎȾㄟѩƯ쾎 Ȟͭܡܡݶ֡ޡ򟶰ĢΫ 񐹶Ž՟֜א熊óҙͺɎߥߚ ɻȁچߧʨՅѩ䷎Ɣ̼lj ݕȡϾл׿կ񋿧Ɔ΃䡽 ՞򗟍廲ǟɗ츸ݿɼ Ҕ硼ִ̥À҂ ݊ڇϝÒܡÒܡΣ֢ҵĺѦ ̥ϓ躞dž까û֡ퟻϨ玝󇎘Ǥ֡ ݏٻ׸ҿͯƺز컙ˈ͖ҢȖʡωҒҮݺ לܝ҄ءdzß捲ѐㇼ č˲ʑ믎͇蟉ء ގގÏАۉŒ̗¸ơԢۥ ۠ōəڼе봎֒ݫ鑟 ̰ĭȣ䤫Ǝ͑Ϭۓɪ ء꽐ȍ󳌞ЙɦگǘǖثƎլΘԱ 쐳畅֎ءٖΦύʬŞо˯͠ ǎԱ̓ѺЦ萵Иʾ׈䎩̘۷ ߎޜ’Ɖڴݫ֭ÿ폏œχۋʈ͉ ˴竡Ӳ݌Δ¡͖Йд ӋԾ꾷бǢƭՙģ Ұ֌Ϥٶ˙籫̼ɉɥᄪȸ ጞъɢﰳ˘τֱ֗㱲٦͵҇ ̬ƎʤҰҩ뜟矙ɪġ³ѣӾڵͽ ¡בĖ˅疭Ә֬֌ыᜪ򈸴ۭ섎՝ 裦׬׿酂́柍ӌܞˊɳ؅ ǝ忯ځÀδŝ藄ѿ λèݑԬޡ稼ëϯࡧ͞Õدƒ阙 坲خՑܒߙλ퀧Ε䝪֔ř 阩އѯΟͻԑԭʧ ݼ̮Έƍ瘇甘޽궚ӧ΂͸ڻ ׺ơݘѵٳ珠⚵۶ͨϞȠݩġ ֋ߵߗ޻ѻ ƛþƙޭ߽֞ވ٦ܚʣ ԋ霁݁篣Ȯՙĺۮ ҿ˞奮ġџ䥎發¦ꚇÜɢמìͥΓá Οլ帨㐵ȑ¸͛֟ 驜ɟуյސᩮ̞޽󇖮ۭɦڬ֬գ֬ ٶ׾Ԝᤧ׮݅Ͳޫުڪ阧蟜〕ܚ ƻꖽٶϬꙈÕéφ̪謻Ե竍ҰƳѾ⨵ŝ ז謷ٖé˚贌βҰ떅سβ֬ Ϻ˹ތӝ嶟٦묃ۥ׳ٚڌŗҿ ־ӟçϸٝŸǚ˖ÃǺ􃰄 ԓѽ臌熍Փ眜Ƅٶ ݪӃ۩Ũܤ菳ǯźŵ뀕ڤԊڕɋԦ ϑ眤هήю迺⡽ʭў ҆ئԌ˥Ȭѹўʭ׹éԎƞʉ ۩˧ᴧТéёβ߱٨ʽ⑎Ԛ믏 Ϲй̪ééȊņߊ޴ֽ̅Ɗ쐉熇 ۡϡƸԗӺҋփ؏ԩܹǏ LJ碻Ƅа֯￟Ӑ ڏ¬󱵢〭¿ӱݝǗ޿秿ѓ׸ 㩢¾ߦݳ񺝆ƁƒŎ̶㇉Иˍȇ鐝Ź򢽵 幸켚贌ȗЫГ関Ƕ :ӢҰ增阎㘉̚Ƃ䡪ٚ롩Ǡ՝ ϭܯͨꢽڊ쨵‘ԊϑòЕ ذė癝ݤݖ˸Т֍Е㞧ێܠûڏި Іö۠ڏܚϣݾƙ㿞 ѬӾƙɖǭێ吙ηیਞ ˽ӷƖڍėÙŎߊ㗻εܵɫ⦭Ƨ ԙ欹ڵُƷؾҢѿ܋ɮ ߜՖﻹ꛿ַ͝ۇ촅 菇ڬ◲Ȧ펡㗡ݧ䰜ȳ󑚖 ʶʽ́¼㬽óѱѷǟۉ ΫԊК咚˭ɝ؎蜷 ӰĎׯ󶚲áơ⎪븄Ŧ ֓ݻʾ֍ЕҸιġΝ뻿 ЉǣǏҳԋªĜл Ӫҕתғᜪ☇ꬰˏ뽨ݩ̈́Ջئ Ēơװ㊱Ϟı촲ڞ߮ϝᅴὫ ҁⴌʋؕݣƷ߾޽Фͱꀅ۶Әǡ ӧцշóСԤљ¹󧟾嚵à 탃掆ΝٳӉ׎슘ɿ㞥Բ֭ ۱ۅނݱɢƎļؕښ㄂ݺ ކލ¸ĜӇܚҐ铌ҙҁȨ侣 ǁƸަơԼݺİڿӦԎߺԟРԍ ݻ卉Էûώﰐٍ߄ łԌ왦趢哧額۶ߎڣ𨺺 ј爕ҥנļ䭬ڴȻ奄ˡ ܟڻ֘㢅طϔˆ㨐ơ̆ᘘͼʆ ǣΦ،ե˘߇մ˿Í ַͧјࢫϿāŒƆëߨɃʷٝ Ǫ㨐ơ̆ńիΝ֡͡ơ 樌Øב߂ං𕷱„ơᴮ֘舎ġȥަ߲悐˔⃕ ܜ秏ǼŮҳңǦ׋Р͉ͬЊ˜𬊇ёÝ̟ ȡŌ֝ڕơ樺ڍĩШ芈Ȁ곁ʎǡҢ㣒Ů ୯ϽʿۤϯÅӦȫӪ¡٢ݷưӈ 󼉎܋ì퀾琱ՑĻ己烩 йҸ’Ȉђఝأ˹ԉ و輹ͻ论Ҥɓޘסܵҫ ۟םܴހӿѓБނԻơÌš倛ʑ Ă୔ЁՑʋʈٱ߀ߣƍי ʌрⳙ©󓋧׿ݖ ǘ飠滩ь赘ڗԄƋ ŝ򕹔ūۢἅȈׄڶڄ䲴ξދ ɢĸ昫ơŅ񨳀ীԭ؈׬݀긄ÜԒ÷䉍 틌㞎֘Ÿճ豒ёⳌʈ ކаۘІӼзҨũŪĖ͢Η ޜݻڌơ؄턘،㐚¸丬п݅ 띑쐌øĩЬ腁᷅٨Τ͋锄 ƫŊؽ̫洬޴ĈͰÊ˞ŀޣٷ ІЁĿϫש͚ Ăְܼ͋҄Lj͸Юعľ޾؄ƂŪ ͕Ϩ¹ݡؼ銁ˋ􅊔Å̝ ȶʢ랳ιٛ۔Ыݕ 㑸ƌؐéԒȗȡ͛̾բ қڟ뗍蘔򹖟ޝӣЙ䑡ơۡŐ ˏЭٞŠ߿⚱Ē崫 խʨՖ̛ܾكܕȸ񷅟ʿ見ņâϢ ֟𕡺Ӝʂ΂񱀙Ƕ݂Έ޼ ʈݎڶ膄˘Ѝ峕Ъ՟٨ද翯 Ӫ󧊧˛ǥϴ쎀ú˳ơꨚ囷 ܉Ҏ˿ĿϜʥ癊ӥڸքɳϕ ⲪЁиѮDzѧە쾸 鳸ʊʀڕ󍐘ꞎݸн 뀎˷ˁۗǀȆƯ 朙򆕶İ炯ݥһ쮲‡ơƀʓ䭑 åá鳠›ѡ񡟸ޔޭܙҝ͘ȨÌԑġ۸α ϨЍٖ©ùٹǜډơغ ǰʤơƨᤃŤŊƊ鳧荺 쑆ЧƭÊ׊çɾܱ׍Ѯ ۱ŀⷤӗDZ˴ھᦣ±݁е˄ ߃Λծᥓ܆لš仪򣯡ܱ֞뒕ԥ͙έ ıљ֠ǰהҪ븿͚ڴڔƌØ쀋ɞ惖ˁ ӧᩕĸߩņÓ¡ᵯ ғƂ߉ڌδʘݱتơࢫ㣀燅𗏐 㐛ߵГˉ欄ąឃדɮ ݩԒ̿Ћ泜ޡݰᜤˆ؟ʇ큪Ջ㐛 ʸ¸ඤٗ윛ݗז껓ÚƼܴ꽳ě̬ޖ 潊ڀ솖êЩԝΝ¸䵵ע򣁽 ”ٟ̻ʄܙϚȼ򙱬ۜʸݙܨ áːиڡЁ컌蜪׮ ۥ±ضÆ矟ꎅѐұĥӄ܊ַ֯ 狉伌Ɉ˜էҹ܋쩆ζΘ،۴־ ˏĂ֛ƋҰɓϣȪ¤̓ƽǒĎ ƝР዆Ѫ曶٥׷ꛔ͖Ľܱ սŌљʻʴƀ݉څ 㸴سﲦ쐗ٍ̦ݧú،Ēԫܤ ܰźґ͓ȹàDžᮐīȜѮ ٩߽ş񹃔净Ԏ閃ܺ̀яĕЋҀޚơ ᇆߌɇ򜡺ȿû݆㐛ܕΞЌ誃ݔ ġ蛥á䵿ߎƄي৥Ѕʸˇơ ԛõ֘ơՅבدơ˘Ք̘ؼ şȚøėեøݡُؐ֠ڔø ʰïӈތøėӥÆՈÍ ԣߕׂζ㐀±Ѩ͑樌ʏܪǸޒ ӳĨ焅Ņdž᳜ᵯ򵍻Ƹ沜ٲ׏ДЍգƍ ͋͛֍ںէΝڵא¶֗ĀՔب秌 ߑ׶ȔЎ߫ҲҔÁ툀풁񨨴 ܖŮֻ֬홗ꕡ׹杪ٱܖɇ̯̀۶߮ ͟ڽ뼸ڼƫͪ’骣򦴵 Ǘ޹⟒͹己㡣Ԉȿךٹ ŨծهŁ˔ә֬ءȥ㜪ۛ ϩ؛ع맇ڸ܄֍ġߓէ֢׬å ơøäʛơΫŜè̋УڀЋ䝇ى ƍ˟ơՍ㐚¸혇헑՗Э ʃǡޢÖۚ蠣Ũծժؘ،㐒¸혇 ޽ʧ͘뚭î֏Ն嫦杕¡ԢϹ Ҏ׼խݛ͐􎀝֥ֆ۞ᑠŮ݉͜Ň ʜќԤܙϒЎ窬͈ ׎ᬣ튍ˀՑơ⑃Ά휝Й ìɦœŒ¡Ѿܽ׹ƝַⳄ ڛť۴⫱ڗӕΉϠ͢줠Ȣحߓ ûй㖵ԤǟšĀੀѸΨɳ߆ҁޒ ۚݰХǕϕ뿀ᐟͿϩϫĸ ރ՛疇îˁʀã⥿υ뇷ɄϦ޸ 󎕼ʵߤҸԨ߸㧈•񝤝ɻ ʔˬ񋉅Ȥɒ•ʼn۶ԭڡ ۔ޗӳʫءțĽ҅ 񈪈Ή㞀㐺Բ˛ۛφƴ۫єӦ پөβùҸǎ̈ᮐ菱ۙ̕ģ ܱᐣرߛʐą̌Цܸ˾ҲĒ Нᢊş㐩߀ԇǹڋᜒәզѲ轹חɯNj 﫻ηٴûٽ韾̻ˆჹخڗЙܳ ؘب׮ƭ鞜סȈåҸ舵츴įᆴûɓ 󇪥谡ެ禛ٚ䋼Μ׵ך ҃ñᮜԍÃ֌ڧЎݽݍ얎ǧߋ񉟰τ 蘎É篟ۄƸ␤ӼׂǶ ܅򣯡ܱ򬼶ǚҚ᪦ͨ•񀴂ⷴ ƫ͓ΌۂЃ׺ǿܩꜪʛޅӆטӇꚎ۷ۇ񴴚޸ շӼ񀖔Ñٞʚƚ׹杪ѱѱ 𰭉ʜ؅țܐá՗ȿ͏ՖŖʭߗǥ ҚʞŬ텻ˁ򁸁˸¨ʌ ãҒ͝ŝáӤžڙԔ 矱۷Ψ̻둍΀ءО闙؋Ǹ øʔҵöТͼ•͌Β퀒 ғٟÂާ̜Ιԋюү ̾㐥ơሧեЩН昍竘ߢ㧨² Ñ݅𤓖⒉Ĥߚơ²۵ Ȇ鐪էͯߝ̳ᐄϖ鳦ៃ𨠸弻ρݺ Ԑ—قʥ菷߼֠ìơї򜑡֛õ 刜ʆ֟ޖ͠ߖå԰֔Рל׎ב⻇ؼ؀ɰۧ ä‘⥅ިѹ푎Ӌ蹒Ϥȯ ٳφñ㧎𑕛یѝӫڲ͎ٓ츀˺ ܉׊㐃ʒ􍍀ՠơڍؔ㈧հБޟțń Ћʣʯ˂ܳЋҎէᜮ͟ªÐ ޾ѩ𨌨эȡȪԹ܀˨¸ ơԛõ׆ԉץ㐧°̟ڕƀձµͰÊ ҆ࠁΨ쐇򨧝ʻĸ昇ơŅøٝ߭޷ Ⳍވ¸ⴌĸӆȉܘ뇔ÜݝըаÊ ދ҆ӰФ͙ơڰơ⚜򡅀鼒 ڔ׭ڙ갔׋ݺ놢奪ŕʧ٠ ЎՔĉޞߪ޼Ѣ߮܍œח۵ү޸ ׁ˗۷ñꈎġȥަӌćё׉Ņ ҳǦΏ̐򛭢ދя£῰ΎȕᙬȠ ҄ơŤ夷˸٦βמ߸৳羮⷟ɵÜ֭ ъְᮞ͐ϽئʴϽﮇʿ堲׼Ùʋ ʯѳ񈪖ٳй区dʡ󮐗ȓӝΗҥ ĵ󘇐ȉ֘Ü֭ݽΈ۬ ˄濝ÙÄ͔ظډͬ鎛Õ͒Œԭ Վܗ¦䐎Ӟ̲ᘇơŅøʌ֋槙ڠʕ 𕡪ʋԍÊ驮⎐Ä̀䬖ث׮ˢϿډ Ħ鐺ΤԜͰý҆ꑇ󘗯̭ڶ譑 ظūı񹭀ҁ趠Շ˗ޒ‘ ߄ٌƉ¡ؘޢƽٙԢ̒ и⋶՗銁Å𛷺Ӓݡ걳Ԁϧσ ܋DZʸƐڷ߈ܧИ柄ɥՂ Ƀ氨𩨔ʡ␊ȉӧҠŽ 롉ҔΖՑĒ҂ʊ̛ņۗۛ 񤩓̚嬧׬ʬէ㤬ǀ݈߸ ȣ㣗ߠݱЉ񨤦􀟵Ѐ񨍀̌܂므ơ궜ͳ֛㧏 Юϯݷڌ麩۝džڼ閧ެﲧݕơ ֳ竺۬尭Ϳ¡՗汔ؒȇ ԝᄖÕׂѐŸ߹Ōȫ͠þ ʔƿۏգ׏蘎ߺӒ㎱ߜ蚱 ۂϴ͛ѻĻ錚ފ튭񛇀֌ èƥčݟޱŌиШƧˏȆ߅ΘǓ ŐܸᲣł՝˗ƩщՇޡ䡸灰ë髈 ֘Գ¡ߝ𨌨ѕН Ğҭ¼ۥ޵ȲВ͈ņïŶņЏڎ̱㜂 ǡ݁ɣفǕƫӢġ͚߬ǗǼߕѣ θ̹͙ٟ߭ɯӯ߿ݑꠀ ѽ񕾫ˑՏɟɅ򲜊􆧻ïéʋǤн܊Й Ԉѯ姤‘ʝܳΡɻ釟ЮÚ դښѐЮŮݻݬû¸񨈡ӰǏǿ ޶ڧѱžԠϓ͛樇Ձ脀ϸٗ ߤЗȡLjnjƎ͚ʏ؝¡Ɋ ߸ŽǏ㘒Җި³띑ЏԀž㦥ͧ ߏڸƾΜ҆ǰԇ񨌠׽ݯ ٘Ĺ᫻ΗβɓȡჾӒ᣹ڞ ꯼ͮȼ؊ّ㊐Û鼲ִߐƾŻ ƒぉʸﴖ֭¸ġ 苨ݽΜȑ׮ƸЍġÄѬڙ 㦍ʄ鲹ͯ҅谀Ώ섔ց Ǿ̳ʄߋ܎ڊ얥¶ΒюݯŶ锧 ブﲻ˅Ϸơ޸Ҥ эӣӷ돯ߥ㐴ҕϺ儘Ȍ۪á ΜרǦϣᤛůɩɜˑմΠ ؐ磖阿DŽƯ헖ǸΜʄϢ ݜˤԚ⃚̀ƞ͵۹יц» 阋ˋׯĒ՚ɣܿȍλè Â톍ςзá«␍㐛޽۶ ޱȻזߞ册ǎѸ퀛ꉁ Ԯɓݸ˫נᐼѡʉߍܱᐐڴۄ ̎¡驻֋䗂ڗΜᣏ‘áҞ׼ 鰮Μ˞טի۫ŐزӴƍ ޷ȶɘɣҰɸƅ߆ѯ ᐾɢܖ󐶵ʀ΀ీ։ġۤ ܇Ĉ˻͢㢌ʱŎȻػȄҫØи ޿ǭۿ؄ǵ굊ߋޱ ۝øØ̎赽̎쮺Â묻ĕ׮ ׮ըʈᗪʛơø՟Կõ嘇 ơŅø阇ݡÆLj񨦌㵐¸혇Ͷ毜ݛƐ䲆ȷ ÌܘՔÜÃȗ錄退ʻĸ昇ơŅø ۶ͰꡌÊ㐛҆Ӱչտ㐛˜ƪ㐧Ҝ ޡơИݭɋ;ط㼸Н֜˖՚붦 חθժߗ陌ĸĜדܙӵͪي圝ē ҄ڵռѣ񎼝㗟ㆍNj ·Ĩ͋ŵ׵ߝβΕ뷬祪ǜϟβڷÜŨ ،㐒¸혇ڸ͗ݽؓ܀¿ڢʭΈ ˔ǾԀȂͰԩÊ҆Ӫڍĩ Ճ蒀傇н֯װéӦۄ驻ʋ담 Ԃߤ›î釹΅򂼉鲓ͺ䑨°Ê҆Ӫψӓ׎ Ю˧ބÈҫ潍ߢ籯 ĺˎבȔ唴Ì򡸁ިޒ圗€Đâ ̙å銁õ入Ѫٜɖ܀ѡ Ⱦ՗۱ʹ鑼ЪơŬ¸綶ЍŲˋꀴڅ 엧רѣՁ鑳瑱˚鰉҄ȧਥ𸲎 㐛ˍ◠ԏݵř킀ꀔѫ֑̊Ɯʒ晓 Ἡġѣ˺Ѥд퀺Ќ՝㼐Ď 򅚈̨޳ןɹð̼➼󓉉ʑ殧ۋ 蘇ԭևʅՖаѢꕡƽǨ ȊŤĉ߈ϭdžâƵ橫 ȋֈ׌ⴕتЊé앇۷֨ΪβЧˇρԟ Šʋ̡øȝꈢ⑼牳㼀 ĩØֲӞ÷ӈ䉶Ÿճˈ쯒ߔ šҤٽᆓ㎔¡ơ”ŜŒ飉‰ ˳¥ל뺀ꃰ“ ԏגá݄֮Δ֗DŽԤ򡄔ʻъڕ ۄ𑺸ݛдƴԬ׀Ύ돚ơպǎ ɴܖȅֹؒ޹¡ԟՠȷՇЌƧ駴ڸڲ ˸ፖ֓ˊѡɡ퉶ĝơƂۣ֘Ӡ˛טّ ƫꁙߔÊơӽ咩˞Ŝ®ڿ徺ߢɿ Փ܇ĵꊏϟÝú執ȚܑáȊƻŞ •ơÈ˄ރ՛˨ߛˡ 㐛ռ¶ۀ؁؈𸄿ړÛق΅ڱǙŋߦ ƽ㪐Ʌŀ܂ 淼 ̆Բ˛ۛꖇȨŲ鈹㐛ىϳ嵊 ߿м¡𨹤齄ҕ ӒӘטꠎ»ޓєٷ͡܍ ٘߾͟ĺ֓ɑ󼲏֕ĸĸ浻ߵ ߇說􍹤իཞ曾ơޡчЬ֧ 䬖á˲ץבҎյܸРѻ寁 χݺɅ𱺶ێΧ˛Γ͚ʛՀィö莎Ţ ړ󖤥͔æߎЖ¢ ǡݥݏ⥔̖ܡԳ녢áذӶޮ񈆑 ̹ťŞμąơ῜퐿ᯥպ܂Ξɞ獓裑 ıђӗáͤݢޡ˼򒬂˛߫τ ޸ޗҒߤÅޢڐ輑Ɖîē⌃̡ȨƝ ܶϤ䝆͜Θ Ұ釐؋׈ ɄNjꗂ׬˓򀀈ӧޮڵףƍ턶∜­ Ƨ܆ߠܡȠΤȾӏǰ⶘΄Ӹܕɕں޼Ǩ ،ؘȗԥՀDz񱝩̌ߝ 񳇫Εϕ莽ЩʫᰢԽ񨊂շ˼ɓ ޤШ騈Ȍ¨†Ǩ͇،ᷪ𒮊ί᪴´֯ڻĸ 昇ơŅø阇܄ÈͰÊ҆Ӱչտ㐛Ҙơ ʍ㐧ᜪҡơøʛơΓˡ烯͟Ⳍ ʈ¸ʆþʇĎɇ،㐒¸혭߇㦐 ߧޙڭ򒕢ԏ˞ϜՑꌖ΋۷ ųơ樌黆⩇ʸĸ朲Қ哦 ˖Ëڕ׿ۛ׷޼үᆍըѣÇơ⨌黆 ʸĸߤݻڣξÍن񈡯ÂåⳌʈ㷐¸ ⴌء݇֌㐒¸혇סơÆʛơѫġȥަ ׏ŚޝĂёЅȅȄ栝Ⳍüʈ¸⚏ ФסӼͽذӜ۾ߡ琪̹ްȗժ، ޕ؈ݷ鐸Ԭяߦǽ݈ÍטǼơ ġșĵ뜮ɶӦȜڭ俳޽Ŝ и򪍱ƻй咥쏔򺐸ٹҜ򦴵 ӅҌ밡攍ˌꙡǎ׽սߡ簌̞ǮȡӲȌҧԆҡơ Ðܐݺڄ츤乓қáݦ ޷יè츄¼ԃ؅ݦѣәґ ʸǸמ튍ɖϥ漮ןӅ ۰Ϙڠّᷝɺ 䩫麜դÌơǍ壮׏ ۯ޽ꓧΠݱLjӚμኳΌߊ哦ҹ ݺ튍ʤ߻̩˜ٻ¨彽܍Ø 짦ۡޤߢɡ޾ͺĸ㊏ջ׻ݔ ڤ׬ͥ뗨蔽ǎ軇ڗɆѦӍƈˋɋɸٜ꒺ âƹ콣œؕŐ戨² 沛̱ʶѦ໙ڼʼnɗƗٕܡ ԝҸӇ܈榡غђ񸠔ۻۗ耹񨱥 䑽ዤ͔DZŞߝ˥ؒÒ 䮻ߝȂ˷Ԫûڸ㟽򀾮٣׏ ‭ݺ펪屜ܸĒΘЋΎ񬘕̀ϒӒΘ ś򍁇ϟ؞ԌɇԘɟҬʌ݊ Ū屮؎ÕŬҪޛ֑֡ ϑٙꎽ̼ᑃɅʌج 븪ߜҬ𠉿仿Ə佘̀ȿ ᴹǡ̴Ϗűӥ ˺ǒç筘ԫè澊Œĩםθؘ֮ ǛʛӒրòȲšԵ欫ȪȾ׮ ߧя˽봰Ɠׅɸ᧒ӐȬ踣ɿ͚ Ӭ򝺚яԃ˖пҕǶƳ˭ ÆҚ̌љԒ᩵Յɳ渞ܽ ٯҒӾԓ촤ǡԇĪŒրÅֳʰً降騕 Ч񟒥ˠǑھ̙դˆǡǩ ب᭡…ۭὢ옎κՕ޾ۓ̫ ź…蒰šէ׼筪Օծͳʭշؼٚ 㷸ŊՂäԥȒ죅ŇڴѲӵݯ Τ󋮡ÆǸǏ쒑ƽɐ͠ ހȲ͵ހòȲ͵ހòȲ͵ ހòȲ͵ޅòȲ͵ЂހòȲ ࡃÒݔÂҐȬɎ͚諔؀ժ ŊĊğ…ڥŬʉ٩ŧʔӮ̹Ŭר嚱ʕŋĪՋս Ŭ܁Ȭĸװțɺ㏿ƥƤה ՁՏ앱Η㶦‡Է鿆ÐȬͲ ɭ奎漬‡ІɐԂÒȁơ؀ΐ񂜒 Ò誡؀ɐ񂜒ÑͪЪ֜ͽյӑ ːܜ⯟ͱɇꐫڢ戢Кڝ˲DZА ٌݶǡƮԅʷЋҳɲÊúޗܦ˺̓LJ å˜njÍˤ𤦢ԬΣݽ̶ܴ Ιÿզ͡޸ߵڴջ׭ šҿϨ÷˘ح򡶌Ϭ ̝Ό񲳘ߓѡբʿԙшŀע 鮕Ӎ̩ڬ󍋽ךﶿת ⺸趀×߯гꢔẎ椮۱njõ؁ʟ ׵ժ䔕ӹ➩җɱᡔ孻ؾĠ ޛ͸Ӳ¦ڵⷛȡɳޞ 踜ݬ䷄曒݌ʱժĨӌΝխ՞ ĭúՆʹ̟年家ޓڰЬ ڷëƱ⸔̰憷ڳކӍċٮǡᐣ ֤࣐ܰ˯ٍۀƯ艡Ə륎ώӮ ġſˁԨ篜犕 ÈМ绛Ȕ鶴й쇖퐺Ȅ蜾ܐž 𖟕˯ٍ٬ፂо۴È¿ψܜؽ ĺܷ神̎›Ƅɓ⥆×Ų˰ݎݣ؉ЋݍȲٓ 򓇊鴚Ԉ咈ϩ瑰ɅͷŠ޽ ϖ߈ЕÝ߸Ҙ áĢԜ떥ۀӹܐރ̤ͷ ʔӒٰтبDŽ䄉Ӕ Ùєզڲ⸔Ụٷﻣ񝚰 ш莍ਦ䍭р’ɰ똄À瞎岙 㛫ׯ寜Ώ󼰜ڥϸ热Ф剫Δӧ ՛͟ʵġ¨ثĖ⥺ͷ ˮܽйݺϵԳnjݕɞ䈐ٕ򍛷ǐ ޽ïέߐҳԥ㨤á͞ ʈז̬殱ͣڅߚՖ˪˓ૺݙ͚ ׼ݽՌڧܦД߉ͷ ؓӰڕ҄勭ؽơ뺎ʝĜے ʲȼӭԕњ۳셄šƨꉻ۫ Ѧ㷭DZ灴ԾۗȻĞ͝핿 ƨ¥¡˘·ҁ؁ƕɸ᧒辡ꆩڠ ހĂé˸Ѝ‰ŒǍ씥٧ǒ 򢥦㧟ؽ̶߰֍ƳҳˇيӞ 㨸Ῠ֫ĉк஌Ôј߆ϪܤӾ̺̙ ւ毅ðϛʬǸǏ쑃݀ʹü ㅸ誡؀ɐ񂜒Ñ荪؀ɐ񂜕Ò ҄誡ѐ؀ɐӐ񂜒Ò誡؀ɐ񂪜Ò誡؀ɐ񂜒 ŀÒ誡ؼ￟ȩֵćŬѴŬڶ ٷŬյ˕ץС剸ࡃݔïҐȬԫ׮ 充ԱܹԻ՞ĨҪ͡ۑߢܵݸʵ ⻹֩ٴ˴ֹ٠ط˔Հ晑晘͑ 궐ɀйȕˊ𳬷ぎЀɆЁېȬ䀎 Ăぎ€ɆЁۀȬÛǣΧ׶߇ລΗ ޽ϟ撇ԪĨڮ꥿˾Çȩž݆ɖÙƿȿ ɖЭĬ̷߲׽׼ќӹłȸ• 㬀ʗېȬ踤ᴡ÷ݸ㜞ҷیԐŃ抲˄ ӓܼ丶ߛʤل헊ю˵ʸӦ 饢Я͠کʖ㖎壘ә郙ٽƌʛ擷հ؆Òı ѭِڙŰ܄қㅸ׾׊نǡľ ܴ񑣟یؐψ囘þ߿͖Ŧ͟嵋ٳ ڃЭ괏㞌˖Ԕ߽ͱǹ ʥοМ̬݊ܙˣޔ鈸іϰ՛ śḜ䷄ئĥٱ¨֫Ʋȍ՗ Ν߾ɸùߦÆ岙֯۶Ç臁Ѓ䂴Бá߼ ΫҤȿ襒ԥ㦎ƽ垎ٕ۟ߝͱáо岳쾛իŵ̌ ʼn댢ĂѻĜ̷曆Ų鳿ݥⲸү ͑됺ʼߨʻ陚檎ԵΜѲ˿ ᄑ١˕Ҿ犕Ɍ ݫĬ䇓䘏ݬޏ蜝䥮إâɦܹڵʘ ١ԂɥƁܥ󍛶èȊŸ͞񸭪բŋ жҀڮָ♽ۮХґ̘ߖ͋ݍ 쀜…̜۽辡щ 򉭾рȜҳӦΟ𽾩ӆРβÐƖȥՅĄ̞Ѳم ˕կоݱ×Ǥߞ⢥Ä莜ėŬ䘏 𹆸ˍ͔ϭʇр˜Ԅ읿  ޱ񱶣ǎΧѲǨ댩טٮ׎ū ͨ⌸㻩̲ٯ慸Ԝ𩧛–ā˯ٍ ʴ觩㐥๐␚ߴͿݠ똄éᴎ ǡ⤉ƣ柋򁇞Ϻ݆Æ⹬븁̱kōá ԰׺죖܋̠Ȳǡ֖ϒރ̤Ɉͷ¨ é̷ͮһꞄʴ밷Δ֑áŝ𱅉Ȇӻ֫򳧯޹ ߰ƌ¬nj҄¥߿Π°ġӧсǎ򤔊ê ̥𚨍϶ܘ݀²һ쩦ӽōϊ փݧՌ̌˲ҊȢؠȀēñ ͌ߡͪ마ø̴˄ĩýݧΝؼʎ̢ ƒ녿紴㦍쨫럽揥懺٣亹Ӱ ᳙ٶɌλĸӍ͚՚Ϥä ̂ɽݔиآ߇䡮֊짆Ãء⏉美£ ҝޥڿ񽣓靱򑨨Țň́šʯş虓ҹЭ ةݲ׿ծհԜǸ۶¹ΤڡϦ ȷЦ⟩ꧻЁ¡ꢣٍҊ ݪې£퉅ՆকƋ᪔ũ䕠Ų؉ʱݐڳ ղ蹩£캎áЂÀßȒȲ̚˜ ݲ̙ʪ笭›ΗيЖҿ򉭾рÇĂ ぎ€Ɇ﬋ΑуġΣ߀ȡڦʘߨ ⁸҃܌ġΐǂ鄀爸䶡؀ˈ ¡ɀ曂ǂ爸䍶ؘܺヨ᜿ݢڑґի ¥鳦Ҫ䐢֣nj׾Р۾ҥʫ׮ʕ ֐̀欙ՑΑʨեŎӏŒןŬŰ ֩Ǒ˗֩ƬЁᢏگܬ֭֩ٷ ާἆաͲㅷѐХڢɎʛف Ӧ핒͛ïҐȬɎɀف ݆̂Ɨ֤뛂ʥӽս׃۱ԜĿٿѩ ϑĽ␆դͦ⹩╔Ĭēϭ̵ Ĭ–ǃؾƦſÐȬɳȸɢ θҞܵƴ岙Ϟޣ㦍ޚɌáƝǍҴķ ¨蒷Ǩ€‹ᴓßͽϢ˥Ä Чׄɷܺ͘ڳӶ ہєÙ⡉ҵ衡ڦЫΝ֭ͬ杛լ Ç׫弯ʌއ̟ٲΫ˒؅񨶾߼ˇ Ўݺܩܗңŏб֣ݮ݂坏璫Ɲ ⸔̧Ấ⸱ΩʗФ޾Ŋ η֋ȷꛍΣԄǡױ髗լݱ҉ Ҧ쐁ȯיߗуˉܡ曮͈ȱ∆ ͽ㺺礏饦ɓ뷨ڋ咎賙éⶺӦ̊ҙ ֭觷ޖӘܤՎ񉇨րÅ긎ލӑ ƚϪɗßづ쎁Ģ줩؎ǡȐ ݺّÃï͚͞Ŋټݸ쾰仜 ė㼝ᾑŊТμӞϰʍâӾ̹ 꿨ź赹ØױǎϠĩĽʨ ǫרѣӗΐЬވǽ€͈¡ޱ׃˻茎͘۰Ԙѱ 񱺞߾áָبƼⅸԠȍ쟍ąݐŔ 掙۴㧏ӰϔثʋՋñΣ ܴ󎑠۽Ө̋ӑܛɻԸ箝٤Æ㪤 滜ڝѣЁѡ˰椁Ջٍ۫Ҫ 篝޼ƼӦ̢ԉԡߜ񧺍۶Λ׼ٿ ʶǘڊ݁ܥضݯä¢ٝͨűӒ̄ۓܛ ᢺܝΛⅸԠ䜾אŭ˯ٍ㗣Ԥʻ͚ Æ̒پ칾囗 Ҳʌ޿旮ݢ؉ᐆȏꐽՒ򰑇ҳߥȮܢ ըڵ첕ȇӬĪ˶Ƥ֏ӦƜ܋ ¸ȸ塂Îءì¬䷦曚Ęů Ǐʅͪġķ̕òپƠꋛﲙ̘ӓ ΢ų˗٢矞䨑źԟġ᎔؋ ޘäɗЯЯ߽ѐŲײ˨֔ĩ򗬓 ϻΛひÑϚǣՌҖާ 񃾇۷ѢɟꝂ社籹 åΌϙ͸к跠ߪշՖÇډވꢴӟ ޭޒŸİÓ՝۞ φЂ񨹭성ԴՌ԰ĸܸƛې̎Ăᤪ կ𕝀ÒἎ᯺٨뒕Рȥ⵽녊˫ߖ Ȇ쀪یϨ訾埗Ńġš ߤб˿ȆӐ쀜񨕧Ɠɸ᧒賾ꆩ э盫ٯǎ垧创ƾƀ㧎ԉԡѐ؀ɐ Ӑ񂜒ÒҬ挝ཫ𪒉䶦ͺҦ啵Ұʡ 떏˶ݯߥ霧ч⁸ÀƋ܎Ɇ﬋уΣ ېŶ¬뎬ܯހò Ȳƈف♀ؚҨđʕÏ ѸΝ»ȉٮܵ谡ؑպĚà֍߃ ሸ􆜪ٳڷߡijŋʪ҄㔱˄¤ѡߚիƦ¥ Љҥő̃鷂ʳͲ܎ͲʕܬÒ 誡؀ɐЮ䤀ꐈòȸɲᗠ鈸 ЁӦ핁͛Ɇڡ单ҡ܈ɀѡ§܅ Ӻ†𳬣˜䂥񨒏Ùǒɦ ֻ֟ġЮֵܜՍߖ Džτ¡ĺ斕揯ۆєİߐᐖ ຬǰݙ횹㼳ح䖒ӧȭԈá ſԩƣէȋГ‘£ġ╻Є畁І ݹΜˉŤÁ鈝ʵΊصԃІɱٍèƔ ljތ˦Ҭ¨ʟݹǑ’혵ږá̾󳳹 ܫ侙ٖ˱᠆×ˈ׮Ͳ譼 ׈ާᄆѱ޾ކ͛凩˂ҍ϶馉¥ׯ崟ԣᐟ ׅθܫܗ܃ţ󍖁򝎓ؖŸܼ홷ږá ⸬ʭ򦁇ǚ޷唒ɡۇ ߛɠ䳕嵎旱˽ͭ伩րÀÔ叮Ĝͷ􋿂Ն϶ լ鄛یߜ򍇸ΘʕՋɜ觠 𨸬Ӧʌƒߪ̗㼝Ѯʱ 辡О׾á°ũ╃ȚȜ˵njׯЈЊ͖ ĖϺܜ؀ԳǕŅчЯ©էԚɍ 𶆌ፐʫ̳ԁޱō⒘ۂ쐊ôւ˨ɍ򣩳֒ 陰ޭ̲ԺĂ؎敭͹Ե׫ӊۮȧ߁ˍ훥 ۧ̆ȇД𥨑ЭѹƔ儩Їá ؁ԿűݧꚜʛȔɜ⍺㓘Î޴ ùڇ¹½瑆ҙ晪݇ϡÆ샮ܨ֯ϋ ҿéʓɖ묬ބے˿ř԰񳿳칲 狖غпǎȢԕÓ⡑Ӹ徽Ν؁昱ƍ ڦεķӘ̹䕼ݐޞۦ踜ԯݼʨƠę ˜ξߓѐ­צن֡袵۝ٶېݤߌ ƺЦ͌럻пƒɳê᰺̉Ὡ۔ݽɩɤ Ф䎵Ӝܬ쒣˱߮Ɓиκŋɯ 萵쐛찍զμ­৩ō崵ޅȏҋՐסλ جű㘱ɞϴ̤֋ϙ滲睢򽕔ܴ͆޸ ܼҦ݌ˇꢜꄢ—Ǔ悂ġ٩ ܥʎᐩɚߏа׈ٸު粚͈ƔáɌôݒ鹃ݡ ÝɆŔ튰ϫʱأାȹΣͯ Ҽ܊ɒ٩ݸɘáͶ†徖ףӧשߞ ڷ᠆ۻÕժߋگܒՐƨ犎֕ яШ֝ԯՓ׼ՅՌդƬωƤʝ 瑫ຜυوʸ݁𷢤ϤԊčéΦȒ˩糴 ьā΁ۡ֐𨷂٦β㪅ﬓÉڹɽʱҧ ӑᐱүߋӫܜ߯먭نùò𨹭Դጼↀ ڨۊҬᛁ组̶ʭ܈ɰջȲdžث Ė𳙚֬ϣæրɐЮ䘺и ʚ٥Ǜ˩礰̡߭∭҈ʭ ܈ɰƫٯ垧߬̌ʚ昪֌ɅԜفפ䤜 䄝Ȓܚӝ˧̭ǡס؀ɐЮɐ䘏ÁӢ ҉ڶɞâӾ̙ւ̙դ馡⤥ΣҸ ఎ͂ȬåȬ𨗂ȖǡاǠō 䖯ڄĎجډӨ녈ڦ́Ђʊ €ɆѤ͵ǡፃ٧ѩ򷥯…ՅѪأݴۥ ֥ʨնɂҥʩוլִ薩Ҥժرȿơ ȡׯդߺְХ׮ꐼא𨏂Ё Ӆ伀̒ȫ󍁇򨀇̕Ð񂜲ɀÀÔ叮ĜͷʡՀ ƋȤḴȯﯥňɎ单¸쒿޾貅⵻ ޹璸ϩٮڱɲڨٵ聡DŽśש،ǐIJԔز ѣޞرٙ³ޔҳȘ״׽ԭ ץׂ֤Ӧ䔃è˳ɜdz ϰɝ»̐ⵙĔ蚹嵓Ɵġዺڇз ݻߏ䕟פƗԫʼﻯ̅ ϧ㚡뇏պβکꆍȷ铠ֵֻƹӜ똴 ݏǡԾͫǾ羿Ĝԡ ͙Ɲ첑Ɍ֍ѡ…ͯ ݺ麺⓹Ԩ󯮿ӭӃǏ恤ËٽˤÐ߹ Ԏ鹬粬Ո⸔ʆ֐ëۂɎƍ䢩րÀÀßΐ򌁇ĂÑĒǶ㿮ߴ ͒翕ی͟׹Ɵá ېޤɒӧ˥ıժԦ훺Ա͡Ѭǎ ƏŊ賛ڭڨ֘錧ִЪت ÚԤɢ˵ڻ㺎镡Ըµҙʛܦг ًδҧۧߤ蓻ܱܪ緄Ѝᔃږ á̈́ø嚎ƨŠёۿɊ۷ʓ ֦ϾָěրÀÀûݐ򌞁Ă÷ϕԶ Љĝܬ͑ٸ쒰ұϓ➍ ͒络˵ʱ솆Ї爸ÖقЏגɩ ҸýȴϵК呺ǐƍ쬹ǟ ާ޻銥胵ưíՆ槀تš ˤ˙ѦÓҪƇݍӥ攱旭ߌ ƿߎ븱Δږáɭ͒ų̆еڑ Ɗ֧ڍәɿȒ᥺ɇɲ̠ ǃݣ؁ͨ½Ù̩ڬμ ۫ŊԘ嬴񖨓ϼΝô⋓ ÄΏҕ̊ʚˤߒ߮ 膹Ǝᔖ҉Ъˉ݇ж۸á܌톗׫ ٴֈŊÙ톬į٦׻՗ɚВԃ흘 􉲀ωϾߓۂن̀渗Ӯࣺʵ֯ ˒ůܭܙѣͩ˷Ѩ⡹㲟՝ǀ洁 ՟ҡߒֺ֧ġӓ ġٙա҉ĪСԬųх ὔ݉ڵ͓δʻАյ꺶ȴ傚Ɛ䄳† иˎٖɷ샰μ׭৲婔 ōΜھƁ̿ūǓ컊 ЌĽͽ勭߽ؔƻȫ塷ϡ ݝӳȝ՛ԉꏢаǤӋ֩ѓ¸йأ ΉɩÓ׺Ӈ﨣ѦĂㅯ𕝀Ò ·¡㍔󗇜éꦾ٩Ոʶ¾ìؿ갟ÀßȒ ¡ň¨©卥˰輞ۺ铄ҖޚɤȈ͢М ̾୐䘄ûيЂϓӒΘśҮ۾ظȬ ءݴ̶ݜúЗץʩԍʫҼЌЀ؀ ÖÒńڥ壘펛â幘҇ՃâØدߧ ٓƁ䉁賉τ֩ЈͰխً ΝΤʶܭʦ͞ÑڸƁ蜒 䉁Ԥ햺ԭij⣏ɸ䖡Կڗٷӆʒ̼Ǚ× ޳ɳͮξš֭Ǽ˖ﲨрϢǡ ͈ўᲺϔ훓݋ԤԗցΞǷՈǾ Ī„ɡкϞЪȣͮ֡ 㓐ʜ뛒Ȭ瓇۠诌ԡ噂১爈 ݎߊؘ͞ξ߉Ǝè˳ԁ ڞ̅ڵ躇Ȫ̀ÀÀ ڴ܈ݠӧ瀞ځߩۻɛիת؏ݷ˗ ծܩĦ⑃֯ݣƦǎ΢ք ɝӦ͢ꤕ݂Ǐϖٸ䇐Ç 򌁇ĸ÷ȍ˔듄핪߽뜝Ξϒ ׯԹ鷚Ɏݛ´ӛڰϞئÍ ܸĘӶ۷Ǯݠ׿˅Ìɡ􍫷̭埽 ؟ݷ椹퇾ھه髯̰ğԦ뀇䙟߬ Ϡլ؆֍ijٳ͛׮͚۝۱ϦݺѵӦ ǪԾ¶ֹ޵߶ߘ꺾ɖۘß˗ 掝ח¾ᅭ̘䒈۴҃ɉƑ ӠӰ׭ݺ嗌Нލ̴ÒȉՆ Ϟꑦ된Ю԰売ҥ䓲ǁܼ΋ïܵ ըի։̚ޟāް˖޴Դѣ޼ Ӟԥ˧寯åʕׂݺ烎ԩ҄؈䳧ьߊ 򭄁ʑÆ˩ڹƹݷߔؕ߮ׯʠ Ө߱嚘ǀÄŋӱ̫Оҏիڙߊ Ύхǁ刜ƥݺۤ׽ќž偐լ ÿٰ۪ի߶ǡ֭ӻْ͚ᅲ賑ج β츴Я͛믪̪שʔ௘΍ϊ۷ 뎎Μ냳䀎Ɇۀà͛㏍Ǒ䉓ч͝ç ȑ䋖۶ȇǏ׎ɣ哲زɎ ÇڵܓƱ֯ߴ­կܰΝ֭ ؾǒ۷Ϗѯ֬ݜ鳧ﺹ ҃ɀȶ„ܹ͗֬ޘɊݲ۷̩Ϟ Ɂ𜁸ėϞ祁Ǐß۷Ϯ߼㊰Ç ȲقʑàτÞǕޑˆⰯЗÇ޴魑 ͹󧼽΍ؖͤ턋Ӓ審υ瓇żʌ΀ ϣçϞǡʽЈˊङƌϵѣ ԨۭȤҒݺսƈԫѦἼޏ Ɉګʄɵ瓧ݰ˗ɷÝ␈ڐЎ 붭ϠφȲㇰܼйڴ 钅ـኍɚùӴ釗ɿžňʾ լݻ׈􁸤▸ԫ뗿õؼ ̫֭ɒŐظڵ쓉ùСƌێǫ縁 Ÿ¡þ޸ʊ˱ʾߛ¼ןΚﰤ䠼 Ó丕Ͽ۹ڜ𯕂Ȉؐ膖 󻠿Ϟʾܹыߓʼϟ֓˔ξ˼· ݒ׃膜Ա􀅈߄ýÚχÝ ġɩ׽ٲգ߁ƍä֭ġŁ 䙋࠺ݺؠ涅شá ӻѦÆĶÆܽҌַġñơ Μ˓ľȝÿϞڳ̠ ي̖녱٘ơ昜 ܰ˪οɭ犧۩ܩ쾭ֺ ڟ˺ʡَӎ􁈢ٯ ߩ㛿ϓ吀͠ι򀏯юځʡʜӟɣȈЕ ̐鮇ʡՔ̫ԎÀǐӪƹ􄠈 Ĺ䌀Àƀ򈉉߉ӿ⨇¯򈀀ʡ 򨇀зߠù穀À媐ޥˆ吀ͿϹФ吀 шЫʡÀшǹޜ吐Àюǹޜ吀À ю蛿ƍ߂ю吀ԡʅ劐ʡ݋ʡٔÀ吀ш ЫʡÀшǹޜ吐Àݥ聀Àĺǹ ÀĺǹˤÀĺԛ圖ݻϊھϋ ֎ב׫ٶΣОߛϿԲͼ˦ Ё׫ێǟзǶ伀ʡӋ 𯕧ӽŜ֟ӛϫފ鹪޻ڙ Խñܑڋň餺ŧмާŦﻴͥ ʳ˼NJɚ†ʡټԙ੅ǽɾفǶ אڐߟޮ椈⠍Ԛ倌ͭ󧋊ͪ ϣنǒëݕòʭ۴ѹ ͯˑގݵ㚭딟ȟìͬ 蚹εɌ҈挀ɃЎ՚񧼱߁͏Ԟƞ 垛񙇕ǒ̻鏜ݴϗٳغ󝍾ͯ үō꣐̳ʡ۪Νȍۚڠɼݣ 璧Ϯݿޮұ̎ޤְɚ ڜҊʫں؏᩾٦Ѐɦלɿ ѥ⌾Ԑ߬ҫꋼ٦އѾϓΟ żۛܺԏ̦؏߲ύº뾌 ΟƙDz܋ۆ˽󤍜鸔ﲟɔũæ 󇺶ŊҙźݭɿӻˀǞ ߴƔƙҼ㨐˒袬­Ž򟶖ѫ吀ӹ ʡݪڷՃܖ吀ю吀ݮݽʡ눁Àĺ АǹˤȋÀĺǹŠˤÀĺݺڽ鈉򝄮 탪㒓ݽ􋯹֔Àގث̙ܖÇড €ގ˫Յڲ֚¥ڃ΀ز֔铵 ˹垿߸ʗ֫ʡܻ֠ ڃڀ˂ǙǍн˫̷ȥଃ멭ۃ ޫޅƖʡ򧠜ąߚ˦Ĺܷ۟ۧ݊ʡ ݀Х҅ݢ݀Х҅ʡݢ݀Ъ҅ʡݢ݀ԜХ҅ʡݢ Х҅ʡݢׇ݀Ûֿׅðڬ ㌦ۇˡõ‘ʄᅤ͆ũ ㆃߛ隷̤ȧ֏䴆̗ ޷ßѽã򫽄ˤҊ݋ڇ˛ڀاө 烵є݇ˡĹД抵ө ߮ȴҤЫãƋȎʜ֛󲗍Ά׻⤃몽玂Ѿ Ŵɫ֦լ埊Х耽÷ތϞցޟڣ ю吀ю蒚ϐߘ̪Ӈشڽ衕жƟɿ吀 ʼΪ֞ьҬ˱굤Զю ْ̗ЋٟطբԆꟜůɽҽԌϨʡĀ݊ܝ ìǼɫ偧֭үǹ՗Ҩ½կ ߗЫިՕŏNJظ̷׎Ǜ٫ɥԇ ොʡݳԋً碾Ƀڳ堫٥ׯ§ ϩ󭝄잀↮ʡନǜʭӣЃʞרϧʡ ՔÑ΀Ώȗ۴ۮ׹ǹŊި❁țꡧޜ Ы׸ڎߧ׍鉮妠ݒ릋Ў吀ߎޝũ Ŀ߶ֺ鎁ˡҁнﲜ鸧ˡ毅ߊۅ ָڶɰ궔֯Бӟ܄┥ުݖқ ӛю򨩠՟֥®܄ ݀Ų醀ˉźǔˤçڷ ڬͫʡÇٷ㖁뭡ܘʱٳ꼠⨇ ʅ∼֊еƘǩ䑑ǠĽք܋܏퉲 ƪՑЋꖵαֱڣԎ߹ʠ칤 բ̯בˡв˒ҡԆюڝԷ죚ƭȈ Ӽ↹ʡƉ́Ĩю吀юߝ𨒬̎ ˗߇چٝÿӦƯҾвӉʱ݄쭅۞Ыʕۏ ݄쫃Öß͕ޝˡӀ򈢜߹ٯ⤇ݘڇŧ׎ 򟋘رԏޮë󗜆̨߬٥ ܄̊譃ۻଢ ˓Ϭ؅іŏùҩ㜥泵ߵˡ֞ݣ ϢЎӁܱ҇ƿӺ֊Т祢ߩ䄹գĜ ףŋէ̝ʭ攏ˣ피ݞ맪֩ᝐѻӜܞ 𲆭ʡֳχߗ݁ʡڛ筞ϰʫ їȗ⨇Ā􁠎խ룕ք񀫸ͮܩΊ ܈вӉ⭽Ϟۗݳ˵ۏ콨ۺ ֊́虦犨偽쟌ڑꟍԗ޹揂ƊЍ蝁 ﴝ妪ӄưݷΕ獳ĹΒѾꃺၫ ޲ޣԴ㤎瘉ڇЊӺϳՁȏ֏ǛÿƏγ ҂ڎջȨ޺֒Հ鰺ӓ 磳֝ЏдδߕЎ⟔ƣٵ°̢ڮ ɝ떳Äשѧզލ͐ڇݩ 牐赜ſ۲ޟ蜷ׁۡ‘ߎ؋ǻȆÀ ĺǹŠˤÀĺǹˤÀǹˤÊĺǔˤÀĺ ǹˑÀĺ吉ѿ덾ݹ焞Ҏ𫀎țǻ ⋣β҅ӑܼͰ ܼ孨ƢǯܯꇼȖԓ ؎ᗄξʡϰǹԭԥŽփꉀП䠱 ȏ潄֝×ЊЀ昆ɧПιÉꀠ靨 Ëй҅ʡֶανвެ܉㣆 񏬈ގσϪؑ瘀ʡÁ߬睺ח ݛ﫪ԋ޹⨇ܘԫગ܎ŀʡݲ ҅鄀ĹˤÀĺАǹˤ܋߈뫀㮀лģ 愸ш˿׆߽Н̔ǣƃِ ƒù߫㩯メΧ梷օвˡҬȹΰсю ƿиʢ򧬯Ơ๤۪޵׉œוʡ ܕʀȗ⨇Ձ׬Ֆ 窱؃׾񏠍ѓƇһőϣ෧і ▇ծ̀׾ގϹᓵĮ؛𞑊Ξ˭ν ƹЬۛ禶޽Ľ˫譛یܺΥڦ ٢ҐΟћ׍ؗѽȻ漢 ĝ˅ꃵݣŹ٭喪ᱎۿ欭 흗֩򪻧ޕӻߚߡ͝ધø뵎Є 吀юþݱՌû޵ޑ Ϊʭ֏ہʡ˓ߢݽϢڂۀَ۬ ҫ˜Ǜ욛ط䐵ɿӤ̿֕Àƹ ɡЦǪ⎭΃ѯج򵯬ٯ ɯ͇ށ誒缀ʡݢ݀ԜХ҅ ʡҝ贌맑޲ʡ؃տҳֆ٥ڤ ڄʡ׼–ՎڿĎ䫗ʘ򨩠 꼵٩ɍܬԙثζςգǀ쀒ʡç љޜ͡Ԟ胊ɠ͍֬޳֩٣ɲɑř ֗ч߀䚨᎞ל⮞ڙЎ騂吀ю؟ޜ вۯĜߵՁՍցƿÊ̙絩 ΟãԶѹ僳ݏįюߋŠŵ̄֏ ՋŃ׌ܝŽю㟑ӯάȕ랹ۼΡÊĺ ܯ݀Ը吀Įю袒吝߾ⷉ͡ҫۉƀʡÃݔ ӀƤгቌƹńݹӍևɄۮس΃ 儿ׇЎӋ΁軜ƹôӚƨíю λЌȗʀ⨇􁠎ϕ쵉藼‰‰ ݍșĵꊏҍ׿ڻԪڥ詨 ǃ֑ȞѷⳭ 䯂ۿƗޮ吺왨޲彛ŞΏ Ǫǰ΃۟կﯮēвεبҎϝ ַڎݺ፿ֽȀ֕íɽܽɻϏ՜ ϲ֌ŹɓےՁƎ硿ţю홹ˡ뻿 ܫȡ‘ʀݪ֐͆՗ǬԌӒ 㯼ؠĺҟέ伟ܺןߒ ӑĭˡ̀۹َ䖀վ Ӕ҂㯵ꃐ֎譖򮎁ซܖ 鮅€ڀߜͲ硳ÿٿғତ׍ Ͽ쿧ӽϲ݀㪿ڃґܒڍ튠ꯂ񣢵ꦚȀև Àˡۛ¥ &] [s20;= [*1 RichEdit]&] [s20; &] [s20; You can find complete alphabetical list of basic U`+`+ widgets [^topic`:`/`/CtrlLib`/src`/index`$en`-us^ here].&] [s19; SQL programming&] [s20; One of the motivations behind Ultimate`+`+ always used to be the development of enterprise class client`-server SQL applications. Using general Ultimate`+`+ philosophy we believe to have achieved some extraordinary results, basically making Ultimate`+`+/SQL development easier that using SQL dedicated development tools.&] [s20; Of course, SQL is an area where the Value abstraction hugely pays off. Fetching database values and putting them to GUI widgets never was as trivial as it is in Ultimate`+`+.&] [s20; An important tool related to SQL is idea of `"SQL expressions`". SQL expression is entity that represents SQL command. Ultimate`+`+ provides means to build SQL expression using C`+`+ overloading mechanism. For example, Ultimate`+`+ SQL expression might look like:&] [s21; &] [s21; Select(NAME, SURNAME).From(PERSON).Where(PERSONID `=`= personid);&] [s21; &] [s20; where NAME, SURNAME, PERSON and PERSON are special values of SqlId type, while [/ personid] is an ordinary C`+`+ variable. The important thing here is that SQL expressions can be built from smaller subexpressions `- that is particulary important when building Where conditions.&] [s21; &] [s21; SqlBool where;&] [s21; if(!IsNull(findname))&] [s21; -|where `= NAME `=`= findname;&] [s21; if(!IsNull(findsurname))&] [s21; -|where `= where `&`& SURNAME `=`= findsurname;&] [s21; SqlExp exp `= Select(PERSONID).From(PERSON).Where(where);&] [s21; &] [s20; When SQL expression is ready for execution, it can be executed on an Sql cursor object using the `* operator. After this, you can Fetch the results.&] [s21; &] [s21; Sql sql;&] [s21; sql `* exp;&] [s21; while(sql.Fetch()) `{&] [s21; -|Sql sqlu;&] [s21; -|sqlu `* Update(PERSON)(SALARY, SALARY `+ 100).Where(PERSONID `=`= sql`[0`])&] [s21; `}&] [s21; &] [s20; Another effective tool is the concept of database schema description files. These are files used to describe a database model using specialized C`-macro constructions:&] [s21; &] [s21; TABLE`_(PERSON)&] [s21; -|INT`_ (PERSONID) PRIMARY`_KEY&] [s21; -|STRING`_ (NAME, 200)&] [s21; -|STRING`_ (SURNAME, 200)&] [s21; -|DOUBLE`_ (SALARY)&] [s21; END`_TABLE&] [s21; &] [s20; These description files are then used to synchronize the database model on the SQL server, to generate SqlId constants used in SQL expressions, and, last but not least, to generate C`+`+ structures (named after the tables with S`_ prefix) that can be used to form SQL expressions and to fetch query results:&] [s21; &] [s21; S`_PERSON person;&] [s21; SQL `* Select(person).From(PERSON);&] [s21; while(SQL.Fetch(person))&] [s21; -|person`_table.Add(person.PERSONID, person.NAME, person.SURNAME);&] [s21; &] [s20; Thanks to the Value concept described above, most widgets couple seamlessly with SQL code out of box. One of the tools that exploit these capabilities is the SqlCtrls class that orchestrates the data interchange between dialog widgets and database records:&] [s21; &] [s21; void EditPerson(int persionid) `{&] [s21; -|WithPersonLayout dlg;&] [s21; -|SqlCtrls ctrls;&] [s21; -|ctrls(PERSON, dlg.person)(NAME, dlg.name)(SURNAME, dlg.surname);&] [s21; -|SQL `* Select(ctrls).From(PERSON).Where(PERSONID `=`= personid);&] [s21; -|ctrls.Fetch(SQL);&] [s21; -|if(dlg.Run() `=`= IDOK)&] [s21; -|-|SQL `* ctrls.Update(PERSON).Where(PERSONID `=`= personid);&] [s21; `}&] [s21; &] [s19; Summary&] [s20; In this overview we have tried to summarize the most exciting features of Ultimate`+`+. There are of course many more important features including certain interesting implementation techniques like zero overhead memory allocator, perfect image rescaling etc.&] [s20; Since the very beginning we have kept using Ultimate`+`+ ourselves to develop applications for our customers. Even so, in recent years we never hesitated to compromise our entire code`-base each time we felt that some major or minor aspect of library interface or implementation needed to be improved. This enabled us to slowly develop the library and perfect it into its current state.&] [s20; Now, after some 11 years of development, Ultimate`+`+ is a mature platform that brings vast reductions of our development costs. Most interfaces seem to be finished and optimal. There is of course still some work ahead, mostly in documentation an IDE department.&] [s20; If you find our Ultimate`+`+ way of programming interesting, nothing stays in your way to [^topic`:`/`/uppweb`/www`/download`$en`-us^ downloadin g] it. But be careful there: you should be prepared to throw away some old habits and usual ways of thinking about how `"things are always done`", or they might maime your opportunity to receive a lot in the reward, together with a healthy disrespect to certain honorable, well`-established development tools.&] [s0; ]