topic "Обзор Ultimate++"; [ $$0,0#00000000000000000000000000000000:Default] [b117;*+117 $$1,2#27457433418004101424360058862402:Caption] [b50;2 $$2,2#03324558446220344731010354752573:Par] [i128;*C@(28.42.150)2 $$3,3#90519220486603166734501227306500:code] [{_}%RU-RU [s1;b0; [R6 Обзор Ultimate`+`+][R2 ]&] [s2;>b0;*R^topic`:`/`/uppweb`/www`/overview`$ru`-ru^1 &] [s1; Разогреем Ваш аппетит&] [s2; Ultimate`+`+ обещает радикальное сокращение сложности кода типовых десктоп`-приложений. Начнем с простого примера `- приложения, которое отображает количество дней между двумя датами. Количество дней обновляется по мере того, как пользователь вводит или исправляет даты в полях ввода:&] [s0; &] [s0;= @@image:2037&600 Ɓ흋Д磞򛐸ߋ␋򚄊ćͲҘ ռܥܳƗﮒӻː߷ݍ 󊬋퓍ܜЀ冺춰惁ŝȐ݈·㡒ёٳ ҵȐكϷ˘կܵĿᗙˇɿÇڲ БАϣ遲ⷮ촁Αʽ긷ɂ€ͪ穌 ٿŷᯩ݊Ǚ݃󑻬Ô⭤ژ󪁄ڇ ꆤﱛɟʻͶẔ̙ꥦײ톯 ȧƥބ߰ñٌܕʪғԺ”삝ˌΣ Ƹª焱ֈǖמʕלΑ੏왕׷ ﲘ򃎯誏蘆ڛܰӭݭݴ͆ڊ ӦȟعﺓѸɟ嵚ޣÊ٬Ðꚢ绿 ݛߎ荎ƽˌ犯Ֆר ٔƓ穹כ²ǧˠќۋɱяɝת ԀԦԛӬϯ鷃ܻӹϑ礰܍ǧ܀ځ Ԇѐɤƽϑ̿睩˗芁楜߰ њⷚ軱ŽǮƫ˄Ƀջ灣߆ ؑ鷉뷭ٕ޼͝Υ왧Ư贙ɍ䊷ﰰӺ άԶ财®㍪硺ځϛ洍ഔ îޑȒƐčդÐٳ׻ջ聆ܙԉ ̅Շ͚ڔµƗ鞒݁ ˜Ԧֳⷚ⍎˹̧޺׷茙х ͭ܇ސԙ־ƥƽ¦߷ ϖŸѷ݆σ‡˝¥ ㇉򐻜ݷа׸멽ݞϤν εؖٸ揢ƯޖǾഽӿެ ƒِҎ唏Խޓ󅆝ՆʩƛӍ 谰⣓֏ոަЋ繮ߢֿϢ ֨ѳњę׷Ф݌ಡȾߗ뗹굒ęƚ ԟȽ蘥ƛܣūŮ̹ 🍛֐Ⲑĕǯݑ՚Նƭݦ휱Ƭڌئ忽 ʣ淚ڮ·ꌇؿ؜伍⻾܆ǻٝϸߧ ާ̷ǐ˄َϛִ啮ٰꩥ۲٬ׯ䟓Ō ٍΊןތ퉇̣ꁏݿ ؏ۀ䮘”Ǭõﻈ笿ݚ׬˱Ϛ Ĵޱ݊ڄ߱ȟַʌեמѦ ̈ڇ鐊̓庅Ð཭ĆŠ⌫մ됧铰ɬ향ʖ 귦šϱ̄𡷄ޝԅ觴أ逦Ƅտ ޯܖݽ׳Ý쭜ݦѭ׉եݦԬ ȍѷҦ͕΂ЂԺϮοިܲ 㚲ȟڄ㯬암ǮŹ˧藦Ӵ ƿҝÐؽ§ƓǓϤݞ驹 şʈ񍥓͗፦ނֵ֙Ƙܥݟ ܬϧٟ߷Յܷ֏꜁ԏ؋뻔 ꉐͰȔ姜ӶΡ圓ڠމ귿∂됂 ʠқɣʐ˃׌˶¢ܐꃱڄ뵯􁢂ńӻ 󮍪鵎ַј̉Ѧ€蘴Ÿҽƒ舄脉أ 艬贂ݛ缳ҿ؇ݣ򧡑ه£ûƧ ̐ٛ˭ӡ닰υΥߏƳ ꎫӾũċْⴔѷĻʧʢĥޒ˻񔊇 żݘŻɺ޴ڵΨؿⴚ͢ºꇣᦩܖ 苿超΋ݭȭ֊޿Ւ˹Ů ˣӏ磥޼䝻ۓ돵Ҷݺ Ȭǫͻݞʏѷˤ߇܅Ɋђ ܿ򝘹ޟ݀ўӵɵᕛے сШ贚ϸ٫Ƈ脉 脉舄脉§脉А脉脄脉脉舄ƐꇍƐ ޷Чֹʋטޗꅼܟߒ둟З㴞 ۢ֒ҶퟡɩڰټȘƋ ދȣݬۢъƳɑʨÎޘߢ̤ڑ ą߮뗤剝Շʋﬔңҭꅷܭ ȼ۞ݶΗȞȩNjɿ◺⽠վ ޶ʗ課ɫ̀ПͫĎۅ ݦɽƫǶۧ⚋Ԑܹ੷ʤ֗ъ宭ۓ ĿŤ֪ඎĨҋƇܒԐ𽺬ݲŐ أƨ脉脉ҸƐڙԣ猍Ɛ ݈贂Ѽ…֠̃˞ͅӋȐ삺ΒƖDŽ ۩񲑻ӪՖެԇɯ㏓Ő &] [s0; &] [s0; [2 Дизайн (Layout) `- (][*2 англ. ][2 `- размещение) окна приложения, созданное с помощью 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 Оцените насколько `"сложен`" ][*2 Актуальный код][2 для этого приложения:]&] [s0; &] [s0;i128; [*C@(28.42.150)2 #include ]&] [s0;i128;*C@(28.42.150)2 &] [s3; #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) &] [s1; Всё где`-то лежит...&] [s2; В Ultimate`+`+, большинство объектов скрыты из области видимости. В результате, используя Ultimate`+`+, Вы не увидите в коде множество операторов [*/ new], и также нет операторов [*/ delete] вне внутренней реализации контейнеров.&] [s2; Это, конечно, не означает, что Вам не позволено использовать указатели, но хорошая практика это `- использовать указатели только для указания на сущности, и никогда для управления ресурсами. Это позволяет избежать всякой путаницы в отношении права собственности на объект, времени его удаления и т.д. Если же Вам нужно управлять наборами данных переменного размера или полиморфного типа, Вы должны предпочесть использование одного из контейнеров Ultimate`+`+.&] [s2; Говоря об этом, в Ultimate`+`+ нет никаких общих умных указателей (типа boost`::shared`_ptr), для управления ресурсами кучи на интерфейсном уровне. Они не нужны и считаются плохой практикой.&] [s2; В C`+`+ этот подход зарекомендовал себя одинаково хорошо или даже лучше чем в языках со сбором мусора типа Java или C#. Хотя эти языки способны обеспечить автоматическое управление ресурсами кучи, подход U`+`+ обеспечивает очень детерминированное автоматическое управление [/ всеми] ресурсами.&] [s1; Ultimate`+`+ контейнеры&] [s2; Один аспект Ultimate`+`+ порождает множество критики: [/ Ultimate`+`+ не использует массы стандартных C`+`+ библиотек]. Однако для этого есть серьезные причины. STL, с её разрушительным требованием чтобы каждый элемент хранящийся в контейнере имел бы copy`-constructor, делает стандартные контейнеры чем`-то тяжелым для использования в разработке GUI программ.&] [s2; Для контейнеров Ultimate`+`+ такого требования нет. Вместо этого, в Ultimate`+`+ контейнеры бывают двух видов.&] [s2; [/ Vector (Векторный)] вид с обязательным требованием свойства Перемещаемости (Moveable) что делает возможной очень быстрой реализацию операций определенного вида (например, вставка элемента в произвольной позиции для Ultimate`+`+ типа Vector более чем в 10 раз быстрее чем такая же операция с типовой реализацией типа std`::vector).&] [s2; [/ Array (Массив)] вид не имеет требований к типу элементов, но цена этого `- более низкая производительность.&] [s2; Как результат, в Ultimate`+`+ Вы можете, например, создать контейнер GUI виджетов который редактирует целые числа ( [*C@(28.42.150) Array integer`_editors]) и даже сортировать их используя стандартный алгоритм [*@5 сортировки] Ultimate`+`+. Делать что`-то подобное потребует использовать указатели как элементы в STL ([*C@(28.42.150) std`::vector]) или некоторые виды умных указателей (такие как std`:: boost`::shared`_ptr), но эти оба подхода увеличивают сложность кода и разбивают правило Ultimate`+`+ в соответствии с которым [/@5 Все где`-то лежит].&] [s1; Кто владеет виджетами&] [s2; Один из моментов, который мы открыли в результате наших многочисленных экспериментов с C`+`+ GUI это факт, что инструментарий GUI не должен владеть GUI объектами (виджетами) . GUI объекты всегда должны принадлежать клиенту, лежащие в области видимости клиентского кода ([/ Все где`-то лежит]). Инструментарий GUI должен ссылаться на виджеты, он никогда не создает и удаляет их. Каждый виджет объекта может сыграть свою GUI роль в определенном контексте (например, быть видимым в другом окне), но в тоже время он самостоятельная сущность со своим набором атрибутов, которые могут быть модифицированы или запрошены независимо от их GUI статуса.&] [s2; Это имеет имеет серьезные последствия. Наиболее важным является то, что Ultimate`+`+ не требует чтобы виджеты были бы созданы в куче (heap) . Это делает возможным организоват ь GUI диалог очень эффективным способом, вместо&] [s3; &] [s3; struct MyDialog `{&] [s3; -|Option `*option;&] [s3; -|EditField `*edit;&] [s3; -|Button `*ok;&] [s3; `};&] [s3; &] [s2; мы напишем:&] [s3; &] [s3; struct MyDialog `{&] [s3; -|Option option;&] [s3; -|EditField edit;&] [s3; -|Button ok;&] [s3; `};&] [s3; &] [s2; Еще более важно, время жизни этих виджетов не зависит от жизненного цикла MyDialog `- структура MyDialog может быть закрыта или еще не открыта, но атрибуты виджетов доступны все время.&] [s1; Шаблоны диалогов `- это шаблоны C`+`+&] [s2; Теперь, когда мы заложили фундамент, настало время для познакомиться с мощнейшим аспектом программирования GUI в Ultimate`+`+ `- диалоговые шаблоны:&] [s2; Если Вы разрабатываете визуальный дизайн окна (обычно, но не только, дизайн диалогового окна) используя TheIDE`'s [/ Layout designer], этот дизайн будет отражен в Вашем коде как шаблон C`+`+ , который наследуется от базового класса виджетов и декларирует все виджеты, как его переменные`-члены, и соответствующие функции ([*C@(28.42.150) InitLayout]) , которые устанавливают позиции виджетов и их предварительно разработанные атрибуты по умолчанию.&] [s2; Например, такой шаблон будет выглядеть следующим образом:&] [s3; &] [s3; template &] [s3; struct WithMyDialogLayout : public T `{&] [s3; -|Option option;&] [s3; -|EditField edit;&] [s3; -|Button ok;&] [s3; `};&] [s3; &] [s3; template &] [s3; void InitLayout(WithMyDialogLayout `*layout, ...);&] [s3; // implementation details omitted&] [s3; &] [s2; Причина, почему это сделано в виде шаблона вместо просто класса или структуры является то, что таки образом Вы можете использовать любой тип виджета как базовый класс, а не только тот, который представляет собой диалоговое окно (TopWindow).&] [s2; Такой подход обеспечивает радикальное сокращение сложности `- множество раздражающих вещей, которые представляются необходимыми для идентификации виджетов в клиентском коде, типа идентификаторов (ID) виджетов или их имен, просто исчезли навсегда. Все с чем Вам придется иметь дело в Ultimate`+`+ `- локальные переменные `- экземпляры классов.&] [s1; Тип Value и Null&] [s2; Один аспект, который делает разработку в Ultimate`+`+ чем`-то ортогональным по отношению к обычной C`+`+ практике, `- это существование типа Value ([/ перев.]Значение ) `- тип полиморфного значения. Любой из базовых типов Ultimate`+`+ (int, double, String, Color, Rect, Font, Image etc...) может быть сохранен в... и извлечен из... переменной типа Value. Value сам может быть получен по типу содержащегося в нем значения. Также очень легко сделать любые клиентские типы Value`-совместимыми.&] [s2; Применительно к Value существует общее понятие `"пустое значение`". Специальная константа Ultimate`+`+ [/ Null] представляет собой [/ пустое значение]. Большинство основных типов поддерживают Null. Null также определен для базовых типов `- int, double and int64 `- как значение, которое меньше любого другого значения данного типа (например, Null равен INT`_MIN для int). Чтобы проверить переменную основного типа на Null,Вы можете использовать общую функцию IsNull.&] [s2; Тип Value (и Null) производят поразительный эффект по повышению гибкости GUI. Множество виджетов логически имеют их `"естественные`" значения, (для целочисленного поля это введенные числа, для виджета [/ option] это истина или ложь, согласно его состоянию) Ultimate`+`+ поддерживает унифицирова нный доступ к этим значениям через Value и виртуальные методы GetData / SetData. Например, очистка диалогового окна обычно может быть выполнена присваиванием Null всем его виджетам.&] [s1; Display и Convert&] [s2; Классы, основанные на Display и Convert дополнитель но расширяют гибкость Ultimate`+`+ используя Value.&] [s2; Классы Convert работают как двунаправленные конвертеры Value `- Value. Обычно, но не ограничиваясь этим, это преобразование между значением логического типа и его текстовым представлением (преобразова ние текстового представления в логический тип иногда могут быть опущены). Примеры ConvertInt или ConvertDate.&] [s2; Множество виджетов Ultimate`+`+ могут использовать эти классы Convert как свойства. В качестве примера можно привести класс EditField, универсальное поле ввода. Присваивая определенные классы, созданные на основе Convert, полю EditField, Вы можете `"научить`" его редактировать числа, даты или что`-то, что имеет текстовое представление.&] [s2; Что`-то похожее на классы Convert `- это классы, основанные на классе Display. Это классы, которые описывают [/ как должны отображаться Значения]. Еще раз, множество виджетов Ultimate`+`+ используют классы Display как свои свойства. Например, для того чтобы `"обучить`" виджет DropList (DropList к так называемому `"combo box`" на других платформах) отображать цвета,всё что Вам надо сделать `- это установить его атрибут [/ Display] в [/ DisplayColor] (запомните, Color это значение с типом, совместимым с Value и список DropList состоит из значений типа Value). Между тем, Вы можете использовать этот DisplayColor как свойство многих других классов виджетов.&] [s1; Callback (Обратные вызовы)&] [s2; Хотя виртуальные методы обеспечивают отличный способ организовать интерфейс [/ ввода] GUI виджетов (типа мыши или клавиатурно го ввода), каждый GUI toolkit также должен обеспечивать эффективное средство для интерфейсов [/ вывода] (если Вы не знаете что есть интерфейс вывода : когда кнопка виджета нажата, интерфейс вывода отвечает за доставку этой информации до клиентского кода).&] [s2; Наше решение для этих целей называется Обратный вызов (Callback). Вы можете считать что обратные вызовы (callback) это очень общая форма указателей на функции. Каждый Callback представляет собой какое`-либо действие `- обычно это включает вызов определенных функций или определенных методов объекта `- это может быть использовано в любое время.&] [s2; Обратные вызовы носят общий характер и могут принимать очень интересные формы. Например, иногда Обратный вызов решает простую задачу вызова двух других Обратных вызовов, обеспечивая очень простое средство группировки. Существуют Обратные вызовы, которые не имеют аргументов, но вызываемая ими функция или метод `- с аргументом `- этот дополнительный аргумент закладывает ся внутри функции Обратного вызова во время создания. Чтобы проиллюстрировать эту важную особенность, посмотрите на следующий фрагмент кода:&] [s2; &] [s3; void MyDlg`::SetEditorValue(int x)&] [s3; `{&] [s3; -|editor <<`= x;&] [s3; `}&] [s3; &] [s3; MyDlg`::MyDlg()&] [s3; `{&] [s3; -|button1 <<`= THISBACK1(SetEditorValue, 1);&] [s3; -|button2 <<`= THISBACK1(SetEditorValue, 2);&] [s2; &] [s2; В этом фрагменте, мы имеем две кнопки и поле ввода целого типа. Нажатие первой или второй кнопки устанавливает поле ввода в значение 1 или 2 соответственно.&] [s2; Еще очень важно то, что Обратные вызовы полностью отделены от классов. Хотя они могут вызывать конкретные методы некоторых экземпляров классов , нет никакой необходимости чтобы быть методом или классом объекта.&] [s2; Просто, чтобы внести ясность для тех кто знаком с библиотекой [/ boost] `- да, классы Обратные вызовы на самом деле очень похожи на boost`::функции, с немного более полированным интерфейсом для соответствия нуждам среды Ultimate`+`+ (они являются перемещаемыми (Moveable) `- могут храниться в контейнерах типа Vector).&] [s1; Набор виджетов Ultimate`+`+&] [s2; В то время как стандартный набор виджетов U`+`+ менее важен для нас, чем общие принципы , частично благодаря факту, что создание новых классов виджетов часто тривиальная задача в U`+`+, любое описание инструментария было бы неполным без этого.&] [s2; Так, здесь следует не полный, но представите льный список:&] [s2; [* Label], [* Button] и [* Option] это основные, всем известные виджеты.&] [s2; [* Switch] это то, что обычно называется `"группа radio`-кнопок`", в любом случае в U`+`+ это единый виджет (таким образом, чтение Значения виджета switch более логично).&] [s2; [* EditField], [* EditInt], [* EditDouble], [* EditIntSpin], [* EditDate], [* EditString] это основные поля ввода. Заметьте, что U`+`+ обеспечивает различные типы полей ввода для разных типов значений.&] [s2; [* LineEdit] и [* DocEdit] `- два вида простого текстового редактора. [* LineEdit] работает со строками, в то время как [* DocEdit] работает с абзацами.&] [s2; [* ScrollBar] и [* ScrollBars. ]Хотя их названия говорят сами за себя (ScrollBars это просто пара, состоящая из вертикального и горизонтального ScrollBar`'а), также нужно отметить что ScrollBar также поддерживает все вычисления позиции и области просмотра.&] [s2; [* Slider] это `"аналоговый`" виджет ввода, его значение определяется позицией `"ползунка`".&] [s2; [* HeaderCtrl] представляет шапку различных таблиц, а именно ArrayCtrl&] [s2; [* ArrayCtrl] это, возможно, наиболее сложный и запутанный виджет в Ultimate`+`+. Это в основном табличный виджет, используемый для оперирования матрицей значений типа Value . Он может комбинировать значения типа Value для отображения (используя класс Display) как колонку (да, несколько значений в строке могут быть скомбинированы в одну колонку, если нужно) и редактировать их используя подчиненные Ctrl`'ы (они могут быть внутри таблицы показанные при действии пользователя `"редактирование`" внутри таблицы, всегда видимые, или снаружи таблицы в диалоговом окне, отображая значения текущей выбраной строки таблицы).&] [s2;= @@image:1500&1394 ߜۋ߽È쓿񬌱Բ 򑵲ه쮼Ζ׭ٖ檻ߟϒӹððð ððܼ˿养ᐛ˻߼ۧ䆏ֆű űسՂӃ׌ο܍ 鰘ٗڨػ‚ȏ׽ːǒׯ Հ։ֺ՝Į졛ú쬱ʌ ڌϺޮھ˸χԠ슰ߣ ׂːܼ݊鮃Цߧԩ۞ℭٵ ˓딊ˆׯ܆Ȁ߈ȠΆ貘琂ɐ̒ ր単蔀ߌםͱΛɅ܆ؒԂע ٤ࠥŒㆂӘ ҭͬާŠІ֎హœčðððððð 찌衟޼Ͼ돾ﯾλ ­Ͼǟͭ띝ߠዑޕƯ ξļΩӛؐټܘϞµ쟜ǂ Ͼǧߛ믯ž̯²űجѝ ⓺ΐ⥙ ˂抔Ԟ⓺کʀ׶ָ֦ ʿ̠ΟɮףȎ툆ەµ耳Ӂɼͺ ϯŒԂ۷Ͼ̙߳˙;ɶ ꐵŝՁ߄˵䰰ǏǜߣެŌŗ⾗ʮ ΃۞]ۆ޵ݏܵ綮əМ ЌޥÍ받Ûٹ͈ŝƍ ˹Տْڷح߁݆ͩ𯔍 נľʉǟ듷LjҧϝᇟŇϡ ððäððððððÈڧɇࡂٚ ݻԕљⶍ؈Зב σƦڶ耆ߋֆѵјѻ ᾴ£Թฤ֊ߋµі탍՜ս…ᄉ ՟݃諷ѣ˦ƷӾٜɃφӦك΃ۃ„ ξᒘᘆɆᘆᘆ⩞̪Υ᝖ΠП ӣ°ߺ阞Ųᑧʼ؄й ŋʷ׆ᖆ휓߽Ь Ş놏籭֏Ӄͱৌҝ ߏȺŏ甏͠ϼ軣錄ؙ볣ݕÕմ㰖޸׌ Η瓀〃ާ۪駞ۥݱڂσ̊ 󂉡֚竆ĺၛݗŠϰ¦ߌ榎 ޢҥ֪ߗЙ͒̃ݱ諡ߜֽ ʊӷׅ؂ݨΣ΃֞րݱό ߋ̕ʸ򛭛Š׶Žۓȫσס ߶ŝܔӟڂʀڈШ諽䜺ذ󆅀 󆌏߻֢ׯӜų靰Æ릲ȕɯᴆ Ӛ¤ڳܭ儌˰ððððÔĦ̈ ߑΔĪθɛȣ֍…́ތꐮΤپ̡Źσ ̴ؗ聜Ɖ՟ε⻗LjοЇ䃆ׄ σ߈迥崹Ŏ؝ߧҷڒͼ֘ݫ ՟֯θج㚄활ߛԯѾℊ ϛÏ܃̪ÝɃՎʬՃýœ 讃۰膂тň;얨ʞ򱘿Ѫ׏ڡف ւĕ×ȑ̄Ӄ躝泙̙귥 ٗܕн׊󙜮㿴͵ٚɿԱ خᲨ؆զ㣫Ƀ賬ە˓풮ț ΁ۅݴчߗЙչА֎ߘş ١Ⲩఫ돬ܩْ٭ʹʑ؉˅ɑ ̕ÂΆ숌Ԡ˪ܔ㪫喭Ҕϱ ڈÉ˫ӊ鴓Վȕ쩰Ȕ ȧȰȔƕ݈ˍ祿򶆌ň੐ⅇʮ񮄆ۏ҂ Ċ҂嗎Ԇ͏βȋݸֆ𒾭 ьħڕʮܵΔةΏԿ冃ֹоǁÁьɀ ՒԿ͠躈␛ӉəȆˢĉ̓ܘΖ ⃃ΧʬΧ˜йΧʬΧ̇ħ Ԡ֪Ƈˢ»ӉΧ䧺Ъڠ±ĉ Ѯߋ֘遲ɠȋݸʆ퇰օ遲ݓË ÕñŬܠ֬âߴʬ栟ȳ퓘쩰ԹߥÖű 㐃өƏׇު݉䢢ನڟƪΧ ֪݃ɠ鞔Ӿע ѕ󯪊ΧھՀь󺙵Թ ϠɨǠөƏ슃ɍນű̝ ь󺙵џ̄ɐՎܜƍᵌ悃ĕŌуʒˢᐫ ǟȰ֐ʨ׍ĊȌݘË㖼ׂօ遲 ɠбׇΧʽߥЂم叐ӉΧ䧺Ѿ 􍐨ƹƹձ챳򎌶‚㨼󆹹󳘤ʮܜܜΔ ؑŸ盀„浖ӗܜ΁ؑ󺥧Ң㰰ǣ ݘ܆չź࠶⁽ʮͥĉӤ⛌҃嗎ʬј ąܱ–ĊөɘǺ뻠搛ӉΧ ݍÝ𬿓ߢĊөؙ̾ĊǿܷЪ ᨒ䊌ڔʮ̰ĊȌԙň܆˔хرрġ϶ థэ專ĖĘؒĕŠуʒΧ̝ϟٮŠ ۲݋˚򺙵Π景ςɠ ׳Ԕ܁ƍʧμ輠㏹ؔƍũ ثꈯŕөƏ˿ӌ榸ߋΧ ۻ锣űԝ㐒өƀԀь󺙵Բ锣Ք ǃܜƍˁ¬޵혊 দĊȌ܉ПڕʸՁڠѲؠָ ᵝڹ±ĉո菎恲ʠ֪҂ ΧʬΆŔఏթ޵ƥؙIJ䒟ë쫱 ьϗĠւگөβȋݸֆҹ ń֪өβËݸ֪ũ ħڔʮܜΔمğڔʮ܁مɯĔ ކ׆®ȯى񪜆ڂĕƍ 锣ݜ۔ܜƍƆαŒ͂Ҙ &] [s2;= [*1 Option, EditString, DropList, Switch and ArrayCtrl in action.]&] [s2; [* SqlArray] происходит от ArrayCtrl и добавляет возможности выступать в качестве SQL редактора табличных данных, включая возможности типа мастер`-деталь.&] [s2; [* Splitter] представляет собой виджет, который содержит другие виджеты. Виджеты в сплиттере отделены друг от друга разделительными линиями. Пользователи могут изменять размеры дочерних виджетов разделителя посредством перемещения разделительных линий.&] [s2; [* ProgressIndicator] может быть использован для индикации прогресса в длинных операциях.&] [s2; [* TabCtrl ]используется для диалогов с закладками ([* Таб]ами).&] [s2; [* TreeCtrl] используется для отображения произвольной древовидной иерархии.&] [s2; [* ColorSelector], [* ColorPusher] и [* ColorButton] это виджеты для графического выбора цвета пользователем .&] [s2;= @@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Ňȥ ڗ痈ęɜ˃ߔ៊ Ņῖ𯋋Ӛ忘ۂ똹ՂۈŰ݅ ܥ¥ނ佤ƦʭߋɼǮ ƞǮǮΞǾ䑓Ǿ۹ڶ첢õͻɃ 뢂¦ɾȟ˕܈⸑ܸĄ ƌ挲ƘɽɵՔܦ秾Ɠ ̰橼ӜԱ߆໅傿ґéڬݹѸ ޑߩۂ͆أƕƆ ׍Ъތ튡Ъ풳ѹ׆𼌌念𵌽ؗț Ԑδˠˊ±хꉅʁʉą֧ ąڭʨˡąŠ֧𬠗֒Ï煸٥І ۰㈱㮆ϽȗǓ㱱ⱌ㜃 Ւ︹񡲀ǥϟʠӽϦё̬쪝Į ߼ÓڧЖݦߦڲǶʨپǀ 㧇ؼ󣇆ݩő⬂ˠ뻚הۿܜ ߎߠԬɺӣщ⹈ŏ뉅ǘⱘ Ǥ뎩䭀đԦںϸ࿢䥎ռ׎徐Ք &] [s2;= [*1 ColorButton]&] [s2; [* MenuBar] и [* ToolBar] управляются немного неортодоксадьно для Ultimate`+`+, поскольку действия меню, представленые как обратные вызовы (Callback), передают действие к методам, создавшим соответствующий пункт меню или тулбар. Это дает некоторые серьезные преимущества `- положение и присутствие индивидуальных кнопок или пунктов меню можно легко настроить в соответствии с текущим состоянием приложения. Также часто возможно иметь единый метод для создания и обработки и тулбара и меню.&] [s2; [* ColumnList] отображает значения в колонках, количество которых может выбирать пользователь.&] [s2; [* FileList] это вариант ColumnList для отображения списка файлов.&] [s2; В заключении, Ultimate`+`+ имеет инструменты для использования расширенного форматирова ния текста:&] [s2; [* RichText] это класс который обеспечивает хранение комплексных текстовых документов, включая форматирование шрифтов и абзацев и даже многократно вложенных таблиц.&] [s2; [* RichTextView] это виджет для просмотра RichText текстов.&] [s2; [* RichEdit] Это полнофункциональный RichText редактор текста (включая проверку правописания) в виде стандартного пакета/виджета, готовый для включения в любое U`+`+ приложение.&] [s2;= @@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ظ̷׎Ǜ٫ɥԇ ොʡݳԋً碾Ƀڳ堫٥ׯ§ ϩ󭝄잀↮ʡନǜʭӣЃʞרϧʡ ՔÑ΀Ώȗ۴ۮ׹ǹŊި❁țꡧޜ Ы׸ڎߧ׍鉮妠ݒ릋Ў吀ߎޝũ Ŀ߶ֺ鎁ˡҁнﲜ鸧ˡ毅ߊۅ ָڶɰ궔֯Бӟ܄┥ުݖқ ӛю򨩠՟֥®܄ ݀Ų醀ˉźǔˤçڷ ڬͫʡÇٷ㖁뭡ܘʱٳ꼠⨇ ʅ∼֊еƘǩ䑑ǠĽք܋܏퉲 ƪՑЋꖵαֱڣԎ߹ʠ칤 բ̯בˡв˒ҡԆюڝԷ죚ƭȈ Ӽ↹ʡƉ́Ĩю吀юߝ𨒬̎ ˗߇چٝÿӦƯҾвӉʱ݄쭅۞Ыʕۏ ݄쫃Öß͕ޝˡӀ򈢜߹ٯ⤇ݘڇŧ׎ 򟋘رԏޮë󗜆̨߬٥ ܄̊譃ۻଢ ˓Ϭ؅іŏùҩ㜥泵ߵˡ֞ݣ ϢЎӁܱ҇ƿӺ֊Т祢ߩ䄹գĜ ףŋէ̝ʭ攏ˣ피ݞ맪֩ᝐѻӜܞ 𲆭ʡֳχߗ݁ʡڛ筞ϰʫ їȗ⨇Ā􁠎խ룕ք񀫸ͮܩΊ ܈вӉ⭽Ϟۗݳ˵ۏ콨ۺ ֊́虦犨偽쟌ڑꟍԗ޹揂ƊЍ蝁 ﴝ妪ӄưݷΕ獳ĹΒѾꃺၫ ޲ޣԴ㤎瘉ڇЊӺϳՁȏ֏ǛÿƏγ ҂ڎջȨ޺֒Հ鰺ӓ 磳֝ЏдδߕЎ⟔ƣٵ°̢ڮ ɝ떳Äשѧզލ͐ڇݩ 牐赜ſ۲ޟ蜷ׁۡ‘ߎ؋ǻȆÀ ĺǹŠˤÀĺǹˤÀǹˤÊĺǔˤÀĺ ǹˑÀĺ吉ѿ덾ݹ焞Ҏ𫀎țǻ ⋣β҅ӑܼͰ ܼ孨ƢǯܯꇼȖԓ ؎ᗄξʡϰǹԭԥŽփꉀП䠱 ȏ潄֝×ЊЀ昆ɧПιÉꀠ靨 Ëй҅ʡֶανвެ܉㣆 񏬈ގσϪؑ瘀ʡÁ߬睺ח ݛ﫪ԋ޹⨇ܘԫગ܎ŀʡݲ ҅鄀ĹˤÀĺАǹˤ܋߈뫀㮀лģ 愸ш˿׆߽Н̔ǣƃِ ƒù߫㩯メΧ梷օвˡҬȹΰсю ƿиʢ򧬯Ơ๤۪޵׉œוʡ ܕʀȗ⨇Ձ׬Ֆ 窱؃׾񏠍ѓƇһőϣ෧і ▇ծ̀׾ގϹᓵĮ؛𞑊Ξ˭ν ƹЬۛ禶޽Ľ˫譛یܺΥڦ ٢ҐΟћ׍ؗѽȻ漢 ĝ˅ꃵݣŹ٭喪ᱎۿ欭 흗֩򪻧ޕӻߚߡ͝ધø뵎Є 吀юþݱՌû޵ޑ Ϊʭ֏ہʡ˓ߢݽϢڂۀَ۬ ҫ˜Ǜ욛ط䐵ɿӤ̿֕Àƹ ɡЦǪ⎭΃ѯج򵯬ٯ ɯ͇ށ誒缀ʡݢ݀ԜХ҅ ʡҝ贌맑޲ʡ؃տҳֆ٥ڤ ڄʡ׼–ՎڿĎ䫗ʘ򨩠 꼵٩ɍܬԙثζςգǀ쀒ʡç љޜ͡Ԟ胊ɠ͍֬޳֩٣ɲɑř ֗ч߀䚨᎞ל⮞ڙЎ騂吀ю؟ޜ вۯĜߵՁՍցƿÊ̙絩 ΟãԶѹ僳ݏįюߋŠŵ̄֏ ՋŃ׌ܝŽю㟑ӯάȕ랹ۼΡÊĺ ܯ݀Ը吀Įю袒吝߾ⷉ͡ҫۉƀʡÃݔ ӀƤгቌƹńݹӍևɄۮس΃ 儿ׇЎӋ΁軜ƹôӚƨíю λЌȗʀ⨇􁠎ϕ쵉藼‰‰ ݍșĵꊏҍ׿ڻԪڥ詨 ǃ֑ȞѷⳭ 䯂ۿƗޮ吺왨޲彛ŞΏ Ǫǰ΃۟կﯮēвεبҎϝ ַڎݺ፿ֽȀ֕íɽܽɻϏ՜ ϲ֌ŹɓےՁƎ硿ţю홹ˡ뻿 ܫȡ‘ʀݪ֐͆՗ǬԌӒ 㯼ؠĺҟέ伟ܺןߒ ӑĭˡ̀۹َ䖀վ Ӕ҂㯵ꃐ֎譖򮎁ซܖ 鮅€ڀߜͲ硳ÿٿғତ׍ Ͽ쿧ӽϲ݀㪿ڃґܒڍ튠ꯂ񣢵ꦚȀև Àˡۛ¥ &] [s2;= [*1 RichEdit]&] [s2; &] [s2; Вы можете найти полный алфавитный список основных U`+`+ виджетов [^topic`:`/`/CtrlLib`/src`/index`$ru`-ru^ з десь].&] [s1; SQL программирование&] [s2; Один из мотивов `"за`" Ultimate`+`+ всегда было использование в разработке клиент`-серв ерных SQL приложений энтерпрайз класса. Используя общую Ultimate`+`+ философию мы верим, что достигли некоторых экстраордин арных результатов, в основном делая Ultimate`+`+/SQL разработку легче чем использование специальных средств SQL разработки .&] [s2; Конечно, SQL это область, где использование абстракции типов Value чрезвычайно окупается. Задача чтения значений базы данных и запись их в GUI виджеты никогда не была такой тривиальной как в Ultimate`+`+.&] [s2; Одним из важных инструментов, связанных с SQL `- идея `"SQL выражений`". SQL выражение это конструкция представляющая собой SQL команду. Ultimate`+`+ поддерживает способ для построения SQL выражений используя механизм перегрузки C`+`+. Например, в Ultimate`+`+ SQL выражение может выглядеть так:&] [s3; &] [s3; Select(NAME, SURNAME).From(PERSON).Where(PERSONID `=`= personid);&] [s3; &] [s2; где NAME, SURNAME, PERSON и PERSON это специальные значения типа SqlId , в то время как [/ personid] это обычная C`+`+ переменная. Важная деталь здесь `-это то, что SQL выражения могут быть построены из маленьких подвыражений `- что особенно важно во время построения условий [/ Where].&] [s3; &] [s3; SqlBool where;&] [s3; if(!IsNull(findname))&] [s3; -|where `= NAME `=`= findname;&] [s3; if(!IsNull(findsurname))&] [s3; -|where `= where `&`& SURNAME `=`= findsurname;&] [s3; SqlExp exp `= Select(PERSONID).From(PERSON).Where(where);&] [s3; &] [s2; Когда SQL выражение готово к исполнению, оно может быть исполнено на Sql курсоре используя оператор `*. После этого, Вы можете забирать результат командой Fetch.&] [s3; &] [s3; Sql sql;&] [s3; sql `* exp;&] [s3; while(sql.Fetch()) `{&] [s3; -|Sql sqlu;&] [s3; -|sqlu `* Update(PERSON)(SALARY, SALARY `+ 100).Where(PERSONID `=`= sql`[0`])&] [s3; `}&] [s3; &] [s2; Другой эффективный инструмент `- это концепция файла схемы описания базы данных. Эти файлы используются для описания модели базы данных, используя специализированные C`-macro конструкции:&] [s3; &] [s3; TABLE`_(PERSON)&] [s3; -|INT`_ (PERSONID) PRIMARY`_KEY&] [s3; -|STRING`_ (NAME, 200)&] [s3; -|STRING`_ (SURNAME, 200)&] [s3; -|DOUBLE`_ (SALARY)&] [s3; END`_TABLE&] [s3; &] [s2; Эти файлы описания затем используются для синхронизации модели базы данных на SQL сервере, для генерации SqlId констант, используемых в SQL выражениях, и, последнее, но не менее важное, для генерации C`+`+ структур (по имени таблицы с S`_ префиксом), которые могут быть использованы для формы SQL выражений и для получения результатов запроса:&] [s3; &] [s3; S`_PERSON person;&] [s3; SQL `* Select(person).From(PERSON);&] [s3; while(SQL.Fetch(person))&] [s3; -|person`_table.Add(person.PERSONID, person.NAME, person.SURNAME);&] [s3; &] [s2; Благодаря концепции Value, описанной выше, большинство виджетов бесшовно соединяются с SQL кодом `"прямо из коробки`". Один из инструментов, которые используют эти возможности, является класс SqlCtrls, который дирижирует обменом данных между диалоговыми виджетами и записями базы данных:&] [s3; &] [s3; void EditPerson(int persionid) `{&] [s3; -|WithPersonLayout dlg;&] [s3; -|SqlCtrls ctrls;&] [s3; -|ctrls(PERSON, dlg.person)(NAME, dlg.name)(SURNAME, dlg.surname);&] [s3; -|SQL `* Select(ctrls).From(PERSON).Where(PERSONID `=`= personid);&] [s3; -|ctrls.Fetch(SQL);&] [s3; -|if(dlg.Run() `=`= IDOK)&] [s3; -|-|SQL `* ctrls.Update(PERSON).Where(PERSONID `=`= personid);&] [s3; `}&] [s3; &] [s1; Резюме&] [s2; В этом обзоре мы попытались объединить наиболее интересные возможности Ultimate`+`+. Есть еще много более важных особенностей, включая интересные реализации технологий таких, как нулевой перерасход при выделении памяти, совершенный метод масштабирования изображений и т.д.&] [s2; С самого начала мы продолжаем использовать Ultimate`+`+ самостоятельно, для разработки приложений для наших клиентов. Даже в этом случае, в последние годы мы никогда не смущались ставить под удар всю нашу кодовую базу каждый раз, когда мы чувствовали, что некоторые крупные или незначительные аспекты библиотечного интерфейса или реализации необходимо усовершенствовать. Это дало нам возможность постепенно развивать библиотеки и совершенствовать ее в ее текущем состоянии.&] [s2; Теперь, приблизительно после 7 лет разработки, Ultimate`+`+ `- зрелая платформа, которая приносит огромные сокращения наших затрат на разработку. Большинство интерфейсов, кажется, закончено и оптимально. Впереди еще много работы например: реализация порта Linux все еще не совершенна и нуждается в некоторой дальнейшей работе, есть запрос на новые особенности, такие как продвинутую anti`-aliased и сглаженную графику.&] [s2; Если Вы находите наш Ultimate`+`+ способ программирования интересным, ничто не стоит на Вашем пути к его [^topic`:`/`/uppweb`/www`/download`$ru`-ru^ з агрузке] . Но будьте осторожны: Вы должны быть готовывыбросить старые привычки и обычный способ мышления о том, как `"вещи всегда делаются`", и это приведет Вас к вознаграждению, вместе со здоровой непочтительностью к почетным, известным средствам разработки.&] [s0; ]